PageSourceSearch

https://www.softmaker.com/supportform//tinymce/tinymce.min.js?3c0b9d

js softmaker.com collected 2026-10-02 03:33:55 UTC 629,903 bytes, 13,560 lines download raw bytes

vendor: 93,981 bytes, lines 1-2337
1// 4.8.3 (2018-09-13)
2! function () {
3    "use strict";
4    var e, t, n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v = function () {
5            for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]
6        },
7        q = function (n, r) {
8            return function () {
9                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
10                return n(r.apply(null, arguments))
11            }
12        },
13        H = function (e) {
14            return function () {
15                return e
16            }
17        },
18        j = function (e) {
19            return e
20        },
21        b = function (i) {
22            for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t];
23            for (var a = new Array(arguments.length - 1), n = 1; n < arguments.length; n++) a[n - 1] = arguments[n];
24            return function () {
25                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
26                for (var n = new Array(arguments.length), r = 0; r < n.length; r++) n[r] = arguments[r];
27                var o = a.concat(n);
28                return i.apply(null, o)
29            }
30        },
31        y = H(!1),
32        C = H(!0),
33        x = y,
34        w = C,
35        N = function () {
36            return E
37        },
38        E = (r = {
39            fold: function (e, t) {
40                return e()
41            },
42            is: x,
43            isSome: x,
44            isNone: w,
45            getOr: n = function (e) {
46                return e
47            },
48            getOrThunk: t = function (e) {
49                return e()
50            },
51            getOrDie: function (e) {
52                throw new Error(e || "error: getOrDie called on none.")
53            },
54            getOrNull: function () {
55                return null
56            },
57            getOrUndefined: function () {
58                return undefined
59            },
60            or: n,
61            orThunk: t,
62            map: N,
63            ap: N,
64            each: function () {},
65            bind: N,
66            flatten: N,
67            exists: x,
68            forall: w,
69            filter: N,
70            equals: e = function (e) {
71                return e.isNone()
72            },
73            equals_: e,
74            toArray: function () {
75                return []
76            },
77            toString: H("none()")
78        }, Object.freeze && Object.freeze(r), r),
79        S = function (n) {
80            var e = function () {
81                    return n
82                },
83                t = function () {
84                    return o
85                },
86                r = function (e) {
87                    return e(n)
88                },
89                o = {
90                    fold: function (e, t) {
91                        return t(n)
92                    },
93                    is: function (e) {
94                        return n === e
95                    },
96                    isSome: w,
97                    isNone: x,
98                    getOr: e,
99                    getOrThunk: e,
100                    getOrDie: e,
101                    getOrNull: e,
102                    getOrUndefined: e,
103                    or: t,
104                    orThunk: t,
105                    map: function (e) {
106                        return S(e(n))
107                    },
108                    ap: function (e) {
109                        return e.fold(N, function (e) {
110                            return S(e(n))
111                        })
112                    },
113                    each: function (e) {
114                        e(n)
115                    },
116                    bind: r,
117                    flatten: e,
118                    exists: r,
119                    forall: r,
120                    filter: function (e) {
121                        return e(n) ? o : E
122                    },
123                    equals: function (e) {
124                        return e.is(n)
125                    },
126                    equals_: function (e, t) {
127                        return e.fold(x, function (e) {
128                            return t(n, e)
129                        })
130                    },
131                    toArray: function () {
132                        return [n]
133                    },
134                    toString: function () {
135                        return "some(" + n + ")"
136                    }
137                };
138            return o
139        },
140        A = {
141            some: S,
142            none: N,
143            from: function (e) {
144                return null === e || e === undefined ? E : S(e)
145            }
146        },
147        T = function (t) {
148            return function (e) {
149                return function (e) {
150                    if (null === e) return "null";
151                    var t = typeof e;
152                    return "object" === t && Array.prototype.isPrototypeOf(e) ? "array" : "object" === t && String.prototype.isPrototypeOf(e) ? "string" : t
153                }(e) === t
154            }
155        },
156        k = T("string"),
157        _ = T("object"),
158        R = T("array"),
159        D = T("null"),
160        B = T("boolean"),
161        O = T("function"),
162        P = T("number"),
163        L = (o = Array.prototype.indexOf) === undefined ? function (e, t) {
164            return X(e, t)
165        } : function (e, t) {
166            return o.call(e, t)
167        },
168        I = function (e, t) {
169            return -1 < L(e, t)
170        },
171        M = function (e, t) {
172            return K(e, t).isSome()
173        },
174        $ = function (e, t) {
175            for (var n = e.length, r = new Array(n), o = 0; o < n; o++) {
176                var i = e[o];
177                r[o] = t(i, o, e)
178            }
179            return r
180        },
181        F = function (e, t) {
182            for (var n = 0, r = e.length; n < r; n++) t(e[n], n, e)
183        },
184        W = function (e, t) {
185            for (var n = [], r = [], o = 0, i = e.length; o < i; o++) {
186                var a = e[o];
187                (t(a, o, e) ? n : r).push(a)
188            }
189            return {
190                pass: n,
191                fail: r
192            }
193        },
194        U = function (e, t) {
195            for (var n = [], r = 0, o = e.length; r < o; r++) {
196                var i = e[r];
197                t(i, r, e) && n.push(i)
198            }
199            return n
200        },
201        z = function (e, t, n) {
202            return F(e, function (e) {
203                n = t(n, e)
204            }), n
205        },
206        V = function (e, t) {
207            for (var n = 0, r = e.length; n < r; n++) {
208                var o = e[n];
209                if (t(o, n, e)) return A.some(o)
210            }
211            return A.none()
212        },
213        K = function (e, t) {
214            for (var n = 0, r = e.length; n < r; n++)
215                if (t(e[n], n, e)) return A.some(n);
216            return A.none()
217        },
218        X = function (e, t) {
219            for (var n = 0, r = e.length; n < r; ++n)
220                if (e[n] === t) return n;
221            return -1
222        },
223        Y = Array.prototype.push,
224        G = function (e, t) {
225            return function (e) {
226                for (var t = [], n = 0, r = e.length; n < r; ++n) {
227                    if (!Array.prototype.isPrototypeOf(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e);
228                    Y.apply(t, e[n])
229                }
230                return t
231            }($(e, t))
232        },
233        J = function (e, t) {
234            for (var n = 0, r = e.length; n < r; ++n)
235                if (!0 !== t(e[n], n, e)) return !1;
236            return !0
237        },
238        Q = Array.prototype.slice,
239        Z = function (e, t) {
240            return U(e, function (e) {
241                return !I(t, e)
242            })
243        },
244        ee = function (e) {
245            return 0 === e.length ? A.none() : A.some(e[0])
246        },
247        te = function (e) {
248            return 0 === e.length ? A.none() : A.some(e[e.length - 1])
249        },
250        ne = O(Array.from) ? Array.from : function (e) {
251            return Q.call(e)
252        },
253        re = "undefined" != typeof window ? window : Function("return this;")(),
254        oe = function (e, t) {
255            return function (e, t) {
256                for (var n = t !== undefined && null !== t ? t : re, r = 0; r < e.length && n !== undefined && null !== n; ++r) n = n[e[r]];
257                return n
258            }(e.split("."), t)
259        },
260        ie = {
261            getOrDie: function (e, t) {
262                var n = oe(e, t);
263                if (n === undefined || null === n) throw e + " not available on this browser";
264                return n
265            }
266        },
267        ae = function () {
268            return ie.getOrDie("URL")
269        },
270        ue = {
271            createObjectURL: function (e) {
272                return ae().createObjectURL(e)
273            },
274            revokeObjectURL: function (e) {
275                ae().revokeObjectURL(e)
276            }
277        },
278        se = navigator,
279        ce = se.userAgent,
280        le = function (e) {
281            return "matchMedia" in window && matchMedia(e).matches
282        };
283    d = /Android/.test(ce), a = (a = !(i = /WebKit/.test(ce)) && /MSIE/gi.test(ce) && /Explorer/gi.test(se.appName)) && /MSIE (\w+)\./.exec(ce)[1], u = -1 !== ce.indexOf("Trident/") && (-1 !== ce.indexOf("rv:") || -1 !== se.appName.indexOf("Netscape")) && 11, s = -1 !== ce.indexOf("Edge/") && !a && !u && 12, a = a || u || s, c = !i && !u && /Gecko/.test(ce), l = -1 !== ce.indexOf("Mac"), f = /(iPad|iPhone)/.test(ce), m = "FormData" in window && "FileReader" in window && "URL" in window && !!ue.createObjectURL, g = le("only screen and (max-device-width: 480px)") && (d || f), p = le("only screen and (min-width: 800px)") && (d || f), h = -1 !== ce.indexOf("Windows Phone"), s && (i = !1);
284    var fe, de, me, ge, pe, he, ve, be, ye, Ce, xe, we, Ne, Ee, Se, Te, ke, Ae, _e, Re = {
285            opera: !1,
286            webkit: i,
287            ie: a,
288            gecko: c,
289            mac: l,
290            iOS: f,
291            android: d,
292            contentEditable: !f || m || 534 <= parseInt(ce.match(/AppleWebKit\/(\d*)/)[1], 10),
293            transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
294            caretAfter: 8 !== a,
295            range: window.getSelection && "Range" in window,
296            documentMode: a && !s ? document.documentMode || 7 : 10,
297            fileApi: m,
298            ceFalse: !1 === a || 8 < a,
299            cacheSuffix: null,
300            container: null,
301            overrideViewPort: null,
302            experimentalShadowDom: !1,
303            canHaveCSP: !1 === a || 11 < a,
304            desktop: !g && !p,
305            windowsPhone: h
306        },
307        De = window.Promise ? window.Promise : function () {
308            function r(e, t) {
309                return function () {
310                    e.apply(t, arguments)
311                }
312            }
313            var e = Array.isArray || function (e) {
314                    return "[object Array]" === Object.prototype.toString.call(e)
315                },
316                i = function (e) {
317                    if ("object" != typeof this) throw new TypeError("Promises must be constructed via new");
318                    if ("function" != typeof e) throw new TypeError("not a function");
319                    this._state = null, this._value = null, this._deferreds = [], l(e, r(o, this), r(u, this))
320                },
321                t = i.immediateFn || "function" == typeof setImmediate && setImmediate || function (e) {
322                    setTimeout(e, 1)
323                };
324
325            function a(r) {
326                var o = this;
327                null !== this._state ? t(function () {
328                    var e = o._state ? r.onFulfilled : r.onRejected;
329                    if (null !== e) {
330                        var t;
331                        try {
332                            t = e(o._value)
333                        } catch (n) {
334                            return void r.reject(n)
335                        }
336                        r.resolve(t)
337                    } else(o._state ? r.resolve : r.reject)(o._value)
338                }) : this._deferreds.push(r)
339            }
340
341            function o(e) {
342                try {
343                    if (e === this) throw new TypeError("A promise cannot be resolved with itself.");
344                    if (e && ("object" == typeof e || "function" == typeof e)) {
345                        var t = e.then;
346                        if ("function" == typeof t) return void l(r(t, e), r(o, this), r(u, this))
347                    }
348                    this._state = !0, this._value = e, s.call(this)
349                } catch (n) {
350                    u.call(this, n)
351                }
352            }
353
354            function u(e) {
355                this._state = !1, this._value = e, s.call(this)
356            }
357
358            function s() {
359                for (var e = 0, t = this._deferreds.length; e < t; e++) a.call(this, this._deferreds[e]);
360                this._deferreds = null
361            }
362
363            function c(e, t, n, r) {
364                this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof t ? t : null, this.resolve = n, this.reject = r
365            }
366
367            function l(e, t, n) {
368                var r = !1;
369                try {
370                    e(function (e) {
371                        r || (r = !0, t(e))
372                    }, function (e) {
373                        r || (r = !0, n(e))
374                    })
375                } catch (o) {
376                    if (r) return;
377                    r = !0, n(o)
378                }
379            }
380            return i.prototype["catch"] = function (e) {
381                return this.then(null, e)
382            }, i.prototype.then = function (n, r) {
383                var o = this;
384                return new i(function (e, t) {
385                    a.call(o, new c(n, r, e, t))
386                })
387            }, i.all = function () {
388                var s = Array.prototype.slice.call(1 === arguments.length && e(arguments[0]) ? arguments[0] : arguments);
389                return new i(function (o, i) {
390                    if (0 === s.length) return o([]);
391                    var a = s.length;
392
393                    function u(t, e) {
394                        try {
395                            if (e && ("object" == typeof e || "function" == typeof e)) {
396                                var n = e.then;
397                                if ("function" == typeof n) return void n.call(e, function (e) {
398                                    u(t, e)
399                                }, i)
400                            }
401                            s[t] = e, 0 == --a && o(s)
402                        } catch (r) {
403                            i(r)
404                        }
405                    }
406                    for (var e = 0; e < s.length; e++) u(e, s[e])
407                })
408            }, i.resolve = function (t) {
409                return t && "object" == typeof t && t.constructor === i ? t : new i(function (e) {
410                    e(t)
411                })
412            }, i.reject = function (n) {
413                return new i(function (e, t) {
414                    t(n)
415                })
416            }, i.race = function (o) {
417                return new i(function (e, t) {
418                    for (var n = 0, r = o.length; n < r; n++) o[n].then(e, t)
419                })
420            }, i
421        }(),
422        Be = function (e, t) {
423            return "number" != typeof t && (t = 0), setTimeout(e, t)
424        },
425        Oe = function (e, t) {
426            return "number" != typeof t && (t = 1), setInterval(e, t)
427        },
428        Pe = function (t, n) {
429            var r, e;
430            return (e = function () {
431                var e = arguments;
432                clearTimeout(r), r = Be(function () {
433                    t.apply(this, e)
434                }, n)
435            }).stop = function () {
436                clearTimeout(r)
437            }, e
438        },
439        Le = {
440            requestAnimationFrame: function (e, t) {
441                fe ? fe.then(e) : fe = new De(function (e) {
442                    t || (t = document.body),
443                        function (e, t) {
444                            var n, r = window.requestAnimationFrame,
445                                o = ["ms", "moz", "webkit"];
446                            for (n = 0; n < o.length && !r; n++) r = window[o[n] + "RequestAnimationFrame"];
447                            r || (r = function (e) {
448                                window.setTimeout(e, 0)
449                            }), r(e, t)
450                        }(e, t)
451                }).then(e)
452            },
453            setTimeout: Be,
454            setInterval: Oe,
455            setEditorTimeout: function (e, t, n) {
456                return Be(function () {
457                    e.removed || t()
458                }, n)
459            },
460            setEditorInterval: function (e, t, n) {
461                var r;
462                return r = Oe(function () {
463                    e.removed ? clearInterval(r) : t()
464                }, n)
465            },
466            debounce: Pe,
467            throttle: Pe,
468            clearInterval: function (e) {
469                return clearInterval(e)
470            },
471            clearTimeout: function (e) {
472                return clearTimeout(e)
473            }
474        },
475        Ie = /^(?:mouse|contextmenu)|click/,
476        Me = {
477            keyLocation: 1,
478            layerX: 1,
479            layerY: 1,
480            returnValue: 1,
481            webkitMovementX: 1,
482            webkitMovementY: 1,
483            keyIdentifier: 1
484        },
485        Fe = function () {
486            return !1
487        },
488        Ue = function () {
489            return !0
490        },
491        ze = function (e, t, n, r) {
492            e.addEventListener ? e.addEventListener(t, n, r || !1) : e.attachEvent && e.attachEvent("on" + t, n)
493        },
494        Ve = function (e, t, n, r) {
495            e.removeEventListener ? e.removeEventListener(t, n, r || !1) : e.detachEvent && e.detachEvent("on" + t, n)
496        },
497        qe = function (e, t) {
498            var n, r, o = t || {};
499            for (n in e) Me[n] || (o[n] = e[n]);
500            if (o.target || (o.target = o.srcElement || document), Re.experimentalShadowDom && (o.target = function (e, t) {
501                    if (e.composedPath) {
502                        var n = e.composedPath();
503                        if (n && 0 < n.length) return n[0]
504                    }
505                    return t
506                }(e, o.target)), e && Ie.test(e.type) && e.pageX === undefined && e.clientX !== undefined) {
507                var i = o.target.ownerDocument || document,
508                    a = i.documentElement,
509                    u = i.body;
510                o.pageX = e.clientX + (a && a.scrollLeft || u && u.scrollLeft || 0) - (a && a.clientLeft || u && u.clientLeft || 0), o.pageY = e.clientY + (a && a.scrollTop || u && u.scrollTop || 0) - (a && a.clientTop || u && u.clientTop || 0)
511            }
512            return o.preventDefault = function () {
513                o.isDefaultPrevented = Ue, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
514            }, o.stopPropagation = function () {
515                o.isPropagationStopped = Ue, e && (e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0)
516            }, !(o.stopImmediatePropagation = function () {
517                o.isImmediatePropagationStopped = Ue, o.stopPropagation()
518            }) == ((r = o).isDefaultPrevented === Ue || r.isDefaultPrevented === Fe) && (o.isDefaultPrevented = Fe, o.isPropagationStopped = Fe, o.isImmediatePropagationStopped = Fe), "undefined" == typeof o.metaKey && (o.metaKey = !1), o
519        },
520        He = function (e, t, n) {
521            var r = e.document,
522                o = {
523                    type: "ready"
524                };
525            if (n.domLoaded) t(o);
526            else {
527                var i = function () {
528                        return "complete" === r.readyState || "interactive" === r.readyState && r.body
529                    },
530                    a = function () {
531                        n.domLoaded || (n.domLoaded = !0, t(o))
532                    },
533                    u = function () {
534                        i() && (Ve(r, "readystatechange", u), a())
535                    },
536                    s = function () {
537                        try {
538                            r.documentElement.doScroll("left")
539                        } catch (e) {
540                            return void Le.setTimeout(s)
541                        }
542                        a()
543                    };
544                !r.addEventListener || Re.ie && Re.ie < 11 ? (ze(r, "readystatechange", u), r.documentElement.doScroll && e.self === e.top && s()) : i() ? a() : ze(e, "DOMContentLoaded", a), ze(e, "load", a)
545            }
546        },
547        je = function () {
548            var m, g, p, h, v, b = this,
549                y = {};
550            g = "mce-data-" + (+new Date).toString(32), h = "onmouseenter" in document.documentElement, p = "onfocusin" in document.documentElement, v = {
551                mouseenter: "mouseover",
552                mouseleave: "mouseout"
553            }, m = 1, b.domLoaded = !1, b.events = y;
554            var C = function (e, t) {
555                var n, r, o, i, a = y[t];
556                if (n = a && a[e.type])
557                    for (r = 0, o = n.length; r < o; r++)
558                        if ((i = n[r]) && !1 === i.func.call(i.scope, e) && e.preventDefault(), e.isImmediatePropagationStopped()) return
559            };
560            b.bind = function (e, t, n, r) {
561                var o, i, a, u, s, c, l, f = window,
562                    d = function (e) {
563                        C(qe(e || f.event), o)
564                    };
565                if (e && 3 !== e.nodeType && 8 !== e.nodeType) {
566                    for (e[g] ? o = e[g] : (o = m++, e[g] = o, y[o] = {}), r = r || e, a = (t = t.split(" ")).length; a--;) c = d, s = l = !1, "DOMContentLoaded" === (u = t[a]) && (u = "ready"), b.domLoaded && "ready" === u && "complete" === e.readyState ? n.call(r, qe({
567                        type: u
568                    })) : (h || (s = v[u]) && (c = function (e) {
569                        var t, n;
570                        if (t = e.currentTarget, (n = e.relatedTarget) && t.contains) n = t.contains(n);
571                        else
572                            for (; n && n !== t;) n = n.parentNode;
573                        n || ((e = qe(e || f.event)).type = "mouseout" === e.type ? "mouseleave" : "mouseenter", e.target = t, C(e, o))
574                    }), p || "focusin" !== u && "focusout" !== u || (l = !0, s = "focusin" === u ? "focus" : "blur", c = function (e) {
575                        (e = qe(e || f.event)).type = "focus" === e.type ? "focusin" : "focusout", C(e, o)
576                    }), (i = y[o][u]) ? "ready" === u && b.domLoaded ? n({
577                        type: u
578                    }) : i.push({
579                        func: n,
580                        scope: r
581                    }) : (y[o][u] = i = [{
582                        func: n,
583                        scope: r
584                    }], i.fakeName = s, i.capture = l, i.nativeHandler = c, "ready" === u ? He(e, c, b) : ze(e, s || u, c, l)));
585                    return e = i = 0, n
586                }
587            }, b.unbind = function (e, t, n) {
588                var r, o, i, a, u, s;
589                if (!e || 3 === e.nodeType || 8 === e.nodeType) return b;
590                if (r = e[g]) {
591                    if (s = y[r], t) {
592                        for (i = (t = t.split(" ")).length; i--;)
593                            if (o = s[u = t[i]]) {
594                                if (n)
595                                    for (a = o.length; a--;)
596                                        if (o[a].func === n) {
597                                            var c = o.nativeHandler,
598                                                l = o.fakeName,
599                                                f = o.capture;
600                                            (o = o.slice(0, a).concat(o.slice(a + 1))).nativeHandler = c, o.fakeName = l, o.capture = f, s[u] = o
601                                        }
602                                n && 0 !== o.length || (delete s[u], Ve(e, o.fakeName || u, o.nativeHandler, o.capture))
603                            }
604                    } else {
605                        for (u in s) o = s[u], Ve(e, o.fakeName || u, o.nativeHandler, o.capture);
606                        s = {}
607                    }
608                    for (u in s) return b;
609                    delete y[r];
610                    try {
611                        delete e[g]
612                    } catch (d) {
613                        e[g] = null
614                    }
615                }
616                return b
617            }, b.fire = function (e, t, n) {
618                var r;
619                if (!e || 3 === e.nodeType || 8 === e.nodeType) return b;
620                for ((n = qe(null, n)).type = t, n.target = e;
621                    (r = e[g]) && C(n, r), (e = e.parentNode || e.ownerDocument || e.defaultView || e.parentWindow) && !n.isPropagationStopped(););
622                return b
623            }, b.clean = function (e) {
624                var t, n, r = b.unbind;
625                if (!e || 3 === e.nodeType || 8 === e.nodeType) return b;
626                if (e[g] && r(e), e.getElementsByTagName || (e = e.document), e && e.getElementsByTagName)
627                    for (r(e), t = (n = e.getElementsByTagName("*")).length; t--;)(e = n[t])[g] && r(e);
628                return b
629            }, b.destroy = function () {
630                y = {}
631            }, b.cancel = function (e) {
632                return e && (e.preventDefault(), e.stopImmediatePropagation()), !1
633            }
634        };
635    je.Event = new je, je.Event.bind(window, "ready", function () {});
636    var $e = "sizzle" + -new Date,
637        We = window.document,
638        Ke = 0,
639        Xe = 0,
640        Ye = kt(),
641        Ge = kt(),
642        Je = kt(),
643        Qe = function (e, t) {
644            return e === t && (we = !0), 0
645        },
646        Ze = typeof undefined,
647        et = {}.hasOwnProperty,
648        tt = [],
649        nt = tt.pop,
650        rt = tt.push,
651        ot = tt.push,
652        it = tt.slice,
653        at = tt.indexOf || function (e) {
654            for (var t = 0, n = this.length; t < n; t++)
655                if (this[t] === e) return t;
656            return -1
657        },
658        ut = "[\\x20\\t\\r\\n\\f]",
659        st = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
660        ct = "\\[" + ut + "*(" + st + ")(?:" + ut + "*([*^$|!~]?=)" + ut + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + st + "))|)" + ut + "*\\]",
661        lt = ":(" + st + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + ct + ")*)|.*)\\)|)",
662        ft = new RegExp("^" + ut + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ut + "+$", "g"),
663        dt = new RegExp("^" + ut + "*," + ut + "*"),
664        mt = new RegExp("^" + ut + "*([>+~]|" + ut + ")" + ut + "*"),
665        gt = new RegExp("=" + ut + "*([^\\]'\"]*?)" + ut + "*\\]", "g"),
666        pt = new RegExp(lt),
667        ht = new RegExp("^" + st + "$"),
668        vt = {
669            ID: new RegExp("^#(" + st + ")"),
670            CLASS: new RegExp("^\\.(" + st + ")"),
671            TAG: new RegExp("^(" + st + "|[*])"),
672            ATTR: new RegExp("^" + ct),
673            PSEUDO: new RegExp("^" + lt),
674            CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ut + "*(even|odd|(([+-]|)(\\d*)n|)" + ut + "*(?:([+-]|)" + ut + "*(\\d+)|))" + ut + "*\\)|)", "i"),
675            bool: new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i"),
676            needsContext: new RegExp("^" + ut + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ut + "*((?:-\\d)?\\d*)" + ut + "*\\)|)(?=[^-]|$)", "i")
677        },
678        bt = /^(?:input|select|textarea|button)$/i,
679        yt = /^h\d$/i,
680        Ct = /^[^{]+\{\s*\[native \w/,
681        xt = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
682        wt = /[+~]/,
683        Nt = /'|\\/g,
684        Et = new RegExp("\\\\([\\da-f]{1,6}" + ut + "?|(" + ut + ")|.)", "ig"),
685        St = function (e, t, n) {
686            var r = "0x" + t - 65536;
687            return r != r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320)
688        };
689    try {
690        ot.apply(tt = it.call(We.childNodes), We.childNodes), tt[We.childNodes.length].nodeType
691    } catch (nN) {
692        ot = {
693            apply: tt.length ? function (e, t) {
694                rt.apply(e, it.call(t))
695            } : function (e, t) {
696                for (var n = e.length, r = 0; e[n++] = t[r++];);
697                e.length = n - 1
698            }
699        }
700    }
701    var Tt = function (e, t, n, r) {
702        var o, i, a, u, s, c, l, f, d, m;
703        if ((t ? t.ownerDocument || t : We) !== Ee && Ne(t), n = n || [], !e || "string" != typeof e) return n;
704        if (1 !== (u = (t = t || Ee).nodeType) && 9 !== u) return [];
705        if (Te && !r) {
706            if (o = xt.exec(e))
707                if (a = o[1]) {
708                    if (9 === u) {
709                        if (!(i = t.getElementById(a)) || !i.parentNode) return n;
710                        if (i.id === a) return n.push(i), n
711                    } else if (t.ownerDocument && (i = t.ownerDocument.getElementById(a)) && _e(t, i) && i.id === a) return n.push(i), n
712                } else {
713                    if (o[2]) return ot.apply(n, t.getElementsByTagName(e)), n;
714                    if ((a = o[3]) && me.getElementsByClassName) return ot.apply(n, t.getElementsByClassName(a)), n
715                }
716            if (me.qsa && (!ke || !ke.test(e))) {
717                if (f = l = $e, d = t, m = 9 === u && e, 1 === u && "object" !== t.nodeName.toLowerCase()) {
718                    for (c = ve(e), (l = t.getAttribute("id")) ? f = l.replace(Nt, "\\$&") : t.setAttribute("id", f), f = "[id='" + f + "'] ", s = c.length; s--;) c[s] = f + Lt(c[s]);
719                    d = wt.test(e) && Ot(t.parentNode) || t, m = c.join(",")
720                }
721                if (m) try {
722                    return ot.apply(n, d.querySelectorAll(m)), n
723                } catch (g) {} finally {
724                    l || t.removeAttribute("id")
725                }
726            }
727        }
728        return ye(e.replace(ft, "$1"), t, n, r)
729    };
730
731    function kt() {
732        var r = [];
733        return function e(t, n) {
734            return r.push(t + " ") > ge.cacheLength && delete e[r.shift()], e[t + " "] = n
735        }
736    }
737
738    function At(e) {
739        return e[$e] = !0, e
740    }
741
742    function _t(e, t) {
743        var n = t && e,
744            r = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || 1 << 31) - (~e.sourceIndex || 1 << 31);
745        if (r) return r;
746        if (n)
747            for (; n = n.nextSibling;)
748                if (n === t) return -1;
749        return e ? 1 : -1
750    }
751
752    function Rt(t) {
753        return function (e) {
754            return "input" === e.nodeName.toLowerCase() && e.type === t
755        }
756    }
757
758    function Dt(n) {
759        return function (e) {
760            var t = e.nodeName.toLowerCase();
761            return ("input" === t || "button" === t) && e.type === n
762        }
763    }
764
765    function Bt(a) {
766        return At(function (i) {
767            return i = +i, At(function (e, t) {
768                for (var n, r = a([], e.length, i), o = r.length; o--;) e[n = r[o]] && (e[n] = !(t[n] = e[n]))
769            })
770        })
771    }
772
773    function Ot(e) {
774        return e && typeof e.getElementsByTagName !== Ze && e
775    }
776    for (de in me = Tt.support = {}, he = Tt.isXML = function (e) {
777            var t = e && (e.ownerDocument || e).documentElement;
778            return !!t && "HTML" !== t.nodeName
779        }, Ne = Tt.setDocument = function (e) {
780            var t, s = e ? e.ownerDocument || e : We,
781                n = s.defaultView;
782            return s !== Ee && 9 === s.nodeType && s.documentElement ? (Se = (Ee = s).documentElement, Te = !he(s), n && n !== function (e) {
783                try {
784                    return e.top
785                } catch (t) {}
786                return null
787            }(n) && (n.addEventListener ? n.addEventListener("unload", function () {
788                Ne()
789            }, !1) : n.attachEvent && n.attachEvent("onunload", function () {
790                Ne()
791            })), me.attributes = !0, me.getElementsByTagName = !0, me.getElementsByClassName = Ct.test(s.getElementsByClassName), me.getById = !0, ge.find.ID = function (e, t) {
792                if (typeof t.getElementById !== Ze && Te) {
793                    var n = t.getElementById(e);
794                    return n && n.parentNode ? [n] : []
795                }
796            }, ge.filter.ID = function (e) {
797                var t = e.replace(Et, St);
798                return function (e) {
799                    return e.getAttribute("id") === t
800                }
801            }, ge.find.TAG = me.getElementsByTagName ? function (e, t) {
802                if (typeof t.getElementsByTagName !== Ze) return t.getElementsByTagName(e)
803            } : function (e, t) {
804                var n, r = [],
805                    o = 0,
806                    i = t.getElementsByTagName(e);
807                if ("*" === e) {
808                    for (; n = i[o++];) 1 === n.nodeType && r.push(n);
809                    return r
810                }
811                return i
812            }, ge.find.CLASS = me.getElementsByClassName && function (e, t) {
813                if (Te) return t.getElementsByClassName(e)
814            }, Ae = [], ke = [], me.disconnectedMatch = !0, ke = ke.length && new RegExp(ke.join("|")), Ae = Ae.length && new RegExp(Ae.join("|")), t = Ct.test(Se.compareDocumentPosition), _e = t || Ct.test(Se.contains) ? function (e, t) {
815                var n = 9 === e.nodeType ? e.documentElement : e,
816                    r = t && t.parentNode;
817                return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r)))
818            } : function (e, t) {
819                if (t)
820                    for (; t = t.parentNode;)
821                        if (t === e) return !0;
822                return !1
823            }, Qe = t ? function (e, t) {
824                if (e === t) return we = !0, 0;
825                var n = !e.compareDocumentPosition - !t.compareDocumentPosition;
826                return n || (1 & (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !me.sortDetached && t.compareDocumentPosition(e) === n ? e === s || e.ownerDocument === We && _e(We, e) ? -1 : t === s || t.ownerDocument === We && _e(We, t) ? 1 : xe ? at.call(xe, e) - at.call(xe, t) : 0 : 4 & n ? -1 : 1)
827            } : function (e, t) {
828                if (e === t) return we = !0, 0;
829                var n, r = 0,
830                    o = e.parentNode,
831                    i = t.parentNode,
832                    a = [e],
833                    u = [t];
834                if (!o || !i) return e === s ? -1 : t === s ? 1 : o ? -1 : i ? 1 : xe ? at.call(xe, e) - at.call(xe, t) : 0;
835                if (o === i) return _t(e, t);
836                for (n = e; n = n.parentNode;) a.unshift(n);
837                for (n = t; n = n.parentNode;) u.unshift(n);
838                for (; a[r] === u[r];) r++;
839                return r ? _t(a[r], u[r]) : a[r] === We ? -1 : u[r] === We ? 1 : 0
840            }, s) : Ee
841        }, Tt.matches = function (e, t) {
842            return Tt(e, null, null, t)
843        }, Tt.matchesSelector = function (e, t) {
844            if ((e.ownerDocument || e) !== Ee && Ne(e), t = t.replace(gt, "='$1']"), me.matchesSelector && Te && (!Ae || !Ae.test(t)) && (!ke || !ke.test(t))) try {
845                var n = (void 0).call(e, t);
846                if (n || me.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n
847            } catch (nN) {}
848            return 0 < Tt(t, Ee, null, [e]).length
849        }, Tt.contains = function (e, t) {
850            return (e.ownerDocument || e) !== Ee && Ne(e), _e(e, t)
851        }, Tt.attr = function (e, t) {
852            (e.ownerDocument || e) !== Ee && Ne(e);
853            var n = ge.attrHandle[t.toLowerCase()],
854                r = n && et.call(ge.attrHandle, t.toLowerCase()) ? n(e, t, !Te) : undefined;
855            return r !== undefined ? r : me.attributes || !Te ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null
856        }, Tt.error = function (e) {
857            throw new Error("Syntax error, unrecognized expression: " + e)
858        }, Tt.uniqueSort = function (e) {
859            var t, n = [],
860                r = 0,
861                o = 0;
862            if (we = !me.detectDuplicates, xe = !me.sortStable && e.slice(0), e.sort(Qe), we) {
863                for (; t = e[o++];) t === e[o] && (r = n.push(o));
864                for (; r--;) e.splice(n[r], 1)
865            }
866            return xe = null, e
867        }, pe = Tt.getText = function (e) {
868            var t, n = "",
869                r = 0,
870                o = e.nodeType;
871            if (o) {
872                if (1 === o || 9 === o || 11 === o) {
873                    if ("string" == typeof e.textContent) return e.textContent;
874                    for (e = e.firstChild; e; e = e.nextSibling) n += pe(e)
875                } else if (3 === o || 4 === o) return e.nodeValue
876            } else
877                for (; t = e[r++];) n += pe(t);
878            return n
879        }, (ge = Tt.selectors = {
880            cacheLength: 50,
881            createPseudo: At,
882            match: vt,
883            attrHandle: {},
884            find: {},
885            relative: {
886                ">": {
887                    dir: "parentNode",
888                    first: !0
889                },
890                " ": {
891                    dir: "parentNode"
892                },
893                "+": {
894                    dir: "previousSibling",
895                    first: !0
896                },
897                "~": {
898                    dir: "previousSibling"
899                }
900            },
901            preFilter: {
902                ATTR: function (e) {
903                    return e[1] = e[1].replace(Et, St), e[3] = (e[3] || e[4] || e[5] || "").replace(Et, St), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4)
904                },
905                CHILD: function (e) {
906                    return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || Tt.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && Tt.error(e[0]), e
907                },
908                PSEUDO: function (e) {
909                    var t, n = !e[6] && e[2];
910                    return vt.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && pt.test(n) && (t = ve(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3))
911                }
912            },
913            filter: {
914                TAG: function (e) {
915                    var t = e.replace(Et, St).toLowerCase();
916                    return "*" === e ? function () {
917                        return !0
918                    } : function (e) {
919                        return e.nodeName && e.nodeName.toLowerCase() === t
920                    }
921                },
922                CLASS: function (e) {
923                    var t = Ye[e + " "];
924                    return t || (t = new RegExp("(^|" + ut + ")" + e + "(" + ut + "|$)")) && Ye(e, function (e) {
925                        return t.test("string" == typeof e.className && e.className || typeof e.getAttribute !== Ze && e.getAttribute("class") || "")
926                    })
927                },
928                ATTR: function (n, r, o) {
929                    return function (e) {
930                        var t = Tt.attr(e, n);
931                        return null == t ? "!=" === r : !r || (t += "", "=" === r ? t === o : "!=" === r ? t !== o : "^=" === r ? o && 0 === t.indexOf(o) : "*=" === r ? o && -1 < t.indexOf(o) : "$=" === r ? o && t.slice(-o.length) === o : "~=" === r ? -1 < (" " + t + " ").indexOf(o) : "|=" === r && (t === o || t.slice(0, o.length + 1) === o + "-"))
932                    }
933                },
934                CHILD: function (m, e, t, g, p) {
935                    var h = "nth" !== m.slice(0, 3),
936                        v = "last" !== m.slice(-4),
937                        b = "of-type" === e;
938                    return 1 === g && 0 === p ? function (e) {
939                        return !!e.parentNode
940                    } : function (e, t, n) {
941                        var r, o, i, a, u, s, c = h !== v ? "nextSibling" : "previousSibling",
942                            l = e.parentNode,
943                            f = b && e.nodeName.toLowerCase(),
944                            d = !n && !b;
945                        if (l) {
946                            if (h) {
947                                for (; c;) {
948                                    for (i = e; i = i[c];)
949                                        if (b ? i.nodeName.toLowerCase() === f : 1 === i.nodeType) return !1;
950                                    s = c = "only" === m && !s && "nextSibling"
951                                }
952                                return !0
953                            }
954                            if (s = [v ? l.firstChild : l.lastChild], v && d) {
955                                for (u = (r = (o = l[$e] || (l[$e] = {}))[m] || [])[0] === Ke && r[1], a = r[0] === Ke && r[2], i = u && l.childNodes[u]; i = ++u && i && i[c] || (a = u = 0) || s.pop();)
956                                    if (1 === i.nodeType && ++a && i === e) {
957                                        o[m] = [Ke, u, a];
958                                        break
959                                    }
960                            } else if (d && (r = (e[$e] || (e[$e] = {}))[m]) && r[0] === Ke) a = r[1];
961                            else
962                                for (;
963                                    (i = ++u && i && i[c] || (a = u = 0) || s.pop()) && ((b ? i.nodeName.toLowerCase() !== f : 1 !== i.nodeType) || !++a || (d && ((i[$e] || (i[$e] = {}))[m] = [Ke, a]), i !== e)););
964                            return (a -= p) === g || a % g == 0 && 0 <= a / g
965                        }
966                    }
967                },
968                PSEUDO: function (e, i) {
969                    var t, a = ge.pseudos[e] || ge.setFilters[e.toLowerCase()] || Tt.error("unsupported pseudo: " + e);
970                    return a[$e] ? a(i) : 1 < a.length ? (t = [e, e, "", i], ge.setFilters.hasOwnProperty(e.toLowerCase()) ? At(function (e, t) {
971                        for (var n, r = a(e, i), o = r.length; o--;) e[n = at.call(e, r[o])] = !(t[n] = r[o])
972                    }) : function (e) {
973                        return a(e, 0, t)
974                    }) : a
975                }
976            },
977            pseudos: {
978                not: At(function (e) {
979                    var r = [],
980                        o = [],
981                        u = be(e.replace(ft, "$1"));
982                    return u[$e] ? At(function (e, t, n, r) {
983                        for (var o, i = u(e, null, r, []), a = e.length; a--;)(o = i[a]) && (e[a] = !(t[a] = o))
984                    }) : function (e, t, n) {
985                        return r[0] = e, u(r, null, n, o), !o.pop()
986                    }
987                }),
988                has: At(function (t) {
989                    return function (e) {
990                        return 0 < Tt(t, e).length
991                    }
992                }),
993                contains: At(function (t) {
994                    return t = t.replace(Et, St),
995                        function (e) {
996                            return -1 < (e.textContent || e.innerText || pe(e)).indexOf(t)
997                        }
998                }),
999                lang: At(function (n) {
1000                    return ht.test(n || "") || Tt.error("unsupported lang: " + n), n = n.replace(Et, St).toLowerCase(),
1001                        function (e) {
1002                            var t;
1003                            do {
1004                                if (t = Te ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-")
1005                            } while ((e = e.parentNode) && 1 === e.nodeType);
1006                            return !1
1007                        }
1008                }),
1009                target: function (e) {
1010                    var t = window.location && window.location.hash;
1011                    return t && t.slice(1) === e.id
1012                },
1013                root: function (e) {
1014                    return e === Se
1015                },
1016                focus: function (e) {
1017                    return e === Ee.activeElement && (!Ee.hasFocus || Ee.hasFocus()) && !!(e.type || e.href || ~e.tabIndex)
1018                },
1019                enabled: function (e) {
1020                    return !1 === e.disabled
1021                },
1022                disabled: function (e) {
1023                    return !0 === e.disabled
1024                },
1025                checked: function (e) {
1026                    var t = e.nodeName.toLowerCase();
1027                    return "input" === t && !!e.checked || "option" === t && !!e.selected
1028                },
1029                selected: function (e) {
1030                    return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
1031                },
1032                empty: function (e) {
1033                    for (e = e.firstChild; e; e = e.nextSibling)
1034                        if (e.nodeType < 6) return !1;
1035                    return !0
1036                },
1037                parent: function (e) {
1038                    return !ge.pseudos.empty(e)
1039                },
1040                header: function (e) {
1041                    return yt.test(e.nodeName)
1042                },
1043                input: function (e) {
1044                    return bt.test(e.nodeName)
1045                },
1046                button: function (e) {
1047                    var t = e.nodeName.toLowerCase();
1048                    return "input" === t && "button" === e.type || "button" === t
1049                },
1050                text: function (e) {
1051                    var t;
1052                    return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase())
1053                },
1054                first: Bt(function () {
1055                    return [0]
1056                }),
1057                last: Bt(function (e, t) {
1058                    return [t - 1]
1059                }),
1060                eq: Bt(function (e, t, n) {
1061                    return [n < 0 ? n + t : n]
1062                }),
1063                even: Bt(function (e, t) {
1064                    for (var n = 0; n < t; n += 2) e.push(n);
1065                    return e
1066                }),
1067                odd: Bt(function (e, t) {
1068                    for (var n = 1; n < t; n += 2) e.push(n);
1069                    return e
1070                }),
1071                lt: Bt(function (e, t, n) {
1072                    for (var r = n < 0 ? n + t : n; 0 <= --r;) e.push(r);
1073                    return e
1074                }),
1075                gt: Bt(function (e, t, n) {
1076                    for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r);
1077                    return e
1078                })
1079            }
1080        }).pseudos.nth = ge.pseudos.eq, {
1081            radio: !0,
1082            checkbox: !0,
1083            file: !0,
1084            password: !0,
1085            image: !0
1086        }) ge.pseudos[de] = Rt(de);
1087    for (de in {
1088            submit: !0,
1089            reset: !0
1090        }) ge.pseudos[de] = Dt(de);
1091
1092    function Pt() {}
1093
1094    function Lt(e) {
1095        for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value;
1096        return r
1097    }
1098
1099    function It(a, e, t) {
1100        var u = e.dir,
1101            s = t && "parentNode" === u,
1102            c = Xe++;
1103        return e.first ? function (e, t, n) {
1104            for (; e = e[u];)
1105                if (1 === e.nodeType || s) return a(e, t, n)
1106        } : function (e, t, n) {
1107            var r, o, i = [Ke, c];
1108            if (n) {
1109                for (; e = e[u];)
1110                    if ((1 === e.nodeType || s) && a(e, t, n)) return !0
1111            } else
1112                for (; e = e[u];)
1113                    if (1 === e.nodeType || s) {
1114                        if ((r = (o = e[$e] || (e[$e] = {}))[u]) && r[0] === Ke && r[1] === c) return i[2] = r[2];
1115                        if ((o[u] = i)[2] = a(e, t, n)) return !0
1116                    }
1117        }
1118    }
1119
1120    function Mt(o) {
1121        return 1 < o.length ? function (e, t, n) {
1122            for (var r = o.length; r--;)
1123                if (!o[r](e, t, n)) return !1;
1124            return !0
1125        } : o[0]
1126    }
1127
1128    function Ft(e, t, n, r, o) {
1129        for (var i, a = [], u = 0, s = e.length, c = null != t; u < s; u++)(i = e[u]) && (n && !n(i, r, o) || (a.push(i), c && t.push(u)));
1130        return a
1131    }
1132
1133    function Ut(m, g, p, h, v, e) {
1134        return h && !h[$e] && (h = Ut(h)), v && !v[$e] && (v = Ut(v, e)), At(function (e, t, n, r) {
1135            var o, i, a, u = [],
1136                s = [],
1137                c = t.length,
1138                l = e || function (e, t, n) {
1139                    for (var r = 0, o = t.length; r < o; r++) Tt(e, t[r], n);
1140                    return n
1141                }(g || "*", n.nodeType ? [n] : n, []),
1142                f = !m || !e && g ? l : Ft(l, u, m, n, r),
1143                d = p ? v || (e ? m : c || h) ? [] : t : f;
1144            if (p && p(f, d, n, r), h)
1145                for (o = Ft(d, s), h(o, [], n, r), i = o.length; i--;)(a = o[i]) && (d[s[i]] = !(f[s[i]] = a));
1146            if (e) {
1147                if (v || m) {
1148                    if (v) {
1149                        for (o = [], i = d.length; i--;)(a = d[i]) && o.push(f[i] = a);
1150                        v(null, d = [], o, r)
1151                    }
1152                    for (i = d.length; i--;)(a = d[i]) && -1 < (o = v ? at.call(e, a) : u[i]) && (e[o] = !(t[o] = a))
1153                }
1154            } else d = Ft(d === t ? d.splice(c, d.length) : d), v ? v(null, t, d, r) : ot.apply(t, d)
1155        })
1156    }
1157
1158    function zt(e) {
1159        for (var r, t, n, o = e.length, i = ge.relative[e[0].type], a = i || ge.relative[" "], u = i ? 1 : 0, s = It(function (e) {
1160                return e === r
1161            }, a, !0), c = It(function (e) {
1162                return -1 < at.call(r, e)
1163            }, a, !0), l = [function (e, t, n) {
1164                return !i && (n || t !== Ce) || ((r = t).nodeType ? s(e, t, n) : c(e, t, n))
1165            }]; u < o; u++)
1166            if (t = ge.relative[e[u].type]) l = [It(Mt(l), t)];
1167            else {
1168                if ((t = ge.filter[e[u].type].apply(null, e[u].matches))[$e]) {
1169                    for (n = ++u; n < o && !ge.relative[e[n].type]; n++);
1170                    return Ut(1 < u && Mt(l), 1 < u && Lt(e.slice(0, u - 1).concat({
1171                        value: " " === e[u - 2].type ? "*" : ""
1172                    })).replace(ft, "$1"), t, u < n && zt(e.slice(u, n)), n < o && zt(e = e.slice(n)), n < o && Lt(e))
1173                }
1174                l.push(t)
1175            }
1176        return Mt(l)
1177    }
1178    Pt.prototype = ge.filters = ge.pseudos, ge.setFilters = new Pt, ve = Tt.tokenize = function (e, t) {
1179        var n, r, o, i, a, u, s, c = Ge[e + " "];
1180        if (c) return t ? 0 : c.slice(0);
1181        for (a = e, u = [], s = ge.preFilter; a;) {
1182            for (i in n && !(r = dt.exec(a)) || (r && (a = a.slice(r[0].length) || a), u.push(o = [])), n = !1, (r = mt.exec(a)) && (n = r.shift(), o.push({
1183                    value: n,
1184                    type: r[0].replace(ft, " ")
1185                }), a = a.slice(n.length)), ge.filter) !(r = vt[i].exec(a)) || s[i] && !(r = s[i](r)) || (n = r.shift(), o.push({
1186                value: n,
1187                type: i,
1188                matches: r
1189            }), a = a.slice(n.length));
1190            if (!n) break
1191        }
1192        return t ? a.length : a ? Tt.error(e) : Ge(e, u).slice(0)
1193    }, be = Tt.compile = function (e, t) {
1194        var n, h, v, b, y, r, o = [],
1195            i = [],
1196            a = Je[e + " "];
1197        if (!a) {
1198            for (t || (t = ve(e)), n = t.length; n--;)(a = zt(t[n]))[$e] ? o.push(a) : i.push(a);
1199            (a = Je(e, (h = i, b = 0 < (v = o).length, y = 0 < h.length, r = function (e, t, n, r, o) {
1200                var i, a, u, s = 0,
1201                    c = "0",
1202                    l = e && [],
1203                    f = [],
1204                    d = Ce,
1205                    m = e || y && ge.find.TAG("*", o),
1206                    g = Ke += null == d ? 1 : Math.random() || .1,
1207                    p = m.length;
1208                for (o && (Ce = t !== Ee && t); c !== p && null != (i = m[c]); c++) {
1209                    if (y && i) {
1210                        for (a = 0; u = h[a++];)
1211                            if (u(i, t, n)) {
1212                                r.push(i);
1213                                break
1214                            }
1215                        o && (Ke = g)
1216                    }
1217                    b && ((i = !u && i) && s--, e && l.push(i))
1218                }
1219                if (s += c, b && c !== s) {
1220                    for (a = 0; u = v[a++];) u(l, f, t, n);
1221                    if (e) {
1222                        if (0 < s)
1223                            for (; c--;) l[c] || f[c] || (f[c] = nt.call(r));
1224                        f = Ft(f)
1225                    }
1226                    ot.apply(r, f), o && !e && 0 < f.length && 1 < s + v.length && Tt.uniqueSort(r)
1227                }
1228                return o && (Ke = g, Ce = d), l
1229            }, b ? At(r) : r))).selector = e
1230        }
1231        return a
1232    }, ye = Tt.select = function (e, t, n, r) {
1233        var o, i, a, u, s, c = "function" == typeof e && e,
1234            l = !r && ve(e = c.selector || e);
1235        if (n = n || [], 1 === l.length) {
1236            if (2 < (i = l[0] = l[0].slice(0)).length && "ID" === (a = i[0]).type && me.getById && 9 === t.nodeType && Te && ge.relative[i[1].type]) {
1237                if (!(t = (ge.find.ID(a.matches[0].replace(Et, St), t) || [])[0])) return n;
1238                c && (t = t.parentNode), e = e.slice(i.shift().value.length)
1239            }
1240            for (o = vt.needsContext.test(e) ? 0 : i.length; o-- && (a = i[o], !ge.relative[u = a.type]);)
1241                if ((s = ge.find[u]) && (r = s(a.matches[0].replace(Et, St), wt.test(i[0].type) && Ot(t.parentNode) || t))) {
1242                    if (i.splice(o, 1), !(e = r.length && Lt(i))) return ot.apply(n, r), n;
1243                    break
1244                }
1245        }
1246        return (c || be(e, l))(r, t, !Te, n, wt.test(e) && Ot(t.parentNode) || t), n
1247    }, me.sortStable = $e.split("").sort(Qe).join("") === $e, me.detectDuplicates = !!we, Ne(), me.sortDetached = !0;
1248    var Vt = Array.isArray,
1249        qt = function (e, t, n) {
1250            var r, o;
1251            if (!e) return 0;
1252            if (n = n || e, e.length !== undefined) {
1253                for (r = 0, o = e.length; r < o; r++)
1254                    if (!1 === t.call(n, e[r], r, e)) return 0
1255            } else
1256                for (r in e)
1257                    if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r, e)) return 0;
1258            return 1
1259        },
1260        Ht = function (e, t, n) {
1261            var r, o;
1262            for (r = 0, o = e.length; r < o; r++)
1263                if (t.call(n, e[r], r, e)) return r;
1264            return -1
1265        },
1266        jt = {
1267            isArray: Vt,
1268            toArray: function (e) {
1269                var t, n, r = e;
1270                if (!Vt(e))
1271                    for (r = [], t = 0, n = e.length; t < n; t++) r[t] = e[t];
1272                return r
1273            },
1274            each: qt,
1275            map: function (n, r) {
1276                var o = [];
1277                return qt(n, function (e, t) {
1278                    o.push(r(e, t, n))
1279                }), o
1280            },
1281            filter: function (n, r) {
1282                var o = [];
1283                return qt(n, function (e, t) {
1284                    r && !r(e, t, n) || o.push(e)
1285                }), o
1286            },
1287            indexOf: function (e, t) {
1288                var n, r;
1289                if (e)
1290                    for (n = 0, r = e.length; n < r; n++)
1291                        if (e[n] === t) return n;
1292                return -1
1293            },
1294            reduce: function (e, t, n, r) {
1295                var o = 0;
1296                for (arguments.length < 3 && (n = e[0]); o < e.length; o++) n = t.call(r, n, e[o], o);
1297                return n
1298            },
1299            findIndex: Ht,
1300            find: function (e, t, n) {
1301                var r = Ht(e, t, n);
1302                return -1 !== r ? e[r] : undefined
1303            },
1304            last: function (e) {
1305                return e[e.length - 1]
1306            }
1307        },
1308        $t = /^\s*|\s*$/g,
1309        Wt = function (e) {
1310            return null === e || e === undefined ? "" : ("" + e).replace($t, "")
1311        },
1312        Kt = function (e, t) {
1313            return t ? !("array" !== t || !jt.isArray(e)) || typeof e === t : e !== undefined
1314        },
1315        Xt = function (e, n, r, o) {
1316            o = o || this, e && (r && (e = e[r]), jt.each(e, function (e, t) {
1317                if (!1 === n.call(o, e, t, r)) return !1;
1318                Xt(e, n, r, o)
1319            }))
1320        },
1321        Yt = {
1322            trim: Wt,
1323            isArray: jt.isArray,
1324            is: Kt,
1325            toArray: jt.toArray,
1326            makeMap: function (e, t, n) {
1327                var r;
1328                for (t = t || ",", "string" == typeof (e = e || []) && (e = e.split(t)), n = n || {}, r = e.length; r--;) n[e[r]] = {};
1329                return n
1330            },
1331            each: jt.each,
1332            map: jt.map,
1333            grep: jt.filter,
1334            inArray: jt.indexOf,
1335            hasOwn: function (e, t) {
1336                return Object.prototype.hasOwnProperty.call(e, t)
1337            },
1338            extend: function (e, t) {
1339                for (var n, r, o, i = [], a = 2; a < arguments.length; a++) i[a - 2] = arguments[a];
1340                var u, s = arguments;
1341                for (n = 1, r = s.length; n < r; n++)
1342                    for (o in t = s[n]) t.hasOwnProperty(o) && (u = t[o]) !== undefined && (e[o] = u);
1343                return e
1344            },
1345            create: function (e, t, n) {
1346                var r, o, i, a, u, s = this,
1347                    c = 0;
1348                if (e = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(e), i = e[3].match(/(^|\.)(\w+)$/i)[2], !(o = s.createNS(e[3].replace(/\.\w+$/, ""), n))[i]) {
1349                    if ("static" === e[2]) return o[i] = t, void(this.onCreate && this.onCreate(e[2], e[3], o[i]));
1350                    t[i] || (t[i] = function () {}, c = 1), o[i] = t[i], s.extend(o[i].prototype, t), e[5] && (r = s.resolve(e[5]).prototype, a = e[5].match(/\.(\w+)$/i)[1], u = o[i], o[i] = c ? function () {
1351                        return r[a].apply(this, arguments)
1352                    } : function () {
1353                        return this.parent = r[a], u.apply(this, arguments)
1354                    }, o[i].prototype[i] = o[i], s.each(r, function (e, t) {
1355                        o[i].prototype[t] = r[t]
1356                    }), s.each(t, function (e, t) {
1357                        r[t] ? o[i].prototype[t] = function () {
1358                            return this.parent = r[t], e.apply(this, arguments)
1359                        } : t !== i && (o[i].prototype[t] = e)
1360                    })), s.each(t["static"], function (e, t) {
1361                        o[i][t] = e
1362                    })
1363                }
1364            },
1365            walk: Xt,
1366            createNS: function (e, t) {
1367                var n, r;
1368                for (t = t || window, e = e.split("."), n = 0; n < e.length; n++) t[r = e[n]] || (t[r] = {}), t = t[r];
1369                return t
1370            },
1371            resolve: function (e, t) {
1372                var n, r;
1373                for (t = t || window, n = 0, r = (e = e.split(".")).length; n < r && (t = t[e[n]]); n++);
1374                return t
1375            },
1376            explode: function (e, t) {
1377                return !e || Kt(e, "array") ? e : jt.map(e.split(t || ","), Wt)
1378            },
1379            _addCacheSuffix: function (e) {
1380                var t = Re.cacheSuffix;
1381                return t && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e
1382            }
1383        },
1384        Gt = document,
1385        Jt = Array.prototype.push,
1386        Qt = Array.prototype.slice,
1387        Zt = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
1388        en = je.Event,
1389        tn = Yt.makeMap("children,contents,next,prev"),
1390        nn = function (e) {
1391            return void 0 !== e
1392        },
1393        rn = function (e) {
1394            return "string" == typeof e
1395        },
1396        on = function (e, t) {
1397            var n, r, o;
1398            for (o = (t = t || Gt).createElement("div"), n = t.createDocumentFragment(), o.innerHTML = e; r = o.firstChild;) n.appendChild(r);
1399            return n
1400        },
1401        an = function (e, t, n, r) {
1402            var o;
1403            if (rn(t)) t = on(t, Cn(e[0]));
1404            else if (t.length && !t.nodeType) {
1405                if (t = pn.makeArray(t), r)
1406                    for (o = t.length - 1; 0 <= o; o--) an(e, t[o], n, r);
1407                else
1408                    for (o = 0; o < t.length; o++) an(e, t[o], n, r);
1409                return e
1410            }
1411            if (t.nodeType)
1412                for (o = e.length; o--;) n.call(e[o], t);
1413            return e
1414        },
1415        un = function (e, t) {
1416            return e && t && -1 !== (" " + e.className + " ").indexOf(" " + t + " ")
1417        },
1418        sn = function (e, t, n) {
1419            var r, o;
1420            return t = pn(t)[0], e.each(function () {
1421                var e = this;
1422                n && r === e.parentNode || (r = e.parentNode, o = t.cloneNode(!1), e.parentNode.insertBefore(o, e)), o.appendChild(e)
1423            }), e
1424        },
1425        cn = Yt.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom", " "),
1426        ln = Yt.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected", " "),
1427        fn = {
1428            "for": "htmlFor",
1429            "class": "className",
1430            readonly: "readOnly"
1431        },
1432        dn = {
1433            "float": "cssFloat"
1434        },
1435        mn = {},
1436        gn = {},
1437        pn = function (e, t) {
1438            return new pn.fn.init(e, t)
1439        },
1440        hn = /^\s*|\s*$/g,
1441        vn = function (e) {
1442            return null === e || e === undefined ? "" : ("" + e).replace(hn, "")
1443        },
1444        bn = function (e, t) {
1445            var n, r, o, i;
1446            if (e)
1447                if ((n = e.length) === undefined) {
1448                    for (r in e)
1449                        if (e.hasOwnProperty(r) && (i = e[r], !1 === t.call(i, r, i))) break
1450                } else
1451                    for (o = 0; o < n && (i = e[o], !1 !== t.call(i, o, i)); o++);
1452            return e
1453        },
1454        yn = function (e, n) {
1455            var r = [];
1456            return bn(e, function (e, t) {
1457                n(t, e) && r.push(t)
1458            }), r
1459        },
1460        Cn = function (e) {
1461            return e ? 9 === e.nodeType ? e : e.ownerDocument : Gt
1462        };
1463    pn.fn = pn.prototype = {
1464        constructor: pn,
1465        selector: "",
1466        context: null,
1467        length: 0,
1468        init: function (e, t) {
1469            var n, r, o = this;
1470            if (!e) return o;
1471            if (e.nodeType) return o.context = o[0] = e, o.length = 1, o;
1472            if (t && t.nodeType) o.context = t;
1473            else {
1474                if (t) return pn(e).attr(t);
1475                o.context = t = document
1476            }
1477            if (rn(e)) {
1478                if (!(n = "<" === (o.selector = e).charAt(0) && ">" === e.charAt(e.length - 1) && 3 <= e.length ? [null, e, null] : Zt.exec(e))) return pn(t).find(e);
1479                if (n[1])
1480                    for (r = on(e, Cn(t)).firstChild; r;) Jt.call(o, r), r = r.nextSibling;
1481                else {
1482                    if (!(r = Cn(t).getElementById(n[2]))) return o;
1483                    if (r.id !== n[2]) return o.find(e);
1484                    o.length = 1, o[0] = r
1485                }
1486            } else this.add(e, !1);
1487            return o
1488        },
1489        toArray: function () {
1490            return Yt.toArray(this)
1491        },
1492        add: function (e, t) {
1493            var n, r, o = this;
1494            if (rn(e)) return o.add(pn(e));
1495            if (!1 !== t)
1496                for (n = pn.unique(o.toArray().concat(pn.makeArray(e))), o.length = n.length, r = 0; r < n.length; r++) o[r] = n[r];
1497            else Jt.apply(o, pn.makeArray(e));
1498            return o
1499        },
1500        attr: function (t, n) {
1501            var e, r = this;
1502            if ("object" == typeof t) bn(t, function (e, t) {
1503                r.attr(e, t)
1504            });
1505            else {
1506                if (!nn(n)) {
1507                    if (r[0] && 1 === r[0].nodeType) {
1508                        if ((e = mn[t]) && e.get) return e.get(r[0], t);
1509                        if (ln[t]) return r.prop(t) ? t : undefined;
1510                        null === (n = r[0].getAttribute(t, 2)) && (n = undefined)
1511                    }
1512                    return n
1513                }
1514                this.each(function () {
1515                    var e;
1516                    if (1 === this.nodeType) {
1517                        if ((e = mn[t]) && e.set) return void e.set(this, n);
1518                        null === n ? this.removeAttribute(t, 2) : this.setAttribute(t, n, 2)
1519                    }
1520                })
1521            }
1522            return r
1523        },
1524        removeAttr: function (e) {
1525            return this.attr(e, null)
1526        },
1527        prop: function (e, t) {
1528            var n = this;
1529            if ("object" == typeof (e = fn[e] || e)) bn(e, function (e, t) {
1530                n.prop(e, t)
1531            });
1532            else {
1533                if (!nn(t)) return n[0] && n[0].nodeType && e in n[0] ? n[0][e] : t;
1534                this.each(function () {
1535                    1 === this.nodeType && (this[e] = t)
1536                })
1537            }
1538            return n
1539        },
1540        css: function (n, r) {
1541            var e, o, i = this,
1542                t = function (e) {
1543                    return e.replace(/-(\D)/g, function (e, t) {
1544                        return t.toUpperCase()
1545                    })
1546                },
1547                a = function (e) {
1548                    return e.replace(/[A-Z]/g, function (e) {
1549                        return "-" + e
1550                    })
1551                };
1552            if ("object" == typeof n) bn(n, function (e, t) {
1553                i.css(e, t)
1554            });
1555            else if (nn(r)) n = t(n), "number" != typeof r || cn[n] || (r = r.toString() + "px"), i.each(function () {
1556                var e = this.style;
1557                if ((o = gn[n]) && o.set) o.set(this, r);
1558                else {
1559                    try {
1560                        this.style[dn[n] || n] = r
1561                    } catch (t) {}
1562                    null !== r && "" !== r || (e.removeProperty ? e.removeProperty(a(n)) : e.removeAttribute(n))
1563                }
1564            });
1565            else {
1566                if (e = i[0], (o = gn[n]) && o.get) return o.get(e);
1567                if (!e.ownerDocument.defaultView) return e.currentStyle ? e.currentStyle[t(n)] : "";
1568                try {
1569                    return e.ownerDocument.defaultView.getComputedStyle(e, null).getPropertyValue(a(n))
1570                } catch (u) {
1571                    return undefined
1572                }
1573            }
1574            return i
1575        },
1576        remove: function () {
1577            for (var e, t = this.length; t--;) e = this[t], en.clean(e), e.parentNode && e.parentNode.removeChild(e);
1578            return this
1579        },
1580        empty: function () {
1581            for (var e, t = this.length; t--;)
1582                for (e = this[t]; e.firstChild;) e.removeChild(e.firstChild);
1583            return this
1584        },
1585        html: function (e) {
1586            var t, n = this;
1587            if (nn(e)) {
1588                t = n.length;
1589                try {
1590                    for (; t--;) n[t].innerHTML = e
1591                } catch (r) {
1592                    pn(n[t]).empty().append(e)
1593                }
1594                return n
1595            }
1596            return n[0] ? n[0].innerHTML : ""
1597        },
1598        text: function (e) {
1599            var t, n = this;
1600            if (nn(e)) {
1601                for (t = n.length; t--;) "innerText" in n[t] ? n[t].innerText = e : n[0].textContent = e;
1602                return n
1603            }
1604            return n[0] ? n[0].innerText || n[0].textContent : ""
1605        },
1606        append: function () {
1607            return an(this, arguments, function (e) {
1608                (1 === this.nodeType || this.host && 1 === this.host.nodeType) && this.appendChild(e)
1609            })
1610        },
1611        prepend: function () {
1612            return an(this, arguments, function (e) {
1613                (1 === this.nodeType || this.host && 1 === this.host.nodeType) && this.insertBefore(e, this.firstChild)
1614            }, !0)
1615        },
1616        before: function () {
1617            return this[0] && this[0].parentNode ? an(this, arguments, function (e) {
1618                this.parentNode.insertBefore(e, this)
1619            }) : this
1620        },
1621        after: function () {
1622            return this[0] && this[0].parentNode ? an(this, arguments, function (e) {
1623                this.parentNode.insertBefore(e, this.nextSibling)
1624            }, !0) : this
1625        },
1626        appendTo: function (e) {
1627            return pn(e).append(this), this
1628        },
1629        prependTo: function (e) {
1630            return pn(e).prepend(this), this
1631        },
1632        replaceWith: function (e) {
1633            return this.before(e).remove()
1634        },
1635        wrap: function (e) {
1636            return sn(this, e)
1637        },
1638        wrapAll: function (e) {
1639            return sn(this, e, !0)
1640        },
1641        wrapInner: function (e) {
1642            return this.each(function () {
1643                pn(this).contents().wrapAll(e)
1644            }), this
1645        },
1646        unwrap: function () {
1647            return this.parent().each(function () {
1648                pn(this).replaceWith(this.childNodes)
1649            })
1650        },
1651        clone: function () {
1652            var e = [];
1653            return this.each(function () {
1654                e.push(this.cloneNode(!0))
1655            }), pn(e)
1656        },
1657        addClass: function (e) {
1658            return this.toggleClass(e, !0)
1659        },
1660        removeClass: function (e) {
1661            return this.toggleClass(e, !1)
1662        },
1663        toggleClass: function (o, i) {
1664            var e = this;
1665            return "string" != typeof o || (-1 !== o.indexOf(" ") ? bn(o.split(" "), function () {
1666                e.toggleClass(this, i)
1667            }) : e.each(function (e, t) {
1668                var n, r;
1669                (r = un(t, o)) !== i && (n = t.className, r ? t.className = vn((" " + n + " ").replace(" " + o + " ", " ")) : t.className += n ? " " + o : o)
1670            })), e
1671        },
1672        hasClass: function (e) {
1673            return un(this[0], e)
1674        },
1675        each: function (e) {
1676            return bn(this, e)
1677        },
1678        on: function (e, t) {
1679            return this.each(function () {
1680                en.bind(this, e, t)
1681            })
1682        },
1683        off: function (e, t) {
1684            return this.each(function () {
1685                en.unbind(this, e, t)
1686            })
1687        },
1688        trigger: function (e) {
1689            return this.each(function () {
1690                "object" == typeof e ? en.fire(this, e.type, e) : en.fire(this, e)
1691            })
1692        },
1693        show: function () {
1694            return this.css("display", "")
1695        },
1696        hide: function () {
1697            return this.css("display", "none")
1698        },
1699        slice: function () {
1700            return new pn(Qt.apply(this, arguments))
1701        },
1702        eq: function (e) {
1703            return -1 === e ? this.slice(e) : this.slice(e, +e + 1)
1704        },
1705        first: function () {
1706            return this.eq(0)
1707        },
1708        last: function () {
1709            return this.eq(-1)
1710        },
1711        find: function (e) {
1712            var t, n, r = [];
1713            for (t = 0, n = this.length; t < n; t++) pn.find(e, this[t], r);
1714            return pn(r)
1715        },
1716        filter: function (n) {
1717            return pn("function" == typeof n ? yn(this.toArray(), function (e, t) {
1718                return n(t, e)
1719            }) : pn.filter(n, this.toArray()))
1720        },
1721        closest: function (n) {
1722            var r = [];
1723            return n instanceof pn && (n = n[0]), this.each(function (e, t) {
1724                for (; t;) {
1725                    if ("string" == typeof n && pn(t).is(n)) {
1726                        r.push(t);
1727                        break
1728                    }
1729                    if (t === n) {
1730                        r.push(t);
1731                        break
1732                    }
1733                    t = t.parentNode
1734                }
1735            }), pn(r)
1736        },
1737        offset: function (e) {
1738            var t, n, r, o, i = 0,
1739                a = 0;
1740            return e ? this.css(e) : ((t = this[0]) && (r = (n = t.ownerDocument).documentElement, t.getBoundingClientRect && (i = (o = t.getBoundingClientRect()).left + (r.scrollLeft || n.body.scrollLeft) - r.clientLeft, a = o.top + (r.scrollTop || n.body.scrollTop) - r.clientTop)), {
1741                left: i,
1742                top: a
1743            })
1744        },
1745        push: Jt,
1746        sort: [].sort,
1747        splice: [].splice
1748    }, Yt.extend(pn, {
1749        extend: Yt.extend,
1750        makeArray: function (e) {
1751            return (t = e) && t === t.window || e.nodeType ? [e] : Yt.toArray(e);
1752            var t
1753        },
1754        inArray: function (e, t) {
1755            var n;
1756            if (t.indexOf) return t.indexOf(e);
1757            for (n = t.length; n--;)
1758                if (t[n] === e) return n;
1759            return -1
1760        },
1761        isArray: Yt.isArray,
1762        each: bn,
1763        trim: vn,
1764        grep: yn,
1765        find: Tt,
1766        expr: Tt.selectors,
1767        unique: Tt.uniqueSort,
1768        text: Tt.getText,
1769        contains: Tt.contains,
1770        filter: function (e, t, n) {
1771            var r = t.length;
1772            for (n && (e = ":not(" + e + ")"); r--;) 1 !== t[r].nodeType && t.splice(r, 1);
1773            return t = 1 === t.length ? pn.find.matchesSelector(t[0], e) ? [t[0]] : [] : pn.find.matches(e, t)
1774        }
1775    });
1776    var xn = function (e, t, n) {
1777            var r = [],
1778                o = e[t];
1779            for ("string" != typeof n && n instanceof pn && (n = n[0]); o && 9 !== o.nodeType;) {
1780                if (n !== undefined) {
1781                    if (o === n) break;
1782                    if ("string" == typeof n && pn(o).is(n)) break
1783                }
1784                1 === o.nodeType && r.push(o), o = o[t]
1785            }
1786            return r
1787        },
1788        wn = function (e, t, n, r) {
1789            var o = [];
1790            for (r instanceof pn && (r = r[0]); e; e = e[t])
1791                if (!n || e.nodeType === n) {
1792                    if (r !== undefined) {
1793                        if (e === r) break;
1794                        if ("string" == typeof r && pn(e).is(r)) break
1795                    }
1796                    o.push(e)
1797                }
1798            return o
1799        },
1800        Nn = function (e, t, n) {
1801            for (e = e[t]; e; e = e[t])
1802                if (e.nodeType === n) return e;
1803            return null
1804        };
1805    bn({
1806        parent: function (e) {
1807            var t = e.parentNode;
1808            return t && 11 !== t.nodeType ? t : null
1809        },
1810        parents: function (e) {
1811            return xn(e, "parentNode")
1812        },
1813        next: function (e) {
1814            return Nn(e, "nextSibling", 1)
1815        },
1816        prev: function (e) {
1817            return Nn(e, "previousSibling", 1)
1818        },
1819        children: function (e) {
1820            return wn(e.firstChild, "nextSibling", 1)
1821        },
1822        contents: function (e) {
1823            return Yt.toArray(("iframe" === e.nodeName ? e.contentDocument || e.contentWindow.document : e).childNodes)
1824        }
1825    }, function (e, r) {
1826        pn.fn[e] = function (t) {
1827            var n = [];
1828            return this.each(function () {
1829                var e = r.call(n, this, t, n);
1830                e && (pn.isArray(e) ? n.push.apply(n, e) : n.push(e))
1831            }), 1 < this.length && (tn[e] || (n = pn.unique(n)), 0 === e.indexOf("parents") && (n = n.reverse())), n = pn(n), t ? n.filter(t) : n
1832        }
1833    }), bn({
1834        parentsUntil: function (e, t) {
1835            return xn(e, "parentNode", t)
1836        },
1837        nextUntil: function (e, t) {
1838            return wn(e, "nextSibling", 1, t).slice(1)
1839        },
1840        prevUntil: function (e, t) {
1841            return wn(e, "previousSibling", 1, t).slice(1)
1842        }
1843    }, function (r, o) {
1844        pn.fn[r] = function (t, e) {
1845            var n = [];
1846            return this.each(function () {
1847                var e = o.call(n, this, t, n);
1848                e && (pn.isArray(e) ? n.push.apply(n, e) : n.push(e))
1849            }), 1 < this.length && (n = pn.unique(n), 0 !== r.indexOf("parents") && "prevUntil" !== r || (n = n.reverse())), n = pn(n), e ? n.filter(e) : n
1850        }
1851    }), pn.fn.is = function (e) {
1852        return !!e && 0 < this.filter(e).length
1853    }, pn.fn.init.prototype = pn.fn, pn.overrideDefaults = function (n) {
1854        var r, o = function (e, t) {
1855            return r = r || n(), 0 === arguments.length && (e = r.element), t || (t = r.context), new o.fn.init(e, t)
1856        };
1857        return pn.extend(o, this), o
1858    };
1859    var En = function (n, r, e) {
1860        bn(e, function (e, t) {
1861            n[e] = n[e] || {}, n[e][r] = t
1862        })
1863    };
1864    Re.ie && Re.ie < 8 && (En(mn, "get", {
1865        maxlength: function (e) {
1866            var t = e.maxLength;
1867            return 2147483647 === t ? undefined : t
1868        },
1869        size: function (e) {
1870            var t = e.size;
1871            return 20 === t ? undefined : t
1872        },
1873        "class": function (e) {
1874            return e.className
1875        },
1876        style: function (e) {
1877            var t = e.style.cssText;
1878            return 0 === t.length ? undefined : t
1879        }
1880    }), En(mn, "set", {
1881        "class": function (e, t) {
1882            e.className = t
1883        },
1884        style: function (e, t) {
1885            e.style.cssText = t
1886        }
1887    })), Re.ie && Re.ie < 9 && (dn["float"] = "styleFloat", En(gn, "set", {
1888        opacity: function (e, t) {
1889            var n = e.style;
1890            null === t || "" === t ? n.removeAttribute("filter") : (n.zoom = 1, n.filter = "alpha(opacity=" + 100 * t + ")")
1891        }
1892    })), pn.attrHooks = mn, pn.cssHooks = gn;
1893    var Sn = function (n) {
1894            var r, o = !1;
1895            return function () {
1896                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
1897                return o || (o = !0, r = n.apply(null, e)), r
1898            }
1899        },
1900        Tn = function (e, t) {
1901            var n = function (e, t) {
1902                for (var n = 0; n < e.length; n++) {
1903                    var r = e[n];
1904                    if (r.test(t)) return r
1905                }
1906                return undefined
1907            }(e, t);
1908            if (!n) return {
1909                major: 0,
1910                minor: 0
1911            };
1912            var r = function (e) {
1913                return Number(t.replace(n, "$" + e))
1914            };
1915            return An(r(1), r(2))
1916        },
1917        kn = function () {
1918            return An(0, 0)
1919        },
1920        An = function (e, t) {
1921            return {
1922                major: e,
1923                minor: t
1924            }
1925        },
1926        _n = {
1927            nu: An,
1928            detect: function (e, t) {
1929                var n = String(t).toLowerCase();
1930                return 0 === e.length ? kn() : Tn(e, n)
1931            },
1932            unknown: kn
1933        },
1934        Rn = "Firefox",
1935        Dn = function (e, t) {
1936            return function () {
1937                return t === e
1938            }
1939        },
1940        Bn = function (e) {
1941            var t = e.current;
1942            return {
1943                current: t,
1944                version: e.version,
1945                isEdge: Dn("Edge", t),
1946                isChrome: Dn("Chrome", t),
1947                isIE: Dn("IE", t),
1948                isOpera: Dn("Opera", t),
1949                isFirefox: Dn(Rn, t),
1950                isSafari: Dn("Safari", t)
1951            }
1952        },
1953        On = {
1954            unknown: function () {
1955                return Bn({
1956                    current: undefined,
1957                    version: _n.unknown()
1958                })
1959            },
1960            nu: Bn,
1961            edge: H("Edge"),
1962            chrome: H("Chrome"),
1963            ie: H("IE"),
1964            opera: H("Opera"),
1965            firefox: H(Rn),
1966            safari: H("Safari")
1967        },
1968        Pn = "Windows",
1969        Ln = "Android",
1970        In = "Solaris",
1971        Mn = "FreeBSD",
1972        Fn = function (e, t) {
1973            return function () {
1974                return t === e
1975            }
1976        },
1977        Un = function (e) {
1978            var t = e.current;
1979            return {
1980                current: t,
1981                version: e.version,
1982                isWindows: Fn(Pn, t),
1983                isiOS: Fn("iOS", t),
1984                isAndroid: Fn(Ln, t),
1985                isOSX: Fn("OSX", t),
1986                isLinux: Fn("Linux", t),
1987                isSolaris: Fn(In, t),
1988                isFreeBSD: Fn(Mn, t)
1989            }
1990        },
1991        zn = {
1992            unknown: function () {
1993                return Un({
1994                    current: undefined,
1995                    version: _n.unknown()
1996                })
1997            },
1998            nu: Un,
1999            windows: H(Pn),
2000            ios: H("iOS"),
2001            android: H(Ln),
2002            linux: H("Linux"),
2003            osx: H("OSX"),
2004            solaris: H(In),
2005            freebsd: H(Mn)
2006        },
2007        Vn = function (e, t) {
2008            var n = String(t).toLowerCase();
2009            return V(e, function (e) {
2010                return e.search(n)
2011            })
2012        },
2013        qn = function (e, n) {
2014            return Vn(e, n).map(function (e) {
2015                var t = _n.detect(e.versionRegexes, n);
2016                return {
2017                    current: e.name,
2018                    version: t
2019                }
2020            })
2021        },
2022        Hn = function (e, n) {
2023            return Vn(e, n).map(function (e) {
2024                var t = _n.detect(e.versionRegexes, n);
2025                return {
2026                    current: e.name,
2027                    version: t
2028                }
2029            })
2030        },
2031        jn = function (e, t) {
2032            return -1 !== e.indexOf(t)
2033        },
2034        $n = function (e) {
2035            return e.replace(/^\s+|\s+$/g, "")
2036        },
2037        Wn = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
2038        Kn = function (t) {
2039            return function (e) {
2040                return jn(e, t)
2041            }
2042        },
2043        Xn = [{
2044            name: "Edge",
2045            versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
2046            search: function (e) {
2047                return jn(e, "edge/") && jn(e, "chrome") && jn(e, "safari") && jn(e, "applewebkit")
2048            }
2049        }, {
2050            name: "Chrome",
2051            versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Wn],
2052            search: function (e) {
2053                return jn(e, "chrome") && !jn(e, "chromeframe")
2054            }
2055        }, {
2056            name: "IE",
2057            versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/],
2058            search: function (e) {
2059                return jn(e, "msie") || jn(e, "trident")
2060            }
2061        }, {
2062            name: "Opera",
2063            versionRegexes: [Wn, /.*?opera\/([0-9]+)\.([0-9]+).*/],
2064            search: Kn("opera")
2065        }, {
2066            name: "Firefox",
2067            versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
2068            search: Kn("firefox")
2069        }, {
2070            name: "Safari",
2071            versionRegexes: [Wn, /.*?cpu os ([0-9]+)_([0-9]+).*/],
2072            search: function (e) {
2073                return (jn(e, "safari") || jn(e, "mobile/")) && jn(e, "applewebkit")
2074            }
2075        }],
2076        Yn = [{
2077            name: "Windows",
2078            search: Kn("win"),
2079            versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
2080        }, {
2081            name: "iOS",
2082            search: function (e) {
2083                return jn(e, "iphone") || jn(e, "ipad")
2084            },
2085            versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/]
2086        }, {
2087            name: "Android",
2088            search: Kn("android"),
2089            versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
2090        }, {
2091            name: "OSX",
2092            search: Kn("os x"),
2093            versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
2094        }, {
2095            name: "Linux",
2096            search: Kn("linux"),
2097            versionRegexes: []
2098        }, {
2099            name: "Solaris",
2100            search: Kn("sunos"),
2101            versionRegexes: []
2102        }, {
2103            name: "FreeBSD",
2104            search: Kn("freebsd"),
2105            versionRegexes: []
2106        }],
2107        Gn = {
2108            browsers: H(Xn),
2109            oses: H(Yn)
2110        },
2111        Jn = function (e) {
2112            var t, n, r, o, i, a, u, s, c, l, f, d = Gn.browsers(),
2113                m = Gn.oses(),
2114                g = qn(d, e).fold(On.unknown, On.nu),
2115                p = Hn(m, e).fold(zn.unknown, zn.nu);
2116            return {
2117                browser: g,
2118                os: p,
2119                deviceType: (n = g, r = e, o = (t = p).isiOS() && !0 === /ipad/i.test(r), i = t.isiOS() && !o, a = t.isAndroid() && 3 === t.version.major, u = t.isAndroid() && 4 === t.version.major, s = o || a || u && !0 === /mobile/i.test(r), c = t.isiOS() || t.isAndroid(), l = c && !s, f = n.isSafari() && t.isiOS() && !1 === /safari/i.test(r), {
2120                    isiPad: H(o),
2121                    isiPhone: H(i),
2122                    isTablet: H(s),
2123                    isPhone: H(l),
2124                    isTouch: H(c),
2125                    isAndroid: t.isAndroid,
2126                    isiOS: t.isiOS,
2127                    isWebView: H(f)
2128                })
2129            }
2130        },
2131        Qn = {
2132            detect: Sn(function () {
2133                var e = navigator.userAgent;
2134                return Jn(e)
2135            })
2136        },
2137        Zn = function (e) {
2138            if (null === e || e === undefined) throw new Error("Node cannot be null or undefined");
2139            return {
2140                dom: H(e)
2141            }
2142        },
2143        er = {
2144            fromHtml: function (e, t) {
2145                var n = (t || document).createElement("div");
2146                if (n.innerHTML = e, !n.hasChildNodes() || 1 < n.childNodes.length) throw console.error("HTML does not have a single root node", e), "HTML must have a single root node";
2147                return Zn(n.childNodes[0])
2148            },
2149            fromTag: function (e, t) {
2150                var n = (t || document).createElement(e);
2151                return Zn(n)
2152            },
2153            fromText: function (e, t) {
2154                var n = (t || document).createTextNode(e);
2155                return Zn(n)
2156            },
2157            fromDom: Zn,
2158            fromPoint: function (e, t, n) {
2159                var r = e.dom();
2160                return A.from(r.elementFromPoint(t, n)).map(Zn)
2161            }
2162        },
2163        tr = {
2164            ATTRIBUTE: Node.ATTRIBUTE_NODE,
2165            CDATA_SECTION: Node.CDATA_SECTION_NODE,
2166            COMMENT: Node.COMMENT_NODE,
2167            DOCUMENT: Node.DOCUMENT_NODE,
2168            DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE,
2169            DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE,
2170            ELEMENT: Node.ELEMENT_NODE,
2171            TEXT: Node.TEXT_NODE,
2172            PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE,
2173            ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE,
2174            ENTITY: Node.ENTITY_NODE,
2175            NOTATION: Node.NOTATION_NODE
2176        },
2177        nr = function (e) {
2178            return e.dom().nodeName.toLowerCase()
2179        },
2180        rr = function (e) {
2181            return e.dom().nodeType
2182        },
2183        or = function (t) {
2184            return function (e) {
2185                return rr(e) === t
2186            }
2187        },
2188        ir = or(tr.ELEMENT),
2189        ar = or(tr.TEXT),
2190        ur = or(tr.DOCUMENT),
2191        sr = {
2192            name: nr,
2193            type: rr,
2194            value: function (e) {
2195                return e.dom().nodeValue
2196            },
2197            isElement: ir,
2198            isText: ar,
2199            isDocument: ur,
2200            isComment: function (e) {
2201                return rr(e) === tr.COMMENT || "#comment" === nr(e)
2202            }
2203        },
2204        cr = Object.keys,
2205        lr = function (e, t) {
2206            for (var n = cr(e), r = 0, o = n.length; r < o; r++) {
2207                var i = n[r];
2208                t(e[i], i, e)
2209            }
2210        },
2211        fr = function (r, o) {
2212            var i = {};
2213            return lr(r, function (e, t) {
2214                var n = o(e, t, r);
2215                i[n.k] = n.v
2216            }), i
2217        },
2218        dr = function (e, t, n) {
2219            if (!(k(n) || B(n) || P(n))) throw console.error("Invalid call to Attr.set. Key ", t, ":: Value ", n, ":: Element ", e), new Error("Attribute value was not simple");
2220            e.setAttribute(t, n + "")
2221        },
2222        mr = function (e, t, n) {
2223            dr(e.dom(), t, n)
2224        },
2225        gr = function (e, t) {
2226            var n = e.dom().getAttribute(t);
2227            return null === n ? undefined : n
2228        },
2229        pr = function (e, t) {
2230            var n = e.dom();
2231            return !(!n || !n.hasAttribute) && n.hasAttribute(t)
2232        },
2233        hr = {
2234            clone: function (e) {
2235                return z(e.dom().attributes, function (e, t) {
2236                    return e[t.name] = t.value, e
2237                }, {})
2238            },
2239            set: mr,
2240            setAll: function (e, t) {
2241                var n = e.dom();
2242                lr(t, function (e, t) {
2243                    dr(n, t, e)
2244                })
2245            },
2246            get: gr,
2247            has: pr,
2248            remove: function (e, t) {
2249                e.dom().removeAttribute(t)
2250            },
2251            hasNone: function (e) {
2252                var t = e.dom().attributes;
2253                return t === undefined || null === t || 0 === t.length
2254            },
2255            transfer: function (o, i, e) {
2256                sr.isElement(o) && sr.isElement(i) && F(e, function (e) {
2257                    var t, n, r;
2258                    n = i, pr(t = o, r = e) && !pr(n, r) && mr(n, r, gr(t, r))
2259                })
2260            }
2261        },
2262        vr = Sn(function () {
2263            return br(er.fromDom(document))
2264        }),
2265        br = function (e) {
2266            var t = e.dom().body;
2267            if (null === t || t === undefined) throw "Body is not available yet";
2268            return er.fromDom(t)
2269        },
2270        yr = {
2271            body: vr,
2272            getBody: br,
2273            inBody: function (e) {
2274                var t = sr.isText(e) ? e.dom().parentNode : e.dom();
2275                return t !== undefined && null !== t && t.ownerDocument.body.contains(t)
2276            }
2277        },
2278        Cr = function (e) {
2279            return e.style !== undefined
2280        },
2281        xr = function (e, t, n) {
2282            if (!k(n)) throw console.error("Invalid call to CSS.set. Property ", t, ":: Value ", n, ":: Element ", e), new Error("CSS value must be a string: " + n);
2283            Cr(e) && e.style.setProperty(t, n)
2284        },
2285        wr = function (e, t) {
2286            return Cr(e) ? e.style.getPropertyValue(t) : ""
2287        },
2288        Nr = function (e, t) {
2289            var n = e.dom(),
2290                r = wr(n, t);
2291            return A.from(r).filter(function (e) {
2292                return 0 < e.length
2293            })
2294        },
2295        Er = function (e, t) {
2296            var n = e.dom();
2297            lr(t, function (e, t) {
2298                xr(n, t, e)
2299            })
2300        },
2301        Sr = function (e, t) {
2302            var n = e.dom(),
2303                r = window.getComputedStyle(n).getPropertyValue(t),
2304                o = "" !== r || yr.inBody(e) ? r : wr(n, t);
2305            return null === o ? undefined : o
2306        },
2307        Tr = Nr,
2308        kr = function () {
2309            for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
2310            return function () {
2311                for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e];
2312                if (t.length !== n.length) throw new Error('Wrong number of arguments to struct. Expected "[' + t.length + ']", got ' + n.length + " arguments");
2313                var r = {};
2314                return F(t, function (e, t) {
2315                    r[e] = H(n[t])
2316                }), r
2317            }
2318        },
2319        Ar = function (e, t) {
2320            for (var n = [], r = function (e) {
2321                    return n.push(e), t(e)
2322                }, o = t(e);
2323                (o = o.bind(r)).isSome(););
2324            return n
2325        },
2326        _r = function () {
2327            return ie.getOrDie("Node")
2328        },
2329        Rr = function (e, t, n) {
2330            return 0 != (e.compareDocumentPosition(t) & n)
2331        },
2332        Dr = function (e, t) {
2333            return Rr(e, t, _r().DOCUMENT_POSITION_CONTAINED_BY)
2334        },
2335        Br = tr.ELEMENT,
2336        Or = tr.DOCUMENT,
2337        Pr = function (e) {
2338            return e.nodeType !== Br && e.nodeType !== Or || 0 === e.childElementCount
2339        },
2340        Lr = {
2341            all: function (e, t) {
2342                var n = t === undefined ? document : t.dom();
2343                return Pr(n) ? [] : $(n.querySelectorAll(e), er.fromDom)
2344            },
2345            is: function (e, t) {
2346                var n = e.dom();
2347                if (n.nodeType !== Br) return !1;
2348                if (n.matches !== undefined) return n.matches(t);
2349                if (n.msMatchesSelector !== undefined) return n.msMatchesSelector(t);
2350                if (n.webkitMatchesSelector !== undefined) return n.webkitMatchesSelector(t);
2351                if (n.mozMatchesSelector !== undefined) return n.mozMatchesSelector(t);
2352                throw new Error("Browser lacks native selectors")
2353            },
2354            one: function (e, t) {
2355                var n = t === undefined ? document : t.dom();
2356                return Pr(n) ? A.none() : A.from(n.querySelector(e)).map(er.fromDom)
2357            }
2358        },
2359        Ir = function (e, t) {
2360            return e.dom() === t.dom()
2361        },
2362        Mr = Qn.detect().browser.isIE() ? function (e, t) {
2363            return Dr(e.dom(), t.dom())
2364        } : function (e, t) {
2365            var n = e.dom(),
2366                r = t.dom();
2367            return n !== r && n.contains(r)
2368        },
2369        Fr = {
2370            eq: Ir,
2371            isEqualNode: function (e, t) {
2372                return e.dom().isEqualNode(t.dom())
2373            },
2374            member: function (e, t) {
2375                return M(t, b(Ir, e))
2376            },
2377            contains: Mr,
2378            is: Lr.is
2379        },
2380        Ur = function (e) {
2381            var t = e.dom();
2382            return A.from(t.parentNode).map(er.fromDom)
2383        },
2384        zr = function (e) {
2385            var t = e.dom();
2386            return A.from(t.previousSibling).map(er.fromDom)
2387        },
2388        Vr = function (e) {
2389            var t = e.dom();
2390            return A.from(t.nextSibling).map(er.fromDom)
2391        },
2392        qr = function (e) {
2393            var t = e.dom();
2394            return $(t.childNodes, er.fromDom)
2395        },
2396        Hr = function (e, t) {
2397            var n = e.dom().childNodes;
2398            return A.from(n[t]).map(er.fromDom)
2399        },
2400        jr = kr("element", "offset"),
2401        $r = {
2402            owner: function (e) {
2403                return er.fromDom(e.dom().ownerDocument)
2404            },
2405            defaultView: function (e) {
2406                var t = e.dom().ownerDocument.defaultView;
2407                return er.fromDom(t)
2408            },
2409            documentElement: function (e) {
2410                return er.fromDom(e.dom().ownerDocument.documentElement)
2411            },
2412            parent: Ur,
2413            findIndex: function (n) {
2414                return Ur(n).bind(function (e) {
2415                    var t = qr(e);
2416                    return K(t, function (e) {
2417                        return Fr.eq(n, e)
2418                    })
2419                })
2420            },
2421            parents: function (e, t) {
2422                for (var n = O(t) ? t : H(!1), r = e.dom(), o = []; null !== r.parentNode && r.parentNode !== undefined;) {
2423                    var i = r.parentNode,
2424                        a = er.fromDom(i);
2425                    if (o.push(a), !0 === n(a)) break;
2426                    r = i
2427                }
2428                return o
2429            },
2430            siblings: function (t) {
2431                return Ur(t).map(qr).map(function (e) {
2432                    return U(e, function (e) {
2433                        return !Fr.eq(t, e)
2434                    })
2435                }).getOr([])
2436            },
2437            prevSibling: zr,
2438            offsetParent: function (e) {
2439                var t = e.dom();
2440                return A.from(t.offsetParent).map(er.fromDom)
2441            },
2442            prevSiblings: function (e) {
2443                return t = Ar(e, zr), (n = Q.call(t, 0)).reverse(), n;
2444                var t, n
2445            },
2446            nextSibling: Vr,
2447            nextSiblings: function (e) {
2448                return Ar(e, Vr)
2449            },
2450            children: qr,
2451            child: Hr,
2452            firstChild: function (e) {
2453                return Hr(e, 0)
2454            },
2455            lastChild: function (e) {
2456                return Hr(e, e.dom().childNodes.length - 1)
2457            },
2458            childNodesCount: function (e) {
2459                return e.dom().childNodes.length
2460            },
2461            hasChildNodes: function (e) {
2462                return e.dom().hasChildNodes()
2463            },
2464            leaf: function (e, t) {
2465                var n = qr(e);
2466                return 0 < n.length && t < n.length ? jr(n[t], 0) : jr(e, t)
2467            }
2468        },
2469        Wr = Qn.detect().browser,
2470        Kr = function (e) {
2471            return V(e, sr.isElement)
2472        },
2473        Xr = {
2474            getPos: function (e, t, n) {
2475                var r, o, i, a = 0,
2476                    u = 0,
2477                    s = e.ownerDocument;
2478                if (n = n || e, t) {
2479                    if (n === e && t.getBoundingClientRect && "static" === Sr(er.fromDom(e), "position")) return {
2480                        x: a = (o = t.getBoundingClientRect()).left + (s.documentElement.scrollLeft || e.scrollLeft) - s.documentElement.clientLeft,
2481                        y: u = o.top + (s.documentElement.scrollTop || e.scrollTop) - s.documentElement.clientTop
2482                    };
2483                    for (r = t; r && r !== n && r.nodeType;) a += r.offsetLeft || 0, u += r.offsetTop || 0, r = r.offsetParent;
2484                    for (r = t.parentNode; r && r !== n && r.nodeType;) a -= r.scrollLeft || 0, u -= r.scrollTop || 0, r = r.parentNode;
2485                    u += (i = er.fromDom(t), Wr.isFirefox() && "table" === sr.name(i) ? Kr($r.children(i)).filter(function (e) {
2486                        return "caption" === sr.name(e)
2487                    }).bind(function (o) {
2488                        return Kr($r.nextSiblings(o)).map(function (e) {
2489                            var t = e.dom().offsetTop,
2490                                n = o.dom().offsetTop,
2491                                r = o.dom().offsetHeight;
2492                            return t <= n ? -r : 0
2493                        })
2494                    }).getOr(0) : 0)
2495                }
2496                return {
2497                    x: a,
2498                    y: u
2499                }
2500            }
2501        },
2502        Yr = function (e) {
2503            var n = A.none(),
2504                t = [],
2505                r = function (e) {
2506                    o() ? a(e) : t.push(e)
2507                },
2508                o = function () {
2509                    return n.isSome()
2510                },
2511                i = function (e) {
2512                    F(e, a)
2513                },
2514                a = function (t) {
2515                    n.each(function (e) {
2516                        setTimeout(function () {
2517                            t(e)
2518                        }, 0)
2519                    })
2520                };
2521            return e(function (e) {
2522                n = A.some(e), i(t), t = []
2523            }), {
2524                get: r,
2525                map: function (n) {
2526                    return Yr(function (t) {
2527                        r(function (e) {
2528                            t(n(e))
2529                        })
2530                    })
2531                },
2532                isReady: o
2533            }
2534        },
2535        Gr = {
2536            nu: Yr,
2537            pure: function (t) {
2538                return Yr(function (e) {
2539                    e(t)
2540                })
2541            }
2542        },
2543        Jr = function (t) {
2544            var e = function (e) {
2545                    var r;
2546                    t((r = e, function () {
2547                        for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
2548                        var n = this;
2549                        setTimeout(function () {
2550                            r.apply(n, e)
2551                        }, 0)
2552                    }))
2553                },
2554                n = function () {
2555                    return Gr.nu(e)
2556                };
2557            return {
2558                map: function (r) {
2559                    return Jr(function (n) {
2560                        e(function (e) {
2561                            var t = r(e);
2562                            n(t)
2563                        })
2564                    })
2565                },
2566                bind: function (n) {
2567                    return Jr(function (t) {
2568                        e(function (e) {
2569                            n(e).get(t)
2570                        })
2571                    })
2572                },
2573                anonBind: function (n) {
2574                    return Jr(function (t) {
2575                        e(function (e) {
2576                            n.get(t)
2577                        })
2578                    })
2579                },
2580                toLazy: n,
2581                toCached: function () {
2582                    var t = null;
2583                    return Jr(function (e) {
2584                        null === t && (t = n()), t.get(e)
2585                    })
2586                },
2587                get: e
vendor: 18,295 bytes, lines 2588-2986
2588            }
2589        },
2590        Qr = {
2591            nu: Jr,
2592            pure: function (t) {
2593                return Jr(function (e) {
2594                    e(t)
2595                })
2596            }
2597        },
2598        Zr = function (a, e) {
2599            return e(function (r) {
2600                var o = [],
2601                    i = 0;
2602                0 === a.length ? r([]) : F(a, function (e, t) {
2603                    var n;
2604                    e.get((n = t, function (e) {
2605                        o[n] = e, ++i >= a.length && r(o)
2606                    }))
2607                })
2608            })
2609        },
2610        eo = function (e) {
2611            return Zr(e, Qr.nu)
2612        },
2613        to = function (n) {
2614            return {
2615                is: function (e) {
2616                    return n === e
2617                },
2618                isValue: C,
2619                isError: y,
2620                getOr: H(n),
2621                getOrThunk: H(n),
2622                getOrDie: H(n),
2623                or: function (e) {
2624                    return to(n)
2625                },
2626                orThunk: function (e) {
2627                    return to(n)
2628                },
2629                fold: function (e, t) {
2630                    return t(n)
2631                },
2632                map: function (e) {
2633                    return to(e(n))
2634                },
2635                each: function (e) {
2636                    e(n)
2637                },
2638                bind: function (e) {
2639                    return e(n)
2640                },
2641                exists: function (e) {
2642                    return e(n)
2643                },
2644                forall: function (e) {
2645                    return e(n)
2646                },
2647                toOption: function () {
2648                    return A.some(n)
2649                }
2650            }
2651        },
2652        no = function (n) {
2653            return {
2654                is: y,
2655                isValue: y,
2656                isError: C,
2657                getOr: j,
2658                getOrThunk: function (e) {
2659                    return e()
2660                },
2661                getOrDie: function () {
2662                    return e = String(n),
2663                        function () {
2664                            throw new Error(e)
2665                        }();
2666                    var e
2667                },
2668                or: function (e) {
2669                    return e
2670                },
2671                orThunk: function (e) {
2672                    return e()
2673                },
2674                fold: function (e, t) {
2675                    return e(n)
2676                },
2677                map: function (e) {
2678                    return no(n)
2679                },
2680                each: v,
2681                bind: function (e) {
2682                    return no(n)
2683                },
2684                exists: y,
2685                forall: C,
2686                toOption: A.none
2687            }
2688        },
2689        ro = {
2690            value: to,
2691            error: no
2692        };
2693
2694    function oo(e, u) {
2695        var t = e,
2696            n = function (e, t, n, r) {
2697                var o, i;
2698                if (e) {
2699                    if (!r && e[t]) return e[t];
2700                    if (e !== u) {
2701                        if (o = e[n]) return o;
2702                        for (i = e.parentNode; i && i !== u; i = i.parentNode)
2703                            if (o = i[n]) return o
2704                    }
2705                }
2706            };
2707        this.current = function () {
2708            return t
2709        }, this.next = function (e) {
2710            return t = n(t, "firstChild", "nextSibling", e)
2711        }, this.prev = function (e) {
2712            return t = n(t, "lastChild", "previousSibling", e)
2713        }, this.prev2 = function (e) {
2714            return t = function (e, t, n, r) {
2715                var o, i, a;
2716                if (e) {
2717                    if (o = e[n], u && o === u) return;
2718                    if (o) {
2719                        if (!r)
2720                            for (a = o[t]; a; a = a[t])
2721                                if (!a[t]) return a;
2722                        return o
2723                    }
2724                    if ((i = e.parentNode) && i !== u) return i
2725                }
2726            }(t, "lastChild", "previousSibling", e)
2727        }
2728    }
2729    var io, ao, uo, so = function (t) {
2730            var n;
2731            return function (e) {
2732                return (n = n || function (e, t) {
2733                    for (var n = {}, r = 0, o = e.length; r < o; r++) {
2734                        var i = e[r];
2735                        n[String(i)] = t(i, r)
2736                    }
2737                    return n
2738                }(t, H(!0))).hasOwnProperty(sr.name(e))
2739            }
2740        },
2741        co = so(["h1", "h2", "h3", "h4", "h5", "h6"]),
2742        lo = so(["article", "aside", "details", "div", "dt", "figcaption", "footer", "form", "fieldset", "header", "hgroup", "html", "main", "nav", "section", "summary", "body", "p", "dl", "multicol", "dd", "figure", "address", "center", "blockquote", "h1", "h2", "h3", "h4", "h5", "h6", "listing", "xmp", "pre", "plaintext", "menu", "dir", "ul", "ol", "li", "hr", "table", "tbody", "thead", "tfoot", "th", "tr", "td", "caption"]),
2743        fo = function (e) {
2744            return sr.isElement(e) && !lo(e)
2745        },
2746        mo = function (e) {
2747            return sr.isElement(e) && "br" === sr.name(e)
2748        },
2749        go = so(["h1", "h2", "h3", "h4", "h5", "h6", "p", "div", "address", "pre", "form", "blockquote", "center", "dir", "fieldset", "header", "footer", "article", "section", "hgroup", "aside", "nav", "figure"]),
2750        po = so(["ul", "ol", "dl"]),
2751        ho = so(["li", "dd", "dt"]),
2752        vo = so(["area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "isindex", "link", "meta", "param", "embed", "source", "wbr", "track"]),
2753        bo = so(["thead", "tbody", "tfoot"]),
2754        yo = so(["td", "th"]),
2755        Co = so(["pre", "script", "textarea", "style"]),
2756        xo = function (t) {
2757            return function (e) {
2758                return !!e && e.nodeType === t
2759            }
2760        },
2761        wo = xo(1),
2762        No = function (e) {
2763            var r = e.toLowerCase().split(" ");
2764            return function (e) {
2765                var t, n;
2766                if (e && e.nodeType)
2767                    for (n = e.nodeName.toLowerCase(), t = 0; t < r.length; t++)
2768                        if (n === r[t]) return !0;
2769                return !1
2770            }
2771        },
2772        Eo = function (t) {
2773            return function (e) {
2774                if (wo(e)) {
2775                    if (e.contentEditable === t) return !0;
2776                    if (e.getAttribute("data-mce-contenteditable") === t) return !0
2777                }
2778                return !1
2779            }
2780        },
2781        So = xo(3),
2782        To = xo(8),
2783        ko = xo(9),
2784        Ao = No("br"),
2785        _o = Eo("true"),
2786        Ro = Eo("false"),
2787        Do = {
2788            isText: So,
2789            isElement: wo,
2790            isComment: To,
2791            isDocument: ko,
2792            isBr: Ao,
2793            isContentEditableTrue: _o,
2794            isContentEditableFalse: Ro,
2795            matchNodeNames: No,
2796            hasPropValue: function (t, n) {
2797                return function (e) {
2798                    return wo(e) && e[t] === n
2799                }
2800            },
2801            hasAttribute: function (t, e) {
2802                return function (e) {
2803                    return wo(e) && e.hasAttribute(t)
2804                }
2805            },
2806            hasAttributeValue: function (t, n) {
2807                return function (e) {
2808                    return wo(e) && e.getAttribute(t) === n
2809                }
2810            },
2811            matchStyleValues: function (r, e) {
2812                var o = e.toLowerCase().split(" ");
2813                return function (e) {
2814                    var t;
2815                    if (wo(e))
2816                        for (t = 0; t < o.length; t++) {
2817                            var n = e.ownerDocument.defaultView.getComputedStyle(e, null);
2818                            if ((n ? n.getPropertyValue(r) : null) === o[t]) return !0
2819                        }
2820                    return !1
2821                }
2822            },
2823            isBogus: function (e) {
2824                return wo(e) && e.hasAttribute("data-mce-bogus")
2825            },
2826            isBogusAll: function (e) {
2827                return wo(e) && "all" === e.getAttribute("data-mce-bogus")
2828            },
2829            isTable: function (e) {
2830                return wo(e) && "TABLE" === e.tagName
2831            }
2832        },
2833        Bo = function (e) {
2834            return e && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type")
2835        },
2836        Oo = function (e, t) {
2837            var n, r = t.childNodes;
2838            if (!Do.isElement(t) || !Bo(t)) {
2839                for (n = r.length - 1; 0 <= n; n--) Oo(e, r[n]);
2840                if (!1 === Do.isDocument(t)) {
2841                    if (Do.isText(t) && 0 < t.nodeValue.length) {
2842                        var o = Yt.trim(t.nodeValue).length;
2843                        if (e.isBlock(t.parentNode) || 0 < o) return;
2844                        if (0 === o && (a = (i = t).previousSibling && "SPAN" === i.previousSibling.nodeName, u = i.nextSibling && "SPAN" === i.nextSibling.nodeName, a && u)) return
2845                    } else if (Do.isElement(t) && (1 === (r = t.childNodes).length && Bo(r[0]) && t.parentNode.insertBefore(r[0], t), r.length || vo(er.fromDom(t)))) return;
2846                    e.remove(t)
2847                }
2848                var i, a, u;
2849                return t
2850            }
2851        },
2852        Po = {
2853            trimNode: Oo
2854        },
2855        Lo = Yt.makeMap,
2856        Io = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
2857        Mo = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
2858        Fo = /[<>&\"\']/g,
2859        Uo = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi,
2860        zo = {
2861            128: "\u20ac",
2862            130: "\u201a",
2863            131: "\u0192",
2864            132: "\u201e",
2865            133: "\u2026",
2866            134: "\u2020",
2867            135: "\u2021",
2868            136: "\u02c6",
2869            137: "\u2030",
2870            138: "\u0160",
2871            139: "\u2039",
2872            140: "\u0152",
2873            142: "\u017d",
2874            145: "\u2018",
2875            146: "\u2019",
2876            147: "\u201c",
2877            148: "\u201d",
2878            149: "\u2022",
2879            150: "\u2013",
2880            151: "\u2014",
2881            152: "\u02dc",
2882            153: "\u2122",
2883            154: "\u0161",
2884            155: "\u203a",
2885            156: "\u0153",
2886            158: "\u017e",
2887            159: "\u0178"
2888        };
2889    ao = {
2890        '"': "&quot;",
2891        "'": "&#39;",
2892        "<": "&lt;",
2893        ">": "&gt;",
2894        "&": "&amp;",
2895        "`": "&#96;"
2896    }, uo = {
2897        "&lt;": "<",
2898        "&gt;": ">",
2899        "&amp;": "&",
2900        "&quot;": '"',
2901        "&apos;": "'"
2902    };
2903    var Vo = function (e, t) {
2904        var n, r, o, i = {};
2905        if (e) {
2906            for (e = e.split(","), t = t || 10, n = 0; n < e.length; n += 2) r = String.fromCharCode(parseInt(e[n], t)), ao[r] || (o = "&" + e[n + 1] + ";", i[r] = o, i[o] = r);
2907            return i
2908        }
2909    };
2910    io = Vo("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro", 32);
2911    var qo = function (e, t) {
2912            return e.replace(t ? Io : Mo, function (e) {
2913                return ao[e] || e
2914            })
2915        },
2916        Ho = function (e, t) {
2917            return e.replace(t ? Io : Mo, function (e) {
2918                return 1 < e.length ? "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : ao[e] || "&#" + e.charCodeAt(0) + ";"
2919            })
2920        },
2921        jo = function (e, t, n) {
2922            return n = n || io, e.replace(t ? Io : Mo, function (e) {
2923                return ao[e] || n[e] || e
2924            })
2925        },
2926        $o = {
2927            encodeRaw: qo,
2928            encodeAllRaw: function (e) {
2929                return ("" + e).replace(Fo, function (e) {
2930                    return ao[e] || e
2931                })
2932            },
2933            encodeNumeric: Ho,
2934            encodeNamed: jo,
2935            getEncodeFunc: function (e, t) {
2936                var n = Vo(t) || io,
2937                    r = Lo(e.replace(/\+/g, ","));
2938                return r.named && r.numeric ? function (e, t) {
2939                    return e.replace(t ? Io : Mo, function (e) {
2940                        return ao[e] !== undefined ? ao[e] : n[e] !== undefined ? n[e] : 1 < e.length ? "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : "&#" + e.charCodeAt(0) + ";"
2941                    })
2942                } : r.named ? t ? function (e, t) {
2943                    return jo(e, t, n)
2944                } : jo : r.numeric ? Ho : qo
2945            },
2946            decode: function (e) {
2947                return e.replace(Uo, function (e, t) {
2948                    return t ? 65535 < (t = "x" === t.charAt(0).toLowerCase() ? parseInt(t.substr(1), 16) : parseInt(t, 10)) ? (t -= 65536, String.fromCharCode(55296 + (t >> 10), 56320 + (1023 & t))) : zo[t] || String.fromCharCode(t) : uo[e] || io[e] || (n = e, (r = er.fromTag("div").dom()).innerHTML = n, r.textContent || r.innerText || n);
2949                    var n, r
2950                })
2951            }
2952        },
2953        Wo = {},
2954        Ko = {},
2955        Xo = Yt.makeMap,
2956        Yo = Yt.each,
2957        Go = Yt.extend,
2958        Jo = Yt.explode,
2959        Qo = Yt.inArray,
2960        Zo = function (e, t) {
2961            return (e = Yt.trim(e)) ? e.split(t || " ") : []
2962        },
2963        ei = function (e) {
2964            var u, t, n, r, o, i, s = {},
2965                a = function (e, t, n) {
2966                    var r, o, i, a = function (e, t) {
2967                        var n, r, o = {};
2968                        for (n = 0, r = e.length; n < r; n++) o[e[n]] = t || {};
2969                        return o
2970                    };
2971                    for (t = t || "", "string" == typeof (n = n || []) && (n = Zo(n)), r = (e = Zo(e)).length; r--;) i = {
2972                        attributes: a(o = Zo([u, t].join(" "))),
2973                        attributesOrder: o,
2974                        children: a(n, Ko)
2975                    }, s[e[r]] = i
2976                },
2977                c = function (e, t) {
2978                    var n, r, o, i;
2979                    for (n = (e = Zo(e)).length, t = Zo(t); n--;)
2980                        for (r = s[e[n]], o = 0, i = t.length; o < i; o++) r.attributes[t[o]] = {}, r.attributesOrder.push(t[o])
2981                };
2982            return Wo[e] ? Wo[e] : (u = "id accesskey class dir lang style tabindex title role", t = "address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul", n = "a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment", "html4" !== e && (u += " contenteditable contextmenu draggable dropzone hidden spellcheck translate", t += " article aside details dialog figure header footer hgroup section nav", n += " audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"), "html5-strict" !== e && (u += " xml:lang", n = [n, i = "acronym applet basefont big font strike tt"].join(" "), Yo(Zo(i), function (e) {
2983                a(e, "", n)
2984            }), t = [t, o = "center dir isindex noframes"].join(" "), r = [t, n].join(" "), Yo(Zo(o), function (e) {
2985                a(e, "", r)
2986            })), r = r || [t, n].join(" "), a("html", "manifest", "head body"), a("head", "", "base command link meta noscript script style title"), a("title hr noscript br"), a("base", "href target"), a("link", "href rel media hreflang type sizes hreflang"), a("meta", "name http-equiv content charset"), a("style", "media type scoped"), a("script", "src async defer type charset"), a("body", "onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload", r), a("address dt dd div caption", "", r), a("h1 h2 h3 h4 h5 h6 pre p abbr co
2986de var samp kbd sub sup i b u bdo span legend em strong small s cite dfn", "", n), a("blockquote", "cite", r), a("ol", "reversed start type", "li"), a("ul", "", "li"), a("li", "value", r), a("dl", "", "dt dd"), a("a", "href target rel media hreflang type", n), a("q", "cite", n), a("ins del", "cite datetime", r), a("img", "src sizes srcset alt usemap ismap width height"), a("iframe", "src name width height", r), a("embed", "src type width height"), a("object", "data type typemustmatch name usemap form width height", [r, "param"].join(" ")), a("param", "name value"), a("map", "name", [r, "area"].join(" ")), a("area", "alt coords shape href target rel media hreflang type"), a("table", "border", "caption colgroup thead tfoot tbody tr" + ("html4" === e ? " col" : "")), a("colgroup", "span", "col"), a("col", "span"), a("tbody thead tfoot", "", "tr"), a("tr", "", "td th"), a("td", "colspan rowspan headers", r), a("th", "colspan rowspan headers scope abbr", r), a("form", "accept-charset action autocomplete enctype method name novalidate target", r), a("fieldset", "disabled form name", [r, "legend"].join(" ")), a("label", "form for", n), a("input", "accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"), a("button", "disabled form formaction formenctype formmethod formnovalidate formtarget name type value", "html4" === e ? r : n), a("select", "disabled form multiple name required size", "option optgroup"), a("optgroup", "disabled label", "option"), a("option", "disabled label selected value"), a("textarea", "cols dirname disabled form maxlength name readonly required rows wrap"), a("menu", "type label", [r, "li"].join(" ")), a("noscript", "", r), "html4" !== e && (a("wbr"), a("ruby", "", [n, "rt rp"].join(" ")), a("figcaption", "", r), a("mark rt rp summary bdi", "", n), a("canvas", "width height", r), a("video", "src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered", [r, "track source"].join(" ")), a("audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", [r, "track source"].join(" ")), a("picture", "", "img source"), a("source", "src srcset type media sizes"), a("track", "kind src srclang label default"), a("datalist", "", [n, "option"].join(" ")), a("article section nav aside header footer", "", r), a("hgroup", "", "h1 h2 h3 h4 h5 h6"), a("figure", "", [r, "figcaption"].join(" ")), a("time", "datetime", n), a("dialog", "open", r), a("command", "type label icon disabled checked radiogroup command"), a("output", "for form name", n), a("progress", "value max", n), a("meter", "value min max low high optimum", n), a("details", "open", [r, "summary"].join(" ")), a("keygen", "autofocus challenge disabled form keytype name")), "html5-strict" !== e && (c("script", "language xml:space"), c("style", "xml:space"), c("object", "declare classid code codebase codetype archive standby align border hspace vspace"), c("embed", "align name hspace vspace"), c("param", "valuetype type"), c("a", "charset name rev shape coords"), c("br", "clear"), c("applet", "codebase archive code object alt name width height align hspace vspace"), c("img", "name longdesc align border hspace vspace"), c("iframe", "longdesc frameborder marginwidth marginheight scrolling align"), c("font basefont", "size color face"), c("input", "usemap align"), c("select", "onchange"), c("textarea"), c("h1 h2 h3 h4 h5 h6 div p legend caption", "align"), c("ul", "type compact"), c("li", "type"), c("ol dl menu dir", "compact"), c("pre", "width xml:space"), c("hr", "align noshade size width"), c("isindex", "prompt"), c("table", "summary width frame rules cellspacing cellpadding align bgcolor"), c("col", "width align char charoff valign"), c("colgroup", "width align char charoff valign"), c("thead", "align char charoff valign"), c("tr", "align char charoff valign bgcolor"), c("th", "axis align char charoff valign nowrap bgcolor width height"), c("form", "accept"), c("td", "abbr axis scope align char charoff valign nowrap bgcolor width height"), c("tfoot", "align char charoff valign"), c("tbody", "align char charoff valign"), c("area", "nohref"), c("body", "background bgcolor text link vlink alink")), "html4" !== e && (c("input button select textarea", "autofocus"), c("input textarea", "placeholder"), c("a", "download"), c("link script img", "crossorigin"), c("iframe", "sandbox seamless allowfullscreen")), Yo(Zo("a form meter progress dfn"), function (e) {
2987                s[e] && delete s[e].children[e]
2988            }
vendor: 46,200 bytes, lines 2988-3982
2988), delete s.caption.children.table, delete s.script, Wo[e] = s)
2989        },
2990        ti = function (e, n) {
2991            var r;
2992            return e && (r = {}, "string" == typeof e && (e = {
2993                "*": e
2994            }), Yo(e, function (e, t) {
2995                r[t] = r[t.toUpperCase()] = "map" === n ? Xo(e, /[, ]/) : Jo(e, /[, ]/)
2996            })), r
2997        };
2998
2999    function ni(i) {
3000        var e, t, n, r, o, a, u, s, c, l, f, d, m, N = {},
3001            g = {},
3002            E = [],
3003            p = {},
3004            h = {},
3005            v = function (e, t, n) {
3006                var r = i[e];
3007                return r ? r = Xo(r, /[, ]/, Xo(r.toUpperCase(), /[, ]/)) : (r = Wo[e]) || (r = Xo(t, " ", Xo(t.toUpperCase(), " ")), r = Go(r, n), Wo[e] = r), r
3008            };
3009        n = ei((i = i || {}).schema), !1 === i.verify_html && (i.valid_elements = "*[*]"), e = ti(i.valid_styles), t = ti(i.invalid_styles, "map"), s = ti(i.valid_classes, "map"), r = v("whitespace_elements", "pre script noscript style textarea video audio iframe object code"), o = v("self_closing_elements", "colgroup dd dt li option p td tfoot th thead tr"), a = v("short_ended_elements", "area base basefont br col frame hr img input isindex link meta param embed source wbr track"), u = v("boolean_attributes", "checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"), l = v("non_empty_elements", "td th iframe video audio object script pre code", a), f = v("move_caret_before_on_enter_elements", "table", l), d = v("text_block_elements", "h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"), c = v("block_elements", "hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary", d), m = v("text_inline_elements", "span strong b em i font strike u var cite dfn code mark q sup sub samp"), Yo((i.special || "script noscript noframes noembed title style textarea xmp").split(" "), function (e) {
3010            h[e] = new RegExp("</" + e + "[^>]*>", "gi")
3011        });
3012        var S = function (e) {
3013                return new RegExp("^" + e.replace(/([?+*])/g, ".$1") + "$")
3014            },
3015            b = function (e) {
3016                var t, n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b, y, C = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,
3017                    x = /^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/,
3018                    w = /[*?+]/;
3019                if (e)
3020                    for (e = Zo(e, ","), N["@"] && (h = N["@"].attributes, v = N["@"].attributesOrder), t = 0, n = e.length; t < n; t++)
3021                        if (i = C.exec(e[t])) {
3022                            if (g = i[1], c = i[2], p = i[3], s = i[5], a = {
3023                                    attributes: d = {},
3024                                    attributesOrder: m = []
3025                                }, "#" === g && (a.paddEmpty = !0), "-" === g && (a.removeEmpty = !0), "!" === i[4] && (a.removeEmptyAttrs = !0), h) {
3026                                for (b in h) d[b] = h[b];
3027                                m.push.apply(m, v)
3028                            }
3029                            if (s)
3030                                for (r = 0, o = (s = Zo(s, "|")).length; r < o; r++)
3031                                    if (i = x.exec(s[r])) {
3032                                        if (u = {}, f = i[1], l = i[2].replace(/[\\:]:/g, ":"), g = i[3], y = i[4], "!" === f && (a.attributesRequired = a.attributesRequired || [], a.attributesRequired.push(l), u.required = !0), "-" === f) {
3033                                            delete d[l], m.splice(Qo(m, l), 1);
3034                                            continue
3035                                        }
3036                                        g && ("=" === g && (a.attributesDefault = a.attributesDefault || [], a.attributesDefault.push({
3037                                            name: l,
3038                                            value: y
3039                                        }), u.defaultValue = y), ":" === g && (a.attributesForced = a.attributesForced || [], a.attributesForced.push({
3040                                            name: l,
3041                                            value: y
3042                                        }), u.forcedValue = y), "<" === g && (u.validValues = Xo(y, "?"))), w.test(l) ? (a.attributePatterns = a.attributePatterns || [], u.pattern = S(l), a.attributePatterns.push(u)) : (d[l] || m.push(l), d[l] = u)
3043                                    }
3044                            h || "@" !== c || (h = d, v = m), p && (a.outputName = c, N[p] = a), w.test(c) ? (a.pattern = S(c), E.push(a)) : N[c] = a
3045                        }
3046            },
3047            y = function (e) {
3048                N = {}, E = [], b(e), Yo(n, function (e, t) {
3049                    g[t] = e.children
3050                })
3051            },
3052            C = function (e) {
3053                var a = /^(~)?(.+)$/;
3054                e && (Wo.text_block_elements = Wo.block_elements = null, Yo(Zo(e, ","), function (e) {
3055                    var t = a.exec(e),
3056                        n = "~" === t[1],
3057                        r = n ? "span" : "div",
3058                        o = t[2];
3059                    if (g[o] = g[r], p[o] = r, n || (c[o.toUpperCase()] = {}, c[o] = {}), !N[o]) {
3060                        var i = N[r];
3061                        delete(i = Go({}, i)).removeEmptyAttrs, delete i.removeEmpty, N[o] = i
3062                    }
3063                    Yo(g, function (e, t) {
3064                        e[r] && (g[t] = e = Go({}, g[t]), e[o] = e[r])
3065                    })
3066                }))
3067            },
3068            x = function (e) {
3069                var o = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
3070                Wo[i.schema] = null, e && Yo(Zo(e, ","), function (e) {
3071                    var t, n, r = o.exec(e);
3072                    r && (n = r[1], t = n ? g[r[2]] : g[r[2]] = {
3073                        "#comment": {}
3074                    }, t = g[r[2]], Yo(Zo(r[3], "|"), function (e) {
3075                        "-" === n ? delete t[e] : t[e] = {}
3076                    }))
3077                })
3078            },
3079            w = function (e) {
3080                var t, n = N[e];
3081                if (n) return n;
3082                for (t = E.length; t--;)
3083                    if ((n = E[t]).pattern.test(e)) return n
3084            };
3085        return i.valid_elements ? y(i.valid_elements) : (Yo(n, function (e, t) {
3086            N[t] = {
3087                attributes: e.attributes,
3088                attributesOrder: e.attributesOrder
3089            }, g[t] = e.children
3090        }), "html5" !== i.schema && Yo(Zo("strong/b em/i"), function (e) {
3091            e = Zo(e, "/"), N[e[1]].outputName = e[0]
3092        }), Yo(Zo("ol ul sub sup blockquote span font a table tbody tr strong em b i"), function (e) {
3093            N[e] && (N[e].removeEmpty = !0)
3094        }), Yo(Zo("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"), function (e) {
3095            N[e].paddEmpty = !0
3096        }), Yo(Zo("span"), function (e) {
3097            N[e].removeEmptyAttrs = !0
3098        })), C(i.custom_elements), x(i.valid_children), b(i.extended_valid_elements), x("+ol[ul|ol],+ul[ul|ol]"), Yo({
3099            dd: "dl",
3100            dt: "dl",
3101            li: "ul ol",
3102            td: "tr",
3103            th: "tr",
3104            tr: "tbody thead tfoot",
3105            tbody: "table",
3106            thead: "table",
3107            tfoot: "table",
3108            legend: "fieldset",
3109            area: "map",
3110            param: "video audio object"
3111        }, function (e, t) {
3112            N[t] && (N[t].parentsRequired = Zo(e))
3113        }), i.invalid_elements && Yo(Jo(i.invalid_elements), function (e) {
3114            N[e] && delete N[e]
3115        }), w("span") || b("span[!data-mce-type|*]"), {
3116            children: g,
3117            elements: N,
3118            getValidStyles: function () {
3119                return e
3120            },
3121            getValidClasses: function () {
3122                return s
3123            },
3124            getBlockElements: function () {
3125                return c
3126            },
3127            getInvalidStyles: function () {
3128                return t
3129            },
3130            getShortEndedElements: function () {
3131                return a
3132            },
3133            getTextBlockElements: function () {
3134                return d
3135            },
3136            getTextInlineElements: function () {
3137                return m
3138            },
3139            getBoolAttrs: function () {
3140                return u
3141            },
3142            getElementRule: w,
3143            getSelfClosingElements: function () {
3144                return o
3145            },
3146            getNonEmptyElements: function () {
3147                return l
3148            },
3149            getMoveCaretBeforeOnEnterElements: function () {
3150                return f
3151            },
3152            getWhiteSpaceElements: function () {
3153                return r
3154            },
3155            getSpecialElements: function () {
3156                return h
3157            },
3158            isValidChild: function (e, t) {
3159                var n = g[e.toLowerCase()];
3160                return !(!n || !n[t.toLowerCase()])
3161            },
3162            isValid: function (e, t) {
3163                var n, r, o = w(e);
3164                if (o) {
3165                    if (!t) return !0;
3166                    if (o.attributes[t]) return !0;
3167                    if (n = o.attributePatterns)
3168                        for (r = n.length; r--;)
3169                            if (n[r].pattern.test(e)) return !0
3170                }
3171                return !1
3172            },
3173            getCustomElements: function () {
3174                return p
3175            },
3176            addValidElements: b,
3177            setValidElements: y,
3178            addCustomElements: C,
3179            addValidChildren: x
3180        }
3181    }
3182    var ri = function (e, t, n, r) {
3183        var o = function (e) {
3184            return 1 < (e = parseInt(e, 10).toString(16)).length ? e : "0" + e
3185        };
3186        return "#" + o(t) + o(n) + o(r)
3187    };
3188
3189    function oi(y, e) {
3190        var C, t, c, l, x = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,
3191            w = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,
3192            N = /\s*([^:]+):\s*([^;]+);?/g,
3193            E = /\s+$/,
3194            S = {},
3195            T = "\ufeff";
3196        for (y = y || {}, e && (c = e.getValidStyles(), l = e.getInvalidStyles()), t = ("\\\" \\' \\; \\: ; : " + T).split(" "), C = 0; C < t.length; C++) S[t[C]] = T + C, S[T + C] = t[C];
3197        return {
3198            toHex: function (e) {
3199                return e.replace(x, ri)
3200            },
3201            parse: function (e) {
3202                var t, n, r, o, i, a, u, s, c = {},
3203                    l = y.url_converter,
3204                    f = y.url_converter_scope || this,
3205                    d = function (e, t, n) {
3206                        var r, o, i, a;
3207                        if ((r = c[e + "-top" + t]) && (o = c[e + "-right" + t]) && (i = c[e + "-bottom" + t]) && (a = c[e + "-left" + t])) {
3208                            var u = [r, o, i, a];
3209                            for (C = u.length - 1; C-- && u[C] === u[C + 1];); - 1 < C && n || (c[e + t] = -1 === C ? u[0] : u.join(" "), delete c[e + "-top" + t], delete c[e + "-right" + t], delete c[e + "-bottom" + t], delete c[e + "-left" + t])
3210                        }
3211                    },
3212                    m = function (e) {
3213                        var t, n = c[e];
3214                        if (n) {
3215                            for (t = (n = n.split(" ")).length; t--;)
3216                                if (n[t] !== n[0]) return !1;
3217                            return c[e] = n[0], !0
3218                        }
3219                    },
3220                    g = function (e) {
3221                        return o = !0, S[e]
3222                    },
3223                    p = function (e, t) {
3224                        return o && (e = e.replace(/\uFEFF[0-9]/g, function (e) {
3225                            return S[e]
3226                        })), t || (e = e.replace(/\\([\'\";:])/g, "$1")), e
3227                    },
3228                    h = function (e) {
3229                        return String.fromCharCode(parseInt(e.slice(1), 16))
3230                    },
3231                    v = function (e) {
3232                        return e.replace(/\\[0-9a-f]+/gi, h)
3233                    },
3234                    b = function (e, t, n, r, o, i) {
3235                        if (o = o || i) return "'" + (o = p(o)).replace(/\'/g, "\\'") + "'";
3236                        if (t = p(t || n || r), !y.allow_script_urls) {
3237                            var a = t.replace(/[\s\r\n]+/g, "");
3238                            if (/(java|vb)script:/i.test(a)) return "";
3239                            if (!y.allow_svg_data_urls && /^data:image\/svg/i.test(a)) return ""
3240                        }
3241                        return l && (t = l.call(f, t, "style")), "url('" + t.replace(/\'/g, "\\'") + "')"
3242                    };
3243                if (e) {
3244                    for (e = (e = e.replace(/[\u0000-\u001F]/g, "")).replace(/\\[\"\';:\uFEFF]/g, g).replace(/\"[^\"]+\"|\'[^\']+\'/g, function (e) {
3245                            return e.replace(/[;:]/g, g)
3246                        }); t = N.exec(e);)
3247                        if (N.lastIndex = t.index + t[0].length, n = t[1].replace(E, "").toLowerCase(), r = t[2].replace(E, ""), n && r) {
3248                            if (n = v(n), r = v(r), -1 !== n.indexOf(T) || -1 !== n.indexOf('"')) continue;
3249                            if (!y.allow_script_urls && ("behavior" === n || /expression\s*\(|\/\*|\*\//.test(r))) continue;
3250                            "font-weight" === n && "700" === r ? r = "bold" : "color" !== n && "background-color" !== n || (r = r.toLowerCase()), r = (r = r.replace(x, ri)).replace(w, b), c[n] = o ? p(r, !0) : r
3251                        }
3252                    d("border", "", !0), d("border", "-width"), d("border", "-color"), d("border", "-style"), d("padding", ""), d("margin", ""), i = "border", u = "border-style", s = "border-color", m(a = "border-width") && m(u) && m(s) && (c[i] = c[a] + " " + c[u] + " " + c[s], delete c[a], delete c[u], delete c[s]), "medium none" === c.border && delete c.border, "none" === c["border-image"] && delete c["border-image"]
3253                }
3254                return c
3255            },
3256            serialize: function (i, e) {
3257                var t, n, r, o, a, u = "",
3258                    s = function (e) {
3259                        var t, n, r, o;
3260                        if (t = c[e])
3261                            for (n = 0, r = t.length; n < r; n++) e = t[n], (o = i[e]) && (u += (0 < u.length ? " " : "") + e + ": " + o + ";")
3262                    };
3263                if (e && c) s("*"), s(e);
3264                else
3265                    for (t in i) !(n = i[t]) || l && (r = t, o = e, a = void 0, (a = l["*"]) && a[r] || (a = l[o]) && a[r]) || (u += (0 < u.length ? " " : "") + t + ": " + n + ";");
3266                return u
3267            }
3268        }
3269    }
3270    var ii, ai = Yt.each,
3271        ui = Yt.grep,
3272        si = Re.ie,
3273        ci = /^([a-z0-9],?)+$/i,
3274        li = /^[ \t\r\n]*$/,
3275        fi = function (n, r, o) {
3276            var e = {},
3277                i = r.keep_values,
3278                t = {
3279                    set: function (e, t, n) {
3280                        r.url_converter && (t = r.url_converter.call(r.url_converter_scope || o(), t, n, e[0])), e.attr("data-mce-" + n, t).attr(n, t)
3281                    },
3282                    get: function (e, t) {
3283                        return e.attr("data-mce-" + t) || e.attr(t)
3284                    }
3285                };
3286            return e = {
3287                style: {
3288                    set: function (e, t) {
3289                        null === t || "object" != typeof t ? (i && e.attr("data-mce-style", t), e.attr("style", t)) : e.css(t)
3290                    },
3291                    get: function (e) {
3292                        var t = e.attr("data-mce-style") || e.attr("style");
3293                        return t = n.serialize(n.parse(t), e[0].nodeName)
3294                    }
3295                }
3296            }, i && (e.href = e.src = t), e
3297        },
3298        di = function (e, t) {
3299            var n = t.attr("style"),
3300                r = e.serialize(e.parse(n), t[0].nodeName);
3301            r || (r = null), t.attr("data-mce-style", r)
3302        },
3303        mi = function (e, t) {
3304            var n, r, o = 0;
3305            if (e)
3306                for (n = e.nodeType, e = e.previousSibling; e; e = e.previousSibling) r = e.nodeType, (!t || 3 !== r || r !== n && e.nodeValue.length) && (o++, n = r);
3307            return o
3308        };
3309
3310    function gi(a, u) {
3311        var s, c = this;
3312        void 0 === u && (u = {});
3313        var r = {},
3314            i = window,
3315            o = {},
3316            t = 0,
3317            e = function (m, e) {
3318                var g, p = 0,
3319                    h = {};
3320                g = (e = e || {}).maxLoadTime || 5e3;
3321                var v = function (e) {
3322                        m.getElementsByTagName("head")[0].appendChild(e)
3323                    },
3324                    n = function (e, t, n) {
3325                        var o, r, i, a, u = function () {
3326                                for (var e = a.passed, t = e.length; t--;) e[t]();
3327                                a.status = 2, a.passed = [], a.failed = []
3328                            },
3329                            s = function () {
3330                                for (var e = a.failed, t = e.length; t--;) e[t]();
3331                                a.status = 3, a.passed = [], a.failed = []
3332                            },
3333                            c = function (e, t) {
3334                                e() || ((new Date).getTime() - i < g ? Le.setTimeout(t) : s())
3335                            },
3336                            l = function () {
3337                                c(function () {
3338                                    for (var e, t, n = m.styleSheets, r = n.length; r--;)
3339                                        if ((t = (e = n[r]).ownerNode ? e.ownerNode : e.owningElement) && t.id === o.id) return u(), !0
3340                                }, l)
3341                            },
3342                            f = function () {
3343                                c(function () {
3344                                    try {
3345                                        var e = r.sheet.cssRules;
3346                                        return u(), !!e
3347                                    } catch (t) {}
3348                                }, f)
3349                            };
3350                        if (e = Yt._addCacheSuffix(e), h[e] ? a = h[e] : (a = {
3351                                passed: [],
3352                                failed: []
3353                            }, h[e] = a), t && a.passed.push(t), n && a.failed.push(n), 1 !== a.status)
3354                            if (2 !== a.status)
3355                                if (3 !== a.status) {
3356                                    if (a.status = 1, (o = m.createElement("link")).rel = "stylesheet", o.type = "text/css", o.id = "u" + p++, o.async = !1, o.defer = !1, i = (new Date).getTime(), "onload" in o && !((d = navigator.userAgent.match(/WebKit\/(\d*)/)) && parseInt(d[1], 10) < 536)) o.onload = l, o.onerror = s;
3357                                    else {
3358                                        if (0 < navigator.userAgent.indexOf("Firefox")) return (r = m.createElement("style")).textContent = '@import "' + e + '"', f(), void v(r);
3359                                        l()
3360                                    }
3361                                    var d;
3362                                    v(o), o.href = e
3363                                } else s();
3364                        else u()
3365                    },
3366                    t = function (t) {
3367                        return Qr.nu(function (e) {
3368                            n(t, q(e, H(ro.value(t))), q(e, H(ro.error(t))))
3369                        })
3370                    },
3371                    o = function (e) {
3372                        return e.fold(j, j)
3373                    };
3374                return {
3375                    load: n,
3376                    loadAll: function (e, n, r) {
3377                        eo($(e, t)).get(function (e) {
3378                            var t = W(e, function (e) {
3379                                return e.isValue()
3380                            });
3381                            0 < t.fail.length ? r(t.fail.map(o)) : n(t.pass.map(o))
3382                        })
3383                    }
3384                }
3385            }(a),
3386            l = [],
3387            f = u.schema ? u.schema : ni({}),
3388            d = oi({
3389                url_converter: u.url_converter,
3390                url_converter_scope: u.url_converter_scope
3391            }, u.schema),
3392            m = u.ownEvents ? new je(u.proxy) : je.Event,
3393            n = f.getBlockElements(),
3394            g = pn.overrideDefaults(function () {
3395                return {
3396                    context: a,
3397                    element: V.getRoot()
3398                }
3399            }),
3400            p = function (e) {
3401                if (e && a && "string" == typeof e) {
3402                    var t = a.getElementById(e);
3403                    return t && t.id !== e ? a.getElementsByName(e)[1] : t
3404                }
3405                return e
3406            },
3407            h = function (e) {
3408                return "string" == typeof e && (e = p(e)), g(e)
3409            },
3410            v = function (e, t, n) {
3411                var r, o, i = h(e);
3412                return i.length && (o = (r = s[t]) && r.get ? r.get(i, t) : i.attr(t)), void 0 === o && (o = n || ""), o
3413            },
3414            b = function (e) {
3415                var t = p(e);
3416                return t ? t.attributes : []
3417            },
3418            y = function (e, t, n) {
3419                var r, o;
3420                "" === n && (n = null);
3421                var i = h(e);
3422                r = i.attr(t), i.length && ((o = s[t]) && o.set ? o.set(i, n, t) : i.attr(t, n), r !== n && u.onSetAttrib && u.onSetAttrib({
3423                    attrElm: i,
3424                    attrName: t,
3425                    attrValue: n
3426                }))
3427            },
3428            C = function () {
3429                return u.root_element || a.body
3430            },
3431            x = function (e, t) {
3432                return Xr.getPos(a.body, p(e), t)
3433            },
3434            w = function (e, t, n) {
3435                var r = h(e);
3436                return n ? r.css(t) : ("float" === (t = t.replace(/-(\D)/g, function (e, t) {
3437                    return t.toUpperCase()
3438                })) && (t = Re.ie && Re.ie < 12 ? "styleFloat" : "cssFloat"), r[0] && r[0].style ? r[0].style[t] : undefined)
3439            },
3440            N = function (e) {
3441                var t, n;
3442                return e = p(e), t = w(e, "width"), n = w(e, "height"), -1 === t.indexOf("px") && (t = 0), -1 === n.indexOf("px") && (n = 0), {
3443                    w: parseInt(t, 10) || e.offsetWidth || e.clientWidth,
3444                    h: parseInt(n, 10) || e.offsetHeight || e.clientHeight
3445                }
3446            },
3447            E = function (e, t) {
3448                var n;
3449                if (!e) return !1;
3450                if (!Array.isArray(e)) {
3451                    if ("*" === t) return 1 === e.nodeType;
3452                    if (ci.test(t)) {
3453                        var r = t.toLowerCase().split(/,/),
3454                            o = e.nodeName.toLowerCase();
3455                        for (n = r.length - 1; 0 <= n; n--)
3456                            if (r[n] === o) return !0;
3457                        return !1
3458                    }
3459                    if (e.nodeType && 1 !== e.nodeType) return !1
3460                }
3461                var i = Array.isArray(e) ? e : [e];
3462                return 0 < Tt(t, i[0].ownerDocument || i[0], null, i).length
3463            },
3464            S = function (e, t, n, r) {
3465                var o, i = [],
3466                    a = p(e);
3467                for (r = r === undefined, n = n || ("BODY" !== C().nodeName ? C().parentNode : null), Yt.is(t, "string") && (t = "*" === (o = t) ? function (e) {
3468                        return 1 === e.nodeType
3469                    } : function (e) {
3470                        return E(e, o)
3471                    }); a && a !== n && a.nodeType && 9 !== a.nodeType;) {
3472                    if (!t || "function" == typeof t && t(a)) {
3473                        if (!r) return [a];
3474                        i.push(a)
3475                    }
3476                    a = a.parentNode
3477                }
3478                return r ? i : null
3479            },
3480            T = function (e, t, n) {
3481                var r = t;
3482                if (e)
3483                    for ("string" == typeof t && (r = function (e) {
3484                            return E(e, t)
3485                        }), e = e[n]; e; e = e[n])
3486                        if ("function" == typeof r && r(e)) return e;
3487                return null
3488            },
3489            k = function (e, n, r) {
3490                var o, t = "string" == typeof e ? p(e) : e;
3491                if (!t) return !1;
3492                if (Yt.isArray(t) && (t.length || 0 === t.length)) return o = [], ai(t, function (e, t) {
3493                    e && ("string" == typeof e && (e = p(e)), o.push(n.call(r, e, t)))
3494                }), o;
3495                var i = r || c;
3496                return n.call(i, t)
3497            },
3498            A = function (e, t) {
3499                h(e).each(function (e, n) {
3500                    ai(t, function (e, t) {
3501                        y(n, t, e)
3502                    })
3503                })
3504            },
3505            _ = function (e, r) {
3506                var t = h(e);
3507                si ? t.each(function (e, t) {
3508                    if (!1 !== t.canHaveHTML) {
3509                        for (; t.firstChild;) t.removeChild(t.firstChild);
3510                        try {
3511                            t.innerHTML = "<br>" + r, t.removeChild(t.firstChild)
3512                        } catch (n) {
3513                            pn("<div></div>").html("<br>" + r).contents().slice(1).appendTo(t)
3514                        }
3515                        return r
3516                    }
3517                }) : t.html(r)
3518            },
3519            R = function (e, n, r, o, i) {
3520                return k(e, function (e) {
3521                    var t = "string" == typeof n ? a.createElement(n) : n;
3522                    return A(t, r), o && ("string" != typeof o && o.nodeType ? t.appendChild(o) : "string" == typeof o && _(t, o)), i ? t : e.appendChild(t)
3523                })
3524            },
3525            D = function (e, t, n) {
3526                return R(a.createElement(e), e, t, n, !0)
3527            },
3528            B = $o.decode,
3529            O = $o.encodeAllRaw,
3530            P = function (e, t) {
3531                var n = h(e);
3532                return t ? n.each(function () {
3533                    for (var e; e = this.firstChild;) 3 === e.nodeType && 0 === e.data.length ? this.removeChild(e) : this.parentNode.insertBefore(e, this)
3534                }).remove() : n.remove(), 1 < n.length ? n.toArray() : n[0]
3535            },
3536            L = function (e, t, n) {
3537                h(e).toggleClass(t, n).each(function () {
3538                    "" === this.className && pn(this).attr("class", null)
3539                })
3540            },
3541            I = function (t, e, n) {
3542                return k(e, function (e) {
3543                    return Yt.is(e, "array") && (t = t.cloneNode(!0)), n && ai(ui(e.childNodes), function (e) {
3544                        t.appendChild(e)
3545                    }), e.parentNode.replaceChild(t, e)
3546                })
3547            },
3548            M = function () {
3549                return a.createRange()
3550            },
3551            F = function (e, t, n, r) {
3552                if (Yt.isArray(e)) {
3553                    for (var o = e.length; o--;) e[o] = F(e[o], t, n, r);
3554                    return e
3555                }
3556                return !u.collect || e !== a && e !== i || l.push([e, t, n, r]), m.bind(e, t, n, r || V)
3557            },
3558            U = function (e, t, n) {
3559                var r;
3560                if (Yt.isArray(e)) {
3561                    for (r = e.length; r--;) e[r] = U(e[r], t, n);
3562                    return e
3563                }
3564                if (l && (e === a || e === i))
3565                    for (r = l.length; r--;) {
3566                        var o = l[r];
3567                        e !== o[0] || t && t !== o[1] || n && n !== o[2] || m.unbind(o[0], o[1], o[2])
3568                    }
3569                return m.unbind(e, t, n)
3570            },
3571            z = function (e) {
3572                if (e && Do.isElement(e)) {
3573                    var t = e.getAttribute("data-mce-contenteditable");
3574                    return t && "inherit" !== t ? t : "inherit" !== e.contentEditable ? e.contentEditable : null
3575                }
3576                return null
3577            },
3578            V = {
3579                doc: a,
3580                settings: u,
3581                win: i,
3582                files: o,
3583                stdMode: !0,
3584                boxModel: !0,
3585                styleSheetLoader: e,
3586                boundEvents: l,
3587                styles: d,
3588                schema: f,
3589                events: m,
3590                isBlock: function (e) {
3591                    if ("string" == typeof e) return !!n[e];
3592                    if (e) {
3593                        var t = e.nodeType;
3594                        if (t) return !(1 !== t || !n[e.nodeName])
3595                    }
3596                    return !1
3597                },
3598                $: g,
3599                $$: h,
3600                root: null,
3601                clone: function (t, e) {
3602                    if (!si || 1 !== t.nodeType || e) return t.cloneNode(e);
3603                    if (!e) {
3604                        var n = a.createElement(t.nodeName);
3605                        return ai(b(t), function (e) {
3606                            y(n, e.nodeName, v(t, e.nodeName))
3607                        }), n
3608                    }
3609                    return null
3610                },
3611                getRoot: C,
3612                getViewPort: function (e) {
3613                    var t = e || i,
3614                        n = t.document,
3615                        r = n.documentElement;
3616                    return {
3617                        x: t.pageXOffset || r.scrollLeft,
3618                        y: t.pageYOffset || r.scrollTop,
3619                        w: t.innerWidth || r.clientWidth,
3620                        h: t.innerHeight || r.clientHeight
3621                    }
3622                },
3623                getRect: function (e) {
3624                    var t, n;
3625                    return e = p(e), t = x(e), n = N(e), {
3626                        x: t.x,
3627                        y: t.y,
3628                        w: n.w,
3629                        h: n.h
3630                    }
3631                },
3632                getSize: N,
3633                getParent: function (e, t, n) {
3634                    var r = S(e, t, n, !1);
3635                    return r && 0 < r.length ? r[0] : null
3636                },
3637                getParents: S,
3638                get: p,
3639                getNext: function (e, t) {
3640                    return T(e, t, "nextSibling")
3641                },
3642                getPrev: function (e, t) {
3643                    return T(e, t, "previousSibling")
3644                },
3645                select: function (e, t) {
3646                    return Tt(e, p(t) || u.root_element || a, [])
3647                },
3648                is: E,
3649                add: R,
3650                create: D,
3651                createHTML: function (e, t, n) {
3652                    var r, o = "";
3653                    for (r in o += "<" + e, t) t.hasOwnProperty(r) && null !== t[r] && "undefined" != typeof t[r] && (o += " " + r + '="' + O(t[r]) + '"');
3654                    return void 0 !== n ? o + ">" + n + "</" + e + ">" : o + " />"
3655                },
3656                createFragment: function (e) {
3657                    var t, n = a.createElement("div"),
3658                        r = a.createDocumentFragment();
3659                    for (e && (n.innerHTML = e); t = n.firstChild;) r.appendChild(t);
3660                    return r
3661                },
3662                remove: P,
3663                setStyle: function (e, t, n) {
3664                    var r = h(e).css(t, n);
3665                    u.update_styles && di(d, r)
3666                },
3667                getStyle: w,
3668                setStyles: function (e, t) {
3669                    var n = h(e).css(t);
3670                    u.update_styles && di(d, n)
3671                },
3672                removeAllAttribs: function (e) {
3673                    return k(e, function (e) {
3674                        var t, n = e.attributes;
3675                        for (t = n.length - 1; 0 <= t; t--) e.removeAttributeNode(n.item(t))
3676                    })
3677                },
3678                setAttrib: y,
3679                setAttribs: A,
3680                getAttrib: v,
3681                getPos: x,
3682                parseStyle: function (e) {
3683                    return d.parse(e)
3684                },
3685                serializeStyle: function (e, t) {
3686                    return d.serialize(e, t)
3687                },
3688                addStyle: function (e) {
3689                    var t, n;
3690                    if (V !== gi.DOM && a === document) {
3691                        if (r[e]) return;
3692                        r[e] = !0
3693                    }(n = a.getElementById("mceDefaultStyles")) || ((n = a.createElement("style")).id = "mceDefaultStyles", n.type = "text/css", (t = a.getElementsByTagName("head")[0]).firstChild ? t.insertBefore(n, t.firstChild) : t.appendChild(n)), n.styleSheet ? n.styleSheet.cssText += e : n.appendChild(a.createTextNode(e))
3694                },
3695                loadCSS: function (e) {
3696                    var n;
3697                    V === gi.DOM || a !== document ? (e || (e = ""), n = a.getElementsByTagName("head")[0], ai(e.split(","), function (e) {
3698                        var t;
3699                        e = Yt._addCacheSuffix(e), o[e] || (o[e] = !0, t = D("link", {
3700                            rel: "stylesheet",
3701                            href: e
3702                        }), n.appendChild(t))
3703                    })) : gi.DOM.loadCSS(e)
3704                },
3705                addClass: function (e, t) {
3706                    h(e).addClass(t)
3707                },
3708                removeClass: function (e, t) {
3709                    L(e, t, !1)
3710                },
3711                hasClass: function (e, t) {
3712                    return h(e).hasClass(t)
3713                },
3714                toggleClass: L,
3715                show: function (e) {
3716                    h(e).show()
3717                },
3718                hide: function (e) {
3719                    h(e).hide()
3720                },
3721                isHidden: function (e) {
3722                    return "none" === h(e).css("display")
3723                },
3724                uniqueId: function (e) {
3725                    return (e || "mce_") + t++
3726                },
3727                setHTML: _,
3728                getOuterHTML: function (e) {
3729                    var t = "string" == typeof e ? p(e) : e;
3730                    return Do.isElement(t) ? t.outerHTML : pn("<div></div>").append(pn(t).clone()).html()
3731                },
3732                setOuterHTML: function (e, t) {
3733                    h(e).each(function () {
3734                        try {
3735                            if ("outerHTML" in this) return void(this.outerHTML = t)
3736                        } catch (e) {}
3737                        P(pn(this).html(t), !0)
3738                    })
3739                },
3740                decode: B,
3741                encode: O,
3742                insertAfter: function (e, t) {
3743                    var r = p(t);
3744                    return k(e, function (e) {
3745                        var t, n;
3746                        return t = r.parentNode, (n = r.nextSibling) ? t.insertBefore(e, n) : t.appendChild(e), e
3747                    })
3748                },
3749                replace: I,
3750                rename: function (t, e) {
3751                    var n;
3752                    return t.nodeName !== e.toUpperCase() && (n = D(e), ai(b(t), function (e) {
3753                        y(n, e.nodeName, v(t, e.nodeName))
3754                    }), I(n, t, !0)), n || t
3755                },
3756                findCommonAncestor: function (e, t) {
3757                    for (var n, r = e; r;) {
3758                        for (n = t; n && r !== n;) n = n.parentNode;
3759                        if (r === n) break;
3760                        r = r.parentNode
3761                    }
3762                    return !r && e.ownerDocument ? e.ownerDocument.documentElement : r
3763                },
3764                toHex: function (e) {
3765                    return d.toHex(Yt.trim(e))
3766                },
3767                run: k,
3768                getAttribs: b,
3769                isEmpty: function (e, t) {
3770                    var n, r, o, i, a, u, s = 0;
3771                    if (e = e.firstChild) {
3772                        a = new oo(e, e.parentNode), t = t || (f ? f.getNonEmptyElements() : null), i = f ? f.getWhiteSpaceElements() : {};
3773                        do {
3774                            if (o = e.nodeType, Do.isElement(e)) {
3775                                var c = e.getAttribute("data-mce-bogus");
3776                                if (c) {
3777                                    e = a.next("all" === c);
3778                                    continue
3779                                }
3780                                if (u = e.nodeName.toLowerCase(), t && t[u]) {
3781                                    if ("br" === u) {
3782                                        s++, e = a.next();
3783                                        continue
3784                                    }
3785                                    return !1
3786                                }
3787                                for (n = (r = b(e)).length; n--;)
3788                                    if ("name" === (u = r[n].nodeName) || "data-mce-bookmark" === u) return !1
3789                            }
3790                            if (8 === o) return !1;
3791                            if (3 === o && !li.test(e.nodeValue)) return !1;
3792                            if (3 === o && e.parentNode && i[e.parentNode.nodeName] && li.test(e.nodeValue)) return !1;
3793                            e = a.next()
3794                        } while (e)
3795                    }
3796                    return s <= 1
3797                },
3798                createRng: M,
3799                nodeIndex: mi,
3800                split: function (e, t, n) {
3801                    var r, o, i, a = M();
3802                    if (e && t) return a.setStart(e.parentNode, mi(e)), a.setEnd(t.parentNode, mi(t)), r = a.extractContents(), (a = M()).setStart(t.parentNode, mi(t) + 1), a.setEnd(e.parentNode, mi(e) + 1), o = a.extractContents(), (i = e.parentNode).insertBefore(Po.trimNode(V, r), e), n ? i.insertBefore(n, e) : i.insertBefore(t, e), i.insertBefore(Po.trimNode(V, o), e), P(e), n || t
3803                },
3804                bind: F,
3805                unbind: U,
3806                fire: function (e, t, n) {
3807                    return m.fire(e, t, n)
3808                },
3809                getContentEditable: z,
3810                getContentEditableParent: function (e) {
3811                    for (var t = C(), n = null; e && e !== t && null === (n = z(e)); e = e.parentNode);
3812                    return n
3813                },
3814                destroy: function () {
3815                    if (l)
3816                        for (var e = l.length; e--;) {
3817                            var t = l[e];
3818                            m.unbind(t[0], t[1], t[2])
3819                        }
3820                    Tt.setDocument && Tt.setDocument()
3821                },
3822                isChildOf: function (e, t) {
3823                    for (; e;) {
3824                        if (t === e) return !0;
3825                        e = e.parentNode
3826                    }
3827                    return !1
3828                },
3829                dumpRng: function (e) {
3830                    return "startContainer: " + e.startContainer.nodeName + ", startOffset: " + e.startOffset + ", endContainer: " + e.endContainer.nodeName + ", endOffset: " + e.endOffset
3831                }
3832            };
3833        return s = fi(d, u, function () {
3834            return V
3835        }), V
3836    }(ii = gi || (gi = {})).DOM = ii(document), ii.nodeIndex = mi;
3837    var pi = gi,
3838        hi = pi.DOM,
3839        vi = Yt.each,
3840        bi = Yt.grep,
3841        yi = function (e) {
3842            return "function" == typeof e
3843        },
3844        Ci = function () {
3845            var l = {},
3846                o = [],
3847                i = {},
3848                a = [],
3849                f = 0;
3850            this.isDone = function (e) {
3851                return 2 === l[e]
3852            }, this.markDone = function (e) {
3853                l[e] = 2
3854            }, this.add = this.load = function (e, t, n, r) {
3855                l[e] === undefined && (o.push(e), l[e] = 0), t && (i[e] || (i[e] = []), i[e].push({
3856                    success: t,
3857                    failure: r,
3858                    scope: n || this
3859                }))
3860            }, this.remove = function (e) {
3861                delete l[e], delete i[e]
3862            }, this.loadQueue = function (e, t, n) {
3863                this.loadScripts(o, e, t, n)
3864            }, this.loadScripts = function (n, e, t, r) {
3865                var u, s = [],
3866                    c = function (t, e) {
3867                        vi(i[e], function (e) {
3868                            yi(e[t]) && e[t].call(e.scope)
3869                        }), i[e] = undefined
3870                    };
3871                a.push({
3872                    success: e,
3873                    failure: r,
3874                    scope: t || this
3875                }), (u = function () {
3876                    var e = bi(n);
3877                    if (n.length = 0, vi(e, function (e) {
3878                            var t, n, r, o, i, a;
3879                            2 !== l[e] ? 3 !== l[e] ? 1 !== l[e] && (l[e] = 1, f++, t = e, n = function () {
3880                                l[e] = 2, f--, c("success", e), u()
3881                            }, r = function () {
3882                                l[e] = 3, f--, s.push(e), c("failure", e), u()
3883                            }, i = (a = hi).uniqueId(), (o = document.createElement("script")).id = i, o.type = "text/javascript", o.src = Yt._addCacheSuffix(t), o.onload = function () {
3884                                a.remove(i), o && (o.onreadystatechange = o.onload = o = null), n()
3885                            }, o.onerror = function () {
3886                                yi(r) ? r() : "undefined" != typeof console && console.log && console.log("Failed to load script: " + t)
3887                            }, (document.getElementsByTagName("head")[0] || document.body).appendChild(o)) : c("failure", e) : c("success", e)
3888                        }), !f) {
3889                        var t = a.slice(0);
3890                        a.length = 0, vi(t, function (e) {
3891                            0 === s.length ? yi(e.success) && e.success.call(e.scope) : yi(e.failure) && e.failure.call(e.scope, s)
3892                        })
3893                    }
3894                })()
3895            }
3896        };
3897    Ci.ScriptLoader = new Ci;
3898    var xi, wi = Yt.each;
3899
3900    function Ni() {
3901        var r = this,
3902            o = [],
3903            a = {},
3904            u = {},
3905            i = [],
3906            s = function (e) {
3907                var t;
3908                return u[e] && (t = u[e].dependencies), t || []
3909            },
3910            c = function (e, t) {
3911                return "object" == typeof t ? t : "string" == typeof e ? {
3912                    prefix: "",
3913                    resource: t,
3914                    suffix: ""
3915                } : {
3916                    prefix: e.prefix,
3917                    resource: t,
3918                    suffix: e.suffix
3919                }
3920            },
3921            l = function (e, n, t, r) {
3922                var o = s(e);
3923                wi(o, function (e) {
3924                    var t = c(n, e);
3925                    f(t.resource, t, undefined, undefined)
3926                }), t && (r ? t.call(r) : t.call(Ci))
3927            },
3928            f = function (e, t, n, r, o) {
3929                if (!a[e]) {
3930                    var i = "string" == typeof t ? t : t.prefix + t.resource + t.suffix;
3931                    0 !== i.indexOf("/") && -1 === i.indexOf("://") && (i = Ni.baseURL + "/" + i), a[e] = i.substring(0, i.lastIndexOf("/")), u[e] ? l(e, t, n, r) : Ci.ScriptLoader.add(i, function () {
3932                        return l(e, t, n, r)
3933                    }, r, o)
3934                }
3935            };
3936        return {
3937            items: o,
3938            urls: a,
3939            lookup: u,
3940            _listeners: i,
3941            get: function (e) {
3942                return u[e] ? u[e].instance : undefined
3943            },
3944            dependencies: s,
3945            requireLangPack: function (e, t) {
3946                var n = Ni.language;
3947                if (n && !1 !== Ni.languageLoad) {
3948                    if (t)
3949                        if (-1 !== (t = "," + t + ",").indexOf("," + n.substr(0, 2) + ",")) n = n.substr(0, 2);
3950                        else if (-1 === t.indexOf("," + n + ",")) return;
3951                    Ci.ScriptLoader.add(a[e] + "/langs/" + n + ".js")
3952                }
3953            },
3954            add: function (t, e, n) {
3955                o.push(e), u[t] = {
3956                    instance: e,
3957                    dependencies: n
3958                };
3959                var r = W(i, function (e) {
3960                    return e.name === t
3961                });
3962                return i = r.fail, wi(r.pass, function (e) {
3963                    e.callback()
3964                }), e
3965            },
3966            remove: function (e) {
3967                delete a[e], delete u[e]
3968            },
3969            createUrl: c,
3970            addComponents: function (e, t) {
3971                var n = r.urls[e];
3972                wi(t, function (e) {
3973                    Ci.ScriptLoader.add(n + "/" + e)
3974                })
3975            },
3976            load: f,
3977            waitFor: function (e, t) {
3978                u.hasOwnProperty(e) ? t() : i.push({
3979                    name: e,
3980                    callback: t
3981                })
3982            
3982}
3983        }
3984    }(xi = Ni || (Ni = {})).PluginManager = xi(), xi.ThemeManager = xi();
3985    var Ei = function (t, n) {
3986            $r.parent(t).each(function (e) {
3987                e.dom().insertBefore(n.dom(), t.dom())
3988            })
3989        },
3990        Si = function (e, t) {
3991            e.dom().appendChild(t.dom())
3992        },
3993        Ti = {
3994            before: Ei,
3995            after: function (e, t) {
3996                $r.nextSibling(e).fold(function () {
3997                    $r.parent(e).each(function (e) {
3998                        Si(e, t)
3999                    })
4000                }, function (e) {
4001                    Ei(e, t)
4002                })
4003            },
4004            prepend: function (t, n) {
4005                $r.firstChild(t).fold(function () {
4006                    Si(t, n)
4007                }, function (e) {
4008                    t.dom().insertBefore(n.dom(), e.dom())
4009                })
4010            },
4011            append: Si,
4012            appendAt: function (e, t, n) {
4013                $r.child(e, n).fold(function () {
4014                    Si(e, t)
4015                }, function (e) {
4016                    Ei(e, t)
4017                })
4018            },
4019            wrap: function (e, t) {
4020                Ei(e, t), Si(t, e)
4021            }
4022        },
4023        ki = function (t, e) {
4024            F(e, function (e) {
4025                Ti.before(t, e)
4026            })
4027        },
4028        Ai = function (t, e) {
4029            F(e, function (e) {
4030                Ti.append(t, e)
4031            })
4032        },
4033        _i = function (e) {
4034            var t = e.dom();
4035            null !== t.parentNode && t.parentNode.removeChild(t)
4036        },
4037        Ri = {
4038            empty: function (e) {
4039                e.dom().textContent = "", F($r.children(e), function (e) {
4040                    _i(e)
4041                })
4042            },
4043            remove: _i,
4044            unwrap: function (e) {
4045                var t = $r.children(e);
4046                0 < t.length && ki(e, t), _i(e)
4047            }
4048        },
4049        Di = function (n, r) {
4050            var o = null;
4051            return {
4052                cancel: function () {
4053                    null !== o && (clearTimeout(o), o = null)
4054                },
4055                throttle: function () {
4056                    for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
4057                    null === o && (o = setTimeout(function () {
4058                        n.apply(null, e), o = null
4059                    }, r))
4060                }
4061            }
4062        },
4063        Bi = function (e) {
4064            var t = e,
4065                n = function () {
4066                    return t
4067                };
4068            return {
4069                get: n,
4070                set: function (e) {
4071                    t = e
4072                },
4073                clone: function () {
4074                    return Bi(n())
4075                }
4076            }
4077        },
4078        Oi = function (e, t) {
4079            var n = hr.get(e, t);
4080            return n === undefined || "" === n ? [] : n.split(" ")
4081        },
4082        Pi = Oi,
4083        Li = function (e, t, n) {
4084            var r = Oi(e, t).concat([n]);
4085            return hr.set(e, t, r.join(" ")), !0
4086        },
4087        Ii = function (e, t, n) {
4088            var r = U(Oi(e, t), function (e) {
4089                return e !== n
4090            });
4091            return 0 < r.length ? hr.set(e, t, r.join(" ")) : hr.remove(e, t), !1
4092        },
4093        Mi = function (e) {
4094            return Pi(e, "class")
4095        },
4096        Fi = function (e, t) {
4097            return Li(e, "class", t)
4098        },
4099        Ui = function (e, t) {
4100            return Ii(e, "class", t)
4101        },
4102        zi = Mi,
4103        Vi = Fi,
4104        qi = Ui,
4105        Hi = function (e, t) {
4106            return I(Mi(e), t) ? Ui(e, t) : Fi(e, t)
4107        },
4108        ji = function (e) {
4109            return e.dom().classList !== undefined
4110        },
4111        $i = function (e, t) {
4112            return ji(e) && e.dom().classList.contains(t)
4113        },
4114        Wi = {
4115            add: function (e, t) {
4116                ji(e) ? e.dom().classList.add(t) : Vi(e, t)
4117            },
4118            remove: function (e, t) {
4119                var n;
4120                ji(e) ? e.dom().classList.remove(t) : qi(e, t), 0 === (ji(n = e) ? n.dom().classList : zi(n)).length && hr.remove(n, "class")
4121            },
4122            toggle: function (e, t) {
4123                return ji(e) ? e.dom().classList.toggle(t) : Hi(e, t)
4124            },
4125            toggler: function (e, t) {
4126                var n, r, o, i, a, u, s = ji(e),
4127                    c = e.dom().classList;
4128                return n = function () {
4129                    s ? c.remove(t) : qi(e, t)
4130                }, r = function () {
4131                    s ? c.add(t) : Vi(e, t)
4132                }, o = $i(e, t), i = o || !1, {
4133                    on: a = function () {
4134                        r(), i = !0
4135                    },
4136                    off: u = function () {
4137                        n(), i = !1
4138                    },
4139                    toggle: function () {
4140                        (i ? u : a)()
4141                    },
4142                    isOn: function () {
4143                        return i
4144                    }
4145                }
4146            },
4147            has: $i
4148        },
4149        Ki = function (e, t) {
4150            return Lr.all(t, e)
4151        };
4152
4153    function Xi(e, t, n, r, o) {
4154        return e(n, r) ? A.some(n) : O(o) && o(n) ? A.none() : t(n, r, o)
4155    }
4156    var Yi, Gi = function (e, t, n) {
4157            for (var r = e.dom(), o = O(n) ? n : H(!1); r.parentNode;) {
4158                r = r.parentNode;
4159                var i = er.fromDom(r);
vendor: 73,680 bytes, lines 4160-5775
4160                if (t(i)) return A.some(i);
4161                if (o(i)) break
4162            }
4163            return A.none()
4164        },
4165        Ji = function (e, t) {
4166            return V(e.dom().childNodes, q(t, er.fromDom)).map(er.fromDom)
4167        },
4168        Qi = function (e, r) {
4169            var o = function (e) {
4170                for (var t = 0; t < e.childNodes.length; t++) {
4171                    if (r(er.fromDom(e.childNodes[t]))) return A.some(er.fromDom(e.childNodes[t]));
4172                    var n = o(e.childNodes[t]);
4173                    if (n.isSome()) return n
4174                }
4175                return A.none()
4176            };
4177            return o(e.dom())
4178        },
4179        Zi = {
4180            first: function (e) {
4181                return Qi(yr.body(), e)
4182            },
4183            ancestor: Gi,
4184            closest: function (e, t, n) {
4185                return Xi(function (e) {
4186                    return t(e)
4187                }, Gi, e, t, n)
4188            },
4189            sibling: function (t, n) {
4190                var e = t.dom();
4191                return e.parentNode ? Ji(er.fromDom(e.parentNode), function (e) {
4192                    return !Fr.eq(t, e) && n(e)
4193                }) : A.none()
4194            },
4195            child: Ji,
4196            descendant: Qi
4197        },
4198        ea = function (e, t, n) {
4199            return Zi.ancestor(e, function (e) {
4200                return Lr.is(e, t)
4201            }, n)
4202        },
4203        ta = ea,
4204        na = function (e, t) {
4205            return Lr.one(t, e)
4206        },
4207        ra = function (e, t, n) {
4208            return Xi(Lr.is, ea, e, t, n)
4209        },
4210        oa = H("mce-annotation"),
4211        ia = H("data-mce-annotation"),
4212        aa = H("data-mce-annotation-uid"),
4213        ua = function (r, e) {
4214            var t = r.selection.getRng(),
4215                n = er.fromDom(t.startContainer),
4216                o = er.fromDom(r.getBody()),
4217                i = e.fold(function () {
4218                    return "." + oa()
4219                }, function (e) {
4220                    return "[" + ia() + '="' + e + '"]'
4221                }),
4222                a = $r.child(n, t.startOffset).getOr(n),
4223                u = ra(a, i, function (e) {
4224                    return Fr.eq(e, o)
4225                }),
4226                s = function (e, t) {
4227                    return hr.has(e, t) ? A.some(hr.get(e, t)) : A.none()
4228                };
4229            return u.bind(function (e) {
4230                return s(e, "" + aa()).bind(function (n) {
4231                    return s(e, "" + ia()).map(function (e) {
4232                        var t = sa(r, n);
4233                        return {
4234                            uid: n,
4235                            name: e,
4236                            elements: t
4237                        }
4238                    })
4239                })
4240            })
4241        },
4242        sa = function (e, t) {
4243            var n = er.fromDom(e.getBody());
4244            return Ki(n, "[" + aa() + '="' + t + '"]')
4245        },
4246        ca = function (i, e) {
4247            var n, r, o, a = Bi({}),
4248                c = function (e, t) {
4249                    u(e, function (e) {
4250                        return t(e), e
4251                    })
4252                },
4253                u = function (e, t) {
4254                    var n = a.get(),
4255                        r = t(n.hasOwnProperty(e) ? n[e] : {
4256                            listeners: [],
4257                            previous: Bi(A.none())
4258                        });
4259                    n[e] = r, a.set(n)
4260                },
4261                t = (n = function () {
4262                    var e, t, n, r = a.get(),
4263                        o = (e = cr(r), (n = Q.call(e, 0)).sort(t), n);
4264                    F(o, function (e) {
4265                        u(e, function (u) {
4266                            var s = u.previous.get();
4267                            return ua(i, A.some(e)).fold(function () {
4268                                var t;
4269                                s.isSome() && (c(t = e, function (e) {
4270                                    F(e.listeners, function (e) {
4271                                        return e(!1, t)
4272                                    })
4273                                }), u.previous.set(A.none()))
4274                            }, function (e) {
4275                                var t, n, r, o = e.uid,
4276                                    i = e.name,
4277                                    a = e.elements;
4278                                s.is(o) || (n = o, r = a, c(t = i, function (e) {
4279                                    F(e.listeners, function (e) {
4280                                        return e(!0, t, {
4281                                            uid: n,
4282                                            nodes: $(r, function (e) {
4283                                                return e.dom()
4284                                            })
4285                                        })
4286                                    })
4287                                }), u.previous.set(A.some(o)))
4288                            }), {
4289                                previous: u.previous,
4290                                listeners: u.listeners
4291                            }
4292                        })
4293                    })
4294                }, r = 30, o = null, {
4295                    cancel: function () {
4296                        null !== o && (clearTimeout(o), o = null)
4297                    },
4298                    throttle: function () {
4299                        for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
4300                        null !== o && clearTimeout(o), o = setTimeout(function () {
4301                            n.apply(null, e), o = null
4302                        }, r)
4303                    }
4304                });
4305            return i.on("remove", function () {
4306                t.cancel()
4307            }), i.on("nodeChange", function () {
4308                t.throttle()
4309            }), {
4310                addListener: function (e, t) {
4311                    u(e, function (e) {
4312                        return {
4313                            previous: e.previous,
4314                            listeners: e.listeners.concat([t])
4315                        }
4316                    })
4317                }
4318            }
4319        },
4320        la = function (e, n) {
4321            e.on("init", function () {
4322                e.serializer.addNodeFilter("span", function (e) {
4323                    F(e, function (t) {
4324                        var e;
4325                        (e = t, A.from(e.attributes.map[ia()]).bind(n.lookup)).each(function (e) {
4326                            !1 === e.persistent && t.unwrap()
4327                        })
4328                    })
4329                })
4330            })
4331        },
4332        fa = 0,
4333        da = function (t, e) {
4334            F(e, function (e) {
4335                Wi.add(t, e)
4336            })
4337        },
4338        ma = function (e, t) {
4339            return er.fromDom(e.dom().cloneNode(t))
4340        },
4341        ga = function (e) {
4342            return ma(e, !0)
4343        },
4344        pa = function (e) {
4345            return ma(e, !1)
4346        },
4347        ha = ga,
4348        va = [].slice,
4349        ba = function (e) {
4350            for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
4351            var r = va.call(arguments);
4352            return r.length - 1 >= e.length ? e.apply(this, r.slice(1)) : function () {
4353                var e = r.concat([].slice.call(arguments));
4354                return ba.apply(this, e)
4355            }
4356        },
4357        ya = {
4358            constant: function (e) {
4359                return function () {
4360                    return e
4361                }
4362            },
4363            negate: function (t) {
4364                return function (e) {
4365                    return !t(e)
4366                }
4367            },
4368            and: function () {
4369                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
4370                var n = va.call(arguments);
4371                return function (e) {
4372                    for (var t = 0; t < n.length; t++)
4373                        if (!n[t](e)) return !1;
4374                    return !0
4375                }
4376            },
4377            or: function () {
4378                for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
4379                var n = va.call(arguments);
4380                return function (e) {
4381                    for (var t = 0; t < n.length; t++)
4382                        if (n[t](e)) return !0;
4383                    return !1
4384                }
4385            },
4386            curry: ba,
4387            compose: function (t, n) {
4388                return function (e) {
4389                    return t(n(e))
4390                }
4391            },
4392            noop: function () {}
4393        },
4394        Ca = "\ufeff",
4395        xa = function (e) {
4396            return e === Ca
4397        },
4398        wa = Ca,
4399        Na = function (e) {
4400            return e.replace(new RegExp(Ca, "g"), "")
4401        },
4402        Ea = Do.isElement,
4403        Sa = Do.isText,
4404        Ta = function (e) {
4405            return Sa(e) && (e = e.parentNode), Ea(e) && e.hasAttribute("data-mce-caret")
4406        },
4407        ka = function (e) {
4408            return Sa(e) && xa(e.data)
4409        },
4410        Aa = function (e) {
4411            return Ta(e) || ka(e)
4412        },
4413        _a = function (e) {
4414            return e.firstChild !== e.lastChild || !Do.isBr(e.firstChild)
4415        },
4416        Ra = function (e) {
4417            var t = e.container();
4418            return e && Do.isText(t) && t.data.charAt(e.offset()) === wa
4419        },
4420        Da = function (e) {
4421            var t = e.container();
4422            return e && Do.isText(t) && t.data.charAt(e.offset() - 1) === wa
4423        },
4424        Ba = function (e, t, n) {
4425            var r, o, i;
4426            return (r = t.ownerDocument.createElement(e)).setAttribute("data-mce-caret", n ? "before" : "after"), r.setAttribute("data-mce-bogus", "all"), r.appendChild(((i = document.createElement("br")).setAttribute("data-mce-bogus", "1"), i)), o = t.parentNode, n ? o.insertBefore(r, t) : t.nextSibling ? o.insertBefore(r, t.nextSibling) : o.appendChild(r), r
4427        },
4428        Oa = function (e) {
4429            return Sa(e) && e.data[0] === wa
4430        },
4431        Pa = function (e) {
4432            return Sa(e) && e.data[e.data.length - 1] === wa
4433        },
4434        La = function (e) {
4435            return e && e.hasAttribute("data-mce-caret") ? (t = e.getElementsByTagName("br"), n = t[t.length - 1], Do.isBogus(n) && n.parentNode.removeChild(n), e.removeAttribute("data-mce-caret"), e.removeAttribute("data-mce-bogus"), e.removeAttribute("style"), e.removeAttribute("_moz_abspos"), e) : null;
4436            var t, n
4437        },
4438        Ia = Do.isContentEditableTrue,
4439        Ma = Do.isContentEditableFalse,
4440        Fa = Do.isBr,
4441        Ua = Do.isText,
4442        za = Do.matchNodeNames("script style textarea"),
4443        Va = Do.matchNodeNames("img input textarea hr iframe video audio object"),
4444        qa = Do.matchNodeNames("table"),
4445        Ha = Aa,
4446        ja = function (e) {
4447            return !Ha(e) && (Ua(e) ? !za(e.parentNode) : Va(e) || Fa(e) || qa(e) || $a(e))
4448        },
4449        $a = function (e) {
4450            return !1 === (t = e, Do.isElement(t) && "true" === t.getAttribute("unselectable")) && Ma(e);
4451            var t
4452        },
4453        Wa = function (e, t) {
4454            return ja(e) && function (e, t) {
4455                for (e = e.parentNode; e && e !== t; e = e.parentNode) {
4456                    if ($a(e)) return !1;
4457                    if (Ia(e)) return !0
4458                }
4459                return !0
4460            }(e, t)
4461        },
4462        Ka = Math.round,
4463        Xa = function (e) {
4464            return e ? {
4465                left: Ka(e.left),
4466                top: Ka(e.top),
4467                bottom: Ka(e.bottom),
4468                right: Ka(e.right),
4469                width: Ka(e.width),
4470                height: Ka(e.height)
4471            } : {
4472                left: 0,
4473                top: 0,
4474                bottom: 0,
4475                right: 0,
4476                width: 0,
4477                height: 0
4478            }
4479        },
4480        Ya = function (e, t) {
4481            return e = Xa(e), t || (e.left = e.left + e.width), e.right = e.left, e.width = 0, e
4482        },
4483        Ga = function (e, t, n) {
4484            return 0 <= e && e <= Math.min(t.height, n.height) / 2
4485        },
4486        Ja = function (e, t) {
4487            return e.bottom - e.height / 2 < t.top || !(e.top > t.bottom) && Ga(t.top - e.bottom, e, t)
4488        },
4489        Qa = function (e, t) {
4490            return e.top > t.bottom || !(e.bottom < t.top) && Ga(t.bottom - e.top, e, t)
4491        },
4492        Za = function (e) {
4493            var t = e.startContainer,
4494                n = e.startOffset;
4495            return t.hasChildNodes() && e.endOffset === n + 1 ? t.childNodes[n] : null
4496        },
4497        eu = function (e, t) {
4498            return 1 === e.nodeType && e.hasChildNodes() && (t >= e.childNodes.length && (t = e.childNodes.length - 1), e = e.childNodes[t]), e
4499        },
4500        tu = new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"),
4501        nu = function (e) {
4502            return "string" == typeof e && 768 <= e.charCodeAt(0) && tu.test(e)
4503        },
4504        ru = function (e, t) {
4505            for (var n = [], r = 0; r < e.length; r++) {
4506                var o = e[r];
4507                if (!o.isSome()) return A.none();
4508                n.push(o.getOrDie())
4509            }
4510            return A.some(t.apply(null, n))
4511        },
4512        ou = Do.isElement,
4513        iu = ja,
4514        au = Do.matchStyleValues("display", "block table"),
4515        uu = Do.matchStyleValues("float", "left right"),
4516        su = ya.and(ou, iu, ya.negate(uu)),
4517        cu = ya.negate(Do.matchStyleValues("white-space", "pre pre-line pre-wrap")),
4518        lu = Do.isText,
4519        fu = Do.isBr,
4520        du = pi.nodeIndex,
4521        mu = eu,
4522        gu = function (e) {
4523            return "createRange" in e ? e.createRange() : pi.DOM.createRng()
4524        },
4525        pu = function (e) {
4526            return e && /[\r\n\t ]/.test(e)
4527        },
4528        hu = function (e) {
4529            return !!e.setStart && !!e.setEnd
4530        },
4531        vu = function (e) {
4532            var t, n = e.startContainer,
4533                r = e.startOffset;
4534            return !!(pu(e.toString()) && cu(n.parentNode) && Do.isText(n) && (t = n.data, pu(t[r - 1]) || pu(t[r + 1])))
4535        },
4536        bu = function (e) {
4537            return 0 === e.left && 0 === e.right && 0 === e.top && 0 === e.bottom
4538        },
4539        yu = function (e) {
4540            var t, n, r, o, i, a, u, s;
4541            return t = 0 < (n = e.getClientRects()).length ? Xa(n[0]) : Xa(e.getBoundingClientRect()), !hu(e) && fu(e) && bu(t) ? (i = (r = e).ownerDocument, a = gu(i), u = i.createTextNode("\xa0"), (s = r.parentNode).insertBefore(u, r), a.setStart(u, 0), a.setEnd(u, 1), o = Xa(a.getBoundingClientRect()), s.removeChild(u), o) : bu(t) && hu(e) ? function (e) {
4542                var t = e.startContainer,
4543                    n = e.endContainer,
4544                    r = e.startOffset,
4545                    o = e.endOffset;
4546                if (t === n && Do.isText(n) && 0 === r && 1 === o) {
4547                    var i = e.cloneRange();
4548                    return i.setEndAfter(n), yu(i)
4549                }
4550                return null
4551            }(e) : t
4552        },
4553        Cu = function (e, t) {
4554            var n = Ya(e, t);
4555            return n.width = 1, n.right = n.left + 1, n
4556        },
4557        xu = function (e) {
4558            var t, n, r = [],
4559                o = function (e) {
4560                    var t, n;
4561                    0 !== e.height && (0 < r.length && (t = e, n = r[r.length - 1], t.left === n.left && t.top === n.top && t.bottom === n.bottom && t.right === n.right) || r.push(e))
4562                },
4563                i = function (e, t) {
4564                    var n = gu(e.ownerDocument);
4565                    if (t < e.data.length) {
4566                        if (nu(e.data[t])) return r;
4567                        if (nu(e.data[t - 1]) && (n.setStart(e, t), n.setEnd(e, t + 1), !vu(n))) return o(Cu(yu(n), !1)), r
4568                    }
4569                    0 < t && (n.setStart(e, t - 1), n.setEnd(e, t), vu(n) || o(Cu(yu(n), !1))), t < e.data.length && (n.setStart(e, t), n.setEnd(e, t + 1), vu(n) || o(Cu(yu(n), !0)))
4570                };
4571            if (lu(e.container())) return i(e.container(), e.offset()), r;
4572            if (ou(e.container()))
4573                if (e.isAtEnd()) n = mu(e.container(), e.offset()), lu(n) && i(n, n.data.length), su(n) && !fu(n) && o(Cu(yu(n), !1));
4574                else {
4575                    if (n = mu(e.container(), e.offset()), lu(n) && i(n, 0), su(n) && e.isAtEnd()) return o(Cu(yu(n), !1)), r;
4576                    t = mu(e.container(), e.offset() - 1), su(t) && !fu(t) && (au(t) || au(n) || !su(n)) && o(Cu(yu(t), !1)), su(n) && o(Cu(yu(n), !0))
4577                }
4578            return r
4579        };
4580
4581    function wu(t, n, e) {
4582        var r = function () {
4583            return e || (e = xu(wu(t, n))), e
4584        };
4585        return {
4586            container: ya.constant(t),
4587            offset: ya.constant(n),
4588            toRange: function () {
4589                var e;
4590                return (e = gu(t.ownerDocument)).setStart(t, n), e.setEnd(t, n), e
4591            },
4592            getClientRects: r,
4593            isVisible: function () {
4594                return 0 < r().length
4595            },
4596            isAtStart: function () {
4597                return lu(t), 0 === n
4598            },
4599            isAtEnd: function () {
4600                return lu(t) ? n >= t.data.length : n >= t.childNodes.length
4601            },
4602            isEqual: function (e) {
4603                return e && t === e.container() && n === e.offset()
4604            },
4605            getNode: function (e) {
4606                return mu(t, e ? n - 1 : n)
4607            }
4608        }
4609    }(Yi = wu || (wu = {})).fromRangeStart = function (e) {
4610        return Yi(e.startContainer, e.startOffset)
4611    }, Yi.fromRangeEnd = function (e) {
4612        return Yi(e.endContainer, e.endOffset)
4613    }, Yi.after = function (e) {
4614        return Yi(e.parentNode, du(e) + 1)
4615    }, Yi.before = function (e) {
4616        return Yi(e.parentNode, du(e))
4617    }, Yi.isAbove = function (e, t) {
4618        return ru([ee(t.getClientRects()), te(e.getClientRects())], Ja).getOr(!1)
4619    }, Yi.isBelow = function (e, t) {
4620        return ru([te(t.getClientRects()), ee(e.getClientRects())], Qa).getOr(!1)
4621    }, Yi.isAtStart = function (e) {
4622        return !!e && e.isAtStart()
4623    }, Yi.isAtEnd = function (e) {
4624        return !!e && e.isAtEnd()
4625    }, Yi.isTextPosition = function (e) {
4626        return !!e && Do.isText(e.container())
4627    }, Yi.isElementPosition = function (e) {
4628        return !1 === Yi.isTextPosition(e)
4629    };
4630    var Nu, Eu, Su = wu,
4631        Tu = Do.isText,
4632        ku = Do.isBogus,
4633        Au = pi.nodeIndex,
4634        _u = function (e) {
4635            var t = e.parentNode;
4636            return ku(t) ? _u(t) : t
4637        },
4638        Ru = function (e) {
4639            return e ? jt.reduce(e.childNodes, function (e, t) {
4640                return ku(t) && "BR" !== t.nodeName ? e = e.concat(Ru(t)) : e.push(t), e
4641            }, []) : []
4642        },
4643        Du = function (t) {
4644            return function (e) {
4645                return t === e
4646            }
4647        },
4648        Bu = function (e) {
4649            var t, r, n, o;
4650            return (Tu(e) ? "text()" : e.nodeName.toLowerCase()) + "[" + (r = Ru(_u(t = e)), n = jt.findIndex(r, Du(t), t), r = r.slice(0, n + 1), o = jt.reduce(r, function (e, t, n) {
4651                return Tu(t) && Tu(r[n - 1]) && e++, e
4652            }, 0), r = jt.filter(r, Do.matchNodeNames(t.nodeName)), (n = jt.findIndex(r, Du(t), t)) - o) + "]"
4653        },
4654        Ou = function (e, t) {
4655            var n, r, o, i, a, u = [];
4656            return n = t.container(), r = t.offset(), Tu(n) ? o = function (e, t) {
4657                for (;
4658                    (e = e.previousSibling) && Tu(e);) t += e.data.length;
4659                return t
4660            }(n, r) : (r >= (i = n.childNodes).length ? (o = "after", r = i.length - 1) : o = "before", n = i[r]), u.push(Bu(n)), a = function (e, t, n) {
4661                var r = [];
4662                for (t = t.parentNode; !(t === e || n && n(t)); t = t.parentNode) r.push(t);
4663                return r
4664            }(e, n), a = jt.filter(a, ya.negate(Do.isBogus)), (u = u.concat(jt.map(a, function (e) {
4665                return Bu(e)
4666            }))).reverse().join("/") + "," + o
4667        },
4668        Pu = function (e, t) {
4669            var n, r, o;
4670            return t ? (t = (n = t.split(","))[0].split("/"), o = 1 < n.length ? n[1] : "before", (r = jt.reduce(t, function (e, t) {
4671                return (t = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(t)) ? ("text()" === t[1] && (t[1] = "#text"), n = e, r = t[1], o = parseInt(t[2], 10), i = Ru(n), i = jt.filter(i, function (e, t) {
4672                    return !Tu(e) || !Tu(i[t - 1])
4673                }), (i = jt.filter(i, Do.matchNodeNames(r)))[o]) : null;
4674                var n, r, o, i
4675            }, e)) ? Tu(r) ? function (e, t) {
4676                for (var n, r = e, o = 0; Tu(r);) {
4677                    if (n = r.data.length, o <= t && t <= o + n) {
4678                        e = r, t -= o;
4679                        break
4680                    }
4681                    if (!Tu(r.nextSibling)) {
4682                        e = r, t = n;
4683                        break
4684                    }
4685                    o += n, r = r.nextSibling
4686                }
4687                return Tu(e) && t > e.data.length && (t = e.data.length), Su(e, t)
4688            }(r, parseInt(o, 10)) : (o = "after" === o ? Au(r) + 1 : Au(r), Su(r.parentNode, o)) : null) : null
4689        },
4690        Lu = Do.isContentEditableFalse,
4691        Iu = function (e, t, n, r, o) {
4692            var i, a = r[o ? "startContainer" : "endContainer"],
4693                u = r[o ? "startOffset" : "endOffset"],
4694                s = [],
4695                c = 0,
4696                l = e.getRoot();
4697            for (Do.isText(a) ? s.push(n ? function (e, t, n) {
4698                    var r, o;
4699                    for (o = e(t.data.slice(0, n)).length, r = t.previousSibling; r && Do.isText(r); r = r.previousSibling) o += e(r.data).length;
4700                    return o
4701                }(t, a, u) : u) : (u >= (i = a.childNodes).length && i.length && (c = 1, u = Math.max(0, i.length - 1)), s.push(e.nodeIndex(i[u], n) + c)); a && a !== l; a = a.parentNode) s.push(e.nodeIndex(a, n));
4702            return s
4703        },
4704        Mu = function (e) {
4705            Do.isText(e) && 0 === e.data.length && e.parentNode.removeChild(e)
4706        },
4707        Fu = function (e, t, n) {
4708            var r = 0;
4709            return Yt.each(e.select(t), function (e) {
4710                if ("all" !== e.getAttribute("data-mce-bogus")) return e !== n && void r++
4711            }), r
4712        },
4713        Uu = function (e, t) {
4714            var n, r, o, i = t ? "start" : "end";
4715            n = e[i + "Container"], r = e[i + "Offset"], Do.isElement(n) && "TR" === n.nodeName && (n = (o = n.childNodes)[Math.min(t ? r : r - 1, o.length - 1)]) && (r = t ? 0 : n.childNodes.length, e["set" + (t ? "Start" : "End")](n, r))
4716        },
4717        zu = function (e) {
4718            return Uu(e, !0), Uu(e, !1), e
4719        },
4720        Vu = function (e, t) {
4721            var n;
4722            if (Do.isElement(e) && (e = eu(e, t), Lu(e))) return e;
4723            if (Aa(e)) {
4724                if (Do.isText(e) && Ta(e) && (e = e.parentNode), n = e.previousSibling, Lu(n)) return n;
4725                if (n = e.nextSibling, Lu(n)) return n
4726            }
4727        },
4728        qu = function (e, t, n) {
4729            var r = n.getNode(),
4730                o = r ? r.nodeName : null,
4731                i = n.getRng();
4732            if (Lu(r) || "IMG" === o) return {
4733                name: o,
4734                index: Fu(n.dom, o, r)
4735            };
4736            var a, u, s, c, l, f, d, m = Vu((a = i).startContainer, a.startOffset) || Vu(a.endContainer, a.endOffset);
4737            return m ? {
4738                name: o = m.tagName,
4739                index: Fu(n.dom, o, m)
4740            } : (u = e, c = t, l = i, f = (s = n).dom, (d = {}).start = Iu(f, u, c, l, !0), s.isCollapsed() || (d.end = Iu(f, u, c, l, !1)), d)
4741        },
4742        Hu = function (e, t, n) {
4743            var r = {
4744                "data-mce-type": "bookmark",
4745                id: t,
4746                style: "overflow:hidden;line-height:0px"
4747            };
4748            return n ? e.create("span", r, "&#xFEFF;") : e.create("span", r)
4749        },
4750        ju = function (e, t) {
4751            var n = e.dom,
4752                r = e.getRng(),
4753                o = n.uniqueId(),
4754                i = e.isCollapsed(),
4755                a = e.getNode(),
4756                u = a.nodeName;
4757            if ("IMG" === u) return {
4758                name: u,
4759                index: Fu(n, u, a)
4760            };
4761            var s = zu(r.cloneRange());
4762            if (!i) {
4763                s.collapse(!1);
4764                var c = Hu(n, o + "_end", t);
4765                s.insertNode(c), Mu(c.nextSibling)
4766            }(r = zu(r)).collapse(!0);
4767            var l = Hu(n, o + "_start", t);
4768            return r.insertNode(l), Mu(l.previousSibling), Mu(l.nextSibling), e.moveToBookmark({
4769                id: o,
4770                keep: 1
4771            }), {
4772                id: o
4773            }
4774        },
4775        $u = {
4776            getBookmark: function (e, t, n) {
4777                return 2 === t ? qu(Na, n, e) : 3 === t ? (o = (r = e).getRng(), {
4778                    start: Ou(r.dom.getRoot(), Su.fromRangeStart(o)),
4779                    end: Ou(r.dom.getRoot(), Su.fromRangeEnd(o))
4780                }) : t ? {
4781                    rng: e.getRng()
4782                } : ju(e, !1);
4783                var r, o
4784            },
4785            getUndoBookmark: b(qu, j, !0),
4786            getPersistentBookmark: ju
4787        },
4788        Wu = "_mce_caret",
4789        Ku = function (e) {
4790            return Do.isElement(e) && e.id === Wu
4791        },
4792        Xu = function (e, t) {
4793            for (; t && t !== e;) {
4794                if (t.id === Wu) return t;
4795                t = t.parentNode
4796            }
4797            return null
4798        },
4799        Yu = Do.isElement,
4800        Gu = Do.isText,
4801        Ju = function (e) {
4802            var t = e.parentNode;
4803            t && t.removeChild(e)
4804        },
4805        Qu = function (e, t) {
4806            0 === t.length ? Ju(e) : e.nodeValue = t
4807        },
4808        Zu = function (e) {
4809            var t = Na(e);
4810            return {
4811                count: e.length - t.length,
4812                text: t
4813            }
4814        },
4815        es = function (e, t) {
4816            return rs(e), t
4817        },
4818        ts = function (e, t) {
4819            var n, r, o, i = t.container(),
4820                a = (n = ne(i.childNodes), r = e, o = L(n, r), -1 === o ? A.none() : A.some(o)).map(function (e) {
4821                    return e < t.offset() ? Su(i, t.offset() - 1) : t
4822                }).getOr(t);
4823            return rs(e), a
4824        },
4825        ns = function (e, t) {
4826            return Gu(e) && t.container() === e ? (r = t, o = Zu((n = e).data.substr(0, r.offset())), i = Zu(n.data.substr(r.offset())), 0 < (a = o.text + i.text).length ? (Qu(n, a), Su(n, r.offset() - o.count)) : r) : es(e, t);
4827            var n, r, o, i, a
4828        },
4829        rs = function (e) {
4830            if (Yu(e) && Aa(e) && (_a(e) ? e.removeAttribute("data-mce-caret") : Ju(e)), Gu(e)) {
4831                var t = Na(function (e) {
4832                    try {
4833                        return e.nodeValue
4834                    } catch (t) {
4835                        return ""
4836                    }
4837                }(e));
4838                Qu(e, t)
4839            }
4840        },
4841        os = {
4842            removeAndReposition: function (e, t) {
4843                return Su.isTextPosition(t) ? ns(e, t) : (n = e, (r = t).container() === n.parentNode ? ts(n, r) : es(n, r));
4844                var n, r
4845            },
4846            remove: rs
4847        },
4848        is = Do.isContentEditableTrue,
4849        as = Do.isContentEditableFalse,
4850        us = function (e, t, n, r, o) {
4851            return t._selectionOverrides.showCaret(e, n, r, o)
4852        },
4853        ss = function (e, t) {
4854            var n, r;
4855            return e.fire("BeforeObjectSelected", {
4856                target: t
4857            }).isDefaultPrevented() ? null : ((r = (n = t).ownerDocument.createRange()).selectNode(n), r)
4858        },
4859        cs = function (e, t, n) {
4860            var r = Gc(1, e.getBody(), t),
4861                o = Su.fromRangeStart(r),
4862                i = o.getNode();
4863            if (as(i)) return us(1, e, i, !o.isAtEnd(), !1);
4864            var a = o.getNode(!0);
4865            if (as(a)) return us(1, e, a, !1, !1);
4866            var u = e.dom.getParent(o.getNode(), function (e) {
4867                return as(e) || is(e)
4868            });
4869            return as(u) ? us(1, e, u, !1, n) : null
4870        },
4871        ls = function (e, t, n) {
4872            if (!t || !t.collapsed) return t;
4873            var r = cs(e, t, n);
4874            return r || t
4875        };
4876    (Eu = Nu || (Nu = {}))[Eu.Backwards = -1] = "Backwards", Eu[Eu.Forwards = 1] = "Forwards";
4877    var fs, ds, ms = Do.isContentEditableFalse,
4878        gs = Do.isText,
4879        ps = Do.isElement,
4880        hs = Do.isBr,
4881        vs = ja,
4882        bs = function (e) {
4883            return Va(e) || !!$a(t = e) && !0 !== jt.reduce(t.getElementsByTagName("*"), function (e, t) {
4884                return e || Ia(t)
4885            }, !1);
4886            var t
4887        },
4888        ys = Wa,
4889        Cs = function (e, t) {
4890            return e.hasChildNodes() && t < e.childNodes.length ? e.childNodes[t] : null
4891        },
4892        xs = function (e, t) {
4893            if (Uc(e)) {
4894                if (vs(t.previousSibling) && !gs(t.previousSibling)) return Su.before(t);
4895                if (gs(t)) return Su(t, 0)
4896            }
4897            if (zc(e)) {
4898                if (vs(t.nextSibling) && !gs(t.nextSibling)) return Su.after(t);
4899                if (gs(t)) return Su(t, t.data.length)
4900            }
4901            return zc(e) ? hs(t) ? Su.before(t) : Su.after(t) : Su.before(t)
4902        },
4903        ws = function (e, t, n) {
4904            var r, o, i, a, u;
4905            if (!ps(n) || !t) return null;
4906            if (t.isEqual(Su.after(n)) && n.lastChild) {
4907                if (u = Su.after(n.lastChild), zc(e) && vs(n.lastChild) && ps(n.lastChild)) return hs(n.lastChild) ? Su.before(n.lastChild) : u
4908            } else u = t;
4909            var s, c, l, f = u.container(),
4910                d = u.offset();
4911            if (gs(f)) {
4912                if (zc(e) && 0 < d) return Su(f, --d);
4913                if (Uc(e) && d < f.length) return Su(f, ++d);
4914                r = f
4915            } else {
4916                if (zc(e) && 0 < d && (o = Cs(f, d - 1), vs(o))) return !bs(o) && (i = qc(o, e, ys, o)) ? gs(i) ? Su(i, i.data.length) : Su.after(i) : gs(o) ? Su(o, o.data.length) : Su.before(o);
4917                if (Uc(e) && d < f.childNodes.length && (o = Cs(f, d), vs(o))) return hs(o) && n.lastChild === o ? null : (s = o, c = n, Do.isBr(s) && (l = ws(1, Su.after(s), c)) && !jc(Su.before(s), Su.before(l), c) ? ws(e, Su.after(o), n) : !bs(o) && (i = qc(o, e, ys, o)) ? gs(i) ? Su(i, 0) : Su.before(i) : gs(o) ? Su(o, 0) : Su.after(o));
4918                r = o || u.getNode()
4919            }
4920            return (Uc(e) && u.isAtEnd() || zc(e) && u.isAtStart()) && (r = qc(r, e, ya.constant(!0), n, !0), ys(r, n)) ? xs(e, r) : (o = qc(r, e, ys, n), !(a = jt.last(jt.filter(function (e, t) {
4921                for (var n = []; e && e !== t;) n.push(e), e = e.parentNode;
4922                return n
4923            }(f, n), ms))) || o && a.contains(o) ? o ? xs(e, o) : null : u = Uc(e) ? Su.after(a) : Su.before(a))
4924        },
4925        Ns = function (t) {
4926            return {
4927                next: function (e) {
4928                    return ws(Nu.Forwards, e, t)
4929                },
4930                prev: function (e) {
4931                    return ws(Nu.Backwards, e, t)
4932                }
4933            }
4934        };
4935    (ds = fs || (fs = {}))[ds.Br = 0] = "Br", ds[ds.Block = 1] = "Block", ds[ds.Wrap = 2] = "Wrap", ds[ds.Eol = 3] = "Eol";
4936    var Es, Ss, Ts, ks, As, _s = function (e, t) {
4937            return e === Nu.Backwards ? t.reverse() : t
4938        },
4939        Rs = function (e, t, n, r) {
4940            for (var o, i, a, u, s, c, l = Ns(n), f = r, d = []; f && (s = l, c = f, o = t === Nu.Forwards ? s.next(c) : s.prev(c));) {
4941                if (Do.isBr(o.getNode(!1))) return t === Nu.Forwards ? {
4942                    positions: _s(t, d).concat([o]),
4943                    breakType: fs.Br,
4944                    breakAt: A.some(o)
4945                } : {
4946                    positions: _s(t, d),
4947                    breakType: fs.Br,
4948                    breakAt: A.some(o)
4949                };
4950                if (o.isVisible()) {
4951                    if (e(f, o)) {
4952                        var m = (i = t, a = f, u = o, Do.isBr(u.getNode(i === Nu.Forwards)) ? fs.Br : !1 === jc(a, u) ? fs.Block : fs.Wrap);
4953                        return {
4954                            positions: _s(t, d),
4955                            breakType: m,
4956                            breakAt: A.some(o)
4957                        }
4958                    }
4959                    d.push(o), f = o
4960                } else f = o
4961            }
4962            return {
4963                positions: _s(t, d),
4964                breakType: fs.Eol,
4965                breakAt: A.none()
4966            }
4967        },
4968        Ds = function (n, r, o, e) {
4969            return r(o, e).breakAt.map(function (e) {
4970                var t = r(o, e).positions;
4971                return n === Nu.Backwards ? t.concat(e) : [e].concat(t)
4972            }).getOr([])
4973        },
4974        Bs = function (e, i) {
4975            return z(e, function (e, o) {
4976                return e.fold(function () {
4977                    return A.some(o)
4978                }, function (r) {
4979                    return ru([ee(r.getClientRects()), ee(o.getClientRects())], function (e, t) {
4980                        var n = Math.abs(i - e.left);
4981                        return Math.abs(i - t.left) <= n ? o : r
4982                    }).or(e)
4983                })
4984            }, A.none())
4985        },
4986        Os = function (t, e) {
4987            return ee(e.getClientRects()).bind(function (e) {
4988                return Bs(t, e.left)
4989            })
4990        },
4991        Ps = b(Rs, wu.isAbove, -1),
4992        Ls = b(Rs, wu.isBelow, 1),
4993        Is = b(Ds, -1, Ps),
4994        Ms = b(Ds, 1, Ls),
4995        Fs = function (e, t, n, r, o) {
4996            var i, a, u, s, c = Ki(er.fromDom(n), "td,th,caption").map(function (e) {
4997                    return e.dom()
4998                }),
4999                l = U((i = e, G(c, function (e) {
5000                    var t, n, r = (t = Xa(e.getBoundingClientRect()), n = -1, {
5001                        left: t.left - n,
5002                        top: t.top - n,
5003                        right: t.right + 2 * n,
5004                        bottom: t.bottom + 2 * n,
5005                        width: t.width + n,
5006                        height: t.height + n
5007                    });
5008                    return [{
5009                        x: r.left,
5010                        y: i(r),
5011                        cell: e
5012                    }, {
5013                        x: r.right,
5014                        y: i(r),
5015                        cell: e
5016                    }]
5017                })), function (e) {
5018                    return t(e, o)
5019                });
5020            return (a = l, u = r, s = o, z(a, function (e, r) {
5021                return e.fold(function () {
5022                    return A.some(r)
5023                }, function (e) {
5024                    var t = Math.sqrt(Math.abs(e.x - u) + Math.abs(e.y - s)),
5025                        n = Math.sqrt(Math.abs(r.x - u) + Math.abs(r.y - s));
5026                    return A.some(n < t ? r : e)
5027                })
5028            }, A.none())).map(function (e) {
5029                return e.cell
5030            })
5031        },
5032        Us = b(Fs, function (e) {
5033            return e.bottom
5034        }, function (e, t) {
5035            return e.y < t
5036        }),
5037        zs = b(Fs, function (e) {
5038            return e.top
5039        }, function (e, t) {
5040            return e.y > t
5041        }),
5042        Vs = function (t, n) {
5043            return ee(n.getClientRects()).bind(function (e) {
5044                return Us(t, e.left, e.top)
5045            }).bind(function (e) {
5046                return Os((t = e, fl.lastPositionIn(t).map(function (e) {
5047                    return Ps(t, e).positions.concat(e)
5048                }).getOr([])), n);
5049                var t
5050            })
5051        },
5052        qs = function (t, n) {
5053            return te(n.getClientRects()).bind(function (e) {
5054                return zs(t, e.left, e.top)
5055            }).bind(function (e) {
5056                return Os((t = e, fl.firstPositionIn(t).map(function (e) {
5057                    return [e].concat(Ls(t, e).positions)
5058                }).getOr([])), n);
5059                var t
5060            })
5061        },
5062        Hs = function (e) {
5063            for (var t = 0, n = 0, r = e; r && r.nodeType;) t += r.offsetLeft || 0, n += r.offsetTop || 0, r = r.offsetParent;
5064            return {
5065                x: t,
5066                y: n
5067            }
5068        },
5069        js = function (e, t, n) {
5070            var r, o, i, a, u, s = e.dom,
5071                c = s.getRoot(),
5072                l = 0;
5073            if (u = {
5074                    elm: t,
5075                    alignToTop: n
5076                }, e.fire("scrollIntoView", u), !u.isDefaultPrevented() && Do.isElement(t)) {
5077                if (!1 === n && (l = t.offsetHeight), "BODY" !== c.nodeName) {
5078                    var f = e.selection.getScrollContainer();
5079                    if (f) return r = Hs(t).y - Hs(f).y + l, a = f.clientHeight, void((r < (i = f.scrollTop) || i + a < r + 25) && (f.scrollTop = r < i ? r : r - a + 25))
5080                }
5081                o = s.getViewPort(e.getWin()), r = s.getPos(t).y + l, i = o.y, a = o.h, (r < o.y || i + a < r + 25) && e.getWin().scrollTo(0, r < i ? r : r - a + 25)
5082            }
5083        },
5084        $s = function (d, e) {
5085            ee(wu.fromRangeStart(e).getClientRects()).each(function (e) {
5086                var t, n, r, o, i, a, u, s, c, l = function (e) {
5087                        if (e.inline) return e.getBody().getBoundingClientRect();
5088                        var t = e.getWin();
5089                        return {
5090                            left: 0,
5091                            right: t.innerWidth,
5092                            top: 0,
5093                            bottom: t.innerHeight,
5094                            width: t.innerWidth,
5095                            height: t.innerHeight
5096                        }
5097                    }(d),
5098                    f = {
5099                        x: (i = t = l, a = n = e, a.left > i.left && a.right < i.right ? 0 : a.left < i.left ? a.left - i.left : a.right - i.right),
5100                        y: (r = t, o = n, o.top > r.top && o.bottom < r.bottom ? 0 : o.top < r.top ? o.top - r.top : o.bottom - r.bottom)
5101                    };
5102                s = 0 !== f.x ? 0 < f.x ? f.x + 4 : f.x - 4 : 0, c = 0 !== f.y ? 0 < f.y ? f.y + 4 : f.y - 4 : 0, (u = d).inline ? (u.getBody().scrollLeft += s, u.getBody().scrollTop += c) : u.getWin().scrollBy(s, c)
5103            })
5104        },
5105        Ws = function (e, t, n) {
5106            var r = e.getParam(t, n);
5107            if (-1 !== r.indexOf("=")) {
5108                var o = e.getParam(t, "", "hash");
5109                return o.hasOwnProperty(e.id) ? o[e.id] : n
5110            }
5111            return r
5112        },
5113        Ks = function (e) {
5114            return e.getParam("iframe_attrs", {})
5115        },
5116        Xs = function (e) {
5117            return e.getParam("doctype", "<!DOCTYPE html>")
5118        },
5119        Ys = function (e) {
5120            return e.getParam("document_base_url", "")
5121        },
5122        Gs = function (e) {
5123            return Ws(e, "body_id", "tinymce")
5124        },
5125        Js = function (e) {
5126            return Ws(e, "body_class", "")
5127        },
5128        Qs = function (e) {
5129            return e.getParam("content_security_policy", "")
5130        },
5131        Zs = function (e) {
5132            return e.getParam("br_in_pre", !0)
5133        },
5134        ec = function (e) {
5135            if (e.getParam("force_p_newlines", !1)) return "p";
5136            var t = e.getParam("forced_root_block", "p");
5137            return !1 === t ? "" : t
5138        },
5139        tc = function (e) {
5140            return e.getParam("forced_root_block_attrs", {})
5141        },
5142        nc = function (e) {
5143            return e.getParam("br_newline_selector", ".mce-toc h2,figcaption,caption")
5144        },
5145        rc = function (e) {
5146            return e.getParam("no_newline_selector", "")
5147        },
5148        oc = function (e) {
5149            return e.getParam("keep_styles", !0)
5150        },
5151        ic = function (e) {
5152            return e.getParam("end_container_on_empty_block", !1)
5153        },
5154        ac = function (e) {
5155            return Yt.explode(e.getParam("font_size_style_values", ""))
5156        },
5157        uc = function (e) {
5158            return Yt.explode(e.getParam("font_size_classes", ""))
5159        },
5160        sc = function (e) {
5161            return e.getParam("images_dataimg_filter", H(!0), "function")
5162        },
5163        cc = function (e) {
5164            return e.getParam("automatic_uploads", !0, "boolean")
5165        },
5166        lc = function (e) {
5167            return e.getParam("images_reuse_filename", !1, "boolean")
5168        },
5169        fc = function (e) {
5170            return e.getParam("images_replace_blob_uris", !0, "boolean")
5171        },
5172        dc = function (e) {
5173            return e.getParam("images_upload_url", "", "string")
5174        },
5175        mc = function (e) {
5176            return e.getParam("images_upload_base_path", "", "string")
5177        },
5178        gc = function (e) {
5179            return e.getParam("images_upload_credentials", !1, "boolean")
5180        },
5181        pc = function (e) {
5182            return e.getParam("images_upload_handler", null, "function")
5183        },
5184        hc = Qn.detect().browser,
5185        vc = function () {
5186            return hc.isIE() || hc.isEdge() || hc.isFirefox()
5187        },
5188        bc = function (e, t) {
5189            e.selection.setRng(t), $s(e, t)
5190        },
5191        yc = function (e, t, n) {
5192            var r, o, i, a, u = e(t, n);
5193            return (a = u).breakType === fs.Wrap && 0 === a.positions.length || !Do.isBr(n.getNode()) && (i = u).breakType === fs.Br && 1 === i.positions.length ? (r = e, o = t, !u.breakAt.map(function (e) {
5194                return r(o, e).breakAt.isSome()
5195            }).getOr(!1)) : u.breakAt.isNone()
5196        },
5197        Cc = ya.curry(yc, Ps),
5198        xc = ya.curry(yc, Ls),
5199        wc = function (e, t, n, r) {
5200            var o, i, a, u, s = e.selection.getRng(),
5201                c = t ? 1 : -1;
5202            if (vc() && (o = t, i = s, a = n, u = Su.fromRangeStart(i), fl.positionIn(!o, a).map(function (e) {
5203                    return e.isEqual(u)
5204                }).getOr(!1))) {
5205                var l = us(c, e, n, !t, !0);
5206                return bc(e, l), !0
5207            }
5208            return !1
5209        },
5210        Nc = function (e, t) {
5211            var n = t.getNode(e);
5212            return Do.isElement(n) && "TABLE" === n.nodeName ? A.some(n) : A.none()
5213        },
5214        Ec = function (u, s, c) {
5215            var e = Nc(!!s, c),
5216                t = !1 === s;
5217            e.fold(function () {
5218                return bc(u, c.toRange())
5219            }, function (a) {
5220                return fl.positionIn(t, u.getBody()).filter(function (e) {
5221                    return e.isEqual(c)
5222                }).fold(function () {
5223                    return bc(u, c.toRange())
5224                }, function (e) {
5225                    return n = s, o = a, t = c, void((i = ec(r = u)) ? r.undoManager.transact(function () {
5226                        var e = er.fromTag(i);
5227                        hr.setAll(e, tc(r)), Ti.append(e, er.fromTag("br")), n ? Ti.after(er.fromDom(o), e) : Ti.before(er.fromDom(o), e);
5228                        var t = r.dom.createRng();
5229                        t.setStart(e.dom(), 0), t.setEnd(e.dom(), 0), bc(r, t)
5230                    }) : bc(r, t.toRange()));
5231                    var n, r, o, t, i
5232                })
5233            })
5234        },
5235        Sc = function (e, t, n, r) {
5236            var o, i, a, u, s, c, l = e.selection.getRng(),
5237                f = Su.fromRangeStart(l),
5238                d = e.getBody();
5239            if (!t && Cc(r, f)) {
5240                var m = (u = d, Vs(s = n, c = f).orThunk(function () {
5241                    return ee(c.getClientRects()).bind(function (e) {
5242                        return Bs(Is(u, Su.before(s)), e.left)
5243                    })
5244                }).getOr(Su.before(s)));
5245                return Ec(e, t, m), !0
5246            }
5247            return !(!t || !xc(r, f)) && (o = d, m = qs(i = n, a = f).orThunk(function () {
5248                return ee(a.getClientRects()).bind(function (e) {
5249                    return Bs(Ms(o, Su.after(i)), e.left)
5250                })
5251            }).getOr(Su.after(i)), Ec(e, t, m), !0)
5252        },
5253        Tc = function (t, n) {
5254            return function () {
5255                return A.from(t.dom.getParent(t.selection.getNode(), "td,th")).bind(function (e) {
5256                    return A.from(t.dom.getParent(e, "table")).map(function (e) {
5257                        return wc(t, n, e)
5258                    })
5259                }).getOr(!1)
5260            }
5261        },
5262        kc = function (n, r) {
5263            return function () {
5264                return A.from(n.dom.getParent(n.selection.getNode(), "td,th")).bind(function (t) {
5265                    return A.from(n.dom.getParent(t, "table")).map(function (e) {
5266                        return Sc(n, r, e, t)
5267                    })
5268                }).getOr(!1)
5269            }
5270        },
5271        Ac = Do.isContentEditableFalse,
5272        _c = function (e, t, n) {
5273            var r, o, i, a, u, s = Ya(t.getBoundingClientRect(), n);
5274            return "BODY" === e.tagName ? (r = e.ownerDocument.documentElement, o = e.scrollLeft || r.scrollLeft, i = e.scrollTop || r.scrollTop) : (u = e.getBoundingClientRect(), o = e.scrollLeft - u.left, i = e.scrollTop - u.top), s.left += o, s.right += o, s.top += i, s.bottom += i, s.width = 1, 0 < (a = t.offsetWidth - t.clientWidth) && (n && (a *= -1), s.left += a, s.right += a), s
5275        },
5276        Rc = function (a, u, e) {
5277            var t, s, c = Bi(A.none()),
5278                l = function () {
5279                    ! function (e) {
5280                        var t, n, r, o, i;
5281                        for (t = pn("*[contentEditable=false]", e), o = 0; o < t.length; o++) r = (n = t[o]).previousSibling, Pa(r) && (1 === (i = r.data).length ? r.parentNode.removeChild(r) : r.deleteData(i.length - 1, 1)), r = n.nextSibling, Oa(r) && (1 === (i = r.data).length ? r.parentNode.removeChild(r) : r.deleteData(0, 1))
5282                    }(a), s && (os.remove(s), s = null), c.get().each(function (e) {
5283                        pn(e.caret).remove(), c.set(A.none())
5284                    }), clearInterval(t)
5285                },
5286                f = function () {
5287                    t = Le.setInterval(function () {
5288                        e() ? pn("div.mce-visual-caret", a).toggleClass("mce-visual-caret-hidden") : pn("div.mce-visual-caret", a).addClass("mce-visual-caret-hidden")
5289                    }, 500)
5290                };
5291            return {
5292                show: function (t, e) {
5293                    var n, r, o;
5294                    if (l(), o = e, Do.isElement(o) && /^(TD|TH)$/i.test(o.tagName)) return null;
5295                    if (!u(e)) return s = function (e, t) {
5296                        var n, r, o;
5297                        if (r = e.ownerDocument.createTextNode(wa), o = e.parentNode, t) {
5298                            if (n = e.previousSibling, Sa(n)) {
5299                                if (Aa(n)) return n;
5300                                if (Pa(n)) return n.splitText(n.data.length - 1)
5301                            }
5302                            o.insertBefore(r, e)
5303                        } else {
5304                            if (n = e.nextSibling, Sa(n)) {
5305                                if (Aa(n)) return n;
5306                                if (Oa(n)) return n.splitText(1), n
5307                            }
5308                            e.nextSibling ? o.insertBefore(r, e.nextSibling) : o.appendChild(r)
5309                        }
5310                        return r
5311                    }(e, t), r = e.ownerDocument.createRange(), Ac(s.nextSibling) ? (r.setStart(s, 0), r.setEnd(s, 0)) : (r.setStart(s, 1), r.setEnd(s, 1)), r;
5312                    s = Ba("p", e, t), n = _c(a, e, t), pn(s).css("top", n.top);
5313                    var i = pn('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(n).appendTo(a)[0];
5314                    return c.set(A.some({
5315                        caret: i,
5316                        element: e,
5317                        before: t
5318                    })), c.get().each(function (e) {
5319                        t && pn(e.caret).addClass("mce-visual-caret-before")
5320                    }), f(), (r = e.ownerDocument.createRange()).setStart(s, 0), r.setEnd(s, 0), r
5321                },
5322                hide: l,
5323                getCss: function () {
5324                    return ".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}"
5325                },
5326                reposition: function () {
5327                    c.get().each(function (e) {
5328                        var t = _c(a, e.element, e.before);
5329                        pn(e.caret).css(t)
5330                    })
5331                },
5332                destroy: function () {
5333                    return Le.clearInterval(t)
5334                }
5335            }
5336        },
5337        Dc = function (e) {
5338            return Ac(e) || Do.isTable(e) && vc()
5339        },
5340        Bc = Do.isContentEditableFalse,
5341        Oc = Do.matchStyleValues("display", "block table table-cell table-caption list-item"),
5342        Pc = Aa,
5343        Lc = Ta,
5344        Ic = ya.curry,
5345        Mc = Do.isElement,
5346        Fc = ja,
5347        Uc = function (e) {
5348            return 0 < e
5349        },
5350        zc = function (e) {
5351            return e < 0
5352        },
5353        Vc = function (e, t) {
5354            for (var n; n = e(t);)
5355                if (!Lc(n)) return n;
5356            return null
5357        },
5358        qc = function (e, t, n, r, o) {
5359            var i = new oo(e, r);
5360            if (zc(t)) {
5361                if ((Bc(e) || Lc(e)) && n(e = Vc(i.prev, !0))) return e;
5362                for (; e = Vc(i.prev, o);)
5363                    if (n(e)) return e
5364            }
5365            if (Uc(t)) {
5366                if ((Bc(e) || Lc(e)) && n(e = Vc(i.next, !0))) return e;
5367                for (; e = Vc(i.next, o);)
5368                    if (n(e)) return e
5369            }
5370            return null
5371        },
5372        Hc = function (e, t) {
5373            for (; e && e !== t;) {
5374                if (Oc(e)) return e;
5375                e = e.parentNode
5376            }
5377            return null
5378        },
5379        jc = function (e, t, n) {
5380            return Hc(e.container(), n) === Hc(t.container(), n)
5381        },
5382        $c = function (e, t) {
5383            var n, r;
5384            return t ? (n = t.container(), r = t.offset(), Mc(n) ? n.childNodes[r + e] : null) : null
5385        },
5386        Wc = function (e, t) {
5387            var n = t.ownerDocument.createRange();
5388            return e ? (n.setStartBefore(t), n.setEndBefore(t)) : (n.setStartAfter(t), n.setEndAfter(t)), n
5389        },
5390        Kc = function (e, t, n) {
5391            var r, o, i, a;
5392            for (o = e ? "previousSibling" : "nextSibling"; n && n !== t;) {
5393                if (r = n[o], Pc(r) && (r = r[o]), Bc(r)) {
5394                    if (a = n, Hc(r, i = t) === Hc(a, i)) return r;
5395                    break
5396                }
5397                if (Fc(r)) break;
5398                n = n.parentNode
5399            }
5400            return null
5401        },
5402        Xc = Ic(Wc, !0),
5403        Yc = Ic(Wc, !1),
5404        Gc = function (e, t, n) {
5405            var r, o, i, a, u = Ic(Kc, !0, t),
5406                s = Ic(Kc, !1, t);
5407            if (o = n.startContainer, i = n.startOffset, Ta(o)) {
5408                if (Mc(o) || (o = o.parentNode), "before" === (a = o.getAttribute("data-mce-caret")) && (r = o.nextSibling, Dc(r))) return Xc(r);
5409                if ("after" === a && (r = o.previousSibling, Dc(r))) return Yc(r)
5410            }
5411            if (!n.collapsed) return n;
5412            if (Do.isText(o)) {
5413                if (Pc(o)) {
5414                    if (1 === e) {
5415                        if (r = s(o)) return Xc(r);
5416                        if (r = u(o)) return Yc(r)
5417                    }
5418                    if (-1 === e) {
5419                        if (r = u(o)) return Yc(r);
5420                        if (r = s(o)) return Xc(r)
5421                    }
5422                    return n
5423                }
5424                if (Pa(o) && i >= o.data.length - 1) return 1 === e && (r = s(o)) ? Xc(r) : n;
5425                if (Oa(o) && i <= 1) return -1 === e && (r = u(o)) ? Yc(r) : n;
5426                if (i === o.data.length) return (r = s(o)) ? Xc(r) : n;
5427                if (0 === i) return (r = u(o)) ? Yc(r) : n
5428            }
5429            return n
5430        },
5431        Jc = function (e, t) {
5432            var n = $c(e, t);
5433            return Bc(n) && !Do.isBogusAll(n)
5434        },
5435        Qc = function (e, t) {
5436            return Do.isTable($c(e, t))
5437        },
5438        Zc = function (e, t) {
5439            return A.from($c(e ? 0 : -1, t)).filter(Bc)
5440        },
5441        el = function (e, t, n) {
5442            var r = Gc(e, t, n);
5443            return -1 === e ? wu.fromRangeStart(r) : wu.fromRangeEnd(r)
5444        },
5445        tl = Ic(Jc, 0),
5446        nl = Ic(Jc, -1),
5447        rl = Ic(Qc, 0),
5448        ol = Ic(Qc, -1),
5449        il = function (e) {
5450            return Su.isTextPosition(e) ? 0 === e.offset() : ja(e.getNode())
5451        },
5452        al = function (e) {
5453            if (Su.isTextPosition(e)) {
5454                var t = e.container();
5455                return e.offset() === t.data.length
5456            }
5457            return ja(e.getNode(!0))
5458        },
5459        ul = function (e, t) {
5460            return !Su.isTextPosition(e) && !Su.isTextPosition(t) && e.getNode() === t.getNode(!0)
5461        },
5462        sl = function (e, t, n) {
5463            return e ? !ul(t, n) && (r = t, !(!Su.isTextPosition(r) && Do.isBr(r.getNode()))) && al(t) && il(n) : !ul(n, t) && il(t) && al(n);
5464            var r
5465        },
5466        cl = function (e, t, n) {
5467            var r = Ns(t);
5468            return A.from(e ? r.next(n) : r.prev(n))
5469        },
5470        ll = function (e, t) {
5471            var n, r, o, i, a, u = e ? t.firstChild : t.lastChild;
5472            return Do.isText(u) ? A.some(Su(u, e ? 0 : u.data.length)) : u ? ja(u) ? A.some(e ? Su.before(u) : (a = u, Do.isBr(a) ? Su.before(a) : Su.after(a))) : (r = t, o = u, i = (n = e) ? Su.before(o) : Su.after(o), cl(n, r, i)) : A.none()
5473        },
5474        fl = {
5475            fromPosition: cl,
5476            nextPosition: b(cl, !0),
5477            prevPosition: b(cl, !1),
5478            navigate: function (t, n, r) {
5479                return cl(t, n, r).bind(function (e) {
5480                    return jc(r, e, n) && sl(t, r, e) ? cl(t, n, e) : A.some(e)
5481                })
5482            },
5483            positionIn: ll,
5484            firstPositionIn: b(ll, !0),
5485            lastPositionIn: b(ll, !1)
5486        },
5487        dl = function (e, t) {
5488            return !e.isBlock(t) || t.innerHTML || Re.ie || (t.innerHTML = '<br data-mce-bogus="1" />'), t
5489        },
5490        ml = function (e, t) {
5491            return fl.lastPositionIn(e).fold(function () {
5492                return !1
5493            }, function (e) {
5494                return t.setStart(e.container(), e.offset()), t.setEnd(e.container(), e.offset()), !0
5495            })
5496        },
5497        gl = function (e, t, n) {
5498            return !(!1 !== t.hasChildNodes() || !Xu(e, t) || (o = n, i = (r = t).ownerDocument.createTextNode(wa), r.appendChild(i), o.setStart(i, 0), o.setEnd(i, 0), 0));
5499            var r, o, i
5500        },
5501        pl = function (e, t, n, r) {
5502            var o, i, a, u, s = n[t ? "start" : "end"],
5503                c = e.getRoot();
5504            if (s) {
5505                for (a = s[0], i = c, o = s.length - 1; 1 <= o; o--) {
5506                    if (u = i.childNodes, gl(c, i, r)) return !0;
5507                    if (s[o] > u.length - 1) return !!gl(c, i, r) || ml(i, r);
5508                    i = u[s[o]]
5509                }
5510                3 === i.nodeType && (a = Math.min(s[0], i.nodeValue.length)), 1 === i.nodeType && (a = Math.min(s[0], i.childNodes.length)), t ? r.setStart(i, a) : r.setEnd(i, a)
5511            }
5512            return !0
5513        },
5514        hl = function (e) {
5515            return Do.isText(e) && 0 < e.data.length
5516        },
5517        vl = function (e, t, n) {
5518            var r, o, i, a, u, s, c = e.get(n.id + "_" + t),
5519                l = n.keep;
5520            if (c) {
5521                if (r = c.parentNode, "start" === t ? l ? c.hasChildNodes() ? (r = c.firstChild, o = 1) : hl(c.nextSibling) ? (r = c.nextSibling, o = 0) : hl(c.previousSibling) ? (r = c.previousSibling, o = c.previousSibling.data.length) : (r = c.parentNode, o = e.nodeIndex(c) + 1) : o = e.nodeIndex(c) : l ? c.hasChildNodes() ? (r = c.firstChild, o = 1) : hl(c.previousSibling) ? (r = c.previousSibling, o = c.previousSibling.data.length) : (r = c.parentNode, o = e.nodeIndex(c)) : o = e.nodeIndex(c), u = r, s = o, !l) {
5522                    for (a = c.previousSibling, i = c.nextSibling, Yt.each(Yt.grep(c.childNodes), function (e) {
5523                            Do.isText(e) && (e.nodeValue = e.nodeValue.replace(/\uFEFF/g, ""))
5524                        }); c = e.get(n.id + "_" + t);) e.remove(c, !0);
5525                    a && i && a.nodeType === i.nodeType && Do.isText(a) && !Re.opera && (o = a.nodeValue.length, a.appendData(i.nodeValue), e.remove(i), u = a, s = o)
5526                }
5527                return A.some(Su(u, s))
5528            }
5529            return A.none()
5530        },
5531        bl = function (e, t) {
5532            var n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b = e.dom;
5533            if (t) {
5534                if (v = t, Yt.isArray(v.start)) return p = t, h = (g = b).createRng(), pl(g, !0, p, h) && pl(g, !1, p, h) ? A.some(h) : A.none();
5535                if ("string" == typeof t.start) return A.some((f = t, d = (l = b).createRng(), m = Pu(l.getRoot(), f.start), d.setStart(m.container(), m.offset()), m = Pu(l.getRoot(), f.end), d.setEnd(m.container(), m.offset()), d));
5536                if (t.hasOwnProperty("id")) return s = vl(o = b, "start", i = t), c = vl(o, "end", i), ru([s, (a = c, u = s, a.isSome() ? a : u)], function (e, t) {
5537                    var n = o.createRng();
5538                    return n.setStart(dl(o, e.container()), e.offset()), n.setEnd(dl(o, t.container()), t.offset()), n
5539                });
5540                if (t.hasOwnProperty("name")) return n = b, r = t, A.from(n.select(r.name)[r.index]).map(function (e) {
5541                    var t = n.createRng();
5542                    return t.selectNode(e), t
5543                });
5544                if (t.hasOwnProperty("rng")) return A.some(t.rng)
5545            }
5546            return A.none()
5547        },
5548        yl = function (e, t, n) {
5549            return $u.getBookmark(e, t, n)
5550        },
5551        Cl = function (t, e) {
5552            bl(t, e).each(function (e) {
5553                t.setRng(e)
5554            })
5555        },
5556        xl = function (e) {
5557            return Do.isElement(e) && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type")
5558        },
5559        wl = function (e) {
5560            return e && /^(IMG)$/.test(e.nodeName)
5561        },
5562        Nl = function (e) {
5563            return e && 3 === e.nodeType && /^([\t \r\n]+|)$/.test(e.nodeValue)
5564        },
5565        El = function (e, t, n) {
5566            return "color" !== n && "backgroundColor" !== n || (t = e.toHex(t)), "fontWeight" === n && 700 === t && (t = "bold"), "fontFamily" === n && (t = t.replace(/[\'\"]/g, "").replace(/,\s+/g, ",")), "" + t
5567        },
5568        Sl = {
5569            isInlineBlock: wl,
5570            moveStart: function (e, t, n) {
5571                var r, o, i, a = n.startOffset,
5572                    u = n.startContainer;
5573                if ((n.startContainer !== n.endContainer || !wl(n.startContainer.childNodes[n.startOffset])) && 1 === u.nodeType)
5574                    for (a < (i = u.childNodes).length ? r = new oo(u = i[a], e.getParent(u, e.isBlock)) : (r = new oo(u = i[i.length - 1], e.getParent(u, e.isBlock))).next(!0), o = r.current(); o; o = r.next())
5575                        if (3 === o.nodeType && !Nl(o)) return n.setStart(o, 0), void t.setRng(n)
5576            },
5577            getNonWhiteSpaceSibling: function (e, t, n) {
5578                if (e)
5579                    for (t = t ? "nextSibling" : "previousSibling", e = n ? e : e[t]; e; e = e[t])
5580                        if (1 === e.nodeType || !Nl(e)) return e
5581            },
5582            isTextBlock: function (e, t) {
5583                return t.nodeType && (t = t.nodeName), !!e.schema.getTextBlockElements()[t.toLowerCase()]
5584            },
5585            isValid: function (e, t, n) {
5586                return e.schema.isValidChild(t, n)
5587            },
5588            isWhiteSpaceNode: Nl,
5589            replaceVars: function (e, n) {
5590                return "string" != typeof e ? e = e(n) : n && (e = e.replace(/%(\w+)/g, function (e, t) {
5591                    return n[t] || e
5592                })), e
5593            },
5594            isEq: function (e, t) {
5595                return t = t || "", e = "" + ((e = e || "").nodeName || e), t = "" + (t.nodeName || t), e.toLowerCase() === t.toLowerCase()
5596            },
5597            normalizeStyleValue: El,
5598            getStyle: function (e, t, n) {
5599                return El(e, e.getStyle(t, n), n)
5600            },
5601            getTextDecoration: function (t, e) {
5602                var n;
5603                return t.getParent(e, function (e) {
5604                    return (n = t.getStyle(e, "text-decoration")) && "none" !== n
5605                }), n
5606            },
5607            getParents: function (e, t, n) {
5608                return e.getParents(t, n, e.getRoot())
5609            }
5610        },
5611        Tl = xl,
5612        kl = Sl.getParents,
5613        Al = Sl.isWhiteSpaceNode,
5614        _l = Sl.isTextBlock,
5615        Rl = function (e, t) {
5616            for (void 0 === t && (t = 3 === e.nodeType ? e.length : e.childNodes.length); e && e.hasChildNodes();)(e = e.childNodes[t]) && (t = 3 === e.nodeType ? e.length : e.childNodes.length);
5617            return {
5618                node: e,
5619                offset: t
5620            }
5621        },
5622        Dl = function (e, t) {
5623            for (var n = t; n;) {
5624                if (1 === n.nodeType && e.getContentEditable(n)) return "false" === e.getContentEditable(n) ? n : t;
5625                n = n.parentNode
5626            }
5627            return t
5628        },
5629        Bl = function (e, t, n, r) {
5630            var o, i, a = n.nodeValue;
5631            return void 0 === r && (r = e ? a.length : 0), e ? (o = a.lastIndexOf(" ", r), -1 === (o = (i = a.lastIndexOf("\xa0", r)) < o ? o : i) || t || o++) : (o = a.indexOf(" ", r), i = a.indexOf("\xa0", r), o = -1 !== o && (-1 === i || o < i) ? o : i), o
5632        },
5633        Ol = function (e, t, n, r, o, i) {
5634            var a, u, s, c;
5635            if (3 === n.nodeType) {
5636                if (-1 !== (s = Bl(o, i, n, r))) return {
5637                    container: n,
5638                    offset: s
5639                };
5640                c = n
5641            }
5642            for (a = new oo(n, e.getParent(n, e.isBlock) || t); u = a[o ? "prev" : "next"]();)
5643                if (3 !== u.nodeType || Tl(u.parentNode)) {
5644                    if (e.isBlock(u) || Sl.isEq(u, "BR")) break
5645                } else if (-1 !== (s = Bl(o, i, c = u))) return {
5646                container: u,
5647                offset: s
5648            };
5649            if (c) return {
5650                container: c,
5651                offset: r = o ? 0 : c.length
5652            }
5653        },
5654        Pl = function (e, t, n, r, o) {
5655            var i, a, u, s;
5656            for (3 === r.nodeType && 0 === r.nodeValue.length && r[o] && (r = r[o]), i = kl(e, r), a = 0; a < i.length; a++)
5657                for (u = 0; u < t.length; u++)
5658                    if (!("collapsed" in (s = t[u]) && s.collapsed !== n.collapsed) && e.is(i[a], s.selector)) return i[a];
5659            return r
5660        },
5661        Ll = function (t, e, n, r) {
5662            var o, i = t.dom,
5663                a = i.getRoot();
5664            if (e[0].wrapper || (o = i.getParent(n, e[0].block, a)), !o) {
5665                var u = i.getParent(n, "LI,TD,TH");
5666                o = i.getParent(3 === n.nodeType ? n.parentNode : n, function (e) {
5667                    return e !== a && _l(t, e)
5668                }, u)
5669            }
5670            if (o && e[0].wrapper && (o = kl(i, o, "ul,ol").reverse()[0] || o), !o)
5671                for (o = n; o[r] && !i.isBlock(o[r]) && (o = o[r], !Sl.isEq(o, "br")););
5672            return o || n
5673        },
5674        Il = function (e, t, n, r, o, i, a) {
5675            var u, s, c, l, f, d;
5676            if (u = s = a ? n : o, l = a ? "previousSibling" : "nextSibling", f = e.getRoot(), 3 === u.nodeType && !Al(u) && (a ? 0 < r : i < u.nodeValue.length)) return u;
5677            for (;;) {
5678                if (!t[0].block_expand && e.isBlock(s)) return s;
5679                for (c = s[l]; c; c = c[l])
5680                    if (!Tl(c) && !Al(c) && ("BR" !== (d = c).nodeName || !d.getAttribute("data-mce-bogus") || d.nextSibling)) return s;
5681                if (s === f || s.parentNode === f) {
5682                    u = s;
5683                    break
5684                }
5685                s = s.parentNode
5686            }
5687            return u
5688        },
5689        Ml = function (e, t, n, r) {
5690            var o, i = t.startContainer,
5691                a = t.startOffset,
5692                u = t.endContainer,
5693                s = t.endOffset,
5694                c = e.dom;
5695            return 1 === i.nodeType && i.hasChildNodes() && 3 === (i = eu(i, a)).nodeType && (a = 0), 1 === u.nodeType && u.hasChildNodes() && 3 === (u = eu(u, t.collapsed ? s : s - 1)).nodeType && (s = u.nodeValue.length), i = Dl(c, i), u = Dl(c, u), (Tl(i.parentNode) || Tl(i)) && (i = Tl(i) ? i : i.parentNode, 3 === (i = t.collapsed ? i.previousSibling || i : i.nextSibling || i).nodeType && (a = t.collapsed ? i.length : 0)), (Tl(u.parentNode) || Tl(u)) && (u = Tl(u) ? u : u.parentNode, 3 === (u = t.collapsed ? u.nextSibling || u : u.previousSibling || u).nodeType && (s = t.collapsed ? 0 : u.length)), t.collapsed && ((o = Ol(c, e.getBody(), i, a, !0, r)) && (i = o.container, a = o.offset), (o = Ol(c, e.getBody(), u, s, !1, r)) && (u = o.container, s = o.offset)), n[0].inline && (u = r ? u : function (e, t) {
5696                var n = Rl(e, t);
5697                if (n.node) {
5698                    for (; n.node && 0 === n.offset && n.node.previousSibling;) n = Rl(n.node.previousSibling);
5699                    n.node && 0 < n.offset && 3 === n.node.nodeType && " " === n.node.nodeValue.charAt(n.offset - 1) && 1 < n.offset && (e = n.node).splitText(n.offset - 1)
5700                }
5701                return e
5702            }(u, s)), (n[0].inline || n[0].block_expand) && (n[0].inline && 3 === i.nodeType && 0 !== a || (i = Il(c, n, i, a, u, s, !0)), n[0].inline && 3 === u.nodeType && s !== u.nodeValue.length || (u = Il(c, n, i, a, u, s, !1))), n[0].selector && !1 !== n[0].expand && !n[0].inline && (i = Pl(c, n, t, i, "previousSibling"), u = Pl(c, n, t, u, "nextSibling")), (n[0].block || n[0].selector) && (i = Ll(e, n, i, "previousSibling"), u = Ll(e, n, u, "nextSibling"), n[0].block && (c.isBlock(i) || (i = Il(c, n, i, a, u, s, !0)), c.isBlock(u) || (u = Il(c, n, i, a, u, s, !1)))), 1 === i.nodeType && (a = c.nodeIndex(i), i = i.parentNode), 1 === u.nodeType && (s = c.nodeIndex(u) + 1, u = u.parentNode), {
5703                startContainer: i,
5704                startOffset: a,
5705                endContainer: u,
5706                endOffset: s
5707            }
5708        },
5709        Fl = Yt.each,
5710        Ul = function (e, t, o) {
5711            var n, r, i, a, u, s, c, l = t.startContainer,
5712                f = t.startOffset,
5713                d = t.endContainer,
5714                m = t.endOffset;
5715            if (0 < (c = e.select("td[data-mce-selected],th[data-mce-selected]")).length) Fl(c, function (e) {
5716                o([e])
5717            });
5718            else {
5719                var g, p, h, v = function (e) {
5720                        var t;
5721                        return 3 === (t = e[0]).nodeType && t === l && f >= t.nodeValue.length && e.splice(0, 1), t = e[e.length - 1], 0 === m && 0 < e.length && t === d && 3 === t.nodeType && e.splice(e.length - 1, 1), e
5722                    },
5723                    b = function (e, t, n) {
5724                        for (var r = []; e && e !== n; e = e[t]) r.push(e);
5725                        return r
5726                    },
5727                    y = function (e, t) {
5728                        do {
5729                            if (e.parentNode === t) return e;
5730                            e = e.parentNode
5731                        } while (e)
5732                    },
5733                    C = function (e, t, n) {
5734                        var r = n ? "nextSibling" : "previousSibling";
5735                        for (u = (a = e).parentNode; a && a !== t; a = u) u = a.parentNode, (s = b(a === e ? a : a[r], r)).length && (n || s.reverse(), o(v(s)))
5736                    };
5737                if (1 === l.nodeType && l.hasChildNodes() && (l = l.childNodes[f]), 1 === d.nodeType && d.hasChildNodes() && (p = m, h = (g = d).childNodes, --p > h.length - 1 ? p = h.length - 1 : p < 0 && (p = 0), d = h[p] || g), l === d) return o(v([l]));
5738                for (n = e.findCommonAncestor(l, d), a = l; a; a = a.parentNode) {
5739                    if (a === d) return C(l, n, !0);
5740                    if (a === n) break
5741                }
5742                for (a = d; a; a = a.parentNode) {
5743                    if (a === l) return C(d, n);
5744                    if (a === n) break
5745                }
5746                r = y(l, n) || l, i = y(d, n) || d, C(l, r, !0), (s = b(r === l ? r : r.nextSibling, "nextSibling", i === d ? i.nextSibling : i)).length && o(v(s)), C(d, i)
5747            }
5748        },
5749        zl = (Es = sr.isText, Ss = "text", Ts = function (e) {
5750            return Es(e) ? A.from(e.dom().nodeValue) : A.none()
5751        }, ks = Qn.detect().browser, {
5752            get: function (e) {
5753                if (!Es(e)) throw new Error("Can only get " + Ss + " value of a " + Ss + " node");
5754                return As(e).getOr("")
5755            },
5756            getOption: As = ks.isIE() && 10 === ks.version.major ? function (e) {
5757                try {
5758                    return Ts(e)
5759                } catch (nN) {
5760                    return A.none()
5761                }
5762            } : Ts,
5763            set: function (e, t) {
5764                if (!Es(e)) throw new Error("Can only set raw " + Ss + " value of a " + Ss + " node");
5765                e.dom().nodeValue = t
5766            }
5767        }),
5768        Vl = function (e) {
5769            return zl.get(e)
5770        },
5771        ql = function (r, o, i, a) {
5772            return $r.parent(o).fold(function () {
5773                return "skipping"
5774            }, function (e) {
5775                return "br" === a || (n = o, sr.isText(n) && "\ufeff" === Vl(n)) ? "skipping" : (t = o, sr.isElement(t) && Wi.has(t, oa()) ? "existing" : Ku(o) ? "caret" : Sl.isValid(r, i, a) && Sl.isValid(r, sr.name(e), i) ? "valid" : "invali
5775d-child");
5776                var t, n
5777            })
5778        },
5779        Hl = undefined && undefined.__rest || function (e, t) {
5780            var n = {};
5781            for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]);
5782            if (null != e && "function" == typeof Object.getOwnPropertySymbols) {
5783                var o = 0;
5784                for (r = Object.getOwnPropertySymbols(e); o < r.length; o++) t.indexOf(r[o]) < 0 && (n[r[o]] = e[r[o]])
5785            }
5786            return n
5787        },
5788        jl = function (r, e, t, n, o) {
5789            var i, a, u = o.uid,
5790                s = void 0 === u ? (i = "mce-annotation", a = (new Date).getTime(), i + "_" + Math.floor(1e9 * Math.random()) + ++fa + String(a)) : u,
5791                c = Hl(o, ["uid"]),
5792                l = [],
5793                f = er.fromTag("span");
5794            Wi.add(f, oa()), hr.set(f, "" + aa(), s), hr.set(f, "" + ia(), t);
5795            var d = n(s, c),
5796                m = d.attributes,
5797                g = void 0 === m ? {} : m,
5798                p = d.classes,
5799                h = void 0 === p ? [] : p;
vendor: 256,227 bytes, lines 5800-11172
5800            hr.setAll(f, g), da(f, h);
5801            var v = Bi(A.none()),
5802                b = function () {
5803                    v.set(A.none())
5804                },
5805                y = function (e) {
5806                    F(e, C)
5807                },
5808                C = function (e) {
5809                    switch (ql(r, e, "span", sr.name(e))) {
5810                        case "invalid-child":
5811                            b();
5812                            var t = $r.children(e);
5813                            y(t), b();
5814                            break;
5815                        case "valid":
5816                            var n = v.get().getOrThunk(function () {
5817                                var e = pa(f);
5818                                return l.push(e), v.set(A.some(e)), e
5819                            });
5820                            Ti.wrap(e, n)
5821                    }
5822                };
5823            return Ul(r.dom, e, function (e) {
5824                var t;
5825                b(), t = $(e, er.fromDom), y(t)
5826            }), l
5827        },
5828        $l = function (a, u, s, c) {
5829            a.undoManager.transact(function () {
5830                var e, t, n, r = a.selection.getRng();
5831                r.collapsed && (n = Ml(e = a, t = r, [{
5832                    inline: !0
5833                }], !1), t.setStart(n.startContainer, n.startOffset), t.setEnd(n.endContainer, n.endOffset), e.selection.setRng(t));
5834                var o = $u.getPersistentBookmark(a.selection, !0),
5835                    i = a.selection.getRng();
5836                jl(a, i, u, s.decorate, c), a.selection.moveToBookmark(o)
5837            })
5838        };
5839
5840    function Wl(s) {
5841        var n, r = (n = {}, {
5842            register: function (e, t) {
5843                n[e] = {
5844                    name: e,
5845                    settings: t
5846                }
5847            },
5848            lookup: function (e) {
5849                return n.hasOwnProperty(e) ? A.from(n[e]).map(function (e) {
5850                    return e.settings
5851                }) : A.none()
5852            }
5853        });
5854        la(s, r);
5855        var o = ca(s);
5856        return {
5857            register: function (e, t) {
5858                r.register(e, t)
5859            },
5860            annotate: function (t, n) {
5861                r.lookup(t).each(function (e) {
5862                    $l(s, t, e, n)
5863                })
5864            },
5865            annotationChanged: function (e, t) {
5866                o.addListener(e, t)
5867            },
5868            remove: function (e) {
5869                ua(s, A.some(e)).each(function (e) {
5870                    var t = e.elements;
5871                    F(t, Ri.unwrap)
5872                })
5873            },
5874            getAll: function (e) {
5875                var t, n, r, o, i, a, u = (t = s, n = e, r = er.fromDom(t.getBody()), o = Ki(r, "[" + ia() + '="' + n + '"]'), i = {}, F(o, function (e) {
5876                    var t = hr.get(e, aa()),
5877                        n = i.hasOwnProperty(t) ? i[t] : [];
5878                    i[t] = n.concat([e])
5879                }), i);
5880                return a = function (e) {
5881                    return $(e, function (e) {
5882                        return e.dom()
5883                    })
5884                }, fr(u, function (e, t, n) {
5885                    return {
5886                        k: t,
5887                        v: a(e, t, n)
5888                    }
5889                })
5890            }
5891        }
5892    }
5893    var Kl = function (e) {
5894            return Yt.grep(e.childNodes, function (e) {
5895                return "LI" === e.nodeName
5896            })
5897        },
5898        Xl = function (e) {
5899            return e && e.firstChild && e.firstChild === e.lastChild && ("\xa0" === (t = e.firstChild).data || Do.isBr(t));
5900            var t
5901        },
5902        Yl = function (e) {
5903            return 0 < e.length && (!(t = e[e.length - 1]).firstChild || Xl(t)) ? e.slice(0, -1) : e;
5904            var t
5905        },
5906        Gl = function (e, t) {
5907            var n = e.getParent(t, e.isBlock);
5908            return n && "LI" === n.nodeName ? n : null
5909        },
5910        Jl = function (e, t) {
5911            var n = Su.after(e),
5912                r = Ns(t).prev(n);
5913            return r ? r.toRange() : null
5914        },
5915        Ql = function (t, e, n) {
5916            var r, o, i, a, u = t.parentNode;
5917            return Yt.each(e, function (e) {
5918                u.insertBefore(e, t)
5919            }), r = t, o = n, i = Su.before(r), (a = Ns(o).next(i)) ? a.toRange() : null
5920        },
5921        Zl = function (e, t) {
5922            var n, r, o, i, a, u, s = t.firstChild,
5923                c = t.lastChild;
5924            return s && "meta" === s.name && (s = s.next), c && "mce_marker" === c.attr("id") && (c = c.prev), r = c, u = (n = e).getNonEmptyElements(), r && (r.isEmpty(u) || (o = r, n.getBlockElements()[o.name] && (a = o).firstChild && a.firstChild === a.lastChild && ("br" === (i = o.firstChild).name || "\xa0" === i.value))) && (c = c.prev), !(!s || s !== c || "ul" !== s.name && "ol" !== s.name)
5925        },
5926        ef = function (e, o, i, t) {
5927            var n, r, a, u, s, c, l, f, d, m, g, p, h, v, b, y, C, x, w, N = (n = o, r = t, c = e.serialize(r), l = n.createFragment(c), u = (a = l).firstChild, s = a.lastChild, u && "META" === u.nodeName && u.parentNode.removeChild(u), s && "mce_marker" === s.id && s.parentNode.removeChild(s), a),
5928                E = Gl(o, i.startContainer),
5929                S = Yl(Kl(N.firstChild)),
5930                T = o.getRoot(),
5931                k = function (e) {
5932                    var t = Su.fromRangeStart(i),
5933                        n = Ns(o.getRoot()),
5934                        r = 1 === e ? n.prev(t) : n.next(t);
5935                    return !r || Gl(o, r.getNode()) !== E
5936                };
5937            return k(1) ? Ql(E, S, T) : k(2) ? (f = E, d = S, m = T, o.insertAfter(d.reverse(), f), Jl(d[0], m)) : (p = S, h = T, v = g = E, y = (b = i).cloneRange(), C = b.cloneRange(), y.setStartBefore(v), C.setEndAfter(v), x = [y.cloneContents(), C.cloneContents()], (w = g.parentNode).insertBefore(x[0], g), Yt.each(p, function (e) {
5938                w.insertBefore(e, g)
5939            }), w.insertBefore(x[1], g), w.removeChild(g), Jl(p[p.length - 1], h))
5940        },
5941        tf = function (e, t) {
5942            return !!Gl(e, t)
5943        },
5944        nf = Yt.each,
5945        rf = function (o) {
5946            this.compare = function (e, t) {
5947                if (e.nodeName !== t.nodeName) return !1;
5948                var n = function (n) {
5949                        var r = {};
5950                        return nf(o.getAttribs(n), function (e) {
5951                            var t = e.nodeName.toLowerCase();
5952                            0 !== t.indexOf("_") && "style" !== t && 0 !== t.indexOf("data-") && (r[t] = o.getAttrib(n, t))
5953                        }), r
5954                    },
5955                    r = function (e, t) {
5956                        var n, r;
5957                        for (r in e)
5958                            if (e.hasOwnProperty(r)) {
5959                                if (void 0 === (n = t[r])) return !1;
5960                                if (e[r] !== n) return !1;
5961                                delete t[r]
5962                            }
5963                        for (r in t)
5964                            if (t.hasOwnProperty(r)) return !1;
5965                        return !0
5966                    };
5967                return !(!r(n(e), n(t)) || !r(o.parseStyle(o.getAttrib(e, "style")), o.parseStyle(o.getAttrib(t, "style"))) || xl(e) || xl(t))
5968            }
5969        },
5970        of = function (e) {
5971            var t = Ki(e, "br"),
5972                n = U(function (e) {
5973                    for (var t = [], n = e.dom(); n;) t.push(er.fromDom(n)), n = n.lastChild;
5974                    return t
5975                }(e).slice(-1), mo);
5976            t.length === n.length && F(n, Ri.remove)
5977        },
5978        af = function (e) {
5979            Ri.empty(e), Ti.append(e, er.fromHtml('<br data-mce-bogus="1">'))
5980        },
5981        uf = function (n) {
5982            $r.lastChild(n).each(function (t) {
5983                $r.prevSibling(t).each(function (e) {
5984                    lo(n) && mo(t) && lo(e) && Ri.remove(t)
5985                })
5986            })
5987        },
5988        sf = Yt.makeMap;
5989
5990    function cf(e) {
5991        var u, s, c, l, f, d = [];
5992        return u = (e = e || {}).indent, s = sf(e.indent_before || ""), c = sf(e.indent_after || ""), l = $o.getEncodeFunc(e.entity_encoding || "raw", e.entities), f = "html" === e.element_format, {
5993            start: function (e, t, n) {
5994                var r, o, i, a;
5995                if (u && s[e] && 0 < d.length && 0 < (a = d[d.length - 1]).length && "\n" !== a && d.push("\n"), d.push("<", e), t)
5996                    for (r = 0, o = t.length; r < o; r++) i = t[r], d.push(" ", i.name, '="', l(i.value, !0), '"');
5997                d[d.length] = !n || f ? ">" : " />", n && u && c[e] && 0 < d.length && 0 < (a = d[d.length - 1]).length && "\n" !== a && d.push("\n")
5998            },
5999            end: function (e) {
6000                var t;
6001                d.push("</", e, ">"), u && c[e] && 0 < d.length && 0 < (t = d[d.length - 1]).length && "\n" !== t && d.push("\n")
6002            },
6003            text: function (e, t) {
6004                0 < e.length && (d[d.length] = t ? e : l(e))
6005            },
6006            cdata: function (e) {
6007                d.push("<![CDATA[", e, "]]>")
6008            },
6009            comment: function (e) {
6010                d.push("\x3c!--", e, "--\x3e")
6011            },
6012            pi: function (e, t) {
6013                t ? d.push("<?", e, " ", l(t), "?>") : d.push("<?", e, "?>"), u && d.push("\n")
6014            },
6015            doctype: function (e) {
6016                d.push("<!DOCTYPE", e, ">", u ? "\n" : "")
6017            },
6018            reset: function () {
6019                d.length = 0
6020            },
6021            getContent: function () {
6022                return d.join("").replace(/\n$/, "")
6023            }
6024        }
6025    }
6026
6027    function lf(t, g) {
6028        void 0 === g && (g = ni());
6029        var p = cf(t);
6030        return (t = t || {}).validate = !("validate" in t) || t.validate, {
6031            serialize: function (e) {
6032                var f, d;
6033                d = t.validate, f = {
6034                    3: function (e) {
6035                        p.text(e.value, e.raw)
6036                    },
6037                    8: function (e) {
6038                        p.comment(e.value)
6039                    },
6040                    7: function (e) {
6041                        p.pi(e.name, e.value)
6042                    },
6043                    10: function (e) {
6044                        p.doctype(e.value)
6045                    },
6046                    4: function (e) {
6047                        p.cdata(e.value)
6048                    },
6049                    11: function (e) {
6050                        if (e = e.firstChild)
6051                            for (; m(e), e = e.next;);
6052                    }
6053                }, p.reset();
6054                var m = function (e) {
6055                    var t, n, r, o, i, a, u, s, c, l = f[e.type];
6056                    if (l) l(e);
6057                    else {
6058                        if (t = e.name, n = e.shortEnded, r = e.attributes, d && r && 1 < r.length && ((a = []).map = {}, c = g.getElementRule(e.name))) {
6059                            for (u = 0, s = c.attributesOrder.length; u < s; u++)(o = c.attributesOrder[u]) in r.map && (i = r.map[o], a.map[o] = i, a.push({
6060                                name: o,
6061                                value: i
6062                            }));
6063                            for (u = 0, s = r.length; u < s; u++)(o = r[u].name) in a.map || (i = r.map[o], a.map[o] = i, a.push({
6064                                name: o,
6065                                value: i
6066                            }));
6067                            r = a
6068                        }
6069                        if (p.start(e.name, r, n), !n) {
6070                            if (e = e.firstChild)
6071                                for (; m(e), e = e.next;);
6072                            p.end(t)
6073                        }
6074                    }
6075                };
6076                return 1 !== e.type || t.inner ? f[11](e) : m(e), p.getContent()
6077            }
6078        }
6079    }
6080    var ff = function (a) {
6081            var u = Su.fromRangeStart(a),
6082                s = Su.fromRangeEnd(a),
6083                c = a.commonAncestorContainer;
6084            return fl.fromPosition(!1, c, s).map(function (e) {
6085                return !jc(u, s, c) && jc(u, e, c) ? (t = u.container(), n = u.offset(), r = e.container(), o = e.offset(), (i = document.createRange()).setStart(t, n), i.setEnd(r, o), i) : a;
6086                var t, n, r, o, i
6087            }).getOr(a)
6088        },
6089        df = function (e) {
6090            return e.collapsed ? e : ff(e)
6091        },
6092        mf = Do.matchNodeNames("td th"),
6093        gf = function (o, e, t) {
6094            var n, r, i, a, u, s, c, l, f, d, m, g, p = o.schema.getTextInlineElements(),
6095                h = o.selection,
6096                v = o.dom;
6097            if (/^ | $/.test(e) && (e = function (e) {
6098                    var t, n, r;
6099                    t = h.getRng(), n = t.startContainer, r = t.startOffset;
6100                    var o = function (e) {
6101                        return n[e] && 3 === n[e].nodeType
6102                    };
6103                    return 3 === n.nodeType && (0 < r ? e = e.replace(/^&nbsp;/, " ") : o("previousSibling") || (e = e.replace(/^ /, "&nbsp;")), r < n.length ? e = e.replace(/&nbsp;(<br>|)$/, " ") : o("nextSibling") || (e = e.replace(/(&nbsp;| )(<br>|)$/, "&nbsp;"))), e
6104                }(e)), n = o.parser, g = t.merge, r = lf({
6105                    validate: o.settings.validate
6106                }, o.schema), m = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>', s = {
6107                    content: e,
6108                    format: "html",
6109                    selection: !0,
6110                    paste: t.paste
6111                }, (s = o.fire("BeforeSetContent", s)).isDefaultPrevented()) o.fire("SetContent", {
6112                content: s.content,
6113                format: "html",
6114                selection: !0,
6115                paste: t.paste
6116            });
6117            else {
6118                -1 === (e = s.content).indexOf("{$caret}") && (e += "{$caret}"), e = e.replace(/\{\$caret\}/, m);
6119                var b, y, C, x, w = (l = h.getRng()).startContainer || (l.parentElement ? l.parentElement() : null),
6120                    N = o.getBody();
6121                w === N && h.isCollapsed() && v.isBlock(N.firstChild) && (b = N.firstChild) && !o.schema.getShortEndedElements()[b.nodeName] && v.isEmpty(N.firstChild) && ((l = v.createRng()).setStart(N.firstChild, 0), l.setEnd(N.firstChild, 0), h.setRng(l)), h.isCollapsed() || (o.selection.setRng(df(o.selection.getRng())), o.getDoc().execCommand("Delete", !1, null), C = (y = h.getRng()).startContainer, x = y.startOffset, 3 === C.nodeType && y.collapsed && ("\xa0" === C.data[x] ? (C.deleteData(x, 1), /[\u00a0| ]$/.test(e) || (e += " ")) : "\xa0" === C.data[x - 1] && (C.deleteData(x - 1, 1), /[\u00a0| ]$/.test(e) || (e = " " + e))));
6122                var E, S, T, k = {
6123                    context: (i = h.getNode()).nodeName.toLowerCase(),
6124                    data: t.data,
6125                    insert: !0
6126                };
6127                if (u = n.parse(e, k), !0 === t.paste && Zl(o.schema, u) && tf(v, i)) return l = ef(r, v, o.selection.getRng(), u), o.selection.setRng(l), void o.fire("SetContent", s);
6128                if (function (e) {
6129                        for (var t = e; t = t.walk();) 1 === t.type && t.attr("data-mce-fragment", "1")
6130                    }(u), "mce_marker" === (f = u.lastChild).attr("id"))
6131                    for (f = (c = f).prev; f; f = f.walk(!0))
6132                        if (3 === f.type || !v.isBlock(f.name)) {
6133                            o.schema.isValidChild(f.parent.name, "span") && f.parent.insert(c, f, "br" === f.name);
6134                            break
6135                        }
6136                if (o._selectionOverrides.showBlockCaretContainer(i), k.invalid) {
6137                    for (h.setContent(m), i = h.getNode(), a = o.getBody(), 9 === i.nodeType ? i = f = a : f = i; f !== a;) f = (i = f).parentNode;
6138                    e = i === a ? a.innerHTML : v.getOuterHTML(i), e = r.serialize(n.parse(e.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function () {
6139                        return r.serialize(u)
6140                    }))), i === a ? v.setHTML(a, e) : v.setOuterHTML(i, e)
6141                } else e = r.serialize(u),
6142                    function (e, t, n) {
6143                        if ("all" === n.getAttribute("data-mce-bogus")) n.parentNode.insertBefore(e.dom.createFragment(t), n);
6144                        else {
6145                            var r = n.firstChild,
6146                                o = n.lastChild;
6147                            !r || r === o && "BR" === r.nodeName ? e.dom.setHTML(n, t) : e.selection.setContent(t)
6148                        }
6149                    }(o, e, i);
6150                ! function () {
6151                    if (g) {
6152                        var n = o.getBody(),
6153                            r = new rf(v);
6154                        Yt.each(v.select("*[data-mce-fragment]"), function (e) {
6155                            for (var t = e.parentNode; t && t !== n; t = t.parentNode) p[e.nodeName.toLowerCase()] && r.compare(t, e) && v.remove(e, !0)
6156                        })
6157                    }
6158                }(),
6159                function (e) {
6160                    var t, n, r;
6161                    if (e) {
6162                        if (h.scrollIntoView(e), t = function (e) {
6163                                for (var t = o.getBody(); e && e !== t; e = e.parentNode)
6164                                    if ("false" === o.dom.getContentEditable(e)) return e;
6165                                return null
6166                            }(e)) return v.remove(e), h.select(t);
6167                        l = v.createRng(), (f = e.previousSibling) && 3 === f.nodeType ? (l.setStart(f, f.nodeValue.length), Re.ie || (d = e.nextSibling) && 3 === d.nodeType && (f.appendData(d.data), d.parentNode.removeChild(d))) : (l.setStartBefore(e), l.setEndBefore(e)), n = v.getParent(e, v.isBlock), v.remove(e), n && v.isEmpty(n) && (o.$(n).empty(), l.setStart(n, 0), l.setEnd(n, 0), mf(n) || n.getAttribute("data-mce-fragment") || !(r = function (e) {
6168                            var t = Su.fromRangeStart(e);
6169                            if (t = Ns(o.getBody()).next(t)) return t.toRange()
6170                        }(l)) ? v.add(n, v.create("br", {
6171                            "data-mce-bogus": "1"
6172                        })) : (l = r, v.remove(n))), h.setRng(l)
6173                    }
6174                }(v.get("mce_marker")), E = o.getBody(), Yt.each(E.getElementsByTagName("*"), function (e) {
6175                    e.removeAttribute("data-mce-fragment")
6176                }), S = o.dom, T = o.selection.getStart(), A.from(S.getParent(T, "td,th")).map(er.fromDom).each(uf), o.fire("SetContent", s), o.addVisual()
6177            }
6178        },
6179        pf = function (e, t) {
6180            var n, r, o = "string" != typeof (n = t) ? (r = Yt.extend({
6181                paste: n.paste,
6182                data: {
6183                    paste: n.paste
6184                }
6185            }, n), {
6186                content: n.content,
6187                details: r
6188            }) : {
6189                content: n,
6190                details: {}
6191            };
6192            gf(e, o.content, o.details)
6193        },
6194        hf = kr("sections", "settings"),
6195        vf = Qn.detect().deviceType.isTouch(),
6196        bf = ["lists", "autolink", "autosave"],
6197        yf = {
6198            theme: "mobile"
6199        },
6200        Cf = function (e) {
6201            var t = R(e) ? e.join(" ") : e,
6202                n = $(k(t) ? t.split(" ") : [], $n);
6203            return U(n, function (e) {
6204                return 0 < e.length
6205            })
6206        },
6207        xf = function (n, e) {
6208            var r, o, i, t = (r = function (e, t) {
6209                return I(n, t)
6210            }, o = {}, i = {}, lr(e, function (e, t) {
6211                (r(e, t) ? o : i)[t] = e
6212            }), {
6213                t: o,
6214                f: i
6215            });
6216            return hf(t.t, t.f)
6217        },
6218        wf = function (e, t) {
6219            return e.sections().hasOwnProperty(t)
6220        },
6221        Nf = function (e, t, n, r) {
6222            var o, i = Cf(n.forced_plugins),
6223                a = Cf(r.plugins),
6224                u = e && wf(t, "mobile") ? U(a, b(I, bf)) : a,
6225                s = (o = u, [].concat(Cf(i)).concat(Cf(o)));
6226            return Yt.extend(r, {
6227                plugins: s.join(" ")
6228            })
6229        },
6230        Ef = function (e, t, n, r) {
6231            var o, i, a, u, s, c, l, f, d, m, g = xf(["mobile"], r),
6232                p = Yt.extend(t, n, g.settings(), (f = e, m = (d = g).settings().inline, f && wf(d, "mobile") && !m ? (u = "mobile", s = yf, c = g.sections(), l = c.hasOwnProperty(u) ? c[u] : {}, Yt.extend({}, s, l)) : {}), {
6233                    validate: !0,
6234                    content_editable: g.settings().inline,
6235                    external_plugins: (o = n, i = g.settings(), a = i.external_plugins ? i.external_plugins : {}, o && o.external_plugins ? Yt.extend({}, o.external_plugins, a) : a)
6236                });
6237            return Nf(e, g, n, p)
6238        },
6239        Sf = function (e, t, n) {
6240            return A.from(t.settings[n]).filter(e)
6241        },
6242        Tf = b(Sf, k),
6243        kf = function (e, t, n, r) {
6244            var o, i, a, u = t in e.settings ? e.settings[t] : n;
6245            return "hash" === r ? (a = {}, "string" == typeof (i = u) ? F(0 < i.indexOf("=") ? i.split(/[;,](?![^=;,]*(?:[;,]|$))/) : i.split(","), function (e) {
6246                var t = e.split("=");
6247                1 < t.length ? a[Yt.trim(t[0])] = Yt.trim(t[1]) : a[Yt.trim(t[0])] = Yt.trim(t)
6248            }) : a = i, a) : "string" === r ? Sf(k, e, t).getOr(n) : "number" === r ? Sf(P, e, t).getOr(n) : "boolean" === r ? Sf(B, e, t).getOr(n) : "object" === r ? Sf(_, e, t).getOr(n) : "array" === r ? Sf(R, e, t).getOr(n) : "string[]" === r ? Sf((o = k, function (e) {
6249                return R(e) && J(e, o)
6250            }), e, t).getOr(n) : "function" === r ? Sf(O, e, t).getOr(n) : u
6251        },
6252        Af = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/,
6253        _f = function (e, t) {
6254            var n = t.container(),
6255                r = t.offset();
6256            return e ? ka(n) ? Do.isText(n.nextSibling) ? Su(n.nextSibling, 0) : Su.after(n) : Ra(t) ? Su(n, r + 1) : t : ka(n) ? Do.isText(n.previousSibling) ? Su(n.previousSibling, n.previousSibling.data.length) : Su.before(n) : Da(t) ? Su(n, r - 1) : t
6257        },
6258        Rf = {
6259            isInlineTarget: function (e, t) {
6260                var n = Tf(e, "inline_boundaries_selector").getOr("a[href],code");
6261                return Lr.is(er.fromDom(t), n)
6262            },
6263            findRootInline: function (e, t, n) {
6264                var r, o, i, a = (r = e, o = t, i = n, U(pi.DOM.getParents(i.container(), "*", o), r));
6265                return A.from(a[a.length - 1])
6266            },
6267            isRtl: function (e) {
6268                return "rtl" === pi.DOM.getStyle(e, "direction", !0) || (t = e.textContent, Af.test(t));
6269                var t
6270            },
6271            isAtZwsp: function (e) {
6272                return Ra(e) || Da(e)
6273            },
6274            normalizePosition: _f,
6275            normalizeForwards: b(_f, !0),
6276            normalizeBackwards: b(_f, !1),
6277            hasSameParentBlock: function (e, t, n) {
6278                var r = Hc(t, e),
6279                    o = Hc(n, e);
6280                return r && r === o
6281            }
6282        },
6283        Df = function (e, t) {
6284            return Fr.contains(e, t) ? Zi.closest(t, function (e) {
6285                return go(e) || ho(e)
6286            }, (n = e, function (e) {
6287                return Fr.eq(n, er.fromDom(e.dom().parentNode))
6288            })) : A.none();
6289            var n
6290        },
6291        Bf = function (e) {
6292            var t, n, r;
6293            e.dom.isEmpty(e.getBody()) && (e.setContent(""), n = (t = e).getBody(), r = n.firstChild && t.dom.isBlock(n.firstChild) ? n.firstChild : n, t.selection.setCursorLocation(r, 0))
6294        },
6295        Of = function (i, a, u) {
6296            return ru([fl.firstPositionIn(u), fl.lastPositionIn(u)], function (e, t) {
6297                var n = Rf.normalizePosition(!0, e),
6298                    r = Rf.normalizePosition(!1, t),
6299                    o = Rf.normalizePosition(!1, a);
6300                return i ? fl.nextPosition(u, o).map(function (e) {
6301                    return e.isEqual(r) && a.isEqual(n)
6302                }).getOr(!1) : fl.prevPosition(u, o).map(function (e) {
6303                    return e.isEqual(n) && a.isEqual(r)
6304                }).getOr(!1)
6305            }).getOr(!0)
6306        },
6307        Pf = function (e, t, n) {
6308            return ta(e, t, n).isSome()
6309        },
6310        Lf = function (e, t) {
6311            return Do.isText(t) && /^[ \t\r\n]*$/.test(t.data) && !1 === (n = e, r = t, o = er.fromDom(n), i = er.fromDom(r), Pf(i, "pre,code", b(Fr.eq, o)));
6312            var n, r, o, i
6313        },
6314        If = function (e, t) {
6315            return ja(t) && !1 === Lf(e, t) || (n = t, Do.isElement(n) && "A" === n.nodeName && n.hasAttribute("name")) || Mf(t);
6316            var n
6317        },
6318        Mf = Do.hasAttribute("data-mce-bookmark"),
6319        Ff = Do.hasAttribute("data-mce-bogus"),
6320        Uf = Do.hasAttributeValue("data-mce-bogus", "all"),
6321        zf = function (e) {
6322            return function (e) {
6323                var t, n, r = 0;
6324                if (If(e, e)) return !1;
6325                if (!(n = e.firstChild)) return !0;
6326                t = new oo(n, e);
6327                do {
6328                    if (Uf(n)) n = t.next(!0);
6329                    else if (Ff(n)) n = t.next();
6330                    else if (Do.isBr(n)) r++, n = t.next();
6331                    else {
6332                        if (If(e, n)) return !1;
6333                        n = t.next()
6334                    }
6335                } while (n);
6336                return r <= 1
6337            }(e.dom())
6338        },
6339        Vf = kr("block", "position"),
6340        qf = kr("from", "to"),
6341        Hf = function (e, t) {
6342            var n = er.fromDom(e),
6343                r = er.fromDom(t.container());
6344            return Df(n, r).map(function (e) {
6345                return Vf(e, t)
6346            })
6347        },
6348        jf = function (o, i, e) {
6349            var t = Hf(o, Su.fromRangeStart(e)),
6350                n = t.bind(function (e) {
6351                    return fl.fromPosition(i, o, e.position()).bind(function (e) {
6352                        return Hf(o, e).map(function (e) {
6353                            return t = o, n = i, r = e, Do.isBr(r.position().getNode()) && !1 === zf(r.block()) ? fl.positionIn(!1, r.block().dom()).bind(function (e) {
6354                                return e.isEqual(r.position()) ? fl.fromPosition(n, t, e).bind(function (e) {
6355                                    return Hf(t, e)
6356                                }) : A.some(r)
6357                            }).getOr(r) : r;
6358                            var t, n, r
6359                        })
6360                    })
6361                });
6362            return ru([t, n], qf).filter(function (e) {
6363                return r = e, !1 === Fr.eq(r.from().block(), r.to().block()) && (n = e, $r.parent(n.from().block()).bind(function (t) {
6364                    return $r.parent(n.to().block()).filter(function (e) {
6365                        return Fr.eq(t, e)
6366                    })
6367                }).isSome()) && (t = e, !1 === Do.isContentEditableFalse(t.from().block()) && !1 === Do.isContentEditableFalse(t.to().block()));
6368                var t, n, r
6369            })
6370        },
6371        $f = function (e, t, n) {
6372            return n.collapsed ? jf(e, t, n) : A.none()
6373        },
6374        Wf = function (e, t, n) {
6375            return Fr.contains(t, e) ? $r.parents(e, function (e) {
6376                return n(e) || Fr.eq(e, t)
6377            }).slice(0, -1) : []
6378        },
6379        Kf = function (e, t) {
6380            return Wf(e, t, H(!1))
6381        },
6382        Xf = Kf,
6383        Yf = function (e, t) {
6384            return [e].concat(Kf(e, t))
6385        },
6386        Gf = function (e) {
6387            var t, n, r = (t = e, n = $r.children(t), K(n, lo).fold(function () {
6388                return n
6389            }, function (e) {
6390                return n.slice(0, e)
6391            }));
6392            return F(r, Ri.remove), r
6393        },
6394        Jf = function (e, t) {
6395            var n = Yf(t, e);
6396            return V(n.reverse(), zf).each(Ri.remove)
6397        },
6398        Qf = function (e, t, n, r) {
6399            if (zf(n)) return af(n), fl.firstPositionIn(n.dom());
6400            var o;
6401            o = r, 0 === U($r.prevSiblings(o), function (e) {
6402                return !zf(e)
6403            }).length && zf(t) && Ti.before(r, er.fromTag("br"));
6404            var i = fl.prevPosition(n.dom(), Su.before(r.dom()));
6405            return F(Gf(t), function (e) {
6406                Ti.before(r, e)
6407            }), Jf(e, t), i
6408        },
6409        Zf = function (e, t, n) {
6410            if (zf(n)) return Ri.remove(n), zf(t) && af(t), fl.firstPositionIn(t.dom());
6411            var r = fl.lastPositionIn(n.dom());
6412            return F(Gf(t), function (e) {
6413                Ti.append(n, e)
6414            }), Jf(e, t), r
6415        },
6416        ed = function (e, t) {
6417            return Fr.contains(t, e) ? (n = Yf(e, t), A.from(n[n.length - 1])) : A.none();
6418            var n
6419        },
6420        td = function (e, t) {
6421            fl.positionIn(e, t.dom()).map(function (e) {
6422                return e.getNode()
6423            }).map(er.fromDom).filter(mo).each(Ri.remove)
6424        },
6425        nd = function (e, t, n) {
6426            return td(!0, t), td(!1, n), ed(t, n).fold(b(Zf, e, t, n), b(Qf, e, t, n))
6427        },
6428        rd = function (e, t, n, r) {
6429            return t ? nd(e, r, n) : nd(e, n, r)
6430        },
6431        od = function (t, n) {
6432            var e, r = er.fromDom(t.getBody());
6433            return (e = $f(r.dom(), n, t.selection.getRng()).bind(function (e) {
6434                return rd(r, n, e.from().block(), e.to().block())
6435            })).each(function (e) {
6436                t.selection.setRng(e.toRange())
6437            }), e.isSome()
6438        },
6439        id = function (e, t) {
6440            var n = er.fromDom(t),
6441                r = b(Fr.eq, e);
6442            return Zi.ancestor(n, yo, r).isSome()
6443        },
6444        ad = function (e, t) {
6445            var n, r, o = fl.prevPosition(e.dom(), Su.fromRangeStart(t)).isNone(),
6446                i = fl.nextPosition(e.dom(), Su.fromRangeEnd(t)).isNone();
6447            return !(id(n = e, (r = t).startContainer) || id(n, r.endContainer)) && o && i
6448        },
6449        ud = function (e) {
6450            var n, r, o, t, i = er.fromDom(e.getBody()),
6451                a = e.selection.getRng();
6452            return ad(i, a) ? ((t = e).setContent(""), t.selection.setCursorLocation(), !0) : (n = i, r = e.selection, o = r.getRng(), ru([Df(n, er.fromDom(o.startContainer)), Df(n, er.fromDom(o.endContainer))], function (e, t) {
6453                return !1 === Fr.eq(e, t) && (o.deleteContents(), rd(n, !0, e, t).each(function (e) {
6454                    r.setRng(e.toRange())
6455                }), !0)
6456            }).getOr(!1))
6457        },
6458        sd = function (e, t) {
6459            return !e.selection.isCollapsed() && ud(e)
6460        },
6461        cd = function (a) {
6462            if (!R(a)) throw new Error("cases must be an array");
6463            if (0 === a.length) throw new Error("there must be at least one case");
6464            var u = [],
6465                n = {};
6466            return F(a, function (e, r) {
6467                var t = cr(e);
6468                if (1 !== t.length) throw new Error("one and only one name per case");
6469                var o = t[0],
6470                    i = e[o];
6471                if (n[o] !== undefined) throw new Error("duplicate key detected:" + o);
6472                if ("cata" === o) throw new Error("cannot have a case named cata (sorry)");
6473                if (!R(i)) throw new Error("case arguments must be an array");
6474                u.push(o), n[o] = function () {
6475                    var e = arguments.length;
6476                    if (e !== i.length) throw new Error("Wrong number of arguments to case " + o + ". Expected " + i.length + " (" + i + "), got " + e);
6477                    for (var n = new Array(e), t = 0; t < n.length; t++) n[t] = arguments[t];
6478                    return {
6479                        fold: function () {
6480                            if (arguments.length !== a.length) throw new Error("Wrong number of arguments to fold. Expected " + a.length + ", got " + arguments.length);
6481                            return arguments[r].apply(null, n)
6482                        },
6483                        match: function (e) {
6484                            var t = cr(e);
6485                            if (u.length !== t.length) throw new Error("Wrong number of arguments to match. Expected: " + u.join(",") + "\nActual: " + t.join(","));
6486                            if (!J(u, function (e) {
6487                                    return I(t, e)
6488                                })) throw new Error("Not all branches were specified when using match. Specified: " + t.join(", ") + "\nRequired: " + u.join(", "));
6489                            return e[o].apply(null, n)
6490                        },
6491                        log: function (e) {
6492                            console.log(e, {
6493                                constructors: u,
6494                                constructor: o,
6495                                params: n
6496                            })
6497                        }
6498                    }
6499                }
6500            }), n
6501        },
6502        ld = cd([{
6503            remove: ["element"]
6504        }, {
6505            moveToElement: ["element"]
6506        }, {
6507            moveToPosition: ["position"]
6508        }]),
6509        fd = function (e, t, n, r) {
6510            var o = r.getNode(!1 === t);
6511            return Df(er.fromDom(e), er.fromDom(n.getNode())).map(function (e) {
6512                return zf(e) ? ld.remove(e.dom()) : ld.moveToElement(o)
6513            }).orThunk(function () {
6514                return A.some(ld.moveToElement(o))
6515            })
6516        },
6517        dd = function (u, s, c) {
6518            return fl.fromPosition(s, u, c).bind(function (e) {
6519                return a = e.getNode(), yo(er.fromDom(a)) || ho(er.fromDom(a)) ? A.none() : (t = u, o = e, i = function (e) {
6520                    return fo(er.fromDom(e)) && !jc(r, o, t)
6521                }, Zc(!(n = s), r = c).fold(function () {
6522                    return Zc(n, o).fold(H(!1), i)
6523                }, i) ? A.none() : s && Do.isContentEditableFalse(e.getNode()) ? fd(u, s, c, e) : !1 === s && Do.isContentEditableFalse(e.getNode(!0)) ? fd(u, s, c, e) : s && nl(c) ? A.some(ld.moveToPosition(e)) : !1 === s && tl(c) ? A.some(ld.moveToPosition(e)) : A.none());
6524                var t, n, r, o, i, a
6525            })
6526        },
6527        md = function (r, e, o) {
6528            return i = e, a = o.getNode(!1 === i), u = i ? "after" : "before", Do.isElement(a) && a.getAttribute("data-mce-caret") === u ? (t = e, n = o.getNode(!1 === e), t && Do.isContentEditableFalse(n.nextSibling) ? A.some(ld.moveToElement(n.nextSibling)) : !1 === t && Do.isContentEditableFalse(n.previousSibling) ? A.some(ld.moveToElement(n.previousSibling)) : A.none()).fold(function () {
6529                return dd(r, e, o)
6530            }, A.some) : dd(r, e, o).bind(function (e) {
6531                return t = r, n = o, e.fold(function (e) {
6532                    return A.some(ld.remove(e))
6533                }, function (e) {
6534                    return A.some(ld.moveToElement(e))
6535                }, function (e) {
6536                    return jc(n, e, t) ? A.none() : A.some(ld.moveToPosition(e))
6537                });
6538                var t, n
6539            });
6540            var t, n, i, a, u
6541        },
6542        gd = function (e, t) {
6543            return r = e, o = (n = t).container(), i = n.offset(), !1 === Su.isTextPosition(n) && o === r.parentNode && i > Su.before(r).offset() ? Su(t.container(), t.offset() - 1) : t;
6544            var n, r, o, i
6545        },
6546        pd = function (e) {
6547            return ja(e.previousSibling) ? A.some((t = e.previousSibling, Do.isText(t) ? Su(t, t.data.length) : Su.after(t))) : e.previousSibling ? fl.lastPositionIn(e.previousSibling) : A.none();
6548            var t
6549        },
6550        hd = function (e) {
6551            return ja(e.nextSibling) ? A.some((t = e.nextSibling, Do.isText(t) ? Su(t, 0) : Su.before(t))) : e.nextSibling ? fl.firstPositionIn(e.nextSibling) : A.none();
6552            var t
6553        },
6554        vd = function (r, o) {
6555            return pd(o).orThunk(function () {
6556                return hd(o)
6557            }).orThunk(function () {
6558                return e = r, t = o, n = Su.before(t.previousSibling ? t.previousSibling : t.parentNode), fl.prevPosition(e, n).fold(function () {
6559                    return fl.nextPosition(e, Su.after(t))
6560                }, A.some);
6561                var e, t, n
6562            })
6563        },
6564        bd = function (n, r) {
6565            return hd(r).orThunk(function () {
6566                return pd(r)
6567            }).orThunk(function () {
6568                return e = n, t = r, fl.nextPosition(e, Su.after(t)).fold(function () {
6569                    return fl.prevPosition(e, Su.before(t))
6570                }, A.some);
6571                var e, t
6572            })
6573        },
6574        yd = function (e, t, n) {
6575            return (r = e, o = t, i = n, r ? bd(o, i) : vd(o, i)).map(b(gd, n));
6576            var r, o, i
6577        },
6578        Cd = function (t, n, e) {
6579            e.fold(function () {
6580                t.focus()
6581            }, function (e) {
6582                t.selection.setRng(e.toRange(), n)
6583            })
6584        },
6585        xd = function (e, t) {
6586            return t && e.schema.getBlockElements().hasOwnProperty(sr.name(t))
6587        },
6588        wd = function (e) {
6589            if (zf(e)) {
6590                var t = er.fromHtml('<br data-mce-bogus="1">');
6591                return Ri.empty(e), Ti.append(e, t), A.some(Su.before(t.dom()))
6592            }
6593            return A.none()
6594        },
6595        Nd = function (t, n, e) {
6596            var r, a, o, i = yd(n, t.getBody(), e.dom()),
6597                u = Zi.ancestor(e, b(xd, t), (r = t.getBody(), function (e) {
6598                    return e.dom() === r
6599                })),
6600                s = (a = e, o = i, ru([$r.prevSibling(a), $r.nextSibling(a), o], function (e, t, n) {
6601                    var r, o = e.dom(),
6602                        i = t.dom();
6603                    return Do.isText(o) && Do.isText(i) ? (r = o.data.length, o.appendData(i.data), Ri.remove(t), Ri.remove(a), n.container() === i ? Su(o, r) : n) : (Ri.remove(a), n)
6604                }).orThunk(function () {
6605                    return Ri.remove(a), o
6606                }));
6607            t.dom.isEmpty(t.getBody()) ? (t.setContent(""), t.selection.setCursorLocation()) : u.bind(wd).fold(function () {
6608                Cd(t, n, s)
6609            }, function (e) {
6610                Cd(t, n, A.some(e))
6611            })
6612        },
6613        Ed = function (a, u) {
6614            var e, t, n, r, o;
6615            return (e = a.getBody(), t = u, n = a.selection.getRng(), r = Gc(t ? 1 : -1, e, n), o = Su.fromRangeStart(r), !1 === t && nl(o) ? A.some(ld.remove(o.getNode(!0))) : t && tl(o) ? A.some(ld.remove(o.getNode())) : md(e, t, o)).map(function (e) {
6616                return e.fold((o = a, i = u, function (e) {
6617                    return o._selectionOverrides.hideFakeCaret(), Nd(o, i, er.fromDom(e)), !0
6618                }), (n = a, r = u, function (e) {
6619                    var t = r ? Su.before(e) : Su.after(e);
6620                    return n.selection.setRng(t.toRange()), !0
6621                }), (t = a, function (e) {
6622                    return t.selection.setRng(e.toRange()), !0
6623                }));
6624                var t, n, r, o, i
6625            }).getOr(!1)
6626        },
6627        Sd = function (e, t) {
6628            var n, r = e.selection.getNode();
6629            return !!Do.isContentEditableFalse(r) && (n = er.fromDom(e.getBody()), F(Ki(n, ".mce-offscreen-selection"), Ri.remove), Nd(e, t, er.fromDom(e.selection.getNode())), Bf(e), !0)
6630        },
6631        Td = function (e, t) {
6632            return e.selection.isCollapsed() ? Ed(e, t) : Sd(e, t)
6633        },
6634        kd = function (e) {
6635            var t, n = function (e, t) {
6636                for (; t && t !== e;) {
6637                    if (Do.isContentEditableTrue(t) || Do.isContentEditableFalse(t)) return t;
6638                    t = t.parentNode
6639                }
6640                return null
6641            }(e.getBody(), e.selection.getNode());
6642            return Do.isContentEditableTrue(n) && e.dom.isBlock(n) && e.dom.isEmpty(n) && (t = e.dom.create("br", {
6643                "data-mce-bogus": "1"
6644            }), e.dom.setHTML(n, ""), n.appendChild(t), e.selection.setRng(Su.before(t).toRange())), !0
6645        },
6646        Ad = Do.isText,
6647        _d = function (e) {
6648            return Ad(e) && e.data[0] === wa
6649        },
6650        Rd = function (e) {
6651            return Ad(e) && e.data[e.data.length - 1] === wa
6652        },
6653        Dd = function (e) {
6654            return e.ownerDocument.createTextNode(wa)
6655        },
6656        Bd = function (e, t) {
6657            return e ? function (e) {
6658                if (Ad(e.previousSibling)) return Rd(e.previousSibling) || e.previousSibling.appendData(wa), e.previousSibling;
6659                if (Ad(e)) return _d(e) || e.insertData(0, wa), e;
6660                var t = Dd(e);
6661                return e.parentNode.insertBefore(t, e), t
6662            }(t) : function (e) {
6663                if (Ad(e.nextSibling)) return _d(e.nextSibling) || e.nextSibling.insertData(0, wa), e.nextSibling;
6664                if (Ad(e)) return Rd(e) || e.appendData(wa), e;
6665                var t = Dd(e);
6666                return e.nextSibling ? e.parentNode.insertBefore(t, e.nextSibling) : e.parentNode.appendChild(t), t
6667            }(t)
6668        },
6669        Od = b(Bd, !0),
6670        Pd = b(Bd, !1),
6671        Ld = function (e, t) {
6672            return Do.isText(e.container()) ? Bd(t, e.container()) : Bd(t, e.getNode())
6673        },
6674        Id = function (e, t) {
6675            var n = t.get();
6676            return n && e.container() === n && ka(n)
6677        },
6678        Md = function (n, e) {
6679            return e.fold(function (e) {
6680                os.remove(n.get());
6681                var t = Od(e);
6682                return n.set(t), A.some(Su(t, t.length - 1))
6683            }, function (e) {
6684                return fl.firstPositionIn(e).map(function (e) {
6685                    if (Id(e, n)) return Su(n.get(), 1);
6686                    os.remove(n.get());
6687                    var t = Ld(e, !0);
6688                    return n.set(t), Su(t, 1)
6689                })
6690            }, function (e) {
6691                return fl.lastPositionIn(e).map(function (e) {
6692                    if (Id(e, n)) return Su(n.get(), n.get().length - 1);
6693                    os.remove(n.get());
6694                    var t = Ld(e, !1);
6695                    return n.set(t), Su(t, t.length - 1)
6696                })
6697            }, function (e) {
6698                os.remove(n.get());
6699                var t = Pd(e);
6700                return n.set(t), A.some(Su(t, 1))
6701            })
6702        },
6703        Fd = function (e, t) {
6704            for (var n = 0; n < e.length; n++) {
6705                var r = e[n].apply(null, t);
6706                if (r.isSome()) return r
6707            }
6708            return A.none()
6709        },
6710        Ud = cd([{
6711            before: ["element"]
6712        }, {
6713            start: ["element"]
6714        }, {
6715            end: ["element"]
6716        }, {
6717            after: ["element"]
6718        }]),
6719        zd = function (e, t) {
6720            var n = Hc(t, e);
6721            return n || e
6722        },
6723        Vd = function (e, t, n) {
6724            var r = Rf.normalizeForwards(n),
6725                o = zd(t, r.container());
6726            return Rf.findRootInline(e, o, r).fold(function () {
6727                return fl.nextPosition(o, r).bind(b(Rf.findRootInline, e, o)).map(function (e) {
6728                    return Ud.before(e)
6729                })
6730            }, A.none)
6731        },
6732        qd = function (e, t) {
6733            return null === Xu(e, t)
6734        },
6735        Hd = function (e, t, n) {
6736            return Rf.findRootInline(e, t, n).filter(b(qd, t))
6737        },
6738        jd = function (e, t, n) {
6739            var r = Rf.normalizeBackwards(n);
6740            return Hd(e, t, r).bind(function (e) {
6741                return fl.prevPosition(e, r).isNone() ? A.some(Ud.start(e)) : A.none()
6742            })
6743        },
6744        $d = function (e, t, n) {
6745            var r = Rf.normalizeForwards(n);
6746            return Hd(e, t, r).bind(function (e) {
6747                return fl.nextPosition(e, r).isNone() ? A.some(Ud.end(e)) : A.none()
6748            })
6749        },
6750        Wd = function (e, t, n) {
6751            var r = Rf.normalizeBackwards(n),
6752                o = zd(t, r.container());
6753            return Rf.findRootInline(e, o, r).fold(function () {
6754                return fl.prevPosition(o, r).bind(b(Rf.findRootInline, e, o)).map(function (e) {
6755                    return Ud.after(e)
6756                })
6757            }, A.none)
6758        },
6759        Kd = function (e) {
6760            return !1 === Rf.isRtl(Yd(e))
6761        },
6762        Xd = function (e, t, n) {
6763            return Fd([Vd, jd, $d, Wd], [e, t, n]).filter(Kd)
6764        },
6765        Yd = function (e) {
6766            return e.fold(j, j, j, j)
6767        },
6768        Gd = function (e) {
6769            return e.fold(H("before"), H("start"), H("end"), H("after"))
6770        },
6771        Jd = function (e) {
6772            return e.fold(Ud.before, Ud.before, Ud.after, Ud.after)
6773        },
6774        Qd = function (n, e, r, t, o, i) {
6775            return ru([Rf.findRootInline(e, r, t), Rf.findRootInline(e, r, o)], function (e, t) {
6776                return e !== t && Rf.hasSameParentBlock(r, e, t) ? Ud.after(n ? e : t) : i
6777            }).getOr(i)
6778        },
6779        Zd = function (e, r) {
6780            return e.fold(H(!0), function (e) {
6781                return n = r, !(Gd(t = e) === Gd(n) && Yd(t) === Yd(n));
6782                var t, n
6783            })
6784        },
6785        em = function (e, t) {
6786            return e ? t.fold(q(A.some, Ud.start), A.none, q(A.some, Ud.after), A.none) : t.fold(A.none, q(A.some, Ud.before), A.none, q(A.some, Ud.end))
6787        },
6788        tm = function (a, u, s, c) {
6789            var e = Rf.normalizePosition(a, c),
6790                l = Xd(u, s, e);
6791            return Xd(u, s, e).bind(b(em, a)).orThunk(function () {
6792                return t = a, n = u, r = s, o = l, e = c, i = Rf.normalizePosition(t, e), fl.fromPosition(t, r, i).map(b(Rf.normalizePosition, t)).fold(function () {
6793                    return o.map(Jd)
6794                }, function (e) {
6795                    return Xd(n, r, e).map(b(Qd, t, n, r, i, e)).filter(b(Zd, o))
6796                }).filter(Kd);
6797                var t, n, r, o, e, i
6798            })
6799        },
6800        nm = Xd,
6801        rm = tm,
6802        om = (b(tm, !1), b(tm, !0), Jd),
6803        im = function (e) {
6804            return e.fold(Ud.start, Ud.start, Ud.end, Ud.end)
6805        },
6806        am = function (e) {
6807            return O(e.selection.getSel().modify)
6808        },
6809        um = function (e, t, n) {
6810            var r = e ? 1 : -1;
6811            return t.setRng(Su(n.container(), n.offset() + r).toRange()), t.getSel().modify("move", e ? "forward" : "backward", "word"), !0
6812        },
6813        sm = function (e, t) {
6814            var n = t.selection.getRng(),
6815                r = e ? Su.fromRangeEnd(n) : Su.fromRangeStart(n);
6816            return !!am(t) && (e && Ra(r) ? um(!0, t.selection, r) : !(e || !Da(r)) && um(!1, t.selection, r))
6817        },
6818        cm = function (e, t) {
6819            var n = e.dom.createRng();
6820            n.setStart(t.container(), t.offset()), n.setEnd(t.container(), t.offset()), e.selection.setRng(n)
6821        },
6822        lm = function (e) {
6823            return !1 !== e.settings.inline_boundaries
6824        },
6825        fm = function (e, t) {
6826            e ? t.setAttribute("data-mce-selected", "inline-boundary") : t.removeAttribute("data-mce-selected")
6827        },
6828        dm = function (t, e, n) {
6829            return Md(e, n).map(function (e) {
6830                return cm(t, e), n
6831            })
6832        },
6833        mm = function (e, t, n) {
6834            return function () {
6835                return !!lm(t) && sm(e, t)
6836            }
6837        },
6838        gm = {
6839            move: function (a, u, s) {
6840                return function () {
6841                    return !!lm(a) && (t = a, n = u, e = s, r = t.getBody(), o = Su.fromRangeStart(t.selection.getRng()), i = b(Rf.isInlineTarget, t), rm(e, i, r, o).bind(function (e) {
6842                        return dm(t, n, e)
6843                    })).isSome();
6844                    var t, n, e, r, o, i
6845                }
6846            },
6847            moveNextWord: b(mm, !0),
6848            movePrevWord: b(mm, !1),
6849            setupSelectedState: function (a) {
6850                var u = Bi(null),
6851                    s = b(Rf.isInlineTarget, a);
6852                return a.on("NodeChange", function (e) {
6853                    var t, n, r, o, i;
6854                    lm(a) && (t = s, n = a.dom, r = e.parents, o = U(n.select('*[data-mce-selected="inline-boundary"]'), t), i = U(r, t), F(Z(o, i), b(fm, !1)), F(Z(i, o), b(fm, !0)), function (e, t) {
6855                        if (e.selection.isCollapsed() && !0 !== e.composing && t.get()) {
6856                            var n = Su.fromRangeStart(e.selection.getRng());
6857                            Su.isTextPosition(n) && !1 === Rf.isAtZwsp(n) && (cm(e, os.removeAndReposition(t.get(), n)), t.set(null))
6858                        }
6859                    }(a, u), function (n, r, o, e) {
6860                        if (r.selection.isCollapsed()) {
6861                            var t = U(e, n);
6862                            F(t, function (e) {
6863                                var t = Su.fromRangeStart(r.selection.getRng());
6864                                nm(n, r.getBody(), t).bind(function (e) {
6865                                    return dm(r, o, e)
6866                                })
6867                            })
6868                        }
6869                    }(s, a, u, e.parents))
6870                }), u
6871            },
6872            setCaretPosition: cm
6873        },
6874        pm = function (t, n) {
6875            return function (e) {
6876                return Md(n, e).map(function (e) {
6877                    return gm.setCaretPosition(t, e), !0
6878                }).getOr(!1)
6879            }
6880        },
6881        hm = function (r, o, i, a) {
6882            var u = r.getBody(),
6883                s = b(Rf.isInlineTarget, r);
6884            r.undoManager.ignore(function () {
6885                var e, t, n;
6886                r.selection.setRng((e = i, t = a, (n = document.createRange()).setStart(e.container(), e.offset()), n.setEnd(t.container(), t.offset()), n)), r.execCommand("Delete"), nm(s, u, Su.fromRangeStart(r.selection.getRng())).map(im).map(pm(r, o))
6887            }), r.nodeChanged()
6888        },
6889        vm = function (n, r, i, o) {
6890            var e, t, a = (e = n.getBody(), t = o.container(), Hc(t, e) || e),
6891                u = b(Rf.isInlineTarget, n),
6892                s = nm(u, a, o);
6893            return s.bind(function (e) {
6894                return i ? e.fold(H(A.some(im(e))), A.none, H(A.some(om(e))), A.none) : e.fold(A.none, H(A.some(om(e))), A.none, H(A.some(im(e))))
6895            }).map(pm(n, r)).getOrThunk(function () {
6896                var t = fl.navigate(i, a, o),
6897                    e = t.bind(function (e) {
6898                        return nm(u, a, e)
6899                    });
6900                return s.isSome() && e.isSome() ? Rf.findRootInline(u, a, o).map(function (e) {
6901                    return o = e, !!ru([fl.firstPositionIn(o), fl.lastPositionIn(o)], function (e, t) {
6902                        var n = Rf.normalizePosition(!0, e),
6903                            r = Rf.normalizePosition(!1, t);
6904                        return fl.nextPosition(o, n).map(function (e) {
6905                            return e.isEqual(r)
6906                        }).getOr(!0)
6907                    }).getOr(!0) && (Nd(n, i, er.fromDom(e)), !0);
6908                    var o
6909                }).getOr(!1) : e.bind(function (e) {
6910                    return t.map(function (e) {
6911                        return i ? hm(n, r, o, e) : hm(n, r, e, o), !0
6912                    })
6913                }).getOr(!1)
6914            })
6915        },
6916        bm = function (e, t, n) {
6917            if (e.selection.isCollapsed() && !1 !== e.settings.inline_boundaries) {
6918                var r = Su.fromRangeStart(e.selection.getRng());
6919                return vm(e, t, n, r)
6920            }
6921            return !1
6922        },
6923        ym = kr("start", "end"),
6924        Cm = kr("rng", "table", "cells"),
6925        xm = cd([{
6926            removeTable: ["element"]
6927        }, {
6928            emptyCells: ["cells"]
6929        }]),
6930        wm = function (e, t) {
6931            return ra(er.fromDom(e), "td,th", t)
6932        },
6933        Nm = function (e, t) {
6934            return ta(e, "table", t)
6935        },
6936        Em = function (e) {
6937            return !1 === Fr.eq(e.start(), e.end())
6938        },
6939        Sm = function (e, n) {
6940            return Nm(e.start(), n).bind(function (t) {
6941                return Nm(e.end(), n).bind(function (e) {
6942                    return Fr.eq(t, e) ? A.some(t) : A.none()
6943                })
6944            })
6945        },
6946        Tm = function (e) {
6947            return Ki(e, "td,th")
6948        },
6949        km = function (r, e) {
6950            var t = wm(e.startContainer, r),
6951                n = wm(e.endContainer, r);
6952            return e.collapsed ? A.none() : ru([t, n], ym).fold(function () {
6953                return t.fold(function () {
6954                    return n.bind(function (t) {
6955                        return Nm(t, r).bind(function (e) {
6956                            return ee(Tm(e)).map(function (e) {
6957                                return ym(e, t)
6958                            })
6959                        })
6960                    })
6961                }, function (t) {
6962                    return Nm(t, r).bind(function (e) {
6963                        return te(Tm(e)).map(function (e) {
6964                            return ym(t, e)
6965                        })
6966                    })
6967                })
6968            }, function (e) {
6969                return Am(r, e) ? A.none() : (n = r, Nm((t = e).start(), n).bind(function (e) {
6970                    return te(Tm(e)).map(function (e) {
6971                        return ym(t.start(), e)
6972                    })
6973                }));
6974                var t, n
6975            })
6976        },
6977        Am = function (e, t) {
6978            return Sm(t, e).isSome()
6979        },
6980        _m = function (e, t) {
6981            var n, r, o, i, a, u = (n = e, b(Fr.eq, n));
6982            return (r = t, o = u, i = wm(r.startContainer, o), a = wm(r.endContainer, o), ru([i, a], ym).filter(Em).filter(function (e) {
6983                return Am(o, e)
6984            }).orThunk(function () {
6985                return km(o, r)
6986            })).bind(function (e) {
6987                return Sm(t = e, u).map(function (e) {
6988                    return Cm(t, e, Tm(e))
6989                });
6990                var t
6991            })
6992        },
6993        Rm = function (e, t) {
6994            return K(e, function (e) {
6995                return Fr.eq(e, t)
6996            })
6997        },
6998        Dm = function (n) {
6999            return (r = n, ru([Rm(r.cells(), r.rng().start()), Rm(r.cells(), r.rng().end())], function (e, t) {
7000                return r.cells().slice(e, t + 1)
7001            })).map(function (e) {
7002                var t = n.cells();
7003                return e.length === t.length ? xm.removeTable(n.table()) : xm.emptyCells(e)
7004            });
7005            var r
7006        },
7007        Bm = function (e, t) {
7008            return _m(e, t).bind(Dm)
7009        },
7010        Om = function (e) {
7011            var t = [];
7012            if (e)
7013                for (var n = 0; n < e.rangeCount; n++) t.push(e.getRangeAt(n));
7014            return t
7015        },
7016        Pm = Om,
7017        Lm = function (e) {
7018            return G(e, function (e) {
7019                var t = Za(e);
7020                return t ? [er.fromDom(t)] : []
7021            })
7022        },
7023        Im = function (e) {
7024            return 1 < Om(e).length
7025        },
7026        Mm = function (e) {
7027            return U(Lm(e), yo)
7028        },
7029        Fm = function (e) {
7030            return Ki(e, "td[data-mce-selected],th[data-mce-selected]")
7031        },
7032        Um = function (e, t) {
7033            var n = Fm(t),
7034                r = Mm(e);
7035            return 0 < n.length ? n : r
7036        },
7037        zm = Um,
7038        Vm = function (e) {
7039            return Um(Pm(e.selection.getSel()), er.fromDom(e.getBody()))
7040        },
7041        qm = function (e, t) {
7042            return F(t, af), e.selection.setCursorLocation(t[0].dom(), 0), !0
7043        },
7044        Hm = function (e, t) {
7045            return Nd(e, !1, t), !0
7046        },
7047        jm = function (n, e, r, t) {
7048            return Wm(e, t).fold(function () {
7049                return t = n, Bm(e, r).map(function (e) {
7050                    return e.fold(b(Hm, t), b(qm, t))
7051                });
7052                var t
7053            }, function (e) {
7054                return Km(n, e)
7055            }).getOr(!1)
7056        },
7057        $m = function (e, t) {
7058            return V(Yf(t, e), yo)
7059        },
7060        Wm = function (e, t) {
7061            return V(Yf(t, e), function (e) {
7062                return "caption" === sr.name(e)
7063            })
7064        },
7065        Km = function (e, t) {
7066            return af(t), e.selection.setCursorLocation(t.dom(), 0), A.some(!0)
7067        },
7068        Xm = function (u, s, c, l, f) {
7069            return fl.navigate(c, u.getBody(), f).bind(function (e) {
7070                return r = l, o = c, i = f, a = e, fl.firstPositionIn(r.dom()).bind(function (t) {
7071                    return fl.lastPositionIn(r.dom()).map(function (e) {
7072                        return o ? i.isEqual(t) && a.isEqual(e) : i.isEqual(e) && a.isEqual(t)
7073                    })
7074                }).getOr(!0) ? Km(u, l) : (t = l, n = e, Wm(s, er.fromDom(n.getNode())).map(function (e) {
7075                    return !1 === Fr.eq(e, t)
7076                }));
7077                var t, n, r, o, i, a
7078            }).or(A.some(!0))
7079        },
7080        Ym = function (a, u, s, e) {
7081            var c = Su.fromRangeStart(a.selection.getRng());
7082            return $m(s, e).bind(function (e) {
7083                return zf(e) ? Km(a, e) : (t = a, n = s, r = u, o = e, i = c, fl.navigate(r, t.getBody(), i).bind(function (e) {
7084                    return $m(n, er.fromDom(e.getNode())).map(function (e) {
7085                        return !1 === Fr.eq(e, o)
7086                    })
7087                }));
7088                var t, n, r, o, i
7089            })
7090        },
7091        Gm = function (a, u, e) {
7092            var s = er.fromDom(a.getBody());
7093            return Wm(s, e).fold(function () {
7094                return Ym(a, u, s, e)
7095            }, function (e) {
7096                return t = a, n = u, r = s, o = e, i = Su.fromRangeStart(t.selection.getRng()), zf(o) ? Km(t, o) : Xm(t, r, n, o, i);
7097                var t, n, r, o, i
7098            }).getOr(!1)
7099        },
7100        Jm = function (e, t) {
7101            var n, r, o, i, a, u = er.fromDom(e.selection.getStart(!0)),
7102                s = Vm(e);
7103            return e.selection.isCollapsed() && 0 === s.length ? Gm(e, t, u) : (n = e, r = u, o = er.fromDom(n.getBody()), i = n.selection.getRng(), 0 !== (a = Vm(n)).length ? qm(n, a) : jm(n, o, i, r))
7104        },
7105        Qm = function (e, t) {
7106            e.getDoc().execCommand(t, !1, null)
7107        },
7108        Zm = function (e) {
7109            Td(e, !1) || bm(e, !1) || od(e, !1) || Jm(e) || sd(e, !1) || (Qm(e, "Delete"), Bf(e))
7110        },
7111        eg = function (e) {
7112            Td(e, !0) || bm(e, !0) || od(e, !0) || Jm(e) || sd(e, !0) || Qm(e, "ForwardDelete")
7113        },
7114        tg = function (s) {
7115            return function (u, e) {
7116                return A.from(e).map(er.fromDom).filter(sr.isElement).bind(function (e) {
7117                    return (r = s, o = u, i = e.dom(), a = function (e) {
7118                        return Tr(e, r)
7119                    }, Zi.closest(er.fromDom(i), function (e) {
7120                        return a(e).isSome()
7121                    }, function (e) {
7122                        return Fr.eq(er.fromDom(o), e)
7123                    }).bind(a)).or((t = s, n = e.dom(), A.from(pi.DOM.getStyle(n, t, !0))));
7124                    var t, n, r, o, i, a
7125                }).getOr("")
7126            }
7127        },
7128        ng = {
7129            getFontSize: tg("font-size"),
7130            getFontFamily: q(function (e) {
7131                return e.replace(/[\'\"\\]/g, "").replace(/,\s+/g, ",")
7132            }, tg("font-family")),
7133            toPt: function (e, t) {
7134                return /[0-9.]+px$/.test(e) ? (n = 72 * parseInt(e, 10) / 96, r = t || 0, o = Math.pow(10, r), Math.round(n * o) / o + "pt") : e;
7135                var n, r, o
7136            }
7137        },
7138        rg = function (e) {
7139            return fl.firstPositionIn(e.getBody()).map(function (e) {
7140                var t = e.container();
7141                return Do.isText(t) ? t.parentNode : t
7142            })
7143        },
7144        og = function (o) {
7145            return A.from(o.selection.getRng()).bind(function (e) {
7146                var t, n, r = o.getBody();
7147                return n = r, (t = e).startContainer === n && 0 === t.startOffset ? A.none() : A.from(o.selection.getStart(!0))
7148            })
7149        },
7150        ig = function (e, t) {
7151            if (/^[0-9\.]+$/.test(t)) {
7152                var n = parseInt(t, 10);
7153                if (1 <= n && n <= 7) {
7154                    var r = ac(e),
7155                        o = uc(e);
7156                    return o ? o[n - 1] || t : r[n - 1] || t
7157                }
7158                return t
7159            }
7160            return t
7161        },
7162        ag = function (e, t) {
7163            return e && t && e.startContainer === t.startContainer && e.startOffset === t.startOffset && e.endContainer === t.endContainer && e.endOffset === t.endOffset
7164        },
7165        ug = function (e, t, n) {
7166            return null !== function (e, t, n) {
7167                for (; e && e !== t;) {
7168                    if (n(e)) return e;
7169                    e = e.parentNode
7170                }
7171                return null
7172            }(e, t, n)
7173        },
7174        sg = function (e, t, n) {
7175            return ug(e, t, function (e) {
7176                return e.nodeName === n
7177            })
7178        },
7179        cg = function (e) {
7180            return e && "TABLE" === e.nodeName
7181        },
7182        lg = function (e, t, n) {
7183            for (var r = new oo(t, e.getParent(t.parentNode, e.isBlock) || e.getRoot()); t = r[n ? "prev" : "next"]();)
7184                if (Do.isBr(t)) return !0
7185        },
7186        fg = function (e, t, n, r, o) {
7187            var i, a, u, s, c, l, f = e.getRoot(),
7188                d = e.schema.getNonEmptyElements();
7189            if (u = e.getParent(o.parentNode, e.isBlock) || f, r && Do.isBr(o) && t && e.isEmpty(u)) return A.some(wu(o.parentNode, e.nodeIndex(o)));
7190            for (i = new oo(o, u); s = i[r ? "prev" : "next"]();) {
7191                if ("false" === e.getContentEditableParent(s) || (l = f, Aa(c = s) && !1 === ug(c, l, Ku))) return A.none();
7192                if (Do.isText(s) && 0 < s.nodeValue.length) return !1 === sg(s, f, "A") ? A.some(wu(s, r ? s.nodeValue.length : 0)) : A.none();
7193                if (e.isBlock(s) || d[s.nodeName.toLowerCase()]) return A.none();
7194                a = s
7195            }
7196            return n && a ? A.some(wu(a, 0)) : A.none()
7197        },
7198        dg = function (e, t, n, r) {
7199            var o, i, a, u, s, c, l, f, d, m, g = e.getRoot(),
7200                p = !1;
7201            if (o = r[(n ? "start" : "end") + "Container"], i = r[(n ? "start" : "end") + "Offset"], l = Do.isElement(o) && i === o.childNodes.length, s = e.schema.getNonEmptyElements(), c = n, Aa(o)) return A.none();
7202            if (Do.isElement(o) && i > o.childNodes.length - 1 && (c = !1), Do.isDocument(o) && (o = g, i = 0), o === g) {
7203                if (c && (u = o.childNodes[0 < i ? i - 1 : 0])) {
7204                    if (Aa(u)) return A.none();
7205                    if (s[u.nodeName] || cg(u)) return A.none()
7206                }
7207                if (o.hasChildNodes()) {
7208                    if (i = Math.min(!c && 0 < i ? i - 1 : i, o.childNodes.length - 1), o = o.childNodes[i], i = Do.isText(o) && l ? o.data.length : 0, !t && o === g.lastChild && cg(o)) return A.none();
7209                    if (function (e, t) {
7210                            for (; t && t !== e;) {
7211                                if (Do.isContentEditableFalse(t)) return !0;
7212                                t = t.parentNode
7213                            }
7214                            return !1
7215                        }(g, o) || Aa(o)) return A.none();
7216                    if (o.hasChildNodes() && !1 === cg(o)) {
7217                        a = new oo(u = o, g);
7218                        do {
7219                            if (Do.isContentEditableFalse(u) || Aa(u)) {
7220                                p = !1;
7221                                break
7222                            }
7223                            if (Do.isText(u) && 0 < u.nodeValue.length) {
7224                                i = c ? 0 : u.nodeValue.length, o = u, p = !0;
7225                                break
7226                            }
7227                            if (s[u.nodeName.toLowerCase()] && (!(f = u) || !/^(TD|TH|CAPTION)$/.test(f.nodeName))) {
7228                                i = e.nodeIndex(u), o = u.parentNode, c || i++, p = !0;
7229                                break
7230                            }
7231                        } while (u = c ? a.next() : a.prev())
7232                    }
7233                }
7234            }
7235            return t && (Do.isText(o) && 0 === i && fg(e, l, t, !0, o).each(function (e) {
7236                o = e.container(), i = e.offset(), p = !0
7237            }), Do.isElement(o) && ((u = o.childNodes[i]) || (u = o.childNodes[i - 1]), !u || !Do.isBr(u) || (m = "A", (d = u).previousSibling && d.previousSibling.nodeName === m) || lg(e, u, !1) || lg(e, u, !0) || fg(e, l, t, !0, u).each(function (e) {
7238                o = e.container(), i = e.offset(), p = !0
7239            }))), c && !t && Do.isText(o) && i === o.nodeValue.length && fg(e, l, t, !1, o).each(function (e) {
7240                o = e.container(), i = e.offset(), p = !0
7241            }), p ? A.some(wu(o, i)) : A.none()
7242        },
7243        mg = function (e, t) {
7244            var n = t.collapsed,
7245                r = t.cloneRange(),
7246                o = wu.fromRangeStart(t);
7247            return dg(e, n, !0, r).each(function (e) {
7248                n && wu.isAbove(o, e) || r.setStart(e.container(), e.offset())
7249            }), n || dg(e, n, !1, r).each(function (e) {
7250                r.setEnd(e.container(), e.offset())
7251            }), n && r.collapse(!0), ag(t, r) ? A.none() : A.some(r)
7252        },
7253        gg = function (e, t, n) {
7254            var r = e.create("span", {}, "&nbsp;");
7255            n.parentNode.insertBefore(r, n), t.scrollIntoView(r), e.remove(r)
7256        },
7257        pg = function (e, t, n, r) {
7258            var o = e.createRng();
7259            r ? (o.setStartBefore(n), o.setEndBefore(n)) : (o.setStartAfter(n), o.setEndAfter(n)), t.setRng(o)
7260        },
7261        hg = function (e, t) {
7262            var n, r, o = e.selection,
7263                i = e.dom,
7264                a = o.getRng();
7265            mg(i, a).each(function (e) {
7266                a.setStart(e.startContainer, e.startOffset), a.setEnd(e.endContainer, e.endOffset)
7267            });
7268            var u = a.startOffset,
7269                s = a.startContainer;
7270            if (1 === s.nodeType && s.hasChildNodes()) {
7271                var c = u > s.childNodes.length - 1;
7272                s = s.childNodes[Math.min(u, s.childNodes.length - 1)] || s, u = c && 3 === s.nodeType ? s.nodeValue.length : 0
7273            }
7274            var l = i.getParent(s, i.isBlock),
7275                f = l ? i.getParent(l.parentNode, i.isBlock) : null,
7276                d = f ? f.nodeName.toUpperCase() : "",
7277                m = t && t.ctrlKey;
7278            "LI" !== d || m || (l = f), s && 3 === s.nodeType && u >= s.nodeValue.length && (function (e, t, n) {
7279                for (var r, o = new oo(t, n), i = e.getNonEmptyElements(); r = o.next();)
7280                    if (i[r.nodeName.toLowerCase()] || 0 < r.length) return !0
7281            }(e.schema, s, l) || (n = i.create("br"), a.insertNode(n), a.setStartAfter(n), a.setEndAfter(n), r = !0)), n = i.create("br"), a.insertNode(n), gg(i, o, n), pg(i, o, n, r), e.undoManager.add()
7282        },
7283        vg = function (e, t) {
7284            var n = er.fromTag("br");
7285            Ti.before(er.fromDom(t), n), e.undoManager.add()
7286        },
7287        bg = function (e, t) {
7288            yg(e.getBody(), t) || Ti.after(er.fromDom(t), er.fromTag("br"));
7289            var n = er.fromTag("br");
7290            Ti.after(er.fromDom(t), n), gg(e.dom, e.selection, n.dom()), pg(e.dom, e.selection, n.dom(), !1), e.undoManager.add()
7291        },
7292        yg = function (e, t) {
7293            return n = Su.after(t), !!Do.isBr(n.getNode()) || fl.nextPosition(e, Su.after(t)).map(function (e) {
7294                return Do.isBr(e.getNode())
7295            }).getOr(!1);
7296            var n
7297        },
7298        Cg = function (e) {
7299            return e && "A" === e.nodeName && "href" in e
7300        },
7301        xg = function (e) {
7302            return e.fold(H(!1), Cg, Cg, H(!1))
7303        },
7304        wg = function (e, t) {
7305            t.fold(v, b(vg, e), b(bg, e), v)
7306        },
7307        Ng = function (e, t) {
7308            var n, r, o, i = (n = e, r = b(Rf.isInlineTarget, n), o = Su.fromRangeStart(n.selection.getRng()), nm(r, n.getBody(), o).filter(xg));
7309            i.isSome() ? i.each(b(wg, e)) : hg(e, t)
7310        },
7311        Eg = cd([{
7312            before: ["element"]
7313        }, {
7314            on: ["element", "offset"]
7315        }, {
7316            after: ["element"]
7317        }]),
7318        Sg = (Eg.before, Eg.on, Eg.after, function (e) {
7319            return e.fold(j, j, j)
7320        }),
7321        Tg = cd([{
7322            domRange: ["rng"]
7323        }, {
7324            relative: ["startSitu", "finishSitu"]
7325        }, {
7326            exact: ["start", "soffset", "finish", "foffset"]
7327        }]),
7328        kg = kr("start", "soffset", "finish", "foffset"),
7329        Ag = {
7330            domRange: Tg.domRange,
7331            relative: Tg.relative,
7332            exact: Tg.exact,
7333            exactFromRange: function (e) {
7334                return Tg.exact(e.start(), e.soffset(), e.finish(), e.foffset())
7335            },
7336            range: kg,
7337            getWin: function (e) {
7338                var t = e.match({
7339                    domRange: function (e) {
7340                        return er.fromDom(e.startContainer)
7341                    },
7342                    relative: function (e, t) {
7343                        return Sg(e)
7344                    },
7345                    exact: function (e, t, n, r) {
7346                        return e
7347                    }
7348                });
7349                return $r.defaultView(t)
7350            }
7351        },
7352        _g = Qn.detect().browser,
7353        Rg = function (e, t) {
7354            var n = sr.isText(t) ? Vl(t).length : $r.children(t).length + 1;
7355            return n < e ? n : e < 0 ? 0 : e
7356        },
7357        Dg = function (e) {
7358            return Ag.range(e.start(), Rg(e.soffset(), e.start()), e.finish(), Rg(e.foffset(), e.finish()))
7359        },
7360        Bg = function (e, t) {
7361            return Fr.contains(e, t) || Fr.eq(e, t)
7362        },
7363        Og = function (t) {
7364            return function (e) {
7365                return Bg(t, e.start()) && Bg(t, e.finish())
7366            }
7367        },
7368        Pg = function (e) {
7369            return !0 === e.inline || _g.isIE()
7370        },
7371        Lg = function (e) {
7372            return Ag.range(er.fromDom(e.startContainer), e.startOffset, er.fromDom(e.endContainer), e.endOffset)
7373        },
7374        Ig = function (e) {
7375            var t = e.getSelection();
7376            return (t && 0 !== t.rangeCount ? A.from(t.getRangeAt(0)) : A.none()).map(Lg)
7377        },
7378        Mg = function (e) {
7379            var t = $r.defaultView(e);
7380            return Ig(t.dom()).filter(Og(e))
7381        },
7382        Fg = function (e, t) {
7383            return A.from(t).filter(Og(e)).map(Dg)
7384        },
7385        Ug = function (e) {
7386            var t = document.createRange();
7387            try {
7388                return t.setStart(e.start().dom(), e.soffset()), t.setEnd(e.finish().dom(), e.foffset()), A.some(t)
7389            } catch (n) {
7390                return A.none()
7391            }
7392        },
7393        zg = function (e) {
7394            return (e.bookmark ? e.bookmark : A.none()).bind(b(Fg, er.fromDom(e.getBody()))).bind(Ug)
7395        },
7396        Vg = function (e) {
7397            var t = Pg(e) ? Mg(er.fromDom(e.getBody())) : A.none();
7398            e.bookmark = t.isSome() ? t : e.bookmark
7399        },
7400        qg = function (t) {
7401            zg(t).each(function (e) {
7402                t.selection.setRng(e)
7403            })
7404        },
7405        Hg = zg,
7406        jg = function (e, t) {
7407            var n = e.settings,
7408                r = e.dom,
7409                o = e.selection,
7410                i = e.formatter,
7411                a = /[a-z%]+$/i.exec(n.indentation)[0],
7412                u = parseInt(n.indentation, 10),
7413                s = e.getParam("indent_use_margin", !1);
7414            e.queryCommandState("InsertUnorderedList") || e.queryCommandState("InsertOrderedList") || (n.forced_root_block || r.getParent(o.getNode(), r.isBlock) || i.apply("div"), F(o.getSelectedBlocks(), function (e) {
7415                return function (e, t, n, r, o, i) {
7416                    if ("false" !== e.getContentEditable(i) && "LI" !== i.nodeName) {
7417                        var a = n ? "margin" : "padding";
7418                        if (a = "TABLE" === i.nodeName ? "margin" : a, a += "rtl" === e.getStyle(i, "direction", !0) ? "Right" : "Left", "outdent" === t) {
7419                            var u = Math.max(0, parseInt(i.style[a] || 0, 10) - r);
7420                            e.setStyle(i, a, u ? u + o : "")
7421                        } else u = parseInt(i.style[a] || 0, 10) + r + o, e.setStyle(i, a, u)
7422                    }
7423                }(r, t, s, u, a, e)
7424            }))
7425        },
7426        $g = Yt.each,
7427        Wg = Yt.extend,
7428        Kg = Yt.map,
7429        Xg = Yt.inArray;
7430
7431    function Yg(s) {
7432        var o, i, a, t, c = {
7433                state: {},
7434                exec: {},
7435                value: {}
7436            },
7437            n = s.settings;
7438        s.on("PreInit", function () {
7439            o = s.dom, i = s.selection, n = s.settings, a = s.formatter
7440        });
7441        var r = function (e) {
7442                var t;
7443                if (!s.quirks.isHidden() && !s.removed) {
7444                    if (e = e.toLowerCase(), t = c.state[e]) return t(e);
7445                    try {
7446                        return s.getDoc().queryCommandState(e)
7447                    } catch (n) {}
7448                    return !1
7449                }
7450            },
7451            e = function (e, n) {
7452                n = n || "exec", $g(e, function (t, e) {
7453                    $g(e.toLowerCase().split(","), function (e) {
7454                        c[n][e] = t
7455                    })
7456                })
7457            },
7458            u = function (e, t, n) {
7459                e = e.toLowerCase(), c.value[e] = function () {
7460                    return t.call(n || s)
7461                }
7462            };
7463        Wg(this, {
7464            execCommand: function (t, n, r, e) {
7465                var o, i, a = !1;
7466                if (!s.removed) {
7467                    if (/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t) || e && e.skip_focus ? qg(s) : s.focus(), (e = s.fire("BeforeExecCommand", {
7468                            command: t,
7469                            ui: n,
7470                            value: r
7471                        })).isDefaultPrevented()) return !1;
7472                    if (i = t.toLowerCase(), o = c.exec[i]) return o(i, n, r), s.fire("ExecCommand", {
7473                        command: t,
7474                        ui: n,
7475                        value: r
7476                    }), !0;
7477                    if ($g(s.plugins, function (e) {
7478                            if (e.execCommand && e.execCommand(t, n, r)) return s.fire("ExecCommand", {
7479                                command: t,
7480                                ui: n,
7481                                value: r
7482                            }), !(a = !0)
7483                        }), a) return a;
7484                    if (s.theme && s.theme.execCommand && s.theme.execCommand(t, n, r)) return s.fire("ExecCommand", {
7485                        command: t,
7486                        ui: n,
7487                        value: r
7488                    }), !0;
7489                    try {
7490                        a = s.getDoc().execCommand(t, n, r)
7491                    } catch (u) {}
7492                    return !!a && (s.fire("ExecCommand", {
7493                        command: t,
7494                        ui: n,
7495                        value: r
7496                    }), !0)
7497                }
7498            },
7499            queryCommandState: r,
7500            queryCommandValue: function (e) {
7501                var t;
7502                if (!s.quirks.isHidden() && !s.removed) {
7503                    if (e = e.toLowerCase(), t = c.value[e]) return t(e);
7504                    try {
7505                        return s.getDoc().queryCommandValue(e)
7506                    } catch (n) {}
7507                }
7508            },
7509            queryCommandSupported: function (e) {
7510                if (e = e.toLowerCase(), c.exec[e]) return !0;
7511                try {
7512                    return s.getDoc().queryCommandSupported(e)
7513                } catch (t) {}
7514                return !1
7515            },
7516            addCommands: e,
7517            addCommand: function (e, o, i) {
7518                e = e.toLowerCase(), c.exec[e] = function (e, t, n, r) {
7519                    return o.call(i || s, t, n, r)
7520                }
7521            },
7522            addQueryStateHandler: function (e, t, n) {
7523                e = e.toLowerCase(), c.state[e] = function () {
7524                    return t.call(n || s)
7525                }
7526            },
7527            addQueryValueHandler: u,
7528            hasCustomCommand: function (e) {
7529                return e = e.toLowerCase(), !!c.exec[e]
7530            }
7531        });
7532        var l = function (e, t, n) {
7533                return t === undefined && (t = !1), n === undefined && (n = null), s.getDoc().execCommand(e, t, n)
7534            },
7535            f = function (e) {
7536                return a.match(e)
7537            },
7538            d = function (e, t) {
7539                a.toggle(e, t ? {
7540                    value: t
7541                } : undefined), s.nodeChanged()
7542            },
7543            m = function (e) {
7544                t = i.getBookmark(e)
7545            },
7546            g = function () {
7547                i.moveToBookmark(t)
7548            };
7549        e({
7550            "mceResetDesignMode,mceBeginUndoLevel": function () {},
7551            "mceEndUndoLevel,mceAddUndoLevel": function () {
7552                s.undoManager.add()
7553            },
7554            "Cut,Copy,Paste": function (e) {
7555                var t, n = s.getDoc();
7556                try {
7557                    l(e)
7558                } catch (o) {
7559                    t = !0
7560                }
7561                if ("paste" !== e || n.queryCommandEnabled(e) || (t = !0), t || !n.queryCommandSupported(e)) {
7562                    var r = s.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");
7563                    Re.mac && (r = r.replace(/Ctrl\+/g, "\u2318+")), s.notificationManager.open({
7564                        text: r,
7565                        type: "error"
7566                    })
7567                }
7568            },
7569            unlink: function () {
7570                if (i.isCollapsed()) {
7571                    var e = s.dom.getParent(s.selection.getStart(), "a");
7572                    e && s.dom.remove(e, !0)
7573                } else a.remove("link")
7574            },
7575            "JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone": function (e) {
7576                var t = e.substring(7);
7577                "full" === t && (t = "justify"), $g("left,center,right,justify".split(","), function (e) {
7578                    t !== e && a.remove("align" + e)
7579                }), "none" !== t && d("align" + t)
7580            },
7581            "InsertUnorderedList,InsertOrderedList": function (e) {
7582                var t, n;
7583                l(e), (t = o.getParent(i.getNode(), "ol,ul")) && (n = t.parentNode, /^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName) && (m(), o.split(n, t), g()))
7584            },
7585            "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function (e) {
7586                d(e)
7587            },
7588            "ForeColor,HiliteColor": function (e, t, n) {
7589                d(e, n)
7590            },
7591            FontName: function (e, t, n) {
7592                var r, o;
7593                o = n, (r = s).formatter.toggle("fontname", {
7594                    value: ig(r, o)
7595                }), r.nodeChanged()
7596            },
7597            FontSize: function (e, t, n) {
7598                var r, o;
7599                o = n, (r = s).formatter.toggle("fontsize", {
7600                    value: ig(r, o)
7601                }), r.nodeChanged()
7602            },
7603            RemoveFormat: function (e) {
7604                a.remove(e)
7605            },
7606            mceBlockQuote: function () {
7607                d("blockquote")
7608            },
7609            FormatBlock: function (e, t, n) {
7610                return d(n || "p")
7611            },
7612            mceCleanup: function () {
7613                var e = i.getBookmark();
7614                s.setContent(s.getContent()), i.moveToBookmark(e)
7615            },
7616            mceRemoveNode: function (e, t, n) {
7617                var r = n || i.getNode();
7618                r !== s.getBody() && (m(), s.dom.remove(r, !0), g())
7619            },
7620            mceSelectNodeDepth: function (e, t, n) {
7621                var r = 0;
7622                o.getParent(i.getNode(), function (e) {
7623                    if (1 === e.nodeType && r++ === n) return i.select(e), !1
7624                }, s.getBody())
7625            },
7626            mceSelectNode: function (e, t, n) {
7627                i.select(n)
7628            },
7629            mceInsertContent: function (e, t, n) {
7630                pf(s, n)
7631            },
7632            mceInsertRawHTML: function (e, t, n) {
7633                var r = s.getContent();
7634                i.setContent("tiny_mce_marker"), s.setContent(r.replace(/tiny_mce_marker/g, function () {
7635                    return n
7636                }))
7637            },
7638            mceToggleFormat: function (e, t, n) {
7639                d(n)
7640            },
7641            mceSetContent: function (e, t, n) {
7642                s.setContent(n)
7643            },
7644            "Indent,Outdent": function (e) {
7645                jg(s, e)
7646            },
7647            mceRepaint: function () {},
7648            InsertHorizontalRule: function () {
7649                s.execCommand("mceInsertContent", !1, "<hr />")
7650            },
7651            mceToggleVisualAid: function () {
7652                s.hasVisual = !s.hasVisual, s.addVisual()
7653            },
7654            mceReplaceContent: function (e, t, n) {
7655                s.execCommand("mceInsertContent", !1, n.replace(/\{\$selection\}/g, i.getContent({
7656                    format: "text"
7657                })))
7658            },
7659            mceInsertLink: function (e, t, n) {
7660                var r;
7661                "string" == typeof n && (n = {
7662                    href: n
7663                }), r = o.getParent(i.getNode(), "a"), n.href = n.href.replace(" ", "%20"), r && n.href || a.remove("link"), n.href && a.apply("link", n, r)
7664            },
7665            selectAll: function () {
7666                var e = o.getParent(i.getStart(), Do.isContentEditableTrue);
7667                if (e) {
7668                    var t = o.createRng();
7669                    t.selectNodeContents(e), i.setRng(t)
7670                }
7671            },
7672            "delete": function () {
7673                Zm(s)
7674            },
7675            forwardDelete: function () {
7676                eg(s)
7677            },
7678            mceNewDocument: function () {
7679                s.setContent("")
7680            },
7681            InsertLineBreak: function (e, t, n) {
7682                return Ng(s, n), !0
7683            }
7684        });
7685        var p = function (n) {
7686            return function () {
7687                var e = i.isCollapsed() ? [o.getParent(i.getNode(), o.isBlock)] : i.getSelectedBlocks(),
7688                    t = Kg(e, function (e) {
7689                        return !!a.matchNode(e, n)
7690                    });
7691                return -1 !== Xg(t, !0)
7692            }
7693        };
7694        e({
7695            JustifyLeft: p("alignleft"),
7696            JustifyCenter: p("aligncenter"),
7697            JustifyRight: p("alignright"),
7698            JustifyFull: p("alignjustify"),
7699            "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function (e) {
7700                return f(e)
7701            },
7702            mceBlockQuote: function () {
7703                return f("blockquote")
7704            },
7705            Outdent: function () {
7706                var e;
7707                if (n.inline_styles) {
7708                    if ((e = o.getParent(i.getStart(), o.isBlock)) && 0 < parseInt(e.style.paddingLeft, 10)) return !0;
7709                    if ((e = o.getParent(i.getEnd(), o.isBlock)) && 0 < parseInt(e.style.paddingLeft, 10)) return !0
7710                }
7711                return r("InsertUnorderedList") || r("InsertOrderedList") || !n.inline_styles && !!o.getParent(i.getNode(), "BLOCKQUOTE")
7712            },
7713            "InsertUnorderedList,InsertOrderedList": function (e) {
7714                var t = o.getParent(i.getNode(), "ul,ol");
7715                return t && ("insertunorderedlist" === e && "UL" === t.tagName || "insertorderedlist" === e && "OL" === t.tagName)
7716            }
7717        }, "state"), e({
7718            Undo: function () {
7719                s.undoManager.undo()
7720            },
7721            Redo: function () {
7722                s.undoManager.redo()
7723            }
7724        }), u("FontName", function () {
7725            return og(t = s).fold(function () {
7726                return rg(t).map(function (e) {
7727                    return ng.getFontFamily(t.getBody(), e)
7728                }).getOr("")
7729            }, function (e) {
7730                return ng.getFontFamily(t.getBody(), e)
7731            });
7732            var t
7733        }, this), u("FontSize", function () {
7734            return og(t = s).fold(function () {
7735                return rg(t).map(function (e) {
7736                    return ng.getFontSize(t.getBody(), e)
7737                }).getOr("")
7738            }, function (e) {
7739                return ng.getFontSize(t.getBody(), e)
7740            });
7741            var t
7742        }, this)
7743    }
7744    var Gg = Yt.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend", " "),
7745        Jg = function (a) {
7746            var u, s, c = this,
7747                l = {},
7748                f = function () {
7749                    return !1
7750                },
7751                d = function () {
7752                    return !0
7753                };
7754            u = (a = a || {}).scope || c, s = a.toggleEvent || f;
7755            var r = function (e, t, n, r) {
7756                    var o, i, a;
7757                    if (!1 === t && (t = f), t)
7758                        for (t = {
7759                                func: t
7760                            }, r && Yt.extend(t, r), a = (i = e.toLowerCase().split(" ")).length; a--;) e = i[a], (o = l[e]) || (o = l[e] = [], s(e, !0)), n ? o.unshift(t) : o.push(t);
7761                    return c
7762                },
7763                m = function (e, t) {
7764                    var n, r, o, i, a;
7765                    if (e)
7766                        for (n = (i = e.toLowerCase().split(" ")).length; n--;) {
7767                            if (e = i[n], r = l[e], !e) {
7768                                for (o in l) s(o, !1), delete l[o];
7769                                return c
7770                            }
7771                            if (r) {
7772                                if (t)
7773                                    for (a = r.length; a--;) r[a].func === t && (r = r.slice(0, a).concat(r.slice(a + 1)), l[e] = r);
7774                                else r.length = 0;
7775                                r.length || (s(e, !1), delete l[e])
7776                            }
7777                        } else {
7778                            for (e in l) s(e, !1);
7779                            l = {}
7780                        }
7781                    return c
7782                };
7783            c.fire = function (e, t) {
7784                var n, r, o, i;
7785                if (e = e.toLowerCase(), (t = t || {}).type = e, t.target || (t.target = u), t.preventDefault || (t.preventDefault = function () {
7786                        t.isDefaultPrevented = d
7787                    }, t.stopPropagation = function () {
7788                        t.isPropagationStopped = d
7789                    }, t.stopImmediatePropagation = function () {
7790                        t.isImmediatePropagationStopped = d
7791                    }, t.isDefaultPrevented = f, t.isPropagationStopped = f, t.isImmediatePropagationStopped = f), a.beforeFire && a.beforeFire(t), n = l[e])
7792                    for (r = 0, o = n.length; r < o; r++) {
7793                        if ((i = n[r]).once && m(e, i.func), t.isImmediatePropagationStopped()) return t.stopPropagation(), t;
7794                        if (!1 === i.func.call(u, t)) return t.preventDefault(), t
7795                    }
7796                return t
7797            }, c.on = r, c.off = m, c.once = function (e, t, n) {
7798                return r(e, t, n, {
7799                    once: !0
7800                })
7801            }, c.has = function (e) {
7802                return e = e.toLowerCase(), !(!l[e] || 0 === l[e].length)
7803            }
7804        };
7805    Jg.isNative = function (e) {
7806        return !!Gg[e.toLowerCase()]
7807    };
7808    var Qg, Zg = function (n) {
7809            return n._eventDispatcher || (n._eventDispatcher = new Jg({
7810                scope: n,
7811                toggleEvent: function (e, t) {
7812                    Jg.isNative(e) && n.toggleNativeEvent && n.toggleNativeEvent(e, t)
7813                }
7814            })), n._eventDispatcher
7815        },
7816        ep = {
7817            fire: function (e, t, n) {
7818                if (this.removed && "remove" !== e) return t;
7819                if (t = Zg(this).fire(e, t, n), !1 !== n && this.parent)
7820                    for (var r = this.parent(); r && !t.isPropagationStopped();) r.fire(e, t, !1), r = r.parent();
7821                return t
7822            },
7823            on: function (e, t, n) {
7824                return Zg(this).on(e, t, n)
7825            },
7826            off: function (e, t) {
7827                return Zg(this).off(e, t)
7828            },
7829            once: function (e, t) {
7830                return Zg(this).once(e, t)
7831            },
7832            hasEventListeners: function (e) {
7833                return Zg(this).has(e)
7834            }
7835        },
7836        tp = function (e, t) {
7837            return e.fire("PreProcess", t)
7838        },
7839        np = function (e, t) {
7840            return e.fire("PostProcess", t)
7841        },
7842        rp = function (e) {
7843            return e.fire("remove")
7844        },
7845        op = function (e, t) {
7846            return e.fire("SwitchMode", {
7847                mode: t
7848            })
7849        },
7850        ip = function (e, t, n, r) {
7851            e.fire("ObjectResizeStart", {
7852                target: t,
7853                width: n,
7854                height: r
7855            })
7856        },
7857        ap = function (e, t, n, r) {
7858            e.fire("ObjectResized", {
7859                target: t,
7860                width: n,
7861                height: r
7862            })
7863        },
7864        up = function (e, t, n) {
7865            try {
7866                e.getDoc().execCommand(t, !1, n)
7867            } catch (r) {}
7868        },
7869        sp = function (e, t) {
7870            var n, r, o;
7871            n = er.fromDom(e.getBody()), r = "mce-content-readonly", o = t, Wi.has(n, r) && !1 === o ? Wi.remove(n, r) : o && Wi.add(n, r), t ? (e.selection.controlSelection.hideResizeRect(), e.readonly = !0, e.getBody().contentEditable = "false") : (e.readonly = !1, e.getBody().contentEditable = "true", up(e, "StyleWithCSS", !1), up(e, "enableInlineTableEditing", !1), up(e, "enableObjectResizing", !1), e.focus(), e.nodeChanged())
7872        },
7873        cp = function (e) {
7874            return e.readonly ? "readonly" : "design"
7875        },
7876        lp = pi.DOM,
7877        fp = function (e, t) {
7878            return "selectionchange" === t ? e.getDoc() : !e.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t) ? e.getDoc().documentElement : e.settings.event_root ? (e.eventRoot || (e.eventRoot = lp.select(e.settings.event_root)[0]), e.eventRoot) : e.getBody()
7879        },
7880        dp = function (e, t, n) {
7881            var r;
7882            (r = e).hidden || r.readonly ? !0 === e.readonly && n.preventDefault() : e.fire(t, n)
7883        },
7884        mp = function (i, a) {
7885            var e, t;
7886            if (i.delegates || (i.delegates = {}), !i.delegates[a] && !i.removed)
7887                if (e = fp(i, a), i.settings.event_root) {
7888                    if (Qg || (Qg = {}, i.editorManager.on("removeEditor", function () {
7889                            var e;
7890                            if (!i.editorManager.activeEditor && Qg) {
7891                                for (e in Qg) i.dom.unbind(fp(i, e));
7892                                Qg = null
7893                            }
7894                        })), Qg[a]) return;
7895                    t = function (e) {
7896                        for (var t = e.target, n = i.editorManager.get(), r = n.length; r--;) {
7897                            var o = n[r].getBody();
7898                            (o === t || lp.isChildOf(t, o)) && dp(n[r], a, e)
7899                        }
7900                    }, Qg[a] = t, lp.bind(e, a, t)
7901                } else t = function (e) {
7902                    dp(i, a, e)
7903                }, lp.bind(e, a, t), i.delegates[a] = t
7904        },
7905        gp = {
7906            bindPendingEventDelegates: function () {
7907                var t = this;
7908                Yt.each(t._pendingNativeEvents, function (e) {
7909                    mp(t, e)
7910                })
7911            },
7912            toggleNativeEvent: function (e, t) {
7913                var n = this;
7914                "focus" !== e && "blur" !== e && (t ? n.initialized ? mp(n, e) : n._pendingNativeEvents ? n._pendingNativeEvents.push(e) : n._pendingNativeEvents = [e] : n.initialized && (n.dom.unbind(fp(n, e), e, n.delegates[e]), delete n.delegates[e]))
7915            },
7916            unbindAllNativeEvents: function () {
7917                var e, t = this,
7918                    n = t.getBody(),
7919                    r = t.dom;
7920                if (t.delegates) {
7921                    for (e in t.delegates) t.dom.unbind(fp(t, e), e, t.delegates[e]);
7922                    delete t.delegates
7923                }!t.inline && n && r && (n.onload = null, r.unbind(t.getWin()), r.unbind(t.getDoc())), r && (r.unbind(n), r.unbind(t.getContainer()))
7924            }
7925        },
7926        pp = gp = Yt.extend({}, ep, gp),
7927        hp = Yt.each,
7928        vp = Yt.explode,
7929        bp = {
7930            f9: 120,
7931            f10: 121,
7932            f11: 122
7933        },
7934        yp = Yt.makeMap("alt,ctrl,shift,meta,access");
7935
7936    function Cp(i) {
7937        var a = {},
7938            r = [],
7939            u = function (e) {
7940                var t, n, r = {};
7941                for (n in hp(vp(e, "+"), function (e) {
7942                        e in yp ? r[e] = !0 : /^[0-9]{2,}$/.test(e) ? r.keyCode = parseInt(e, 10) : (r.charCode = e.charCodeAt(0), r.keyCode = bp[e] || e.toUpperCase().charCodeAt(0))
7943                    }), t = [r.keyCode], yp) r[n] ? t.push(n) : r[n] = !1;
7944                return r.id = t.join(","), r.access && (r.alt = !0, Re.mac ? r.ctrl = !0 : r.shift = !0), r.meta && (Re.mac ? r.meta = !0 : (r.ctrl = !0, r.meta = !1)), r
7945            },
7946            s = function (e, t, n, r) {
7947                var o;
7948                return (o = Yt.map(vp(e, ">"), u))[o.length - 1] = Yt.extend(o[o.length - 1], {
7949                    func: n,
7950                    scope: r || i
7951                }), Yt.extend(o[0], {
7952                    desc: i.translate(t),
7953                    subpatterns: o.slice(1)
7954                })
7955            },
7956            o = function (e, t) {
7957                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)
7958            },
7959            c = function (e) {
7960                return e.func ? e.func.call(e.scope) : null
7961            };
7962        i.on("keyup keypress keydown", function (t) {
7963            var e, n;
7964            ((n = t).altKey || n.ctrlKey || n.metaKey || "keydown" === (e = t).type && 112 <= e.keyCode && e.keyCode <= 123) && !t.isDefaultPrevented() && (hp(a, function (e) {
7965                if (o(t, e)) return r = e.subpatterns.slice(0), "keydown" === t.type && c(e), !0
7966            }), o(t, r[0]) && (1 === r.length && "keydown" === t.type && c(r[0]), r.shift()))
7967        }), this.add = function (e, n, r, o) {
7968            var t;
7969            return "string" == typeof (t = r) ? r = function () {
7970                i.execCommand(t, !1, null)
7971            } : Yt.isArray(t) && (r = function () {
7972                i.execCommand(t[0], t[1], t[2])
7973            }), hp(vp(Yt.trim(e.toLowerCase())), function (e) {
7974                var t = s(e, n, r, o);
7975                a[t.id] = t
7976            }), !0
7977        }, this.remove = function (e) {
7978            var t = s(e);
7979            return !!a[t.id] && (delete a[t.id], !0)
7980        }
7981    }
7982    var xp = function (e) {
7983            var t = e !== undefined ? e.dom() : document;
7984            return A.from(t.activeElement).map(er.fromDom)
7985        },
7986        wp = function (e) {
7987            var t = $r.owner(e).dom();
7988            return e.dom() === t.activeElement
7989        },
7990        Np = function (t) {
7991            return xp($r.owner(t)).filter(function (e) {
7992                return t.dom().contains(e.dom())
7993            })
7994        },
7995        Ep = function (t, e) {
7996            return (n = e, n.collapsed ? A.from(eu(n.startContainer, n.startOffset)).map(er.fromDom) : A.none()).bind(function (e) {
7997                return bo(e) ? A.some(e) : !1 === Fr.contains(t, e) ? A.some(t) : A.none()
7998            });
7999            var n
8000        },
8001        Sp = function (t, e) {
8002            Ep(er.fromDom(t.getBody()), e).bind(function (e) {
8003                return fl.firstPositionIn(e.dom())
8004            }).fold(function () {
8005                t.selection.normalize()
8006            }, function (e) {
8007                return t.selection.setRng(e.toRange())
8008            })
8009        },
8010        Tp = function (e) {
8011            if (e.setActive) try {
8012                e.setActive()
8013            } catch (t) {
8014                e.focus()
8015            } else e.focus()
8016        },
8017        kp = function (e) {
8018            var t, n = e.getBody();
8019            return n && (t = er.fromDom(n), wp(t) || Np(t).isSome())
8020        },
8021        Ap = function (e) {
8022            return e.inline ? kp(e) : (t = e).iframeElement && wp(er.fromDom(t.iframeElement));
8023            var t
8024        },
8025        _p = function (e) {
8026            return e.editorManager.setActive(e)
8027        },
8028        Rp = function (e, t) {
8029            e.removed || (t ? _p(e) : function (t) {
8030                var e = t.selection,
8031                    n = t.settings.content_editable,
8032                    r = t.getBody(),
8033                    o = e.getRng();
8034                t.quirks.refreshContentEditable();
8035                var i, a, u = (i = t, a = e.getNode(), i.dom.getParent(a, function (e) {
8036                    return "true" === i.dom.getContentEditable(e)
8037                }));
8038                if (t.$.contains(r, u)) return Tp(u), Sp(t, o), _p(t);
8039                t.bookmark !== undefined && !1 === Ap(t) && Hg(t).each(function (e) {
8040                    t.selection.setRng(e), o = e
8041                }), n || (Re.opera || Tp(r), t.getWin().focus()), (Re.gecko || n) && (Tp(r), Sp(t, o)), _p(t)
8042            }(e))
8043        },
8044        Dp = Ap,
8045        Bp = function (e, t) {
8046            return t.dom()[e]
8047        },
8048        Op = function (e, t) {
8049            return parseInt(Sr(t, e), 10)
8050        },
8051        Pp = b(Bp, "clientWidth"),
8052        Lp = b(Bp, "clientHeight"),
8053        Ip = b(Op, "margin-top"),
8054        Mp = b(Op, "margin-left"),
8055        Fp = function (e, t, n) {
8056            var r, o, i, a, u, s, c, l, f, d, m = er.fromDom(e.getBody()),
8057                g = e.inline ? m : $r.documentElement(m),
8058                p = (r = e.inline, i = t, a = n, u = (o = g).dom().getBoundingClientRect(), {
8059                    x: i - (r ? u.left + o.dom().clientLeft + Mp(o) : 0),
8060                    y: a - (r ? u.top + o.dom().clientTop + Ip(o) : 0)
8061                });
8062            return c = p.x, l = p.y, f = Pp(s = g), d = Lp(s), 0 <= c && 0 <= l && c <= f && l <= d
8063        },
8064        Up = function (e) {
8065            var t, n = e.inline ? e.getBody() : e.getContentAreaContainer();
8066            return (t = n, A.from(t).map(er.fromDom)).map(function (e) {
8067                return Fr.contains($r.owner(e), e)
8068            }).getOr(!1)
8069        };
8070
8071    function zp(n) {
8072        var t, o = [],
8073            i = function () {
8074                var e, t = n.theme;
8075                return t && t.getNotificationManagerImpl ? t.getNotificationManagerImpl() : {
8076                    open: e = function () {
8077                        throw new Error("Theme did not provide a NotificationManager implementation.")
8078                    },
8079                    close: e,
8080                    reposition: e,
8081                    getArgs: e
8082                }
8083            },
8084            a = function () {
8085                0 < o.length && i().reposition(o)
8086            },
8087            u = function (t) {
8088                K(o, function (e) {
8089                    return e === t
8090                }).each(function (e) {
8091                    o.splice(e, 1)
8092                })
8093            },
8094            r = function (r) {
8095                if (!n.removed && Up(n)) return V(o, function (e) {
8096                    return t = i().getArgs(e), n = r, !(t.type !== n.type || t.text !== n.text || t.progressBar || t.timeout || n.progressBar || n.timeout);
8097                    var t, n
8098                }).getOrThunk(function () {
8099                    n.editorManager.setActive(n);
8100                    var e, t = i().open(r, function () {
8101                        u(t), a()
8102                    });
8103                    return e = t, o.push(e), a(), t
8104                })
8105            };
8106        return (t = n).on("SkinLoaded", function () {
8107            var e = t.settings.service_message;
8108            e && r({
8109                text: e,
8110                type: "warning",
8111                timeout: 0,
8112                icon: ""
8113            })
8114        }), t.on("ResizeEditor ResizeWindow", function () {
8115            Le.requestAnimationFrame(a)
8116        }), t.on("remove", function () {
8117            F(o, function (e) {
8118                i().close(e)
8119            })
8120        }), {
8121            open: r,
8122            close: function () {
8123                A.from(o[0]).each(function (e) {
8124                    i().close(e), u(e), a()
8125                })
8126            },
8127            getNotifications: function () {
8128                return o
8129            }
8130        }
8131    }
8132
8133    function Vp(r) {
8134        var o = [],
8135            i = function () {
8136                var e, t = r.theme;
8137                return t && t.getWindowManagerImpl ? t.getWindowManagerImpl() : {
8138                    open: e = function () {
8139                        throw new Error("Theme did not provide a WindowManager implementation.")
8140                    },
8141                    alert: e,
8142                    confirm: e,
8143                    close: e,
8144                    getParams: e,
8145                    setParams: e
8146                }
8147            },
8148            a = function (e, t) {
8149                return function () {
8150                    return t ? t.apply(e, arguments) : undefined
8151                }
8152            },
8153            u = function (e) {
8154                var t;
8155                o.push(e), t = e, r.fire("OpenWindow", {
8156                    win: t
8157                })
8158            },
8159            s = function (n) {
8160                K(o, function (e) {
8161                    return e === n
8162                }).each(function (e) {
8163                    var t;
8164                    o.splice(e, 1), t = n, r.fire("CloseWindow", {
8165                        win: t
8166                    }), 0 === o.length && r.focus()
8167                })
8168            },
8169            e = function () {
8170                return A.from(o[o.length - 1])
8171            };
8172        return r.on("remove", function () {
8173            F(o.slice(0), function (e) {
8174                i().close(e)
8175            })
8176        }), {
8177            windows: o,
8178            open: function (e, t) {
8179                r.editorManager.setActive(r), Vg(r);
8180                var n = i().open(e, t, s);
8181                return u(n), n
8182            },
8183            alert: function (e, t, n) {
8184                var r = i().alert(e, a(n || this, t), s);
8185                u(r)
8186            },
8187            confirm: function (e, t, n) {
8188                var r = i().confirm(e, a(n || this, t), s);
8189                u(r)
8190            },
8191            close: function () {
8192                e().each(function (e) {
8193                    i().close(e), s(e)
8194                })
8195            },
8196            getParams: function () {
8197                return e().map(i().getParams).getOr(null)
8198            },
8199            setParams: function (t) {
8200                e().each(function (e) {
8201                    i().setParams(e, t)
8202                })
8203            },
8204            getWindows: function () {
8205                return o
8206            }
8207        }
8208    }
8209    var qp = Ni.PluginManager,
8210        Hp = function (e, t) {
8211            var n = function (e, t) {
8212                for (var n in qp.urls)
8213                    if (qp.urls[n] + "/plugin" + t + ".js" === e) return n;
8214                return null
8215            }(t, e.suffix);
8216            return n ? "Failed to load plugin: " + n + " from url " + t : "Failed to load plugin url: " + t
8217        },
8218        jp = function (e, t) {
8219            e.notificationManager.open({
8220                type: "error",
8221                text: t
8222            })
8223        },
8224        $p = function (e, t) {
8225            e._skinLoaded ? jp(e, t) : e.on("SkinLoaded", function () {
8226                jp(e, t)
8227            })
8228        },
8229        Wp = function (e, t) {
8230            $p(e, Hp(e, t))
8231        },
8232        Kp = function (e, t) {
8233            $p(e, "Failed to upload image: " + t)
8234        },
8235        Xp = $p,
8236        Yp = function (e) {
8237            for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
8238            var r = window.console;
8239            r && (r.error ? r.error.apply(r, arguments) : r.log.apply(r, arguments))
8240        },
8241        Gp = Ni.PluginManager,
8242        Jp = Ni.ThemeManager;
8243
8244    function Qp() {
8245        return new(ie.getOrDie("XMLHttpRequest"))
8246    }
8247
8248    function Zp(u, s) {
8249        var r = {},
8250            n = function (e, r, o, t) {
8251                var i, n;
8252                (i = new Qp).open("POST", s.url), i.withCredentials = s.credentials, i.upload.onprogress = function (e) {
8253                    t(e.loaded / e.total * 100)
8254                }, i.onerror = function () {
8255                    o("Image upload failed due to a XHR Transport error. Code: " + i.status)
8256                }, i.onload = function () {
8257                    var e, t, n;
8258                    i.status < 200 || 300 <= i.status ? o("HTTP Error: " + i.status) : (e = JSON.parse(i.responseText)) && "string" == typeof e.location ? r((t = s.basePath, n = e.location, t ? t.replace(/\/$/, "") + "/" + n.replace(/^\//, "") : n)) : o("Invalid JSON: " + i.responseText)
8259                }, (n = new FormData).append("file", e.blob(), e.filename()), i.send(n)
8260            },
8261            c = function (e, t) {
8262                return {
8263                    url: t,
8264                    blobInfo: e,
8265                    status: !0
8266                }
8267            },
8268            l = function (e, t) {
8269                return {
8270                    url: "",
8271                    blobInfo: e,
8272                    status: !1,
8273                    error: t
8274                }
8275            },
8276            f = function (e, t) {
8277                Yt.each(r[e], function (e) {
8278                    e(t)
8279                }), delete r[e]
8280            },
8281            o = function (e, n) {
8282                return e = Yt.grep(e, function (e) {
8283                    return !u.isUploaded(e.blobUri())
8284                }), De.all(Yt.map(e, function (e) {
8285                    return u.isPending(e.blobUri()) ? (t = e.blobUri(), new De(function (e) {
8286                        r[t] = r[t] || [], r[t].push(e)
8287                    })) : (o = e, i = s.handler, a = n, u.markPending(o.blobUri()), new De(function (t) {
8288                        var n;
8289                        try {
8290                            var r = function () {
8291                                n && n.close()
8292                            };
8293                            i(o, function (e) {
8294                                r(), u.markUploaded(o.blobUri(), e), f(o.blobUri(), c(o, e)), t(c(o, e))
8295                            }, function (e) {
8296                                r(), u.removeFailed(o.blobUri()), f(o.blobUri(), l(o, e)), t(l(o, e))
8297                            }, function (e) {
8298                                e < 0 || 100 < e || (n || (n = a()), n.progressBar.value(e))
8299                            })
8300                        } catch (e) {
8301                            t(l(o, e.message))
8302                        }
8303                    }));
8304                    var o, i, a, t
8305                }))
8306            };
8307        return !1 === O(s.handler) && (s.handler = n), {
8308            upload: function (e, t) {
8309                return s.url || s.handler !== n ? o(e, t) : new De(function (e) {
8310                    e([])
8311                })
8312            }
8313        }
8314    }
8315
8316    function eh() {
8317        return new(ie.getOrDie("FileReader"))
8318    }
8319
8320    function th(e) {
8321        return new(ie.getOrDie("Uint8Array"))(e)
8322    }
8323    var nh = function (e) {
8324            return ie.getOrDie("atob")(e)
8325        },
8326        rh = function (e) {
8327            var t, n, r = decodeURIComponent(e).split(",");
8328            return (n = /data:([^;]+)/.exec(r[0])) && (t = n[1]), {
8329                type: t,
8330                data: r[1]
8331            }
8332        },
8333        oh = function (e) {
8334            return 0 === e.indexOf("blob:") ? (i = e, new De(function (e, t) {
8335                var n = function () {
8336                    t("Cannot convert " + i + " to Blob. Resource might not exist or is inaccessible.")
8337                };
8338                try {
8339                    var r = new Qp;
8340                    r.open("GET", i, !0), r.responseType = "blob", r.onload = function () {
8341                        200 === this.status ? e(this.response) : n()
8342                    }, r.onerror = n, r.send()
8343                } catch (o) {
8344                    n()
8345                }
8346            })) : 0 === e.indexOf("data:") ? (a = e, new De(function (e) {
8347                var t, n, r, o = rh(a);
8348                try {
8349                    t = nh(o.data)
8350                } catch (nN) {
8351                    return void e(new Blob([]))
8352                }
8353                for (n = new th(t.length), r = 0; r < n.length; r++) n[r] = t.charCodeAt(r);
8354                e(new Blob([n], {
8355                    type: o.type
8356                }))
8357            })) : null;
8358            var i, a
8359        },
8360        ih = function (n) {
8361            return new De(function (e) {
8362                var t = new eh;
8363                t.onloadend = function () {
8364                    e(t.result)
8365                }, t.readAsDataURL(n)
8366            })
8367        },
8368        ah = rh,
8369        uh = 0,
8370        sh = function (e) {
8371            return (e || "blobid") + uh++
8372        },
8373        ch = function (n, r, o, t) {
8374            var i, a;
8375            0 !== r.src.indexOf("blob:") ? (i = ah(r.src).data, (a = n.findFirst(function (e) {
8376                return e.base64() === i
8377            })) ? o({
8378                image: r,
8379                blobInfo: a
8380            }) : oh(r.src).then(function (e) {
8381                a = n.create(sh(), e, i), n.add(a), o({
8382                    image: r,
8383                    blobInfo: a
8384                })
8385            }, function (e) {
8386                t(e)
8387            })) : (a = n.getByUri(r.src)) ? o({
8388                image: r,
8389                blobInfo: a
8390            }) : oh(r.src).then(function (t) {
8391                ih(t).then(function (e) {
8392                    i = ah(e).data, a = n.create(sh(), t, i), n.add(a), o({
8393                        image: r,
8394                        blobInfo: a
8395                    })
8396                })
8397            }, function (e) {
8398                t(e)
8399            })
8400        },
8401        lh = function (e) {
8402            return e ? e.getElementsByTagName("img") : []
8403        },
8404        fh = 0,
8405        dh = {
8406            uuid: function (e) {
8407                return e + fh++ + (t = function () {
8408                    return Math.round(4294967295 * Math.random()).toString(36)
8409                }, "s" + (new Date).getTime().toString(36) + t() + t() + t());
8410                var t
8411            }
8412        };
8413
8414    function mh(u) {
8415        var n, o, i, t, e, a, r, s, c, l, f = (n = [], o = ya.constant, i = function (e) {
8416                var t, n, r;
8417                if (!e.blob || !e.base64) throw new Error("blob and base64 representations of the image are required for BlobInfo to be created");
8418                return t = e.id || dh.uuid("blobid"), n = e.name || t, {
8419                    id: o(t),
8420                    name: o(n),
8421                    filename: o(n + "." + (r = e.blob.type, {
8422                        "image/jpeg": "jpg",
8423                        "image/jpg": "jpg",
8424                        "image/gif": "gif",
8425                        "image/png": "png"
8426                    }[r.toLowerCase()] || "dat")),
8427                    blob: o(e.blob),
8428                    base64: o(e.base64),
8429                    blobUri: o(e.blobUri || ue.createObjectURL(e.blob)),
8430                    uri: o(e.uri)
8431                }
8432            }, {
8433                create: function (e, t, n, r) {
8434                    if (k(e)) return i({
8435                        id: e,
8436                        name: r,
8437                        blob: t,
8438                        base64: n
8439                    });
8440                    if (_(e)) return i(e);
8441                    throw new Error("Unknown input type")
8442                },
8443                add: function (e) {
8444                    t(e.id()) || n.push(e)
8445                },
8446                get: t = function (t) {
8447                    return e(function (e) {
8448                        return e.id() === t
8449                    })
8450                },
8451                getByUri: function (t) {
8452                    return e(function (e) {
8453                        return e.blobUri() === t
8454                    })
8455                },
8456                findFirst: e = function (e) {
8457                    return jt.filter(n, e)[0]
8458                },
8459                removeByUri: function (t) {
8460                    n = jt.filter(n, function (e) {
8461                        return e.blobUri() !== t || (ue.revokeObjectURL(e.blobUri()), !1)
8462                    })
8463                },
8464                destroy: function () {
8465                    jt.each(n, function (e) {
8466                        ue.revokeObjectURL(e.blobUri())
8467                    }), n = []
8468                }
8469            }),
8470            d = (s = {}, c = function (e, t) {
8471                return {
8472                    status: e,
8473                    resultUri: t
8474                }
8475            }, {
8476                hasBlobUri: l = function (e) {
8477                    return e in s
8478                },
8479                getResultUri: function (e) {
8480                    var t = s[e];
8481                    return t ? t.resultUri : null
8482                },
8483                isPending: function (e) {
8484                    return !!l(e) && 1 === s[e].status
8485                },
8486                isUploaded: function (e) {
8487                    return !!l(e) && 2 === s[e].status
8488                },
8489                markPending: function (e) {
8490                    s[e] = c(1, null)
8491                },
8492                markUploaded: function (e, t) {
8493                    s[e] = c(2, t)
8494                },
8495                removeFailed: function (e) {
8496                    delete s[e]
8497                },
8498                destroy: function () {
8499                    s = {}
8500                }
8501            }),
8502            m = [],
8503            g = function (t) {
8504                return function (e) {
8505                    return u.selection ? t(e) : []
8506                }
8507            },
8508            p = function (e, t, n) {
8509                for (var r = 0; - 1 !== (r = e.indexOf(t, r)) && (e = e.substring(0, r) + n + e.substr(r + t.length), r += n.length - t.length + 1), -1 !== r;);
8510                return e
8511            },
8512            h = function (e, t, n) {
8513                return e = p(e, 'src="' + t + '"', 'src="' + n + '"'), e = p(e, 'data-mce-src="' + t + '"', 'data-mce-src="' + n + '"')
8514            },
8515            v = function (t, n) {
8516                F(u.undoManager.data, function (e) {
8517                    "fragmented" === e.type ? e.fragments = $(e.fragments, function (e) {
8518                        return h(e, t, n)
8519                    }) : e.content = h(e.content, t, n)
8520                })
8521            },
8522            b = function () {
8523                return u.notificationManager.open({
8524                    text: u.translate("Image uploading..."),
8525                    type: "info",
8526                    timeout: -1,
8527                    progressBar: !0
8528                })
8529            },
8530            y = function (e, t) {
8531                f.removeByUri(e.src), v(e.src, t), u.$(e).attr({
8532                    src: lc(u) ? t + "?" + (new Date).getTime() : t,
8533                    "data-mce-src": u.convertURL(t, "src")
8534                })
8535            },
8536            C = function (n) {
8537                return a || (a = Zp(d, {
8538                    url: dc(u),
8539                    basePath: mc(u),
8540                    credentials: gc(u),
8541                    handler: pc(u)
8542                })), N().then(g(function (r) {
8543                    var e;
8544                    return e = $(r, function (e) {
8545                        return e.blobInfo
8546                    }), a.upload(e, b).then(g(function (e) {
8547                        var t = $(e, function (e, t) {
8548                            var n = r[t].image;
8549                            return e.status && fc(u) ? y(n, e.url) : e.error && Kp(u, e.error), {
8550                                element: n,
8551                                status: e.status
8552                            }
8553                        });
8554                        return n && n(t), t
8555                    }))
8556                }))
8557            },
8558            x = function (e) {
8559                if (cc(u)) return C(e)
8560            },
8561            w = function (t) {
8562                return !1 !== J(m, function (e) {
8563                    return e(t)
8564                }) && (0 !== t.getAttribute("src").indexOf("data:") || sc(u)(t))
8565            },
8566            N = function () {
8567                var o, i, a;
8568                return r || (o = d, i = f, a = {}, r = {
8569                    findAll: function (e, n) {
8570                        var t;
8571                        n || (n = ya.constant(!0)), t = jt.filter(lh(e), function (e) {
8572                            var t = e.src;
8573                            return !!Re.fileApi && !e.hasAttribute("data-mce-bogus") && !e.hasAttribute("data-mce-placeholder") && !(!t || t === Re.transparentSrc) && (0 === t.indexOf("blob:") ? !o.isUploaded(t) && n(e) : 0 === t.indexOf("data:") && n(e))
8574                        });
8575                        var r = jt.map(t, function (n) {
8576                            if (a[n.src]) return new De(function (t) {
8577                                a[n.src].then(function (e) {
8578                                    if ("string" == typeof e) return e;
8579                                    t({
8580                                        image: n,
8581                                        blobInfo: e.blobInfo
8582                                    })
8583                                })
8584                            });
8585                            var e = new De(function (e, t) {
8586                                ch(i, n, e, t)
8587                            }).then(function (e) {
8588                                return delete a[e.image.src], e
8589                            })["catch"](function (e) {
8590                                return delete a[n.src], e
8591                            });
8592                            return a[n.src] = e
8593                        });
8594                        return De.all(r)
8595                    }
8596                }), r.findAll(u.getBody(), w).then(g(function (e) {
8597                    return e = U(e, function (e) {
8598                        return "string" != typeof e || (Xp(u, e), !1)
8599                    }), F(e, function (e) {
8600                        v(e.image.src, e.blobInfo.blobUri()), e.image.src = e.blobInfo.blobUri(), e.image.removeAttribute("data-mce-src")
8601                    }), e
8602                }))
8603            },
8604            E = function (e) {
8605                return e.replace(/src="(blob:[^"]+)"/g, function (e, n) {
8606                    var t = d.getResultUri(n);
8607                    if (t) return 'src="' + t + '"';
8608                    var r = f.getByUri(n);
8609                    return r || (r = z(u.editorManager.get(), function (e, t) {
8610                        return e || t.editorUpload && t.editorUpload.blobCache.getByUri(n)
8611                    }, null)), r ? 'src="data:' + r.blob().type + ";base64," + r.base64() + '"' : e
8612                })
8613            };
8614        return u.on("setContent", function () {
8615            cc(u) ? x() : N()
8616        }), u.on("RawSaveContent", function (e) {
8617            e.content = E(e.content)
8618        }), u.on("getContent", function (e) {
8619            e.source_view || "raw" === e.format || (e.content = E(e.content))
8620        }), u.on("PostRender", function () {
8621            u.parser.addNodeFilter("img", function (e) {
8622                F(e, function (e) {
8623                    var t = e.attr("src");
8624                    if (!f.getByUri(t)) {
8625                        var n = d.getResultUri(t);
8626                        n && e.attr("src", n)
8627                    }
8628                })
8629            })
8630        }), {
8631            blobCache: f,
8632            addFilter: function (e) {
8633                m.push(e)
8634            },
8635            uploadImages: C,
8636            uploadImagesAuto: x,
8637            scanForImages: N,
8638            destroy: function () {
8639                f.destroy(), d.destroy(), r = a = null
8640            }
8641        }
8642    }
8643    var gh = function (e, t) {
8644            return e.hasOwnProperty(t.nodeName)
8645        },
8646        ph = function (e, t) {
8647            if (Do.isText(t)) {
8648                if (0 === t.nodeValue.length) return !0;
8649                if (/^\s+$/.test(t.nodeValue) && (!t.nextSibling || gh(e, t.nextSibling))) return !0
8650            }
8651            return !1
8652        },
8653        hh = function (e) {
8654            var t, n, r, o, i, a, u, s, c, l, f, d = e.settings,
8655                m = e.dom,
8656                g = e.selection,
8657                p = e.schema,
8658                h = p.getBlockElements(),
8659                v = g.getStart(),
8660                b = e.getBody();
8661            if (f = d.forced_root_block, v && Do.isElement(v) && f && (l = b.nodeName.toLowerCase(), p.isValidChild(l, f.toLowerCase()) && (y = h, C = b, x = v, !M(Xf(er.fromDom(x), er.fromDom(C)), function (e) {
8662                    return gh(y, e.dom())
8663                })))) {
8664                var y, C, x, w, N;
8665                for (n = (t = g.getRng()).startContainer, r = t.startOffset, o = t.endContainer, i = t.endOffset, c = Dp(e), v = b.firstChild; v;)
8666                    if (w = h, N = v, Do.isText(N) || Do.isElement(N) && !gh(w, N) && !xl(N)) {
8667                        if (ph(h, v)) {
8668                            v = (u = v).nextSibling, m.remove(u);
8669                            continue
8670                        }
8671                        a || (a = m.create(f, e.settings.forced_root_block_attrs), v.parentNode.insertBefore(a, v), s = !0), v = (u = v).nextSibling, a.appendChild(u)
8672                    } else a = null, v = v.nextSibling;
8673                s && c && (t.setStart(n, r), t.setEnd(o, i), g.setRng(t), e.nodeChanged())
8674            }
8675        },
8676        vh = function (e) {
8677            e.settings.forced_root_block && e.on("NodeChange", b(hh, e))
8678        },
8679        bh = function (t) {
8680            return $r.firstChild(t).fold(H([t]), function (e) {
8681                return [t].concat(bh(e))
8682            })
8683        },
8684        yh = function (t) {
8685            return $r.lastChild(t).fold(H([t]), function (e) {
8686                return "br" === sr.name(e) ? $r.prevSibling(e).map(function (e) {
8687                    return [t].concat(yh(e))
8688                }).getOr([]) : [t].concat(yh(e))
8689            })
8690        },
8691        Ch = function (o, e) {
8692            return ru([(i = e, a = i.startContainer, u = i.startOffset, Do.isText(a) ? 0 === u ? A.some(er.fromDom(a)) : A.none() : A.from(a.childNodes[u]).map(er.fromDom)), (t = e, n = t.endContainer, r = t.endOffset, Do.isText(n) ? r === n.data.length ? A.some(er.fromDom(n)) : A.none() : A.from(n.childNodes[r - 1]).map(er.fromDom))], function (e, t) {
8693                var n = V(bh(o), b(Fr.eq, e)),
8694                    r = V(yh(o), b(Fr.eq, t));
8695                return n.isSome() && r.isSome()
8696            }).getOr(!1);
8697            var t, n, r, i, a, u
8698        },
8699        xh = function (e, t, n, r) {
8700            var o = n,
8701                i = new oo(n, o),
8702                a = e.schema.getNonEmptyElements();
8703            do {
8704                if (3 === n.nodeType && 0 !== Yt.trim(n.nodeValue).length) return void(r ? t.setStart(n, 0) : t.setEnd(n, n.nodeValue.length));
8705                if (a[n.nodeName] && !/^(TD|TH)$/.test(n.nodeName)) return void(r ? t.setStartBefore(n) : "BR" === n.nodeName ? t.setEndBefore(n) : t.setEndAfter(n));
8706                if (Re.ie && Re.ie < 11 && e.isBlock(n) && e.isEmpty(n)) return void(r ? t.setStart(n, 0) : t.setEnd(n, 0))
8707            } while (n = r ? i.next() : i.prev());
8708            "BODY" === o.nodeName && (r ? t.setStart(o, 0) : t.setEnd(o, o.childNodes.length))
8709        },
8710        wh = function (e) {
8711            var t = e.selection.getSel();
8712            return t && 0 < t.rangeCount
8713        };
8714
8715    function Nh(i) {
8716        var r, o = [];
8717        "onselectionchange" in i.getDoc() || i.on("NodeChange Click MouseUp KeyUp Focus", function (e) {
8718            var t, n;
8719            n = {
8720                startContainer: (t = i.selection.getRng()).startContainer,
8721                startOffset: t.startOffset,
8722                endContainer: t.endContainer,
8723                endOffset: t.endOffset
8724            }, "nodechange" !== e.type && ag(n, r) || i.fire("SelectionChange"), r = n
8725        }), i.on("contextmenu", function () {
8726            i.fire("SelectionChange")
8727        }), i.on("SelectionChange", function () {
8728            var e = i.selection.getStart(!0);
8729            !e || !Re.range && i.selection.isCollapsed() || wh(i) && ! function (e) {
8730                var t, n;
8731                if ((n = i.$(e).parentsUntil(i.getBody()).add(e)).length === o.length) {
8732                    for (t = n.length; 0 <= t && n[t] === o[t]; t--);
8733                    if (-1 === t) return o = n, !0
8734                }
8735                return o = n, !1
8736            }(e) && i.dom.isChildOf(e, i.getBody()) && i.nodeChanged({
8737                selectionChange: !0
8738            })
8739        }), i.on("MouseUp", function (e) {
8740            !e.isDefaultPrevented() && wh(i) && ("IMG" === i.selection.getNode().nodeName ? Le.setEditorTimeout(i, function () {
8741                i.nodeChanged()
8742            }) : i.nodeChanged())
8743        }), this.nodeChanged = function (e) {
8744            var t, n, r, o = i.selection;
8745            i.initialized && o && !i.settings.disable_nodechange && !i.readonly && (r = i.getBody(), (t = o.getStart(!0) || r).ownerDocument === i.getDoc() && i.dom.isChildOf(t, r) || (t = r), n = [], i.dom.getParent(t, function (e) {
8746                if (e === r) return !0;
8747                n.push(e)
8748            }), (e = e || {}).element = t, e.parents = n, i.fire("NodeChange", e))
8749        }
8750    }
8751    var Eh, Sh, Th = function (e) {
8752            var t, n, r, o;
8753            return o = e.getBoundingClientRect(), n = (t = e.ownerDocument).documentElement, r = t.defaultView, {
8754                top: o.top + r.pageYOffset - n.clientTop,
8755                left: o.left + r.pageXOffset - n.clientLeft
8756            }
8757        },
8758        kh = function (e, t) {
8759            return n = (u = e).inline ? Th(u.getBody()) : {
8760                left: 0,
8761                top: 0
8762            }, a = (i = e).getBody(), r = i.inline ? {
8763                left: a.scrollLeft,
8764                top: a.scrollTop
8765            } : {
8766                left: 0,
8767                top: 0
8768            }, {
8769                pageX: (o = function (e, t) {
8770                    if (t.target.ownerDocument !== e.getDoc()) {
8771                        var n = Th(e.getContentAreaContainer()),
8772                            r = (i = (o = e).getBody(), a = o.getDoc().documentElement, u = {
8773                                left: i.scrollLeft,
8774                                top: i.scrollTop
8775                            }, s = {
8776                                left: i.scrollLeft || a.scrollLeft,
8777                                top: i.scrollTop || a.scrollTop
8778                            }, o.inline ? u : s);
8779                        return {
8780                            left: t.pageX - n.left + r.left,
8781                            top: t.pageY - n.top + r.top
8782                        }
8783                    }
8784                    var o, i, a, u, s;
8785                    return {
8786                        left: t.pageX,
8787                        top: t.pageY
8788                    }
8789                }(e, t)).left - n.left + r.left,
8790                pageY: o.top - n.top + r.top
8791            };
8792            var n, r, o, i, a, u
8793        },
8794        Ah = Do.isContentEditableFalse,
8795        _h = Do.isContentEditableTrue,
8796        Rh = function (e) {
8797            e && e.parentNode && e.parentNode.removeChild(e)
8798        },
8799        Dh = function (u, s) {
8800            return function (e) {
8801                if (0 === e.button) {
8802                    var t = jt.find(s.dom.getParents(e.target), ya.or(Ah, _h));
8803                    if (i = s.getBody(), Ah(a = t) && a !== i) {
8804                        var n = s.dom.getPos(t),
8805                            r = s.getBody(),
8806                            o = s.getDoc().documentElement;
8807                        u.element = t, u.screenX = e.screenX, u.screenY = e.screenY, u.maxX = (s.inline ? r.scrollWidth : o.offsetWidth) - 2, u.maxY = (s.inline ? r.scrollHeight : o.offsetHeight) - 2, u.relX = e.pageX - n.x, u.relY = e.pageY - n.y, u.width = t.offsetWidth, u.height = t.offsetHeight, u.ghost = function (e, t, n, r) {
8808                            var o = t.cloneNode(!0);
8809                            e.dom.setStyles(o, {
8810                                width: n,
8811                                height: r
8812                            }), e.dom.setAttrib(o, "data-mce-selected", null);
8813                            var i = e.dom.create("div", {
8814                                "class": "mce-drag-container",
8815                                "data-mce-bogus": "all",
8816                                unselectable: "on",
8817                                contenteditable: "false"
8818                            });
8819                            return e.dom.setStyles(i, {
8820                                position: "absolute",
8821                                opacity: .5,
8822                                overflow: "hidden",
8823                                border: 0,
8824                                padding: 0,
8825                                margin: 0,
8826                                width: n,
8827                                height: r
8828                            }), e.dom.setStyles(o, {
8829                                margin: 0,
8830                                boxSizing: "border-box"
8831                            }), i.appendChild(o), i
8832                        }(s, t, u.width, u.height)
8833                    }
8834                }
8835                var i, a
8836            }
8837        },
8838        Bh = function (l, f) {
8839            return function (e) {
8840                if (l.dragging && (s = (i = f).selection, c = s.getSel().getRangeAt(0).startContainer, a = 3 === c.nodeType ? c.parentNode : c, u = l.element, a !== u && !i.dom.isChildOf(a, u) && !Ah(a))) {
8841                    var t = (r = l.element, (o = r.cloneNode(!0)).removeAttribute("data-mce-selected"), o),
8842                        n = f.fire("drop", {
8843                            targetClone: t,
8844                            clientX: e.clientX,
8845                            clientY: e.clientY
8846                        });
8847                    n.isDefaultPrevented() || (t = n.targetClone, f.undoManager.transact(function () {
8848                        Rh(l.element), f.insertContent(f.dom.getOuterHTML(t)), f._selectionOverrides.hideFakeCaret()
8849                    }))
8850                }
8851                var r, o, i, a, u, s, c;
8852                Oh(l)
8853            }
8854        },
8855        Oh = function (e) {
8856            e.dragging = !1, e.element = null, Rh(e.ghost)
8857        },
8858        Ph = function (e) {
8859            var t, n, r, o, i, a, p, h, v, u, s, c = {};
8860            t = pi.DOM, a = document, n = Dh(c, e), p = c, h = e, v = Le.throttle(function (e, t) {
8861                h._selectionOverrides.hideFakeCaret(), h.selection.placeCaretAt(e, t)
8862            }, 0), r = function (e) {
8863                var t, n, r, o, i, a, u, s, c, l, f, d, m = Math.max(Math.abs(e.screenX - p.screenX), Math.abs(e.screenY - p.screenY));
8864                if (p.element && !p.dragging && 10 < m) {
8865                    if (h.fire("dragstart", {
8866                            target: p.element
8867                        }).isDefaultPrevented()) return;
8868                    p.dragging = !0, h.focus()
8869                }
8870                if (p.dragging) {
8871                    var g = (f = p, {
8872                        pageX: (d = kh(h, e)).pageX - f.relX,
8873                        pageY: d.pageY + 5
8874                    });
8875                    c = p.ghost, l = h.getBody(), c.parentNode !== l && l.appendChild(c), t = p.ghost, n = g, r = p.width, o = p.height, i = p.maxX, a = p.maxY, s = u = 0, t.style.left = n.pageX + "px", t.style.top = n.pageY + "px", n.pageX + r > i && (u = n.pageX + r - i), n.pageY + o > a && (s = n.pageY + o - a), t.style.width = r - u + "px", t.style.height = o - s + "px", v(e.clientX, e.clientY)
8876                }
8877            }, o = Bh(c, e), u = c, i = function () {
8878                u.dragging && s.fire("dragend"), Oh(u)
8879            }, (s = e).on("mousedown", n), e.on("mousemove", r), e.on("mouseup", o), t.bind(a, "mousemove", r), t.bind(a, "mouseup", i), e.on("remove", function () {
8880                t.unbind(a, "mousemove", r), t.unbind(a, "mouseup", i)
8881            })
8882        },
8883        Lh = function (e) {
8884            var n;
8885            Ph(e), (n = e).on("drop", function (e) {
8886                var t = "undefined" != typeof e.clientX ? n.getDoc().elementFromPoint(e.clientX, e.clientY) : null;
8887                (Ah(t) || Ah(n.dom.getContentEditableParent(t))) && e.preventDefault()
8888            })
8889        },
8890        Ih = function (e) {
8891            return jt.reduce(e, function (e, t) {
8892                return e.concat(function (t) {
8893                    var e = function (e) {
8894                        return jt.map(e, function (e) {
8895                            return (e = Xa(e)).node = t, e
8896                        })
8897                    };
8898                    if (Do.isElement(t)) return e(t.getClientRects());
8899                    if (Do.isText(t)) {
8900                        var n = t.ownerDocument.createRange();
8901                        return n.setStart(t, 0), n.setEnd(t, t.data.length), e(n.getClientRects())
8902                    }
8903                }(t))
8904            }, [])
8905        };
8906    (Sh = Eh || (Eh = {}))[Sh.Up = -1] = "Up", Sh[Sh.Down = 1] = "Down";
8907    var Mh = function (o, i, a, e, u, t) {
8908            var n, s, c = 0,
8909                l = [],
8910                r = function (e) {
8911                    var t, n, r;
8912                    for (r = Ih([e]), -1 === o && (r = r.reverse()), t = 0; t < r.length; t++)
8913                        if (n = r[t], !a(n, s)) {
8914                            if (0 < l.length && i(n, jt.last(l)) && c++, n.line = c, u(n)) return !0;
8915                            l.push(n)
8916                        }
8917                };
8918            return (s = jt.last(t.getClientRects())) && (r(n = t.getNode()), function (e, t, n, r) {
8919                for (; r = qc(r, e, Wa, t);)
8920                    if (n(r)) return
8921            }(o, e, r, n)), l
8922        },
8923        Fh = b(Mh, Eh.Up, Ja, Qa),
8924        Uh = b(Mh, Eh.Down, Qa, Ja),
8925        zh = function (n) {
8926            return function (e) {
8927                return t = n, e.line > t;
8928                var t
8929            }
8930        },
8931        Vh = function (n) {
8932            return function (e) {
8933                return t = n, e.line === t;
8934                var t
8935            }
8936        },
8937        qh = Do.isContentEditableFalse,
8938        Hh = qc,
8939        jh = function (e, t) {
8940            return Math.abs(e.left - t)
8941        },
8942        $h = function (e, t) {
8943            return Math.abs(e.right - t)
8944        },
8945        Wh = function (e, t) {
8946            return e >= t.left && e <= t.right
8947        },
8948        Kh = function (e, o) {
8949            return jt.reduce(e, function (e, t) {
8950                var n, r;
8951                return n = Math.min(jh(e, o), $h(e, o)), r = Math.min(jh(t, o), $h(t, o)), Wh(o, t) ? t : Wh(o, e) ? e : r === n && qh(t.node) ? t : r < n ? t : e
8952            })
8953        },
8954        Xh = function (e, t, n, r) {
8955            for (; r = Hh(r, e, Wa, t);)
8956                if (n(r)) return
8957        },
8958        Yh = function (e, t, n) {
8959            var r, o, i, a, u, s, c, l, f = Ih((o = e, jt.filter(jt.toArray(o.getElementsByTagName("*")), Dc))),
8960                d = jt.filter(f, function (e) {
8961                    return n >= e.top && n <= e.bottom
8962                });
8963            return (r = Kh(d, t)) && (r = Kh((u = e, l = function (t, e) {
8964                var n;
8965                return n = jt.filter(Ih([e]), function (e) {
8966                    return !t(e, s)
8967                }), c = c.concat(n), 0 === n.length
8968            }, (c = []).push(s = r), Xh(Eh.Up, u, b(l, Ja), s.node), Xh(Eh.Down, u, b(l, Qa), s.node), c), t)) && Dc(r.node) ? (a = t, {
8969                node: (i = r).node,
8970                before: jh(i, a) < $h(i, a)
8971            }) : null
8972        },
8973        Gh = function (i, a, e) {
8974            return !e.collapsed && z(e.getClientRects(), function (e, t) {
8975                return e || (o = a, (r = i) >= (n = t).left && r <= n.right && o >= n.top && o <= n.bottom);
8976                var n, r, o
8977            }, !1)
8978        },
8979        Jh = function (t) {
8980            var e = Di(function () {
8981                if (!t.removed && t.selection.getRng().collapsed) {
8982                    var e = ls(t, t.selection.getRng(), !1);
8983                    t.selection.setRng(e)
8984                }
8985            }, 0);
8986            t.on("focus", function () {
8987                e.throttle()
8988            }), t.on("blur", function () {
8989                e.cancel()
8990            })
8991        },
8992        Qh = {
8993            BACKSPACE: 8,
8994            DELETE: 46,
8995            DOWN: 40,
8996            ENTER: 13,
8997            LEFT: 37,
8998            RIGHT: 39,
8999            SPACEBAR: 32,
9000            TAB: 9,
9001            UP: 38,
9002            modifierPressed: function (e) {
9003                return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e)
9004            },
9005            metaKeyPressed: function (e) {
9006                return Re.mac ? e.metaKey : e.ctrlKey && !e.altKey
9007            }
9008        },
9009        Zh = Do.isContentEditableTrue,
9010        ev = Do.isContentEditableFalse,
9011        tv = nl,
9012        nv = tl,
9013        rv = function (e, t) {
9014            for (var n = e.getBody(); t && t !== n;) {
9015                if (Zh(t) || ev(t)) return t;
9016                t = t.parentNode
9017            }
9018            return null
9019        },
9020        ov = function (g) {
9021            var p, e, t, a = g.getBody(),
9022                o = Rc(g.getBody(), function (e) {
9023                    return g.dom.isBlock(e)
9024                }, function () {
9025                    return Dp(g)
9026                }),
9027                h = "sel-" + g.dom.uniqueId(),
9028                u = function (e) {
9029                    e && g.selection.setRng(e)
9030                },
9031                s = function () {
9032                    return g.selection.getRng()
9033                },
9034                v = function (e, t, n, r) {
9035                    return void 0 === r && (r = !0), g.fire("ShowCaret", {
9036                        target: t,
9037                        direction: e,
9038                        before: n
9039                    }).isDefaultPrevented() ? null : (r && g.selection.scrollIntoView(t, -1 === e), o.show(n, t))
9040                },
9041                b = function (e, t) {
9042                    return t = Gc(e, a, t), -1 === e ? Su.fromRangeStart(t) : Su.fromRangeEnd(t)
9043                },
9044                n = function (e) {
9045                    return Aa(e) || Oa(e) || Pa(e)
9046                },
9047                y = function (e) {
9048                    return n(e.startContainer) || n(e.endContainer)
9049                },
9050                c = function (e, t) {
9051                    var n, r, o, i, a, u, s, c, l, f, d = g.$,
9052                        m = g.dom;
9053                    if (!e) return null;
9054                    if (e.collapsed) {
9055                        if (!y(e))
9056                            if (!1 === t) {
9057                                if (c = b(-1, e), Dc(c.getNode(!0))) return v(-1, c.getNode(!0), !1, !1);
9058                                if (Dc(c.getNode())) return v(-1, c.getNode(), !c.isAtEnd(), !1)
9059                            } else {
9060                                if (c = b(1, e), Dc(c.getNode())) return v(1, c.getNode(), !c.isAtEnd(), !1);
9061                                if (Dc(c.getNode(!0))) return v(1, c.getNode(!0), !1, !1)
9062                            }
9063                        return null
9064                    }
9065                    return i = e.startContainer, a = e.startOffset, u = e.endOffset, 3 === i.nodeType && 0 === a && ev(i.parentNode) && (i = i.parentNode, a = m.nodeIndex(i), i = i.parentNode), 1 !== i.nodeType ? null : (u === a + 1 && (n = i.childNodes[a]), ev(n) ? (l = f = n.cloneNode(!0), (s = g.fire("ObjectSelected", {
9066                        target: n,
9067                        targetClone: l
9068                    })).isDefaultPrevented() ? null : (r = na(er.fromDom(g.getBody()), "#" + h).fold(function () {
9069                        return d([])
9070                    }, function (e) {
9071                        return d([e.dom()])
9072                    }), l = s.targetClone, 0 === r.length && (r = d('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr("id", h)).appendTo(g.getBody()), e = g.dom.createRng(), l === f && Re.ie ? (r.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xa0</p>').append(l), e.setStartAfter(r[0].firstChild.firstChild), e.setEndAfter(l)) : (r.empty().append("\xa0").append(l).append("\xa0"), e.setStart(r[0].firstChild, 1), e.setEnd(r[0].lastChild, 0)), r.css({
9073                        top: m.getPos(n, g.getBody()).y
9074                    }), r[0].focus(), (o = g.selection.getSel()).removeAllRanges(), o.addRange(e), F(Ki(er.fromDom(g.getBody()), "*[data-mce-selected]"), function (e) {
9075                        hr.remove(e, "data-mce-selected")
9076                    }), n.setAttribute("data-mce-selected", "1"), p = n, C(), e)) : null)
9077                },
9078                l = function () {
9079                    p && (p.removeAttribute("data-mce-selected"), na(er.fromDom(g.getBody()), "#" + h).each(Ri.remove), p = null), na(er.fromDom(g.getBody()), "#" + h).each(Ri.remove), p = null
9080                },
9081                C = function () {
9082                    o.hide()
9083                };
9084            return Re.ceFalse && (function () {
9085                g.on("mouseup", function (e) {
9086                    var t = s();
9087                    t.collapsed && Fp(g, e.clientX, e.clientY) && u(cs(g, t, !1))
9088                }), g.on("click", function (e) {
9089                    var t;
9090                    (t = rv(g, e.target)) && (ev(t) && (e.preventDefault(), g.focus()), Zh(t) && g.dom.isChildOf(t, g.selection.getNode()) && l())
9091                }), g.on("blur NewBlock", function () {
9092                    l()
9093                }), g.on("ResizeWindow FullscreenStateChanged", function () {
9094                    return o.reposition()
9095                });
9096                var n, r, i = function (e, t) {
9097                    var n, r, o = g.dom.getParent(e, g.dom.isBlock),
9098                        i = g.dom.getParent(t, g.dom.isBlock);
9099                    return !(!o || !g.dom.isChildOf(o, i) || !1 !== ev(rv(g, o))) || o && (n = o, r = i, !(g.dom.getParent(n, g.dom.isBlock) === g.dom.getParent(r, g.dom.isBlock))) && function (e) {
9100                        var t = Ns(e);
9101                        if (!e.firstChild) return !1;
9102                        var n = Su.before(e.firstChild),
9103                            r = t.next(n);
9104                        return r && !nv(r) && !tv(r)
9105                    }(o)
9106                };
9107                r = !1, (n = g).on("touchstart", function () {
9108                    r = !1
9109                }), n.on("touchmove", function () {
9110                    r = !0
9111                }), n.on("touchend", function (e) {
9112                    var t = rv(n, e.target);
9113                    ev(t) && (r || (e.preventDefault(), c(ss(n, t))))
9114                }), g.on("mousedown", function (e) {
9115                    var t, n = e.target;
9116                    if ((n === a || "HTML" === n.nodeName || g.dom.isChildOf(n, a)) && !1 !== Fp(g, e.clientX, e.clientY))
9117                        if (t = rv(g, n)) ev(t) ? (e.preventDefault(), c(ss(g, t))) : (l(), Zh(t) && e.shiftKey || Gh(e.clientX, e.clientY, g.selection.getRng()) || (C(), g.selection.placeCaretAt(e.clientX, e.clientY)));
9118                        else if (!1 === Dc(n)) {
9119                        l(), C();
9120                        var r = Yh(a, e.clientX, e.clientY);
9121                        if (r && !i(e.target, r.node)) {
9122                            e.preventDefault();
9123                            var o = v(1, r.node, r.before, !1);
9124                            g.getBody().focus(), u(o)
9125                        }
9126                    }
9127                }), g.on("keypress", function (e) {
9128                    Qh.modifierPressed(e) || (e.keyCode, ev(g.selection.getNode()) && e.preventDefault())
9129                }), g.on("getSelectionRange", function (e) {
9130                    var t = e.range;
9131                    if (p) {
9132                        if (!p.parentNode) return void(p = null);
9133                        (t = t.cloneRange()).selectNode(p), e.range = t
9134                    }
9135                }), g.on("setSelectionRange", function (e) {
9136                    var t;
9137                    (t = c(e.range, e.forward)) && (e.range = t)
9138                }), g.on("AfterSetSelectionRange", function (e) {
9139                    var t, n = e.range;
9140                    y(n) || "mcepastebin" === n.startContainer.parentNode.id || C(), t = n.startContainer.parentNode, g.dom.hasClass(t, "mce-offscreen-selection") || l()
9141                }), g.on("copy", function (e) {
9142                    var t, n = e.clipboardData;
9143                    if (!e.isDefaultPrevented() && e.clipboardData && !Re.ie) {
9144                        var r = (t = g.dom.get(h)) ? t.getElementsByTagName("*")[0] : t;
9145                        r && (e.preventDefault(), n.clearData(), n.setData("text/html", r.outerHTML), n.setData("text/plain", r.outerText))
9146                    }
9147                }), Lh(g), Jh(g)
9148            }(), e = g.contentStyles, t = ".mce-content-body", e.push(o.getCss()), e.push(t + " .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}" + t + " *[contentEditable=false] {cursor: default;}" + t + " *[contentEditable=true] {cursor: text;}")), {
9149                showCaret: v,
9150                showBlockCaretContainer: function (e) {
9151                    e.hasAttribute("data-mce-caret") && (La(e), u(s()), g.selection.scrollIntoView(e[0]))
9152                },
9153                hideFakeCaret: C,
9154                destroy: function () {
9155                    o.destroy(), p = null
9156                }
9157            }
9158        },
9159        iv = function (e, t, n) {
9160            var r, o, i, a, u = 1;
9161            for (a = e.getShortEndedElements(), (i = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex = r = n; o = i.exec(t);) {
9162                if (r = i.lastIndex, "/" === o[1]) u--;
9163                else if (!o[1]) {
9164                    if (o[2] in a) continue;
9165                    u++
9166                }
9167                if (0 === u) break
9168            }
9169            return r
9170        };
9171
9172    function av(F, U) {
9173        void 0 === U && (U = ni());
9174        var e = function () {};
9175        !1 !== (F = F || {}).fix_self_closing && (F.fix_self_closing = !0);
9176        var z = F.comment ? F.comment : e,
9177            V = F.cdata ? F.cdata : e,
9178            q = F.text ? F.text : e,
9179            H = F.start ? F.start : e,
9180            j = F.end ? F.end : e,
9181            $ = F.pi ? F.pi : e,
9182            W = F.doctype ? F.doctype : e;
9183        return {
9184            parse: function (e) {
9185                var t, n, r, d, o, i, a, m, u, s, g, c, p, l, f, h, v, b, y, C, x, w, N, E, S, T, k, A, _, R = 0,
9186                    D = [],
9187                    B = 0,
9188                    O = $o.decode,
9189                    P = Yt.makeMap("src,href,data,background,formaction,poster,xlink:href"),
9190                    L = /((java|vb)script|mhtml):/i,
9191                    I = function (e) {
9192                        var t, n;
9193                        for (t = D.length; t-- && D[t].name !== e;);
9194                        if (0 <= t) {
9195                            for (n = D.length - 1; t <= n; n--)(e = D[n]).valid && j(e.name);
9196                            D.length = t
9197                        }
9198                    },
9199                    M = function (e, t, n, r, o) {
9200                        var i, a, u, s, c;
9201                        if (n = (t = t.toLowerCase()) in g ? t : O(n || r || o || ""), p && !m && 0 == (0 === (u = t).indexOf("data-") || 0 === u.indexOf("aria-"))) {
9202                            if (!(i = b[t]) && y) {
9203                                for (a = y.length; a-- && !(i = y[a]).pattern.test(t);); - 1 === a && (i = null)
9204                            }
9205                            if (!i) return;
9206                            if (i.validValues && !(n in i.validValues)) return
9207                        }
9208                        if (P[t] && !F.allow_script_urls) {
9209                            var l = n.replace(/[\s\u0000-\u001F]+/g, "");
9210                            try {
9211                                l = decodeURIComponent(l)
9212                            } catch (f) {
9213                                l = unescape(l)
9214                            }
9215                            if (L.test(l)) return;
9216                            if (c = l, !(s = F).allow_html_data_urls && (/^data:image\//i.test(c) ? !1 === s.allow_svg_data_urls && /^data:image\/svg\+xml/i.test(c) : /^data:/i.test(c))) return
9217                        }
9218                        m && (t in P || 0 === t.indexOf("on")) || (d.map[t] = n, d.push({
9219                            name: t,
9220                            value: n
9221                        }))
9222                    };
9223                for (S = new RegExp("<(?:(?:!--([\\w\\W]*?)--\x3e)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))", "g"), T = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g, s = U.getShortEndedElements(), E = F.self_closing_elements || U.getSelfClosingElements(), g = U.getBoolAttrs(), p = F.validate, u = F.remove_internals, _ = F.fix_self_closing, k = U.getSpecialElements(), N = e + ">"; t = S.exec(N);) {
9224                    if (R < t.index && q(O(e.substr(R, t.index - R))), n = t[6]) ":" === (n = n.toLowerCase()).charAt(0) && (n = n.substr(1)), I(n);
9225                    else if (n = t[7]) {
9226                        if (t.index + t[0].length > e.length) {
9227                            q(O(e.substr(t.index))), R = t.index + t[0].length;
9228                            continue
9229                        }
9230                        if (":" === (n = n.toLowerCase()).charAt(0) && (n = n.substr(1)), c = n in s, _ && E[n] && 0 < D.length && D[D.length - 1].name === n && I(n), !p || (l = U.getElementRule(n))) {
9231                            if (f = !0, p && (b = l.attributes, y = l.attributePatterns), (v = t[8]) ? ((m = -1 !== v.indexOf("data-mce-type")) && u && (f = !1), (d = []).map = {}, v.replace(T, M)) : (d = []).map = {}, p && !m) {
9232                                if (C = l.attributesRequired, x = l.attributesDefault, w = l.attributesForced, l.removeEmptyAttrs && !d.length && (f = !1), w)
9233                                    for (o = w.length; o--;) a = (h = w[o]).name, "{$uid}" === (A = h.value) && (A = "mce_" + B++), d.map[a] = A, d.push({
9234                                        name: a,
9235                                        value: A
9236                                    });
9237                                if (x)
9238                                    for (o = x.length; o--;)(a = (h = x[o]).name) in d.map || ("{$uid}" === (A = h.value) && (A = "mce_" + B++), d.map[a] = A, d.push({
9239                                        name: a,
9240                                        value: A
9241                                    }));
9242                                if (C) {
9243                                    for (o = C.length; o-- && !(C[o] in d.map);); - 1 === o && (f = !1)
9244                                }
9245                                if (h = d.map["data-mce-bogus"]) {
9246                                    if ("all" === h) {
9247                                        R = iv(U, e, S.lastIndex), S.lastIndex = R;
9248                                        continue
9249                                    }
9250                                    f = !1
9251                                }
9252                            }
9253                            f && H(n, d, c)
9254                        } else f = !1;
9255                        if (r = k[n]) {
9256                            r.lastIndex = R = t.index + t[0].length, (t = r.exec(e)) ? (f && (i = e.substr(R, t.index - R)), R = t.index + t[0].length) : (i = e.substr(R), R = e.length), f && (0 < i.length && q(i, !0), j(n)), S.lastIndex = R;
9257                            continue
9258                        }
9259                        c || (v && v.indexOf("/") === v.length - 1 ? f && j(n) : D.push({
9260                            name: n,
9261                            valid: f
9262                        }))
9263                    } else(n = t[1]) ? (">" === n.charAt(0) && (n = " " + n), F.allow_conditional_comments || "[if" !== n.substr(0, 3).toLowerCase() || (n = " " + n), z(n)) : (n = t[2]) ? V(n.replace(/<!--|-->/g, "")) : (n = t[3]) ? W(n) : (n = t[4]) && $(n, t[5]);
9264                    R = t.index + t[0].length
9265                }
9266                for (R < e.length && q(O(e.substr(R))), o = D.length - 1; 0 <= o; o--)(n = D[o]).valid && j(n.name)
9267            }
9268        }
9269    }(av || (av = {})).findEndTag = iv;
9270    var uv = av,
9271        sv = function (e, t) {
9272            var n, r, o, i, a, u, s, c, l = t,
9273                f = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,
9274                d = e.schema;
9275            for (u = e.getTempAttrs(), s = l, c = new RegExp(["\\s?(" + u.join("|") + ')="[^"]+"'].join("|"), "gi"), l = s.replace(c, ""), a = d.getShortEndedElements(); i = f.exec(l);) r = f.lastIndex, o = i[0].length, n = a[i[1]] ? r : uv.findEndTag(d, l, r), l = l.substring(0, r - o) + l.substring(n), f.lastIndex = r - o;
9276            return Na(l)
9277        },
9278        cv = {
9279            trimExternal: sv,
9280            trimInternal: sv
9281        },
9282        lv = 0,
9283        fv = 2,
9284        dv = 1,
9285        mv = function (g, p) {
9286            var e = g.length + p.length + 2,
9287                h = new Array(e),
9288                v = new Array(e),
9289                c = function (e, t, n, r, o) {
9290                    var i = l(e, t, n, r);
9291                    if (null === i || i.start === t && i.diag === t - r || i.end === e && i.diag === e - n)
9292                        for (var a = e, u = n; a < t || u < r;) a < t && u < r && g[a] === p[u] ? (o.push([0, g[a]]), ++a, ++u) : r - n < t - e ? (o.push([2, g[a]]), ++a) : (o.push([1, p[u]]), ++u);
9293                    else {
9294                        c(e, i.start, n, i.start - i.diag, o);
9295                        for (var s = i.start; s < i.end; ++s) o.push([0, g[s]]);
9296                        c(i.end, t, i.end - i.diag, r, o)
9297                    }
9298                },
9299                b = function (e, t, n, r) {
9300                    for (var o = e; o - t < r && o < n && g[o] === p[o - t];) ++o;
9301                    return {
9302                        start: e,
9303                        end: o,
9304                        diag: t
9305                    }
9306                },
9307                l = function (e, t, n, r) {
9308                    var o = t - e,
9309                        i = r - n;
9310                    if (0 === o || 0 === i) return null;
9311                    var a, u, s, c, l, f = o - i,
9312                        d = i + o,
9313                        m = (d % 2 == 0 ? d : d + 1) / 2;
9314                    for (h[1 + m] = e, v[1 + m] = t + 1, a = 0; a <= m; ++a) {
9315                        for (u = -a; u <= a; u += 2) {
9316                            for (s = u + m, u === -a || u !== a && h[s - 1] < h[s + 1] ? h[s] = h[s + 1] : h[s] = h[s - 1] + 1, l = (c = h[s]) - e + n - u; c < t && l < r && g[c] === p[l];) h[s] = ++c, ++l;
9317                            if (f % 2 != 0 && f - a <= u && u <= f + a && v[s - f] <= h[s]) return b(v[s - f], u + e - n, t, r)
9318                        }
9319                        for (u = f - a; u <= f + a; u += 2) {
9320                            for (s = u + m - f, u === f - a || u !== f + a && v[s + 1] <= v[s - 1] ? v[s] = v[s + 1] - 1 : v[s] = v[s - 1], l = (c = v[s] - 1) - e + n - u; e <= c && n <= l && g[c] === p[l];) v[s] = c--, l--;
9321                            if (f % 2 == 0 && -a <= u && u <= a && v[s] <= h[s + f]) return b(v[s], u + e - n, t, r)
9322                        }
9323                    }
9324                },
9325                t = [];
9326            return c(0, g.length, 0, p.length, t), t
9327        },
9328        gv = function (e) {
9329            return Do.isElement(e) ? e.outerHTML : Do.isText(e) ? $o.encodeRaw(e.data, !1) : Do.isComment(e) ? "\x3c!--" + e.data + "--\x3e" : ""
9330        },
9331        pv = function (e, t, n) {
9332            var r = function (e) {
9333                var t, n, r;
9334                for (r = document.createElement("div"), t = document.createDocumentFragment(), e && (r.innerHTML = e); n = r.firstChild;) t.appendChild(n);
9335                return t
9336            }(t);
9337            if (e.hasChildNodes() && n < e.childNodes.length) {
9338                var o = e.childNodes[n];
9339                o.parentNode.insertBefore(r, o)
9340            } else e.appendChild(r)
9341        },
9342        hv = function (e) {
9343            return jt.filter(jt.map(e.childNodes, gv), function (e) {
9344                return 0 < e.length
9345            })
9346        },
9347        vv = function (e, t) {
9348            var n, r, o, i = jt.map(t.childNodes, gv);
9349            return n = mv(i, e), r = t, o = 0, jt.each(n, function (e) {
9350                e[0] === lv ? o++ : e[0] === dv ? (pv(r, e[1], o), o++) : e[0] === fv && function (e, t) {
9351                    if (e.hasChildNodes() && t < e.childNodes.length) {
9352                        var n = e.childNodes[t];
9353                        n.parentNode.removeChild(n)
9354                    }
9355                }(r, o)
9356            }), t
9357        },
9358        bv = function (e, t) {
9359            var n = (t || document).createElement("div");
9360            return n.innerHTML = e, $r.children(er.fromDom(n))
9361        },
9362        yv = function (e) {
9363            return e.dom().innerHTML
9364        },
9365        Cv = yv,
9366        xv = function (e, t) {
9367            var n = $r.owner(e).dom(),
9368                r = er.fromDom(n.createDocumentFragment()),
9369                o = bv(t, n);
9370            Ai(r, o), Ri.empty(e), Ti.append(e, r)
9371        },
9372        wv = Bi(A.none()),
9373        Nv = function (e) {
9374            return {
9375                type: "fragmented",
9376                fragments: e,
9377                content: "",
9378                bookmark: null,
9379                beforeBookmark: null
9380            }
9381        },
9382        Ev = function (e) {
9383            return {
9384                type: "complete",
9385                fragments: null,
9386                content: e,
9387                bookmark: null,
9388                beforeBookmark: null
9389            }
9390        },
9391        Sv = function (e) {
9392            return "fragmented" === e.type ? e.fragments.join("") : e.content
9393        },
9394        Tv = function (e) {
9395            var t = er.fromTag("body", wv.get().getOrThunk(function () {
9396                var e = document.implementation.createHTMLDocument("undo");
9397                return wv.set(A.some(e)), e
9398            }));
9399            return xv(t, Sv(e)), F(Ki(t, "*[data-mce-bogus]"), Ri.unwrap), Cv(t)
9400        },
9401        kv = function (n) {
9402            var e, t, r;
9403            return e = hv(n.getBody()), -1 !== (t = (r = G(e, function (e) {
9404                var t = cv.trimInternal(n.serializer, e);
9405                return 0 < t.length ? [t] : []
9406            })).join("")).indexOf("</iframe>") ? Nv(r) : Ev(t)
9407        },
9408        Av = function (e, t, n) {
9409            "fragmented" === t.type ? vv(t.fragments, e.getBody()) : e.setContent(t.content, {
9410                format: "raw"
9411            }), e.selection.moveToBookmark(n ? t.beforeBookmark : t.bookmark)
9412        },
9413        _v = function (e, t) {
9414            return !(!e || !t) && (r = t, Sv(e) === Sv(r) || (n = t, Tv(e) === Tv(n)));
9415            var n, r
9416        };
9417
9418    function Rv(u) {
9419        var s, r, o = this,
9420            c = 0,
9421            l = [],
9422            t = 0,
9423            f = function () {
9424                return 0 === t
9425            },
9426            i = function (e) {
9427                f() && (o.typing = e)
9428            },
9429            d = function (e) {
9430                u.setDirty(e)
9431            },
9432            a = function (e) {
9433                i(!1), o.add({}, e)
9434            },
9435            n = function () {
9436                o.typing && (i(!1), o.add())
9437            };
9438        return u.on("init", function () {
9439            o.add()
9440        }), u.on("BeforeExecCommand", function (e) {
9441            var t = e.command;
9442            "Undo" !== t && "Redo" !== t && "mceRepaint" !== t && (n(), o.beforeChange())
9443        }), u.on("ExecCommand", function (e) {
9444            var t = e.command;
9445            "Undo" !== t && "Redo" !== t && "mceRepaint" !== t && a(e)
9446        }), u.on("ObjectResizeStart Cut", function () {
9447            o.beforeChange()
9448        }), u.on("SaveContent ObjectResized blur", a), u.on("DragEnd", a), u.on("KeyUp", function (e) {
9449            var t = e.keyCode;
9450            e.isDefaultPrevented() || ((33 <= t && t <= 36 || 37 <= t && t <= 40 || 45 === t || e.ctrlKey) && (a(), u.nodeChanged()), 46 !== t && 8 !== t || u.nodeChanged(), r && o.typing && !1 === _v(kv(u), l[0]) && (!1 === u.isDirty() && (d(!0), u.fire("change", {
9451                level: l[0],
9452                lastLevel: null
9453            })), u.fire("TypingUndo"), r = !1, u.nodeChanged()))
9454        }), u.on("KeyDown", function (e) {
9455            var t = e.keyCode;
9456            if (!e.isDefaultPrevented())
9457                if (33 <= t && t <= 36 || 37 <= t && t <= 40 || 45 === t) o.typing && a(e);
9458                else {
9459                    var n = e.ctrlKey && !e.altKey || e.metaKey;
9460                    !(t < 16 || 20 < t) || 224 === t || 91 === t || o.typing || n || (o.beforeChange(), i(!0), o.add({}, e), r = !0)
9461                }
9462        }), u.on("MouseDown", function (e) {
9463            o.typing && a(e)
9464        }), u.on("input", function (e) {
9465            var t;
9466            e.inputType && ("insertReplacementText" === e.inputType || "insertText" === (t = e).inputType && null === t.data) && a(e)
9467        }), u.addShortcut("meta+z", "", "Undo"), u.addShortcut("meta+y,meta+shift+z", "", "Redo"), u.on("AddUndo Undo Redo ClearUndos", function (e) {
9468            e.isDefaultPrevented() || u.nodeChanged()
9469        }), o = {
9470            data: l,
9471            typing: !1,
9472            beforeChange: function () {
9473                f() && (s = $u.getUndoBookmark(u.selection))
9474            },
9475            add: function (e, t) {
9476                var n, r, o, i = u.settings;
9477                if (o = kv(u), e = e || {}, e = Yt.extend(e, o), !1 === f() || u.removed) return null;
9478                if (r = l[c], u.fire("BeforeAddUndo", {
9479                        level: e,
9480                        lastLevel: r,
9481                        originalEvent: t
9482                    }).isDefaultPrevented()) return null;
9483                if (r && _v(r, e)) return null;
9484                if (l[c] && (l[c].beforeBookmark = s), i.custom_undo_redo_levels && l.length > i.custom_undo_redo_levels) {
9485                    for (n = 0; n < l.length - 1; n++) l[n] = l[n + 1];
9486                    l.length--, c = l.length
9487                }
9488                e.bookmark = $u.getUndoBookmark(u.selection), c < l.length - 1 && (l.length = c + 1), l.push(e), c = l.length - 1;
9489                var a = {
9490                    level: e,
9491                    lastLevel: r,
9492                    originalEvent: t
9493                };
9494                return u.fire("AddUndo", a), 0 < c && (d(!0), u.fire("change", a)), e
9495            },
9496            undo: function () {
9497                var e;
9498                return o.typing && (o.add(), o.typing = !1, i(!1)), 0 < c && (e = l[--c], Av(u, e, !0), d(!0), u.fire("undo", {
9499                    level: e
9500                })), e
9501            },
9502            redo: function () {
9503                var e;
9504                return c < l.length - 1 && (e = l[++c], Av(u, e, !1), d(!0), u.fire("redo", {
9505                    level: e
9506                })), e
9507            },
9508            clear: function () {
9509                l = [], c = 0, o.typing = !1, o.data = l, u.fire("ClearUndos")
9510            },
9511            hasUndo: function () {
9512                return 0 < c || o.typing && l[0] && !_v(kv(u), l[0])
9513            },
9514            hasRedo: function () {
9515                return c < l.length - 1 && !o.typing
9516            },
9517            transact: function (e) {
9518                return n(), o.beforeChange(), o.ignore(e), o.add()
9519            },
9520            ignore: function (e) {
9521                try {
9522                    t++, e()
9523                } finally {
9524                    t--
9525                }
9526            },
9527            extra: function (e, t) {
9528                var n, r;
9529                o.transact(e) && (r = l[c].bookmark, n = l[c - 1], Av(u, n, !0), o.transact(t) && (l[c - 1].beforeBookmark = r))
9530            }
9531        }
9532    }
9533    var Dv, Bv, Ov = Sl.isEq,
9534        Pv = function (e, t, n) {
9535            var r = e.formatter.get(n);
9536            if (r)
9537                for (var o = 0; o < r.length; o++)
9538                    if (!1 === r[o].inherit && e.dom.is(t, r[o].selector)) return !0;
9539            return !1
9540        },
9541        Lv = function (t, e, n, r) {
9542            var o = t.dom.getRoot();
9543            return e !== o && (e = t.dom.getParent(e, function (e) {
9544                return !!Pv(t, e, n) || e.parentNode === o || !!Fv(t, e, n, r, !0)
9545            }), Fv(t, e, n, r))
9546        },
9547        Iv = function (e, t, n) {
9548            return !!Ov(t, n.inline) || !!Ov(t, n.block) || (n.selector ? 1 === t.nodeType && e.is(t, n.selector) : void 0)
9549        },
9550        Mv = function (e, t, n, r, o, i) {
9551            var a, u, s, c = n[r];
9552            if (n.onmatch) return n.onmatch(t, n, r);
9553            if (c)
9554                if ("undefined" == typeof c.length) {
9555                    for (a in c)
9556                        if (c.hasOwnProperty(a)) {
9557                            if (u = "attributes" === r ? e.getAttrib(t, a) : Sl.getStyle(e, t, a), o && !u && !n.exact) return;
9558                            if ((!o || n.exact) && !Ov(u, Sl.normalizeStyleValue(e, Sl.replaceVars(c[a], i), a))) return
9559                        }
9560                } else
9561                    for (s = 0; s < c.length; s++)
9562                        if ("attributes" === r ? e.getAttrib(t, c[s]) : Sl.getStyle(e, t, c[s])) return n;
9563            return n
9564        },
9565        Fv = function (e, t, n, r, o) {
9566            var i, a, u, s, c = e.formatter.get(n),
9567                l = e.dom;
9568            if (c && t)
9569                for (a = 0; a < c.length; a++)
9570                    if (i = c[a], Iv(e.dom, t, i) && Mv(l, t, i, "attributes", o, r) && Mv(l, t, i, "styles", o, r)) {
9571                        if (s = i.classes)
9572                            for (u = 0; u < s.length; u++)
9573                                if (!e.dom.hasClass(t, s[u])) return;
9574                        return i
9575                    }
9576        },
9577        Uv = {
9578            matchNode: Fv,
9579            matchName: Iv,
9580            match: function (e, t, n, r) {
9581                var o;
9582                return r ? Lv(e, r, t, n) : (r = e.selection.getNode(), !!Lv(e, r, t, n) || !((o = e.selection.getStart()) === r || !Lv(e, o, t, n)))
9583            },
9584            matchAll: function (r, o, i) {
9585                var e, a = [],
9586                    u = {};
9587                return e = r.selection.getStart(), r.dom.getParent(e, function (e) {
9588                    var t, n;
9589                    for (t = 0; t < o.length; t++) n = o[t], !u[n] && Fv(r, e, n, i) && (u[n] = !0, a.push(n))
9590                }, r.dom.getRoot()), a
9591            },
9592            canApply: function (e, t) {
9593                var n, r, o, i, a, u = e.formatter.get(t),
9594                    s = e.dom;
9595                if (u)
9596                    for (n = e.selection.getStart(), r = Sl.getParents(s, n), i = u.length - 1; 0 <= i; i--) {
9597                        if (!(a = u[i].selector) || u[i].defaultBlock) return !0;
9598                        for (o = r.length - 1; 0 <= o; o--)
9599                            if (s.is(r[o], a)) return !0
9600                    }
9601                return !1
9602            },
9603            matchesUnInheritedFormatSelector: Pv
9604        },
9605        zv = function (e, t) {
9606            return e.splitText(t)
9607        },
9608        Vv = function (e) {
9609            var t = e.startContainer,
9610                n = e.startOffset,
9611                r = e.endContainer,
9612                o = e.endOffset;
9613            return t === r && Do.isText(t) ? 0 < n && n < t.nodeValue.length && (t = (r = zv(t, n)).previousSibling, n < o ? (t = r = zv(r, o -= n).previousSibling, o = r.nodeValue.length, n = 0) : o = 0) : (Do.isText(t) && 0 < n && n < t.nodeValue.length && (t = zv(t, n), n = 0), Do.isText(r) && 0 < o && o < r.nodeValue.length && (o = (r = zv(r, o).previousSibling).nodeValue.length)), {
9614                startContainer: t,
9615                startOffset: n,
9616                endContainer: r,
9617                endOffset: o
9618            }
9619        },
9620        qv = wa,
9621        Hv = "_mce_caret",
9622        jv = function (e) {
9623            return 0 < function (e) {
9624                for (var t = []; e;) {
9625                    if (3 === e.nodeType && e.nodeValue !== qv || 1 < e.childNodes.length) return [];
9626                    1 === e.nodeType && t.push(e), e = e.firstChild
9627                }
9628                return t
9629            }(e).length
9630        },
9631        $v = function (e) {
9632            var t;
9633            if (e)
9634                for (e = (t = new oo(e, e)).current(); e; e = t.next())
9635                    if (3 === e.nodeType) return e;
9636            return null
9637        },
9638        Wv = function (e) {
9639            var t = er.fromTag("span");
9640            return hr.setAll(t, {
9641                id: Hv,
9642                "data-mce-bogus": "1",
9643                "data-mce-type": "format-caret"
9644            }), e && Ti.append(t, er.fromText(qv)), t
9645        },
9646        Kv = function (e, t, n, r) {
9647            var o, i, a, u;
9648            o = t.getRng(!0), i = e.getParent(n, e.isBlock), jv(n) ? (!1 !== r && (o.setStartBefore(n), o.setEndBefore(n)), e.remove(n)) : ((u = $v(n)) && u.nodeValue.charAt(0) === qv && u.deleteData(0, 1), a = u, o.startContainer === a && 0 < o.startOffset && o.setStart(a, o.startOffset - 1), o.endContainer === a && 0 < o.endOffset && o.setEnd(a, o.endOffset - 1), e.remove(n, !0)), i && e.isEmpty(i) && af(er.fromDom(i)), t.setRng(o)
9649        },
9650        Xv = function (e, t, n, r, o) {
9651            if (r) Kv(t, n, r, o);
9652            else if (!(r = Xu(e, n.getStart())))
9653                for (; r = t.get(Hv);) Kv(t, n, r, !1)
9654        },
9655        Yv = function (e, t, n) {
9656            var r = e.dom,
9657                o = r.getParent(n, ya.curry(Sl.isTextBlock, e));
9658            o && r.isEmpty(o) ? n.parentNode.replaceChild(t, n) : ( of (er.fromDom(n)), r.isEmpty(n) ? n.parentNode.replaceChild(t, n) : r.insertAfter(t, n))
9659        },
9660        Gv = function (e, t) {
9661            return e.appendChild(t), t
9662        },
9663        Jv = function (e, t) {
9664            var n, r, o = (n = function (e, t) {
9665                return Gv(e, t.cloneNode(!1))
9666            }, r = t, function (e, t) {
9667                for (var n = e.length - 1; 0 <= n; n--) t(e[n], n, e)
9668            }(e, function (e) {
9669                r = n(r, e)
9670            }), r);
9671            return Gv(o, o.ownerDocument.createTextNode(qv))
9672        },
9673        Qv = function (e) {
9674            var i = e.dom,
9675                a = e.selection,
9676                u = e.getBody();
9677            e.on("mouseup keydown", function (e) {
9678                var t, n, r, o;
9679                t = u, n = i, r = a, o = e.keyCode, Xv(t, n, r, null, !1), 8 === o && r.isCollapsed() && r.getStart().innerHTML === qv && Xv(t, n, r, Xu(t, r.getStart())), 37 !== o && 39 !== o || Xv(t, n, r, Xu(t, r.getStart()))
9680            })
9681        },
9682        Zv = function (e, t) {
9683            return e.schema.getTextInlineElements().hasOwnProperty(sr.name(t)) && !Ku(t.dom()) && !Do.isBogus(t.dom())
9684        },
9685        eb = {},
9686        tb = jt.filter,
9687        nb = jt.each;
9688    Bv = function (e) {
9689        var t, n, r = e.selection.getRng();
9690        t = Do.matchNodeNames("pre"), r.collapsed || (n = e.selection.getSelectedBlocks(), nb(tb(tb(n, t), function (e) {
9691            return t(e.previousSibling) && -1 !== jt.indexOf(n, e.previousSibling)
9692        }), function (e) {
9693            var t, n;
9694            t = e.previousSibling, pn(n = e).remove(), pn(t).append("<br><br>").append(n.childNodes)
9695        }))
9696    }, eb[Dv = "pre"] || (eb[Dv] = []), eb[Dv].push(Bv);
9697    var rb = function (e, t) {
9698            nb(eb[e], function (e) {
9699                e(t)
9700            })
9701        },
9702        ob = /^(src|href|style)$/,
9703        ib = Yt.each,
9704        ab = Sl.isEq,
9705        ub = function (e) {
9706            return /^(TH|TD)$/.test(e.nodeName)
9707        },
9708        sb = function (e, t, n) {
9709            var r, o, i;
9710            return r = t[n ? "startContainer" : "endContainer"], o = t[n ? "startOffset" : "endOffset"], Do.isElement(r) && (i = r.childNodes.length - 1, !n && o && o--, r = r.childNodes[i < o ? i : o]), Do.isText(r) && n && o >= r.nodeValue.length && (r = new oo(r, e.getBody()).next() || r), Do.isText(r) && !n && 0 === o && (r = new oo(r, e.getBody()).prev() || r), r
9711        },
9712        cb = function (e, t, n, r) {
9713            var o = e.create(n, r);
9714            return t.parentNode.insertBefore(o, t), o.appendChild(t), o
9715        },
9716        lb = function (e, t, n, r) {
9717            return !(t = Sl.getNonWhiteSpaceSibling(t, n, r)) || "BR" === t.nodeName || e.isBlock(t)
9718        },
9719        fb = function (e, n, r, o, i) {
9720            var t, a, u, s, c, l, f, d, m, g, p, h, v, b, y = e.dom;
9721            if (c = y, !(ab(l = o, (f = n).inline) || ab(l, f.block) || (f.selector ? Do.isElement(l) && c.is(l, f.selector) : void 0) || (s = o, n.links && "A" === s.tagName))) return !1;
9722            if ("all" !== n.remove)
9723                for (ib(n.styles, function (e, t) {
9724                        e = Sl.normalizeStyleValue(y, Sl.replaceVars(e, r), t), "number" == typeof t && (t = e, i = 0), (n.remove_similar || !i || ab(Sl.getStyle(y, i, t), e)) && y.setStyle(o, t, ""), u = 1
9725                    }), u && "" === y.getAttrib(o, "style") && (o.removeAttribute("style"), o.removeAttribute("data-mce-style")), ib(n.attributes, function (e, t) {
9726                        var n;
9727                        if (e = Sl.replaceVars(e, r), "number" == typeof t && (t = e, i = 0), !i || ab(y.getAttrib(i, t), e)) {
9728                            if ("class" === t && (e = y.getAttrib(o, t)) && (n = "", ib(e.split(/\s+/), function (e) {
9729                                    /mce\-\w+/.test(e) && (n += (n ? " " : "") + e)
9730                                }), n)) return void y.setAttrib(o, t, n);
9731                            "class" === t && o.removeAttribute("className"), ob.test(t) && o.removeAttribute("data-mce-" + t), o.removeAttribute(t)
9732                        }
9733                    }), ib(n.classes, function (e) {
9734                        e = Sl.replaceVars(e, r), i && !y.hasClass(i, e) || y.removeClass(o, e)
9735                    }), a = y.getAttribs(o), t = 0; t < a.length; t++) {
9736                    var C = a[t].nodeName;
9737                    if (0 !== C.indexOf("_") && 0 !== C.indexOf("data-")) return !1
9738                }
9739            return "none" !== n.remove ? (d = e, g = n, h = (m = o).parentNode, v = d.dom, b = d.settings.forced_root_block, g.block && (b ? h === v.getRoot() && (g.list_block && ab(m, g.list_block) || ib(Yt.grep(m.childNodes), function (e) {
9740                Sl.isValid(d, b, e.nodeName.toLowerCase()) ? p ? p.appendChild(e) : (p = cb(v, e, b), v.setAttribs(p, d.settings.forced_root_block_attrs)) : p = 0
9741            })) : v.isBlock(m) && !v.isBlock(h) && (lb(v, m, !1) || lb(v, m.firstChild, !0, 1) || m.insertBefore(v.create("br"), m.firstChild), lb(v, m, !0) || lb(v, m.lastChild, !1, 1) || m.appendChild(v.create("br")))), g.selector && g.inline && !ab(g.inline, m) || v.remove(m, 1), !0) : void 0
9742        },
9743        db = fb,
9744        mb = function (s, c, l, e, f) {
9745            var t, n, d = s.formatter.get(c),
9746                m = d[0],
9747                a = !0,
9748                u = s.dom,
9749                r = s.selection,
9750                i = function (e) {
9751                    var n, t, r, o, i, a, u = (n = s, t = e, r = c, o = l, i = f, ib(Sl.getParents(n.dom, t.parentNode).reverse(), function (e) {
9752                        var t;
9753                        a || "_start" === e.id || "_end" === e.id || (t = Uv.matchNode(n, e, r, o, i)) && !1 !== t.split && (a = e)
9754                    }), a);
9755                    return function (e, t, n, r, o, i, a, u) {
9756                        var s, c, l, f, d, m, g = e.dom;
9757                        if (n) {
9758                            for (m = n.parentNode, s = r.parentNode; s && s !== m; s = s.parentNode) {
9759                                for (c = g.clone(s, !1), d = 0; d < t.length; d++)
9760                                    if (fb(e, t[d], u, c, c)) {
9761                                        c = 0;
9762                                        break
9763                                    }
9764                                c && (l && c.appendChild(l), f || (f = c), l = c)
9765                            }!i || a.mixed && g.isBlock(n) || (r = g.split(n, r)), l && (o.parentNode.insertBefore(l, o), f.appendChild(o))
9766                        }
9767                        return r
9768                    }(s, d, u, e, e, !0, m, l)
9769                },
9770                g = function (e) {
9771                    var t, n, r, o, i;
9772                    if (Do.isElement(e) && u.getContentEditable(e) && (o = a, a = "true" === u.getContentEditable(e), i = !0), t = Yt.grep(e.childNodes), a && !i)
9773                        for (n = 0, r = d.length; n < r && !fb(s, d[n], l, e, e); n++);
9774                    if (m.deep && t.length) {
9775                        for (n = 0, r = t.length; n < r; n++) g(t[n]);
9776                        i && (a = o)
9777                    }
9778                },
9779                p = function (e) {
9780                    var t = u.get(e ? "_start" : "_end"),
9781                        n = t[e ? "firstChild" : "lastChild"];
9782                    return xl(n) && (n = n[e ? "firstChild" : "lastChild"]), Do.isText(n) && 0 === n.data.length && (n = e ? t.previousSibling || t.nextSibling : t.nextSibling || t.previousSibling), u.remove(t, !0), n
9783                },
9784                o = function (e) {
9785                    var t, n, r = e.commonAncestorContainer;
9786                    if (e = Ml(s, e, d, !0), m.split) {
9787                        if (e = Vv(e), (t = sb(s, e, !0)) !== (n = sb(s, e))) {
9788                            if (/^(TR|TH|TD)$/.test(t.nodeName) && t.firstChild && (t = "TR" === t.nodeName ? t.firstChild.firstChild || t : t.firstChild || t), r && /^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName) && ub(n) && n.firstChild && (n = n.firstChild || n), u.isChildOf(t, n) && t !== n && !u.isBlock(n) && !ub(t) && !ub(n)) {
9789                                var o = function (e, t, n, r, o) {
9790                                    var i = (r ? "next" : "previous") + "Sibling",
9791                                        a = e.create(n, o);
9792                                    t.parentNode.insertBefore(a, t);
9793                                    for (var u = [t], s = t; s = s[i];) u.push(s);
9794                                    return u.forEach(function (e) {
9795                                        return a.appendChild(e)
9796                                    }), a
9797                                }(u, t, "span", !0, {
9798                                    id: "_start",
9799                                    "data-mce-type": "bookmark"
9800                                });
9801                                return i(o), void(t = p(!0))
9802                            }
9803                            t = cb(u, t, "span", {
9804                                id: "_start",
9805                                "data-mce-type": "bookmark"
9806                            }), n = cb(u, n, "span", {
9807                                id: "_end",
9808                                "data-mce-type": "bookmark"
9809                            }), i(t), i(n), t = p(!0), n = p()
9810                        } else t = n = i(t);
9811                        e.startContainer = t.parentNode ? t.parentNode : t, e.startOffset = u.nodeIndex(t), e.endContainer = n.parentNode ? n.parentNode : n, e.endOffset = u.nodeIndex(n) + 1
9812                    }
9813                    Ul(u, e, function (e) {
9814                        ib(e, function (e) {
9815                            g(e), Do.isElement(e) && "underline" === s.dom.getStyle(e, "text-decoration") && e.parentNode && "underline" === Sl.getTextDecoration(u, e.parentNode) && fb(s, {
9816                                deep: !1,
9817                                exact: !0,
9818                                inline: "span",
9819                                styles: {
9820                                    textDecoration: "underline"
9821                                }
9822                            }, null, e)
9823                        })
9824                    })
9825                };
9826            if (e) e.nodeType ? ((n = u.createRng()).setStartBefore(e), n.setEndAfter(e), o(n)) : o(e);
9827            else if ("false" !== u.getContentEditable(r.getNode())) r.isCollapsed() && m.inline && !u.select("td[data-mce-selected],th[data-mce-selected]").length ? function (e, t, n, r) {
9828                var o, i, a, u, s, c, l, f = e.dom,
9829                    d = e.selection,
9830                    m = [],
9831                    g = d.getRng();
9832                for (o = g.startContainer, i = g.startOffset, 3 === (s = o).nodeType && (i !== o.nodeValue.length && (u = !0), s = s.parentNode); s;) {
9833                    if (Uv.matchNode(e, s, t, n, r)) {
9834                        c = s;
9835                        break
9836                    }
9837                    s.nextSibling && (u = !0), m.push(s), s = s.parentNode
9838                }
9839                if (c)
9840                    if (u) {
9841                        a = d.getBookmark(), g.collapse(!0);
9842                        var p = Ml(e, g, e.formatter.get(t), !0);
9843                        p = Vv(p), e.formatter.remove(t, n, p), d.moveToBookmark(a)
9844                    } else {
9845                        l = Xu(e.getBody(), c);
9846                        var h = Wv(!1).dom(),
9847                            v = Jv(m, h);
9848                        Yv(e, h, l || c), Kv(f, d, l, !1), d.setCursorLocation(v, 1), f.isEmpty(c) && f.remove(c)
9849                    }
9850            }(s, c, l, f) : (t = $u.getPersistentBookmark(s.selection, !0), o(r.getRng()), r.moveToBookmark(t), m.inline && Uv.match(s, c, l, r.getStart()) && Sl.moveStart(u, r, r.getRng()), s.nodeChanged());
9851            else {
9852                e = r.getNode();
9853                for (var h = 0, v = d.length; h < v && (!d[h].ceFalseOverride || !fb(s, d[h], l, e, e)); h++);
9854            }
9855        },
9856        gb = Yt.each,
9857        pb = function (e) {
9858            return e && 1 === e.nodeType && !xl(e) && !Ku(e) && !Do.isBogus(e)
9859        },
9860        hb = function (e, t) {
9861            var n;
9862            for (n = e; n; n = n[t]) {
9863                if (3 === n.nodeType && 0 !== n.nodeValue.length) return e;
9864                if (1 === n.nodeType && !xl(n)) return n
9865            }
9866            return e
9867        },
9868        vb = function (e, t, n) {
9869            var r, o, i = new rf(e);
9870            if (t && n && (t = hb(t, "previousSibling"), n = hb(n, "nextSibling"), i.compare(t, n))) {
9871                for (r = t.nextSibling; r && r !== n;) r = (o = r).nextSibling, t.appendChild(o);
9872                return e.remove(n), Yt.each(Yt.grep(n.childNodes), function (e) {
9873                    t.appendChild(e)
9874                }), t
9875            }
9876            return n
9877        },
9878        bb = function (e, t, n) {
9879            gb(e.childNodes, function (e) {
9880                pb(e) && (t(e) && n(e), e.hasChildNodes() && bb(e, t, n))
9881            })
9882        },
9883        yb = function (n, e) {
9884            return b(function (e, t) {
9885                return !(!t || !Sl.getStyle(n, t, e))
9886            }, e)
9887        },
9888        Cb = function (r, e, t) {
9889            return b(function (e, t, n) {
9890                r.setStyle(n, e, t), "" === n.getAttribute("style") && n.removeAttribute("style"), xb(r, n)
9891            }, e, t)
9892        },
9893        xb = function (e, t) {
9894            "SPAN" === t.nodeName && 0 === e.getAttribs(t).length && e.remove(t, !0)
9895        },
9896        wb = function (e, t) {
9897            var n;
9898            1 === t.nodeType && t.parentNode && 1 === t.parentNode.nodeType && (n = Sl.getTextDecoration(e, t.parentNode), e.getStyle(t, "color") && n ? e.setStyle(t, "text-decoration", n) : e.getStyle(t, "text-decoration") === n && e.setStyle(t, "text-decoration", null))
9899        },
9900        Nb = function (n, e, r, o) {
9901            gb(e, function (t) {
9902                gb(n.dom.select(t.inline, o), function (e) {
9903                        pb(e) && db(n, t, r, e, t.exact ? e : null)
9904                    }),
9905                    function (r, e, t) {
9906                        if (e.clear_child_styles) {
9907                            var n = e.links ? "*:not(a)" : "*";
9908                            gb(r.select(n, t), function (n) {
9909                                pb(n) && gb(e.styles, function (e, t) {
9910                                    r.setStyle(n, t, "")
9911                                })
9912                            })
9913                        }
9914                    }(n.dom, t, o)
9915            })
9916        },
9917        Eb = function (e, t, n, r) {
9918            (t.styles.color || t.styles.textDecoration) && (Yt.walk(r, b(wb, e), "childNodes"), wb(e, r))
9919        },
9920        Sb = function (e, t, n, r) {
9921            t.styles && t.styles.backgroundColor && bb(r, yb(e, "fontSize"), Cb(e, "backgroundColor", Sl.replaceVars(t.styles.backgroundColor, n)))
9922        },
9923        Tb = function (e, t, n, r) {
9924            "sub" !== t.inline && "sup" !== t.inline || (bb(r, yb(e, "fontSize"), Cb(e, "fontSize", "")), e.remove(e.select("sup" === t.inline ? "sub" : "sup", r), !0))
9925        },
9926        kb = function (e, t, n, r) {
9927            r && !1 !== t.merge_siblings && (r = vb(e, Sl.getNonWhiteSpaceSibling(r), r), r = vb(e, r, Sl.getNonWhiteSpaceSibling(r, !0)))
9928        },
9929        Ab = function (t, n, r, o, i) {
9930            Uv.matchNode(t, i.parentNode, r, o) && db(t, n, o, i) || n.merge_with_parents && t.dom.getParent(i.parentNode, function (e) {
9931                if (Uv.matchNode(t, e, r, o)) return db(t, n, o, i), !0
9932            })
9933        },
9934        _b = Yt.each,
9935        Rb = function (g, p, h, r) {
9936            var e, t, v = g.formatter.get(p),
9937                b = v[0],
9938                o = !r && g.selection.isCollapsed(),
9939                i = g.dom,
9940                n = g.selection,
9941                y = function (n, e) {
9942                    if (e = e || b, n) {
9943                        if (e.onformat && e.onformat(n, e, h, r), _b(e.styles, function (e, t) {
9944                                i.setStyle(n, t, Sl.replaceVars(e, h))
9945                            }), e.styles) {
9946                            var t = i.getAttrib(n, "style");
9947                            t && n.setAttribute("data-mce-style", t)
9948                        }
9949                        _b(e.attributes, function (e, t) {
9950                            i.setAttrib(n, t, Sl.replaceVars(e, h))
9951                        }), _b(e.classes, function (e) {
9952                            e = Sl.replaceVars(e, h), i.hasClass(n, e) || i.addClass(n, e)
9953                        })
9954                    }
9955                },
9956                C = function (e, t) {
9957                    var n = !1;
9958                    return !!b.selector && (_b(e, function (e) {
9959                        if (!("collapsed" in e && e.collapsed !== o)) return i.is(t, e.selector) && !Ku(t) ? (y(t, e), !(n = !0)) : void 0
9960                    }), n)
9961                },
9962                a = function (s, e, t, c) {
9963                    var l, f, d = [],
9964                        m = !0;
9965                    l = b.inline || b.block, f = s.create(l), y(f), Ul(s, e, function (e) {
9966                        var a, u = function (e) {
9967                            var t, n, r, o;
9968                            if (o = m, t = e.nodeName.toLowerCase(), n = e.parentNode.nodeName.toLowerCase(), 1 === e.nodeType && s.getContentEditable(e) && (o = m, m = "true" === s.getContentEditable(e), r = !0), Sl.isEq(t, "br")) return a = 0, void(b.block && s.remove(e));
9969                            if (b.wrapper && Uv.matchNode(g, e, p, h)) a = 0;
9970                            else {
9971                                if (m && !r && b.block && !b.wrapper && Sl.isTextBlock(g, t) && Sl.isValid(g, n, l)) return e = s.rename(e, l), y(e), d.push(e), void(a = 0);
9972                                if (b.selector) {
9973                                    var i = C(v, e);
9974                                    if (!b.inline || i) return void(a = 0)
9975                                }!m || r || !Sl.isValid(g, l, t) || !Sl.isValid(g, n, l) || !c && 3 === e.nodeType && 1 === e.nodeValue.length && 65279 === e.nodeValue.charCodeAt(0) || Ku(e) || b.inline && s.isBlock(e) ? (a = 0, _b(Yt.grep(e.childNodes), u), r && (m = o), a = 0) : (a || (a = s.clone(f, !1), e.parentNode.insertBefore(a, e), d.push(a)), a.appendChild(e))
9976                            }
9977                        };
9978                        _b(e, u)
9979                    }), !0 === b.links && _b(d, function (e) {
9980                        var t = function (e) {
9981                            "A" === e.nodeName && y(e, b), _b(Yt.grep(e.childNodes), t)
9982                        };
9983                        t(e)
9984                    }), _b(d, function (e) {
9985                        var t, n, r, o, i, a = function (e) {
9986                            var n = !1;
9987                            return _b(e.childNodes, function (e) {
9988                                if ((t = e) && 1 === t.nodeType && !xl(t) && !Ku(t) && !Do.isBogus(t)) return n = e, !1;
9989                                var t
9990                            }), n
9991                        };
9992                        n = 0, _b(e.childNodes, function (e) {
9993                            Sl.isWhiteSpaceNode(e) || xl(e) || n++
9994                        }), t = n, !(1 < d.length) && s.isBlock(e) || 0 !== t ? (b.inline || b.wrapper) && (b.exact || 1 !== t || ((o = a(r = e)) && !xl(o) && Uv.matchName(s, o, b) && (i = s.clone(o, !1), y(i), s.replace(i, r, !0), s.remove(o, 1)), e = i || r), Nb(g, v, h, e), Ab(g, b, p, h, e), Sb(s, b, h, e), Tb(s, b, h, e), kb(s, b, h, e)) : s.remove(e, 1)
9995                    })
9996                };
9997            if ("false" !== i.getContentEditable(n.getNode())) {
9998                if (b) {
9999                    if (r) r.nodeType ? C(v, r) || ((t = i.createRng()).setStartBefore(r), t.setEndAfter(r), a(i, Ml(g, t, v), 0, !0)) : a(i, r, 0, !0);
10000                    else if (o && b.inline && !i.select("td[data-mce-selected],th[data-mce-selected]").length) ! function (e, t, n) {
10001                        var r, o, i, a, u, s, c = e.selection;
10002                        a = (r = c.getRng(!0)).startOffset, s = r.startContainer.nodeValue, (o = Xu(e.getBody(), c.getStart())) && (i = $v(o));
10003                        var l, f, d = /[^\s\u00a0\u00ad\u200b\ufeff]/;
10004                        s && 0 < a && a < s.length && d.test(s.charAt(a)) && d.test(s.charAt(a - 1)) ? (u = c.getBookmark(), r.collapse(!0), r = Ml(e, r, e.formatter.get(t)), r = Vv(r), e.formatter.apply(t, n, r), c.moveToBookmark(u)) : (o && i.nodeValue === qv || (l = e.getDoc(), f = Wv(!0).dom(), i = (o = l.importNode(f, !0)).firstChild, r.insertNode(o), a = 1), e.formatter.apply(t, n, o), c.setCursorLocation(i, a))
10005                    }(g, p, h);
10006                    else {
10007                        var u = g.selection.getNode();
10008                        g.settings.forced_root_block || !v[0].defaultBlock || i.getParent(u, i.isBlock) || Rb(g, v[0].defaultBlock), g.selection.setRng(df(g.selection.getRng())), e = $u.getPersistentBookmark(g.selection, !0), a(i, Ml(g, n.getRng(), v)), b.styles && Eb(i, b, h, u), n.moveToBookmark(e), Sl.moveStart(i, n, n.getRng()), g.nodeChanged()
10009                    }
10010                    rb(p, g)
10011                }
10012            } else {
10013                r = n.getNode();
10014                for (var s = 0, c = v.length; s < c; s++)
10015                    if (v[s].ceFalseOverride && i.is(r, v[s].selector)) return void y(r, v[s])
10016            }
10017        },
10018        Db = {
10019            applyFormat: Rb
10020        },
10021        Bb = Yt.each,
10022        Ob = function (e, t, n, r, o) {
10023            var i, a, u, s, c, l, f, d;
10024            null === t.get() && (a = e, u = {}, (i = t).set({}), a.on("NodeChange", function (n) {
10025                var r = Sl.getParents(a.dom, n.element),
10026                    o = {};
10027                r = Yt.grep(r, function (e) {
10028                    return 1 === e.nodeType && !e.getAttribute("data-mce-bogus")
10029                }), Bb(i.get(), function (e, n) {
10030                    Bb(r, function (t) {
10031                        return a.formatter.matchNode(t, n, {}, e.similar) ? (u[n] || (Bb(e, function (e) {
10032                            e(!0, {
10033                                node: t,
10034                                format: n,
10035                                parents: r
10036                            })
10037                        }), u[n] = e), o[n] = e, !1) : !Uv.matchesUnInheritedFormatSelector(a, t, n) && void 0
10038                    })
10039                }), Bb(u, function (e, t) {
10040                    o[t] || (delete u[t], Bb(e, function (e) {
10041                        e(!1, {
10042                            node: n.element,
10043                            format: t,
10044                            parents: r
10045                        })
10046                    }))
10047                })
10048            })), c = n, l = r, f = o, d = (s = t).get(), Bb(c.split(","), function (e) {
10049                d[e] || (d[e] = [], d[e].similar = f), d[e].push(l)
10050            }), s.set(d)
10051        },
10052        Pb = {
10053            get: function (r) {
10054                var t = {
10055                    valigntop: [{
10056                        selector: "td,th",
10057                        styles: {
10058                            verticalAlign: "top"
10059                        }
10060                    }],
10061                    valignmiddle: [{
10062                        selector: "td,th",
10063                        styles: {
10064                            verticalAlign: "middle"
10065                        }
10066                    }],
10067                    valignbottom: [{
10068                        selector: "td,th",
10069                        styles: {
10070                            verticalAlign: "bottom"
10071                        }
10072                    }],
10073                    alignleft: [{
10074                        selector: "figure.image",
10075                        collapsed: !1,
10076                        classes: "align-left",
10077                        ceFalseOverride: !0,
10078                        preview: "font-family font-size"
10079                    }, {
10080                        selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",
10081                        styles: {
10082                            textAlign: "left"
10083                        },
10084                        inherit: !1,
10085                        preview: !1,
10086                        defaultBlock: "div"
10087                    }, {
10088                        selector: "img,table",
10089                        collapsed: !1,
10090                        styles: {
10091                            "float": "left"
10092                        },
10093                        preview: "font-family font-size"
10094                    }],
10095                    aligncenter: [{
10096                        selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",
10097                        styles: {
10098                            textAlign: "center"
10099                        },
10100                        inherit: !1,
10101                        preview: "font-family font-size",
10102                        defaultBlock: "div"
10103                    }, {
10104                        selector: "figure.image",
10105                        collapsed: !1,
10106                        classes: "align-center",
10107                        ceFalseOverride: !0,
10108                        preview: "font-family font-size"
10109                    }, {
10110                        selector: "img",
10111                        collapsed: !1,
10112                        styles: {
10113                            display: "block",
10114                            marginLeft: "auto",
10115                            marginRight: "auto"
10116                        },
10117                        preview: !1
10118                    }, {
10119                        selector: "table",
10120                        collapsed: !1,
10121                        styles: {
10122                            marginLeft: "auto",
10123                            marginRight: "auto"
10124                        },
10125                        preview: "font-family font-size"
10126                    }],
10127                    alignright: [{
10128                        selector: "figure.image",
10129                        collapsed: !1,
10130                        classes: "align-right",
10131                        ceFalseOverride: !0,
10132                        preview: "font-family font-size"
10133                    }, {
10134                        selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",
10135                        styles: {
10136                            textAlign: "right"
10137                        },
10138                        inherit: !1,
10139                        preview: "font-family font-size",
10140                        defaultBlock: "div"
10141                    }, {
10142                        selector: "img,table",
10143                        collapsed: !1,
10144                        styles: {
10145                            "float": "right"
10146                        },
10147                        preview: "font-family font-size"
10148                    }],
10149                    alignjustify: [{
10150                        selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",
10151                        styles: {
10152                            textAlign: "justify"
10153                        },
10154                        inherit: !1,
10155                        defaultBlock: "div",
10156                        preview: "font-family font-size"
10157                    }],
10158                    bold: [{
10159                        inline: "strong",
10160                        remove: "all"
10161                    }, {
10162                        inline: "span",
10163                        styles: {
10164                            fontWeight: "bold"
10165                        }
10166                    }, {
10167                        inline: "b",
10168                        remove: "all"
10169                    }],
10170                    italic: [{
10171                        inline: "em",
10172                        remove: "all"
10173                    }, {
10174                        inline: "span",
10175                        styles: {
10176                            fontStyle: "italic"
10177                        }
10178                    }, {
10179                        inline: "i",
10180                        remove: "all"
10181                    }],
10182                    underline: [{
10183                        inline: "span",
10184                        styles: {
10185                            textDecoration: "underline"
10186                        },
10187                        exact: !0
10188                    }, {
10189                        inline: "u",
10190                        remove: "all"
10191                    }],
10192                    strikethrough: [{
10193                        inline: "span",
10194                        styles: {
10195                            textDecoration: "line-through"
10196                        },
10197                        exact: !0
10198                    }, {
10199                        inline: "strike",
10200                        remove: "all"
10201                    }],
10202                    forecolor: {
10203                        inline: "span",
10204                        styles: {
10205                            color: "%value"
10206                        },
10207                        links: !0,
10208                        remove_similar: !0,
10209                        clear_child_styles: !0
10210                    },
10211                    hilitecolor: {
10212                        inline: "span",
10213                        styles: {
10214                            backgroundColor: "%value"
10215                        },
10216                        links: !0,
10217                        remove_similar: !0,
10218                        clear_child_styles: !0
10219                    },
10220                    fontname: {
10221                        inline: "span",
10222                        toggle: !1,
10223                        styles: {
10224                            fontFamily: "%value"
10225                        },
10226                        clear_child_styles: !0
10227                    },
10228                    fontsize: {
10229                        inline: "span",
10230                        toggle: !1,
10231                        styles: {
10232                            fontSize: "%value"
10233                        },
10234                        clear_child_styles: !0
10235                    },
10236                    fontsize_class: {
10237                        inline: "span",
10238                        attributes: {
10239                            "class": "%value"
10240                        }
10241                    },
10242                    blockquote: {
10243                        block: "blockquote",
10244                        wrapper: 1,
10245                        remove: "all"
10246                    },
10247                    subscript: {
10248                        inline: "sub"
10249                    },
10250                    superscript: {
10251                        inline: "sup"
10252                    },
10253                    code: {
10254                        inline: "code"
10255                    },
10256                    link: {
10257                        inline: "a",
10258                        selector: "a",
10259                        remove: "all",
10260                        split: !0,
10261                        deep: !0,
10262                        onmatch: function () {
10263                            return !0
10264                        },
10265                        onformat: function (n, e, t) {
10266                            Yt.each(t, function (e, t) {
10267                                r.setAttrib(n, t, e)
10268                            })
10269                        }
10270                    },
10271                    removeformat: [{
10272                        selector: "b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",
10273                        remove: "all",
10274                        split: !0,
10275                        expand: !1,
10276                        block_expand: !0,
10277                        deep: !0
10278                    }, {
10279                        selector: "span",
10280                        attributes: ["style", "class"],
10281                        remove: "empty",
10282                        split: !0,
10283                        expand: !1,
10284                        deep: !0
10285                    }, {
10286                        selector: "*",
10287                        attributes: ["style", "class"],
10288                        split: !1,
10289                        expand: !1,
10290                        deep: !0
10291                    }]
10292                };
10293                return Yt.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/), function (e) {
10294                    t[e] = {
10295                        block: e,
10296                        remove: "all"
10297                    }
10298                }), t
10299            }
10300        },
10301        Lb = Yt.each,
10302        Ib = pi.DOM,
10303        Mb = function (e, t) {
10304            var n, o, r, m = t && t.schema || ni({}),
10305                g = function (e) {
10306                    var t, n, r;
10307                    return o = "string" == typeof e ? {
10308                        name: e,
10309                        classes: [],
10310                        attrs: {}
10311                    } : e, t = Ib.create(o.name), n = t, (r = o).classes.length && Ib.addClass(n, r.classes.join(" ")), Ib.setAttribs(n, r.attrs), t
10312                },
10313                p = function (n, e, t) {
10314                    var r, o, i, a, u, s, c, l, f = 0 < e.length && e[0],
10315                        d = f && f.name;
10316                    if (u = d, s = "string" != typeof (a = n) ? a.nodeName.toLowerCase() : a, c = m.getElementRule(s), i = !(!(l = c && c.parentsRequired) || !l.length) && (u && -1 !== Yt.inArray(l, u) ? u : l[0])) d === i ? (o = e[0], e = e.slice(1)) : o = i;
10317                    else if (f) o = e[0], e = e.slice(1);
10318                    else if (!t) return n;
10319                    return o && (r = g(o)).appendChild(n), t && (r || (r = Ib.create("div")).appendChild(n), Yt.each(t, function (e) {
10320                        var t = g(e);
10321                        r.insertBefore(t, n)
10322                    })), p(r, e, o && o.siblings)
10323                };
10324            return e && e.length ? (o = e[0], n = g(o), (r = Ib.create("div")).appendChild(p(n, e.slice(1), o.siblings)), r) : ""
10325        },
10326        Fb = function (e) {
10327            var t, a = {
10328                classes: [],
10329                attrs: {}
10330            };
10331            return "*" !== (e = a.selector = Yt.trim(e)) && (t = e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, function (e, t, n, r, o) {
10332                switch (t) {
10333                    case "#":
10334                        a.attrs.id = n;
10335                        break;
10336                    case ".":
10337                        a.classes.push(n);
10338                        break;
10339                    case ":":
10340                        -1 !== Yt.inArray("checked disabled enabled read-only required".split(" "), n) && (a.attrs[n] = n)
10341                }
10342                if ("[" === r) {
10343                    var i = o.match(/([\w\-]+)(?:\=\"([^\"]+))?/);
10344                    i && (a.attrs[i[1]] = i[2])
10345                }
10346                return ""
10347            })), a.name = t || "div", a
10348        },
10349        Ub = function (e) {
10350            return e && "string" == typeof e ? (e = (e = e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g, "$1"), Yt.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/), function (e) {
10351                var t = Yt.map(e.split(/(?:~\+|~|\+)/), Fb),
10352                    n = t.pop();
10353                return t.length && (n.siblings = t), n
10354            }).reverse()) : []
10355        },
10356        zb = function (n, e) {
10357            var t, r, o, i, a, u, s = "";
10358            if (!1 === (u = n.settings.preview_styles)) return "";
10359            "string" != typeof u && (u = "font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow");
10360            var c = function (e) {
10361                return e.replace(/%(\w+)/g, "")
10362            };
10363            if ("string" == typeof e) {
10364                if (!(e = n.formatter.get(e))) return;
10365                e = e[0]
10366            }
10367            return "preview" in e && !1 === (u = e.preview) ? "" : (t = e.block || e.inline || "span", (i = Ub(e.selector)).length ? (i[0].name || (i[0].name = t), t = e.selector, r = Mb(i, n)) : r = Mb([t], n), o = Ib.select(t, r)[0] || r.firstChild, Lb(e.styles, function (e, t) {
10368                (e = c(e)) && Ib.setStyle(o, t, e)
10369            }), Lb(e.attributes, function (e, t) {
10370                (e = c(e)) && Ib.setAttrib(o, t, e)
10371            }), Lb(e.classes, function (e) {
10372                e = c(e), Ib.hasClass(o, e) || Ib.addClass(o, e)
10373            }), n.fire("PreviewFormats"), Ib.setStyles(r, {
10374                position: "absolute",
10375                left: -65535
10376            }), n.getBody().appendChild(r), a = Ib.getStyle(n.getBody(), "fontSize", !0), a = /px$/.test(a) ? parseInt(a, 10) : 0, Lb(u.split(" "), function (e) {
10377                var t = Ib.getStyle(o, e, !0);
10378                if (!("background-color" === e && /transparent|rgba\s*\([^)]+,\s*0\)/.test(t) && (t = Ib.getStyle(n.getBody(), e, !0), "#ffffff" === Ib.toHex(t).toLowerCase()) || "color" === e && "#000000" === Ib.toHex(t).toLowerCase())) {
10379                    if ("font-size" === e && /em|%$/.test(t)) {
10380                        if (0 === a) return;
10381                        t = parseFloat(t) / (/%$/.test(t) ? 100 : 1) * a + "px"
10382                    }
10383                    "border" === e && t && (s += "padding:0 2px;"), s += e + ":" + t + ";"
10384                }
10385            }), n.fire("AfterPreviewFormats"), Ib.remove(r), s)
10386        },
10387        Vb = function (e, t, n, r, o) {
10388            var i = t.get(n);
10389            !Uv.match(e, n, r, o) || "toggle" in i[0] && !i[0].toggle ? Db.applyFormat(e, n, r, o) : mb(e, n, r, o)
10390        },
10391        qb = function (e) {
10392            e.addShortcut("meta+b", "", "Bold"), e.addShortcut("meta+i", "", "Italic"), e.addShortcut("meta+u", "", "Underline");
10393            for (var t = 1; t <= 6; t++) e.addShortcut("access+" + t, "", ["FormatBlock", !1, "h" + t]);
10394            e.addShortcut("access+7", "", ["FormatBlock", !1, "p"]), e.addShortcut("access+8", "", ["FormatBlock", !1, "div"]), e.addShortcut("access+9", "", ["FormatBlock", !1, "address"])
10395        };
10396
10397    function Hb(e) {
10398        var t, n, r, o = (t = e, n = {}, (r = function (e, t) {
10399                e && ("string" != typeof e ? Yt.each(e, function (e, t) {
10400                    r(t, e)
10401                }) : (t = t.length ? t : [t], Yt.each(t, function (e) {
10402                    "undefined" == typeof e.deep && (e.deep = !e.selector), "undefined" == typeof e.split && (e.split = !e.selector || e.inline), "undefined" == typeof e.remove && e.selector && !e.inline && (e.remove = "none"), e.selector && e.inline && (e.mixed = !0, e.block_expand = !0), "string" == typeof e.classes && (e.classes = e.classes.split(/\s+/))
10403                }), n[e] = t))
10404            })(Pb.get(t.dom)), r(t.settings.formats), {
10405                get: function (e) {
10406                    return e ? n[e] : n
10407                },
10408                register: r,
10409                unregister: function (e) {
10410                    return e && n[e] && delete n[e], n
10411                }
10412            }),
10413            i = Bi(null);
10414        return qb(e), Qv(e), {
10415            get: o.get,
10416            register: o.register,
10417            unregister: o.unregister,
10418            apply: b(Db.applyFormat, e),
10419            remove: b(mb, e),
10420            toggle: b(Vb, e, o),
10421            match: b(Uv.match, e),
10422            matchAll: b(Uv.matchAll, e),
10423            matchNode: b(Uv.matchNode, e),
10424            canApply: b(Uv.canApply, e),
10425            formatChanged: b(Ob, e, i),
10426            getCssText: b(zb, e)
10427        }
10428    }
10429    var jb, $b = Object.prototype.hasOwnProperty,
10430        Wb = (jb = function (e, t) {
10431            return t
10432        }, function () {
10433            for (var e = new Array(arguments.length), t = 0; t < e.length; t++) e[t] = arguments[t];
10434            if (0 === e.length) throw new Error("Can't merge zero objects");
10435            for (var n = {}, r = 0; r < e.length; r++) {
10436                var o = e[r];
10437                for (var i in o) $b.call(o, i) && (n[i] = jb(n[i], o[i]))
10438            }
10439            return n
10440        }),
10441        Kb = {
10442            register: function (t, s, c) {
10443                t.addAttributeFilter("data-mce-tabindex", function (e, t) {
10444                    for (var n, r = e.length; r--;)(n = e[r]).attr("tabindex", n.attributes.map["data-mce-tabindex"]), n.attr(t, null)
10445                }), t.addAttributeFilter("src,href,style", function (e, t) {
10446                    for (var n, r, o = e.length, i = "data-mce-" + t, a = s.url_converter, u = s.url_converter_scope; o--;)(r = (n = e[o]).attributes.map[i]) !== undefined ? (n.attr(t, 0 < r.length ? r : null), n.attr(i, null)) : (r = n.attributes.map[t], "style" === t ? r = c.serializeStyle(c.parseStyle(r), n.name) : a && (r = a.call(u, r, t, n.name)), n.attr(t, 0 < r.length ? r : null))
10447                }), t.addAttributeFilter("class", function (e) {
10448                    for (var t, n, r = e.length; r--;)(n = (t = e[r]).attr("class")) && (n = t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g, ""), t.attr("class", 0 < n.length ? n : null))
10449                }), t.addAttributeFilter("data-mce-type", function (e, t, n) {
10450                    for (var r, o = e.length; o--;) "bookmark" !== (r = e[o]).attributes.map["data-mce-type"] || n.cleanup || r.remove()
10451                }), t.addNodeFilter("noscript", function (e) {
10452                    for (var t, n = e.length; n--;)(t = e[n].firstChild) && (t.value = $o.decode(t.value))
10453                }), t.addNodeFilter("script,style", function (e, t) {
10454                    for (var n, r, o, i = e.length, a = function (e) {
10455                            return e.replace(/(<!--\[CDATA\[|\]\]-->)/g, "\n").replace(/^[\r\n]*|[\r\n]*$/g, "").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, "").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, "")
10456                        }; i--;) r = (n = e[i]).firstChild ? n.firstChild.value : "", "script" === t ? ((o = n.attr("type")) && n.attr("type", "mce-no/type" === o ? null : o.replace(/^mce\-/, "")), "xhtml" === s.element_format && 0 < r.length && (n.firstChild.value = "// <![CDATA[\n" + a(r) + "\n// ]]>")) : "xhtml" === s.element_format && 0 < r.length && (n.firstChild.value = "\x3c!--\n" + a(r) + "\n--\x3e")
10457                }), t.addNodeFilter("#comment", function (e) {
10458                    for (var t, n = e.length; n--;) 0 === (t = e[n]).value.indexOf("[CDATA[") ? (t.name = "#cdata", t.type = 4, t.value = t.value.replace(/^\[CDATA\[|\]\]$/g, "")) : 0 === t.value.indexOf("mce:protected ") && (t.name = "#text", t.type = 3, t.raw = !0, t.value = unescape(t.value).substr(14))
10459                }), t.addNodeFilter("xml:namespace,input", function (e, t) {
10460                    for (var n, r = e.length; r--;) 7 === (n = e[r]).type ? n.remove() : 1 === n.type && ("input" !== t || "type" in n.attributes.map || n.attr("type", "text"))
10461                }), t.addAttributeFilter("data-mce-type", function (e) {
10462                    F(e, function (e) {
10463                        "format-caret" === e.attr("data-mce-type") && (e.isEmpty(t.schema.getNonEmptyElements()) ? e.remove() : e.unwrap())
10464                    })
10465                }), t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize", function (e, t) {
10466                    for (var n = e.length; n--;) e[n].attr(t, null)
10467                })
10468            },
10469            trimTrailingBr: function (e) {
10470                var t, n, r = function (e) {
10471                    return e && "br" === e.name
10472                };
10473                r(t = e.lastChild) && r(n = t.prev) && (t.remove(), n.remove())
10474            }
10475        },
10476        Xb = {
10477            process: function (e, t, n) {
10478                return f = n, (l = e) && l.hasEventListeners("PreProcess") && !f.no_events ? (o = t, i = n, c = (r = e).dom, o = o.cloneNode(!0), (a = document.implementation).createHTMLDocument && (u = a.createHTMLDocument(""), Yt.each("BODY" === o.nodeName ? o.childNodes : [o], function (e) {
10479                    u.body.appendChild(u.importNode(e, !0))
10480                }), o = "BODY" !== o.nodeName ? u.body.firstChild : u.body, s = c.doc, c.doc = u), tp(r, Wb(i, {
10481                    node: o
10482                })), s && (c.doc = s), o) : t;
10483                var r, o, i, a, u, s, c, l, f
10484            }
10485        },
10486        Yb = function (e, a, u) {
10487            e.addNodeFilter("font", function (e) {
10488                F(e, function (e) {
10489                    var t, n = a.parse(e.attr("style")),
10490                        r = e.attr("color"),
10491                        o = e.attr("face"),
10492                        i = e.attr("size");
10493                    r && (n.color = r), o && (n["font-family"] = o), i && (n["font-size"] = u[parseInt(e.attr("size"), 10) - 1]), e.name = "span", e.attr("style", a.serialize(n)), t = e, F(["color", "face", "size"], function (e) {
10494                        t.attr(e, null)
10495                    })
10496                })
10497            })
10498        },
10499        Gb = function (e, t) {
10500            var n, r = oi();
10501            t.convert_fonts_to_spans && Yb(e, r, Yt.explode(t.font_size_legacy_values)), n = r, e.addNodeFilter("strike", function (e) {
10502                F(e, function (e) {
10503                    var t = n.parse(e.attr("style"));
10504                    t["text-decoration"] = "line-through", e.name = "span", e.attr("style", n.serialize(t))
10505                })
10506            })
10507        },
10508        Jb = {
10509            register: function (e, t) {
10510                t.inline_styles && Gb(e, t)
10511            }
10512        },
10513        Qb = /^[ \t\r\n]*$/,
10514        Zb = {
10515            "#text": 3,
10516            "#comment": 8,
10517            "#cdata": 4,
10518            "#pi": 7,
10519            "#doctype": 10,
10520            "#document-fragment": 11
10521        },
10522        ey = function (e, t, n) {
10523            var r, o, i = n ? "lastChild" : "firstChild",
10524                a = n ? "prev" : "next";
10525            if (e[i]) return e[i];
10526            if (e !== t) {
10527                if (r = e[a]) return r;
10528                for (o = e.parent; o && o !== t; o = o.parent)
10529                    if (r = o[a]) return r
10530            }
10531        },
10532        ty = function () {
10533            function a(e, t) {
10534                this.name = e, 1 === (this.type = t) && (this.attributes = [], this.attributes.map = {})
10535            }
10536            return a.create = function (e, t) {
10537                var n, r;
10538                if (n = new a(e, Zb[e] || 1), t)
10539                    for (r in t) n.attr(r, t[r]);
10540                return n
10541            }, a.prototype.replace = function (e) {
10542                return e.parent && e.remove(), this.insert(e, this), this.remove(), this
10543            }, a.prototype.attr = function (e, t) {
10544                var n, r;
10545                if ("string" != typeof e) {
10546                    for (r in e) this.attr(r, e[r]);
10547                    return this
10548                }
10549                if (n = this.attributes) {
10550                    if (t !== undefined) {
10551                        if (null === t) {
10552                            if (e in n.map)
10553                                for (delete n.map[e], r = n.length; r--;)
10554                                    if (n[r].name === e) return n = n.splice(r, 1), this;
10555                            return this
10556                        }
10557                        if (e in n.map) {
10558                            for (r = n.length; r--;)
10559                                if (n[r].name === e) {
10560                                    n[r].value = t;
10561                                    break
10562                                }
10563                        } else n.push({
10564                            name: e,
10565                            value: t
10566                        });
10567                        return n.map[e] = t, this
10568                    }
10569                    return n.map[e]
10570                }
10571            }, a.prototype.clone = function () {
10572                var e, t, n, r, o, i = new a(this.name, this.type);
10573                if (n = this.attributes) {
10574                    for ((o = []).map = {}, e = 0, t = n.length; e < t; e++) "id" !== (r = n[e]).name && (o[o.length] = {
10575                        name: r.name,
10576                        value: r.value
10577                    }, o.map[r.name] = r.value);
10578                    i.attributes = o
10579                }
10580                return i.value = this.value, i.shortEnded = this.shortEnded, i
10581            }, a.prototype.wrap = function (e) {
10582                return this.parent.insert(e, this), e.append(this), this
10583            }, a.prototype.unwrap = function () {
10584                var e, t;
10585                for (e = this.firstChild; e;) t = e.next, this.insert(e, this, !0), e = t;
10586                this.remove()
10587            }, a.prototype.remove = function () {
10588                var e = this.parent,
10589                    t = this.next,
10590                    n = this.prev;
10591                return e && (e.firstChild === this ? (e.firstChild = t) && (t.prev = null) : n.next = t, e.lastChild === this ? (e.lastChild = n) && (n.next = null) : t.prev = n, this.parent = this.next = this.prev = null), this
10592            }, a.prototype.append = function (e) {
10593                var t;
10594                return e.parent && e.remove(), (t = this.lastChild) ? ((t.next = e).prev = t, this.lastChild = e) : this.lastChild = this.firstChild = e, e.parent = this, e
10595            }, a.prototype.insert = function (e, t, n) {
10596                var r;
10597                return e.parent && e.remove(), r = t.parent || this, n ? (t === r.firstChild ? r.firstChild = e : t.prev.next = e, e.prev = t.prev, (e.next = t).prev = e) : (t === r.lastChild ? r.lastChild = e : t.next.prev = e, e.next = t.next, (e.prev = t).next = e), e.parent = r, e
10598            }, a.prototype.getAll = function (e) {
10599                var t, n = [];
10600                for (t = this.firstChild; t; t = ey(t, this)) t.name === e && n.push(t);
10601                return n
10602            }, a.prototype.empty = function () {
10603                var e, t, n;
10604                if (this.firstChild) {
10605                    for (e = [], n = this.firstChild; n; n = ey(n, this)) e.push(n);
10606                    for (t = e.length; t--;)(n = e[t]).parent = n.firstChild = n.lastChild = n.next = n.prev = null
10607                }
10608                return this.firstChild = this.lastChild = null, this
10609            }, a.prototype.isEmpty = function (e, t, n) {
10610                var r, o, i = this.firstChild;
10611                if (t = t || {}, i)
10612                    do {
10613                        if (1 === i.type) {
10614                            if (i.attributes.map["data-mce-bogus"]) continue;
10615                            if (e[i.name]) return !1;
10616                            for (r = i.attributes.length; r--;)
10617                                if ("name" === (o = i.attributes[r].name) || 0 === o.indexOf("data-mce-bookmark")) return !1
10618                        }
10619                        if (8 === i.type) return !1;
10620                        if (3 === i.type && !Qb.test(i.value)) return !1;
10621                        if (3 === i.type && i.parent && t[i.parent.name] && Qb.test(i.value)) return !1;
10622                        if (n && n(i)) return !1
10623                    } while (i = ey(i, this));
10624                return !0
10625            }, a.prototype.walk = function (e) {
10626                return ey(this, null, e)
10627            }, a
10628        }(),
10629        ny = function (e, t, n, r) {
10630            (e.padd_empty_with_br || t.insert) && n[r.name] ? r.empty().append(new ty("br", 1)).shortEnded = !0 : r.empty().append(new ty("#text", 3)).value = "\xa0"
10631        },
10632        ry = function (e) {
10633            return oy(e, "#text") && "\xa0" === e.firstChild.value
10634        },
10635        oy = function (e, t) {
10636            return e && e.firstChild && e.firstChild === e.lastChild && e.firstChild.name === t
10637        },
10638        iy = function (r, e, t, n) {
10639            return n.isEmpty(e, t, function (e) {
10640                return t = e, (n = r.getElementRule(t.name)) && n.paddEmpty;
10641                var t, n
10642            })
10643        },
10644        ay = function (e, t) {
10645            return e && (t[e.name] || "br" === e.name)
10646        },
10647        uy = function (e, p) {
10648            var h = e.schema;
10649            p.remove_trailing_brs && e.addNodeFilter("br", function (e, t, n) {
10650                var r, o, i, a, u, s, c, l, f = e.length,
10651                    d = Yt.extend({}, h.getBlockElements()),
10652                    m = h.getNonEmptyElements(),
10653                    g = h.getNonEmptyElements();
10654                for (d.body = 1, r = 0; r < f; r++)
10655                    if (i = (o = e[r]).parent, d[o.parent.name] && o === i.lastChild) {
10656                        for (u = o.prev; u;) {
10657                            if ("span" !== (s = u.name) || "bookmark" !== u.attr("data-mce-type")) {
10658                                if ("br" !== s) break;
10659                                if ("br" === s) {
10660                                    o = null;
10661                                    break
10662                                }
10663                            }
10664                            u = u.prev
10665                        }
10666                        o && (o.remove(), iy(h, m, g, i) && (c = h.getElementRule(i.name)) && (c.removeEmpty ? i.remove() : c.paddEmpty && ny(p, n, d, i)))
10667                    } else {
10668                        for (a = o; i && i.firstChild === a && i.lastChild === a && !d[(a = i).name];) i = i.parent;
10669                        a === i && !0 !== p.padd_empty_with_br && ((l = new ty("#text", 3)).value = "\xa0", o.replace(l))
10670                    }
10671            }), e.addAttributeFilter("href", function (e) {
10672                var t, n, r, o = e.length;
10673                if (!p.allow_unsafe_link_target)
10674                    for (; o--;) "a" === (t = e[o]).name && "_blank" === t.attr("target") && t.attr("rel", (n = t.attr("rel"), r = n ? Yt.trim(n) : "", /\b(noopener)\b/g.test(r) ? r : r.split(" ").filter(function (e) {
10675                        return 0 < e.length
10676                    }).concat(["noopener"]).sort().join(" ")))
10677            }), p.allow_html_in_named_anchor || e.addAttributeFilter("id,name", function (e) {
10678                for (var t, n, r, o, i = e.length; i--;)
10679                    if ("a" === (o = e[i]).name && o.firstChild && !o.attr("href"))
10680                        for (r = o.parent, t = o.lastChild; n = t.prev, r.insert(t, o), t = n;);
10681            }), p.fix_list_elements && e.addNodeFilter("ul,ol", function (e) {
10682                for (var t, n, r = e.length; r--;)
10683                    if ("ul" === (n = (t = e[r]).parent).name || "ol" === n.name)
10684                        if (t.prev && "li" === t.prev.name) t.prev.append(t);
10685                        else {
10686                            var o = new ty("li", 1);
10687                            o.attr("style", "list-style-type: none"), t.wrap(o)
10688                        }
10689            }), p.validate && h.getValidClasses() && e.addAttributeFilter("class", function (e) {
10690                for (var t, n, r, o, i, a, u, s = e.length, c = h.getValidClasses(); s--;) {
10691                    for (n = (t = e[s]).attr("class").split(" "), i = "", r = 0; r < n.length; r++) o = n[r], u = !1, (a = c["*"]) && a[o] && (u = !0), a = c[t.name], !u && a && a[o] && (u = !0), u && (i && (i += " "), i += o);
10692                    i.length || (i = null), t.attr("class", i)
10693                }
10694            })
10695        },
10696        sy = Yt.makeMap,
10697        cy = Yt.each,
10698        ly = Yt.explode,
10699        fy = Yt.extend;
10700
10701    function dy(T, k) {
10702        void 0 === k && (k = ni());
10703        var A = {},
10704            _ = [],
10705            R = {},
10706            D = {};
10707        (T = T || {}).validate = !("validate" in T) || T.validate, T.root_name = T.root_name || "body";
10708        var B = function (e) {
10709                var t, n, r;
10710                n in A && ((r = R[n]) ? r.push(e) : R[n] = [e]), t = _.length;
10711                for (; t--;)(n = _[t].name) in e.attributes.map && ((r = D[n]) ? r.push(e) : D[n] = [e]);
10712                return e
10713            },
10714            e = {
10715                schema: k,
10716                addAttributeFilter: function (e, n) {
10717                    cy(ly(e), function (e) {
10718                        var t;
10719                        for (t = 0; t < _.length; t++)
10720                            if (_[t].name === e) return void _[t].callbacks.push(n);
10721                        _.push({
10722                            name: e,
10723                            callbacks: [n]
10724                        })
10725                    })
10726                },
10727                getAttributeFilters: function () {
10728                    return [].concat(_)
10729                },
10730                addNodeFilter: function (e, n) {
10731                    cy(ly(e), function (e) {
10732                        var t = A[e];
10733                        t || (A[e] = t = []), t.push(n)
10734                    })
10735                },
10736                getNodeFilters: function () {
10737                    var e = [];
10738                    for (var t in A) A.hasOwnProperty(t) && e.push({
10739                        name: t,
10740                        callbacks: A[t]
10741                    });
10742                    return e
10743                },
10744                filterNode: B,
10745                parse: function (e, a) {
10746                    var t, n, r, o, i, u, s, c, l, f, d, m = [];
10747                    a = a || {}, R = {}, D = {}, l = fy(sy("script,style,head,html,body,title,meta,param"), k.getBlockElements());
10748                    var g = k.getNonEmptyElements(),
10749                        p = k.children,
10750                        h = T.validate,
10751                        v = "forced_root_block" in a ? a.forced_root_block : T.forced_root_block,
10752                        b = k.getWhiteSpaceElements(),
10753                        y = /^[ \t\r\n]+/,
10754                        C = /[ \t\r\n]+$/,
10755                        x = /[ \t\r\n]+/g,
10756                        w = /^[ \t\r\n]+$/;
10757                    f = b.hasOwnProperty(a.context) || b.hasOwnProperty(T.root_name);
10758                    var N = function (e, t) {
10759                            var n, r = new ty(e, t);
10760                            return e in A && ((n = R[e]) ? n.push(r) : R[e] = [r]), r
10761                        },
10762                        E = function (e) {
10763                            var t, n, r, o, i = k.getBlockElements();
10764                            for (t = e.prev; t && 3 === t.type;) {
10765                                if (0 < (r = t.value.replace(C, "")).length) return void(t.value = r);
10766                                if (n = t.next) {
10767                                    if (3 === n.type && n.value.length) {
10768                                        t = t.prev;
10769                                        continue
10770                                    }
10771                                    if (!i[n.name] && "script" !== n.name && "style" !== n.name) {
10772                                        t = t.prev;
10773                                        continue
10774                                    }
10775                                }
10776                                o = t.prev, t.remove(), t = o
10777                            }
10778                        };
10779                    t = uv({
10780                        validate: h,
10781                        allow_script_urls: T.allow_script_urls,
10782                        allow_conditional_comments: T.allow_conditional_comments,
10783                        self_closing_elements: function (e) {
10784                            var t, n = {};
10785                            for (t in e) "li" !== t && "p" !== t && (n[t] = e[t]);
10786                            return n
10787                        }(k.getSelfClosingElements()),
10788                        cdata: function (e) {
10789                            d.append(N("#cdata", 4)).value = e
10790                        },
10791                        text: function (e, t) {
10792                            var n;
10793                            f || (e = e.replace(x, " "), ay(d.lastChild, l) && (e = e.replace(y, ""))), 0 !== e.length && ((n = N("#text", 3)).raw = !!t, d.append(n).value = e)
10794                        },
10795                        comment: function (e) {
10796                            d.append(N("#comment", 8)).value = e
10797                        },
10798                        pi: function (e, t) {
10799                            d.append(N(e, 7)).value = t, E(d)
10800                        },
10801                        doctype: function (e) {
10802                            d.append(N("#doctype", 10)).value = e, E(d)
10803                        },
10804                        start: function (e, t, n) {
10805                            var r, o, i, a, u;
10806                            if (i = h ? k.getElementRule(e) : {}) {
10807                                for ((r = N(i.outputName || e, 1)).attributes = t, r.shortEnded = n, d.append(r), (u = p[d.name]) && p[r.name] && !u[r.name] && m.push(r), o = _.length; o--;)(a = _[o].name) in t.map && ((s = D[a]) ? s.push(r) : D[a] = [r]);
10808                                l[e] && E(r), n || (d = r), !f && b[e] && (f = !0)
10809                            }
10810                        },
10811                        end: function (e) {
10812                            var t, n, r, o, i;
10813                            if (n = h ? k.getElementRule(e) : {}) {
10814                                if (l[e] && !f) {
10815                                    if ((t = d.firstChild) && 3 === t.type)
10816                                        if (0 < (r = t.value.replace(y, "")).length) t.value = r, t = t.next;
10817                                        else
10818                                            for (o = t.next, t.remove(), t = o; t && 3 === t.type;) r = t.value, o = t.next, (0 === r.length || w.test(r)) && (t.remove(), t = o), t = o;
10819                                    if ((t = d.lastChild) && 3 === t.type)
10820                                        if (0 < (r = t.value.replace(C, "")).length) t.value = r, t = t.prev;
10821                                        else
10822                                            for (o = t.prev, t.remove(), t = o; t && 3 === t.type;) r = t.value, o = t.prev, (0 === r.length || w.test(r)) && (t.remove(), t = o), t = o
10823                                }
10824                                if (f && b[e] && (f = !1), n.removeEmpty && iy(k, g, b, d) && !d.attributes.map.name && !d.attr("id")) return i = d.parent, l[d.name] ? d.empty().remove() : d.unwrap(), void(d = i);
10825                                n.paddEmpty && (ry(d) || iy(k, g, b, d)) && ny(T, a, l, d), d = d.parent
10826                            }
10827                        }
10828                    }, k);
10829                    var S = d = new ty(a.context || T.root_name, 11);
10830                    if (t.parse(e), h && m.length && (a.context ? a.invalid = !0 : function (e) {
10831                            var t, n, r, o, i, a, u, s, c, l, f, d, m, g, p, h;
10832                            for (d = sy("tr,td,th,tbody,thead,tfoot,table"), l = k.getNonEmptyElements(), f = k.getWhiteSpaceElements(), m = k.getTextBlockElements(), g = k.getSpecialElements(), t = 0; t < e.length; t++)
10833                                if ((n = e[t]).parent && !n.fixed)
10834                                    if (m[n.name] && "li" === n.parent.name) {
10835                                        for (p = n.next; p && m[p.name];) p.name = "li", p.fixed = !0, n.parent.insert(p, n.parent), p = p.next;
10836                                        n.unwrap(n)
10837                                    } else {
10838                                        for (o = [n], r = n.parent; r && !k.isValidChild(r.name, n.name) && !d[r.name]; r = r.parent) o.push(r);
10839                                        if (r && 1 < o.length) {
10840                                            for (o.reverse(), i = a = B(o[0].clone()), c = 0; c < o.length - 1; c++) {
10841                                                for (k.isValidChild(a.name, o[c].name) ? (u = B(o[c].clone()), a.append(u)) : u = a, s = o[c].firstChild; s && s !== o[c + 1];) h = s.next, u.append(s), s = h;
10842                                                a = u
10843                                            }
10844                                            iy(k, l, f, i) ? r.insert(n, o[0], !0) : (r.insert(i, o[0], !0), r.insert(n, i)), r = o[0], (iy(k, l, f, r) || oy(r, "br")) && r.empty().remove()
10845                                        } else if (n.parent) {
10846                                            if ("li" === n.name) {
10847                                                if ((p = n.prev) && ("ul" === p.name || "ul" === p.name)) {
10848                                                    p.append(n);
10849                                                    continue
10850                                                }
10851                                                if ((p = n.next) && ("ul" === p.name || "ul" === p.name)) {
10852                                                    p.insert(n, p.firstChild, !0);
10853                                                    continue
10854                                                }
10855                                                n.wrap(B(new ty("ul", 1)));
10856                                                continue
10857                                            }
10858                                            k.isValidChild(n.parent.name, "div") && k.isValidChild("div", n.name) ? n.wrap(B(new ty("div", 1))) : g[n.name] ? n.empty().remove() : n.unwrap()
10859                                        }
10860                                    }
10861                        }(m)), v && ("body" === S.name || a.isRootContent) && function () {
10862                            var e, t, n = S.firstChild,
10863                                r = function (e) {
10864                                    e && ((n = e.firstChild) && 3 === n.type && (n.value = n.value.replace(y, "")), (n = e.lastChild) && 3 === n.type && (n.value = n.value.replace(C, "")))
10865                                };
10866                            if (k.isValidChild(S.name, v.toLowerCase())) {
10867                                for (; n;) e = n.next, 3 === n.type || 1 === n.type && "p" !== n.name && !l[n.name] && !n.attr("data-mce-type") ? (t || ((t = N(v, 1)).attr(T.forced_root_block_attrs), S.insert(t, n)), t.append(n)) : (r(t), t = null), n = e;
10868                                r(t)
10869                            }
10870                        }(), !a.invalid) {
10871                        for (c in R) {
10872                            for (s = A[c], i = (n = R[c]).length; i--;) n[i].parent || n.splice(i, 1);
10873                            for (r = 0, o = s.length; r < o; r++) s[r](n, c, a)
10874                        }
10875                        for (r = 0, o = _.length; r < o; r++)
10876                            if ((s = _[r]).name in D) {
10877                                for (i = (n = D[s.name]).length; i--;) n[i].parent || n.splice(i, 1);
10878                                for (i = 0, u = s.callbacks.length; i < u; i++) s.callbacks[i](n, s.name, a)
10879                            }
10880                    }
10881                    return S
10882                }
10883            };
10884        return uy(e, T), Jb.register(e, T), e
10885    }
10886    var my = function (e, t, n) {
10887            -1 === Yt.inArray(t, n) && (e.addAttributeFilter(n, function (e, t) {
10888                for (var n = e.length; n--;) e[n].attr(t, null)
10889            }), t.push(n))
10890        },
10891        gy = function (e, t, n) {
10892            var r = Na(n.getInner ? t.innerHTML : e.getOuterHTML(t));
10893            return n.selection || Co(er.fromDom(t)) ? r : Yt.trim(r)
10894        },
10895        py = function (e, t, n) {
10896            var r = n.selection ? Wb({
10897                    forced_root_block: !1
10898                }, n) : n,
10899                o = e.parse(t, r);
10900            return Kb.trimTrailingBr(o), o
10901        },
10902        hy = function (e, t, n, r, o) {
10903            var i, a, u, s, c = (i = r, lf(t, n).serialize(i));
10904            return a = e, s = c, !(u = o).no_events && a ? np(a, Wb(u, {
10905                content: s
10906            })).content : s
10907        };
10908
10909    function vy(e, t) {
10910        var a, u, s, c, l, n, r = (a = e, n = ["data-mce-selected"], s = (u = t) && u.dom ? u.dom : pi.DOM, c = u && u.schema ? u.schema : ni(a), a.entity_encoding = a.entity_encoding || "named", a.remove_trailing_brs = !("remove_trailing_brs" in a) || a.remove_trailing_brs, l = dy(a, c), Kb.register(l, a, s), {
10911            schema: c,
10912            addNodeFilter: l.addNodeFilter,
10913            addAttributeFilter: l.addAttributeFilter,
10914            serialize: function (e, t) {
10915                var n = Wb({
10916                        format: "html"
10917                    }, t || {}),
10918                    r = Xb.process(u, e, n),
10919                    o = gy(s, r, n),
10920                    i = py(l, o, n);
10921                return "tree" === n.format ? i : hy(u, a, c, i, n)
10922            },
10923            addRules: function (e) {
10924                c.addValidElements(e)
10925            },
10926            setRules: function (e) {
10927                c.setValidElements(e)
10928            },
10929            addTempAttr: b(my, l, n),
10930            getTempAttrs: function () {
10931                return n
10932            }
10933        });
10934        return {
10935            schema: r.schema,
10936            addNodeFilter: r.addNodeFilter,
10937            addAttributeFilter: r.addAttributeFilter,
10938            serialize: r.serialize,
10939            addRules: r.addRules,
10940            setRules: r.setRules,
10941            addTempAttr: r.addTempAttr,
10942            getTempAttrs: r.getTempAttrs
10943        }
10944    }
10945
10946    function by(e) {
10947        return {
10948            getBookmark: b(yl, e),
10949            moveToBookmark: b(Cl, e)
10950        }
10951    }(by || (by = {})).isBookmarkNode = xl;
10952    var yy = by,
10953        Cy = Do.isContentEditableFalse,
10954        xy = Do.isContentEditableTrue,
10955        wy = function (r, a) {
10956            var u, s, c, l, f, d, m, g, p, h, v, b, i, y, C, x, w, N = a.dom,
10957                E = Yt.each,
10958                S = a.getDoc(),
10959                T = document,
10960                k = Math.abs,
10961                A = Math.round,
10962                _ = a.getBody();
10963            l = {
10964                nw: [0, 0, -1, -1],
10965                ne: [1, 0, 1, -1],
10966                se: [1, 1, 1, 1],
10967                sw: [0, 1, -1, 1]
10968            };
10969            var e = ".mce-content-body";
10970            a.contentStyles.push(e + " div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: content-box;background: #FFF;width: 7px;height: 7px;z-index: 10000}" + e + " .mce-resizehandle:hover {background: #000}" + e + " img[data-mce-selected]," + e + " hr[data-mce-selected] {outline: 1px solid black;resize: none}" + e + " .mce-clonedresizable {position: absolute;" + (Re.gecko ? "" : "outline: 1px dashed black;") + "opacity: .5;filter: alpha(opacity=50);z-index: 10000}" + e + " .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}");
10971            var R = function (e) {
10972                    return e && ("IMG" === e.nodeName || a.dom.is(e, "figure.image"))
10973                },
10974                n = function (e) {
10975                    var t, n, r = e.target;
10976                    t = e, n = a.selection.getRng(), !R(t.target) || Gh(t.clientX, t.clientY, n) || e.isDefaultPrevented() || (e.preventDefault(), a.selection.select(r))
10977                },
10978                D = function (e) {
10979                    return a.dom.is(e, "figure.image") ? e.querySelector("img") : e
10980                },
10981                B = function (e) {
10982                    var t = a.settings.object_resizing;
10983                    return !1 !== t && !Re.iOS && ("string" != typeof t && (t = "table,img,figure.image,div"), "false" !== e.getAttribute("data-mce-resize") && e !== a.getBody() && Lr.is(er.fromDom(e), t))
10984                },
10985                O = function (e) {
10986                    var t, n, r, o;
10987                    t = e.screenX - d, n = e.screenY - m, y = t * f[2] + h, C = n * f[3] + v, y = y < 5 ? 5 : y, C = C < 5 ? 5 : C, (R(u) && !1 !== a.settings.resize_img_proportional ? !Qh.modifierPressed(e) : Qh.modifierPressed(e) || R(u) && f[2] * f[3] != 0) && (k(t) > k(n) ? (C = A(y * b), y = A(C / b)) : (y = A(C / b), C = A(y * b))), N.setStyles(D(s), {
10988                        width: y,
10989                        height: C
10990                    }), r = 0 < (r = f.startPos.x + t) ? r : 0, o = 0 < (o = f.startPos.y + n) ? o : 0, N.setStyles(c, {
10991                        left: r,
10992                        top: o,
10993                        display: "block"
10994                    }), c.innerHTML = y + " &times; " + C, f[2] < 0 && s.clientWidth <= y && N.setStyle(s, "left", g + (h - y)), f[3] < 0 && s.clientHeight <= C && N.setStyle(s, "top", p + (v - C)), (t = _.scrollWidth - x) + (n = _.scrollHeight - w) != 0 && N.setStyles(c, {
10995                        left: r - t,
10996                        top: o - n
10997                    }), i || (ip(a, u, h, v), i = !0)
10998                },
10999                P = function () {
11000                    i = !1;
11001                    var e = function (e, t) {
11002                        t && (u.style[e] || !a.schema.isValid(u.nodeName.toLowerCase(), e) ? N.setStyle(D(u), e, t) : N.setAttrib(D(u), e, t))
11003                    };
11004                    e("width", y), e("height", C), N.unbind(S, "mousemove", O), N.unbind(S, "mouseup", P), T !== S && (N.unbind(T, "mousemove", O), N.unbind(T, "mouseup", P)), N.remove(s), N.remove(c), o(u), ap(a, u, y, C), N.setAttrib(u, "style", N.getAttrib(u, "style")), a.nodeChanged()
11005                },
11006                o = function (e) {
11007                    var t, r, o, n, i;
11008                    L(), F(), t = N.getPos(e, _), g = t.x, p = t.y, i = e.getBoundingClientRect(), r = i.width || i.right - i.left, o = i.height || i.bottom - i.top, u !== e && (u = e, y = C = 0), n = a.fire("ObjectSelected", {
11009                        target: e
11010                    }), B(e) && !n.isDefaultPrevented() ? E(l, function (n, e) {
11011                        var t;
11012                        (t = N.get("mceResizeHandle" + e)) && N.remove(t), t = N.add(_, "div", {
11013                            id: "mceResizeHandle" + e,
11014                            "data-mce-bogus": "all",
11015                            "class": "mce-resizehandle",
11016                            unselectable: !0,
11017                            style: "cursor:" + e + "-resize; margin:0; padding:0"
11018                        }), 11 === Re.ie && (t.contentEditable = !1), N.bind(t, "mousedown", function (e) {
11019                            var t;
11020                            e.stopImmediatePropagation(), e.preventDefault(), d = (t = e).screenX, m = t.screenY, h = D(u).clientWidth, v = D(u).clientHeight, b = v / h, (f = n).startPos = {
11021                                x: r * n[0] + g,
11022                                y: o * n[1] + p
11023                            }, x = _.scrollWidth, w = _.scrollHeight, s = u.cloneNode(!0), N.addClass(s, "mce-clonedresizable"), N.setAttrib(s, "data-mce-bogus", "all"), s.contentEditable = !1, s.unSelectabe = !0, N.setStyles(s, {
11024                                left: g,
11025                                top: p,
11026                                margin: 0
11027                            }), s.removeAttribute("data-mce-selected"), _.appendChild(s), N.bind(S, "mousemove", O), N.bind(S, "mouseup", P), T !== S && (N.bind(T, "mousemove", O), N.bind(T, "mouseup", P)), c = N.add(_, "div", {
11028                                "class": "mce-resize-helper",
11029                                "data-mce-bogus": "all"
11030                            }, h + " &times; " + v)
11031                        }), n.elm = t, N.setStyles(t, {
11032                            left: r * n[0] + g - t.offsetWidth / 2,
11033                            top: o * n[1] + p - t.offsetHeight / 2
11034                        })
11035                    }) : L(), u.setAttribute("data-mce-selected", "1")
11036                },
11037                L = function () {
11038                    var e, t;
11039                    for (e in F(), u && u.removeAttribute("data-mce-selected"), l)(t = N.get("mceResizeHandle" + e)) && (N.unbind(t), N.remove(t))
11040                },
11041                I = function (e) {
11042                    var t, n = function (e, t) {
11043                        if (e)
11044                            do {
11045                                if (e === t) return !0
11046                            } while (e = e.parentNode)
11047                    };
11048                    i || a.removed || (E(N.select("img[data-mce-selected],hr[data-mce-selected]"), function (e) {
11049                        e.removeAttribute("data-mce-selected")
11050                    }), t = "mousedown" === e.type ? e.target : r.getNode(), n(t = N.$(t).closest("table,img,figure.image,hr")[0], _) && (U(), n(r.getStart(!0), t) && n(r.getEnd(!0), t)) ? o(t) : L())
11051                },
11052                M = function (e) {
11053                    return Cy(function (e, t) {
11054                        for (; t && t !== e;) {
11055                            if (xy(t) || Cy(t)) return t;
11056                            t = t.parentNode
11057                        }
11058                        return null
11059                    }(a.getBody(), e))
11060                },
11061                F = function () {
11062                    for (var e in l) {
11063                        var t = l[e];
11064                        t.elm && (N.unbind(t.elm), delete t.elm)
11065                    }
11066                },
11067                U = function () {
11068                    try {
11069                        a.getDoc().execCommand("enableObjectResizing", !1, !1)
11070                    } catch (e) {}
11071                };
11072            return a.on("init", function () {
11073                U(), Re.ie && 11 <= Re.ie && (a.on("mousedown click", function (e) {
11074                    var t = e.target,
11075                        n = t.nodeName;
11076                    i || !/^(TABLE|IMG|HR)$/.test(n) || M(t) || (2 !== e.button && a.selection.select(t, "TABLE" === n), "mousedown" === e.type && a.nodeChanged())
11077                }), a.dom.bind(_, "mscontrolselect", function (e) {
11078                    var t = function (e) {
11079                        Le.setEditorTimeout(a, function () {
11080                            a.selection.select(e)
11081                        })
11082                    };
11083                    if (M(e.target)) return e.preventDefault(), void t(e.target);
11084                    /^(TABLE|IMG|HR)$/.test(e.target.nodeName) && (e.preventDefault(), "IMG" === e.target.tagName && t(e.target))
11085                }));
11086                var t = Le.throttle(function (e) {
11087                    a.composing || I(e)
11088                });
11089                a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged", t), a.on("keyup compositionend", function (e) {
11090                    u && "TABLE" === u.nodeName && t(e)
11091                }), a.on("hide blur", L), a.on("contextmenu", n)
11092            }), a.on("remove", F), {
11093                isResizable: B,
11094                showResizeRect: o,
11095                hideResizeRect: L,
11096                updateResizeRect: I,
11097                destroy: function () {
11098                    u = s = null
11099                }
11100            }
11101        },
11102        Ny = function (e) {
11103            return Do.isContentEditableTrue(e) || Do.isContentEditableFalse(e)
11104        },
11105        Ey = function (e, t, n) {
11106            var r, o, i, a, u, s = n;
11107            if (s.caretPositionFromPoint)(o = s.caretPositionFromPoint(e, t)) && ((r = n.createRange()).setStart(o.offsetNode, o.offset), r.collapse(!0));
11108            else if (n.caretRangeFromPoint) r = n.caretRangeFromPoint(e, t);
11109            else if (s.body.createTextRange) {
11110                r = s.body.createTextRange();
11111                try {
11112                    r.moveToPoint(e, t), r.collapse(!0)
11113                } catch (c) {
11114                    r = function (e, n, t) {
11115                        var r, o, i;
11116                        if (r = t.elementFromPoint(e, n), o = t.body.createTextRange(), r && "HTML" !== r.tagName || (r = t.body), o.moveToElementText(r), 0 < (i = (i = Yt.toArray(o.getClientRects())).sort(function (e, t) {
11117                                return (e = Math.abs(Math.max(e.top - n, e.bottom - n))) - (t = Math.abs(Math.max(t.top - n, t.bottom - n)))
11118                            })).length) {
11119                            n = (i[0].bottom + i[0].top) / 2;
11120                            try {
11121                                return o.moveToPoint(e, n), o.collapse(!0), o
11122                            } catch (a) {}
11123                        }
11124                        return null
11125                    }(e, t, n)
11126                }
11127                return i = r, a = n.body, u = i && i.parentElement ? i.parentElement() : null, Do.isContentEditableFalse(function (e, t, n) {
11128                    for (; e && e !== t;) {
11129                        if (n(e)) return e;
11130                        e = e.parentNode
11131                    }
11132                    return null
11133                }(u, a, Ny)) ? null : i
11134            }
11135            return r
11136        },
11137        Sy = function (n, e) {
11138            return $(e, function (e) {
11139                var t = n.fire("GetSelectionRange", {
11140                    range: e
11141                });
11142                return t.range !== e ? t.range : e
11143            })
11144        },
11145        Ty = function (e, t) {
11146            var n = (t || document).createDocumentFragment();
11147            return F(e, function (e) {
11148                n.appendChild(e.dom())
11149            }), er.fromDom(n)
11150        },
11151        ky = kr("element", "width", "rows"),
11152        Ay = kr("element", "cells"),
11153        _y = kr("x", "y"),
11154        Ry = function (e, t) {
11155            var n = parseInt(hr.get(e, t), 10);
11156            return isNaN(n) ? 1 : n
11157        },
11158        Dy = function (e) {
11159            return z(e, function (e, t) {
11160                return t.cells().length > e ? t.cells().length : e
11161            }, 0)
11162        },
11163        By = function (e, t) {
11164            for (var n = e.rows(), r = 0; r < n.length; r++)
11165                for (var o = n[r].cells(), i = 0; i < o.length; i++)
11166                    if (Fr.eq(o[i], t)) return A.some(_y(i, r));
11167            return A.none()
11168        },
11169        Oy = function (e, t, n, r, o) {
11170            for (var i = [], a = e.rows(), u = n; u <= o; u++) {
11171                var s = a[u].cells(),
11172                    c = t < r ? s.slice(t, r + 1) : s.slice(r, t + 1);
11173                i.push(Ay(a[u].element(), c))
11174            }
11175            return i
11176        },
11177        Py = function (e) {
11178            var o = ky(pa(e), 0, []);
11179            return F(Ki(e, "tr"), function (n, r) {
11180                F(Ki(n, "td,th"), function (e, t) {
11181                    ! function (e, t, n, r, o) {
11182                        for (var i = Ry(o, "rowspan"), a = Ry(o, "colspan"), u = e.rows(), s = n; s < n + i; s++) {
11183                            u[s] || (u[s] = Ay(ha(r), []));
11184                            for (var c = t; c < t + a; c++) u[s].cells()[c] = s === n && c === t ? o : pa(o)
11185                        }
11186                    }(o, function (e, t, n) {
11187                        for (; r = t, o = n, i = void 0, ((i = e.rows())[o] ? i[o].cells() : [])[r];) t++;
11188                        var r, o, i;
11189                        return t
11190                    }(o, t, r), r, n, e)
11191                })
11192            }), ky(o.element(), Dy(o.rows()), o.rows())
11193        },
11194        Ly = function (e) {
11195            return n = $((t = e).rows(), function (e) {
11196                var t = $(e.cells(), function (e) {
11197                        var t = ha(e);
11198                        return hr.remove(t, "colspan"), hr.remove(t, "rowspan"), t
11199                    }),
11200                    n = pa(e.element());
11201                return Ai(n, t), n
11202            }), r = pa(t.element()), o = er.fromTag("tbody"), Ai(o, n), Ti.append(r, o), r;
11203            var t, n, r, o
11204        },
11205        Iy = function (l, e, t) {
11206            return By(l, e).bind(function (c) {
11207                return By(l, t).map(function (e) {
11208                    return t = l, r = e, o = (n = c).x(), i = n.y(), a = r.x(), u = r.y(), s = i < u ? Oy(t, o, i, a, u) : Oy(t, o, u, a, i), ky(t.element(), Dy(s), s);
11209                    var t, n, r, o, i, a, u, s
11210                })
11211            })
11212        },
11213        My = function (n, t) {
11214            return V(n, function (e) {
11215                return "li" === sr.name(e) && Ch(e, t)
11216            }).fold(H([]), function (e) {
11217                return (t = n, V(t, function (e) {
11218                    return "ul" === sr.name(e) || "ol" === sr.name(e)
11219                })).map(function (e) {
11220                    return [er.fromTag("li"), er.fromTag(sr.name(e))]
11221                }).getOr([]);
11222                var t
11223            })
11224        },
11225        Fy = function (e, t) {
11226            var n, r = er.fromDom(t.commonAncestorContainer),
11227                o = Yf(r, e),
11228                i = U(o, function (e) {
11229                    return fo(e) || co(e)
11230                }),
11231                a = My(o, t),
11232                u = i.concat(a.length ? a : ho(n = r) ? $r.parent(n).filter(po).fold(H([]), function (e) {
11233                    return [n, e]
11234                }) : po(n) ? [n] : []);
11235            return $(u, pa)
11236        },
11237        Uy = function () {
11238            return Ty([])
11239        },
11240        zy = function (e, t) {
11241            return n = er.fromDom(t.cloneContents()), r = Fy(e, t), o = z(r, function (e, t) {
11242                return Ti.append(t, e), t
11243            }, n), 0 < r.length ? Ty([o]) : o;
11244            var n, r, o
11245        },
11246        Vy = function (e, o) {
11247            return (t = e, n = o[0], ta(n, "table", b(Fr.eq, t))).bind(function (e) {
11248                var t = o[0],
11249                    n = o[o.length - 1],
11250                    r = Py(e);
11251                return Iy(r, t, n).map(function (e) {
11252                    return Ty([Ly(e)])
11253                })
11254            }).getOrThunk(Uy);
11255            var t, n
11256        },
11257        qy = function (e, t) {
11258            var n, r, o = zm(t, e);
11259            return 0 < o.length ? Vy(e, o) : (n = e, 0 < (r = t).length && r[0].collapsed ? Uy() : zy(n, r[0]))
11260        },
11261        Hy = function (e, t) {
11262            var n, r = e.selection.getRng(),
11263                o = e.dom.create("body"),
11264                i = e.selection.getSel(),
11265                a = Sy(e, Pm(i));
11266            if ((t = t || {}).get = !0, t.format = t.format || "html", t.selection = !0, (t = e.fire("BeforeGetContent", t)).isDefaultPrevented()) return e.fire("GetContent", t), t.content;
11267            if ("text" === t.format) return e.selection.isCollapsed() ? "" : Na(r.text || (i.toString ? i.toString() : ""));
11268            r.cloneContents ? (n = t.contextual ? qy(er.fromDom(e.getBody()), a).dom() : r.cloneContents()) && o.appendChild(n) : r.item !== undefined || r.htmlText !== undefined ? (o.innerHTML = "<br>" + (r.item ? r.item(0).outerHTML : r.htmlText), o.removeChild(o.firstChild)) : o.innerHTML = r.toString(), t.getInner = !0;
vendor: 35,107 bytes, lines 11269-11969
11269            var u = e.selection.serializer.serialize(o, t);
11270            return "tree" === t.format ? u : (t.content = e.selection.isCollapsed() ? "" : u, e.fire("GetContent", t), t.content)
11271        },
11272        jy = function (e, t, n) {
11273            var r, o, i, a = e.selection.getRng(),
11274                u = e.getDoc();
11275            if ((n = n || {
11276                    format: "html"
11277                }).set = !0, n.selection = !0, n.content = t, n.no_events || !(n = e.fire("BeforeSetContent", n)).isDefaultPrevented()) {
11278                if (t = n.content, a.insertNode) {
11279                    t += '<span id="__caret">_</span>', a.startContainer === u && a.endContainer === u ? u.body.innerHTML = t : (a.deleteContents(), 0 === u.body.childNodes.length ? u.body.innerHTML = t : a.createContextualFragment ? a.insertNode(a.createContextualFragment(t)) : (o = u.createDocumentFragment(), i = u.createElement("div"), o.appendChild(i), i.outerHTML = t, a.insertNode(o))), r = e.dom.get("__caret"), (a = u.createRange()).setStartBefore(r), a.setEndBefore(r), e.selection.setRng(a), e.dom.remove("__caret");
11280                    try {
11281                        e.selection.setRng(a)
11282                    } catch (s) {}
11283                } else a.item && (u.execCommand("Delete", !1, null), a = e.getRng()), /^\s+/.test(t) ? (a.pasteHTML('<span id="__mce_tmp">_</span>' + t), e.dom.remove("__mce_tmp")) : a.pasteHTML(t);
11284                n.no_events || e.fire("SetContent", n)
11285            } else e.fire("SetContent", n)
11286        },
11287        $y = function (e, t, n, r, o) {
11288            var i = n ? t.startContainer : t.endContainer,
11289                a = n ? t.startOffset : t.endOffset;
11290            return A.from(i).map(er.fromDom).map(function (e) {
11291                return r && t.collapsed ? e : $r.child(e, o(e, a)).getOr(e)
11292            }).bind(function (e) {
11293                return sr.isElement(e) ? A.some(e) : $r.parent(e)
11294            }).map(function (e) {
11295                return e.dom()
11296            }).getOr(e)
11297        },
11298        Wy = function (e, t, n) {
11299            return $y(e, t, !0, n, function (e, t) {
11300                return Math.min($r.childNodesCount(e), t)
11301            })
11302        },
11303        Ky = function (e, t, n) {
11304            return $y(e, t, !1, n, function (e, t) {
11305                return 0 < t ? t - 1 : t
11306            })
11307        },
11308        Xy = function (e, t) {
11309            for (var n = e; e && Do.isText(e) && 0 === e.length;) e = t ? e.nextSibling : e.previousSibling;
11310            return e || n
11311        },
11312        Yy = Yt.each,
11313        Gy = function (e) {
11314            return !!e.select
11315        },
11316        Jy = function (e) {
11317            return !(!e || !e.ownerDocument) && Fr.contains(er.fromDom(e.ownerDocument), er.fromDom(e))
11318        },
11319        Qy = function (u, s, e, c) {
11320            var n, t, l, f, a, r = function (e, t) {
11321                    return jy(c, e, t)
11322                },
11323                o = function (e) {
11324                    var t = m();
11325                    t.collapse(!!e), i(t)
11326                },
11327                d = function () {
11328                    return s.getSelection ? s.getSelection() : s.document.selection
11329                },
11330                m = function () {
11331                    var e, t, n, r, o = function (e, t, n) {
11332                        try {
11333                            return t.compareBoundaryPoints(e, n)
11334                        } catch (r) {
11335                            return -1
11336                        }
11337                    };
11338                    if (!s) return null;
11339                    if (null == (r = s.document)) return null;
11340                    if (c.bookmark !== undefined && !1 === Dp(c)) {
11341                        var i = Hg(c);
11342                        if (i.isSome()) return i.map(function (e) {
11343                            return Sy(c, [e])[0]
11344                        }).getOr(r.createRange())
11345                    }
11346                    try {
11347                        (e = d()) && (t = 0 < e.rangeCount ? e.getRangeAt(0) : e.createRange ? e.createRange() : r.createRange())
11348                    } catch (a) {}
11349                    return (t = Sy(c, [t])[0]) || (t = r.createRange ? r.createRange() : r.body.createTextRange()), t.setStart && 9 === t.startContainer.nodeType && t.collapsed && (n = u.getRoot(), t.setStart(n, 0), t.setEnd(n, 0)), l && f && (0 === o(t.START_TO_START, t, l) && 0 === o(t.END_TO_END, t, l) ? t = f : f = l = null), t
11350                },
11351                i = function (e, t) {
11352                    var n, r;
11353                    if ((o = e) && (Gy(o) || Jy(o.startContainer) && Jy(o.endContainer))) {
11354                        var o, i = Gy(e) ? e : null;
11355                        if (i) {
11356                            f = null;
11357                            try {
11358                                i.select()
11359                            } catch (a) {}
11360                        } else {
11361                            if (n = d(), e = c.fire("SetSelectionRange", {
11362                                    range: e,
11363                                    forward: t
11364                                }).range, n) {
11365                                f = e;
11366                                try {
11367                                    n.removeAllRanges(), n.addRange(e)
11368                                } catch (a) {}!1 === t && n.extend && (n.collapse(e.endContainer, e.endOffset), n.extend(e.startContainer, e.startOffset)), l = 0 < n.rangeCount ? n.getRangeAt(0) : null
11369                            }
11370                            e.collapsed || e.startContainer !== e.endContainer || !n.setBaseAndExtent || Re.ie || e.endOffset - e.startOffset < 2 && e.startContainer.hasChildNodes() && (r = e.startContainer.childNodes[e.startOffset]) && "IMG" === r.tagName && (n.setBaseAndExtent(e.startContainer, e.startOffset, e.endContainer, e.endOffset), n.anchorNode === e.startContainer && n.focusNode === e.endContainer || n.setBaseAndExtent(r, 0, r, 1)), c.fire("AfterSetSelectionRange", {
11371                                range: e,
11372                                forward: t
11373                            })
11374                        }
11375                    }
11376                },
11377                g = function () {
11378                    var e, t, n = d();
11379                    return !(n && n.anchorNode && n.focusNode) || ((e = u.createRng()).setStart(n.anchorNode, n.anchorOffset), e.collapse(!0), (t = u.createRng()).setStart(n.focusNode, n.focusOffset), t.collapse(!0), e.compareBoundaryPoints(e.START_TO_START, t) <= 0)
11380                },
11381                p = {
11382                    bookmarkManager: null,
11383                    controlSelection: null,
11384                    dom: u,
11385                    win: s,
11386                    serializer: e,
11387                    editor: c,
11388                    collapse: o,
11389                    setCursorLocation: function (e, t) {
11390                        var n = u.createRng();
11391                        e ? (n.setStart(e, t), n.setEnd(e, t), i(n), o(!1)) : (xh(u, n, c.getBody(), !0), i(n))
11392                    },
11393                    getContent: function (e) {
11394                        return Hy(c, e)
11395                    },
11396                    setContent: r,
11397                    getBookmark: function (e, t) {
11398                        return n.getBookmark(e, t)
11399                    },
11400                    moveToBookmark: function (e) {
11401                        return n.moveToBookmark(e)
11402                    },
11403                    select: function (e, t) {
11404                        var r, n, o;
11405                        return (r = u, n = e, o = t, A.from(n).map(function (e) {
11406                            var t = r.nodeIndex(e),
11407                                n = r.createRng();
11408                            return n.setStart(e.parentNode, t), n.setEnd(e.parentNode, t + 1), o && (xh(r, n, e, !0), xh(r, n, e, !1)), n
11409                        })).each(i), e
11410                    },
11411                    isCollapsed: function () {
11412                        var e = m(),
11413                            t = d();
11414                        return !(!e || e.item) && (e.compareEndPoints ? 0 === e.compareEndPoints("StartToEnd", e) : !t || e.collapsed)
11415                    },
11416                    isForward: g,
11417                    setNode: function (e) {
11418                        return r(u.getOuterHTML(e)), e
11419                    },
11420                    getNode: function () {
11421                        return e = c.getBody(), (t = m()) ? (r = t.startContainer, o = t.endContainer, i = t.startOffset, a = t.endOffset, n = t.commonAncestorContainer, !t.collapsed && (r === o && a - i < 2 && r.hasChildNodes() && (n = r.childNodes[i]), 3 === r.nodeType && 3 === o.nodeType && (r = r.length === i ? Xy(r.nextSibling, !0) : r.parentNode, o = 0 === a ? Xy(o.previousSibling, !1) : o.parentNode, r && r === o)) ? r : n && 3 === n.nodeType ? n.parentNode : n) : e;
11422                        var e, t, n, r, o, i, a
11423                    },
11424                    getSel: d,
11425                    setRng: i,
11426                    getRng: m,
11427                    getStart: function (e) {
11428                        return Wy(c.getBody(), m(), e)
11429                    },
11430                    getEnd: function (e) {
11431                        return Ky(c.getBody(), m(), e)
11432                    },
11433                    getSelectedBlocks: function (e, t) {
11434                        return function (e, t, n, r) {
11435                            var o, i, a = [];
11436                            if (i = e.getRoot(), n = e.getParent(n || Wy(i, t, t.collapsed), e.isBlock), r = e.getParent(r || Ky(i, t, t.collapsed), e.isBlock), n && n !== i && a.push(n), n && r && n !== r)
11437                                for (var u = new oo(o = n, i);
11438                                    (o = u.next()) && o !== r;) e.isBlock(o) && a.push(o);
11439                            return r && n !== r && r !== i && a.push(r), a
11440                        }(u, m(), e, t)
11441                    },
11442                    normalize: function () {
11443                        var e = m(),
11444                            t = d();
11445                        if (!Im(t) && wh(c)) {
11446                            var n = mg(u, e);
11447                            return n.each(function (e) {
11448                                i(e, g())
11449                            }), n.getOr(e)
11450                        }
11451                        return e
11452                    },
11453                    selectorChanged: function (e, t) {
11454                        var i;
11455                        return a || (a = {}, i = {}, c.on("NodeChange", function (e) {
11456                            var n = e.element,
11457                                r = u.getParents(n, null, u.getRoot()),
11458                                o = {};
11459                            Yy(a, function (e, n) {
11460                                Yy(r, function (t) {
11461                                    if (u.is(t, n)) return i[n] || (Yy(e, function (e) {
11462                                        e(!0, {
11463                                            node: t,
11464                                            selector: n,
11465                                            parents: r
11466                                        })
11467                                    }), i[n] = e), o[n] = e, !1
11468                                })
11469                            }), Yy(i, function (e, t) {
11470                                o[t] || (delete i[t], Yy(e, function (e) {
11471                                    e(!1, {
11472                                        node: n,
11473                                        selector: t,
11474                                        parents: r
11475                                    })
11476                                }))
11477                            })
11478                        })), a[e] || (a[e] = []), a[e].push(t), p
11479                    },
11480                    getScrollContainer: function () {
11481                        for (var e, t = u.getRoot(); t && "BODY" !== t.nodeName;) {
11482                            if (t.scrollHeight > t.clientHeight) {
11483                                e = t;
11484                                break
11485                            }
11486                            t = t.parentNode
11487                        }
11488                        return e
11489                    },
11490                    scrollIntoView: function (e, t) {
11491                        return js(c, e, t)
11492                    },
11493                    placeCaretAt: function (e, t) {
11494                        return i(Ey(e, t, c.getDoc()))
11495                    },
11496                    getBoundingClientRect: function () {
11497                        var e = m();
11498                        return e.collapsed ? Su.fromRangeStart(e).getClientRects()[0] : e.getBoundingClientRect()
11499                    },
11500                    destroy: function () {
11501                        s = l = f = null, t.destroy()
11502                    }
11503                };
11504            return n = yy(p), t = wy(p, c), p.bookmarkManager = n, p.controlSelection = t, p
11505        },
11506        Zy = Do.isContentEditableFalse,
11507        eC = Za,
11508        tC = nl,
11509        nC = tl,
11510        rC = function (e, t) {
11511            for (; t = e(t);)
11512                if (t.isVisible()) return t;
11513            return t
11514        },
11515        oC = function (e, t, n, r) {
11516            var o, i, a, u, s, c, l = e === Nu.Forwards,
11517                f = l ? nC : tC;
11518            return !r.collapsed && (o = eC(r), Zy(o)) ? us(e, t, o, e === Nu.Backwards, !0) : (u = Ta(r.startContainer), f(i = el(e, t.getBody(), r)) ? ss(t, i.getNode(!l)) : (i = n(i)) ? f(i) ? us(e, t, i.getNode(!l), l, !0) : f(a = n(i)) && (!(c = jc(s = i, a)) && Do.isBr(s.getNode()) || c) ? us(e, t, a.getNode(!l), l, !0) : u ? ls(t, i.toRange(), !0) : null : u ? r : null)
11519        },
11520        iC = function (e, t, n, r) {
11521            var o, i, a, u, s, c, l, f, d;
11522            if (d = eC(r), o = el(e, t.getBody(), r), i = n(t.getBody(), zh(1), o), a = jt.filter(i, Vh(1)), s = jt.last(o.getClientRects()), (nC(o) || rl(o)) && (d = o.getNode()), (tC(o) || ol(o)) && (d = o.getNode(!0)), !s) return null;
11523            if (c = s.left, (u = Kh(a, c)) && Zy(u.node)) return l = Math.abs(c - u.left), f = Math.abs(c - u.right), us(e, t, u.node, l < f, !0);
11524            if (d) {
11525                var m = function (e, t, n, r) {
11526                    var o, i, a, u, s, c, l = Ns(t),
11527                        f = [],
11528                        d = 0,
11529                        m = function (e) {
11530                            return jt.last(e.getClientRects())
11531                        };
11532                    1 === e ? (o = l.next, i = Qa, a = Ja, u = Su.after(r)) : (o = l.prev, i = Ja, a = Qa, u = Su.before(r)), c = m(u);
11533                    do {
11534                        if (u.isVisible() && !a(s = m(u), c)) {
11535                            if (0 < f.length && i(s, jt.last(f)) && d++, (s = Xa(s)).position = u, s.line = d, n(s)) return f;
11536                            f.push(s)
11537                        }
11538                    } while (u = o(u));
11539                    return f
11540                }(e, t.getBody(), zh(1), d);
11541                if (u = Kh(jt.filter(m, Vh(1)), c)) return ls(t, u.position.toRange(), !0);
11542                if (u = jt.last(jt.filter(m, Vh(0)))) return ls(t, u.position.toRange(), !0)
11543            }
11544        },
11545        aC = function (e, t, n) {
11546            var r, o, i, a, u = Ns(e.getBody()),
11547                s = ya.curry(rC, u.next),
11548                c = ya.curry(rC, u.prev);
11549            if (n.collapsed && e.settings.forced_root_block) {
11550                if (!(r = e.dom.getParent(n.startContainer, "PRE"))) return;
11551                (1 === t ? s(Su.fromRangeStart(n)) : c(Su.fromRangeStart(n))) || (a = (i = e).dom.create(i.settings.forced_root_block), (!Re.ie || 11 <= Re.ie) && (a.innerHTML = '<br data-mce-bogus="1">'), o = a, 1 === t ? e.$(r).after(o) : e.$(r).before(o), e.selection.select(o, !0), e.selection.collapse())
11552            }
11553        },
11554        uC = function (l, f) {
11555            return function () {
11556                var e, t, n, r, o, i, a, u, s, c = (t = f, r = Ns((e = l).getBody()), o = ya.curry(rC, r.next), i = ya.curry(rC, r.prev), a = t ? Nu.Forwards : Nu.Backwards, u = t ? o : i, s = e.selection.getRng(), (n = oC(a, e, u, s)) ? n : (n = aC(e, a, s)) || null);
11557                return !!c && (l.selection.setRng(c), !0)
11558            }
11559        },
11560        sC = function (u, s) {
11561            return function () {
11562                var e, t, n, r, o, i, a = (r = (t = s) ? 1 : -1, o = t ? Uh : Fh, i = (e = u).selection.getRng(), (n = iC(r, e, o, i)) ? n : (n = aC(e, r, i)) || null);
11563                return !!a && (u.selection.setRng(a), !0)
11564            }
11565        },
11566        cC = function (e, r) {
11567            return G($(e, function (e) {
11568                return Wb({
11569                    shiftKey: !1,
11570                    altKey: !1,
11571                    ctrlKey: !1,
11572                    metaKey: !1,
11573                    keyCode: 0,
11574                    action: v
11575                }, e)
11576            }), function (e) {
11577                return t = e, (n = r).keyCode === t.keyCode && n.shiftKey === t.shiftKey && n.altKey === t.altKey && n.ctrlKey === t.ctrlKey && n.metaKey === t.metaKey ? [e] : [];
11578                var t, n
11579            })
11580        },
11581        lC = function (e) {
11582            for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
11583            var r = Array.prototype.slice.call(arguments, 1);
11584            return function () {
11585                return e.apply(null, r)
11586            }
11587        },
11588        fC = function (e, t) {
11589            return V(cC(e, t), function (e) {
11590                return e.action()
11591            })
11592        },
11593        dC = function (i, a) {
11594            i.on("keydown", function (e) {
11595                var t, n, r, o;
11596                !1 === e.isDefaultPrevented() && (t = i, n = a, r = e, o = Qn.detect().os, fC([{
11597                    keyCode: Qh.RIGHT,
11598                    action: uC(t, !0)
11599                }, {
11600                    keyCode: Qh.LEFT,
11601                    action: uC(t, !1)
11602                }, {
11603                    keyCode: Qh.UP,
11604                    action: sC(t, !1)
11605                }, {
11606                    keyCode: Qh.DOWN,
11607                    action: sC(t, !0)
11608                }, {
11609                    keyCode: Qh.RIGHT,
11610                    action: Tc(t, !0)
11611                }, {
11612                    keyCode: Qh.LEFT,
11613                    action: Tc(t, !1)
11614                }, {
11615                    keyCode: Qh.UP,
11616                    action: kc(t, !1)
11617                }, {
11618                    keyCode: Qh.DOWN,
11619                    action: kc(t, !0)
11620                }, {
11621                    keyCode: Qh.RIGHT,
11622                    action: gm.move(t, n, !0)
11623                }, {
11624                    keyCode: Qh.LEFT,
11625                    action: gm.move(t, n, !1)
11626                }, {
11627                    keyCode: Qh.RIGHT,
11628                    ctrlKey: !o.isOSX(),
11629                    altKey: o.isOSX(),
11630                    action: gm.moveNextWord(t, n)
11631                }, {
11632                    keyCode: Qh.LEFT,
11633                    ctrlKey: !o.isOSX(),
11634                    altKey: o.isOSX(),
11635                    action: gm.movePrevWord(t, n)
11636                }], r).each(function (e) {
11637                    r.preventDefault()
11638                }))
11639            })
11640        },
11641        mC = function (e) {
11642            return 1 === $r.children(e).length
11643        },
11644        gC = function (e, t, n, r) {
11645            var o, i, a, u, s = b(Zv, t),
11646                c = $(U(r, s), function (e) {
11647                    return e.dom()
11648                });
11649            if (0 === c.length) Nd(t, e, n);
11650            else {
11651                var l = (o = n.dom(), i = c, a = Wv(!1), u = Jv(i, a.dom()), Ti.before(er.fromDom(o), a), Ri.remove(er.fromDom(o)), Su(u, 0));
11652                t.selection.setRng(l.toRange())
11653            }
11654        },
11655        pC = function (n, r) {
11656            var t, e = er.fromDom(n.getBody()),
11657                o = er.fromDom(n.selection.getStart()),
11658                i = U((t = Yf(o, e), K(t, lo).fold(H(t), function (e) {
11659                    return t.slice(0, e)
11660                })), mC);
11661            return te(i).map(function (e) {
11662                var t = Su.fromRangeStart(n.selection.getRng());
11663                return !!Of(r, t, e.dom()) && (gC(r, n, e, i), !0)
11664            }).getOr(!1)
11665        },
11666        hC = function (e, t) {
11667            return !!e.selection.isCollapsed() && pC(e, t)
11668        },
11669        vC = function (o, i) {
11670            o.on("keydown", function (e) {
11671                var t, n, r;
11672                !1 === e.isDefaultPrevented() && (t = o, n = i, r = e, fC([{
11673                    keyCode: Qh.BACKSPACE,
11674                    action: lC(Td, t, !1)
11675                }, {
11676                    keyCode: Qh.DELETE,
11677                    action: lC(Td, t, !0)
11678                }, {
11679                    keyCode: Qh.BACKSPACE,
11680                    action: lC(bm, t, n, !1)
11681                }, {
11682                    keyCode: Qh.DELETE,
11683                    action: lC(bm, t, n, !0)
11684                }, {
11685                    keyCode: Qh.BACKSPACE,
11686                    action: lC(Jm, t, !1)
11687                }, {
11688                    keyCode: Qh.DELETE,
11689                    action: lC(Jm, t, !0)
11690                }, {
11691                    keyCode: Qh.BACKSPACE,
11692                    action: lC(sd, t, !1)
11693                }, {
11694                    keyCode: Qh.DELETE,
11695                    action: lC(sd, t, !0)
11696                }, {
11697                    keyCode: Qh.BACKSPACE,
11698                    action: lC(od, t, !1)
11699                }, {
11700                    keyCode: Qh.DELETE,
11701                    action: lC(od, t, !0)
11702                }, {
11703                    keyCode: Qh.BACKSPACE,
11704                    action: lC(hC, t, !1)
11705                }, {
11706                    keyCode: Qh.DELETE,
11707                    action: lC(hC, t, !0)
11708                }], r).each(function (e) {
11709                    r.preventDefault()
11710                }))
11711            }), o.on("keyup", function (e) {
11712                var t, n;
11713                !1 === e.isDefaultPrevented() && (t = o, n = e, fC([{
11714                    keyCode: Qh.BACKSPACE,
11715                    action: lC(kd, t)
11716                }, {
11717                    keyCode: Qh.DELETE,
11718                    action: lC(kd, t)
11719                }], n))
11720            })
11721        },
11722        bC = function (e) {
11723            return A.from(e.dom.getParent(e.selection.getStart(!0), e.dom.isBlock))
11724        },
11725        yC = function (e, t) {
11726            var n, r, o, i = t,
11727                a = e.dom,
11728                u = e.schema.getMoveCaretBeforeOnEnterElements();
11729            if (t) {
11730                if (/^(LI|DT|DD)$/.test(t.nodeName)) {
11731                    var s = function (e) {
11732                        for (; e;) {
11733                            if (1 === e.nodeType || 3 === e.nodeType && e.data && /[\r\n\s]/.test(e.data)) return e;
11734                            e = e.nextSibling
11735                        }
11736                    }(t.firstChild);
11737                    s && /^(UL|OL|DL)$/.test(s.nodeName) && t.insertBefore(a.doc.createTextNode("\xa0"), t.firstChild)
11738                }
11739                if (o = a.createRng(), t.normalize(), t.hasChildNodes()) {
11740                    for (n = new oo(t, t); r = n.current();) {
11741                        if (Do.isText(r)) {
11742                            o.setStart(r, 0), o.setEnd(r, 0);
11743                            break
11744                        }
11745                        if (u[r.nodeName.toLowerCase()]) {
11746                            o.setStartBefore(r), o.setEndBefore(r);
11747                            break
11748                        }
11749                        i = r, r = n.next()
11750                    }
11751                    r || (o.setStart(i, 0), o.setEnd(i, 0))
11752                } else Do.isBr(t) ? t.nextSibling && a.isBlock(t.nextSibling) ? (o.setStartBefore(t), o.setEndBefore(t)) : (o.setStartAfter(t), o.setEndAfter(t)) : (o.setStart(t, 0), o.setEnd(t, 0));
11753                e.selection.setRng(o), a.remove(void 0), e.selection.scrollIntoView(t)
11754            }
11755        },
11756        CC = function (e, t) {
11757            var n, r, o = e.getRoot();
11758            for (n = t; n !== o && "false" !== e.getContentEditable(n);) "true" === e.getContentEditable(n) && (r = n), n = n.parentNode;
11759            return n !== o ? r : o
11760        },
11761        xC = bC,
11762        wC = function (e) {
11763            return bC(e).fold(H(""), function (e) {
11764                return e.nodeName.toUpperCase()
11765            })
11766        },
11767        NC = function (e) {
11768            return bC(e).filter(function (e) {
11769                return ho(er.fromDom(e))
11770            }).isSome()
11771        },
11772        EC = function (e, t) {
11773            return e && e.parentNode && e.parentNode.nodeName === t
11774        },
11775        SC = function (e) {
11776            return e && /^(OL|UL|LI)$/.test(e.nodeName)
11777        },
11778        TC = function (e) {
11779            var t = e.parentNode;
11780            return /^(LI|DT|DD)$/.test(t.nodeName) ? t : e
11781        },
11782        kC = function (e, t, n) {
11783            for (var r = e[n ? "firstChild" : "lastChild"]; r && !Do.isElement(r);) r = r[n ? "nextSibling" : "previousSibling"];
11784            return r === t
11785        },
11786        AC = function (e, t, n, r, o) {
11787            var i = e.dom,
11788                a = e.selection.getRng();
11789            if (n !== e.getBody()) {
11790                var u;
11791                SC(u = n) && SC(u.parentNode) && (o = "LI");
11792                var s, c, l = o ? t(o) : i.create("BR");
11793                if (kC(n, r, !0) && kC(n, r, !1)) EC(n, "LI") ? i.insertAfter(l, TC(n)) : i.replace(l, n);
11794                else if (kC(n, r, !0)) EC(n, "LI") ? (i.insertAfter(l, TC(n)), l.appendChild(i.doc.createTextNode(" ")), l.appendChild(n)) : n.parentNode.insertBefore(l, n);
11795                else if (kC(n, r, !1)) i.insertAfter(l, TC(n));
11796                else {
11797                    n = TC(n);
11798                    var f = a.cloneRange();
11799                    f.setStartAfter(r), f.setEndAfter(n);
11800                    var d = f.extractContents();
11801                    "LI" === o && (c = "LI", (s = d).firstChild && s.firstChild.nodeName === c) ? (l = d.firstChild, i.insertAfter(d, n)) : (i.insertAfter(d, n), i.insertAfter(l, n))
11802                }
11803                i.remove(r), yC(e, l)
11804            }
11805        },
11806        _C = function (e) {
11807            e.innerHTML = '<br data-mce-bogus="1">'
11808        },
11809        RC = function (e, t) {
11810            return e.nodeName === t || e.previousSibling && e.previousSibling.nodeName === t
11811        },
11812        DC = function (e, t) {
11813            return t && e.isBlock(t) && !/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName) && !/^(fixed|absolute)/i.test(t.style.position) && "true" !== e.getContentEditable(t)
11814        },
11815        BC = function (e, t, n) {
11816            return !1 === Do.isText(t) ? n : e ? 1 === n && t.data.charAt(n - 1) === wa ? 0 : n : n === t.data.length - 1 && t.data.charAt(n) === wa ? t.data.length : n
11817        },
11818        OC = function (e, t) {
11819            var n, r, o = e.getRoot();
11820            for (n = t; n !== o && "false" !== e.getContentEditable(n);) "true" === e.getContentEditable(n) && (r = n), n = n.parentNode;
11821            return n !== o ? r : o
11822        },
11823        PC = function (e, t) {
11824            var n = ec(e);
11825            n && n.toLowerCase() === t.tagName.toLowerCase() && e.dom.setAttribs(t, tc(e))
11826        },
11827        LC = function (a, e) {
11828            var t, u, s, i, c, n, r, o, l, f, d, m, g, p, h, v, b, y, C = a.dom,
11829                x = a.schema,
11830                w = x.getNonEmptyElements(),
11831                N = a.selection.getRng(),
11832                E = function (e) {
11833                    var t, n, r, o = s,
11834                        i = x.getTextInlineElements();
11835                    if (e || "TABLE" === f || "HR" === f ? (t = C.create(e || m), PC(a, t)) : t = c.cloneNode(!1), r = t, !1 === oc(a)) C.setAttrib(t, "style", null), C.setAttrib(t, "class", null);
11836                    else
11837                        do {
11838                            if (i[o.nodeName]) {
11839                                if (Ku(o)) continue;
11840                                n = o.cloneNode(!1), C.setAttrib(n, "id", ""), t.hasChildNodes() ? n.appendChild(t.firstChild) : r = n, t.appendChild(n)
11841                            }
11842                        } while ((o = o.parentNode) && o !== u);
11843                    return _C(r), t
11844                },
11845                S = function (e) {
11846                    var t, n, r, o;
11847                    if (o = BC(e, s, i), Do.isText(s) && (e ? 0 < o : o < s.nodeValue.length)) return !1;
11848                    if (s.parentNode === c && g && !e) return !0;
11849                    if (e && Do.isElement(s) && s === c.firstChild) return !0;
11850                    if (RC(s, "TABLE") || RC(s, "HR")) return g && !e || !g && e;
11851                    for (t = new oo(s, c), Do.isText(s) && (e && 0 === o ? t.prev() : e || o !== s.nodeValue.length || t.next()); n = t.current();) {
11852                        if (Do.isElement(n)) {
11853                            if (!n.getAttribute("data-mce-bogus") && (r = n.nodeName.toLowerCase(), w[r] && "br" !== r)) return !1
11854                        } else if (Do.isText(n) && !/^[ \t\r\n]*$/.test(n.nodeValue)) return !1;
11855                        e ? t.prev() : t.next()
11856                    }
11857                    return !0
11858                },
11859                T = function () {
11860                    r = /^(H[1-6]|PRE|FIGURE)$/.test(f) && "HGROUP" !== d ? E(m) : E(), ic(a) && DC(C, l) && C.isEmpty(c) ? r = C.split(l, c) : C.insertAfter(r, c), yC(a, r)
11861                };
11862            mg(C, N).each(function (e) {
11863                N.setStart(e.startContainer, e.startOffset), N.setEnd(e.endContainer, e.endOffset)
11864            }), s = N.startContainer, i = N.startOffset, m = ec(a), n = e.shiftKey, Do.isElement(s) && s.hasChildNodes() && (g = i > s.childNodes.length - 1, s = s.childNodes[Math.min(i, s.childNodes.length - 1)] || s, i = g && Do.isText(s) ? s.nodeValue.length : 0), (u = OC(C, s)) && ((m && !n || !m && n) && (s = function (e, t, n, r, o) {
11865                var i, a, u, s, c, l, f, d = t || "P",
11866                    m = e.dom,
11867                    g = OC(m, r);
11868                if (!(a = m.getParent(r, m.isBlock)) || !DC(m, a)) {
11869                    if (l = (a = a || g) === e.getBody() || (f = a) && /^(TD|TH|CAPTION)$/.test(f.nodeName) ? a.nodeName.toLowerCase() : a.parentNode.nodeName.toLowerCase(), !a.hasChildNodes()) return i = m.create(d), PC(e, i), a.appendChild(i), n.setStart(i, 0), n.setEnd(i, 0), i;
11870                    for (s = r; s.parentNode !== a;) s = s.parentNode;
11871                    for (; s && !m.isBlock(s);) s = (u = s).previousSibling;
11872                    if (u && e.schema.isValidChild(l, d.toLowerCase())) {
11873                        for (i = m.create(d), PC(e, i), u.parentNode.insertBefore(i, u), s = u; s && !m.isBlock(s);) c = s.nextSibling, i.appendChild(s), s = c;
11874                        n.setStart(r, o), n.setEnd(r, o)
11875                    }
11876                }
11877                return r
11878            }(a, m, N, s, i)), c = C.getParent(s, C.isBlock), l = c ? C.getParent(c.parentNode, C.isBlock) : null, f = c ? c.nodeName.toUpperCase() : "", "LI" !== (d = l ? l.nodeName.toUpperCase() : "") || e.ctrlKey || (l = (c = l).parentNode, f = d), /^(LI|DT|DD)$/.test(f) && C.isEmpty(c) ? AC(a, E, l, c, m) : m && c === a.getBody() || (m = m || "P", Ta(c) ? (r = La(c), C.isEmpty(c) && _C(c), yC(a, r)) : S() ? T() : S(!0) ? (r = c.parentNode.insertBefore(E(), c), yC(a, RC(c, "HR") ? r : c)) : ((t = (b = N, y = b.cloneRange(), y.setStart(b.startContainer, BC(!0, b.startContainer, b.startOffset)), y.setEnd(b.endContainer, BC(!1, b.endContainer, b.endOffset)), y).cloneRange()).setEndAfter(c), function (e) {
11879                for (; Do.isText(e) && (e.nodeValue = e.nodeValue.replace(/^[\r\n]+/, "")), e = e.firstChild;);
11880            }(o = t.extractContents()), r = o.firstChild, C.insertAfter(o, c), function (e, t, n) {
11881                var r, o = n,
11882                    i = [];
11883                if (o) {
11884                    for (; o = o.firstChild;) {
11885                        if (e.isBlock(o)) return;
11886                        Do.isElement(o) && !t[o.nodeName.toLowerCase()] && i.push(o)
11887                    }
11888                    for (r = i.length; r--;) !(o = i[r]).hasChildNodes() || o.firstChild === o.lastChild && "" === o.firstChild.nodeValue ? e.remove(o) : (a = o) && "A" === a.nodeName && 0 === Yt.trim(Na(a.innerText || a.textContent)).length && e.remove(o);
11889                    var a
11890                }
11891            }(C, w, r), p = C, (h = c).normalize(), (v = h.lastChild) && !/^(left|right)$/gi.test(p.getStyle(v, "float", !0)) || p.add(h, "br"), C.isEmpty(c) && _C(c), r.normalize(), C.isEmpty(r) ? (C.remove(r), T()) : yC(a, r)), C.setAttrib(r, "id", ""), a.fire("NewBlock", {
11892                newBlock: r
11893            })))
11894        },
11895        IC = function (e, t) {
11896            return xC(e).filter(function (e) {
11897                return 0 < t.length && Lr.is(er.fromDom(e), t)
11898            }).isSome()
11899        },
11900        MC = function (e) {
11901            return IC(e, nc(e))
11902        },
11903        FC = function (e) {
11904            return IC(e, rc(e))
11905        },
11906        UC = cd([{
11907            br: []
11908        }, {
11909            block: []
11910        }, {
11911            none: []
11912        }]),
11913        zC = function (e, t) {
11914            return FC(e)
11915        },
11916        VC = function (n) {
11917            return function (e, t) {
11918                return "" === ec(e) === n
11919            }
11920        },
11921        qC = function (n) {
11922            return function (e, t) {
11923                return NC(e) === n
11924            }
11925        },
11926        HC = function (n, r) {
11927            return function (e, t) {
11928                return wC(e) === n.toUpperCase() === r
11929            }
11930        },
11931        jC = function (e) {
11932            return HC("pre", e)
11933        },
11934        $C = function (n) {
11935            return function (e, t) {
11936                return Zs(e) === n
11937            }
11938        },
11939        WC = function (e, t) {
11940            return MC(e)
11941        },
11942        KC = function (e, t) {
11943            return t
11944        },
11945        XC = function (e) {
11946            var t = ec(e),
11947                n = CC(e.dom, e.selection.getStart());
11948            return n && e.schema.isValidChild(n.nodeName, t || "P")
11949        },
11950        YC = function (e, t) {
11951            return function (n, r) {
11952                return z(e, function (e, t) {
11953                    return e && t(n, r)
11954                }, !0) ? A.some(t) : A.none()
11955            }
11956        },
11957        GC = function (e, t) {
11958            return Fd([YC([zC], UC.none()), YC([HC("summary", !0)], UC.br()), YC([jC(!0), $C(!1), KC], UC.br()), YC([jC(!0), $C(!1)], UC.block()), YC([jC(!0), $C(!0), KC], UC.block()), YC([jC(!0), $C(!0)], UC.br()), YC([qC(!0), KC], UC.br()), YC([qC(!0)], UC.block()), YC([VC(!0), KC, XC], UC.block()), YC([VC(!0)], UC.br()), YC([WC], UC.br()), YC([VC(!1), KC], UC.br()), YC([XC], UC.block())], [e, t.shiftKey]).getOr(UC.none())
11959        },
11960        JC = function (e, t) {
11961            GC(e, t).fold(function () {
11962                Ng(e, t)
11963            }, function () {
11964                LC(e, t)
11965            }, v)
11966        },
11967        QC = function (o) {
11968            o.on("keydown", function (e) {
11969                var t, n, r;
11970                e.keyCode === Qh.ENTER && (t = o, (n = e).isDefaultPrevented() || (n.preventDefault(), (r = t.undoManager).typing && (r.typing = !1, r.add()), t.undoManager.transact(function () {
11971                    !1 === t.selection.isCollapsed() && t.execCommand("Delete"), JC(t, n)
11972                })))
11973            })
11974        },
11975        ZC = function (e, t, n) {
11976            return u = t, !(!ex(n) || !Do.isText(u.container()) || (r = e, i = (o = t).container(), a = o.offset(), i.insertData(a, "\xa0"), r.selection.setCursorLocation(i, a + 1), 0));
11977            var r, o, i, a, u
11978        },
11979        ex = function (e) {
11980            return e.fold(H(!1), H(!0), H(!0), H(!1))
11981        },
11982        tx = function (e) {
11983            return !!e.selection.isCollapsed() && (t = e, n = b(Rf.isInlineTarget, t), r = Su.fromRangeStart(t.selection.getRng()), nm(n, t.getBody(), r).map(b(ZC, t, r)).getOr(!1));
11984            var t, n, r
11985        },
11986        nx = function (r) {
11987            r.on("keydown", function (e) {
11988                var t, n;
11989                !1 === e.isDefaultPrevented() && (t = r, n = e, fC([{
11990                    keyCode: Qh.SPACEBAR,
11991                    action: lC(tx, t)
11992                }], n).each(function (e) {
11993                    n.preventDefault()
11994                }))
11995            })
11996        },
11997        rx = function (e, t) {
11998            var n;
11999            t.hasAttribute("data-mce-caret") && (La(t), (n = e).selection.setRng(n.selection.getRng()), e.selection.scrollIntoView(t))
12000        },
12001        ox = function (e, t) {
12002            var n, r = (n = e, na(er.fromDom(n.getBody()), "*[data-mce-caret]").fold(H(null), function (e) {
12003                return e.dom()
12004            }));
12005            if (r) return "compositionstart" === t.type ? (t.preventDefault(), t.stopPropagation(), void rx(e, r)) : void(_a(r) && (rx(e, r), e.undoManager.add()))
12006        },
12007        ix = function (e) {
12008            e.on("keyup compositionstart", b(ox, e))
12009        },
12010        ax = function (e) {
12011            var t = gm.setupSelectedState(e);
12012            ix(e), dC(e, t), vC(e, t), QC(e), nx(e)
12013        };
12014
12015    function ux(u) {
12016        var s, n, r, o = Yt.each,
12017            c = Qh.BACKSPACE,
12018            l = Qh.DELETE,
12019            f = u.dom,
12020            d = u.selection,
12021            e = u.settings,
12022            t = u.parser,
12023            i = Re.gecko,
12024            a = Re.ie,
12025            m = Re.webkit,
12026            g = "data:text/mce-internal,",
12027            p = a ? "Text" : "URL",
12028            h = function (e, t) {
12029                try {
12030                    u.getDoc().execCommand(e, !1, t)
12031                } catch (n) {}
12032            },
12033            v = function (e) {
12034                return e.isDefaultPrevented()
12035            },
12036            b = function () {
12037                u.shortcuts.add("meta+a", null, "SelectAll")
12038            },
12039            y = function () {
12040                u.on("keydown", function (e) {
12041                    if (!v(e) && e.keyCode === c && d.isCollapsed() && 0 === d.getRng().startOffset) {
12042                        var t = d.getNode().previousSibling;
12043                        if (t && t.nodeName && "table" === t.nodeName.toLowerCase()) return e.preventDefault(), !1
12044                    }
12045                })
12046            },
12047            C = function () {
12048                u.inline || (u.contentStyles.push("body {min-height: 150px}"), u.on("click", function (e) {
12049                    var t;
12050                    if ("HTML" === e.target.nodeName) {
12051                        if (11 < Re.ie) return void u.getBody().focus();
12052                        t = u.selection.getRng(), u.getBody().focus(), u.selection.setRng(t), u.selection.normalize(), u.nodeChanged()
12053                    }
12054                }))
12055            };
12056        return u.on("keydown", function (e) {
12057            var t, n, r, o, i;
12058            if (!v(e) && e.keyCode === Qh.BACKSPACE && (n = (t = d.getRng()).startContainer, r = t.startOffset, o = f.getRoot(), i = n, t.collapsed && 0 === r)) {
12059                for (; i && i.parentNode && i.parentNode.firstChild === i && i.parentNode !== o;) i = i.parentNode;
12060                "BLOCKQUOTE" === i.tagName && (u.formatter.toggle("blockquote", null, i), (t = f.createRng()).setStart(n, 0), t.setEnd(n, 0), d.setRng(t))
12061            }
12062        }), s = function (e) {
12063            var t = f.create("body"),
12064                n = e.cloneContents();
12065            return t.appendChild(n), d.serializer.serialize(t, {
12066                format: "html"
12067            })
12068        }
vendor: 76,882 bytes, lines 12068-13560
12068, u.on("keydown", function (e) {
12069            var t, n, r, o, i, a = e.keyCode;
12070            if (!v(e) && (a === l || a === c)) {
12071                if (t = u.selection.isCollapsed(), n = u.getBody(), t && !f.isEmpty(n)) return;
12072                if (!t && (r = u.selection.getRng(), o = s(r), (i = f.createRng()).selectNode(u.getBody()), o !== s(i))) return;
12073                e.preventDefault(), u.setContent(""), n.firstChild && f.isBlock(n.firstChild) ? u.selection.setCursorLocation(n.firstChild, 0) : u.selection.setCursorLocation(n, 0), u.nodeChanged()
12074            }
12075        }), Re.windowsPhone || u.on("keyup focusin mouseup", function (e) {
12076            Qh.modifierPressed(e) || d.normalize()
12077        }, !0), m && (u.settings.content_editable || f.bind(u.getDoc(), "mousedown mouseup", function (e) {
12078            var t;
12079            if (e.target === u.getDoc().documentElement)
12080                if (t = d.getRng(), u.getBody().focus(), "mousedown" === e.type) {
12081                    if (Aa(t.startContainer)) return;
12082                    d.placeCaretAt(e.clientX, e.clientY)
12083                } else d.setRng(t)
12084        }), u.on("click", function (e) {
12085            var t = e.target;
12086            /^(IMG|HR)$/.test(t.nodeName) && "false" !== f.getContentEditableParent(t) && (e.preventDefault(), u.selection.select(t), u.nodeChanged()), "A" === t.nodeName && f.hasClass(t, "mce-item-anchor") && (e.preventDefault(), d.select(t))
12087        }), e.forced_root_block && u.on("init", function () {
12088            h("DefaultParagraphSeparator", e.forced_root_block)
12089        }), u.on("init", function () {
12090            u.dom.bind(u.getBody(), "submit", function (e) {
12091                e.preventDefault()
12092            })
12093        }), y(), t.addNodeFilter("br", function (e) {
12094            for (var t = e.length; t--;) "Apple-interchange-newline" === e[t].attr("class") && e[t].remove()
12095        }), Re.iOS ? (u.inline || u.on("keydown", function () {
12096            document.activeElement === document.body && u.getWin().focus()
12097        }), C(), u.on("click", function (e) {
12098            var t = e.target;
12099            do {
12100                if ("A" === t.tagName) return void e.preventDefault()
12101            } while (t = t.parentNode)
12102        }), u.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")) : b()), 11 <= Re.ie && (C(), y()), Re.ie && (b(), h("AutoUrlDetect", !1), u.on("dragstart", function (e) {
12103            var t, n, r;
12104            (t = e).dataTransfer && (u.selection.isCollapsed() && "IMG" === t.target.tagName && d.select(t.target), 0 < (n = u.selection.getContent()).length && (r = g + escape(u.id) + "," + escape(n), t.dataTransfer.setData(p, r)))
12105        }), u.on("drop", function (e) {
12106            if (!v(e)) {
12107                var t = (i = e).dataTransfer && (a = i.dataTransfer.getData(p)) && 0 <= a.indexOf(g) ? (a = a.substr(g.length).split(","), {
12108                    id: unescape(a[0]),
12109                    html: unescape(a[1])
12110                }) : null;
12111                if (t && t.id !== u.id) {
12112                    e.preventDefault();
12113                    var n = Ey(e.x, e.y, u.getDoc());
12114                    d.setRng(n), r = t.html, o = !0, u.queryCommandSupported("mceInsertClipboardContent") ? u.execCommand("mceInsertClipboardContent", !1, {
12115                        content: r,
12116                        internal: o
12117                    }) : u.execCommand("mceInsertContent", !1, r)
12118                }
12119            }
12120            var r, o, i, a
12121        })), i && (u.on("keydown", function (e) {
12122            if (!v(e) && e.keyCode === c) {
12123                if (!u.getBody().getElementsByTagName("hr").length) return;
12124                if (d.isCollapsed() && 0 === d.getRng().startOffset) {
12125                    var t = d.getNode(),
12126                        n = t.previousSibling;
12127                    if ("HR" === t.nodeName) return f.remove(t), void e.preventDefault();
12128                    n && n.nodeName && "hr" === n.nodeName.toLowerCase() && (f.remove(n), e.preventDefault())
12129                }
12130            }
12131        }), Range.prototype.getClientRects || u.on("mousedown", function (e) {
12132            if (!v(e) && "HTML" === e.target.nodeName) {
12133                var t = u.getBody();
12134                t.blur(), Le.setEditorTimeout(u, function () {
12135                    t.focus()
12136                })
12137            }
12138        }), n = function () {
12139            var e = f.getAttribs(d.getStart().cloneNode(!1));
12140            return function () {
12141                var t = d.getStart();
12142                t !== u.getBody() && (f.setAttrib(t, "style", null), o(e, function (e) {
12143                    t.setAttributeNode(e.cloneNode(!0))
12144                }))
12145            }
12146        }, r = function () {
12147            return !d.isCollapsed() && f.getParent(d.getStart(), f.isBlock) !== f.getParent(d.getEnd(), f.isBlock)
12148        }, u.on("keypress", function (e) {
12149            var t;
12150            if (!v(e) && (8 === e.keyCode || 46 === e.keyCode) && r()) return t = n(), u.getDoc().execCommand("delete", !1, null), t(), e.preventDefault(), !1
12151        }), f.bind(u.getDoc(), "cut", function (e) {
12152            var t;
12153            !v(e) && r() && (t = n(), Le.setEditorTimeout(u, function () {
12154                t()
12155            }))
12156        }), e.readonly || u.on("BeforeExecCommand MouseDown", function () {
12157            h("StyleWithCSS", !1), h("enableInlineTableEditing", !1), e.object_resizing || h("enableObjectResizing", !1)
12158        }), u.on("SetContent ExecCommand", function (e) {
12159            "setcontent" !== e.type && "mceInsertLink" !== e.command || o(f.select("a"), function (e) {
12160                var t = e.parentNode,
12161                    n = f.getRoot();
12162                if (t.lastChild === e) {
12163                    for (; t && !f.isBlock(t);) {
12164                        if (t.parentNode.lastChild !== t || t === n) return;
12165                        t = t.parentNode
12166                    }
12167                    f.add(t, "br", {
12168                        "data-mce-bogus": 1
12169                    })
12170                }
12171            })
12172        }), u.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"), Re.mac && u.on("keydown", function (e) {
12173            !Qh.metaKeyPressed(e) || e.shiftKey || 37 !== e.keyCode && 39 !== e.keyCode || (e.preventDefault(), u.selection.getSel().modify("move", 37 === e.keyCode ? "backward" : "forward", "lineboundary"))
12174        }), y()), {
12175            refreshContentEditable: function () {},
12176            isHidden: function () {
12177                var e;
12178                return !i || u.removed ? 0 : !(e = u.selection.getSel()) || !e.rangeCount || 0 === e.rangeCount
12179            }
12180        }
12181    }
12182    var sx = function (e) {
12183            return Do.isElement(e) && go(er.fromDom(e))
12184        },
12185        cx = function (t) {
12186            t.on("click", function (e) {
12187                3 <= e.detail && function (e) {
12188                    var t = e.selection.getRng(),
12189                        n = wu.fromRangeStart(t),
12190                        r = wu.fromRangeEnd(t);
12191                    if (wu.isElementPosition(n)) {
12192                        var o = n.container();
12193                        sx(o) && fl.firstPositionIn(o).each(function (e) {
12194                            return t.setStart(e.container(), e.offset())
12195                        })
12196                    }
12197                    wu.isElementPosition(r) && (o = n.container(), sx(o) && fl.lastPositionIn(o).each(function (e) {
12198                        return t.setEnd(e.container(), e.offset())
12199                    })), e.selection.setRng(df(t))
12200                }(t)
12201            })
12202        },
12203        lx = function (e) {
12204            var t, n;
12205            (t = e).on("click", function (e) {
12206                t.dom.getParent(e.target, "details") && e.preventDefault()
12207            }), (n = e).parser.addNodeFilter("details", function (e) {
12208                F(e, function (e) {
12209                    e.attr("data-mce-open", e.attr("open")), e.attr("open", "open")
12210                })
12211            }), n.serializer.addNodeFilter("details", function (e) {
12212                F(e, function (e) {
12213                    var t = e.attr("data-mce-open");
12214                    e.attr("open", k(t) ? t : null), e.attr("data-mce-open", null)
12215                })
12216            })
12217        },
12218        fx = pi.DOM,
12219        dx = function (e) {
12220            var t;
12221            e.bindPendingEventDelegates(), e.initialized = !0, e.fire("init"), e.focus(!0), e.nodeChanged({
12222                initial: !0
12223            }), e.execCallback("init_instance_callback", e), (t = e).settings.auto_focus && Le.setEditorTimeout(t, function () {
12224                var e;
12225                (e = !0 === t.settings.auto_focus ? t : t.editorManager.get(t.settings.auto_focus)).destroyed || e.focus()
12226            }, 100)
12227        },
12228        mx = function (t, e) {
12229            var n, r, u, o, i, a, s, c, l, f = t.settings,
12230                d = t.getElement(),
12231                m = t.getDoc();
12232            f.inline || (t.getElement().style.visibility = t.orgVisibility), e || f.content_editable || (m.open(), m.write(t.iframeHTML), m.close()), f.content_editable && (t.on("remove", function () {
12233                var e = this.getBody();
12234                fx.removeClass(e, "mce-content-body"), fx.removeClass(e, "mce-edit-focus"), fx.setAttrib(e, "contentEditable", null)
12235            }), fx.addClass(d, "mce-content-body"), t.contentDocument = m = f.content_document || document, t.contentWindow = f.content_window || window, t.bodyElement = d, f.content_document = f.content_window = null, f.root_name = d.nodeName.toLowerCase()), (n = t.getBody()).disabled = !0, t.readonly = f.readonly, t.readonly || (t.inline && "static" === fx.getStyle(n, "position", !0) && (n.style.position = "relative"), n.contentEditable = t.getParam("content_editable_state", !0)), n.disabled = !1, t.editorUpload = mh(t), t.schema = ni(f), t.dom = pi(m, {
12236                keep_values: !0,
12237                url_converter: t.convertURL,
12238                url_converter_scope: t,
12239                hex_colors: f.force_hex_style_colors,
12240                class_filter: f.class_filter,
12241                update_styles: !0,
12242                root_element: t.inline ? t.getBody() : null,
12243                collect: f.content_editable,
12244                schema: t.schema,
12245                onSetAttrib: function (e) {
12246                    t.fire("SetAttrib", e)
12247                }
12248            }), t.parser = ((o = dy((u = t).settings, u.schema)).addAttributeFilter("src,href,style,tabindex", function (e, t) {
12249                for (var n, r, o, i = e.length, a = u.dom; i--;)
12250                    if (r = (n = e[i]).attr(t), o = "data-mce-" + t, !n.attributes.map[o]) {
12251                        if (0 === r.indexOf("data:") || 0 === r.indexOf("blob:")) continue;
12252                        "style" === t ? ((r = a.serializeStyle(a.parseStyle(r), n.name)).length || (r = null), n.attr(o, r), n.attr(t, r)) : "tabindex" === t ? (n.attr(o, r), n.attr(t, null)) : n.attr(o, u.convertURL(r, t, n.name))
12253                    }
12254            }), o.addNodeFilter("script", function (e) {
12255                for (var t, n, r = e.length; r--;) 0 !== (n = (t = e[r]).attr("type") || "no/type").indexOf("mce-") && t.attr("type", "mce-" + n)
12256            }), o.addNodeFilter("#cdata", function (e) {
12257                for (var t, n = e.length; n--;)(t = e[n]).type = 8, t.name = "#comment", t.value = "[CDATA[" + t.value + "]]"
12258            }), o.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div", function (e) {
12259                for (var t, n = e.length, r = u.schema.getNonEmptyElements(); n--;)(t = e[n]).isEmpty(r) && 0 === t.getAll("br").length && (t.append(new ty("br", 1)).shortEnded = !0)
12260            }), o), t.serializer = vy(f, t), t.selection = Qy(t.dom, t.getWin(), t.serializer, t), t.annotator = Wl(t), t.formatter = Hb(t), t.undoManager = Rv(t), t._nodeChangeDispatcher = new Nh(t), t._selectionOverrides = ov(t), lx(t), cx(t), ax(t), vh(t), t.fire("PreInit"), f.browser_spellcheck || f.gecko_spellcheck || (m.body.spellcheck = !1, fx.setAttrib(n, "spellcheck", "false")), t.quirks = ux(t), t.fire("PostRender"), f.directionality && (n.dir = f.directionality), f.nowrap && (n.style.whiteSpace = "nowrap"), f.protect && t.on("BeforeSetContent", function (t) {
12261                Yt.each(f.protect, function (e) {
12262                    t.content = t.content.replace(e, function (e) {
12263                        return "\x3c!--mce:protected " + escape(e) + "--\x3e"
12264                    })
12265                })
12266            }), t.on("SetContent", function () {
12267                t.addVisual(t.getBody())
12268            }), t.load({
12269                initial: !0,
12270                format: "html"
12271            }), t.startContent = t.getContent({
12272                format: "raw"
12273            }), t.on("compositionstart compositionend", function (e) {
12274                t.composing = "compositionstart" === e.type
12275            }), 0 < t.contentStyles.length && (r = "", Yt.each(t.contentStyles, function (e) {
12276                r += e + "\r\n"
12277            }), t.dom.addStyle(r)), (i = t, i.inline ? fx.styleSheetLoader : i.dom.styleSheetLoader).loadAll(t.contentCSS, function (e) {
12278                dx(t)
12279            }, function (e) {
12280                dx(t)
12281            }), f.content_style && (a = t, s = f.content_style, c = er.fromDom(a.getDoc().head), l = er.fromTag("style"), hr.set(l, "type", "text/css"), Ti.append(l, er.fromText(s)), Ti.append(c, l))
12282        },
12283        gx = pi.DOM,
12284        px = function (e, t) {
12285            var n, r, o, i, a, u, s, c = e.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),
12286                l = (n = e.id, r = c, o = t.height, i = Ks(e), s = er.fromTag("iframe"), hr.setAll(s, i), hr.setAll(s, {
12287                    id: n + "_ifr",
12288                    frameBorder: "0",
12289                    allowTransparency: "true",
12290                    title: r
12291                }), Er(s, {
12292                    width: "100%",
12293                    height: (a = o, u = "number" == typeof a ? a + "px" : a, u || ""),
12294                    display: "block"
12295                }), s).dom();
12296            l.onload = function () {
12297                l.onload = null, e.fire("load")
12298            };
12299            var f, d, m, g, p = function (e, t) {
12300                if (document.domain !== window.location.hostname && Re.ie && Re.ie < 12) {
12301                    var n = dh.uuid("mce");
12302                    e[n] = function () {
12303                        mx(e)
12304                    };
12305                    var r = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinymce.get("' + e.id + '");document.write(ed.iframeHTML);document.close();ed.' + n + "(true);})()";
12306                    return gx.setAttrib(t, "src", r), !0
12307                }
12308                return !1
12309            }(e, l);
12310            return e.contentAreaContainer = t.iframeContainer, e.iframeElement = l, e.iframeHTML = (g = Xs(f = e) + "<html><head>", Ys(f) !== f.documentBaseUrl && (g += '<base href="' + f.documentBaseURI.getURI() + '" />'), g += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />', d = Gs(f), m = Js(f), Qs(f) && (g += '<meta http-equiv="Content-Security-Policy" content="' + Qs(f) + '" />'), g += '</head><body id="' + d + '" class="mce-content-body ' + m + '" data-id="' + f.id + '"><br></body></html>'), gx.add(t.iframeContainer, l), p
12311        },
12312        hx = function (e, t) {
12313            var n = px(e, t);
12314            t.editorContainer && (gx.get(t.editorContainer).style.display = e.orgDisplay, e.hidden = gx.isHidden(t.editorContainer)), e.getElement().style.display = "none", gx.setAttrib(e.id, "aria-hidden", "true"), n || mx(e)
12315        },
12316        vx = pi.DOM,
12317        bx = function (t, n, e) {
12318            var r, o, i = Gp.get(e);
12319            if (r = Gp.urls[e] || t.documentBaseUrl.replace(/\/$/, ""), e = Yt.trim(e), i && -1 === Yt.inArray(n, e)) {
12320                if (Yt.each(Gp.dependencies(e), function (e) {
12321                        bx(t, n, e)
12322                    }), t.plugins[e]) return;
12323                o = new i(t, r, t.$), (t.plugins[e] = o).init && (o.init(t, r), n.push(e))
12324            }
12325        },
12326        yx = function (e) {
12327            return e.replace(/^\-/, "")
12328        },
12329        Cx = function (e) {
12330            return {
12331                editorContainer: e,
12332                iframeContainer: e
12333            }
12334        },
12335        xx = function (e) {
12336            var t, n, r = e.getElement();
12337            return e.inline ? Cx(null) : (t = r, n = vx.create("div"), vx.insertAfter(n, t), Cx(n))
12338        },
12339        wx = function (e) {
12340            var t, n, r, o, i, a, u, s, c, l, f, d = e.settings,
12341                m = e.getElement();
12342            return e.orgDisplay = m.style.display, k(d.theme) ? (l = (o = e).settings, f = o.getElement(), i = l.width || vx.getStyle(f, "width") || "100%", a = l.height || vx.getStyle(f, "height") || f.offsetHeight, u = l.min_height || 100, (s = /^[0-9\.]+(|px)$/i).test("" + i) && (i = Math.max(parseInt(i, 10), 100)), s.test("" + a) && (a = Math.max(parseInt(a, 10), u)), c = o.theme.renderUI({
12343                targetNode: f,
12344                width: i,
12345                height: a,
12346                deltaWidth: l.delta_width,
12347                deltaHeight: l.delta_height
12348            }), l.content_editable || (a = (c.iframeHeight || a) + ("number" == typeof a ? c.deltaHeight || 0 : "")) < u && (a = u), c.height = a, c) : O(d.theme) ? (r = (t = e).getElement(), (n = t.settings.theme(t, r)).editorContainer.nodeType && (n.editorContainer.id = n.editorContainer.id || t.id + "_parent"), n.iframeContainer && n.iframeContainer.nodeType && (n.iframeContainer.id = n.iframeContainer.id || t.id + "_iframecontainer"), n.height = n.iframeHeight ? n.iframeHeight : r.offsetHeight, n) : xx(e)
12349        },
12350        Nx = function (t) {
12351            var e, n, r, o, i, a, u = t.settings,
12352                s = t.getElement();
12353            return t.rtl = u.rtl_ui || t.editorManager.i18n.rtl, t.editorManager.i18n.setCode(u.language), u.aria_label = u.aria_label || vx.getAttrib(s, "aria-label", t.getLang("aria.rich_text_area")), t.fire("ScriptsLoaded"), o = (n = t).settings.theme, k(o) ? (n.settings.theme = yx(o), r = Jp.get(o), n.theme = new r(n, Jp.urls[o]), n.theme.init && n.theme.init(n, Jp.urls[o] || n.documentBaseUrl.replace(/\/$/, ""), n.$)) : n.theme = {}, i = t, a = [], Yt.each(i.settings.plugins.split(/[ ,]/), function (e) {
12354                bx(i, a, yx(e))
12355            }), e = wx(t), t.editorContainer = e.editorContainer ? e.editorContainer : null, u.content_css && Yt.each(Yt.explode(u.content_css), function (e) {
12356                t.contentCSS.push(t.documentBaseURI.toAbsolute(e))
12357            }), u.content_editable ? mx(t) : hx(t, e)
12358        },
12359        Ex = pi.DOM,
12360        Sx = function (e) {
12361            return "-" === e.charAt(0)
12362        },
12363        Tx = function (i, a) {
12364            var u = Ci.ScriptLoader;
12365            ! function (e, t, n, r) {
12366                var o = t.settings,
12367                    i = o.theme;
12368                if (k(i)) {
12369                    if (!Sx(i) && !Jp.urls.hasOwnProperty(i)) {
12370                        var a = o.theme_url;
12371                        a ? Jp.load(i, t.documentBaseURI.toAbsolute(a)) : Jp.load(i, "themes/" + i + "/theme" + n + ".js")
12372                    }
12373                    e.loadQueue(function () {
12374                        Jp.waitFor(i, r)
12375                    })
12376                } else r()
12377            }(u, i, a, function () {
12378                var e, t, n, r, o;
12379                e = u, (n = (t = i).settings).language && "en" !== n.language && !n.language_url && (n.language_url = t.editorManager.baseURL + "/langs/" + n.language + ".js"), n.language_url && !t.editorManager.i18n.data[n.language] && e.add(n.language_url), r = i.settings, o = a, Yt.isArray(r.plugins) && (r.plugins = r.plugins.join(" ")), Yt.each(r.external_plugins, function (e, t) {
12380                    Gp.load(t, e), r.plugins += " " + t
12381                }), Yt.each(r.plugins.split(/[ ,]/), function (e) {
12382                    if ((e = Yt.trim(e)) && !Gp.urls[e])
12383                        if (Sx(e)) {
12384                            e = e.substr(1, e.length);
12385                            var t = Gp.dependencies(e);
12386                            Yt.each(t, function (e) {
12387                                var t = {
12388                                    prefix: "plugins/",
12389                                    resource: e,
12390                                    suffix: "/plugin" + o + ".js"
12391                                };
12392                                e = Gp.createUrl(t, e), Gp.load(e.resource, e)
12393                            })
12394                        } else Gp.load(e, {
12395                            prefix: "plugins/",
12396                            resource: e,
12397                            suffix: "/plugin" + o + ".js"
12398                        })
12399                }), u.loadQueue(function () {
12400                    i.removed || Nx(i)
12401                }, i, function (e) {
12402                    Wp(i, e[0]), i.removed || Nx(i)
12403                })
12404            })
12405        },
12406        kx = function (t) {
12407            var e = t.settings,
12408                n = t.id,
12409                r = function () {
12410                    Ex.unbind(window, "ready", r), t.render()
12411                };
12412            if (je.Event.domLoaded) {
12413                if (t.getElement() && Re.contentEditable) {
12414                    e.inline ? t.inline = !0 : (t.orgVisibility = t.getElement().style.visibility, t.getElement().style.visibility = "hidden");
12415                    var o = t.getElement().form || Ex.getParent(n, "form");
12416                    o && (t.formElement = o, e.hidden_input && !/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && (Ex.insertAfter(Ex.create("input", {
12417                        type: "hidden",
12418                        name: n
12419                    }), n), t.hasHiddenInput = !0), t.formEventDelegate = function (e) {
12420                        t.fire(e.type, e)
12421                    }, Ex.bind(o, "submit reset", t.formEventDelegate), t.on("reset", function () {
12422                        t.setContent(t.startContent, {
12423                            format: "raw"
12424                        })
12425                    }), !e.submit_patch || o.submit.nodeType || o.submit.length || o._mceOldSubmit || (o._mceOldSubmit = o.submit, o.submit = function () {
12426                        return t.editorManager.triggerSave(), t.setDirty(!1), o._mceOldSubmit(o)
12427                    })), t.windowManager = Vp(t), t.notificationManager = zp(t), "xml" === e.encoding && t.on("GetContent", function (e) {
12428                        e.save && (e.content = Ex.encode(e.content))
12429                    }), e.add_form_submit_trigger && t.on("submit", function () {
12430                        t.initialized && t.save()
12431                    }), e.add_unload_trigger && (t._beforeUnload = function () {
12432                        !t.initialized || t.destroyed || t.isHidden() || t.save({
12433                            format: "raw",
12434                            no_events: !0,
12435                            set_dirty: !1
12436                        })
12437                    }, t.editorManager.on("BeforeUnload", t._beforeUnload)), t.editorManager.add(t), Tx(t, t.suffix)
12438                }
12439            } else Ex.bind(window, "ready", r)
12440        },
12441        Ax = function (e, t, n) {
12442            var r = e.sidebars ? e.sidebars : [];
12443            r.push({
12444                name: t,
12445                settings: n
12446            }), e.sidebars = r
12447        },
12448        _x = Yt.each,
12449        Rx = Yt.trim,
12450        Dx = "source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),
12451        Bx = {
12452            ftp: 21,
12453            http: 80,
12454            https: 443,
12455            mailto: 25
12456        },
12457        Ox = function (r, e) {
12458            var t, n, o = this;
12459            if (r = Rx(r), t = (e = o.settings = e || {}).base_uri, /^([\w\-]+):([^\/]{2})/i.test(r) || /^\s*#/.test(r)) o.source = r;
12460            else {
12461                var i = 0 === r.indexOf("//");
12462                0 !== r.indexOf("/") || i || (r = (t && t.protocol || "http") + "://mce_host" + r), /^[\w\-]*:?\/\//.test(r) || (n = e.base_uri ? e.base_uri.path : new Ox(document.location.href).directory, "" == e.base_uri.protocol ? r = "//mce_host" + o.toAbsPath(n, r) : (r = /([^#?]*)([#?]?.*)/.exec(r), r = (t && t.protocol || "http") + "://mce_host" + o.toAbsPath(n, r[1]) + r[2])), r = r.replace(/@@/g, "(mce_at)"), r = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(r), _x(Dx, function (e, t) {
12463                    var n = r[t];
12464                    n && (n = n.replace(/\(mce_at\)/g, "@@")), o[e] = n
12465                }), t && (o.protocol || (o.protocol = t.protocol), o.userInfo || (o.userInfo = t.userInfo), o.port || "mce_host" !== o.host || (o.port = t.port), o.host && "mce_host" !== o.host || (o.host = t.host), o.source = ""), i && (o.protocol = "")
12466            }
12467        };
12468    Ox.prototype = {
12469        setPath: function (e) {
12470            e = /^(.*?)\/?(\w+)?$/.exec(e), this.path = e[0], this.directory = e[1], this.file = e[2], this.source = "", this.getURI()
12471        },
12472        toRelative: function (e) {
12473            var t;
12474            if ("./" === e) return e;
12475            if ("mce_host" !== (e = new Ox(e, {
12476                    base_uri: this
12477                })).host && this.host !== e.host && e.host || this.port !== e.port || this.protocol !== e.protocol && "" !== e.protocol) return e.getURI();
12478            var n = this.getURI(),
12479                r = e.getURI();
12480            return n === r || "/" === n.charAt(n.length - 1) && n.substr(0, n.length - 1) === r ? n : (t = this.toRelPath(this.path, e.path), e.query && (t += "?" + e.query), e.anchor && (t += "#" + e.anchor), t)
12481        },
12482        toAbsolute: function (e, t) {
12483            return (e = new Ox(e, {
12484                base_uri: this
12485            })).getURI(t && this.isSameOrigin(e))
12486        },
12487        isSameOrigin: function (e) {
12488            if (this.host == e.host && this.protocol == e.protocol) {
12489                if (this.port == e.port) return !0;
12490                var t = Bx[this.protocol];
12491                if (t && (this.port || t) == (e.port || t)) return !0
12492            }
12493            return !1
12494        },
12495        toRelPath: function (e, t) {
12496            var n, r, o, i = 0,
12497                a = "";
12498            if (e = (e = e.substring(0, e.lastIndexOf("/"))).split("/"), n = t.split("/"), e.length >= n.length)
12499                for (r = 0, o = e.length; r < o; r++)
12500                    if (r >= n.length || e[r] !== n[r]) {
12501                        i = r + 1;
12502                        break
12503                    }
12504            if (e.length < n.length)
12505                for (r = 0, o = n.length; r < o; r++)
12506                    if (r >= e.length || e[r] !== n[r]) {
12507                        i = r + 1;
12508                        break
12509                    }
12510            if (1 === i) return t;
12511            for (r = 0, o = e.length - (i - 1); r < o; r++) a += "../";
12512            for (r = i - 1, o = n.length; r < o; r++) a += r !== i - 1 ? "/" + n[r] : n[r];
12513            return a
12514        },
12515        toAbsPath: function (e, t) {
12516            var n, r, o, i = 0,
12517                a = [];
12518            for (r = /\/$/.test(t) ? "/" : "", e = e.split("/"), t = t.split("/"), _x(e, function (e) {
12519                    e && a.push(e)
12520                }), e = a, n = t.length - 1, a = []; 0 <= n; n--) 0 !== t[n].length && "." !== t[n] && (".." !== t[n] ? 0 < i ? i-- : a.push(t[n]) : i++);
12521            return 0 !== (o = (n = e.length - i) <= 0 ? a.reverse().join("/") : e.slice(0, n).join("/") + "/" + a.reverse().join("/")).indexOf("/") && (o = "/" + o), r && o.lastIndexOf("/") !== o.length - 1 && (o += r), o
12522        },
12523        getURI: function (e) {
12524            var t, n = this;
12525            return n.source && !e || (t = "", e || (n.protocol ? t += n.protocol + "://" : t += "//", n.userInfo && (t += n.userInfo + "@"), n.host && (t += n.host), n.port && (t += ":" + n.port)), n.path && (t += n.path), n.query && (t += "?" + n.query), n.anchor && (t += "#" + n.anchor), n.source = t), n.source
12526        }
12527    }, Ox.parseDataUri = function (e) {
12528        var t, n;
12529        return e = decodeURIComponent(e).split(","), (n = /data:([^;]+)/.exec(e[0])) && (t = n[1]), {
12530            type: t,
12531            data: e[1]
12532        }
12533    }, Ox.getDocumentBaseUrl = function (e) {
12534        var t;
12535        return t = 0 !== e.protocol.indexOf("http") && "file:" !== e.protocol ? e.href : e.protocol + "//" + e.host + e.pathname, /^[^:]+:\/\/\/?[^\/]+\//.test(t) && (t = t.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, ""), /[\/\\]$/.test(t) || (t += "/")), t
12536    };
12537    var Px = function (e, t, n) {
12538            var r, o, i, a, u;
12539            if (t.format = t.format ? t.format : "html", t.get = !0, t.getInner = !0, t.no_events || e.fire("BeforeGetContent", t), "raw" === t.format) r = Yt.trim(cv.trimExternal(e.serializer, n.innerHTML));
12540            else if ("text" === t.format) r = Na(n.innerText || n.textContent);
12541            else {
12542                if ("tree" === t.format) return e.serializer.serialize(n, t);
12543                i = (o = e).serializer.serialize(n, t), a = ec(o), u = new RegExp("^(<" + a + "[^>]*>(&nbsp;|&#160;|\\s|\xa0|<br \\/>|)<\\/" + a + ">[\r\n]*|<br \\/>[\r\n]*)$"), r = i.replace(u, "")
12544            }
12545            return "text" === t.format || Co(er.fromDom(n)) ? t.content = r : t.content = Yt.trim(r), t.no_events || e.fire("GetContent", t), t.content
12546        },
12547        Lx = function (e, t) {
12548            t(e), e.firstChild && Lx(e.firstChild, t), e.next && Lx(e.next, t)
12549        },
12550        Ix = function (e, t, n) {
12551            var r = function (e, n, t) {
12552                var r = {},
12553                    o = {},
12554                    i = [];
12555                for (var a in t.firstChild && Lx(t.firstChild, function (t) {
12556                        F(e, function (e) {
12557                            e.name === t.name && (r[e.name] ? r[e.name].nodes.push(t) : r[e.name] = {
12558                                filter: e,
12559                                nodes: [t]
12560                            })
12561                        }), F(n, function (e) {
12562                            "string" == typeof t.attr(e.name) && (o[e.name] ? o[e.name].nodes.push(t) : o[e.name] = {
12563                                filter: e,
12564                                nodes: [t]
12565                            })
12566                        })
12567                    }), r) r.hasOwnProperty(a) && i.push(r[a]);
12568                for (var a in o) o.hasOwnProperty(a) && i.push(o[a]);
12569                return i
12570            }(e, t, n);
12571            F(r, function (t) {
12572                F(t.filter.callbacks, function (e) {
12573                    e(t.nodes, t.filter.name, {})
12574                })
12575            })
12576        },
12577        Mx = function (e) {
12578            return e instanceof ty
12579        },
12580        Fx = function (e, t) {
12581            var r;
12582            e.dom.setHTML(e.getBody(), t), Dp(r = e) && fl.firstPositionIn(r.getBody()).each(function (e) {
12583                var t = e.getNode(),
12584                    n = Do.isTable(t) ? fl.firstPositionIn(t).getOr(e) : e;
12585                r.selection.setRng(n.toRange())
12586            })
12587        },
12588        Ux = function (u, s, c) {
12589            return void 0 === c && (c = {}), c.format = c.format ? c.format : "html", c.set = !0, c.content = Mx(s) ? "" : s, Mx(s) || c.no_events || (u.fire("BeforeSetContent", c), s = c.content), A.from(u.getBody()).fold(H(s), function (e) {
12590                return Mx(s) ? function (e, t, n, r) {
12591                    Ix(e.parser.getNodeFilters(), e.parser.getAttributeFilters(), n);
12592                    var o = lf({
12593                        validate: e.validate
12594                    }, e.schema).serialize(n);
12595                    return r.content = Co(er.fromDom(t)) ? o : Yt.trim(o), Fx(e, r.content), r.no_events || e.fire("SetContent", r), n
12596                }(u, e, s, c) : (t = u, n = e, o = c, 0 === (r = s).length || /^\s+$/.test(r) ? (a = '<br data-mce-bogus="1">', "TABLE" === n.nodeName ? r = "<tr><td>" + a + "</td></tr>" : /^(UL|OL)$/.test(n.nodeName) && (r = "<li>" + a + "</li>"), (i = ec(t)) && t.schema.isValidChild(n.nodeName.toLowerCase(), i.toLowerCase()) ? (r = a, r = t.dom.createHTML(i, t.settings.forced_root_block_attrs, r)) : r || (r = '<br data-mce-bogus="1">'), Fx(t, r), t.fire("SetContent", o)) : ("raw" !== o.format && (r = lf({
12597                    validate: t.validate
12598                }, t.schema).serialize(t.parser.parse(r, {
12599                    isRootContent: !0,
12600                    insert: !0
12601                }))), o.content = Co(er.fromDom(n)) ? r : Yt.trim(r), Fx(t, o.content), o.no_events || t.fire("SetContent", o)), o.content);
12602                var t, n, r, o, i, a
12603            })
12604        },
12605        zx = pi.DOM,
12606        Vx = function (e) {
12607            return A.from(e).each(function (e) {
12608                return e.destroy()
12609            })
12610        },
12611        qx = function (e) {
12612            if (!e.removed) {
12613                var t = e._selectionOverrides,
12614                    n = e.editorUpload,
12615                    r = e.getBody(),
12616                    o = e.getElement();
12617                r && e.save({
12618                    is_removing: !0
12619                }), e.removed = !0, e.unbindAllNativeEvents(), e.hasHiddenInput && o && zx.remove(o.nextSibling), !e.inline && r && (i = e, zx.setStyle(i.id, "display", i.orgDisplay)), rp(e), e.editorManager.remove(e), zx.remove(e.getContainer()), Vx(t), Vx(n), e.destroy()
12620            }
12621            var i
12622        },
12623        Hx = function (e, t) {
12624            var n, r, o, i = e.selection,
12625                a = e.dom;
12626            e.destroyed || (t || e.removed ? (t || (e.editorManager.off("beforeunload", e._beforeUnload), e.theme && e.theme.destroy && e.theme.destroy(), Vx(i), Vx(a)), (r = (n = e).formElement) && (r._mceOldSubmit && (r.submit = r._mceOldSubmit, r._mceOldSubmit = null), zx.unbind(r, "submit reset", n.formEventDelegate)), (o = e).contentAreaContainer = o.formElement = o.container = o.editorContainer = null, o.bodyElement = o.contentDocument = o.contentWindow = null, o.iframeElement = o.targetElm = null, o.selection && (o.selection = o.selection.win = o.selection.dom = o.selection.dom.doc = null), e.destroyed = !0) : e.remove())
12627        },
12628        jx = pi.DOM,
12629        $x = Yt.extend,
12630        Wx = Yt.each,
12631        Kx = Yt.resolve,
12632        Xx = Re.ie,
12633        Yx = function (e, t, n) {
12634            var r, o, i, a, u, s, c, l = this,
12635                f = l.documentBaseUrl = n.documentBaseURL,
12636                d = n.baseURI;
12637            r = l, o = e, i = f, a = n.defaultSettings, u = t, c = {
12638                id: o,
12639                theme: "modern",
12640                delta_width: 0,
12641                delta_height: 0,
12642                popup_css: "",
12643                plugins: "",
12644                document_base_url: i,
12645                add_form_submit_trigger: !0,
12646                submit_patch: !0,
12647                add_unload_trigger: !0,
12648                convert_urls: !0,
12649                relative_urls: !0,
12650                remove_script_host: !0,
12651                object_resizing: !0,
12652                doctype: "<!DOCTYPE html>",
12653                visual: !0,
12654                font_size_style_values: "xx-small,x-small,small,medium,large,x-large,xx-large",
12655                font_size_legacy_values: "xx-small,small,medium,large,x-large,xx-large,300%",
12656                forced_root_block: "p",
12657                hidden_input: !0,
12658                render_ui: !0,
12659                indentation: "30px",
12660                inline_styles: !0,
12661                convert_fonts_to_spans: !0,
12662                indent: "simple",
12663                indent_before: "p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",
12664                indent_after: "p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist",
12665                entity_encoding: "named",
12666                url_converter: (s = r).convertURL,
12667                url_converter_scope: s,
12668                ie7_compat: !0
12669            }, t = Ef(vf, c, a, u), l.settings = t, Ni.language = t.language || "en", Ni.languageLoad = t.language_load, Ni.baseURL = n.baseURL, l.id = e, l.setDirty(!1), l.plugins = {}, l.documentBaseURI = new Ox(t.document_base_url, {
12670                base_uri: d
12671            }), l.baseURI = d, l.contentCSS = [], l.contentStyles = [], l.shortcuts = new Cp(l), l.loadedCSS = {}, l.editorCommands = new Yg(l), l.suffix = n.suffix, l.editorManager = n, l.inline = t.inline, l.buttons = {}, l.menuItems = {}, t.cache_suffix && (Re.cacheSuffix = t.cache_suffix.replace(/^[\?\&]+/, "")), !1 === t.override_viewport && (Re.overrideViewPort = !1), n.fire("SetupEditor", {
12672                editor: l
12673            }), l.execCallback("setup", l), l.$ = pn.overrideDefaults(function () {
12674                return {
12675                    context: l.inline ? l.getBody() : l.getDoc(),
12676                    element: l.getBody()
12677                }
12678            })
12679        };
12680    $x(Yx.prototype = {
12681        render: function () {
12682            kx(this)
12683        },
12684        focus: function (e) {
12685            Rp(this, e)
12686        },
12687        hasFocus: function () {
12688            return Dp(this)
12689        },
12690        execCallback: function (e) {
12691            for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n];
12692            var r, o = this.settings[e];
12693            if (o) return this.callbackLookup && (r = this.callbackLookup[e]) && (o = r.func, r = r.scope), "string" == typeof o && (r = (r = o.replace(/\.\w+$/, "")) ? Kx(r) : 0, o = Kx(o), this.callbackLookup = this.callbackLookup || {}, this.callbackLookup[e] = {
12694                func: o,
12695                scope: r
12696            }), o.apply(r || this, Array.prototype.slice.call(arguments, 1))
12697        },
12698        translate: function (e) {
12699            if (e && Yt.is(e, "string")) {
12700                var n = this.settings.language || "en",
12701                    r = this.editorManager.i18n;
12702                e = r.data[n + "." + e] || e.replace(/\{\#([^\}]+)\}/g, function (e, t) {
12703                    return r.data[n + "." + t] || "{#" + t + "}"
12704                })
12705            }
12706            return this.editorManager.translate(e)
12707        },
12708        getLang: function (e, t) {
12709            return this.editorManager.i18n.data[(this.settings.language || "en") + "." + e] || (t !== undefined ? t : "{#" + e + "}")
12710        },
12711        getParam: function (e, t, n) {
12712            return kf(this, e, t, n)
12713        },
12714        nodeChanged: function (e) {
12715            this._nodeChangeDispatcher.nodeChanged(e)
12716        },
12717        addButton: function (e, t) {
12718            var n = this;
12719            t.cmd && (t.onclick = function () {
12720                n.execCommand(t.cmd)
12721            }), t.stateSelector && "undefined" == typeof t.active && (t.active = !1), t.text || t.icon || (t.icon = e), n.buttons = n.buttons, t.tooltip = t.tooltip || t.title, n.buttons[e] = t
12722        },
12723        addSidebar: function (e, t) {
12724            return Ax(this, e, t)
12725        },
12726        addMenuItem: function (e, t) {
12727            var n = this;
12728            t.cmd && (t.onclick = function () {
12729                n.execCommand(t.cmd)
12730            }), n.menuItems = n.menuItems, n.menuItems[e] = t
12731        },
12732        addContextToolbar: function (e, t) {
12733            var n, r = this;
12734            r.contextToolbars = r.contextToolbars || [], "string" == typeof e && (n = e, e = function (e) {
12735                return r.dom.is(e, n)
12736            }), r.contextToolbars.push({
12737                id: dh.uuid("mcet"),
12738                predicate: e,
12739                items: t
12740            })
12741        },
12742        addCommand: function (e, t, n) {
12743            this.editorCommands.addCommand(e, t, n)
12744        },
12745        addQueryStateHandler: function (e, t, n) {
12746            this.editorCommands.addQueryStateHandler(e, t, n)
12747        },
12748        addQueryValueHandler: function (e, t, n) {
12749            this.editorCommands.addQueryValueHandler(e, t, n)
12750        },
12751        addShortcut: function (e, t, n, r) {
12752            this.shortcuts.add(e, t, n, r)
12753        },
12754        execCommand: function (e, t, n, r) {
12755            return this.editorCommands.execCommand(e, t, n, r)
12756        },
12757        queryCommandState: function (e) {
12758            return this.editorCommands.queryCommandState(e)
12759        },
12760        queryCommandValue: function (e) {
12761            return this.editorCommands.queryCommandValue(e)
12762        },
12763        queryCommandSupported: function (e) {
12764            return this.editorCommands.queryCommandSupported(e)
12765        },
12766        show: function () {
12767            this.hidden && (this.hidden = !1, this.inline ? this.getBody().contentEditable = !0 : (jx.show(this.getContainer()), jx.hide(this.id)), this.load(), this.fire("show"))
12768        },
12769        hide: function () {
12770            var e = this,
12771                t = e.getDoc();
12772            e.hidden || (Xx && t && !e.inline && t.execCommand("SelectAll"), e.save(), e.inline ? (e.getBody().contentEditable = !1, e === e.editorManager.focusedEditor && (e.editorManager.focusedEditor = null)) : (jx.hide(e.getContainer()), jx.setStyle(e.id, "display", e.orgDisplay)), e.hidden = !0, e.fire("hide"))
12773        },
12774        isHidden: function () {
12775            return !!this.hidden
12776        },
12777        setProgressState: function (e, t) {
12778            this.fire("ProgressState", {
12779                state: e,
12780                time: t
12781            })
12782        },
12783        load: function (e) {
12784            var t, n = this.getElement();
12785            return this.removed ? "" : n ? ((e = e || {}).load = !0, t = this.setContent(n.value !== undefined ? n.value : n.innerHTML, e), e.element = n, e.no_events || this.fire("LoadContent", e), e.element = n = null, t) : void 0
12786        },
12787        save: function (e) {
12788            var t, n, r = this,
12789                o = r.getElement();
12790            if (o && r.initialized && !r.removed) return (e = e || {}).save = !0, e.element = o, e.content = r.getContent(e), e.no_events || r.fire("SaveContent", e), "raw" === e.format && r.fire("RawSaveContent", e), t = e.content, /TEXTAREA|INPUT/i.test(o.nodeName) ? o.value = t : (!e.is_removing && r.inline || (o.innerHTML = t), (n = jx.getParent(r.id, "form")) && Wx(n.elements, function (e) {
12791                if (e.name === r.id) return e.value = t, !1
12792            })), e.element = o = null, !1 !== e.set_dirty && r.setDirty(!1), t
12793        },
12794        setContent: function (e, t) {
12795            return Ux(this, e, t)
12796        },
12797        getContent: function (e) {
12798            return t = this, void 0 === (n = e) && (n = {}), A.from(t.getBody()).fold(H("tree" === n.format ? new ty("body", 11) : ""), function (e) {
12799                return Px(t, n, e)
12800            });
12801            var t, n
12802        },
12803        insertContent: function (e, t) {
12804            t && (e = $x({
12805                content: e
12806            }, t)), this.execCommand("mceInsertContent", !1, e)
12807        },
12808        isDirty: function () {
12809            return !this.isNotDirty
12810        },
12811        setDirty: function (e) {
12812            var t = !this.isNotDirty;
12813            this.isNotDirty = !e, e && e !== t && this.fire("dirty")
12814        },
12815        setMode: function (e) {
12816            var t, n;
12817            (n = e) !== cp(t = this) && (t.initialized ? sp(t, "readonly" === n) : t.on("init", function () {
12818                sp(t, "readonly" === n)
12819            }), op(t, n))
12820        },
12821        getContainer: function () {
12822            return this.container || (this.container = jx.get(this.editorContainer || this.id + "_parent")), this.container
12823        },
12824        getContentAreaContainer: function () {
12825            return this.contentAreaContainer
12826        },
12827        getElement: function () {
12828            return this.targetElm || (this.targetElm = jx.get(this.id)), this.targetElm
12829        },
12830        getWin: function () {
12831            var e;
12832            return this.contentWindow || (e = this.iframeElement) && (this.contentWindow = e.contentWindow), this.contentWindow
12833        },
12834        getDoc: function () {
12835            var e;
12836            return this.contentDocument || (e = this.getWin()) && (this.contentDocument = e.document), this.contentDocument
12837        },
12838        getBody: function () {
12839            var e = this.getDoc();
12840            return this.bodyElement || (e ? e.body : null)
12841        },
12842        convertURL: function (e, t, n) {
12843            var r = this.settings;
12844            return r.urlconverter_callback ? this.execCallback("urlconverter_callback", e, n, !0, t) : !r.convert_urls || n && "LINK" === n.nodeName || 0 === e.indexOf("file:") || 0 === e.length ? e : r.relative_urls ? this.documentBaseURI.toRelative(e) : e = this.documentBaseURI.toAbsolute(e, r.remove_script_host)
12845        },
12846        addVisual: function (e) {
12847            var n, r = this,
12848                o = r.settings,
12849                i = r.dom;
12850            e = e || r.getBody(), r.hasVisual === undefined && (r.hasVisual = o.visual), Wx(i.select("table,a", e), function (e) {
12851                var t;
12852                switch (e.nodeName) {
12853                    case "TABLE":
12854                        return n = o.visual_table_class || "mce-item-table", void((t = i.getAttrib(e, "border")) && "0" !== t || !r.hasVisual ? i.removeClass(e, n) : i.addClass(e, n));
12855                    case "A":
12856                        return void(i.getAttrib(e, "href") || (t = i.getAttrib(e, "name") || e.id, n = o.visual_anchor_class || "mce-item-anchor", t && r.hasVisual ? i.addClass(e, n) : i.removeClass(e, n)))
12857                }
12858            }), r.fire("VisualAid", {
12859                element: e,
12860                hasVisual: r.hasVisual
12861            })
12862        },
12863        remove: function () {
12864            qx(this)
12865        },
12866        destroy: function (e) {
12867            Hx(this, e)
12868        },
12869        uploadImages: function (e) {
12870            return this.editorUpload.uploadImages(e)
12871        },
12872        _scanForImages: function () {
12873            return this.editorUpload.scanForImages()
12874        }
12875    }, pp);
12876    var Gx, Jx, Qx, Zx = {
12877            isEditorUIElement: function (e) {
12878                return -1 !== e.className.toString().indexOf("mce-")
12879            }
12880        },
12881        ew = function (n, e) {
12882            var t, r;
12883            Qn.detect().browser.isIE() ? (r = n).on("focusout", function () {
12884                Vg(r)
12885            }) : (t = e, n.on("mouseup touchend", function (e) {
12886                t.throttle()
12887            })), n.on("keyup nodechange", function (e) {
12888                var t;
12889                "nodechange" === (t = e).type && t.selectionChange || Vg(n)
12890            })
12891        },
12892        tw = function (e) {
12893            var t, n, r, o = Di(function () {
12894                Vg(e)
12895            }, 0);
12896            e.inline && (t = e, n = o, r = function () {
12897                n.throttle()
12898            }, pi.DOM.bind(document, "mouseup", r), t.on("remove", function () {
12899                pi.DOM.unbind(document, "mouseup", r)
12900            })), e.on("init", function () {
12901                ew(e, o)
12902            }), e.on("remove", function () {
12903                o.cancel()
12904            })
12905        },
12906        nw = pi.DOM,
12907        rw = function (e) {
12908            return Zx.isEditorUIElement(e)
12909        },
12910        ow = function (t, e) {
12911            var n = t ? t.settings.custom_ui_selector : "";
12912            return null !== nw.getParent(e, function (e) {
12913                return rw(e) || !!n && t.dom.is(e, n)
12914            })
12915        },
12916        iw = function (r, e) {
12917            var t = e.editor;
12918            tw(t), t.on("focusin", function () {
12919                var e = r.focusedEditor;
12920                e !== this && (e && e.fire("blur", {
12921                    focusedEditor: this
12922                }), r.setActive(this), (r.focusedEditor = this).fire("focus", {
12923                    blurredEditor: e
12924                }), this.focus(!0))
12925            }), t.on("focusout", function () {
12926                var t = this;
12927                Le.setEditorTimeout(t, function () {
12928                    var e = r.focusedEditor;
12929                    ow(t, function () {
12930                        try {
12931                            return document.activeElement
12932                        } catch (e) {
12933                            return document.body
12934                        }
12935                    }()) || e !== t || (t.fire("blur", {
12936                        focusedEditor: null
12937                    }), r.focusedEditor = null)
12938                })
12939            }), Gx || (Gx = function (e) {
12940                var t, n = r.activeEditor;
12941                t = e.target, n && t.ownerDocument === document && (t === document.body || ow(n, t) || r.focusedEditor !== n || (n.fire("blur", {
12942                    focusedEditor: null
12943                }), r.focusedEditor = null))
12944            }, nw.bind(document, "focusin", Gx))
12945        },
12946        aw = function (e, t) {
12947            e.focusedEditor === t.editor && (e.focusedEditor = null), e.activeEditor || (nw.unbind(document, "focusin", Gx), Gx = null)
12948        },
12949        uw = function (e) {
12950            e.on("AddEditor", b(iw, e)), e.on("RemoveEditor", b(aw, e))
12951        },
12952        sw = {},
12953        cw = "en",
12954        lw = {
12955            setCode: function (e) {
12956                e && (cw = e, this.rtl = !!this.data[e] && "rtl" === this.data[e]._dir)
12957            },
12958            getCode: function () {
12959                return cw
12960            },
12961            rtl: !1,
12962            add: function (e, t) {
12963                var n = sw[e];
12964                for (var r in n || (sw[e] = n = {}), t) n[r] = t[r];
12965                this.setCode(e)
12966            },
12967            translate: function (e) {
12968                var t = sw[cw] || {},
12969                    n = function (e) {
12970                        return Yt.is(e, "function") ? Object.prototype.toString.call(e) : r(e) ? "" : "" + e
12971                    },
12972                    r = function (e) {
12973                        return "" === e || null === e || Yt.is(e, "undefined")
12974                    },
12975                    o = function (e) {
12976                        return e = n(e), Yt.hasOwn(t, e) ? n(t[e]) : e
12977                    };
12978                if (r(e)) return "";
12979                if (Yt.is(e, "object") && Yt.hasOwn(e, "raw")) return n(e.raw);
12980                if (Yt.is(e, "array")) {
12981                    var i = e.slice(1);
12982                    e = o(e[0]).replace(/\{([0-9]+)\}/g, function (e, t) {
12983                        return Yt.hasOwn(i, t) ? n(i[t]) : e
12984                    })
12985                }
12986                return o(e).replace(/{context:\w+}$/, "")
12987            },
12988            data: sw
12989        },
12990        fw = pi.DOM,
12991        dw = Yt.explode,
12992        mw = Yt.each,
12993        gw = Yt.extend,
12994        pw = 0,
12995        hw = !1,
12996        vw = [],
12997        bw = [],
12998        yw = function (t) {
12999            mw(Qx.get(), function (e) {
13000                "scroll" === t.type ? e.fire("ScrollWindow", t) : e.fire("ResizeWindow", t)
13001            })
13002        },
13003        Cw = function (e) {
13004            e !== hw && (e ? pn(window).on("resize scroll", yw) : pn(window).off("resize scroll", yw), hw = e)
13005        },
13006        xw = function (t) {
13007            var e = bw;
13008            delete vw[t.id];
13009            for (var n = 0; n < vw.length; n++)
13010                if (vw[n] === t) {
13011                    vw.splice(n, 1);
13012                    break
13013                }
13014            return bw = U(bw, function (e) {
13015                return t !== e
13016            }), Qx.activeEditor === t && (Qx.activeEditor = 0 < bw.length ? bw[0] : null), Qx.focusedEditor === t && (Qx.focusedEditor = null), e.length !== bw.length
13017        };
13018    gw(Qx = {
13019        defaultSettings: {},
13020        $: pn,
13021        majorVersion: "4",
13022        minorVersion: "8.3",
13023        releaseDate: "2018-09-13",
13024        editors: vw,
13025        i18n: lw,
13026        activeEditor: null,
13027        settings: {},
13028        setup: function () {
13029            var e, t, n, r, o = "";
13030            if (t = Ox.getDocumentBaseUrl(document.location), /^[^:]+:\/\/\/?[^\/]+\//.test(t) && (t = t.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, ""), /[\/\\]$/.test(t) || (t += "/")), n = window.tinymce || window.tinyMCEPreInit) e = n.base || n.baseURL, o = n.suffix;
13031            else {
13032                for (var i = document.getElementsByTagName("script"), a = 0; a < i.length; a++) {
13033                    var u = (r = i[a].src).substring(r.lastIndexOf("/"));
13034                    if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(r)) {
13035                        -1 !== u.indexOf(".min") && (o = ".min"), e = r.substring(0, r.lastIndexOf("/"));
13036                        break
13037                    }
13038                }!e && document.currentScript && (-1 !== (r = document.currentScript.src).indexOf(".min") && (o = ".min"), e = r.substring(0, r.lastIndexOf("/")))
13039            }
13040            this.baseURL = new Ox(t).toAbsolute(e), this.documentBaseURL = t, this.baseURI = new Ox(this.baseURL), this.suffix = o, uw(this)
13041        },
13042        overrideDefaults: function (e) {
13043            var t, n;
13044            (t = e.base_url) && (this.baseURL = new Ox(this.documentBaseURL).toAbsolute(t.replace(/\/+$/, "")), this.baseURI = new Ox(this.baseURL)), n = e.suffix, e.suffix && (this.suffix = n);
13045            var r = (this.defaultSettings = e).plugin_base_urls;
13046            for (var o in r) Ni.PluginManager.urls[o] = r[o]
13047        },
13048        init: function (r) {
13049            var n, u, s = this;
13050            u = Yt.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu", " ");
13051            var c = function (e) {
13052                    var t = e.id;
13053                    return t || (t = (t = e.name) && !fw.get(t) ? e.name : fw.uniqueId(), e.setAttribute("id", t)), t
13054                },
13055                l = function (e, t) {
13056                    return t.constructor === RegExp ? t.test(e.className) : fw.hasClass(e, t)
13057                },
13058                f = function (e) {
13059                    n = e
13060                },
13061                e = function () {
13062                    var o, i = 0,
13063                        a = [],
13064                        n = function (e, t, n) {
13065                            var r = new Yx(e, t, s);
13066                            a.push(r), r.on("init", function () {
13067                                ++i === o.length && f(a)
13068                            }), r.targetElm = r.targetElm || n, r.render()
13069                        };
13070                    fw.unbind(window, "ready", e),
13071                        function (e) {
13072                            var t = r[e];
13073                            t && t.apply(s, Array.prototype.slice.call(arguments, 2))
13074                        }("onpageload"), o = pn.unique(function (t) {
13075                            var e, n = [];
13076                            if (Re.ie && Re.ie < 11) return Yp("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"), [];
13077                            if (t.types) return mw(t.types, function (e) {
13078                                n = n.concat(fw.select(e.selector))
13079                            }), n;
13080                            if (t.selector) return fw.select(t.selector);
13081                            if (t.target) return [t.target];
13082                            switch (t.mode) {
13083                                case "exact":
13084                                    0 < (e = t.elements || "").length && mw(dw(e), function (t) {
13085                                        var e;
13086                                        (e = fw.get(t)) ? n.push(e): mw(document.forms, function (e) {
13087                                            mw(e.elements, function (e) {
13088                                                e.name === t && (t = "mce_editor_" + pw++, fw.setAttrib(e, "id", t), n.push(e))
13089                                            })
13090                                        })
13091                                    });
13092                                    break;
13093                                case "textareas":
13094                                case "specific_textareas":
13095                                    mw(fw.select("textarea"), function (e) {
13096                                        t.editor_deselector && l(e, t.editor_deselector) || t.editor_selector && !l(e, t.editor_selector) || n.push(e)
13097                                    })
13098                            }
13099                            return n
13100                        }(r)), r.types ? mw(r.types, function (t) {
13101                            Yt.each(o, function (e) {
13102                                return !fw.is(e, t.selector) || (n(c(e), gw({}, r, t), e), !1)
13103                            })
13104                        }) : (Yt.each(o, function (e) {
13105                            var t;
13106                            (t = s.get(e.id)) && t.initialized && !(t.getContainer() || t.getBody()).parentNode && (xw(t), t.unbindAllNativeEvents(), t.destroy(!0), t.removed = !0, t = null)
13107                        }), 0 === (o = Yt.grep(o, function (e) {
13108                            return !s.get(e.id)
13109                        })).length ? f([]) : mw(o, function (e) {
13110                            var t;
13111                            t = e, r.inline && t.tagName.toLowerCase() in u ? Yp("Could not initialize inline editor on invalid inline target element", e) : n(c(e), r, e)
13112                        }))
13113                };
13114            return s.settings = r, fw.bind(window, "ready", e), new De(function (t) {
13115                n ? t(n) : f = function (e) {
13116                    t(e)
13117                }
13118            })
13119        },
13120        get: function (t) {
13121            return 0 === arguments.length ? bw.slice(0) : k(t) ? V(bw, function (e) {
13122                return e.id === t
13123            }).getOr(null) : P(t) && bw[t] ? bw[t] : null
13124        },
13125        add: function (e) {
13126            var t = this;
13127            return vw[e.id] === e || (null === t.get(e.id) && ("length" !== e.id && (vw[e.id] = e), vw.push(e), bw.push(e)), Cw(!0), t.activeEditor = e, t.fire("AddEditor", {
13128                editor: e
13129            }), Jx || (Jx = function () {
13130                t.fire("BeforeUnload")
13131            }, fw.bind(window, "beforeunload", Jx))), e
13132        },
13133        createEditor: function (e, t) {
13134            return this.add(new Yx(e, t, this))
13135        },
13136        remove: function (e) {
13137            var t, n, r = this;
13138            if (e) {
13139                if (!k(e)) return n = e, D(r.get(n.id)) ? null : (xw(n) && r.fire("RemoveEditor", {
13140                    editor: n
13141                }), 0 === bw.length && fw.unbind(window, "beforeunload", Jx), n.remove(), Cw(0 < bw.length), n);
13142                mw(fw.select(e), function (e) {
13143                    (n = r.get(e.id)) && r.remove(n)
13144                })
13145            } else
13146                for (t = bw.length - 1; 0 <= t; t--) r.remove(bw[t])
13147        },
13148        execCommand: function (e, t, n) {
13149            var r = this.get(n);
13150            switch (e) {
13151                case "mceAddEditor":
13152                    return this.get(n) || new Yx(n, this.settings, this).render(), !0;
13153                case "mceRemoveEditor":
13154                    return r && r.remove(), !0;
13155                case "mceToggleEditor":
13156                    return r ? r.isHidden() ? r.show() : r.hide() : this.execCommand("mceAddEditor", 0, n), !0
13157            }
13158            return !!this.activeEditor && this.activeEditor.execCommand(e, t, n)
13159        },
13160        triggerSave: function () {
13161            mw(bw, function (e) {
13162                e.save()
13163            })
13164        },
13165        addI18n: function (e, t) {
13166            lw.add(e, t)
13167        },
13168        translate: function (e) {
13169            return lw.translate(e)
13170        },
13171        setActive: function (e) {
13172            var t = this.activeEditor;
13173            this.activeEditor !== e && (t && t.fire("deactivate", {
13174                relatedTarget: e
13175            }), e.fire("activate", {
13176                relatedTarget: t
13177            })), this.activeEditor = e
13178        }
13179    }, ep), Qx.setup();
13180    var ww, Nw = Qx;
13181
13182    function Ew(n) {
13183        return {
13184            walk: function (e, t) {
13185                return Ul(n, e, t)
13186            },
13187            split: Vv,
13188            normalize: function (t) {
13189                return mg(n, t).fold(H(!1), function (e) {
13190                    return t.setStart(e.startContainer, e.startOffset), t.setEnd(e.endContainer, e.endOffset), !0
13191                })
13192            }
13193        }
13194    }(ww = Ew || (Ew = {})).compareRanges = ag, ww.getCaretRangeFromPoint = Ey, ww.getSelectedNode = Za, ww.getNode = eu;
13195    var Sw, Tw, kw = Ew,
13196        Aw = Math.min,
13197        _w = Math.max,
13198        Rw = Math.round,
13199        Dw = function (e, t, n) {
13200            var r, o, i, a, u, s;
13201            return r = t.x, o = t.y, i = e.w, a = e.h, u = t.w, s = t.h, "b" === (n = (n || "").split(""))[0] && (o += s), "r" === n[1] && (r += u), "c" === n[0] && (o += Rw(s / 2)), "c" === n[1] && (r += Rw(u / 2)), "b" === n[3] && (o -= a), "r" === n[4] && (r -= i), "c" === n[3] && (o -= Rw(a / 2)), "c" === n[4] && (r -= Rw(i / 2)), Bw(r, o, i, a)
13202        },
13203        Bw = function (e, t, n, r) {
13204            return {
13205                x: e,
13206                y: t,
13207                w: n,
13208                h: r
13209            }
13210        },
13211        Ow = {
13212            inflate: function (e, t, n) {
13213                return Bw(e.x - t, e.y - n, e.w + 2 * t, e.h + 2 * n)
13214            },
13215            relativePosition: Dw,
13216            findBestRelativePosition: function (e, t, n, r) {
13217                var o, i;
13218                for (i = 0; i < r.length; i++)
13219                    if ((o = Dw(e, t, r[i])).x >= n.x && o.x + o.w <= n.w + n.x && o.y >= n.y && o.y + o.h <= n.h + n.y) return r[i];
13220                return null
13221            },
13222            intersect: function (e, t) {
13223                var n, r, o, i;
13224                return n = _w(e.x, t.x), r = _w(e.y, t.y), o = Aw(e.x + e.w, t.x + t.w), i = Aw(e.y + e.h, t.y + t.h), o - n < 0 || i - r < 0 ? null : Bw(n, r, o - n, i - r)
13225            },
13226            clamp: function (e, t, n) {
13227                var r, o, i, a, u, s, c, l, f, d;
13228                return u = e.x, s = e.y, c = e.x + e.w, l = e.y + e.h, f = t.x + t.w, d = t.y + t.h, r = _w(0, t.x - u), o = _w(0, t.y - s), i = _w(0, c - f), a = _w(0, l - d), u += r, s += o, n && (c += r, l += o, u -= i, s -= a), Bw(u, s, (c -= i) - u, (l -= a) - s)
13229            },
13230            create: Bw,
13231            fromClientRect: function (e) {
13232                return Bw(e.left, e.top, e.width, e.height)
13233            }
13234        },
13235        Pw = {},
13236        Lw = {
13237            add: function (e, t) {
13238                Pw[e.toLowerCase()] = t
13239            },
13240            has: function (e) {
13241                return !!Pw[e.toLowerCase()]
13242            },
13243            get: function (e) {
13244                var t = e.toLowerCase(),
13245                    n = Pw.hasOwnProperty(t) ? Pw[t] : null;
13246                if (null === n) throw new Error("Could not find module for type: " + e);
13247                return n
13248            },
13249            create: function (e, t) {
13250                var n;
13251                if ("string" == typeof e ? (t = t || {}).type = e : e = (t = e).type, e = e.toLowerCase(), !(n = Pw[e])) throw new Error("Could not find control by type: " + e);
13252                return (n = new n(t)).type = e, n
13253            }
13254        },
13255        Iw = Yt.each,
13256        Mw = Yt.extend,
13257        Fw = function () {};
13258    Fw.extend = Sw = function (n) {
13259        var e, t, r, o = this.prototype,
13260            i = function () {
13261                var e, t, n;
13262                if (!Tw && (this.init && this.init.apply(this, arguments), t = this.Mixins))
13263                    for (e = t.length; e--;)(n = t[e]).init && n.init.apply(this, arguments)
13264            },
13265            a = function () {
13266                return this
13267            },
13268            u = function (n, r) {
13269                return function () {
13270                    var e, t = this._super;
13271                    return this._super = o[n], e = r.apply(this, arguments), this._super = t, e
13272                }
13273            };
13274        for (t in Tw = !0, e = new this, Tw = !1, n.Mixins && (Iw(n.Mixins, function (e) {
13275                for (var t in e) "init" !== t && (n[t] = e[t])
13276            }), o.Mixins && (n.Mixins = o.Mixins.concat(n.Mixins))), n.Methods && Iw(n.Methods.split(","), function (e) {
13277                n[e] = a
13278            }), n.Properties && Iw(n.Properties.split(","), function (e) {
13279                var t = "_" + e;
13280                n[e] = function (e) {
13281                    return e !== undefined ? (this[t] = e, this) : this[t]
13282                }
13283            }), n.Statics && Iw(n.Statics, function (e, t) {
13284                i[t] = e
13285            }), n.Defaults && o.Defaults && (n.Defaults = Mw({}, o.Defaults, n.Defaults)), n) "function" == typeof (r = n[t]) && o[t] ? e[t] = u(t, r) : e[t] = r;
13286        return i.prototype = e, (i.constructor = i).extend = Sw, i
13287    };
13288    var Uw = Math.min,
13289        zw = Math.max,
13290        Vw = Math.round,
13291        qw = function (e, n) {
13292            var r, o, t, i;
13293            if (n = n || '"', null === e) return "null";
13294            if ("string" == (t = typeof e)) return o = "\bb\tt\nn\ff\rr\"\"''\\\\", n + e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function (e, t) {
13295                return '"' === n && "'" === e ? e : (r = o.indexOf(t)) + 1 ? "\\" + o.charAt(r + 1) : (e = t.charCodeAt().toString(16), "\\u" + "0000".substring(e.length) + e)
13296            }) + n;
13297            if ("object" === t) {
13298                if (e.hasOwnProperty && "[object Array]" === Object.prototype.toString.call(e)) {
13299                    for (r = 0, o = "["; r < e.length; r++) o += (0 < r ? "," : "") + qw(e[r], n);
13300                    return o + "]"
13301                }
13302                for (i in o = "{", e) e.hasOwnProperty(i) && (o += "function" != typeof e[i] ? (1 < o.length ? "," + n : n) + i + n + ":" + qw(e[i], n) : "");
13303                return o + "}"
13304            }
13305            return "" + e
13306        },
13307        Hw = {
13308            serialize: qw,
13309            parse: function (e) {
13310                try {
13311                    return JSON.parse(e)
13312                } catch (t) {}
13313            }
13314        },
13315        jw = {
13316            callbacks: {},
13317            count: 0,
13318            send: function (t) {
13319                var n = this,
13320                    r = pi.DOM,
13321                    o = t.count !== undefined ? t.count : n.count,
13322                    i = "tinymce_jsonp_" + o;
13323                n.callbacks[o] = function (e) {
13324                    r.remove(i), delete n.callbacks[o], t.callback(e)
13325                }, r.add(r.doc.body, "script", {
13326                    id: i,
13327                    src: t.url,
13328                    type: "text/javascript"
13329                }), n.count++
13330            }
13331        },
13332        $w = {
13333            send: function (e) {
13334                var t, n = 0,
13335                    r = function () {
13336                        !e.async || 4 === t.readyState || 1e4 < n++ ? (e.success && n < 1e4 && 200 === t.status ? e.success.call(e.success_scope, "" + t.responseText, t, e) : e.error && e.error.call(e.error_scope, 1e4 < n ? "TIMED_OUT" : "GENERAL", t, e), t = null) : setTimeout(r, 10)
13337                    };
13338                if (e.scope = e.scope || this, e.success_scope = e.success_scope || e.scope, e.error_scope = e.error_scope || e.scope, e.async = !1 !== e.async, e.data = e.data || "", $w.fire("beforeInitialize", {
13339                        settings: e
13340                    }), t = new Qp) {
13341                    if (t.overrideMimeType && t.overrideMimeType(e.content_type), t.open(e.type || (e.data ? "POST" : "GET"), e.url, e.async), e.crossDomain && (t.withCredentials = !0), e.content_type && t.setRequestHeader("Content-Type", e.content_type), e.requestheaders && Yt.each(e.requestheaders, function (e) {
13342                            t.setRequestHeader(e.key, e.value)
13343                        }), t.setRequestHeader("X-Requested-With", "XMLHttpRequest"), (t = $w.fire("beforeSend", {
13344                            xhr: t,
13345                            settings: e
13346                        }).xhr).send(e.data), !e.async) return r();
13347                    setTimeout(r, 10)
13348                }
13349            }
13350        };
13351    Yt.extend($w, ep);
13352    var Ww, Kw, Xw, Yw, Gw = Yt.extend,
13353        Jw = function (e) {
13354            this.settings = Gw({}, e), this.count = 0
13355        };
13356    Jw.sendRPC = function (e) {
13357        return (new Jw).send(e)
13358    }, Jw.prototype = {
13359        send: function (n) {
13360            var r = n.error,
13361                o = n.success;
13362            (n = Gw(this.settings, n)).success = function (e, t) {
13363                void 0 === (e = Hw.parse(e)) && (e = {
13364                    error: "JSON Parse error."
13365                }), e.error ? r.call(n.error_scope || n.scope, e.error, t) : o.call(n.success_scope || n.scope, e.result)
13366            }, n.error = function (e, t) {
13367                r && r.call(n.error_scope || n.scope, e, t)
13368            }, n.data = Hw.serialize({
13369                id: n.id || "c" + this.count++,
13370                method: n.method,
13371                params: n.params
13372            }), n.content_type = "application/json", $w.send(n)
13373        }
13374    };
13375    try {
13376        Ww = window.localStorage
13377    } catch (nN) {
13378        Kw = {}, Xw = [], Yw = {
13379            getItem: function (e) {
13380                var t = Kw[e];
13381                return t || null
13382            },
13383            setItem: function (e, t) {
13384                Xw.push(e), Kw[e] = String(t)
13385            },
13386            key: function (e) {
13387                return Xw[e]
13388            },
13389            removeItem: function (t) {
13390                Xw = Xw.filter(function (e) {
13391                    return e === t
13392                }), delete Kw[t]
13393            },
13394            clear: function () {
13395                Xw = [], Kw = {}
13396            },
13397            length: 0
13398        }, Object.defineProperty(Yw, "length", {
13399            get: function () {
13400                return Xw.length
13401            },
13402            configurable: !1,
13403            enumerable: !1
13404        }), Ww = Yw
13405    }
13406    var Qw, Zw = Nw,
13407        eN = {
13408            geom: {
13409                Rect: Ow
13410            },
13411            util: {
13412                Promise: De,
13413                Delay: Le,
13414                Tools: Yt,
13415                VK: Qh,
13416                URI: Ox,
13417                Class: Fw,
13418                EventDispatcher: Jg,
13419                Observable: ep,
13420                I18n: lw,
13421                XHR: $w,
13422                JSON: Hw,
13423                JSONRequest: Jw,
13424                JSONP: jw,
13425                LocalStorage: Ww,
13426                Color: function (e) {
13427                    var n = {},
13428                        u = 0,
13429                        s = 0,
13430                        c = 0,
13431                        t = function (e) {
13432                            var t;
13433                            return "object" == typeof e ? "r" in e ? (u = e.r, s = e.g, c = e.b) : "v" in e && function (e, t, n) {
13434                                var r, o, i, a;
13435                                if (e = (parseInt(e, 10) || 0) % 360, t = parseInt(t, 10) / 100, n = parseInt(n, 10) / 100, t = zw(0, Uw(t, 1)), n = zw(0, Uw(n, 1)), 0 !== t) {
13436                                    switch (r = e / 60, i = (o = n * t) * (1 - Math.abs(r % 2 - 1)), a = n - o, Math.floor(r)) {
13437                                        case 0:
13438                                            u = o, s = i, c = 0;
13439                                            break;
13440                                        case 1:
13441                                            u = i, s = o, c = 0;
13442                                            break;
13443                                        case 2:
13444                                            u = 0, s = o, c = i;
13445                                            break;
13446                                        case 3:
13447                                            u = 0, s = i, c = o;
13448                                            break;
13449                                        case 4:
13450                                            u = i, s = 0, c = o;
13451                                            break;
13452                                        case 5:
13453                                            u = o, s = 0, c = i;
13454                                            break;
13455                                        default:
13456                                            u = s = c = 0
13457                                    }
13458                                    u = Vw(255 * (u + a)), s = Vw(255 * (s + a)), c = Vw(255 * (c + a))
13459                                } else u = s = c = Vw(255 * n)
13460                            }(e.h, e.s, e.v) : (t = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e)) ? (u = parseInt(t[1], 10), s = parseInt(t[2], 10), c = parseInt(t[3], 10)) : (t = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e)) ? (u = parseInt(t[1], 16), s = parseInt(t[2], 16), c = parseInt(t[3], 16)) : (t = /#([0-F])([0-F])([0-F])/gi.exec(e)) && (u = parseInt(t[1] + t[1], 16), s = parseInt(t[2] + t[2], 16), c = parseInt(t[3] + t[3], 16)), u = u < 0 ? 0 : 255 < u ? 255 : u, s = s < 0 ? 0 : 255 < s ? 255 : s, c = c < 0 ? 0 : 255 < c ? 255 : c, n
13461                        };
13462                    return e && t(e), n.toRgb = function () {
13463                        return {
13464                            r: u,
13465                            g: s,
13466                            b: c
13467                        }
13468                    }, n.toHsv = function () {
13469                        return e = u, t = s, n = c, o = 0, (i = Uw(e /= 255, Uw(t /= 255, n /= 255))) === (a = zw(e, zw(t, n))) ? {
13470                            h: 0,
13471                            s: 0,
13472                            v: 100 * (o = i)
13473                        } : (r = (a - i) / a, {
13474                            h: Vw(60 * ((e === i ? 3 : n === i ? 1 : 5) - (e === i ? t - n : n === i ? e - t : n - e) / ((o = a) - i))),
13475                            s: Vw(100 * r),
13476                            v: Vw(100 * o)
13477                        });
13478                        var e, t, n, r, o, i, a
13479                    }, n.toHex = function () {
13480                        var e = function (e) {
13481                            return 1 < (e = parseInt(e, 10).toString(16)).length ? e : "0" + e
13482                        };
13483                        return "#" + e(u) + e(s) + e(c)
13484                    }, n.parse = t, n
13485                }
13486            },
13487            dom: {
13488                EventUtils: je,
13489                Sizzle: Tt,
13490                DomQuery: pn,
13491                TreeWalker: oo,
13492                DOMUtils: pi,
13493                ScriptLoader: Ci,
13494                RangeUtils: kw,
13495                Serializer: vy,
13496                ControlSelection: wy,
13497                BookmarkManager: yy,
13498                Selection: Qy,
13499                Event: je.Event
13500            },
13501            html: {
13502                Styles: oi,
13503                Entities: $o,
13504                Node: ty,
13505                Schema: ni,
13506                SaxParser: uv,
13507                DomParser: dy,
13508                Writer: cf,
13509                Serializer: lf
13510            },
13511            ui: {
13512                Factory: Lw
13513            },
13514            Env: Re,
13515            AddOnManager: Ni,
13516            Annotator: Wl,
13517            Formatter: Hb,
13518            UndoManager: Rv,
13519            EditorCommands: Yg,
13520            WindowManager: Vp,
13521            NotificationManager: zp,
13522            EditorObservable: pp,
13523            Shortcuts: Cp,
13524            Editor: Yx,
13525            FocusManager: Zx,
13526            EditorManager: Nw,
13527            DOM: pi.DOM,
13528            ScriptLoader: Ci.ScriptLoader,
13529            PluginManager: Ni.PluginManager,
13530            ThemeManager: Ni.ThemeManager,
13531            trim: Yt.trim,
13532            isArray: Yt.isArray,
13533            is: Yt.is,
13534            toArray: Yt.toArray,
13535            makeMap: Yt.makeMap,
13536            each: Yt.each,
13537            map: Yt.map,
13538            grep: Yt.grep,
13539            inArray: Yt.inArray,
13540            extend: Yt.extend,
13541            create: Yt.create,
13542            walk: Yt.walk,
13543            createNS: Yt.createNS,
13544            resolve: Yt.resolve,
13545            explode: Yt.explode,
13546            _addCacheSuffix: Yt._addCacheSuffix,
13547            isOpera: Re.opera,
13548            isWebKit: Re.webkit,
13549            isIE: Re.ie,
13550            isGecko: Re.gecko,
13551            isMac: Re.mac
13552        },
13553        tN = Zw = Yt.extend(Zw, eN);
13554    Qw = tN, window.tinymce = Qw, window.tinyMCE = Qw,
13555        function (e) {
13556            if ("object" == typeof module) try {
13557                module.exports = e
13558            } catch (t) {}
13559        }(tN)
13560}();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.