Liferay.Loader.define("dynamic-data-mapping-form-field-type$liferay-ckeditor@4.18.0-liferay.1/ckeditor/ckeditor", ['module', 'exports', 'require'], function (module, exports, require) {
  var define = undefined;
  var global = window;
  {
    /*
    Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved.
    For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license/
    */
    (function () {
      window.CKEDITOR && window.CKEDITOR.dom || (window.CKEDITOR || (window.CKEDITOR = function () {
        var c = /(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,
            h = { timestamp: "M3DI", version: "4.18.0 DEV", revision: "4c37728e20", rnd: Math.floor(900 * Math.random()) + 100, _: { pending: [], basePathSrcPattern: c }, status: "unloaded", basePath: function () {
            var e = window.CKEDITOR_BASEPATH || "";if (!e) for (var a = document.getElementsByTagName("script"), g = 0; g < a.length; g++) {
              var m = a[g].src.match(c);if (m) {
                e = m[1];break;
              }
            }-1 == e.indexOf(":/") && "//" != e.slice(0, 2) && (e = 0 === e.indexOf("/") ? location.href.match(/^.*?:\/\/[^\/]*/)[0] + e : location.href.match(/^[^\?]*\/(?:)/)[0] + e);if (!e) throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return e;
          }(), getUrl: function (e) {
            function a(c, m) {
              e.match(new RegExp("[\x26?]" + c + "\\b")) || (e += (0 <= e.indexOf("?") ? "\x26" : "?") + c + "\x3d" + m);
            }-1 === e.indexOf(":/") && 0 !== e.indexOf("/") && (e = this.basePath + e);"/" !== e.charAt(e.length - 1) && (this.timestamp && a("t", this.timestamp), Object.keys(h.ADDITIONAL_RESOURCE_PARAMS).forEach(function (c) {
              var m = h.ADDITIONAL_RESOURCE_PARAMS[c];/\.css$/.test(e) && "languageId" === c || a(c, m);
            }));return e;
          }, appendTimestamp: function (e) {
            if (!this.timestamp || "/" === e.charAt(e.length - 1) || /[&?]t=/.test(e)) return e;var a = 0 <= e.indexOf("?") ? "\x26" : "?";return e + a + "t\x3d" + this.timestamp;
          }, domReady: function () {
            function e() {
              try {
                document.addEventListener ? (document.removeEventListener("DOMContentLoaded", e, !1), window.removeEventListener("load", e, !1), a()) : document.attachEvent && "complete" === document.readyState && (document.detachEvent("onreadystatechange", e), window.detachEvent("onload", e), a());
              } catch (m) {}
            }function a() {
              for (var e; e = c.shift();) e();
            }var c = [];return function (a) {
              function b() {
                try {
                  document.documentElement.doScroll("left");
                } catch (f) {
                  setTimeout(b, 1);return;
                }e();
              }c.push(a);"complete" === document.readyState && setTimeout(e, 1);if (1 == c.length) if (document.addEventListener) document.addEventListener("DOMContentLoaded", e, !1), window.addEventListener("load", e, !1);else if (document.attachEvent) {
                document.attachEvent("onreadystatechange", e);window.attachEvent("onload", e);a = !1;try {
                  a = !window.frameElement;
                } catch (d) {}document.documentElement.doScroll && a && b();
              }
            };
          }() },
            g = window.CKEDITOR_GETURL;if (g) {
          var a = h.getUrl;h.getUrl = function (e) {
            return g.call(h, e) || a.call(h, e);
          };
        }return h;
      }()), function () {
        var c = {};CKEDITOR.event || (CKEDITOR.event = function () {}, CKEDITOR.event.implementOn = function (c) {
          var g = CKEDITOR.event.prototype,
              a;for (a in g) null == c[a] && (c[a] = g[a]);
        }, CKEDITOR.event.prototype = function () {
          function h(e) {
            var c = g(this);return c[e] || (c[e] = new a(e));
          }var g = function (e) {
            e = e.getPrivate && e.getPrivate() || e._ || (e._ = {});return e.events || (e.events = {});
          },
              a = function (e) {
            this.name = e;this.listeners = [];
          };a.prototype = { getListenerIndex: function (e) {
              for (var a = 0, c = this.listeners; a < c.length; a++) if (c[a].fn == e) return a;return -1;
            } };return { define: function (e, a) {
              var c = h.call(this, e);CKEDITOR.tools.extend(c, a, !0);
            }, on: function (e, a, g, m, b) {
              function d(p, b, d, w) {
                p = { name: e, sender: this, editor: p, data: b, listenerData: m,
                  stop: d, cancel: w, removeListener: f };return !1 === a.call(g, p) ? c : p.data;
              }function f() {
                p && p.removeListener(e, a);
              }var p = this,
                  w = h.call(this, e);if (0 > w.getListenerIndex(a)) {
                w = w.listeners;g || (g = this);isNaN(b) && (b = 10);d.fn = a;d.priority = b;for (var y = w.length - 1; 0 <= y; y--) if (w[y].priority <= b) return w.splice(y + 1, 0, d), { removeListener: f };w.unshift(d);
              }return { removeListener: f };
            }, once: function () {
              var a = Array.prototype.slice.call(arguments),
                  c = a[1];a[1] = function (a) {
                a.removeListener();return c.apply(this, arguments);
              };return this.on.apply(this, a);
            }, capture: function () {
              CKEDITOR.event.useCapture = 1;var a = this.on.apply(this, arguments);CKEDITOR.event.useCapture = 0;return a;
            }, fire: function () {
              var a = 0,
                  k = function () {
                a = 1;
              },
                  l = 0,
                  m = function () {
                l = 1;
              };return function (b, d, f) {
                var p = g(this)[b];b = a;var w = l;a = l = 0;if (p) {
                  var y = p.listeners;if (y.length) for (var y = y.slice(0), h, t = 0; t < y.length; t++) {
                    if (p.errorProof) try {
                      h = y[t].call(this, f, d, k, m);
                    } catch (v) {} else h = y[t].call(this, f, d, k, m);h === c ? l = 1 : "undefined" != typeof h && (d = h);if (a || l) break;
                  }
                }d = l ? !1 : "undefined" == typeof d ? !0 : d;
                a = b;l = w;return d;
              };
            }(), fireOnce: function (a, c, l) {
              c = this.fire(a, c, l);delete g(this)[a];return c;
            }, removeListener: function (a, c) {
              var l = g(this)[a];if (l) {
                var m = l.getListenerIndex(c);0 <= m && l.listeners.splice(m, 1);
              }
            }, removeAllListeners: function () {
              var a = g(this),
                  c;for (c in a) delete a[c];
            }, hasListeners: function (a) {
              return (a = g(this)[a]) && 0 < a.listeners.length;
            } };
        }());
      }(), CKEDITOR.editor || (CKEDITOR.editor = function () {
        CKEDITOR._.pending.push([this, arguments]);CKEDITOR.event.call(this);
      }, CKEDITOR.editor.prototype.fire = function (c, h) {
        c in { instanceReady: 1, loaded: 1 } && (this[c] = !0);return CKEDITOR.event.prototype.fire.call(this, c, h, this);
      }, CKEDITOR.editor.prototype.fireOnce = function (c, h) {
        c in { instanceReady: 1, loaded: 1 } && (this[c] = !0);return CKEDITOR.event.prototype.fireOnce.call(this, c, h, this);
      }, CKEDITOR.event.implementOn(CKEDITOR.editor.prototype)), CKEDITOR.env || (CKEDITOR.env = function () {
        var c = navigator.userAgent.toLowerCase(),
            h = c.match(/edge[ \/](\d+.?\d*)/),
            g = -1 < c.indexOf("trident/"),
            g = !(!h && !g),
            g = { ie: g, edge: !!h, webkit: !g && -1 < c.indexOf(" applewebkit/"),
          air: -1 < c.indexOf(" adobeair/"), mac: -1 < c.indexOf("macintosh"), quirks: "BackCompat" == document.compatMode && (!document.documentMode || 10 > document.documentMode), mobile: -1 < c.indexOf("mobile"), iOS: /(ipad|iphone|ipod)/.test(c), isCustomDomain: function () {
            if (!this.ie) return !1;var a = document.domain,
                c = window.location.hostname;return a != c && a != "[" + c + "]";
          }, secure: "https:" == location.protocol };g.gecko = "Gecko" == navigator.product && !g.webkit && !g.ie;g.webkit && (-1 < c.indexOf("chrome") ? g.chrome = !0 : g.safari = !0);var a = 0;g.ie && (a = h ? parseFloat(h[1]) : g.quirks || !document.documentMode ? parseFloat(c.match(/msie (\d+)/)[1]) : document.documentMode, g.ie9Compat = 9 == a, g.ie8Compat = 8 == a, g.ie7Compat = 7 == a, g.ie6Compat = 7 > a || g.quirks);g.gecko && (h = c.match(/rv:([\d\.]+)/)) && (h = h[1].split("."), a = 1E4 * h[0] + 100 * (h[1] || 0) + 1 * (h[2] || 0));g.air && (a = parseFloat(c.match(/ adobeair\/(\d+)/)[1]));g.webkit && (a = parseFloat(c.match(/ applewebkit\/(\d+)/)[1]));g.version = a;g.isCompatible = !(g.ie && 7 > a) && !(g.gecko && 4E4 > a) && !(g.webkit && 534 > a);g.hidpi = 2 <= window.devicePixelRatio;
        g.needsBrFiller = g.gecko || g.webkit || g.ie && 10 < a;g.needsNbspFiller = g.ie && 11 > a;g.cssClass = "cke_browser_" + (g.ie ? "ie" : g.gecko ? "gecko" : g.webkit ? "webkit" : "unknown");g.quirks && (g.cssClass += " cke_browser_quirks");g.ie && (g.cssClass += " cke_browser_ie" + (g.quirks ? "6 cke_browser_iequirks" : g.version));g.air && (g.cssClass += " cke_browser_air");g.iOS && (g.cssClass += " cke_browser_ios");g.hidpi && (g.cssClass += " cke_hidpi");return g;
      }()), "unloaded" == CKEDITOR.status && function () {
        CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore = function () {
          if ("basic_ready" != CKEDITOR.status) CKEDITOR.loadFullCore._load = 1;else {
            delete CKEDITOR.loadFullCore;var c = document.createElement("script");c.type = "text/javascript";c.src = CKEDITOR.basePath + "ckeditor.js";document.getElementsByTagName("head")[0].appendChild(c);
          }
        };CKEDITOR.loadFullCoreTimeout = 0;CKEDITOR.add = function (c) {
          (this._.pending || (this._.pending = [])).push(c);
        };(function () {
          CKEDITOR.domReady(function () {
            var c = CKEDITOR.loadFullCore,
                h = CKEDITOR.loadFullCoreTimeout;c && (CKEDITOR.status = "basic_ready", c && c._load ? c() : h && setTimeout(function () {
              CKEDITOR.loadFullCore && CKEDITOR.loadFullCore();
            }, 1E3 * h));
          });
        })();CKEDITOR.status = "basic_loaded";
      }(), "use strict", CKEDITOR.VERBOSITY_WARN = 1, CKEDITOR.VERBOSITY_ERROR = 2, CKEDITOR.verbosity = CKEDITOR.VERBOSITY_WARN | CKEDITOR.VERBOSITY_ERROR, CKEDITOR.warn = function (c, h) {
        CKEDITOR.verbosity & CKEDITOR.VERBOSITY_WARN && CKEDITOR.fire("log", { type: "warn", errorCode: c, additionalData: h });
      }, CKEDITOR.error = function (c, h) {
        CKEDITOR.verbosity & CKEDITOR.VERBOSITY_ERROR && CKEDITOR.fire("log", { type: "error", errorCode: c, additionalData: h });
      }, CKEDITOR.on("log", function (c) {
        if (window.console && window.console.log) {
          var h = console[c.data.type] ? c.data.type : "log",
              g = c.data.errorCode;if (c = c.data.additionalData) console[h]("[CKEDITOR] Error code: " + g + ".", c);else console[h]("[CKEDITOR] Error code: " + g + ".");console[h]("[CKEDITOR] For more information about this error go to https://ckeditor.com/docs/ckeditor4/latest/guide/dev_errors.html#" + g);
        }
      }, null, null, 999), CKEDITOR.dom = {}, function () {
        function c(f, b, a) {
          this._minInterval = f;this._context = a;this._lastOutput = this._scheduledTimer = 0;this._output = CKEDITOR.tools.bind(b, a || {});var d = this;this.input = function () {
            function f() {
              d._lastOutput = new Date().getTime();d._scheduledTimer = 0;d._call();
            }if (!d._scheduledTimer || !1 !== d._reschedule()) {
              var p = new Date().getTime() - d._lastOutput;p < d._minInterval ? d._scheduledTimer = setTimeout(f, d._minInterval - p) : f();
            }
          };
        }function h(f, b, a) {
          c.call(this, f, b, a);this._args = [];var d = this;this.input = CKEDITOR.tools.override(this.input, function (f) {
            return function () {
              d._args = Array.prototype.slice.call(arguments);f.call(this);
            };
          });
        }var g = [],
            a = CKEDITOR.env.gecko ? "-moz-" : CKEDITOR.env.webkit ? "-webkit-" : CKEDITOR.env.ie ? "-ms-" : "",
            e = /&/g,
            k = />/g,
            l = /</g,
            m = /"/g,
            b = /&(lt|gt|amp|quot|nbsp|shy|#\d{1,5});/g,
            d = { lt: "\x3c", gt: "\x3e", amp: "\x26", quot: '"', nbsp: " ", shy: "­" },
            f = function (f, b) {
          return "#" == b[0] ? String.fromCharCode(parseInt(b.slice(1), 10)) : d[b];
        };CKEDITOR.on("reset", function () {
          g = [];
        });CKEDITOR.tools = { arrayCompare: function (f, b) {
            if (!f && !b) return !0;if (!f || !b || f.length != b.length) return !1;
            for (var a = 0; a < f.length; a++) if (f[a] != b[a]) return !1;return !0;
          }, getIndex: function (f, b) {
            for (var a = 0; a < f.length; ++a) if (b(f[a])) return a;return -1;
          }, clone: function (f) {
            var b;if (f && f instanceof Array) {
              b = [];for (var a = 0; a < f.length; a++) b[a] = CKEDITOR.tools.clone(f[a]);return b;
            }if (null === f || "object" != typeof f || f instanceof String || f instanceof Number || f instanceof Boolean || f instanceof Date || f instanceof RegExp || f.nodeType || f.window === f) return f;b = new f.constructor();for (a in f) b[a] = CKEDITOR.tools.clone(f[a]);return b;
          },
          capitalize: function (f, b) {
            return f.charAt(0).toUpperCase() + (b ? f.slice(1) : f.slice(1).toLowerCase());
          }, extend: function (f) {
            var b = arguments.length,
                a,
                d;"boolean" == typeof (a = arguments[b - 1]) ? b-- : "boolean" == typeof (a = arguments[b - 2]) && (d = arguments[b - 1], b -= 2);for (var e = 1; e < b; e++) {
              var c = arguments[e] || {};CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(c), function (b) {
                if (!0 === a || null == f[b]) if (!d || b in d) f[b] = c[b];
              });
            }return f;
          }, prototypedCopy: function (f) {
            var b = function () {};b.prototype = f;return new b();
          }, copy: function (f) {
            var b = {},
                a;for (a in f) b[a] = f[a];return b;
          }, isArray: function (f) {
            return "[object Array]" == Object.prototype.toString.call(f);
          }, isEmpty: function (f) {
            for (var b in f) if (f.hasOwnProperty(b)) return !1;return !0;
          }, cssVendorPrefix: function (f, b, d) {
            if (d) return a + f + ":" + b + ";" + f + ":" + b;d = {};d[f] = b;d[a + f] = b;return d;
          }, cssStyleToDomStyle: function () {
            var f = document.createElement("div").style,
                b = "undefined" != typeof f.cssFloat ? "cssFloat" : "undefined" != typeof f.styleFloat ? "styleFloat" : "float";return function (f) {
              return "float" == f ? b : f.replace(/-./g, function (f) {
                return f.substr(1).toUpperCase();
              });
            };
          }(), buildStyleHtml: function (f) {
            f = [].concat(f);for (var b, a = [], d = 0; d < f.length; d++) if (b = f[d]) /@import|[{}]/.test(b) ? a.push("\x3cstyle\x3e" + b + "\x3c/style\x3e") : (b = CKEDITOR.appendTimestamp(b), a.push('\x3clink type\x3d"text/css" rel\x3dstylesheet href\x3d"' + b + '"\x3e'));return a.join("");
          }, htmlEncode: function (f) {
            return void 0 === f || null === f ? "" : String(f).replace(e, "\x26amp;").replace(k, "\x26gt;").replace(l, "\x26lt;");
          }, htmlDecode: function (p) {
            return p.replace(b, f);
          }, htmlEncodeAttr: function (f) {
            return CKEDITOR.tools.htmlEncode(f).replace(m, "\x26quot;");
          }, htmlDecodeAttr: function (f) {
            return CKEDITOR.tools.htmlDecode(f);
          }, transformPlainTextToHtml: function (f, b) {
            var a = b == CKEDITOR.ENTER_BR,
                d = this.htmlEncode(f.replace(/\r\n/g, "\n")),
                d = d.replace(/\t/g, "\x26nbsp;\x26nbsp; \x26nbsp;"),
                e = b == CKEDITOR.ENTER_P ? "p" : "div";if (!a) {
              var c = /\n{2}/g;if (c.test(d)) var m = "\x3c" + e + "\x3e",
                  g = "\x3c/" + e + "\x3e",
                  d = m + d.replace(c, function () {
                return g + m;
              }) + g;
            }d = d.replace(/\n/g, "\x3cbr\x3e");a || (d = d.replace(new RegExp("\x3cbr\x3e(?\x3d\x3c/" + e + "\x3e)"), function (f) {
              return CKEDITOR.tools.repeat(f, 2);
            }));d = d.replace(/^ | $/g, "\x26nbsp;");return d = d.replace(/(>|\s) /g, function (f, b) {
              return b + "\x26nbsp;";
            }).replace(/ (?=<)/g, "\x26nbsp;");
          }, getNextNumber: function () {
            var f = 0;return function () {
              return ++f;
            };
          }(), getNextId: function () {
            return "cke_" + this.getNextNumber();
          }, getUniqueId: function () {
            for (var f = "e", b = 0; 8 > b; b++) f += Math.floor(65536 * (1 + Math.random())).toString(16).substring(1);return f;
          }, override: function (f, b) {
            var a = b(f);a.prototype = f.prototype;return a;
          }, setTimeout: function (f, b, a, d, e) {
            e || (e = window);a || (a = e);return e.setTimeout(function () {
              d ? f.apply(a, [].concat(d)) : f.apply(a);
            }, b || 0);
          }, throttle: function (f, b, a) {
            return new this.buffers.throttle(f, b, a);
          }, trim: function () {
            var f = /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function (b) {
              return b.replace(f, "");
            };
          }(), ltrim: function () {
            var f = /^[ \t\n\r]+/g;return function (b) {
              return b.replace(f, "");
            };
          }(), rtrim: function () {
            var f = /[ \t\n\r]+$/g;return function (b) {
              return b.replace(f, "");
            };
          }(), indexOf: function (f, b) {
            if ("function" == typeof b) for (var a = 0, d = f.length; a < d; a++) {
              if (b(f[a])) return a;
            } else {
              if (f.indexOf) return f.indexOf(b);a = 0;for (d = f.length; a < d; a++) if (f[a] === b) return a;
            }return -1;
          }, search: function (f, b) {
            var a = CKEDITOR.tools.indexOf(f, b);return 0 <= a ? f[a] : null;
          }, bind: function (f, b) {
            var a = Array.prototype.slice.call(arguments, 2);return function () {
              return f.apply(b, a.concat(Array.prototype.slice.call(arguments)));
            };
          }, createClass: function (f) {
            var b = f.$,
                a = f.base,
                d = f.privates || f._,
                e = f.proto;
            f = f.statics;!b && (b = function () {
              a && this.base.apply(this, arguments);
            });if (d) var c = b,
                b = function () {
              var f = this._ || (this._ = {}),
                  b;for (b in d) {
                var a = d[b];f[b] = "function" == typeof a ? CKEDITOR.tools.bind(a, this) : a;
              }c.apply(this, arguments);
            };a && (b.prototype = this.prototypedCopy(a.prototype), b.prototype.constructor = b, b.base = a, b.baseProto = a.prototype, b.prototype.base = function n() {
              this.base = a.prototype.base;a.apply(this, arguments);this.base = n;
            });e && this.extend(b.prototype, e, !0);f && this.extend(b, f, !0);return b;
          }, addFunction: function (f, b) {
            return g.push(function () {
              return f.apply(b || this, arguments);
            }) - 1;
          }, removeFunction: function (f) {
            g[f] = null;
          }, callFunction: function (f) {
            var b = g[f];return b && b.apply(window, Array.prototype.slice.call(arguments, 1));
          }, cssLength: function () {
            var f = /^-?\d+\.?\d*px$/,
                b;return function (a) {
              b = CKEDITOR.tools.trim(a + "") + "px";return f.test(b) ? b : a || "";
            };
          }(), convertToPx: function () {
            var f, b;return function (a) {
              f || (f = CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"\x3e\x3c/div\x3e', CKEDITOR.document), CKEDITOR.document.getBody().append(f));if (!/%$/.test(a)) {
                var d = 0 > parseFloat(a);d && (a = a.replace("-", ""));f.setStyle("width", a);b = f.getClientRect();a = Math.round(b.width);return d ? -a : a;
              }return a;
            };
          }(), repeat: function (f, b) {
            return Array(b + 1).join(f);
          }, tryThese: function () {
            for (var f, b = 0, a = arguments.length; b < a; b++) {
              var d = arguments[b];try {
                f = d();break;
              } catch (e) {}
            }return f;
          }, genKey: function () {
            return Array.prototype.slice.call(arguments).join("-");
          }, defer: function (f) {
            return function () {
              var b = arguments,
                  a = this;window.setTimeout(function () {
                f.apply(a, b);
              }, 0);
            };
          }, normalizeCssText: function (f, b) {
            var a = [],
                d,
                e = CKEDITOR.tools.parseCssText(f, !0, b);for (d in e) a.push(d + ":" + e[d]);a.sort();return a.length ? a.join(";") + ";" : "";
          }, convertRgbToHex: function (f) {
            return f.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi, function (f, b, a, d) {
              f = [b, a, d];for (b = 0; 3 > b; b++) f[b] = ("0" + parseInt(f[b], 10).toString(16)).slice(-2);return "#" + f.join("");
            });
          }, normalizeHex: function (f) {
            return f.replace(/#(([0-9a-f]{3}){1,2})($|;|\s+)/gi, function (f, b, a, d) {
              f = b.toLowerCase();3 == f.length && (f = f.split(""), f = [f[0], f[0], f[1], f[1], f[2], f[2]].join(""));return "#" + f + d;
            });
          }, _isValidColorFormat: function (f) {
            if (!f) return !1;f = f.replace(/\s+/g, "");return (/^[a-z0-9()#%,./]+$/i.test(f)
            );
          }, parseCssText: function (f, b, a) {
            var d = {};a && (f = new CKEDITOR.dom.element("span").setAttribute("style", f).getAttribute("style") || "");f && (f = CKEDITOR.tools.normalizeHex(CKEDITOR.tools.convertRgbToHex(f)));if (!f || ";" == f) return d;f.replace(/&quot;/g, '"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function (f, a, p) {
              b && (a = a.toLowerCase(), "font-family" == a && (p = p.replace(/\s*,\s*/g, ",")), p = CKEDITOR.tools.trim(p));d[a] = p;
            });return d;
          }, writeCssText: function (f, b) {
            var a,
                d = [];for (a in f) d.push(a + ":" + f[a]);b && d.sort();return d.join("; ");
          }, objectCompare: function (f, b, a) {
            if (!f && !b) return !0;if (!f || !b) return !1;for (var d in f) if (f[d] != b[d]) return !1;if (!a) for (d in b) if (f[d] != b[d]) return !1;return !0;
          }, objectKeys: function (f) {
            return CKEDITOR.tools.object.keys(f);
          }, convertArrayToObject: function (f, b) {
            var a = {};1 == arguments.length && (b = !0);for (var d = 0, e = f.length; d < e; ++d) a[f[d]] = b;return a;
          }, getStyledSpans: function (f, b) {
            var a = CKEDITOR.env.ie && 8 == CKEDITOR.env.version ? f.toUpperCase() : f,
                a = b.find("span[style*\x3d" + a + "]").toArray();return CKEDITOR.tools.array.filter(a, function (b) {
              return !!b.getStyle(f);
            });
          }, fixDomain: function () {
            for (var f;;) try {
              f = window.parent.document.domain;break;
            } catch (b) {
              f = f ? f.replace(/.+?(?:\.|$)/, "") : document.domain;if (!f) break;document.domain = f;
            }return !!f;
          }, eventsBuffer: function (f, b, a) {
            return new this.buffers.event(f, b, a);
          }, enableHtml5Elements: function (f, b) {
            for (var a = "abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video".split(" "), d = a.length, e; d--;) e = f.createElement(a[d]), b && f.appendChild(e);
          }, checkIfAnyArrayItemMatches: function (f, b) {
            for (var a = 0, d = f.length; a < d; ++a) if (f[a].match(b)) return !0;return !1;
          }, checkIfAnyObjectPropertyMatches: function (f, b) {
            for (var a in f) if (a.match(b)) return !0;return !1;
          }, keystrokeToString: function (f, b) {
            var a = this.keystrokeToArray(f, b);a.display = a.display.join("+");a.aria = a.aria.join("+");return a;
          }, keystrokeToArray: function (f, b) {
            var a = b & 16711680,
                d = b & 65535,
                e = CKEDITOR.env.mac,
                c = [],
                m = [];a & CKEDITOR.CTRL && (c.push(e ? "⌘" : f[17]), m.push(e ? f[224] : f[17]));a & CKEDITOR.ALT && (c.push(e ? "⌥" : f[18]), m.push(f[18]));a & CKEDITOR.SHIFT && (c.push(e ? "⇧" : f[16]), m.push(f[16]));d && (f[d] ? (c.push(f[d]), m.push(f[d])) : (c.push(String.fromCharCode(d)), m.push(String.fromCharCode(d))));return { display: c, aria: m };
          }, transparentImageData: "data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw\x3d\x3d",
          getCookie: function (f) {
            f = f.toLowerCase();for (var b = document.cookie.split(";"), a, d, e = 0; e < b.length; e++) if (a = b[e].split("\x3d"), d = decodeURIComponent(CKEDITOR.tools.trim(a[0]).toLowerCase()), d === f) return decodeURIComponent(1 < a.length ? a[1] : "");return null;
          }, setCookie: function (f, b) {
            document.cookie = encodeURIComponent(f) + "\x3d" + encodeURIComponent(b) + ";path\x3d/";
          }, getCsrfToken: function () {
            var f = CKEDITOR.tools.getCookie("ckCsrfToken");if (!f || 40 != f.length) {
              var f = [],
                  b = "";if (window.crypto && window.crypto.getRandomValues) f = new Uint8Array(40), window.crypto.getRandomValues(f);else for (var a = 0; 40 > a; a++) f.push(Math.floor(256 * Math.random()));for (a = 0; a < f.length; a++) var d = "abcdefghijklmnopqrstuvwxyz0123456789".charAt(f[a] % 36), b = b + (.5 < Math.random() ? d.toUpperCase() : d);f = b;CKEDITOR.tools.setCookie("ckCsrfToken", f);
            }return f;
          }, escapeCss: function (f) {
            if (f) {
              if (window.CSS && CSS.escape) f = CSS.escape(f);else {
                f = String(f);for (var b = f.length, a = -1, d, e = "", c = f.charCodeAt(0); ++a < b;) d = f.charCodeAt(a), e = 0 == d ? e + "�" : 127 == d || 1 <= d && 31 >= d || 0 == a && 48 <= d && 57 >= d || 1 == a && 48 <= d && 57 >= d && 45 == c ? e + ("\\" + d.toString(16) + " ") : 0 == a && 1 == b && 45 == d ? e + ("\\" + f.charAt(a)) : 128 <= d || 45 == d || 95 == d || 48 <= d && 57 >= d || 65 <= d && 90 >= d || 97 <= d && 122 >= d ? e + f.charAt(a) : e + ("\\" + f.charAt(a));f = e;
              }
            } else f = "";return f;
          }, getMouseButton: function (f) {
            return (f = f && f.data ? f.data.$ : f) ? CKEDITOR.tools.normalizeMouseButton(f.button) : !1;
          }, normalizeMouseButton: function (f, b) {
            if (!CKEDITOR.env.ie || 9 <= CKEDITOR.env.version && !CKEDITOR.env.ie6Compat) return f;for (var a = [[CKEDITOR.MOUSE_BUTTON_LEFT, 1], [CKEDITOR.MOUSE_BUTTON_MIDDLE, 4], [CKEDITOR.MOUSE_BUTTON_RIGHT, 2]], d = 0; d < a.length; d++) {
              var e = a[d];if (e[0] === f && b) return e[1];if (!b && e[1] === f) return e[0];
            }
          }, convertHexStringToBytes: function (f) {
            var b = [],
                a = f.length / 2,
                d;for (d = 0; d < a; d++) b.push(parseInt(f.substr(2 * d, 2), 16));return b;
          }, convertBytesToBase64: function (f) {
            var b = "",
                a = f.length,
                d;for (d = 0; d < a; d += 3) {
              var e = f.slice(d, d + 3),
                  c = e.length,
                  m = [],
                  g;if (3 > c) for (g = c; 3 > g; g++) e[g] = 0;m[0] = (e[0] & 252) >> 2;m[1] = (e[0] & 3) << 4 | e[1] >> 4;m[2] = (e[1] & 15) << 2 | (e[2] & 192) >> 6;m[3] = e[2] & 63;for (g = 0; 4 > g; g++) b = g <= c ? b + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(m[g]) : b + "\x3d";
            }return b;
          }, style: { parse: { _borderStyle: "none hidden dotted dashed solid double groove ridge inset outset".split(" "), _widthRegExp: /^(thin|medium|thick|[\+-]?\d+(\.\d+)?[a-z%]+|[\+-]?0+(\.0+)?|\.\d+[a-z%]+)$/, _rgbaRegExp: /rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi, _hslaRegExp: /hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi, background: function (f) {
                var b = {},
                    a = this._findColor(f);
                a.length && (b.color = a[0], CKEDITOR.tools.array.forEach(a, function (b) {
                  f = f.replace(b, "");
                }));if (f = CKEDITOR.tools.trim(f)) b.unprocessed = f;return b;
              }, margin: function (f) {
                return CKEDITOR.tools.style.parse.sideShorthand(f, function (f) {
                  return f.match(/(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset|revert)/g) || ["0px"];
                });
              }, sideShorthand: function (f, b) {
                function a(f) {
                  d.top = e[f[0]];d.right = e[f[1]];d.bottom = e[f[2]];d.left = e[f[3]];
                }var d = {},
                    e = b ? b(f) : f.split(/\s+/);switch (e.length) {case 1:
                    a([0, 0, 0, 0]);break;case 2:
                    a([0, 1, 0, 1]);break;case 3:
                    a([0, 1, 2, 1]);break;case 4:
                    a([0, 1, 2, 3]);}return d;
              }, border: function (f) {
                return CKEDITOR.tools.style.border.fromCssRule(f);
              }, _findColor: function (f) {
                var b = [],
                    a = CKEDITOR.tools.array,
                    b = b.concat(f.match(this._rgbaRegExp) || []),
                    b = b.concat(f.match(this._hslaRegExp) || []);return b = b.concat(a.filter(f.split(/\s+/), function (f) {
                  return f.match(/^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi) ? !0 : f.toLowerCase() in CKEDITOR.tools.style.parse._colors;
                }));
              } } }, array: { filter: function (f, b, a) {
              var d = [];this.forEach(f, function (e, c) {
                b.call(a, e, c, f) && d.push(e);
              });return d;
            }, find: function (f, b, a) {
              for (var d = f.length, e = 0; e < d;) {
                if (b.call(a, f[e], e, f)) return f[e];e++;
              }
            }, forEach: function (f, b, a) {
              var d = f.length,
                  e;for (e = 0; e < d; e++) b.call(a, f[e], e, f);
            }, map: function (f, b, a) {
              for (var d = [], e = 0; e < f.length; e++) d.push(b.call(a, f[e], e, f));return d;
            }, reduce: function (f, b, a, d) {
              for (var e = 0; e < f.length; e++) a = b.call(d, a, f[e], e, f);return a;
            }, every: function (f, b, a) {
              if (!f.length) return !0;b = this.filter(f, b, a);return f.length === b.length;
            }, some: function (f, b, a) {
              for (var d = 0; d < f.length; d++) if (b.call(a, f[d], d, f)) return !0;return !1;
            }, zip: function (f, b) {
              return CKEDITOR.tools.array.map(f, function (f, a) {
                return [f, b[a]];
              });
            }, unique: function (f) {
              return this.filter(f, function (b, a) {
                return a === CKEDITOR.tools.array.indexOf(f, b);
              });
            } }, object: { DONT_ENUMS: "toString toLocaleString valueOf hasOwnProperty isPrototypeOf propertyIsEnumerable constructor".split(" "), entries: function (f) {
              return CKEDITOR.tools.array.map(CKEDITOR.tools.object.keys(f), function (b) {
                return [b, f[b]];
              });
            }, values: function (f) {
              return CKEDITOR.tools.array.map(CKEDITOR.tools.object.keys(f), function (b) {
                return f[b];
              });
            }, keys: function (f) {
              var b = Object.prototype.hasOwnProperty,
                  a = [],
                  d = CKEDITOR.tools.object.DONT_ENUMS;if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (!f || "object" !== typeof f)) {
                b = [];if ("string" === typeof f) for (a = 0; a < f.length; a++) b.push(String(a));return b;
              }for (var e in f) a.push(e);if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) for (e = 0; e < d.length; e++) b.call(f, d[e]) && a.push(d[e]);return a;
            }, findKey: function (f, b) {
              if ("object" !== typeof f) return null;for (var a in f) if (f[a] === b) return a;return null;
            },
            merge: function (f, b) {
              var a = CKEDITOR.tools,
                  d = a.clone(f),
                  e = a.clone(b);a.array.forEach(a.object.keys(e), function (f) {
                d[f] = "object" === typeof e[f] && "object" === typeof d[f] ? a.object.merge(d[f], e[f]) : e[f];
              });return d;
            } }, getAbsoluteRectPosition: function (f, b) {
            function a(f) {
              if (f) {
                var b = f.getClientRect();d.top += b.top;d.left += b.left;"x" in d && "y" in d && (d.x += b.x, d.y += b.y);a(f.getWindow().getFrame());
              }
            }var d = CKEDITOR.tools.copy(b);a(f.getFrame());var e = CKEDITOR.document.getWindow().getScrollPosition();d.top += e.y;d.left += e.x;"x" in d && "y" in d && (d.y += e.y, d.x += e.x);d.right = d.left + d.width;d.bottom = d.top + d.height;return d;
          } };c.prototype = { reset: function () {
            this._lastOutput = 0;this._clearTimer();
          }, _reschedule: function () {
            return !1;
          }, _call: function () {
            this._output();
          }, _clearTimer: function () {
            this._scheduledTimer && clearTimeout(this._scheduledTimer);this._scheduledTimer = 0;
          } };h.prototype = CKEDITOR.tools.prototypedCopy(c.prototype);h.prototype._reschedule = function () {
          this._scheduledTimer && this._clearTimer();
        };h.prototype._call = function () {
          this._output.apply(this._context, this._args);
        };CKEDITOR.tools.buffers = {};CKEDITOR.tools.buffers.event = c;CKEDITOR.tools.buffers.throttle = h;CKEDITOR.tools.style.border = CKEDITOR.tools.createClass({ $: function (f) {
            f = f || {};this.width = f.width;this.style = f.style;this.color = f.color;this._.normalize();
          }, _: { normalizeMap: { color: [[/windowtext/g, "black"]] }, normalize: function () {
              for (var f in this._.normalizeMap) {
                var b = this[f];b && (this[f] = CKEDITOR.tools.array.reduce(this._.normalizeMap[f], function (f, b) {
                  return f.replace(b[0], b[1]);
                }, b));
              }
            } }, proto: { toString: function () {
              return CKEDITOR.tools.array.filter([this.width, this.style, this.color], function (f) {
                return !!f;
              }).join(" ");
            } }, statics: { fromCssRule: function (f) {
              var b = {},
                  a = f.split(/\s+/g);f = CKEDITOR.tools.style.parse._findColor(f);f.length && (b.color = f[0]);CKEDITOR.tools.array.forEach(a, function (f) {
                b.style || -1 === CKEDITOR.tools.indexOf(CKEDITOR.tools.style.parse._borderStyle, f) ? !b.width && CKEDITOR.tools.style.parse._widthRegExp.test(f) && (b.width = f) : b.style = f;
              });return new CKEDITOR.tools.style.border(b);
            }, splitCssValues: function (f, b) {
              b = b || {};var a = CKEDITOR.tools.array.reduce(["width", "style", "color"], function (a, d) {
                var e = f["border-" + d] || b[d];a[d] = e ? CKEDITOR.tools.style.parse.sideShorthand(e) : null;return a;
              }, {});return CKEDITOR.tools.array.reduce(["top", "right", "bottom", "left"], function (b, d) {
                var e = {},
                    c;for (c in a) {
                  var m = f["border-" + d + "-" + c];e[c] = m ? m : a[c] && a[c][d];
                }b["border-" + d] = new CKEDITOR.tools.style.border(e);return b;
              }, {});
            } } });CKEDITOR.tools.array.indexOf = CKEDITOR.tools.indexOf;CKEDITOR.tools.array.isArray = CKEDITOR.tools.isArray;CKEDITOR.MOUSE_BUTTON_LEFT = 0;CKEDITOR.MOUSE_BUTTON_MIDDLE = 1;CKEDITOR.MOUSE_BUTTON_RIGHT = 2;
      }(), CKEDITOR.dtd = function () {
        var c = CKEDITOR.tools.extend,
            h = function (b, f) {
          for (var a = CKEDITOR.tools.clone(b), e = 1; e < arguments.length; e++) {
            f = arguments[e];for (var c in f) delete a[c];
          }return a;
        },
            g = {},
            a = {},
            e = { address: 1, article: 1, aside: 1, blockquote: 1, details: 1, div: 1, dl: 1, fieldset: 1, figure: 1, footer: 1, form: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, header: 1, hgroup: 1, hr: 1, main: 1, menu: 1, nav: 1, ol: 1, p: 1, pre: 1, section: 1, table: 1, ul: 1 },
            k = { command: 1, link: 1, meta: 1, noscript: 1, script: 1, style: 1 },
            l = {},
            m = { "#": 1 },
            b = { center: 1, dir: 1, noframes: 1 };c(g, { a: 1, abbr: 1, area: 1, audio: 1, b: 1, bdi: 1, bdo: 1, br: 1, button: 1, canvas: 1, cite: 1, code: 1, command: 1, datalist: 1, del: 1, dfn: 1, em: 1, embed: 1, i: 1, iframe: 1, img: 1, input: 1, ins: 1, kbd: 1, keygen: 1, label: 1, map: 1, mark: 1, meter: 1, noscript: 1, object: 1, output: 1, progress: 1, q: 1, ruby: 1, s: 1, samp: 1, script: 1, select: 1, small: 1, span: 1, strong: 1, sub: 1, sup: 1, textarea: 1, time: 1, u: 1, "var": 1, video: 1, wbr: 1 }, m, { acronym: 1, applet: 1, basefont: 1, big: 1, font: 1, isindex: 1, strike: 1, style: 1, tt: 1 });c(a, e, g, b);h = { a: h(g, { a: 1, button: 1 }), abbr: g, address: a, area: l, article: a, aside: a, audio: c({ source: 1, track: 1 }, a), b: g, base: l, bdi: g, bdo: g, blockquote: a, body: a, br: l, button: h(g, { a: 1, button: 1 }), canvas: g, caption: a, cite: g, code: g, col: l, colgroup: { col: 1 }, command: l, datalist: c({ option: 1 }, g), dd: a, del: g, details: c({ summary: 1 }, a), dfn: g, div: a, dl: { dt: 1, dd: 1 }, dt: a, em: g, embed: l, fieldset: c({ legend: 1 }, a), figcaption: a, figure: c({ figcaption: 1 }, a), footer: a, form: a, h1: g, h2: g, h3: g, h4: g, h5: g, h6: g, head: c({ title: 1, base: 1 }, k), header: a, hgroup: { h1: 1,
            h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 }, hr: l, html: c({ head: 1, body: 1 }, a, k), i: g, iframe: m, img: l, input: l, ins: g, kbd: g, keygen: l, label: g, legend: g, li: a, link: l, main: a, map: a, mark: g, menu: c({ li: 1 }, a), meta: l, meter: h(g, { meter: 1 }), nav: a, noscript: c({ link: 1, meta: 1, style: 1 }, g), object: c({ param: 1 }, g), ol: { li: 1 }, optgroup: { option: 1 }, option: m, output: g, p: g, param: l, pre: g, progress: h(g, { progress: 1 }), q: g, rp: g, rt: g, ruby: c({ rp: 1, rt: 1 }, g), s: g, samp: g, script: m, section: a, select: { optgroup: 1, option: 1 }, small: g, source: l, span: g, strong: g, style: m, sub: g,
          summary: c({ h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 }, g), sup: g, table: { caption: 1, colgroup: 1, thead: 1, tfoot: 1, tbody: 1, tr: 1 }, tbody: { tr: 1 }, td: a, textarea: m, tfoot: { tr: 1 }, th: a, thead: { tr: 1 }, time: h(g, { time: 1 }), title: m, tr: { th: 1, td: 1 }, track: l, u: g, ul: { li: 1 }, "var": g, video: c({ source: 1, track: 1 }, a), wbr: l, acronym: g, applet: c({ param: 1 }, a), basefont: l, big: g, center: a, dialog: l, dir: { li: 1 }, font: g, isindex: l, noframes: a, strike: g, tt: g };c(h, { $block: c({ audio: 1, dd: 1, dt: 1, figcaption: 1, li: 1, video: 1 }, e, b), $blockLimit: { article: 1, aside: 1, audio: 1,
            body: 1, caption: 1, details: 1, dir: 1, div: 1, dl: 1, fieldset: 1, figcaption: 1, figure: 1, footer: 1, form: 1, header: 1, hgroup: 1, main: 1, menu: 1, nav: 1, ol: 1, section: 1, table: 1, td: 1, th: 1, tr: 1, ul: 1, video: 1 }, $cdata: { script: 1, style: 1 }, $editable: { address: 1, article: 1, aside: 1, blockquote: 1, body: 1, details: 1, div: 1, fieldset: 1, figcaption: 1, footer: 1, form: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, header: 1, hgroup: 1, main: 1, nav: 1, p: 1, pre: 1, section: 1 }, $empty: { area: 1, base: 1, basefont: 1, br: 1, col: 1, command: 1, dialog: 1, embed: 1, hr: 1, img: 1, input: 1, isindex: 1,
            keygen: 1, link: 1, meta: 1, param: 1, source: 1, track: 1, wbr: 1 }, $inline: g, $list: { dl: 1, ol: 1, ul: 1 }, $listItem: { dd: 1, dt: 1, li: 1 }, $nonBodyContent: c({ body: 1, head: 1, html: 1 }, h.head), $nonEditable: { applet: 1, audio: 1, button: 1, embed: 1, iframe: 1, map: 1, object: 1, option: 1, param: 1, script: 1, textarea: 1, video: 1 }, $object: { applet: 1, audio: 1, button: 1, hr: 1, iframe: 1, img: 1, input: 1, object: 1, select: 1, table: 1, textarea: 1, video: 1 }, $removeEmpty: { abbr: 1, acronym: 1, b: 1, bdi: 1, bdo: 1, big: 1, cite: 1, code: 1, del: 1, dfn: 1, em: 1, font: 1, i: 1, ins: 1, label: 1, kbd: 1,
            mark: 1, meter: 1, output: 1, q: 1, ruby: 1, s: 1, samp: 1, small: 1, span: 1, strike: 1, strong: 1, sub: 1, sup: 1, time: 1, tt: 1, u: 1, "var": 1 }, $tabIndex: { a: 1, area: 1, button: 1, input: 1, object: 1, select: 1, textarea: 1 }, $tableContent: { caption: 1, col: 1, colgroup: 1, tbody: 1, td: 1, tfoot: 1, th: 1, thead: 1, tr: 1 }, $transparent: { a: 1, audio: 1, canvas: 1, del: 1, ins: 1, map: 1, noscript: 1, object: 1, video: 1 }, $intermediate: { caption: 1, colgroup: 1, dd: 1, dt: 1, figcaption: 1, legend: 1, li: 1, optgroup: 1, option: 1, rp: 1, rt: 1, summary: 1, tbody: 1, td: 1, tfoot: 1, th: 1, thead: 1, tr: 1 } });
        return h;
      }(), CKEDITOR.dom.event = function (c) {
        this.$ = c;
      }, CKEDITOR.dom.event.prototype = { getKey: function () {
          return this.$.keyCode || this.$.which;
        }, getKeystroke: function () {
          var c = this.getKey();if (this.$.ctrlKey || this.$.metaKey) c += CKEDITOR.CTRL;this.$.shiftKey && (c += CKEDITOR.SHIFT);this.$.altKey && (c += CKEDITOR.ALT);return c;
        }, preventDefault: function (c) {
          var h = this.$;h.preventDefault ? h.preventDefault() : h.returnValue = !1;c && this.stopPropagation();
        }, stopPropagation: function () {
          var c = this.$;c.stopPropagation ? c.stopPropagation() : c.cancelBubble = !0;
        }, getTarget: function () {
          var c = this.$.target || this.$.srcElement;return c ? new CKEDITOR.dom.node(c) : null;
        }, getPhase: function () {
          return this.$.eventPhase || 2;
        }, getPageOffset: function () {
          var c = this.getTarget().getDocument().$;return { x: this.$.pageX || this.$.clientX + (c.documentElement.scrollLeft || c.body.scrollLeft), y: this.$.pageY || this.$.clientY + (c.documentElement.scrollTop || c.body.scrollTop) };
        } }, CKEDITOR.CTRL = 1114112, CKEDITOR.SHIFT = 2228224, CKEDITOR.ALT = 4456448, CKEDITOR.EVENT_PHASE_CAPTURING = 1, CKEDITOR.EVENT_PHASE_AT_TARGET = 2, CKEDITOR.EVENT_PHASE_BUBBLING = 3, CKEDITOR.HISTORY_NATIVE = 1, CKEDITOR.HISTORY_HASH = 2, CKEDITOR.HISTORY_OFF = 0, CKEDITOR.dom.domObject = function (c) {
        c && (this.$ = c);
      }, CKEDITOR.dom.domObject.prototype = function () {
        var c = function (c, g) {
          return function (a) {
            "undefined" != typeof CKEDITOR && c.fire(g, new CKEDITOR.dom.event(a));
          };
        };return { getPrivate: function () {
            var c;(c = this.getCustomData("_")) || this.setCustomData("_", c = {});return c;
          }, on: function (h) {
            var g = this.getCustomData("_cke_nativeListeners");
            g || (g = {}, this.setCustomData("_cke_nativeListeners", g));g[h] || (g = g[h] = c(this, h), this.$.addEventListener ? this.$.addEventListener(h, g, !!CKEDITOR.event.useCapture) : this.$.attachEvent && this.$.attachEvent("on" + h, g));return CKEDITOR.event.prototype.on.apply(this, arguments);
          }, removeListener: function (c) {
            CKEDITOR.event.prototype.removeListener.apply(this, arguments);if (!this.hasListeners(c)) {
              var g = this.getCustomData("_cke_nativeListeners"),
                  a = g && g[c];a && (this.$.removeEventListener ? this.$.removeEventListener(c, a, !1) : this.$.detachEvent && this.$.detachEvent("on" + c, a), delete g[c]);
            }
          }, removeAllListeners: function () {
            try {
              var c = this.getCustomData("_cke_nativeListeners"),
                  g;for (g in c) {
                var a = c[g];this.$.detachEvent ? this.$.detachEvent("on" + g, a) : this.$.removeEventListener && this.$.removeEventListener(g, a, !1);delete c[g];
              }
            } catch (e) {
              if (!CKEDITOR.env.edge || -2146828218 !== e.number) throw e;
            }CKEDITOR.event.prototype.removeAllListeners.call(this);
          } };
      }(), function (c) {
        var h = {};CKEDITOR.on("reset", function () {
          h = {};
        });c.equals = function (c) {
          try {
            return c && c.$ === this.$;
          } catch (a) {
            return !1;
          }
        };c.setCustomData = function (c, a) {
          var e = this.getUniqueId();(h[e] || (h[e] = {}))[c] = a;return this;
        };c.getCustomData = function (c) {
          var a = this.$["data-cke-expando"];return (a = a && h[a]) && c in a ? a[c] : null;
        };c.removeCustomData = function (c) {
          var a = this.$["data-cke-expando"],
              a = a && h[a],
              e,
              k;a && (e = a[c], k = c in a, delete a[c]);return k ? e : null;
        };c.clearCustomData = function () {
          this.removeAllListeners();var c = this.getUniqueId();c && delete h[c];
        };c.getUniqueId = function () {
          return this.$["data-cke-expando"] || (this.$["data-cke-expando"] = CKEDITOR.tools.getNextNumber());
        };CKEDITOR.event.implementOn(c);
      }(CKEDITOR.dom.domObject.prototype), CKEDITOR.dom.node = function (c) {
        return c ? new CKEDITOR.dom[c.nodeType == CKEDITOR.NODE_DOCUMENT ? "document" : c.nodeType == CKEDITOR.NODE_ELEMENT ? "element" : c.nodeType == CKEDITOR.NODE_TEXT ? "text" : c.nodeType == CKEDITOR.NODE_COMMENT ? "comment" : c.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT ? "documentFragment" : "domObject"](c) : this;
      }, CKEDITOR.dom.node.prototype = new CKEDITOR.dom.domObject(), CKEDITOR.NODE_ELEMENT = 1, CKEDITOR.NODE_DOCUMENT = 9, CKEDITOR.NODE_TEXT = 3, CKEDITOR.NODE_COMMENT = 8, CKEDITOR.NODE_DOCUMENT_FRAGMENT = 11, CKEDITOR.POSITION_IDENTICAL = 0, CKEDITOR.POSITION_DISCONNECTED = 1, CKEDITOR.POSITION_FOLLOWING = 2, CKEDITOR.POSITION_PRECEDING = 4, CKEDITOR.POSITION_IS_CONTAINED = 8, CKEDITOR.POSITION_CONTAINS = 16, CKEDITOR.tools.extend(CKEDITOR.dom.node.prototype, { appendTo: function (c, h) {
          c.append(this, h);return c;
        }, clone: function (c, h) {
          function g(a) {
            a["data-cke-expando"] && (a["data-cke-expando"] = !1);if (a.nodeType == CKEDITOR.NODE_ELEMENT || a.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT) if (h || a.nodeType != CKEDITOR.NODE_ELEMENT || a.removeAttribute("id", !1), c) {
              a = a.childNodes;for (var e = 0; e < a.length; e++) g(a[e]);
            }
          }function a(e) {
            if (e.type == CKEDITOR.NODE_ELEMENT || e.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
              if (e.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
                var g = e.getName();":" == g[0] && e.renameNode(g.substring(1));
              }if (c) for (g = 0; g < e.getChildCount(); g++) a(e.getChild(g));
            }
          }var e = this.$.cloneNode(c);g(e);e = new CKEDITOR.dom.node(e);CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (this.type == CKEDITOR.NODE_ELEMENT || this.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT) && a(e);return e;
        }, hasPrevious: function () {
          return !!this.$.previousSibling;
        }, hasNext: function () {
          return !!this.$.nextSibling;
        }, insertAfter: function (c) {
          c.$.parentNode.insertBefore(this.$, c.$.nextSibling);return c;
        }, insertBefore: function (c) {
          c.$.parentNode.insertBefore(this.$, c.$);return c;
        }, insertBeforeMe: function (c) {
          this.$.parentNode.insertBefore(c.$, this.$);return c;
        }, getAddress: function (c) {
          for (var h = [], g = this.getDocument().$.documentElement, a = this; a && a != g;) {
            var e = a.getParent();e && h.unshift(this.getIndex.call(a, c));a = e;
          }return h;
        }, getDocument: function () {
          return new CKEDITOR.dom.document(this.$.ownerDocument || this.$.parentNode.ownerDocument);
        }, getIndex: function (c) {
          function h(a, e) {
            var c = e ? a.getNext() : a.getPrevious();return c && c.type == CKEDITOR.NODE_TEXT ? c.isEmpty() ? h(c, e) : c : null;
          }var g = this,
              a = -1,
              e;if (!this.getParent() || c && g.type == CKEDITOR.NODE_TEXT && g.isEmpty() && !h(g) && !h(g, !0)) return -1;do if (!c || g.equals(this) || g.type != CKEDITOR.NODE_TEXT || !e && !g.isEmpty()) a++, e = g.type == CKEDITOR.NODE_TEXT; while (g = g.getPrevious());return a;
        }, getNextSourceNode: function (c, h, g) {
          if (g && !g.call) {
            var a = g;g = function (e) {
              return !e.equals(a);
            };
          }c = !c && this.getFirst && this.getFirst();var e;if (!c) {
            if (this.type == CKEDITOR.NODE_ELEMENT && g && !1 === g(this, !0)) return null;c = this.getNext();
          }for (; !c && (e = (e || this).getParent());) {
            if (g && !1 === g(e, !0)) return null;c = e.getNext();
          }return !c || g && !1 === g(c) ? null : h && h != c.type ? c.getNextSourceNode(!1, h, g) : c;
        }, getPreviousSourceNode: function (c, h, g) {
          if (g && !g.call) {
            var a = g;g = function (e) {
              return !e.equals(a);
            };
          }c = !c && this.getLast && this.getLast();var e;if (!c) {
            if (this.type == CKEDITOR.NODE_ELEMENT && g && !1 === g(this, !0)) return null;c = this.getPrevious();
          }for (; !c && (e = (e || this).getParent());) {
            if (g && !1 === g(e, !0)) return null;c = e.getPrevious();
          }return !c || g && !1 === g(c) ? null : h && c.type != h ? c.getPreviousSourceNode(!1, h, g) : c;
        }, getPrevious: function (c) {
          var h = this.$,
              g;do g = (h = h.previousSibling) && 10 != h.nodeType && new CKEDITOR.dom.node(h); while (g && c && !c(g));return g;
        }, getNext: function (c) {
          var h = this.$,
              g;do g = (h = h.nextSibling) && new CKEDITOR.dom.node(h); while (g && c && !c(g));return g;
        }, getParent: function (c) {
          var h = this.$.parentNode;return h && (h.nodeType == CKEDITOR.NODE_ELEMENT || c && h.nodeType == CKEDITOR.NODE_DOCUMENT_FRAGMENT) ? new CKEDITOR.dom.node(h) : null;
        }, getParents: function (c) {
          var h = this,
              g = [];do g[c ? "push" : "unshift"](h); while (h = h.getParent());return g;
        }, getCommonAncestor: function (c) {
          if (c.equals(this)) return this;if (c.contains && c.contains(this)) return c;var h = this.contains ? this : this.getParent();
          do if (h.contains(c)) return h; while (h = h.getParent());return null;
        }, getPosition: function (c) {
          var h = this.$,
              g = c.$;if (h.compareDocumentPosition) return h.compareDocumentPosition(g);if (h == g) return CKEDITOR.POSITION_IDENTICAL;if (this.type == CKEDITOR.NODE_ELEMENT && c.type == CKEDITOR.NODE_ELEMENT) {
            if (h.contains) {
              if (h.contains(g)) return CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING;if (g.contains(h)) return CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING;
            }if ("sourceIndex" in h) return 0 > h.sourceIndex || 0 > g.sourceIndex ? CKEDITOR.POSITION_DISCONNECTED : h.sourceIndex < g.sourceIndex ? CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_FOLLOWING;
          }h = this.getAddress();c = c.getAddress();for (var g = Math.min(h.length, c.length), a = 0; a < g; a++) if (h[a] != c[a]) return h[a] < c[a] ? CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_FOLLOWING;return h.length < c.length ? CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING : CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING;
        }, getAscendant: function (c, h) {
          var g = this.$,
              a,
              e;h || (g = g.parentNode);
          "function" == typeof c ? (e = !0, a = c) : (e = !1, a = function (a) {
            a = "string" == typeof a.nodeName ? a.nodeName.toLowerCase() : "";return "string" == typeof c ? a == c : a in c;
          });for (; g;) {
            if (a(e ? new CKEDITOR.dom.node(g) : g)) return new CKEDITOR.dom.node(g);try {
              g = g.parentNode;
            } catch (k) {
              g = null;
            }
          }return null;
        }, hasAscendant: function (c, h) {
          var g = this.$;h || (g = g.parentNode);for (; g;) {
            if (g.nodeName && g.nodeName.toLowerCase() == c) return !0;g = g.parentNode;
          }return !1;
        }, move: function (c, h) {
          c.append(this.remove(), h);
        }, remove: function (c) {
          var h = this.$,
              g = h.parentNode;
          if (g) {
            if (c) for (; c = h.firstChild;) g.insertBefore(h.removeChild(c), h);g.removeChild(h);
          }return this;
        }, replace: function (c) {
          this.insertBefore(c);c.remove();
        }, trim: function () {
          this.ltrim();this.rtrim();
        }, ltrim: function () {
          for (var c; this.getFirst && (c = this.getFirst());) {
            if (c.type == CKEDITOR.NODE_TEXT) {
              var h = CKEDITOR.tools.ltrim(c.getText()),
                  g = c.getLength();if (h) h.length < g && (c.split(g - h.length), this.$.removeChild(this.$.firstChild));else {
                c.remove();continue;
              }
            }break;
          }
        }, rtrim: function () {
          for (var c; this.getLast && (c = this.getLast());) {
            if (c.type == CKEDITOR.NODE_TEXT) {
              var h = CKEDITOR.tools.rtrim(c.getText()),
                  g = c.getLength();if (h) h.length < g && (c.split(h.length), this.$.lastChild.parentNode.removeChild(this.$.lastChild));else {
                c.remove();continue;
              }
            }break;
          }CKEDITOR.env.needsBrFiller && (c = this.$.lastChild) && 1 == c.type && "br" == c.nodeName.toLowerCase() && c.parentNode.removeChild(c);
        }, isReadOnly: function (c) {
          var h = this;this.type != CKEDITOR.NODE_ELEMENT && (h = this.getParent());CKEDITOR.env.edge && h && h.is("textarea", "input") && (c = !0);if (!c && h && "undefined" != typeof h.$.isContentEditable) return !(h.$.isContentEditable || h.data("cke-editable"));for (; h;) {
            if (h.data("cke-editable")) return !1;if (h.hasAttribute("contenteditable")) return "false" == h.getAttribute("contenteditable");h = h.getParent();
          }return !0;
        } }), CKEDITOR.dom.window = function (c) {
        CKEDITOR.dom.domObject.call(this, c);
      }, CKEDITOR.dom.window.prototype = new CKEDITOR.dom.domObject(), CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype, { focus: function () {
          this.$.focus();
        }, getViewPaneSize: function () {
          var c = this.$.document,
              h = "CSS1Compat" == c.compatMode;return { width: (h ? c.documentElement.clientWidth : c.body.clientWidth) || 0, height: (h ? c.documentElement.clientHeight : c.body.clientHeight) || 0 };
        }, getScrollPosition: function () {
          var c = this.$;if ("pageXOffset" in c) return { x: c.pageXOffset || 0, y: c.pageYOffset || 0 };c = c.document;return { x: c.documentElement.scrollLeft || c.body.scrollLeft || 0, y: c.documentElement.scrollTop || c.body.scrollTop || 0 };
        }, getFrame: function () {
          var c = this.$.frameElement;return c ? new CKEDITOR.dom.element.get(c) : null;
        } }), CKEDITOR.dom.document = function (c) {
        CKEDITOR.dom.domObject.call(this, c);
      }, CKEDITOR.dom.document.prototype = new CKEDITOR.dom.domObject(), CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype, { type: CKEDITOR.NODE_DOCUMENT, appendStyleSheet: function (c) {
          c = CKEDITOR.appendTimestamp(c);if (this.$.createStyleSheet) this.$.createStyleSheet(c);else {
            var h = new CKEDITOR.dom.element("link");h.setAttributes({ rel: "stylesheet", type: "text/css", href: c });this.getHead().append(h);
          }
        }, appendStyleText: function (c) {
          if (this.$.createStyleSheet) {
            var h = this.$.createStyleSheet("");h.cssText = c;
          } else {
            var g = new CKEDITOR.dom.element("style", this);
            g.append(new CKEDITOR.dom.text(c, this));this.getHead().append(g);
          }return h || g.$.sheet;
        }, createElement: function (c, h) {
          var g = new CKEDITOR.dom.element(c, this);h && (h.attributes && g.setAttributes(h.attributes), h.styles && g.setStyles(h.styles));return g;
        }, createText: function (c) {
          return new CKEDITOR.dom.text(c, this);
        }, focus: function () {
          this.getWindow().focus();
        }, getActive: function () {
          var c;try {
            c = this.$.activeElement;
          } catch (h) {
            return null;
          }return new CKEDITOR.dom.element(c);
        }, getById: function (c) {
          return (c = this.$.getElementById(c)) ? new CKEDITOR.dom.element(c) : null;
        }, getByAddress: function (c, h) {
          for (var g = this.$.documentElement, a = 0; g && a < c.length; a++) {
            var e = c[a];if (h) for (var k = -1, l = 0; l < g.childNodes.length; l++) {
              var m = g.childNodes[l];if (!0 !== h || 3 != m.nodeType || !m.previousSibling || 3 != m.previousSibling.nodeType) if (k++, k == e) {
                g = m;break;
              }
            } else g = g.childNodes[e];
          }return g ? new CKEDITOR.dom.node(g) : null;
        }, getElementsByTag: function (c, h) {
          CKEDITOR.env.ie && 8 >= document.documentMode || !h || (c = h + ":" + c);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(c));
        },
        getHead: function () {
          var c = this.$.getElementsByTagName("head")[0];return c = c ? new CKEDITOR.dom.element(c) : this.getDocumentElement().append(new CKEDITOR.dom.element("head"), !0);
        }, getBody: function () {
          return new CKEDITOR.dom.element(this.$.body);
        }, getDocumentElement: function () {
          return new CKEDITOR.dom.element(this.$.documentElement);
        }, getWindow: function () {
          return new CKEDITOR.dom.window(this.$.parentWindow || this.$.defaultView);
        }, write: function (c) {
          this.$.open("text/html", "replace");CKEDITOR.env.ie && (c = c.replace(/(?:^\s*<!DOCTYPE[^>]*?>)|^/i, '$\x26\n\x3cscript data-cke-temp\x3d"1"\x3e(' + CKEDITOR.tools.fixDomain + ")();\x3c/script\x3e"));this.$.write(c);this.$.close();
        }, find: function (c) {
          return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(c));
        }, findOne: function (c) {
          return (c = this.$.querySelector(c)) ? new CKEDITOR.dom.element(c) : null;
        }, _getHtml5ShivFrag: function () {
          var c = this.getCustomData("html5ShivFrag");c || (c = this.$.createDocumentFragment(), CKEDITOR.tools.enableHtml5Elements(c, !0), this.setCustomData("html5ShivFrag", c));return c;
        } }), CKEDITOR.dom.nodeList = function (c) {
        this.$ = c;
      }, CKEDITOR.dom.nodeList.prototype = { count: function () {
          return this.$.length;
        }, getItem: function (c) {
          return 0 > c || c >= this.$.length ? null : (c = this.$[c]) ? new CKEDITOR.dom.node(c) : null;
        }, toArray: function () {
          return CKEDITOR.tools.array.map(this.$, function (c) {
            return new CKEDITOR.dom.node(c);
          });
        } }, CKEDITOR.dom.element = function (c, h) {
        "string" == typeof c && (c = (h ? h.$ : document).createElement(c));CKEDITOR.dom.domObject.call(this, c);
      }, CKEDITOR.dom.element.get = function (c) {
        return (c = "string" == typeof c ? document.getElementById(c) || document.getElementsByName(c)[0] : c) && (c.$ ? c : new CKEDITOR.dom.element(c));
      }, CKEDITOR.dom.element.prototype = new CKEDITOR.dom.node(), CKEDITOR.dom.element.createFromHtml = function (c, h) {
        var g = new CKEDITOR.dom.element("div", h);g.setHtml(c);return g.getFirst().remove();
      }, CKEDITOR.dom.element.setMarker = function (c, h, g, a) {
        var e = h.getCustomData("list_marker_id") || h.setCustomData("list_marker_id", CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),
            k = h.getCustomData("list_marker_names") || h.setCustomData("list_marker_names", {}).getCustomData("list_marker_names");c[e] = h;k[g] = 1;return h.setCustomData(g, a);
      }, CKEDITOR.dom.element.clearAllMarkers = function (c) {
        for (var h in c) CKEDITOR.dom.element.clearMarkers(c, c[h], 1);
      }, CKEDITOR.dom.element.clearMarkers = function (c, h, g) {
        var a = h.getCustomData("list_marker_names"),
            e = h.getCustomData("list_marker_id"),
            k;for (k in a) h.removeCustomData(k);h.removeCustomData("list_marker_names");g && (h.removeCustomData("list_marker_id"), delete c[e]);
      }, function () {
        function c(a, b) {
          return -1 < (" " + a + " ").replace(k, " ").indexOf(" " + b + " ");
        }function h(a) {
          var b = !0;a.$.id || (a.$.id = "cke_tmp_" + CKEDITOR.tools.getNextNumber(), b = !1);return function () {
            b || a.removeAttribute("id");
          };
        }function g(a, b) {
          var d = CKEDITOR.tools.escapeCss(a.$.id);return "#" + d + " " + b.split(/,\s*/).join(", #" + d + " ");
        }function a(a) {
          for (var b = 0, d = 0, f = l[a].length; d < f; d++) b += parseFloat(this.getComputedStyle(l[a][d]) || 0, 10) || 0;return b;
        }var e = document.createElement("_").classList,
            e = "undefined" !== typeof e && null !== String(e.add).match(/\[Native code\]/gi),
            k = /[\n\t\r]/g;
        CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype, { type: CKEDITOR.NODE_ELEMENT, addClass: e ? function (a) {
            this.$.classList.add(a);return this;
          } : function (a) {
            var b = this.$.className;b && (c(b, a) || (b += " " + a));this.$.className = b || a;return this;
          }, removeClass: e ? function (a) {
            var b = this.$;b.classList.remove(a);b.className || b.removeAttribute("class");return this;
          } : function (a) {
            var b = this.getAttribute("class");b && c(b, a) && ((b = b.replace(new RegExp("(?:^|\\s+)" + a + "(?\x3d\\s|$)"), "").replace(/^\s+/, "")) ? this.setAttribute("class", b) : this.removeAttribute("class"));return this;
          }, hasClass: function (a) {
            return c(this.$.className, a);
          }, append: function (a, b) {
            "string" == typeof a && (a = this.getDocument().createElement(a));b ? this.$.insertBefore(a.$, this.$.firstChild) : this.$.appendChild(a.$);return a;
          }, appendHtml: function (a) {
            if (this.$.childNodes.length) {
              var b = new CKEDITOR.dom.element("div", this.getDocument());b.setHtml(a);b.moveChildren(this);
            } else this.setHtml(a);
          }, appendText: function (a) {
            null != this.$.text && CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? this.$.text += a : this.append(new CKEDITOR.dom.text(a));
          }, appendBogus: function (a) {
            if (a || CKEDITOR.env.needsBrFiller) {
              for (a = this.getLast(); a && a.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.rtrim(a.getText());) a = a.getPrevious();a && a.is && a.is("br") || (a = this.getDocument().createElement("br"), CKEDITOR.env.gecko && a.setAttribute("type", "_moz"), this.append(a));
            }
          }, breakParent: function (a, b) {
            var d = new CKEDITOR.dom.range(this.getDocument());d.setStartAfter(this);d.setEndAfter(a);var f = d.extractContents(!1, b || !1),
                e;d.insertNode(this.remove());
            if (CKEDITOR.env.ie && !CKEDITOR.env.edge) {
              for (d = new CKEDITOR.dom.element("div"); e = f.getFirst();) e.$.style.backgroundColor && (e.$.style.backgroundColor = e.$.style.backgroundColor), d.append(e);d.insertAfter(this);d.remove(!0);
            } else f.insertAfterNode(this);
          }, contains: document.compareDocumentPosition ? function (a) {
            return !!(this.$.compareDocumentPosition(a.$) & 16);
          } : function (a) {
            var b = this.$;return a.type != CKEDITOR.NODE_ELEMENT ? b.contains(a.getParent().$) : b != a.$ && b.contains(a.$);
          }, focus: function () {
            function a() {
              try {
                this.$.focus();
              } catch (b) {}
            }
            return function (b) {
              b ? CKEDITOR.tools.setTimeout(a, 100, this) : a.call(this);
            };
          }(), getHtml: function () {
            var a = this.$.innerHTML;return CKEDITOR.env.ie ? a.replace(/<\?[^>]*>/g, "") : a;
          }, getOuterHtml: function () {
            if (this.$.outerHTML) return this.$.outerHTML.replace(/<\?[^>]*>/, "");var a = this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(!0));return a.innerHTML;
          }, getClientRect: function (a) {
            var b = CKEDITOR.tools.extend({}, this.$.getBoundingClientRect());!b.width && (b.width = b.right - b.left);!b.height && (b.height = b.bottom - b.top);return a ? CKEDITOR.tools.getAbsoluteRectPosition(this.getWindow(), b) : b;
          }, setHtml: CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? function (a) {
            try {
              var b = this.$;if (this.getParent()) return b.innerHTML = a;var d = this.getDocument()._getHtml5ShivFrag();d.appendChild(b);b.innerHTML = a;d.removeChild(b);return a;
            } catch (f) {
              this.$.innerHTML = "";b = new CKEDITOR.dom.element("body", this.getDocument());b.$.innerHTML = a;for (b = b.getChildren(); b.count();) this.append(b.getItem(0));return a;
            }
          } : function (a) {
            return this.$.innerHTML = a;
          }, setText: function () {
            var a = document.createElement("p");a.innerHTML = "x";a = a.textContent;return function (b) {
              this.$[a ? "textContent" : "innerText"] = b;
            };
          }(), getAttribute: function () {
            return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function (b) {
              switch (b) {case "class":
                  b = "className";break;case "http-equiv":
                  b = "httpEquiv";break;case "name":
                  return this.$.name;case "tabindex":
                  return b = this.$.getAttribute(b, 2), 0 !== b && 0 === this.$.tabIndex && (b = null), b;case "checked":
                  return b = this.$.attributes.getNamedItem(b), (b.specified ? b.nodeValue : this.$.checked) ? "checked" : null;case "hspace":case "value":
                  return this.$[b];case "style":
                  return this.$.style.cssText;case "contenteditable":case "contentEditable":
                  return this.$.attributes.getNamedItem("contentEditable").specified ? this.$.getAttribute("contentEditable") : null;}return this.$.getAttribute(b, 2);
            } : function (b) {
              return this.$.getAttribute(b, 2);
            };
          }(), getAttributes: function (a) {
            var b = {},
                d = this.$.attributes,
                f;a = CKEDITOR.tools.isArray(a) ? a : [];for (f = 0; f < d.length; f++) -1 === CKEDITOR.tools.indexOf(a, d[f].name) && (b[d[f].name] = d[f].value);return b;
          }, getChildren: function () {
            return new CKEDITOR.dom.nodeList(this.$.childNodes);
          }, getClientSize: function () {
            return { width: this.$.clientWidth, height: this.$.clientHeight };
          }, getComputedStyle: document.defaultView && document.defaultView.getComputedStyle ? function (a) {
            var b = this.getWindow().$.getComputedStyle(this.$, null);return b ? b.getPropertyValue(a) : "";
          } : function (a) {
            return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)];
          }, getDtd: function () {
            var a = CKEDITOR.dtd[this.getName()];this.getDtd = function () {
              return a;
            };return a;
          }, getElementsByTag: CKEDITOR.dom.document.prototype.getElementsByTag, getTabIndex: function () {
            var a = this.$.tabIndex;return 0 !== a || CKEDITOR.dtd.$tabIndex[this.getName()] || 0 === parseInt(this.getAttribute("tabindex"), 10) ? a : -1;
          }, getText: function () {
            return this.$.textContent || this.$.innerText || "";
          }, getWindow: function () {
            return this.getDocument().getWindow();
          }, getId: function () {
            return this.$.id || null;
          }, getNameAtt: function () {
            return this.$.name || null;
          }, getName: function () {
            var a = this.$.nodeName.toLowerCase();if (CKEDITOR.env.ie && 8 >= document.documentMode) {
              var b = this.$.scopeName;"HTML" != b && (a = b.toLowerCase() + ":" + a);
            }this.getName = function () {
              return a;
            };return this.getName();
          }, getValue: function () {
            return this.$.value;
          }, getFirst: function (a) {
            var b = this.$.firstChild;(b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getNext(a));return b;
          }, getLast: function (a) {
            var b = this.$.lastChild;(b = b && new CKEDITOR.dom.node(b)) && a && !a(b) && (b = b.getPrevious(a));return b;
          }, getStyle: function (a) {
            return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)];
          },
          is: function () {
            var a = this.getName();if ("object" == typeof arguments[0]) return !!arguments[0][a];for (var b = 0; b < arguments.length; b++) if (arguments[b] == a) return !0;return !1;
          }, isEditable: function (a) {
            var b = this.getName();return this.isReadOnly() || "none" == this.getComputedStyle("display") || "hidden" == this.getComputedStyle("visibility") || CKEDITOR.dtd.$nonEditable[b] || CKEDITOR.dtd.$empty[b] || this.is("a") && (this.data("cke-saved-name") || this.hasAttribute("name")) && !this.getChildCount() ? !1 : !1 !== a ? (a = CKEDITOR.dtd[b] || CKEDITOR.dtd.span, !(!a || !a["#"])) : !0;
          }, isIdentical: function (a) {
            var b = this.clone(0, 1);a = a.clone(0, 1);b.removeAttributes(["_moz_dirty", "data-cke-expando", "data-cke-saved-href", "data-cke-saved-name"]);a.removeAttributes(["_moz_dirty", "data-cke-expando", "data-cke-saved-href", "data-cke-saved-name"]);if (b.$.isEqualNode) return b.$.style.cssText = CKEDITOR.tools.normalizeCssText(b.$.style.cssText), a.$.style.cssText = CKEDITOR.tools.normalizeCssText(a.$.style.cssText), b.$.isEqualNode(a.$);b = b.getOuterHtml();a = a.getOuterHtml();if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version && this.is("a")) {
              var d = this.getParent();d.type == CKEDITOR.NODE_ELEMENT && (d = d.clone(), d.setHtml(b), b = d.getHtml(), d.setHtml(a), a = d.getHtml());
            }return b == a;
          }, isVisible: function () {
            var a = (this.$.offsetHeight || this.$.offsetWidth) && "hidden" != this.getComputedStyle("visibility"),
                b,
                d;a && CKEDITOR.env.webkit && (b = this.getWindow(), !b.equals(CKEDITOR.document.getWindow()) && (d = b.$.frameElement) && (a = new CKEDITOR.dom.element(d).isVisible()));return !!a;
          }, isEmptyInlineRemoveable: function () {
            if (!CKEDITOR.dtd.$removeEmpty[this.getName()]) return !1;
            for (var a = this.getChildren(), b = 0, d = a.count(); b < d; b++) {
              var f = a.getItem(b);if (f.type != CKEDITOR.NODE_ELEMENT || !f.data("cke-bookmark")) if (f.type == CKEDITOR.NODE_ELEMENT && !f.isEmptyInlineRemoveable() || f.type == CKEDITOR.NODE_TEXT && CKEDITOR.tools.trim(f.getText())) return !1;
            }return !0;
          }, hasAttributes: CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function () {
            for (var a = this.$.attributes, b = 0; b < a.length; b++) {
              var d = a[b];switch (d.nodeName) {case "class":
                  if (this.getAttribute("class")) return !0;case "data-cke-expando":
                  continue;
                default:
                  if (d.specified) return !0;}
            }return !1;
          } : function () {
            var a = this.$.attributes,
                b = a.length,
                d = { "data-cke-expando": 1, _moz_dirty: 1 };return 0 < b && (2 < b || !d[a[0].nodeName] || 2 == b && !d[a[1].nodeName]);
          }, hasAttribute: function () {
            function a(b) {
              var d = this.$.attributes.getNamedItem(b);if ("input" == this.getName()) switch (b) {case "class":
                  return 0 < this.$.className.length;case "checked":
                  return !!this.$.checked;case "value":
                  return b = this.getAttribute("type"), "checkbox" == b || "radio" == b ? "on" != this.$.value : !!this.$.value;}return d ? d.specified : !1;
            }return CKEDITOR.env.ie ? 8 > CKEDITOR.env.version ? function (b) {
              return "name" == b ? !!this.$.name : a.call(this, b);
            } : a : function (a) {
              return !!this.$.attributes.getNamedItem(a);
            };
          }(), hide: function () {
            this.setStyle("display", "none");
          }, moveChildren: function (a, b) {
            var d = this.$;a = a.$;if (d != a) {
              var f;if (b) for (; f = d.lastChild;) a.insertBefore(d.removeChild(f), a.firstChild);else for (; f = d.firstChild;) a.appendChild(d.removeChild(f));
            }
          }, mergeSiblings: function () {
            function a(b, d, f) {
              if (d && d.type == CKEDITOR.NODE_ELEMENT) {
                for (var e = []; d.data("cke-bookmark") || d.isEmptyInlineRemoveable();) if (e.push(d), d = f ? d.getNext() : d.getPrevious(), !d || d.type != CKEDITOR.NODE_ELEMENT) return;if (b.isIdentical(d)) {
                  for (var c = f ? b.getLast() : b.getFirst(); e.length;) e.shift().move(b, !f);d.moveChildren(b, !f);d.remove();c && c.type == CKEDITOR.NODE_ELEMENT && c.mergeSiblings();
                }
              }
            }return function (b) {
              if (!1 === b || CKEDITOR.dtd.$removeEmpty[this.getName()] || this.is("a")) a(this, this.getNext(), !0), a(this, this.getPrevious());
            };
          }(), show: function () {
            this.setStyles({ display: "",
              visibility: "" });
          }, setAttribute: function () {
            var a = function (a, d) {
              this.$.setAttribute(a, d);return this;
            };return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function (b, d) {
              "class" == b ? this.$.className = d : "style" == b ? this.$.style.cssText = d : "tabindex" == b ? this.$.tabIndex = d : "checked" == b ? this.$.checked = d : "contenteditable" == b ? a.call(this, "contentEditable", d) : a.apply(this, arguments);return this;
            } : CKEDITOR.env.ie8Compat && CKEDITOR.env.secure ? function (b, d) {
              if ("src" == b && d.match(/^http:\/\//)) try {
                a.apply(this, arguments);
              } catch (f) {} else a.apply(this, arguments);return this;
            } : a;
          }(), setAttributes: function (a) {
            for (var b in a) this.setAttribute(b, a[b]);return this;
          }, setValue: function (a) {
            this.$.value = a;return this;
          }, removeAttribute: function () {
            return CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) ? function (a) {
              "class" == a ? a = "className" : "tabindex" == a ? a = "tabIndex" : "contenteditable" == a && (a = "contentEditable");this.$.removeAttribute(a);
            } : function (a) {
              this.$.removeAttribute(a);
            };
          }(), removeAttributes: function (a) {
            if (CKEDITOR.tools.isArray(a)) for (var b = 0; b < a.length; b++) this.removeAttribute(a[b]);else for (b in a = a || this.getAttributes(), a) a.hasOwnProperty(b) && this.removeAttribute(b);
          }, removeStyle: function (a) {
            var b = this.$.style;if (b.removeProperty || "border" != a && "margin" != a && "padding" != a) b.removeProperty ? b.removeProperty(a) : b.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a)), this.$.style.cssText || this.removeAttribute("style");else {
              var d = ["top", "left", "right", "bottom"],
                  f;"border" == a && (f = ["color", "style", "width"]);for (var b = [], e = 0; e < d.length; e++) if (f) for (var c = 0; c < f.length; c++) b.push([a, d[e], f[c]].join("-"));else b.push([a, d[e]].join("-"));for (a = 0; a < b.length; a++) this.removeStyle(b[a]);
            }
          }, setStyle: function (a, b) {
            this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)] = b;return this;
          }, setStyles: function (a) {
            for (var b in a) this.setStyle(b, a[b]);return this;
          }, setOpacity: function (a) {
            CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? (a = Math.round(100 * a), this.setStyle("filter", 100 <= a ? "" : "progid:DXImageTransform.Microsoft.Alpha(opacity\x3d" + a + ")")) : this.setStyle("opacity", a);
          }, unselectable: function () {
            this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", "none"));if (CKEDITOR.env.ie) {
              this.setAttribute("unselectable", "on");for (var a, b = this.getElementsByTag("*"), d = 0, f = b.count(); d < f; d++) a = b.getItem(d), a.setAttribute("unselectable", "on");
            }
          }, getPositionedAncestor: function () {
            for (var a = this; "html" != a.getName();) {
              if ("static" != a.getComputedStyle("position")) return a;a = a.getParent();
            }return null;
          }, getDocumentPosition: function (a) {
            var b = 0,
                d = 0,
                f = this.getDocument(),
                e = f.getBody(),
                c = "BackCompat" == f.$.compatMode;if (document.documentElement.getBoundingClientRect && (CKEDITOR.env.ie ? 8 !== CKEDITOR.env.version : 1)) {
              var g = this.$.getBoundingClientRect(),
                  k = f.$.documentElement,
                  l = k.clientTop || e.$.clientTop || 0,
                  v = k.clientLeft || e.$.clientLeft || 0,
                  h = !0;CKEDITOR.env.ie && (h = f.getDocumentElement().contains(this), f = f.getBody().contains(this), h = c && f || !c && h);h && (CKEDITOR.env.webkit || CKEDITOR.env.ie && 12 <= CKEDITOR.env.version ? (b = e.$.scrollLeft || k.scrollLeft, d = e.$.scrollTop || k.scrollTop) : (d = c ? e.$ : k, b = d.scrollLeft, d = d.scrollTop), b = g.left + b - v, d = g.top + d - l);
            } else for (l = this, v = null; l && "body" != l.getName() && "html" != l.getName();) {
              b += l.$.offsetLeft - l.$.scrollLeft;d += l.$.offsetTop - l.$.scrollTop;l.equals(this) || (b += l.$.clientLeft || 0, d += l.$.clientTop || 0);for (; v && !v.equals(l);) b -= v.$.scrollLeft, d -= v.$.scrollTop, v = v.getParent();v = l;l = (g = l.$.offsetParent) ? new CKEDITOR.dom.element(g) : null;
            }a && (g = this.getWindow(), l = a.getWindow(), !g.equals(l) && g.$.frameElement && (a = new CKEDITOR.dom.element(g.$.frameElement).getDocumentPosition(a), b += a.x, d += a.y));document.documentElement.getBoundingClientRect || !CKEDITOR.env.gecko || c || (b += this.$.clientLeft ? 1 : 0, d += this.$.clientTop ? 1 : 0);return { x: b, y: d };
          }, scrollIntoView: function (a) {
            var b = this.getParent();if (b) {
              do if ((b.$.clientWidth && b.$.clientWidth < b.$.scrollWidth || b.$.clientHeight && b.$.clientHeight < b.$.scrollHeight) && !b.is("body") && this.scrollIntoParent(b, a, 1), b.is("html")) {
                var d = b.getWindow();try {
                  var f = d.$.frameElement;f && (b = new CKEDITOR.dom.element(f));
                } catch (e) {}
              } while (b = b.getParent());
            }
          }, scrollIntoParent: function (a, b, d) {
            var f, e, c, g;function k(f, b) {
              /body|html/.test(a.getName()) ? a.getWindow().$.scrollBy(f, b) : (a.$.scrollLeft += f, a.$.scrollTop += b);
            }function l(f, a) {
              var b = { x: 0, y: 0 };if (!f.is(h ? "body" : "html")) {
                var d = f.$.getBoundingClientRect();b.x = d.left;b.y = d.top;
              }d = f.getWindow();d.equals(a) || (d = l(CKEDITOR.dom.element.get(d.$.frameElement), a), b.x += d.x, b.y += d.y);return b;
            }function v(f, a) {
              return parseInt(f.getComputedStyle("margin-" + a) || 0, 10) || 0;
            }!a && (a = this.getWindow());c = a.getDocument();var h = "BackCompat" == c.$.compatMode;a instanceof CKEDITOR.dom.window && (a = h ? c.getBody() : c.getDocumentElement());
            CKEDITOR.env.webkit && (c = this.getEditor(!1)) && (c._.previousScrollTop = null);c = a.getWindow();e = l(this, c);var n = l(a, c),
                x = this.$.offsetHeight;f = this.$.offsetWidth;var q = a.$.clientHeight,
                u = a.$.clientWidth;c = e.x - v(this, "left") - n.x || 0;g = e.y - v(this, "top") - n.y || 0;f = e.x + f + v(this, "right") - (n.x + u) || 0;e = e.y + x + v(this, "bottom") - (n.y + q) || 0;(0 > g || 0 < e) && k(0, !0 === b ? g : !1 === b ? e : 0 > g ? g : e);d && (0 > c || 0 < f) && k(0 > c ? c : f, 0);
          }, setState: function (a, b, d) {
            b = b || "cke";switch (a) {case CKEDITOR.TRISTATE_ON:
                this.addClass(b + "_on");this.removeClass(b + "_off");this.removeClass(b + "_disabled");d && this.setAttribute("aria-pressed", !0);d && this.removeAttribute("aria-disabled");break;case CKEDITOR.TRISTATE_DISABLED:
                this.addClass(b + "_disabled");this.removeClass(b + "_off");this.removeClass(b + "_on");d && this.setAttribute("aria-disabled", !0);d && this.removeAttribute("aria-pressed");break;default:
                this.addClass(b + "_off"), this.removeClass(b + "_on"), this.removeClass(b + "_disabled"), d && this.removeAttribute("aria-pressed"), d && this.removeAttribute("aria-disabled");}
          },
          getFrameDocument: function () {
            var a = this.$;try {
              a.contentWindow.document;
            } catch (b) {
              a.src = a.src;
            }return a && new CKEDITOR.dom.document(a.contentWindow.document);
          }, copyAttributes: function (a, b) {
            var d = this.$.attributes;b = b || {};for (var f = 0; f < d.length; f++) {
              var e = d[f],
                  c = e.nodeName.toLowerCase(),
                  g;if (!(c in b)) if ("checked" == c && (g = this.getAttribute(c))) a.setAttribute(c, g);else if (!CKEDITOR.env.ie || this.hasAttribute(c)) g = this.getAttribute(c), null === g && (g = e.nodeValue), a.setAttribute(c, g);
            }"" !== this.$.style.cssText && (a.$.style.cssText = this.$.style.cssText);
          }, renameNode: function (a) {
            if (this.getName() != a) {
              var b = this.getDocument();a = new CKEDITOR.dom.element(a, b);this.copyAttributes(a);this.moveChildren(a);this.getParent(!0) && this.$.parentNode.replaceChild(a.$, this.$);a.$["data-cke-expando"] = this.$["data-cke-expando"];this.$ = a.$;delete this.getName;
            }
          }, getChild: function () {
            function a(b, d) {
              var f = b.childNodes;if (0 <= d && d < f.length) return f[d];
            }return function (b) {
              var d = this.$;if (b.slice) for (b = b.slice(); 0 < b.length && d;) d = a(d, b.shift());else d = a(d, b);return d ? new CKEDITOR.dom.node(d) : null;
            };
          }(), getChildCount: function () {
            return this.$.childNodes.length;
          }, disableContextMenu: function () {
            function a(b) {
              return b.type == CKEDITOR.NODE_ELEMENT && b.hasClass("cke_enable_context_menu");
            }this.on("contextmenu", function (b) {
              b.data.getTarget().getAscendant(a, !0) || b.data.preventDefault();
            });
          }, getDirection: function (a) {
            return a ? this.getComputedStyle("direction") || this.getDirection() || this.getParent() && this.getParent().getDirection(1) || this.getDocument().$.dir || "ltr" : this.getStyle("direction") || this.getAttribute("dir");
          }, data: function (a, b) {
            a = "data-" + a;if (void 0 === b) return this.getAttribute(a);!1 === b ? this.removeAttribute(a) : this.setAttribute(a, b);return null;
          }, getEditor: function (a) {
            var b = CKEDITOR.instances,
                d,
                f,
                e;a = a || void 0 === a;for (d in b) if (f = b[d], f.element.equals(this) && f.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO || !a && (e = f.editable()) && (e.equals(this) || e.contains(this))) return f;return null;
          }, find: function (a) {
            var b = h(this);a = new CKEDITOR.dom.nodeList(this.$.querySelectorAll(g(this, a)));b();return a;
          }, findOne: function (a) {
            var b = h(this);a = this.$.querySelector(g(this, a));b();return a ? new CKEDITOR.dom.element(a) : null;
          }, forEach: function (a, b, d) {
            if (!(d || b && this.type != b)) var f = a(this);if (!1 !== f) {
              d = this.getChildren();for (var e = 0; e < d.count(); e++) f = d.getItem(e), f.type == CKEDITOR.NODE_ELEMENT ? f.forEach(a, b) : b && f.type != b || a(f);
            }
          }, fireEventHandler: function (a, b) {
            var d = "on" + a,
                f = this.$;if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) {
              var e = f.ownerDocument.createEventObject(),
                  c;for (c in b) e[c] = b[c];f.fireEvent(d, e);
            } else f[f[a] ? a : d](b);
          }, isDetached: function () {
            var a = this.getDocument(),
                b = a.getDocumentElement();return b.equals(this) || b.contains(this) ? !CKEDITOR.env.ie || 8 < CKEDITOR.env.version && !CKEDITOR.env.quirks ? !a.$.defaultView : !1 : !0;
          } });var l = { width: ["border-left-width", "border-right-width", "padding-left", "padding-right"], height: ["border-top-width", "border-bottom-width", "padding-top", "padding-bottom"] };CKEDITOR.dom.element.prototype.setSize = function (e, b, d) {
          "number" == typeof b && (!d || CKEDITOR.env.ie && CKEDITOR.env.quirks || (b -= a.call(this, e)), this.setStyle(e, b + "px"));
        };CKEDITOR.dom.element.prototype.getSize = function (e, b) {
          var d = Math.max(this.$["offset" + CKEDITOR.tools.capitalize(e)], this.$["client" + CKEDITOR.tools.capitalize(e)]) || 0;b && (d -= a.call(this, e));return d;
        };
      }(), CKEDITOR.dom.documentFragment = function (c) {
        c = c || CKEDITOR.document;this.$ = c.type == CKEDITOR.NODE_DOCUMENT ? c.$.createDocumentFragment() : c;
      }, CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype, CKEDITOR.dom.element.prototype, { type: CKEDITOR.NODE_DOCUMENT_FRAGMENT,
        insertAfterNode: function (c) {
          c = c.$;c.parentNode.insertBefore(this.$, c.nextSibling);
        }, getHtml: function () {
          var c = new CKEDITOR.dom.element("div");this.clone(1, 1).appendTo(c);return c.getHtml().replace(/\s*data-cke-expando=".*?"/g, "");
        } }, !0, { append: 1, appendBogus: 1, clone: 1, getFirst: 1, getHtml: 1, getLast: 1, getParent: 1, getNext: 1, getPrevious: 1, appendTo: 1, moveChildren: 1, insertBefore: 1, insertAfterNode: 1, replace: 1, trim: 1, type: 1, ltrim: 1, rtrim: 1, getDocument: 1, getChildCount: 1, getChild: 1, getChildren: 1 }), CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype, CKEDITOR.dom.document.prototype, !0, { find: 1, findOne: 1 }), function () {
        function c(a, f) {
          var b = this.range;if (this._.end) return null;if (!this._.start) {
            this._.start = 1;if (b.collapsed) return this.end(), null;b.optimize();
          }var d,
              e = b.startContainer;d = b.endContainer;var c = b.startOffset,
              g = b.endOffset,
              p,
              k = this.guard,
              l = this.type,
              h = a ? "getPreviousSourceNode" : "getNextSourceNode";if (!a && !this._.guardLTR) {
            var m = d.type == CKEDITOR.NODE_ELEMENT ? d : d.getParent(),
                C = d.type == CKEDITOR.NODE_ELEMENT ? d.getChild(g) : d.getNext();this._.guardLTR = function (a, f) {
              return (!f || !m.equals(a)) && (!C || !a.equals(C)) && (a.type != CKEDITOR.NODE_ELEMENT || !f || !a.equals(b.root));
            };
          }if (a && !this._.guardRTL) {
            var D = e.type == CKEDITOR.NODE_ELEMENT ? e : e.getParent(),
                E = e.type == CKEDITOR.NODE_ELEMENT ? c ? e.getChild(c - 1) : null : e.getPrevious();this._.guardRTL = function (a, f) {
              return (!f || !D.equals(a)) && (!E || !a.equals(E)) && (a.type != CKEDITOR.NODE_ELEMENT || !f || !a.equals(b.root));
            };
          }var G = a ? this._.guardRTL : this._.guardLTR;p = k ? function (a, f) {
            return !1 === G(a, f) ? !1 : k(a, f);
          } : G;this.current ? d = this.current[h](!1, l, p) : (a ? d.type == CKEDITOR.NODE_ELEMENT && (d = 0 < g ? d.getChild(g - 1) : !1 === p(d, !0) ? null : d.getPreviousSourceNode(!0, l, p)) : (d = e, d.type == CKEDITOR.NODE_ELEMENT && ((d = d.getChild(c)) || (d = !1 === p(e, !0) ? null : e.getNextSourceNode(!0, l, p)))), d && !1 === p(d) && (d = null));for (; d && !this._.end;) {
            this.current = d;if (!this.evaluator || !1 !== this.evaluator(d)) {
              if (!f) return d;
            } else if (f && this.evaluator) return !1;d = d[h](!1, l, p);
          }this.end();return this.current = null;
        }function h(a) {
          for (var f, b = null; f = c.call(this, a);) b = f;return b;
        }CKEDITOR.dom.walker = CKEDITOR.tools.createClass({ $: function (a) {
            this.range = a;this._ = {};
          }, proto: { end: function () {
              this._.end = 1;
            }, next: function () {
              return c.call(this);
            }, previous: function () {
              return c.call(this, 1);
            }, checkForward: function () {
              return !1 !== c.call(this, 0, 1);
            }, checkBackward: function () {
              return !1 !== c.call(this, 1, 1);
            }, lastForward: function () {
              return h.call(this);
            }, lastBackward: function () {
              return h.call(this, 1);
            }, reset: function () {
              delete this.current;this._ = {};
            } } });var g = { block: 1, "list-item": 1, table: 1, "table-row-group": 1, "table-header-group": 1,
          "table-footer-group": 1, "table-row": 1, "table-column-group": 1, "table-column": 1, "table-cell": 1, "table-caption": 1 },
            a = { absolute: 1, fixed: 1 };CKEDITOR.dom.element.prototype.isBlockBoundary = function (f) {
          return "none" != this.getComputedStyle("float") || this.getComputedStyle("position") in a || !g[this.getComputedStyle("display")] ? !!(this.is(CKEDITOR.dtd.$block) || f && this.is(f)) : !0;
        };CKEDITOR.dom.walker.blockBoundary = function (a) {
          return function (f) {
            return !(f.type == CKEDITOR.NODE_ELEMENT && f.isBlockBoundary(a));
          };
        };CKEDITOR.dom.walker.listItemBoundary = function () {
          return this.blockBoundary({ br: 1 });
        };CKEDITOR.dom.walker.bookmark = function (a, f) {
          function b(a) {
            return a && a.getName && "span" == a.getName() && a.data("cke-bookmark");
          }return function (d) {
            var e, c;e = d && d.type != CKEDITOR.NODE_ELEMENT && (c = d.getParent()) && b(c);e = a ? e : e || b(d);return !!(f ^ e);
          };
        };CKEDITOR.dom.walker.whitespaces = function (a) {
          return function (f) {
            var b;f && f.type == CKEDITOR.NODE_TEXT && (b = !CKEDITOR.tools.trim(f.getText()) || CKEDITOR.env.webkit && f.getText() == CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE);
            return !!(a ^ b);
          };
        };CKEDITOR.dom.walker.invisible = function (a) {
          var f = CKEDITOR.dom.walker.whitespaces(),
              b = CKEDITOR.env.webkit ? 1 : 0;return function (d) {
            f(d) ? d = 1 : (d.type == CKEDITOR.NODE_TEXT && (d = d.getParent()), d = d.$.offsetWidth <= b);return !!(a ^ d);
          };
        };CKEDITOR.dom.walker.nodeType = function (a, f) {
          return function (b) {
            return !!(f ^ b.type == a);
          };
        };CKEDITOR.dom.walker.bogus = function (a) {
          function f(a) {
            return !k(a) && !l(a);
          }return function (b) {
            var d = CKEDITOR.env.needsBrFiller ? b.is && b.is("br") : b.getText && e.test(b.getText());d && (d = b.getParent(), b = b.getNext(f), d = d.isBlockBoundary() && (!b || b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary()));return !!(a ^ d);
          };
        };CKEDITOR.dom.walker.temp = function (a) {
          return function (f) {
            f.type != CKEDITOR.NODE_ELEMENT && (f = f.getParent());f = f && f.hasAttribute("data-cke-temp");return !!(a ^ f);
          };
        };var e = /^[\t\r\n ]*(?:&nbsp;|\xa0)$/,
            k = CKEDITOR.dom.walker.whitespaces(),
            l = CKEDITOR.dom.walker.bookmark(),
            m = CKEDITOR.dom.walker.temp(),
            b = function (a) {
          return l(a) || k(a) || a.type == CKEDITOR.NODE_ELEMENT && a.is(CKEDITOR.dtd.$inline) && !a.is(CKEDITOR.dtd.$empty);
        };
        CKEDITOR.dom.walker.ignored = function (a) {
          return function (f) {
            f = k(f) || l(f) || m(f);return !!(a ^ f);
          };
        };var d = CKEDITOR.dom.walker.ignored();CKEDITOR.dom.walker.empty = function (a) {
          return function (f) {
            for (var b = 0, e = f.getChildCount(); b < e; ++b) if (!d(f.getChild(b))) return !!a;return !a;
          };
        };var f = CKEDITOR.dom.walker.empty(),
            p = CKEDITOR.dom.walker.validEmptyBlockContainers = CKEDITOR.tools.extend(function (a) {
          var f = {},
              b;for (b in a) CKEDITOR.dtd[b]["#"] && (f[b] = 1);return f;
        }(CKEDITOR.dtd.$block), { caption: 1, td: 1, th: 1 });CKEDITOR.dom.walker.editable = function (a) {
          return function (b) {
            b = d(b) ? !1 : b.type == CKEDITOR.NODE_TEXT || b.type == CKEDITOR.NODE_ELEMENT && (b.is(CKEDITOR.dtd.$inline) || b.is("hr") || "false" == b.getAttribute("contenteditable") || !CKEDITOR.env.needsBrFiller && b.is(p) && f(b)) ? !0 : !1;return !!(a ^ b);
          };
        };CKEDITOR.dom.element.prototype.getBogus = function () {
          var a = this;do a = a.getPreviousSourceNode(); while (b(a));return a && (CKEDITOR.env.needsBrFiller ? a.is && a.is("br") : a.getText && e.test(a.getText())) ? a : !1;
        };
      }(), CKEDITOR.dom.range = function (c) {
        this.endOffset = this.endContainer = this.startOffset = this.startContainer = null;this.collapsed = !0;var h = c instanceof CKEDITOR.dom.document;this.document = h ? c : c.getDocument();this.root = h ? c.getBody() : c;
      }, function () {
        function c(a) {
          a.collapsed = a.startContainer && a.endContainer && a.startContainer.equals(a.endContainer) && a.startOffset == a.endOffset;
        }function h(a, b, d, e, c) {
          function g(a, f, b, d) {
            var e = b ? a.getPrevious() : a.getNext();if (d && h) return e;q || d ? f.append(a.clone(!0, c), b) : (a.remove(), m && f.append(a, b));return e;
          }function k() {
            var a,
                f,
                b,
                d = Math.min(H.length, I.length);for (a = 0; a < d; a++) if (f = H[a], b = I[a], !f.equals(b)) return a;return a - 1;
          }function l() {
            var b = P - 1,
                d = G && K && !u.equals(z);b < L - 1 || b < O - 1 || d ? (d ? a.moveToPosition(z, CKEDITOR.POSITION_BEFORE_START) : O == b + 1 && E ? a.moveToPosition(I[b], CKEDITOR.POSITION_BEFORE_END) : a.moveToPosition(I[b + 1], CKEDITOR.POSITION_BEFORE_START), e && (b = H[b + 1]) && b.type == CKEDITOR.NODE_ELEMENT && (d = CKEDITOR.dom.element.createFromHtml('\x3cspan data-cke-bookmark\x3d"1" style\x3d"display:none"\x3e\x26nbsp;\x3c/span\x3e', a.document), d.insertAfter(b), b.mergeSiblings(!1), a.moveToBookmark({ startNode: d }))) : a.collapse(!0);
          }a.optimizeBookmark();var h = 0 === b,
              m = 1 == b,
              q = 2 == b;b = q || m;var u = a.startContainer,
              z = a.endContainer,
              A = a.startOffset,
              C = a.endOffset,
              D,
              E,
              G,
              K,
              F,
              M;if (q && z.type == CKEDITOR.NODE_TEXT && (u.equals(z) || u.type === CKEDITOR.NODE_ELEMENT && u.getFirst().equals(z))) d.append(a.document.createText(z.substring(A, C)));else {
            z.type == CKEDITOR.NODE_TEXT ? q ? M = !0 : z = z.split(C) : 0 < z.getChildCount() ? C >= z.getChildCount() ? (z = z.getChild(C - 1), E = !0) : z = z.getChild(C) : K = E = !0;u.type == CKEDITOR.NODE_TEXT ? q ? F = !0 : u.split(A) : 0 < u.getChildCount() ? 0 === A ? (u = u.getChild(A), D = !0) : u = u.getChild(A - 1) : G = D = !0;for (var H = u.getParents(), I = z.getParents(), P = k(), L = H.length - 1, O = I.length - 1, N = d, V, S, U, da = -1, T = P; T <= L; T++) {
              S = H[T];U = S.getNext();for (T != L || S.equals(I[T]) && L < O ? b && (V = N.append(S.clone(0, c))) : D ? g(S, N, !1, G) : F && N.append(a.document.createText(S.substring(A))); U;) {
                if (U.equals(I[T])) {
                  da = T;break;
                }U = g(U, N);
              }N = V;
            }N = d;for (T = P; T <= O; T++) if (d = I[T], U = d.getPrevious(), d.equals(H[T])) b && (N = N.getChild(0));else {
              T != O || d.equals(H[T]) && O < L ? b && (V = N.append(d.clone(0, c))) : E ? g(d, N, !1, K) : M && N.append(a.document.createText(d.substring(0, C)));if (T > da) for (; U;) U = g(U, N, !0);N = V;
            }q || l();
          }
        }function g() {
          var a = !1,
              b = CKEDITOR.dom.walker.whitespaces(),
              d = CKEDITOR.dom.walker.bookmark(!0),
              e = CKEDITOR.dom.walker.bogus();return function (c) {
            return d(c) || b(c) ? !0 : e(c) && !a ? a = !0 : c.type == CKEDITOR.NODE_TEXT && (c.hasAscendant("pre") || CKEDITOR.tools.trim(c.getText()).length) || c.type == CKEDITOR.NODE_ELEMENT && !c.is(k) ? !1 : !0;
          };
        }function a(a) {
          var b = CKEDITOR.dom.walker.whitespaces(),
              d = CKEDITOR.dom.walker.bookmark(1);return function (e) {
            return d(e) || b(e) ? !0 : !a && l(e) || e.type == CKEDITOR.NODE_ELEMENT && e.is(CKEDITOR.dtd.$removeEmpty);
          };
        }function e(a) {
          return function () {
            var e;return this[a ? "getPreviousNode" : "getNextNode"](function (a) {
              !e && d(a) && (e = a);return b(a) && !(l(a) && a.equals(e));
            });
          };
        }var k = { abbr: 1, acronym: 1, b: 1, bdo: 1, big: 1, cite: 1, code: 1, del: 1, dfn: 1, em: 1, font: 1, i: 1, ins: 1, label: 1, kbd: 1, q: 1, samp: 1, small: 1, span: 1, strike: 1, strong: 1, sub: 1, sup: 1, tt: 1, u: 1, "var": 1 },
            l = CKEDITOR.dom.walker.bogus(),
            m = /^[\t\r\n ]*(?:&nbsp;|\xa0)$/,
            b = CKEDITOR.dom.walker.editable(),
            d = CKEDITOR.dom.walker.ignored(!0);CKEDITOR.dom.range.prototype = { clone: function () {
            var a = new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer);a.startOffset = this.startOffset;a._setEndContainer(this.endContainer);a.endOffset = this.endOffset;a.collapsed = this.collapsed;return a;
          }, collapse: function (a) {
            a ? (this._setEndContainer(this.startContainer), this.endOffset = this.startOffset) : (this._setStartContainer(this.endContainer), this.startOffset = this.endOffset);this.collapsed = !0;
          }, cloneContents: function (a) {
            var b = new CKEDITOR.dom.documentFragment(this.document);this.collapsed || h(this, 2, b, !1, "undefined" == typeof a ? !0 : a);return b;
          }, deleteContents: function (a) {
            this.collapsed || h(this, 0, null, a);
          }, extractContents: function (a, b) {
            var d = new CKEDITOR.dom.documentFragment(this.document);this.collapsed || h(this, 1, d, a, "undefined" == typeof b ? !0 : b);return d;
          }, equals: function (a) {
            return this.startOffset === a.startOffset && this.endOffset === a.endOffset && this.startContainer.equals(a.startContainer) && this.endContainer.equals(a.endContainer);
          }, createBookmark: function (a) {
            function b(a) {
              return a.getAscendant(function (a) {
                var f;if (f = a.data && a.data("cke-temp")) f = -1 === CKEDITOR.tools.array.indexOf(["cke_copybin", "cke_pastebin"], a.getAttribute("id"));return f;
              }, !0);
            }var d = this.startContainer,
                e = this.endContainer,
                c = this.collapsed,
                g,
                k,
                l,
                h;g = this.document.createElement("span");g.data("cke-bookmark", 1);g.setStyle("display", "none");g.setHtml("\x26nbsp;");a && (l = "cke_bm_" + CKEDITOR.tools.getNextNumber(), g.setAttribute("id", l + (c ? "C" : "S")));c || (k = g.clone(), k.setHtml("\x26nbsp;"), a && k.setAttribute("id", l + "E"), h = this.clone(), b(e) && (e = b(e), h.moveToPosition(e, CKEDITOR.POSITION_AFTER_END)), h.collapse(), h.insertNode(k));h = this.clone();b(d) && (e = b(d), h.moveToPosition(e, CKEDITOR.POSITION_BEFORE_START));h.collapse(!0);h.insertNode(g);k ? (this.setStartAfter(g), this.setEndBefore(k)) : this.moveToPosition(g, CKEDITOR.POSITION_AFTER_END);return { startNode: a ? l + (c ? "C" : "S") : g, endNode: a ? l + "E" : k, serializable: a, collapsed: c };
          }, createBookmark2: function () {
            function a(f) {
              var b = f.container,
                  e = f.offset,
                  c;c = b;var g = e;c = c.type != CKEDITOR.NODE_ELEMENT || 0 === g || g == c.getChildCount() ? 0 : c.getChild(g - 1).type == CKEDITOR.NODE_TEXT && c.getChild(g).type == CKEDITOR.NODE_TEXT;c && (b = b.getChild(e - 1), e = b.getLength());if (b.type == CKEDITOR.NODE_ELEMENT && 0 < e) {
                a: {
                  for (c = b; e--;) if (g = c.getChild(e).getIndex(!0), 0 <= g) {
                    e = g;break a;
                  }e = -1;
                }e += 1;
              }if (b.type == CKEDITOR.NODE_TEXT) {
                c = b;for (g = 0; (c = c.getPrevious()) && c.type == CKEDITOR.NODE_TEXT;) g += c.getText().replace(CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE, "").length;c = g;b.isEmpty() ? (g = b.getPrevious(d), c ? (e = c, b = g ? g.getNext() : b.getParent().getFirst()) : (b = b.getParent(), e = g ? g.getIndex(!0) + 1 : 0)) : e += c;
              }f.container = b;f.offset = e;
            }function b(a, f) {
              var d = f.getCustomData("cke-fillingChar");if (d) {
                var e = a.container;d.equals(e) && (a.offset -= CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE.length, 0 >= a.offset && (a.offset = e.getIndex(), a.container = e.getParent()));
              }
            }var d = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT, !0);return function (d) {
              var e = this.collapsed,
                  c = { container: this.startContainer, offset: this.startOffset },
                  g = { container: this.endContainer, offset: this.endOffset };d && (a(c), b(c, this.root), e || (a(g), b(g, this.root)));return { start: c.container.getAddress(d), end: e ? null : g.container.getAddress(d), startOffset: c.offset, endOffset: g.offset, normalized: d, collapsed: e, is2: !0 };
            };
          }(), moveToBookmark: function (a) {
            if (a.is2) {
              var b = this.document.getByAddress(a.start, a.normalized),
                  d = a.startOffset,
                  e = a.end && this.document.getByAddress(a.end, a.normalized);a = a.endOffset;this.setStart(b, d);e ? this.setEnd(e, a) : this.collapse(!0);
            } else b = (d = a.serializable) ? this.document.getById(a.startNode) : a.startNode, a = d ? this.document.getById(a.endNode) : a.endNode, this.setStartBefore(b), b.remove(), a ? (this.setEndBefore(a), a.remove()) : this.collapse(!0);
          }, getBoundaryNodes: function () {
            var a = this.startContainer,
                b = this.endContainer,
                d = this.startOffset,
                e = this.endOffset,
                c;if (a.type == CKEDITOR.NODE_ELEMENT) if (c = a.getChildCount(), c > d) a = a.getChild(d);else if (1 > c) a = a.getPreviousSourceNode();else {
              for (a = a.$; a.lastChild;) a = a.lastChild;a = new CKEDITOR.dom.node(a);a = a.getNextSourceNode() || a;
            }if (b.type == CKEDITOR.NODE_ELEMENT) if (c = b.getChildCount(), c > e) b = b.getChild(e).getPreviousSourceNode(!0);else if (1 > c) b = b.getPreviousSourceNode();else {
              for (b = b.$; b.lastChild;) b = b.lastChild;b = new CKEDITOR.dom.node(b);
            }a.getPosition(b) & CKEDITOR.POSITION_FOLLOWING && (a = b);return { startNode: a, endNode: b };
          }, getCommonAncestor: function (a, b) {
            var d = this.startContainer,
                e = this.endContainer,
                d = d.equals(e) ? a && d.type == CKEDITOR.NODE_ELEMENT && this.startOffset == this.endOffset - 1 ? d.getChild(this.startOffset) : d : d.getCommonAncestor(e);return b && !d.is ? d.getParent() : d;
          }, optimize: function () {
            var a = this.startContainer,
                b = this.startOffset;a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setStartAfter(a) : this.setStartBefore(a));a = this.endContainer;b = this.endOffset;a.type != CKEDITOR.NODE_ELEMENT && (b ? b >= a.getLength() && this.setEndAfter(a) : this.setEndBefore(a));
          }, optimizeBookmark: function () {
            var a = this.startContainer,
                b = this.endContainer;a.is && a.is("span") && a.data("cke-bookmark") && this.setStartAt(a, CKEDITOR.POSITION_BEFORE_START);b && b.is && b.is("span") && b.data("cke-bookmark") && this.setEndAt(b, CKEDITOR.POSITION_AFTER_END);
          }, trim: function (a, b) {
            var d = this.startContainer,
                e = this.startOffset,
                c = this.collapsed;if ((!a || c) && d && d.type == CKEDITOR.NODE_TEXT) {
              if (e) {
                if (e >= d.getLength()) e = d.getIndex() + 1, d = d.getParent();else {
                  var g = d.split(e),
                      e = d.getIndex() + 1,
                      d = d.getParent();this.startContainer.equals(this.endContainer) ? this.setEnd(g, this.endOffset - this.startOffset) : d.equals(this.endContainer) && (this.endOffset += 1);
                }
              } else e = d.getIndex(), d = d.getParent();this.setStart(d, e);if (c) {
                this.collapse(!0);return;
              }
            }d = this.endContainer;e = this.endOffset;b || c || !d || d.type != CKEDITOR.NODE_TEXT || (e ? (e >= d.getLength() || d.split(e), e = d.getIndex() + 1) : e = d.getIndex(), d = d.getParent(), this.setEnd(d, e));
          }, enlarge: function (a, b) {
            function d(a) {
              return a && a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("contenteditable") ? null : a;
            }var e = new RegExp(/[^\s\ufeff]/);switch (a) {case CKEDITOR.ENLARGE_INLINE:
                var c = 1;case CKEDITOR.ENLARGE_ELEMENT:
                var g = function (a, f) {
                  var b = new CKEDITOR.dom.range(l);b.setStart(a, f);b.setEndAt(l, CKEDITOR.POSITION_BEFORE_END);var b = new CKEDITOR.dom.walker(b),
                      d;for (b.guard = function (a) {
                    return !(a.type == CKEDITOR.NODE_ELEMENT && a.isBlockBoundary());
                  }; d = b.next();) {
                    if (d.type != CKEDITOR.NODE_TEXT) return !1;D = d != a ? d.getText() : d.substring(f);if (e.test(D)) return !1;
                  }return !0;
                };if (this.collapsed) break;var k = this.getCommonAncestor(),
                    l = this.root,
                    h,
                    m,
                    q,
                    u,
                    z,
                    A = !1,
                    C,
                    D;C = this.startContainer;var E = this.startOffset;C.type == CKEDITOR.NODE_TEXT ? (E && (C = !CKEDITOR.tools.trim(C.substring(0, E)).length && C, A = !!C), C && ((u = C.getPrevious()) || (q = C.getParent()))) : (E && (u = C.getChild(E - 1) || C.getLast()), u || (q = C));for (q = d(q); q || u;) {
                  if (q && !u) {
                    !z && q.equals(k) && (z = !0);if (c ? q.isBlockBoundary() : !l.contains(q)) break;A && "inline" == q.getComputedStyle("display") || (A = !1, z ? h = q : this.setStartBefore(q));u = q.getPrevious();
                  }for (; u;) if (C = !1, u.type == CKEDITOR.NODE_COMMENT) u = u.getPrevious();else {
                    if (u.type == CKEDITOR.NODE_TEXT) D = u.getText(), e.test(D) && (u = null), C = /[\s\ufeff]$/.test(D);else if ((u.$.offsetWidth > (CKEDITOR.env.webkit ? 1 : 0) || b && u.is("br")) && !u.data("cke-bookmark")) if (A && CKEDITOR.dtd.$removeEmpty[u.getName()]) {
                      D = u.getText();if (e.test(D)) u = null;else for (var E = u.$.getElementsByTagName("*"), G = 0, K; K = E[G++];) if (!CKEDITOR.dtd.$removeEmpty[K.nodeName.toLowerCase()]) {
                        u = null;break;
                      }u && (C = !!D.length);
                    } else u = null;C && (A ? z ? h = q : q && this.setStartBefore(q) : A = !0);if (u) {
                      C = u.getPrevious();if (!q && !C) {
                        q = u;u = null;break;
                      }u = C;
                    } else q = null;
                  }q && (q = d(q.getParent()));
                }C = this.endContainer;E = this.endOffset;
                q = u = null;z = A = !1;C.type == CKEDITOR.NODE_TEXT ? CKEDITOR.tools.trim(C.substring(E)).length ? A = !0 : (A = !C.getLength(), E == C.getLength() ? (u = C.getNext()) || (q = C.getParent()) : g(C, E) && (q = C.getParent())) : (u = C.getChild(E)) || (q = C);for (; q || u;) {
                  if (q && !u) {
                    !z && q.equals(k) && (z = !0);if (c ? q.isBlockBoundary() : !l.contains(q)) break;A && "inline" == q.getComputedStyle("display") || (A = !1, z ? m = q : q && this.setEndAfter(q));u = q.getNext();
                  }for (; u;) {
                    C = !1;if (u.type == CKEDITOR.NODE_TEXT) D = u.getText(), g(u, 0) || (u = null), C = /^[\s\ufeff]/.test(D);else if (u.type == CKEDITOR.NODE_ELEMENT) {
                      if ((0 < u.$.offsetWidth || b && u.is("br")) && !u.data("cke-bookmark")) if (A && CKEDITOR.dtd.$removeEmpty[u.getName()]) {
                        D = u.getText();if (e.test(D)) u = null;else for (E = u.$.getElementsByTagName("*"), G = 0; K = E[G++];) if (!CKEDITOR.dtd.$removeEmpty[K.nodeName.toLowerCase()]) {
                          u = null;break;
                        }u && (C = !!D.length);
                      } else u = null;
                    } else C = 1;C && A && (z ? m = q : this.setEndAfter(q));if (u) {
                      C = u.getNext();if (!q && !C) {
                        q = u;u = null;break;
                      }u = C;
                    } else q = null;
                  }q && (q = d(q.getParent()));
                }h && m && (k = h.contains(m) ? m : h, this.setStartBefore(k), this.setEndAfter(k));break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:
                q = new CKEDITOR.dom.range(this.root);l = this.root;q.setStartAt(l, CKEDITOR.POSITION_AFTER_START);q.setEnd(this.startContainer, this.startOffset);q = new CKEDITOR.dom.walker(q);var F,
                    M,
                    H = CKEDITOR.dom.walker.blockBoundary(a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ? { br: 1 } : null),
                    I = null,
                    P = function (a) {
                  if (a.type == CKEDITOR.NODE_ELEMENT && "false" == a.getAttribute("contenteditable")) {
                    if (I) {
                      if (I.equals(a)) {
                        I = null;return;
                      }
                    } else I = a;
                  } else if (I) return;var f = H(a);f || (F = a);return f;
                },
                    c = function (a) {
                  var f = P(a);!f && a.is && a.is("br") && (M = a);return f;
                };q.guard = P;q = q.lastBackward();F = F || l;this.setStartAt(F, !F.is("br") && (!q && this.checkStartOfBlock() || q && F.contains(q)) ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_AFTER_END);if (a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS) {
                  q = this.clone();q = new CKEDITOR.dom.walker(q);var L = CKEDITOR.dom.walker.whitespaces(),
                      O = CKEDITOR.dom.walker.bookmark();q.evaluator = function (a) {
                    return !L(a) && !O(a);
                  };if ((q = q.previous()) && q.type == CKEDITOR.NODE_ELEMENT && q.is("br")) break;
                }q = this.clone();q.collapse();q.setEndAt(l, CKEDITOR.POSITION_BEFORE_END);q = new CKEDITOR.dom.walker(q);q.guard = a == CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS ? c : P;F = I = M = null;q = q.lastForward();F = F || l;this.setEndAt(F, !q && this.checkEndOfBlock() || q && F.contains(q) ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_BEFORE_START);M && this.setEndAfter(M);}
          }, shrink: function (a, b, d) {
            var e = "boolean" === typeof d ? d : d && "boolean" === typeof d.shrinkOnBlockBoundary ? d.shrinkOnBlockBoundary : !0,
                c = d && d.skipBogus;if (!this.collapsed) {
              a = a || CKEDITOR.SHRINK_TEXT;var g = this.clone(),
                  k = this.startContainer,
                  l = this.endContainer,
                  h = this.startOffset,
                  m = this.endOffset,
                  q = d = 1;k && k.type == CKEDITOR.NODE_TEXT && (h ? h >= k.getLength() ? g.setStartAfter(k) : (g.setStartBefore(k), d = 0) : g.setStartBefore(k));l && l.type == CKEDITOR.NODE_TEXT && (m ? m >= l.getLength() ? g.setEndAfter(l) : (g.setEndAfter(l), q = 0) : g.setEndBefore(l));var g = new CKEDITOR.dom.walker(g),
                  u = CKEDITOR.dom.walker.bookmark(),
                  z = CKEDITOR.dom.walker.bogus();g.evaluator = function (b) {
                return b.type == (a == CKEDITOR.SHRINK_ELEMENT ? CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT);
              };var A;g.guard = function (b, d) {
                if (c && z(b) || u(b)) return !0;if (a == CKEDITOR.SHRINK_ELEMENT && b.type == CKEDITOR.NODE_TEXT || d && b.equals(A) || !1 === e && b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary() || b.type == CKEDITOR.NODE_ELEMENT && b.hasAttribute("contenteditable")) return !1;d || b.type != CKEDITOR.NODE_ELEMENT || (A = b);return !0;
              };d && (k = g[a == CKEDITOR.SHRINK_ELEMENT ? "lastForward" : "next"]()) && this.setStartAt(k, b ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_START);q && (g.reset(), (g = g[a == CKEDITOR.SHRINK_ELEMENT ? "lastBackward" : "previous"]()) && this.setEndAt(g, b ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_END));return !(!d && !q);
            }
          }, insertNode: function (a) {
            this.optimizeBookmark();this.trim(!1, !0);var b = this.startContainer,
                d = b.getChild(this.startOffset);d ? a.insertBefore(d) : b.append(a);a.getParent() && a.getParent().equals(this.endContainer) && this.endOffset++;this.setStartBefore(a);
          }, moveToPosition: function (a, b) {
            this.setStartAt(a, b);this.collapse(!0);
          }, moveToRange: function (a) {
            this.setStart(a.startContainer, a.startOffset);this.setEnd(a.endContainer, a.endOffset);
          }, selectNodeContents: function (a) {
            this.setStart(a, 0);this.setEnd(a, a.type == CKEDITOR.NODE_TEXT ? a.getLength() : a.getChildCount());
          }, setStart: function (a, b) {
            a.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[a.getName()] && (b = a.getIndex(), a = a.getParent());this._setStartContainer(a);this.startOffset = b;this.endContainer || (this._setEndContainer(a), this.endOffset = b);c(this);
          }, setEnd: function (a, b) {
            a.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$empty[a.getName()] && (b = a.getIndex() + 1, a = a.getParent());this._setEndContainer(a);this.endOffset = b;this.startContainer || (this._setStartContainer(a), this.startOffset = b);c(this);
          }, setStartAfter: function (a) {
            this.setStart(a.getParent(), a.getIndex() + 1);
          }, setStartBefore: function (a) {
            this.setStart(a.getParent(), a.getIndex());
          }, setEndAfter: function (a) {
            this.setEnd(a.getParent(), a.getIndex() + 1);
          }, setEndBefore: function (a) {
            this.setEnd(a.getParent(), a.getIndex());
          }, setStartAt: function (a, b) {
            switch (b) {case CKEDITOR.POSITION_AFTER_START:
                this.setStart(a, 0);break;case CKEDITOR.POSITION_BEFORE_END:
                a.type == CKEDITOR.NODE_TEXT ? this.setStart(a, a.getLength()) : this.setStart(a, a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:
                this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:
                this.setStartAfter(a);}c(this);
          }, setEndAt: function (a, b) {
            switch (b) {case CKEDITOR.POSITION_AFTER_START:
                this.setEnd(a, 0);break;case CKEDITOR.POSITION_BEFORE_END:
                a.type == CKEDITOR.NODE_TEXT ? this.setEnd(a, a.getLength()) : this.setEnd(a, a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:
                this.setEndBefore(a);break;case CKEDITOR.POSITION_AFTER_END:
                this.setEndAfter(a);}c(this);
          }, fixBlock: function (a, b) {
            var d = this.createBookmark(),
                e = this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(e);e.trim();this.insertNode(e);var c = e.getBogus();c && c.remove();e.appendBogus();this.moveToBookmark(d);return e;
          }, splitBlock: function (a, b) {
            var d = new CKEDITOR.dom.elementPath(this.startContainer, this.root),
                e = new CKEDITOR.dom.elementPath(this.endContainer, this.root),
                c = d.block,
                g = e.block,
                k = null;if (!d.blockLimit.equals(e.blockLimit)) return null;"br" != a && (c || (c = this.fixBlock(!0, a), g = new CKEDITOR.dom.elementPath(this.endContainer, this.root).block), g || (g = this.fixBlock(!1, a)));d = c && this.checkStartOfBlock();e = g && this.checkEndOfBlock();this.deleteContents();c && c.equals(g) && (e ? (k = new CKEDITOR.dom.elementPath(this.startContainer, this.root), this.moveToPosition(g, CKEDITOR.POSITION_AFTER_END), g = null) : d ? (k = new CKEDITOR.dom.elementPath(this.startContainer, this.root), this.moveToPosition(c, CKEDITOR.POSITION_BEFORE_START), c = null) : (g = this.splitElement(c, b || !1), c.is("ul", "ol") || c.appendBogus()));return { previousBlock: c, nextBlock: g, wasStartOfBlock: d, wasEndOfBlock: e, elementPath: k };
          }, splitElement: function (a, b) {
            if (!this.collapsed) return null;this.setEndAt(a, CKEDITOR.POSITION_BEFORE_END);var d = this.extractContents(!1, b || !1),
                e = a.clone(!1, b || !1);d.appendTo(e);e.insertAfter(a);
            this.moveToPosition(a, CKEDITOR.POSITION_AFTER_END);return e;
          }, removeEmptyBlocksAtEnd: function () {
            function a(f) {
              return function (a) {
                return b(a) || d(a) || a.type == CKEDITOR.NODE_ELEMENT && a.isEmptyInlineRemoveable() || f.is("table") && a.is("caption") ? !1 : !0;
              };
            }var b = CKEDITOR.dom.walker.whitespaces(),
                d = CKEDITOR.dom.walker.bookmark(!1);return function (b) {
              for (var d = this.createBookmark(), e = this[b ? "endPath" : "startPath"](), c = e.block || e.blockLimit, g; c && !c.equals(e.root) && !c.getFirst(a(c));) g = c.getParent(), this[b ? "setEndAt" : "setStartAt"](c, CKEDITOR.POSITION_AFTER_END), c.remove(1), c = g;this.moveToBookmark(d);
            };
          }(), startPath: function () {
            return new CKEDITOR.dom.elementPath(this.startContainer, this.root);
          }, endPath: function () {
            return new CKEDITOR.dom.elementPath(this.endContainer, this.root);
          }, checkBoundaryOfElement: function (b, d) {
            var e = d == CKEDITOR.START,
                c = this.clone();c.collapse(e);c[e ? "setStartAt" : "setEndAt"](b, e ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END);c = new CKEDITOR.dom.walker(c);c.evaluator = a(e);return c[e ? "checkBackward" : "checkForward"]();
          }, checkStartOfBlock: function (a) {
            var b = this.startContainer,
                d = this.startOffset;CKEDITOR.env.ie && d && b.type == CKEDITOR.NODE_TEXT && (b = CKEDITOR.tools.ltrim(b.substring(0, d)), m.test(b) && this.trim(0, 1));a || this.trim();a = new CKEDITOR.dom.elementPath(this.startContainer, this.root);b = this.clone();b.collapse(!0);b.setStartAt(a.block || a.blockLimit, CKEDITOR.POSITION_AFTER_START);a = new CKEDITOR.dom.walker(b);a.evaluator = g();return a.checkBackward();
          }, checkEndOfBlock: function (a) {
            var b = this.endContainer,
                d = this.endOffset;CKEDITOR.env.ie && b.type == CKEDITOR.NODE_TEXT && (b = CKEDITOR.tools.rtrim(b.substring(d)), m.test(b) && this.trim(1, 0));a || this.trim();a = new CKEDITOR.dom.elementPath(this.endContainer, this.root);b = this.clone();b.collapse(!1);b.setEndAt(a.block || a.blockLimit, CKEDITOR.POSITION_BEFORE_END);a = new CKEDITOR.dom.walker(b);a.evaluator = g();return a.checkForward();
          }, getPreviousNode: function (a, b, d) {
            var e = this.clone();e.collapse(1);e.setStartAt(d || this.root, CKEDITOR.POSITION_AFTER_START);
            d = new CKEDITOR.dom.walker(e);d.evaluator = a;d.guard = b;return d.previous();
          }, getNextNode: function (a, b, d) {
            var e = this.clone();e.collapse();e.setEndAt(d || this.root, CKEDITOR.POSITION_BEFORE_END);d = new CKEDITOR.dom.walker(e);d.evaluator = a;d.guard = b;return d.next();
          }, checkReadOnly: function () {
            function a(b, f) {
              for (; b;) {
                if (b.type == CKEDITOR.NODE_ELEMENT) {
                  if ("false" == b.getAttribute("contentEditable") && !b.data("cke-editable")) return 0;if (b.is("html") || "true" == b.getAttribute("contentEditable") && (b.contains(f) || b.equals(f))) break;
                }b = b.getParent();
              }return 1;
            }return function () {
              var b = this.startContainer,
                  d = this.endContainer;return !(a(b, d) && a(d, b));
            };
          }(), moveToElementEditablePosition: function (a, b) {
            if (a.type == CKEDITOR.NODE_ELEMENT && !a.isEditable(!1)) return this.moveToPosition(a, b ? CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START), !0;for (var e = 0; a;) {
              if (a.type == CKEDITOR.NODE_TEXT) {
                b && this.endContainer && this.checkEndOfBlock() && m.test(a.getText()) ? this.moveToPosition(a, CKEDITOR.POSITION_BEFORE_START) : this.moveToPosition(a, b ? CKEDITOR.POSITION_AFTER_END : CKEDITOR.POSITION_BEFORE_START);e = 1;break;
              }if (a.type == CKEDITOR.NODE_ELEMENT) if (a.isEditable()) this.moveToPosition(a, b ? CKEDITOR.POSITION_BEFORE_END : CKEDITOR.POSITION_AFTER_START), e = 1;else if (b && a.is("br") && this.endContainer && this.checkEndOfBlock()) this.moveToPosition(a, CKEDITOR.POSITION_BEFORE_START);else if ("false" == a.getAttribute("contenteditable") && a.is(CKEDITOR.dtd.$block)) return this.setStartBefore(a), this.setEndAfter(a), !0;var c = a,
                  g = e,
                  k = void 0;c.type == CKEDITOR.NODE_ELEMENT && c.isEditable(!1) && (k = c[b ? "getLast" : "getFirst"](d));g || k || (k = c[b ? "getPrevious" : "getNext"](d));a = k;
            }return !!e;
          }, moveToClosestEditablePosition: function (a, b) {
            var d,
                e = 0,
                c,
                g,
                k = [CKEDITOR.POSITION_AFTER_END, CKEDITOR.POSITION_BEFORE_START];a ? (d = new CKEDITOR.dom.range(this.root), d.moveToPosition(a, k[b ? 0 : 1])) : d = this.clone();if (a && !a.is(CKEDITOR.dtd.$block)) e = 1;else if (c = d[b ? "getNextEditableNode" : "getPreviousEditableNode"]()) e = 1, (g = c.type == CKEDITOR.NODE_ELEMENT) && c.is(CKEDITOR.dtd.$block) && "false" == c.getAttribute("contenteditable") ? (d.setStartAt(c, CKEDITOR.POSITION_BEFORE_START), d.setEndAt(c, CKEDITOR.POSITION_AFTER_END)) : !CKEDITOR.env.needsBrFiller && g && c.is(CKEDITOR.dom.walker.validEmptyBlockContainers) ? (d.setEnd(c, 0), d.collapse()) : d.moveToPosition(c, k[b ? 1 : 0]);e && this.moveToRange(d);return !!e;
          }, moveToElementEditStart: function (a) {
            return this.moveToElementEditablePosition(a);
          }, moveToElementEditEnd: function (a) {
            return this.moveToElementEditablePosition(a, !0);
          }, getEnclosedNode: function () {
            var a = this.clone();a.optimize();if (a.startContainer.type != CKEDITOR.NODE_ELEMENT || a.endContainer.type != CKEDITOR.NODE_ELEMENT) return null;var a = new CKEDITOR.dom.walker(a),
                b = CKEDITOR.dom.walker.bookmark(!1, !0),
                d = CKEDITOR.dom.walker.whitespaces(!0);a.evaluator = function (a) {
              return d(a) && b(a);
            };var e = a.next();a.reset();return e && e.equals(a.previous()) ? e : null;
          }, getTouchedStartNode: function () {
            var a = this.startContainer;return this.collapsed || a.type != CKEDITOR.NODE_ELEMENT ? a : a.getChild(this.startOffset) || a;
          }, getTouchedEndNode: function () {
            var a = this.endContainer;return this.collapsed || a.type != CKEDITOR.NODE_ELEMENT ? a : a.getChild(this.endOffset - 1) || a;
          }, getNextEditableNode: e(), getPreviousEditableNode: e(1), _getTableElement: function (a) {
            a = a || { td: 1, th: 1, tr: 1, tbody: 1, thead: 1, tfoot: 1, table: 1 };var b = this.getTouchedStartNode(),
                d = this.getTouchedEndNode(),
                e = b.getAscendant("table", !0),
                d = d.getAscendant("table", !0);return e && !this.root.contains(e) ? null : this.getEnclosedNode() ? this.getEnclosedNode().getAscendant(a, !0) : e && d && (e.equals(d) || e.contains(d) || d.contains(e)) ? b.getAscendant(a, !0) : null;
          }, scrollIntoView: function () {
            var a = new CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e", this.document),
                b,
                d,
                e,
                c = this.clone();c.optimize();(e = c.startContainer.type == CKEDITOR.NODE_TEXT) ? (d = c.startContainer.getText(), b = c.startContainer.split(c.startOffset), a.insertAfter(c.startContainer)) : c.insertNode(a);a.scrollIntoView();e && (c.startContainer.setText(d), b.remove());a.remove();
          }, getClientRects: function () {
            function a(b, d) {
              var f = CKEDITOR.tools.array.map(b, function (a) {
                return a;
              }),
                  e = new CKEDITOR.dom.range(d.root),
                  c,
                  g,
                  k;d.startContainer instanceof CKEDITOR.dom.element && (g = 0 === d.startOffset && d.startContainer.hasAttribute("data-widget"));d.endContainer instanceof CKEDITOR.dom.element && (k = (k = d.endOffset === (d.endContainer.getChildCount ? d.endContainer.getChildCount() : d.endContainer.length)) && d.endContainer.hasAttribute("data-widget"));g && e.setStart(d.startContainer.getParent(), d.startContainer.getIndex());k && e.setEnd(d.endContainer.getParent(), d.endContainer.getIndex() + 1);if (g || k) d = e;e = d.cloneContents().find("[data-cke-widget-id]").toArray();
              if (e = CKEDITOR.tools.array.map(e, function (a) {
                var b = d.root.editor;a = a.getAttribute("data-cke-widget-id");return b.widgets.instances[a].element;
              })) return e = CKEDITOR.tools.array.map(e, function (a) {
                var b = a.getParent().hasClass("cke_widget_wrapper") ? a.getParent() : a;c = this.root.getDocument().$.createRange();c.setStart(b.getParent().$, b.getIndex());c.setEnd(b.getParent().$, b.getIndex() + 1);b = c.getClientRects();b.widgetRect = a.getClientRect();return b;
              }, d), CKEDITOR.tools.array.forEach(e, function (a) {
                function b(e) {
                  CKEDITOR.tools.array.forEach(f, function (b, c) {
                    var g = CKEDITOR.tools.objectCompare(a[e], b);g || (g = CKEDITOR.tools.objectCompare(a.widgetRect, b));g && (Array.prototype.splice.call(f, c, a.length - e, a.widgetRect), d = !0);
                  });d || (e < f.length - 1 ? b(e + 1) : f.push(a.widgetRect));
                }var d;b(0);
              }), f;
            }function b(a, d, f) {
              var c;d.collapsed ? f.startContainer instanceof CKEDITOR.dom.element ? (a = f.checkStartOfBlock(), c = new CKEDITOR.dom.text("​"), a ? f.startContainer.append(c, !0) : 0 === f.startOffset ? c.insertBefore(f.startContainer.getFirst()) : (f = f.startContainer.getChildren().getItem(f.startOffset - 1), c.insertAfter(f)), d.setStart(c.$, 0), d.setEnd(c.$, 0), a = d.getClientRects(), c.remove()) : f.startContainer instanceof CKEDITOR.dom.text && ("" === f.startContainer.getText() ? (f.startContainer.setText("​"), a = d.getClientRects(), f.startContainer.setText("")) : a = [e(f.createBookmark())]) : a = [e(f.createBookmark())];return a;
            }function d(a, b, f) {
              a = CKEDITOR.tools.extend({}, a);b && (a = CKEDITOR.tools.getAbsoluteRectPosition(f.document.getWindow(), a));!a.width && (a.width = a.right - a.left);!a.height && (a.height = a.bottom - a.top);
              return a;
            }function e(a) {
              var b = a.startNode;a = a.endNode;var d;b.setText("​");b.removeStyle("display");a ? (a.setText("​"), a.removeStyle("display"), d = [b.getClientRect(), a.getClientRect()], a.remove()) : d = [b.getClientRect(), b.getClientRect()];b.remove();return { right: Math.max(d[0].right, d[1].right), bottom: Math.max(d[0].bottom, d[1].bottom), left: Math.min(d[0].left, d[1].left), top: Math.min(d[0].top, d[1].top), width: Math.abs(d[0].left - d[1].left), height: Math.max(d[0].bottom, d[1].bottom) - Math.min(d[0].top, d[1].top) };
            }
            return void 0 !== this.document.getSelection ? function (e) {
              var c = this.root.getDocument().$.createRange(),
                  g;c.setStart(this.startContainer.$, this.startOffset);c.setEnd(this.endContainer.$, this.endOffset);g = c.getClientRects();g = a(g, this);g.length || (g = b(g, c, this));return CKEDITOR.tools.array.map(g, function (a) {
                return d(a, e, this);
              }, this);
            } : function (a) {
              return [d(e(this.createBookmark()), a, this)];
            };
          }(), _setStartContainer: function (a) {
            this.startContainer = a;
          }, _setEndContainer: function (a) {
            this.endContainer = a;
          }, _find: function (a, b) {
            var d = this.getCommonAncestor(),
                e = this.getBoundaryNodes(),
                c = [],
                g,
                k,
                l,
                h;if (d && d.find) for (k = d.find(a), g = 0; g < k.count(); g++) if (d = k.getItem(g), b || !d.isReadOnly()) l = d.getPosition(e.startNode) & CKEDITOR.POSITION_FOLLOWING || e.startNode.equals(d), h = d.getPosition(e.endNode) & CKEDITOR.POSITION_PRECEDING + CKEDITOR.POSITION_IS_CONTAINED || e.endNode.equals(d), l && h && c.push(d);return c;
          } };CKEDITOR.dom.range.mergeRanges = function (a) {
          return CKEDITOR.tools.array.reduce(a, function (a, b) {
            var d = a[a.length - 1],
                f = !1;b = b.clone();
            b.enlarge(CKEDITOR.ENLARGE_ELEMENT);if (d) {
              var e = new CKEDITOR.dom.range(b.root),
                  f = new CKEDITOR.dom.walker(e),
                  c = CKEDITOR.dom.walker.whitespaces();e.setStart(d.endContainer, d.endOffset);e.setEnd(b.startContainer, b.startOffset);for (e = f.next(); c(e) || b.endContainer.equals(e);) e = f.next();f = !e;
            }f ? d.setEnd(b.endContainer, b.endOffset) : a.push(b);return a;
          }, []);
        };
      }(), CKEDITOR.POSITION_AFTER_START = 1, CKEDITOR.POSITION_BEFORE_END = 2, CKEDITOR.POSITION_BEFORE_START = 3, CKEDITOR.POSITION_AFTER_END = 4, CKEDITOR.ENLARGE_ELEMENT = 1, CKEDITOR.ENLARGE_BLOCK_CONTENTS = 2, CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS = 3, CKEDITOR.ENLARGE_INLINE = 4, CKEDITOR.START = 1, CKEDITOR.END = 2, CKEDITOR.SHRINK_ELEMENT = 1, CKEDITOR.SHRINK_TEXT = 2, "use strict", function () {
        function c(a) {
          1 > arguments.length || (this.range = a, this.forceBrBreak = 0, this.enlargeBr = 1, this.enforceRealBlocks = 0, this._ || (this._ = {}));
        }function h(a) {
          var b = [];a.forEach(function (a) {
            if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1;
          }, CKEDITOR.NODE_ELEMENT, !0);return b;
        }function g(a, b, e, c) {
          a: {
            null == c && (c = h(e));for (var k; k = c.shift();) if (k.getDtd().p) {
              c = { element: k, remaining: c };break a;
            }c = null;
          }if (!c) return 0;if ((k = CKEDITOR.filter.instances[c.element.data("cke-filter")]) && !k.check(b)) return g(a, b, e, c.remaining);b = new CKEDITOR.dom.range(c.element);b.selectNodeContents(c.element);b = b.createIterator();b.enlargeBr = a.enlargeBr;b.enforceRealBlocks = a.enforceRealBlocks;b.activeFilter = b.filter = k;a._.nestedEditable = { element: c.element, container: e, remaining: c.remaining, iterator: b };return 1;
        }function a(a, b, e) {
          if (!b) return !1;
          a = a.clone();a.collapse(!e);return a.checkBoundaryOfElement(b, e ? CKEDITOR.START : CKEDITOR.END);
        }var e = /^[\r\n\t ]+$/,
            k = CKEDITOR.dom.walker.bookmark(!1, !0),
            l = CKEDITOR.dom.walker.whitespaces(!0),
            m = function (a) {
          return k(a) && l(a);
        },
            b = { dd: 1, dt: 1, li: 1 };c.prototype = { getNextParagraph: function (d) {
            var f, c, l, h, r;d = d || "p";if (this._.nestedEditable) {
              if (f = this._.nestedEditable.iterator.getNextParagraph(d)) return this.activeFilter = this._.nestedEditable.iterator.activeFilter, f;this.activeFilter = this.filter;if (g(this, d, this._.nestedEditable.container, this._.nestedEditable.remaining)) return this.activeFilter = this._.nestedEditable.iterator.activeFilter, this._.nestedEditable.iterator.getNextParagraph(d);this._.nestedEditable = null;
            }if (!this.range.root.getDtd()[d]) return null;if (!this._.started) {
              var t = this.range.clone();c = t.startPath();var v = t.endPath(),
                  B = !t.collapsed && a(t, c.block),
                  n = !t.collapsed && a(t, v.block, 1);t.shrink(CKEDITOR.SHRINK_ELEMENT, !0);B && t.setStartAt(c.block, CKEDITOR.POSITION_BEFORE_END);n && t.setEndAt(v.block, CKEDITOR.POSITION_AFTER_START);c = t.endContainer.hasAscendant("pre", !0) || t.startContainer.hasAscendant("pre", !0);t.enlarge(this.forceBrBreak && !c || !this.enlargeBr ? CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS);t.collapsed || (c = new CKEDITOR.dom.walker(t.clone()), v = CKEDITOR.dom.walker.bookmark(!0, !0), c.evaluator = v, this._.nextNode = c.next(), c = new CKEDITOR.dom.walker(t.clone()), c.evaluator = v, c = c.previous(), this._.lastNode = c.getNextSourceNode(!0, null, t.root), this._.lastNode && this._.lastNode.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim(this._.lastNode.getText()) && this._.lastNode.getParent().isBlockBoundary() && (v = this.range.clone(), v.moveToPosition(this._.lastNode, CKEDITOR.POSITION_AFTER_END), v.checkEndOfBlock() && (v = new CKEDITOR.dom.elementPath(v.endContainer, v.root), this._.lastNode = (v.block || v.blockLimit).getNextSourceNode(!0))), this._.lastNode && t.root.contains(this._.lastNode) || (this._.lastNode = this._.docEndMarker = t.document.createText(""), this._.lastNode.insertAfter(c)), t = null);this._.started = 1;c = t;
            }v = this._.nextNode;t = this._.lastNode;for (this._.nextNode = null; v;) {
              var B = 0,
                  n = v.hasAscendant("pre"),
                  x = v.type != CKEDITOR.NODE_ELEMENT,
                  q = 0;if (x) v.type == CKEDITOR.NODE_TEXT && e.test(v.getText()) && (x = 0);else {
                var u = v.getName();if (CKEDITOR.dtd.$block[u] && "false" == v.getAttribute("contenteditable")) {
                  f = v;g(this, d, f);break;
                } else if (v.isBlockBoundary(this.forceBrBreak && !n && { br: 1 })) {
                  if ("br" == u) x = 1;else if (!c && !v.getChildCount() && "hr" != u) {
                    f = v;l = v.equals(t);break;
                  }c && (c.setEndAt(v, CKEDITOR.POSITION_BEFORE_START), "br" != u && (this._.nextNode = v));B = 1;
                } else {
                  if (v.getFirst()) {
                    c || (c = this.range.clone(), c.setStartAt(v, CKEDITOR.POSITION_BEFORE_START));v = v.getFirst();continue;
                  }x = 1;
                }
              }x && !c && (c = this.range.clone(), c.setStartAt(v, CKEDITOR.POSITION_BEFORE_START));l = (!B || x) && v.equals(t);if (c && !B) for (; !v.getNext(m) && !l;) {
                u = v.getParent();if (u.isBlockBoundary(this.forceBrBreak && !n && { br: 1 })) {
                  B = 1;x = 0;l || u.equals(t);c.setEndAt(u, CKEDITOR.POSITION_BEFORE_END);break;
                }v = u;x = 1;l = v.equals(t);q = 1;
              }x && c.setEndAt(v, CKEDITOR.POSITION_AFTER_END);
              v = this._getNextSourceNode(v, q, t);if ((l = !v) || B && c) break;
            }if (!f) {
              if (!c) return this._.docEndMarker && this._.docEndMarker.remove(), this._.nextNode = null;f = new CKEDITOR.dom.elementPath(c.startContainer, c.root);v = f.blockLimit;B = { div: 1, th: 1, td: 1 };f = f.block;!f && v && !this.enforceRealBlocks && B[v.getName()] && c.checkStartOfBlock() && c.checkEndOfBlock() && !v.equals(c.root) ? f = v : !f || this.enforceRealBlocks && f.is(b) ? (f = this.range.document.createElement(d), c.extractContents().appendTo(f), f.trim(), c.insertNode(f), h = r = !0) : "li" != f.getName() ? c.checkStartOfBlock() && c.checkEndOfBlock() || (f = f.clone(!1), c.extractContents().appendTo(f), f.trim(), r = c.splitBlock(), h = !r.wasStartOfBlock, r = !r.wasEndOfBlock, c.insertNode(f)) : l || (this._.nextNode = f.equals(t) ? null : this._getNextSourceNode(c.getBoundaryNodes().endNode, 1, t));
            }h && (h = f.getPrevious()) && h.type == CKEDITOR.NODE_ELEMENT && ("br" == h.getName() ? h.remove() : h.getLast() && "br" == h.getLast().$.nodeName.toLowerCase() && h.getLast().remove());r && (h = f.getLast()) && h.type == CKEDITOR.NODE_ELEMENT && "br" == h.getName() && (!CKEDITOR.env.needsBrFiller || h.getPrevious(k) || h.getNext(k)) && h.remove();this._.nextNode || (this._.nextNode = l || f.equals(t) || !t ? null : this._getNextSourceNode(f, 1, t));return f;
          }, _getNextSourceNode: function (a, b, e) {
            function c(a) {
              return !(a.equals(e) || a.equals(g));
            }var g = this.range.root;for (a = a.getNextSourceNode(b, null, c); !k(a);) a = a.getNextSourceNode(b, null, c);return a;
          } };CKEDITOR.dom.range.prototype.createIterator = function () {
          return new c(this);
        };
      }(), CKEDITOR.command = function (c, h) {
        this.uiItems = [];this.exec = function (a) {
          if (this.state == CKEDITOR.TRISTATE_DISABLED || !this.checkAllowed()) return !1;this.editorFocus && c.focus();return !1 === this.fire("exec") ? !0 : !1 !== h.exec.call(this, c, a);
        };this.refresh = function (a, e) {
          if (!this.readOnly && a.readOnly) return !0;if (this.context && !e.isContextFor(this.context) || !this.checkAllowed(!0)) return this.disable(), !0;this.startDisabled || this.enable();this.modes && !this.modes[a.mode] && this.disable();return !1 === this.fire("refresh", { editor: a, path: e }) ? !0 : h.refresh && !1 !== h.refresh.apply(this, arguments);
        };var g;this.checkAllowed = function (a) {
          return a || "boolean" != typeof g ? g = c.activeFilter.checkFeature(this) : g;
        };CKEDITOR.tools.extend(this, h, { modes: { wysiwyg: 1 }, editorFocus: 1, contextSensitive: !!h.context, state: CKEDITOR.TRISTATE_DISABLED });CKEDITOR.event.call(this);
      }, CKEDITOR.command.prototype = { enable: function () {
          this.state == CKEDITOR.TRISTATE_DISABLED && this.checkAllowed() && this.setState(this.preserveState && "undefined" != typeof this.previousState ? this.previousState : CKEDITOR.TRISTATE_OFF);
        }, disable: function () {
          this.setState(CKEDITOR.TRISTATE_DISABLED);
        },
        setState: function (c) {
          if (this.state == c || c != CKEDITOR.TRISTATE_DISABLED && !this.checkAllowed()) return !1;this.previousState = this.state;this.state = c;this.fire("state");return !0;
        }, toggleState: function () {
          this.state == CKEDITOR.TRISTATE_OFF ? this.setState(CKEDITOR.TRISTATE_ON) : this.state == CKEDITOR.TRISTATE_ON && this.setState(CKEDITOR.TRISTATE_OFF);
        } }, CKEDITOR.event.implementOn(CKEDITOR.command.prototype), CKEDITOR.ADDITIONAL_RESOURCE_PARAMS = {}, CKEDITOR.ENTER_P = 1, CKEDITOR.ENTER_BR = 2, CKEDITOR.ENTER_DIV = 3, CKEDITOR.config = { customConfig: "config.js", autoUpdateElement: !0, language: "", defaultLanguage: "en", contentsLangDirection: "", enterMode: CKEDITOR.ENTER_P, forceEnterMode: !1, shiftEnterMode: CKEDITOR.ENTER_BR, docType: "\x3c!DOCTYPE html\x3e", bodyId: "", bodyClass: "", fullPage: !1, height: 200, contentsCss: CKEDITOR.getUrl("contents.css"), extraPlugins: "", removePlugins: "", protectedSource: [], tabIndex: 0, useComputedState: !0, width: "", baseFloatZIndex: 1E4, blockedKeystrokes: [CKEDITOR.CTRL + 66, CKEDITOR.CTRL + 73, CKEDITOR.CTRL + 85] }, function () {
        function c(a, b, d, f, e) {
          var c, g;a = [];for (c in b) {
            g = b[c];g = "boolean" == typeof g ? {} : "function" == typeof g ? { match: g } : G(g);"$" != c.charAt(0) && (g.elements = c);d && (g.featureName = d.toLowerCase());var k = g;k.elements = l(k.elements, /\s+/) || null;k.propertiesOnly = k.propertiesOnly || !0 === k.elements;var h = /\s*,\s*/,
                m = void 0;for (m in M) {
              k[m] = l(k[m], h) || null;var p = k,
                  O = H[m],
                  v = l(k[H[m]], h),
                  n = k[m],
                  w = [],
                  J = !0,
                  L = void 0;v ? J = !1 : v = {};for (L in n) "!" == L.charAt(0) && (L = L.slice(1), w.push(L), v[L] = !0, J = !1);for (; L = w.pop();) n[L] = n["!" + L], delete n["!" + L];p[O] = (J ? !1 : v) || null;
            }k.match = k.match || null;f.push(g);a.push(g);
          }b = e.elements;e = e.generic;d = 0;for (f = a.length; d < f; ++d) {
            c = G(a[d]);g = !0 === c.classes || !0 === c.styles || !0 === c.attributes;k = c;m = O = h = void 0;for (h in M) k[h] = B(k[h]);p = !0;for (m in H) {
              h = H[m];O = k[h];v = [];n = void 0;for (n in O) -1 < n.indexOf("*") ? v.push(new RegExp("^" + n.replace(/\*/g, ".*") + "$")) : v.push(n);O = v;O.length && (k[h] = O, p = !1);
            }k.nothingRequired = p;k.noProperties = !(k.attributes || k.classes || k.styles);if (!0 === c.elements || null === c.elements) e[g ? "unshift" : "push"](c);else for (var q in k = c.elements, delete c.elements, k) if (b[q]) b[q][g ? "unshift" : "push"](c);else b[q] = [c];
          }
        }function h(a, b, d, f) {
          if (!a.match || a.match(b)) if (f || m(a, b)) if (a.propertiesOnly || (d.valid = !0), d.allAttributes || (d.allAttributes = g(a.attributes, b.attributes, d.validAttributes)), d.allStyles || (d.allStyles = g(a.styles, b.styles, d.validStyles)), !d.allClasses) {
            a = a.classes;b = b.classes;f = d.validClasses;if (a) {
              if (!0 === a) a = !0;else {
                for (var e = 0, c = b.length, k; e < c; ++e) k = b[e], f[k] || (f[k] = a(k));a = !1;
              }
            } else a = !1;d.allClasses = a;
          }
        }function g(a, b, d) {
          if (!a) return !1;if (!0 === a) return !0;for (var f in b) d[f] || (d[f] = a(f));return !1;
        }function a(a, b, d) {
          if (!a.match || a.match(b)) {
            if (a.noProperties) return !1;d.hadInvalidAttribute = e(a.attributes, b.attributes) || d.hadInvalidAttribute;d.hadInvalidStyle = e(a.styles, b.styles) || d.hadInvalidStyle;a = a.classes;b = b.classes;if (a) {
              for (var f = !1, c = !0 === a, g = b.length; g--;) if (c || a(b[g])) b.splice(g, 1), f = !0;a = f;
            } else a = !1;d.hadInvalidClass = a || d.hadInvalidClass;
          }
        }function e(a, b) {
          if (!a) return !1;
          var d = !1,
              e;for (e in b) if (!0 === a || a(e)) delete b[e], d = !0;return d;
        }function k(a, b, d) {
          if (a.disabled || a.customConfig && !d || !b) return !1;a._.cachedChecks = {};return !0;
        }function l(a, b) {
          if (!a) return !1;if (!0 === a) return a;if ("string" == typeof a) return a = K(a), "*" == a ? !0 : CKEDITOR.tools.convertArrayToObject(a.split(b));if (CKEDITOR.tools.isArray(a)) return a.length ? CKEDITOR.tools.convertArrayToObject(a) : !1;var d = {},
              f = 0,
              e;for (e in a) d[e] = a[e], f++;return f ? d : !1;
        }function m(a, d) {
          if (a.nothingRequired) return !0;var f, e, c, g;if (c = a.requiredClasses) for (g = d.classes, f = 0; f < c.length; ++f) if (e = c[f], "string" == typeof e) {
            if (-1 == CKEDITOR.tools.indexOf(g, e)) return !1;
          } else if (!CKEDITOR.tools.checkIfAnyArrayItemMatches(g, e)) return !1;return b(d.styles, a.requiredStyles) && b(d.attributes, a.requiredAttributes);
        }function b(a, b) {
          if (!b) return !0;for (var d = 0, f; d < b.length; ++d) if (f = b[d], "string" == typeof f) {
            if (!(f in a)) return !1;
          } else if (!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a, f)) return !1;return !0;
        }function d(a) {
          if (!a) return {};a = a.split(/\s*,\s*/).sort();
          for (var b = {}; a.length;) b[a.shift()] = "cke-test";return b;
        }function f(a) {
          var b,
              d,
              f,
              e,
              c = {},
              g = 1;for (a = K(a); b = a.match(I);) (d = b[2]) ? (f = p(d, "styles"), e = p(d, "attrs"), d = p(d, "classes")) : f = e = d = null, c["$" + g++] = { elements: b[1], classes: d, styles: f, attributes: e }, a = a.slice(b[0].length);return c;
        }function p(a, b) {
          var d = a.match(P[b]);return d ? K(d[1]) : null;
        }function w(a) {
          var b = a.styleBackup = a.attributes.style,
              d = a.classBackup = a.attributes["class"];a.styles || (a.styles = CKEDITOR.tools.parseCssText(b || "", 1));a.classes || (a.classes = d ? d.split(/\s+/) : []);
        }function y(b, d, f, e) {
          var c = 0,
              g;e.toHtml && (d.name = d.name.replace(L, "$1"));if (e.doCallbacks && b.elementCallbacks) {
            a: {
              g = b.elementCallbacks;for (var k = 0, l = g.length, m; k < l; ++k) if (m = g[k](d)) {
                g = m;break a;
              }g = void 0;
            }if (g) return g;
          }if (e.doTransform && (g = b._.transformations[d.name])) {
            w(d);for (k = 0; k < g.length; ++k) u(b, d, g[k]);t(d);
          }if (e.doFilter) {
            a: {
              k = d.name;l = b._;b = l.allowedRules.elements[k];g = l.allowedRules.generic;k = l.disallowedRules.elements[k];l = l.disallowedRules.generic;m = e.skipRequired;var p = { valid: !1, validAttributes: {}, validClasses: {}, validStyles: {}, allAttributes: !1, allClasses: !1, allStyles: !1, hadInvalidAttribute: !1, hadInvalidClass: !1, hadInvalidStyle: !1 },
                  n,
                  q;if (b || g) {
                w(d);if (k) for (n = 0, q = k.length; n < q; ++n) if (!1 === a(k[n], d, p)) {
                  b = null;break a;
                }if (l) for (n = 0, q = l.length; n < q; ++n) a(l[n], d, p);if (b) for (n = 0, q = b.length; n < q; ++n) h(b[n], d, p, m);if (g) for (n = 0, q = g.length; n < q; ++n) h(g[n], d, p, m);b = p;
              } else b = null;
            }if (!b || !b.valid) return f.push(d), 1;q = b.validAttributes;var G = b.validStyles;g = b.validClasses;var k = d.attributes,
                B = d.styles,
                l = d.classes;m = d.classBackup;var K = d.styleBackup,
                J,
                E,
                C = [],
                p = [],
                x = /^data-cke-/;n = !1;delete k.style;delete k["class"];delete d.classBackup;delete d.styleBackup;if (!b.allAttributes) for (J in k) q[J] || (x.test(J) ? J == (E = J.replace(/^data-cke-saved-/, "")) || q[E] || (delete k[J], n = !0) : (delete k[J], n = !0));if (!b.allStyles || b.hadInvalidStyle) {
              for (J in B) b.allStyles || G[J] ? C.push(J + ":" + B[J]) : n = !0;C.length && (k.style = C.sort().join("; "));
            } else K && (k.style = K);if (!b.allClasses || b.hadInvalidClass) {
              for (J = 0; J < l.length; ++J) (b.allClasses || g[l[J]]) && p.push(l[J]);p.length && (k["class"] = p.sort().join(" "));m && p.length < m.split(/\s+/).length && (n = !0);
            } else m && (k["class"] = m);n && (c = 1);if (!e.skipFinalValidation && !v(d)) return f.push(d), 1;
          }e.toHtml && (d.name = d.name.replace(O, "cke:$1"));return c;
        }function r(a) {
          var b = [],
              d;for (d in a) -1 < d.indexOf("*") && b.push(d.replace(/\*/g, ".*"));return b.length ? new RegExp("^(?:" + b.join("|") + ")$") : null;
        }function t(a) {
          var b = a.attributes,
              d;delete b.style;delete b["class"];if (d = CKEDITOR.tools.writeCssText(a.styles, !0)) b.style = d;a.classes.length && (b["class"] = a.classes.sort().join(" "));
        }function v(a) {
          switch (a.name) {case "a":
              if (!(a.children.length || a.attributes.name || a.attributes.id)) return !1;break;case "img":
              if (!a.attributes.src) return !1;}return !0;
        }function B(a) {
          if (!a) return !1;if (!0 === a) return !0;var b = r(a);return function (d) {
            return d in a || b && d.match(b);
          };
        }function n() {
          return new CKEDITOR.htmlParser.element("br");
        }function x(a) {
          return a.type == CKEDITOR.NODE_ELEMENT && ("br" == a.name || E.$block[a.name]);
        }function q(a, b, d) {
          var f = a.name;if (E.$empty[f] || !a.children.length) "hr" == f && "br" == b ? a.replaceWith(n()) : (a.parent && d.push({ check: "it", el: a.parent }), a.remove());else if (E.$block[f] || "tr" == f) {
            if ("br" == b) a.previous && !x(a.previous) && (b = n(), b.insertBefore(a)), a.next && !x(a.next) && (b = n(), b.insertAfter(a)), a.replaceWithChildren();else {
              var f = a.children,
                  e;b: {
                e = E[b];for (var c = 0, g = f.length, k; c < g; ++c) if (k = f[c], k.type == CKEDITOR.NODE_ELEMENT && !e[k.name]) {
                  e = !1;break b;
                }e = !0;
              }if (e) a.name = b, a.attributes = {}, d.push({ check: "parent-down",
                el: a });else {
                e = a.parent;for (var c = e.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || "body" == e.name, l, h, g = f.length; 0 < g;) k = f[--g], c && (k.type == CKEDITOR.NODE_TEXT || k.type == CKEDITOR.NODE_ELEMENT && E.$inline[k.name]) ? (l || (l = new CKEDITOR.htmlParser.element(b), l.insertAfter(a), d.push({ check: "parent-down", el: l })), l.add(k, 0)) : (l = null, h = E[e.name] || E.span, k.insertAfter(a), e.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || k.type != CKEDITOR.NODE_ELEMENT || h[k.name] || d.push({ check: "el-up", el: k }));a.remove();
              }
            }
          } else f in { style: 1, script: 1 } ? a.remove() : (a.parent && d.push({ check: "it", el: a.parent }), a.replaceWithChildren());
        }function u(a, b, d) {
          var f, e;for (f = 0; f < d.length; ++f) if (e = d[f], !(e.check && !a.check(e.check, !1) || e.left && !e.left(b))) {
            e.right(b, N);break;
          }
        }function z(a, b) {
          var d = b.getDefinition(),
              f = d.attributes,
              e = d.styles,
              c,
              g,
              k,
              l;if (a.name != d.element) return !1;for (c in f) if ("class" == c) for (d = f[c].split(/\s+/), k = a.classes.join("|"); l = d.pop();) {
            if (-1 == k.indexOf(l)) return !1;
          } else if (a.attributes[c] != f[c]) return !1;for (g in e) if (a.styles[g] != e[g]) return !1;
          return !0;
        }function A(a, b) {
          var d, f;"string" == typeof a ? d = a : a instanceof CKEDITOR.style ? f = a : (d = a[0], f = a[1]);return [{ element: d, left: f, right: function (a, d) {
              d.transform(a, b);
            } }];
        }function C(a) {
          return function (b) {
            return z(b, a);
          };
        }function D(a) {
          return function (b, d) {
            d[a](b);
          };
        }var E = CKEDITOR.dtd,
            G = CKEDITOR.tools.copy,
            K = CKEDITOR.tools.trim,
            F = ["", "p", "br", "div"];CKEDITOR.FILTER_SKIP_TREE = 2;CKEDITOR.filter = function (a, b) {
          this.allowedContent = [];this.disallowedContent = [];this.elementCallbacks = null;this.disabled = !1;this.editor = null;this.id = CKEDITOR.tools.getNextNumber();this._ = { allowedRules: { elements: {}, generic: [] }, disallowedRules: { elements: {}, generic: [] }, transformations: {}, cachedTests: {}, cachedChecks: {} };CKEDITOR.filter.instances[this.id] = this;var d = this.editor = a instanceof CKEDITOR.editor ? a : null;if (d && !b) {
            this.customConfig = !0;var f = d.config.allowedContent;!0 === f ? this.disabled = !0 : (f || (this.customConfig = !1), this.allow(f, "config", 1), this.allow(d.config.extraAllowedContent, "extra", 1), this.allow(F[d.enterMode] + " " + F[d.shiftEnterMode], "default", 1), this.disallow(d.config.disallowedContent));
          } else this.customConfig = !1, this.allow(b || a, "default", 1);
        };CKEDITOR.filter.instances = {};CKEDITOR.filter.prototype = { allow: function (a, b, d) {
            if (!k(this, a, d)) return !1;var e, g;if ("string" == typeof a) a = f(a);else if (a instanceof CKEDITOR.style) {
              if (a.toAllowedContentRules) return this.allow(a.toAllowedContentRules(this.editor), b, d);e = a.getDefinition();a = {};d = e.attributes;a[e.element] = e = { styles: e.styles, requiredStyles: e.styles && CKEDITOR.tools.object.keys(e.styles) };
              d && (d = G(d), e.classes = d["class"] ? d["class"].split(/\s+/) : null, e.requiredClasses = e.classes, delete d["class"], e.attributes = d, e.requiredAttributes = d && CKEDITOR.tools.object.keys(d));
            } else if (CKEDITOR.tools.isArray(a)) {
              for (e = 0; e < a.length; ++e) g = this.allow(a[e], b, d);return g;
            }c(this, a, b, this.allowedContent, this._.allowedRules);return !0;
          }, applyTo: function (a, b, d, f) {
            if (this.disabled) return !1;var e = this,
                c = [],
                g = this.editor && this.editor.config.protectedSource,
                k,
                l = !1,
                h = { doFilter: !d, doTransform: !0, doCallbacks: !0, toHtml: b };
            a.forEach(function (a) {
              if (a.type == CKEDITOR.NODE_ELEMENT) {
                if ("off" == a.attributes["data-cke-filter"]) return !1;if (!b || "span" != a.name || !~CKEDITOR.tools.object.keys(a.attributes).join("|").indexOf("data-cke-")) if (k = y(e, a, c, h), k & 1) l = !0;else if (k & 2) return !1;
              } else if (a.type == CKEDITOR.NODE_COMMENT && a.value.match(/^\{cke_protected\}(?!\{C\})/)) {
                var d;a: {
                  var f = decodeURIComponent(a.value.replace(/^\{cke_protected\}/, ""));d = [];var m, p, O;if (g) for (p = 0; p < g.length; ++p) if ((O = f.match(g[p])) && O[0].length == f.length) {
                    d = !0;break a;
                  }f = CKEDITOR.htmlParser.fragment.fromHtml(f);1 == f.children.length && (m = f.children[0]).type == CKEDITOR.NODE_ELEMENT && y(e, m, d, h);d = !d.length;
                }d || c.push(a);
              }
            }, null, !0);c.length && (l = !0);var m;a = [];f = F[f || (this.editor ? this.editor.enterMode : CKEDITOR.ENTER_P)];for (var p; d = c.pop();) d.type == CKEDITOR.NODE_ELEMENT ? q(d, f, a) : d.remove();for (; m = a.pop();) if (d = m.el, d.parent) switch (p = E[d.parent.name] || E.span, m.check) {case "it":
                E.$removeEmpty[d.name] && !d.children.length ? q(d, f, a) : v(d) || q(d, f, a);break;case "el-up":
                d.parent.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || p[d.name] || q(d, f, a);break;case "parent-down":
                d.parent.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT || p[d.name] || q(d.parent, f, a);}return l;
          }, checkFeature: function (a) {
            if (this.disabled || !a) return !0;a.toFeature && (a = a.toFeature(this.editor));return !a.requiredContent || this.check(a.requiredContent);
          }, disable: function () {
            this.disabled = !0;
          }, disallow: function (a) {
            if (!k(this, a, !0)) return !1;"string" == typeof a && (a = f(a));c(this, a, null, this.disallowedContent, this._.disallowedRules);return !0;
          },
          addContentForms: function (a) {
            if (!this.disabled && a) {
              var b,
                  d,
                  f = [],
                  e;for (b = 0; b < a.length && !e; ++b) d = a[b], ("string" == typeof d || d instanceof CKEDITOR.style) && this.check(d) && (e = d);if (e) {
                for (b = 0; b < a.length; ++b) f.push(A(a[b], e));this.addTransformations(f);
              }
            }
          }, addElementCallback: function (a) {
            this.elementCallbacks || (this.elementCallbacks = []);this.elementCallbacks.push(a);
          }, addFeature: function (a) {
            if (this.disabled || !a) return !0;a.toFeature && (a = a.toFeature(this.editor));this.allow(a.allowedContent, a.name);this.addTransformations(a.contentTransformations);
            this.addContentForms(a.contentForms);return a.requiredContent && (this.customConfig || this.disallowedContent.length) ? this.check(a.requiredContent) : !0;
          }, addTransformations: function (a) {
            var b, d;if (!this.disabled && a) {
              var f = this._.transformations,
                  e;for (e = 0; e < a.length; ++e) {
                b = a[e];var c = void 0,
                    g = void 0,
                    k = void 0,
                    l = void 0,
                    h = void 0,
                    m = void 0;d = [];for (g = 0; g < b.length; ++g) k = b[g], "string" == typeof k ? (k = k.split(/\s*:\s*/), l = k[0], h = null, m = k[1]) : (l = k.check, h = k.left, m = k.right), c || (c = k, c = c.element ? c.element : l ? l.match(/^([a-z0-9]+)/i)[0] : c.left.getDefinition().element), h instanceof CKEDITOR.style && (h = C(h)), d.push({ check: l == c ? null : l, left: h, right: "string" == typeof m ? D(m) : m });b = c;f[b] || (f[b] = []);f[b].push(d);
              }
            }
          }, check: function (a, b, e) {
            if (this.disabled) return !0;if (CKEDITOR.tools.isArray(a)) {
              for (var c = a.length; c--;) if (this.check(a[c], b, e)) return !0;return !1;
            }var g, k;if ("string" == typeof a) {
              k = a + "\x3c" + (!1 === b ? "0" : "1") + (e ? "1" : "0") + "\x3e";if (k in this._.cachedChecks) return this._.cachedChecks[k];g = f(a).$1;var l = g.styles,
                  c = g.classes;g.name = g.elements;
              g.classes = c = c ? c.split(/\s*,\s*/) : [];g.styles = d(l);g.attributes = d(g.attributes);g.children = [];c.length && (g.attributes["class"] = c.join(" "));l && (g.attributes.style = CKEDITOR.tools.writeCssText(g.styles));
            } else g = a.getDefinition(), l = g.styles, c = g.attributes || {}, l && !CKEDITOR.tools.isEmpty(l) ? (l = G(l), c.style = CKEDITOR.tools.writeCssText(l, !0)) : l = {}, g = { name: g.element, attributes: c, classes: c["class"] ? c["class"].split(/\s+/) : [], styles: l, children: [] };var l = CKEDITOR.tools.clone(g),
                h = [],
                m;if (!1 !== b && (m = this._.transformations[g.name])) {
              for (c = 0; c < m.length; ++c) u(this, g, m[c]);t(g);
            }y(this, l, h, { doFilter: !0, doTransform: !1 !== b, skipRequired: !e, skipFinalValidation: !e });0 < h.length ? e = !1 : ((b = g.attributes["class"]) && (g.attributes["class"] = g.attributes["class"].split(" ").sort().join(" ")), e = CKEDITOR.tools.objectCompare(g.attributes, l.attributes, !0), b && (g.attributes["class"] = b));"string" == typeof a && (this._.cachedChecks[k] = e);return e;
          }, getAllowedEnterMode: function () {
            var a = ["p", "div", "br"],
                b = { p: CKEDITOR.ENTER_P, div: CKEDITOR.ENTER_DIV, br: CKEDITOR.ENTER_BR };
            return function (d, f) {
              var e = a.slice(),
                  c;if (this.check(F[d])) return d;for (f || (e = e.reverse()); c = e.pop();) if (this.check(c)) return b[c];return CKEDITOR.ENTER_BR;
            };
          }(), clone: function () {
            var a = new CKEDITOR.filter(),
                b = CKEDITOR.tools.clone;a.allowedContent = b(this.allowedContent);a._.allowedRules = b(this._.allowedRules);a.disallowedContent = b(this.disallowedContent);a._.disallowedRules = b(this._.disallowedRules);a._.transformations = b(this._.transformations);a.disabled = this.disabled;a.editor = this.editor;return a;
          }, destroy: function () {
            delete CKEDITOR.filter.instances[this.id];
            delete this._;delete this.allowedContent;delete this.disallowedContent;
          } };var M = { styles: 1, attributes: 1, classes: 1 },
            H = { styles: "requiredStyles", attributes: "requiredAttributes", classes: "requiredClasses" },
            I = /^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,
            P = { styles: /{([^}]+)}/, attrs: /\[([^\]]+)\]/, classes: /\(([^\)]+)\)/ },
            L = /^cke:(object|embed|param)$/,
            O = /^(object|embed|param)$/,
            N;N = CKEDITOR.filter.transformationsTools = { sizeToStyle: function (a) {
            this.lengthToStyle(a, "width");this.lengthToStyle(a, "height");
          }, sizeToAttribute: function (a) {
            this.lengthToAttribute(a, "width");this.lengthToAttribute(a, "height");
          }, lengthToStyle: function (a, b, d) {
            d = d || b;if (!(d in a.styles)) {
              var f = a.attributes[b];f && (/^\d+$/.test(f) && (f += "px"), a.styles[d] = f);
            }delete a.attributes[b];
          }, lengthToAttribute: function (a, b, d) {
            d = d || b;if (!(d in a.attributes)) {
              var f = a.styles[b],
                  e = f && f.match(/^(\d+)(?:\.\d*)?px$/);e ? a.attributes[d] = e[1] : "cke-test" == f && (a.attributes[d] = "cke-test");
            }delete a.styles[b];
          }, alignmentToStyle: function (a) {
            if (!("float" in a.styles)) {
              var b = a.attributes.align;if ("left" == b || "right" == b) a.styles["float"] = b;
            }delete a.attributes.align;
          }, alignmentToAttribute: function (a) {
            if (!("align" in a.attributes)) {
              var b = a.styles["float"];if ("left" == b || "right" == b) a.attributes.align = b;
            }delete a.styles["float"];
          }, splitBorderShorthand: function (a) {
            if (a.styles.border) {
              var b = CKEDITOR.tools.style.parse.border(a.styles.border);b.color && (a.styles["border-color"] = b.color);b.style && (a.styles["border-style"] = b.style);b.width && (a.styles["border-width"] = b.width);
              delete a.styles.border;
            }
          }, listTypeToStyle: function (a) {
            if (a.attributes.type) switch (a.attributes.type) {case "a":
                a.styles["list-style-type"] = "lower-alpha";break;case "A":
                a.styles["list-style-type"] = "upper-alpha";break;case "i":
                a.styles["list-style-type"] = "lower-roman";break;case "I":
                a.styles["list-style-type"] = "upper-roman";break;case "1":
                a.styles["list-style-type"] = "decimal";break;default:
                a.styles["list-style-type"] = a.attributes.type;}
          }, splitMarginShorthand: function (a) {
            function b(f) {
              a.styles["margin-top"] = d[f[0]];a.styles["margin-right"] = d[f[1]];a.styles["margin-bottom"] = d[f[2]];a.styles["margin-left"] = d[f[3]];
            }if (a.styles.margin) {
              var d = a.styles.margin.match(/(auto|0|(?:\-?[\.\d]+(?:\w+|%)))/g) || ["0px"];switch (d.length) {case 1:
                  b([0, 0, 0, 0]);break;case 2:
                  b([0, 1, 0, 1]);break;case 3:
                  b([0, 1, 2, 1]);break;case 4:
                  b([0, 1, 2, 3]);}delete a.styles.margin;
            }
          }, matchesStyle: z, transform: function (a, b) {
            if ("string" == typeof b) a.name = b;else {
              var d = b.getDefinition(),
                  f = d.styles,
                  e = d.attributes,
                  c,
                  g,
                  k,
                  l;a.name = d.element;for (c in e) if ("class" == c) for (d = a.classes.join("|"), k = e[c].split(/\s+/); l = k.pop();) -1 == d.indexOf(l) && a.classes.push(l);else a.attributes[c] = e[c];for (g in f) a.styles[g] = f[g];
            }
          } };
      }(), function () {
        CKEDITOR.focusManager = function (c) {
          if (c.focusManager) return c.focusManager;this.hasFocus = !1;this.currentActive = null;this._ = { editor: c };return this;
        };CKEDITOR.focusManager._ = { blurDelay: 200 };CKEDITOR.focusManager.prototype = { focus: function (c) {
            this._.timer && clearTimeout(this._.timer);c && (this.currentActive = c);this.hasFocus || this._.locked || ((c = CKEDITOR.currentInstance) && c.focusManager.blur(1), this.hasFocus = !0, (c = this._.editor.container) && c.addClass("cke_focus"), this._.editor.fire("focus"));
          }, lock: function () {
            this._.locked = 1;
          }, unlock: function () {
            delete this._.locked;
          }, blur: function (c) {
            function h() {
              if (this.hasFocus) {
                this.hasFocus = !1;var a = this._.editor.container;a && a.removeClass("cke_focus");this._.editor.fire("blur");
              }
            }if (!this._.locked) {
              this._.timer && clearTimeout(this._.timer);var g = CKEDITOR.focusManager._.blurDelay;c || !g ? h.call(this) : this._.timer = CKEDITOR.tools.setTimeout(function () {
                delete this._.timer;h.call(this);
              }, g, this);
            }
          }, add: function (c, h) {
            var g = c.getCustomData("focusmanager");if (!g || g != this) {
              g && g.remove(c);var g = "focus",
                  a = "blur";h && (CKEDITOR.env.ie ? (g = "focusin", a = "focusout") : CKEDITOR.event.useCapture = 1);var e = { blur: function () {
                  c.equals(this.currentActive) && this.blur();
                }, focus: function () {
                  this.focus(c);
                } };c.on(g, e.focus, this);c.on(a, e.blur, this);h && (CKEDITOR.event.useCapture = 0);c.setCustomData("focusmanager", this);c.setCustomData("focusmanager_handlers", e);
            }
          }, remove: function (c) {
            c.removeCustomData("focusmanager");var h = c.removeCustomData("focusmanager_handlers");c.removeListener("blur", h.blur);c.removeListener("focus", h.focus);
          } };
      }(), CKEDITOR.keystrokeHandler = function (c) {
        if (c.keystrokeHandler) return c.keystrokeHandler;this.keystrokes = {};this.blockedKeystrokes = {};this._ = { editor: c };return this;
      }, function () {
        var c,
            h = function (a) {
          a = a.data;var e = a.getKeystroke(),
              g = this.keystrokes[e],
              l = this._.editor;c = !1 === l.fire("key", { keyCode: e, domEvent: a });c || (g && (c = !1 !== l.execCommand(g, { from: "keystrokeHandler" })), c || (c = !!this.blockedKeystrokes[e]));c && a.preventDefault(!0);return !c;
        },
            g = function (a) {
          c && (c = !1, a.data.preventDefault(!0));
        };CKEDITOR.keystrokeHandler.prototype = { attach: function (a) {
            a.on("keydown", h, this);if (CKEDITOR.env.gecko && CKEDITOR.env.mac) a.on("keypress", g, this);
          } };
      }(), function () {
        CKEDITOR.lang = { languages: { af: 1, ar: 1, az: 1, bg: 1, bn: 1, bs: 1, ca: 1, cs: 1, cy: 1, da: 1, de: 1, "de-ch": 1, el: 1, "en-au": 1, "en-ca": 1, "en-gb": 1, en: 1, eo: 1, es: 1, "es-mx": 1, et: 1, eu: 1, fa: 1, fi: 1, fo: 1, "fr-ca": 1,
            fr: 1, gl: 1, gu: 1, he: 1, hi: 1, hr: 1, hu: 1, id: 1, is: 1, it: 1, ja: 1, ka: 1, km: 1, ko: 1, ku: 1, lt: 1, lv: 1, mk: 1, mn: 1, ms: 1, nb: 1, nl: 1, no: 1, oc: 1, pl: 1, "pt-br": 1, pt: 1, ro: 1, ru: 1, si: 1, sk: 1, sl: 1, sq: 1, "sr-latn": 1, sr: 1, sv: 1, th: 1, tr: 1, tt: 1, ug: 1, uk: 1, vi: 1, "zh-cn": 1, zh: 1 }, rtl: { ar: 1, fa: 1, he: 1, ku: 1, ug: 1 }, load: function (c, h, g) {
            c && CKEDITOR.lang.languages[c] || (c = this.detect(h, c));var a = this;h = function () {
              a[c].dir = a.rtl[c] ? "rtl" : "ltr";g(c, a[c]);
            };this[c] ? h() : CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/" + c + ".js"), h, this);
          }, detect: function (c, h) {
            var g = this.languages;h = h || navigator.userLanguage || navigator.language || c;var a = h.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),
                e = a[1],
                a = a[2];g[e + "-" + a] ? e = e + "-" + a : g[e] || (e = null);CKEDITOR.lang.detect = e ? function () {
              return e;
            } : function (a) {
              return a;
            };return e || c;
          } };
      }(), CKEDITOR.scriptLoader = function () {
        var c = {},
            h = {};return { load: function (g, a, e, k) {
            var l = "string" == typeof g;l && (g = [g]);e || (e = CKEDITOR);var m = g.length,
                b = m,
                d = [],
                f = [],
                p = function (b) {
              a && (l ? a.call(e, b) : a.call(e, d, f));
            };if (0 === b) p(!0);else {
              var w = function (a, e) {
                (e ? d : f).push(a);0 >= --b && (k && CKEDITOR.document.getDocumentElement().removeStyle("cursor"), p(e));
              },
                  y = function (a, b) {
                c[a] = 1;var d = h[a];delete h[a];for (var f = 0; f < d.length; f++) d[f](a, b);
              },
                  r = function (b) {
                if (c[b]) w(b, !0);else {
                  var d = h[b] || (h[b] = []);d.push(w);if (!(1 < d.length)) {
                    var f = new CKEDITOR.dom.element("script");f.setAttributes({ type: "text/javascript", src: b });a && (CKEDITOR.env.ie && (8 >= CKEDITOR.env.version || CKEDITOR.env.ie9Compat) ? f.$.onreadystatechange = function () {
                      if ("loaded" == f.$.readyState || "complete" == f.$.readyState) f.$.onreadystatechange = null, y(b, !0);
                    } : (f.$.onload = function () {
                      setTimeout(function () {
                        f.$.onload = null;f.$.onerror = null;y(b, !0);
                      }, 0);
                    }, f.$.onerror = function () {
                      f.$.onload = null;f.$.onerror = null;y(b, !1);
                    }));f.appendTo(CKEDITOR.document.getHead());
                  }
                }
              };k && CKEDITOR.document.getDocumentElement().setStyle("cursor", "wait");for (var t = 0; t < m; t++) r(g[t]);
            }
          }, queue: function () {
            function c() {
              var e;(e = a[0]) && this.load(e.scriptUrl, e.callback, CKEDITOR, 0);
            }var a = [];return function (e, k) {
              var l = this;a.push({ scriptUrl: e,
                callback: function () {
                  k && k.apply(this, arguments);a.shift();c.call(l);
                } });1 == a.length && c.call(this);
            };
          }() };
      }(), CKEDITOR.resourceManager = function (c, h) {
        this.basePath = c;this.fileName = h;this.registered = {};this.loaded = {};this.externals = {};this._ = { waitingList: {} };
      }, CKEDITOR.resourceManager.prototype = { add: function (c, h) {
          if (this.registered[c]) throw Error('[CKEDITOR.resourceManager.add] The resource name "' + c + '" is already registered.');var g = this.registered[c] = h || {};g.name = c;g.path = this.getPath(c);CKEDITOR.fire(c + CKEDITOR.tools.capitalize(this.fileName) + "Ready", g);return this.get(c);
        }, get: function (c) {
          return this.registered[c] || null;
        }, getPath: function (c) {
          var h = this.externals[c];return CKEDITOR.getUrl(h && h.dir || this.basePath + c + "/");
        }, getFilePath: function (c) {
          var h = this.externals[c];return CKEDITOR.getUrl(this.getPath(c) + (h ? h.file : this.fileName + ".js"));
        }, addExternal: function (c, h, g) {
          g || (h = h.replace(/[^\/]+$/, function (a) {
            g = a;return "";
          }));g = g || this.fileName + ".js";c = c.split(",");for (var a = 0; a < c.length; a++) this.externals[c[a]] = { dir: h, file: g };
        }, load: function (c, h, g) {
          CKEDITOR.tools.isArray(c) || (c = c ? [c] : []);for (var a = this.loaded, e = this.registered, k = [], l = {}, m = {}, b = 0; b < c.length; b++) {
            var d = c[b];if (d) if (a[d] || e[d]) m[d] = this.get(d);else {
              var f = this.getFilePath(d);k.push(f);f in l || (l[f] = []);l[f].push(d);
            }
          }CKEDITOR.scriptLoader.load(k, function (b, d) {
            if (d.length) throw Error('[CKEDITOR.resourceManager.load] Resource name "' + l[d[0]].join(",") + '" was not found at "' + d[0] + '".');for (var f = 0; f < b.length; f++) for (var e = l[b[f]], c = 0; c < e.length; c++) {
              var k = e[c];m[k] = this.get(k);a[k] = 1;
            }h.call(g, m);
          }, this);
        } }, CKEDITOR.plugins = new CKEDITOR.resourceManager("plugins/", "plugin"), CKEDITOR.plugins.load = CKEDITOR.tools.override(CKEDITOR.plugins.load, function (c) {
        var h = {};return function (g, a, e) {
          var k = {},
              l = function (g) {
            c.call(this, g, function (b) {
              CKEDITOR.tools.extend(k, b);var d = [],
                  f;for (f in b) {
                var c = b[f],
                    g = c && c.requires;if (!h[f]) {
                  if (c.icons) for (var m = c.icons.split(","), r = m.length; r--;) CKEDITOR.skin.addIcon(m[r], c.path + "icons/" + (CKEDITOR.env.hidpi && c.hidpi ? "hidpi/" : "") + m[r] + ".png");c.isSupportedEnvironment = c.isSupportedEnvironment || function () {
                    return !0;
                  };h[f] = 1;
                }if (g) for (g.split && (g = g.split(",")), c = 0; c < g.length; c++) k[g[c]] || d.push(g[c]);
              }if (d.length) l.call(this, d);else {
                for (f in k) c = k[f], c.onLoad && !c.onLoad._called && (!1 === c.onLoad() && delete k[f], c.onLoad._called = 1);a && a.call(e || window, k);
              }
            }, this);
          };l.call(this, g);
        };
      }), CKEDITOR.plugins.setLang = function (c, h, g) {
        var a = this.get(c);c = a.langEntries || (a.langEntries = {});a = a.lang || (a.lang = []);a.split && (a = a.split(","));-1 == CKEDITOR.tools.indexOf(a, h) && a.push(h);c[h] = g;
      }, CKEDITOR.ui = function (c) {
        if (c.ui) return c.ui;this.items = {};this.instances = {};this.editor = c;this._ = { handlers: {} };return this;
      }, CKEDITOR.ui.prototype = { add: function (c, h, g) {
          g.name = c.toLowerCase();var a = this.items[c] = { type: h, command: g.command || null, args: Array.prototype.slice.call(arguments, 2) };CKEDITOR.tools.extend(a, g);
        }, get: function (c) {
          return this.instances[c];
        }, create: function (c) {
          var h = this.items[c],
              g = h && this._.handlers[h.type],
              a = h && h.command && this.editor.getCommand(h.command),
              g = g && g.create.apply(this, h.args);this.instances[c] = g;a && a.uiItems.push(g);g && !g.type && (g.type = h.type);return g;
        }, addHandler: function (c, h) {
          this._.handlers[c] = h;
        }, space: function (c) {
          return CKEDITOR.document.getById(this.spaceId(c));
        }, spaceId: function (c) {
          return this.editor.id + "_" + c;
        } }, CKEDITOR.event.implementOn(CKEDITOR.ui), function () {
        function c(b, d, f) {
          CKEDITOR.event.call(this);b = b && CKEDITOR.tools.clone(b);if (void 0 !== d) {
            if (!(d instanceof CKEDITOR.dom.element)) throw Error("Expect element of type CKEDITOR.dom.element.");
            if (!f) throw Error("One of the element modes must be specified.");if (CKEDITOR.env.ie && CKEDITOR.env.quirks && f == CKEDITOR.ELEMENT_MODE_INLINE) throw Error("Inline element mode is not supported on IE quirks.");if (!g(d, f)) throw Error('The specified element mode is not supported on element: "' + d.getName() + '".');this.element = d;this.elementMode = f;this.name = this.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO && (d.getId() || d.getNameAtt());
          } else this.elementMode = CKEDITOR.ELEMENT_MODE_NONE;this._ = {};this.commands = {};
          this.templates = {};this.name = this.name || h();this.id = CKEDITOR.tools.getNextId();this.status = "unloaded";this.config = CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui = new CKEDITOR.ui(this);this.focusManager = new CKEDITOR.focusManager(this);this.keystrokeHandler = new CKEDITOR.keystrokeHandler(this);this.on("readOnly", a);this.on("selectionChange", function (a) {
            k(this, a.data.path);
          });this.on("activeFilterChange", function () {
            k(this, this.elementPath(), !0);
          });this.on("mode", a);CKEDITOR.dom.selection.setupEditorOptimization(this);
          this.on("instanceReady", function () {
            if (this.config.startupFocus) {
              if ("end" === this.config.startupFocus) {
                var a = this.createRange();a.selectNodeContents(this.editable());a.shrink(CKEDITOR.SHRINK_ELEMENT, !0);a.collapse();this.getSelection().selectRanges([a]);
              }this.focus();
            }
          });CKEDITOR.fire("instanceCreated", null, this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function () {
            this.isDestroyed() || this.isDetached() || m(this, b);
          }, 0, this);
        }function h() {
          do var a = "editor" + ++r; while (CKEDITOR.instances[a]);return a;
        }function g(a, b) {
          return b == CKEDITOR.ELEMENT_MODE_INLINE ? a.is(CKEDITOR.dtd.$editable) || a.is("textarea") : b == CKEDITOR.ELEMENT_MODE_REPLACE ? !a.is(CKEDITOR.dtd.$nonBodyContent) : 1;
        }function a() {
          var a = this.commands,
              b;for (b in a) e(this, a[b]);
        }function e(a, b) {
          b[b.startDisabled ? "disable" : a.readOnly && !b.readOnly ? "disable" : b.modes[a.mode] ? "enable" : "disable"]();
        }function k(a, b, d) {
          if (b) {
            var f,
                e,
                c = a.commands;for (e in c) f = c[e], (d || f.contextSensitive) && f.refresh(a, b);
          }
        }function l(a) {
          var b = a.config.customConfig;if (!b) return !1;var b = CKEDITOR.getUrl(b),
              d = t[b] || (t[b] = {});d.fn ? (d.fn.call(a, a.config), CKEDITOR.getUrl(a.config.customConfig) != b && l(a) || a.fireOnce("customConfigLoaded")) : CKEDITOR.scriptLoader.queue(b, function () {
            d.fn = d.fn || CKEDITOR.editorConfig || function () {};l(a);
          });return !0;
        }function m(a, d) {
          a.on("customConfigLoaded", function () {
            if (d) {
              if (d.on) for (var f in d.on) a.on(f, d.on[f]);CKEDITOR.tools.extend(a.config, d, !0);delete a.config.on;
            }f = a.config;a.readOnly = f.readOnly ? !0 : a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? a.element.is("textarea") ? a.element.hasAttribute("disabled") || a.element.hasAttribute("readonly") : a.element.isReadOnly() : a.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? a.element.hasAttribute("disabled") || a.element.hasAttribute("readonly") : !1;a.blockless = a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? !(a.element.is("textarea") || CKEDITOR.dtd[a.element.getName()].p) : !1;a.tabIndex = f.tabIndex || a.element && a.element.getAttribute("tabindex") || 0;a.activeEnterMode = a.enterMode = a.blockless ? CKEDITOR.ENTER_BR : f.enterMode;a.activeShiftEnterMode = a.shiftEnterMode = a.blockless ? CKEDITOR.ENTER_BR : f.shiftEnterMode;f.skin && (CKEDITOR.skinName = f.skin);a.fireOnce("configLoaded");a.dataProcessor = new CKEDITOR.htmlDataProcessor(a);a.filter = a.activeFilter = new CKEDITOR.filter(a);b(a);
          });d && null != d.customConfig && (a.config.customConfig = d.customConfig);l(a) || a.fireOnce("customConfigLoaded");
        }function b(a) {
          CKEDITOR.skin.loadPart("editor", function () {
            d(a);
          });
        }function d(a) {
          CKEDITOR.lang.load(a.config.language, a.config.defaultLanguage, function (b, d) {
            var e = a.config.title;
            a.langCode = b;a.lang = CKEDITOR.tools.prototypedCopy(d);a.title = "string" == typeof e || !1 === e ? e : [a.lang.editor, a.name].join(", ");a.config.contentsLangDirection || (a.config.contentsLangDirection = a.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? a.element.getDirection(1) : a.lang.dir);a.fire("langLoaded");f(a);
          });
        }function f(a) {
          a.getStylesSet(function (b) {
            a.once("loaded", function () {
              a.fire("stylesSet", { styles: b });
            }, null, null, 1);p(a);
          });
        }function p(a) {
          function b(a) {
            if (!a) return "";CKEDITOR.tools.isArray(a) && (a = a.join(","));
            return a.replace(/\s/g, "");
          }var d = a.config,
              f = b(d.plugins),
              e = b(d.extraPlugins),
              c = b(d.removePlugins);if (e) var g = new RegExp("(?:^|,)(?:" + e.replace(/,/g, "|") + ")(?\x3d,|$)", "g"),
              f = f.replace(g, ""),
              f = f + ("," + e);if (c) var k = new RegExp("(?:^|,)(?:" + c.replace(/,/g, "|") + ")(?\x3d,|$)", "g"),
              f = f.replace(k, "");CKEDITOR.env.air && (f += ",adobeair");CKEDITOR.plugins.load(f.split(","), function (b) {
            var f = [],
                e = [],
                c = [];a.plugins = CKEDITOR.tools.extend({}, a.plugins, b);for (var g in b) {
              var l = b[g],
                  h = l.lang,
                  m = null,
                  p = l.requires,
                  w;
              CKEDITOR.tools.isArray(p) && (p = p.join(","));if (p && (w = p.match(k))) for (; p = w.pop();) CKEDITOR.error("editor-plugin-required", { plugin: p.replace(",", ""), requiredBy: g });h && !a.lang[g] && (h.split && (h = h.split(",")), 0 <= CKEDITOR.tools.indexOf(h, a.langCode) ? m = a.langCode : (m = a.langCode.replace(/-.*/, ""), m = m != a.langCode && 0 <= CKEDITOR.tools.indexOf(h, m) ? m : 0 <= CKEDITOR.tools.indexOf(h, "en") ? "en" : h[0]), l.langEntries && l.langEntries[m] ? (a.lang[g] = l.langEntries[m], m = null) : c.push(CKEDITOR.getUrl(l.path + "lang/" + m + ".js")));e.push(m);
              f.push(l);
            }CKEDITOR.scriptLoader.load(c, function () {
              if (!a.isDestroyed() && !a.isDetached()) {
                for (var b = ["beforeInit", "init", "afterInit"], c = 0; c < b.length; c++) for (var g = 0; g < f.length; g++) {
                  var k = f[g];0 === c && e[g] && k.lang && k.langEntries && (a.lang[k.name] = k.langEntries[e[g]]);if (k[b[c]]) k[b[c]](a);
                }a.fireOnce("pluginsLoaded");d.keystrokes && a.setKeystroke(a.config.keystrokes);for (g = 0; g < a.config.blockedKeystrokes.length; g++) a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[g]] = 1;a.status = "loaded";a.fireOnce("loaded");
                CKEDITOR.fire("instanceLoaded", null, a);
              }
            });
          });
        }function w() {
          var a = this.element;if (a && this.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO) {
            var b = this.getData();this.config.htmlEncodeOutput && (b = CKEDITOR.tools.htmlEncode(b));a.is("textarea") ? a.setValue(b) : a.setHtml(b);return !0;
          }return !1;
        }function y(a, b) {
          function d(a) {
            var b = a.startContainer,
                f = a.endContainer,
                e = b.is && b.is("tr"),
                c = b.is && b.is("td");a = c && b.equals(f) && a.endOffset === b.getChildCount();b = c && 1 === b.getChildCount() && "img" === b.getChildren().getItem(0).getName();
            return e || a && !b ? !0 : !1;
          }function f(a) {
            var b = a.startContainer;return b.is("tr") ? a.cloneContents() : b.clone(!0);
          }for (var e = new CKEDITOR.dom.documentFragment(), c, g, k, l = 0; l < a.length; l++) {
            var h = a[l],
                m = h.startContainer.getAscendant("tr", !0);d(h) ? (c || (c = m.getAscendant("table").clone(), c.append(m.getAscendant({ thead: 1, tbody: 1, tfoot: 1 }).clone()), e.append(c), c = c.findOne("thead, tbody, tfoot")), g && g.equals(m) || (g = m, k = m.clone(), c.append(k)), k.append(f(h))) : e.append(h.cloneContents());
          }return c ? e : b.getHtmlFromRange(a[0]);
        }
        c.prototype = CKEDITOR.editor.prototype;CKEDITOR.editor = c;var r = 0,
            t = {};CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { plugins: { detectConflict: function (a, b) {
              for (var d = 0; d < b.length; d++) {
                var f = b[d];if (this[f]) return CKEDITOR.warn("editor-plugin-conflict", { plugin: a, replacedWith: f }), !0;
              }return !1;
            } }, addCommand: function (a, b) {
            b.name = a.toLowerCase();var d = b instanceof CKEDITOR.command ? b : new CKEDITOR.command(this, b);this.mode && e(this, d);return this.commands[a] = d;
          }, _attachToForm: function () {
            function a(b) {
              d.updateElement();
              d._.required && !f.getValue() && !1 === d.fire("required") && b.data.preventDefault();
            }var d = this,
                f = d.element,
                e = new CKEDITOR.dom.element(f.$.form);f.is("textarea") && e && (e.on("submit", a), function b(a) {
              return !!(a && a.call && a.apply);
            }(e.$.submit) && (e.$.submit = CKEDITOR.tools.override(e.$.submit, function (b) {
              return function () {
                a();b.apply ? b.apply(this) : b();
              };
            })), d.on("destroy", function () {
              e.removeListener("submit", a);
            }));
          }, destroy: function (a) {
            var b = CKEDITOR.filter.instances,
                d = this;this.fire("beforeDestroy");!a && w.call(this);
            this.editable(null);this.filter && delete this.filter;CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(b), function (a) {
              a = b[a];d === a.editor && a.destroy();
            });delete this.activeFilter;this.status = "destroyed";this.fire("destroy");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire("instanceDestroyed", null, this);
          }, elementPath: function (a) {
            if (!a) {
              a = this.getSelection();if (!a) return null;a = a.getStartElement();
            }return a ? new CKEDITOR.dom.elementPath(a, this.editable()) : null;
          }, createRange: function () {
            var a = this.editable();return a ? new CKEDITOR.dom.range(a) : null;
          }, execCommand: function (a, b) {
            var d = this.getCommand(a),
                f = { name: a, commandData: b || {}, command: d };return d && d.state != CKEDITOR.TRISTATE_DISABLED && !1 !== this.fire("beforeCommandExec", f) && (f.returnValue = d.exec(f.commandData), !d.async && !1 !== this.fire("afterCommandExec", f)) ? f.returnValue : !1;
          }, getCommand: function (a) {
            return this.commands[a];
          }, getData: function (a) {
            !a && this.fire("beforeGetData");var b = this._.data;"string" != typeof b && (b = (b = this.element) && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? b.is("textarea") ? b.getValue() : b.getHtml() : "");b = { dataValue: b };!a && this.fire("getData", b);return b.dataValue;
          }, getSnapshot: function () {
            var a = this.fire("getSnapshot");"string" != typeof a && (a = (a = this.element) && this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE ? a.is("textarea") ? a.getValue() : a.getHtml() : "");return a;
          }, loadSnapshot: function (a) {
            this.fire("loadSnapshot", a);
          }, setData: function (a, b, d) {
            var f = !0,
                e = b;b && "object" == typeof b && (d = b.internal, e = b.callback, f = !b.noSnapshot);!d && f && this.fire("saveSnapshot");if (e || !d) this.once("dataReady", function (a) {
              !d && f && this.fire("saveSnapshot");e && e.call(a.editor);
            });a = { dataValue: a };!d && this.fire("setData", a);this._.data = a.dataValue;!d && this.fire("afterSetData", a);
          }, setReadOnly: function (a) {
            a = null == a || a;this.readOnly != a && (this.readOnly = a, this.keystrokeHandler.blockedKeystrokes[8] = +a, this.editable().setReadOnly(a), this.fire("readOnly"));
          }, insertHtml: function (a, b, d) {
            this.fire("insertHtml", { dataValue: a, mode: b, range: d });
          }, insertText: function (a) {
            this.fire("insertText", a);
          }, insertElement: function (a) {
            this.fire("insertElement", a);
          }, getSelectedHtml: function (a) {
            var b = this.editable(),
                d = this.getSelection(),
                d = d && d.getRanges();if (!b || !d || 0 === d.length) return null;b = y(d, b);return a ? b.getHtml() : b;
          }, extractSelectedHtml: function (a, b) {
            var d = this.editable(),
                f = this.getSelection().getRanges(),
                e = new CKEDITOR.dom.documentFragment(),
                c;if (!d || 0 === f.length) return null;for (c = 0; c < f.length; c++) e.append(d.extractHtmlFromRange(f[c], b));b || this.getSelection().selectRanges([f[0]]);return a ? e.getHtml() : e;
          }, focus: function () {
            this.fire("beforeFocus");
          }, checkDirty: function () {
            return "ready" == this.status && this._.previousValue !== this.getSnapshot();
          }, resetDirty: function () {
            this._.previousValue = this.getSnapshot();
          }, updateElement: function () {
            return w.call(this);
          }, setKeystroke: function () {
            for (var a = this.keystrokeHandler.keystrokes, b = CKEDITOR.tools.isArray(arguments[0]) ? arguments[0] : [[].slice.call(arguments, 0)], d, f, e = b.length; e--;) d = b[e], f = 0, CKEDITOR.tools.isArray(d) && (f = d[1], d = d[0]), f ? a[d] = f : delete a[d];
          }, getCommandKeystroke: function (a, b) {
            var d = "string" === typeof a ? this.getCommand(a) : a,
                f = [];if (d) {
              var e = CKEDITOR.tools.object.findKey(this.commands, d),
                  c = this.keystrokeHandler.keystrokes;if (d.fakeKeystroke) f.push(d.fakeKeystroke);else for (var g in c) c[g] === e && f.push(g);
            }return b ? f : f[0] || null;
          }, addFeature: function (a) {
            return this.filter.addFeature(a);
          }, setActiveFilter: function (a) {
            a || (a = this.filter);this.activeFilter !== a && (this.activeFilter = a, this.fire("activeFilterChange"), a === this.filter ? this.setActiveEnterMode(null, null) : this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode), a.getAllowedEnterMode(this.shiftEnterMode, !0)));
          }, setActiveEnterMode: function (a, b) {
            a = a ? this.blockless ? CKEDITOR.ENTER_BR : a : this.enterMode;b = b ? this.blockless ? CKEDITOR.ENTER_BR : b : this.shiftEnterMode;if (this.activeEnterMode != a || this.activeShiftEnterMode != b) this.activeEnterMode = a, this.activeShiftEnterMode = b, this.fire("activeEnterModeChange");
          }, showNotification: function (a) {
            alert(a);
          }, isDetached: function () {
            return !!this.container && this.container.isDetached();
          }, isDestroyed: function () {
            return "destroyed" === this.status;
          } });
        CKEDITOR.editor._getEditorElement = function (a) {
          if (!CKEDITOR.env.isCompatible) return null;var b = CKEDITOR.dom.element.get(a);return b ? b.getEditor() ? (CKEDITOR.error("editor-element-conflict", { editorName: b.getEditor().name }), null) : b : (CKEDITOR.error("editor-incorrect-element", { element: a }), null);
        };CKEDITOR.editor.initializeDelayedEditorCreation = function (a, b, d) {
          if (b.delayIfDetached_callback) CKEDITOR.warn("editor-delayed-creation", { method: "callback" }), b.delayIfDetached_callback(function () {
            CKEDITOR[d](a, b);
            CKEDITOR.warn("editor-delayed-creation-success", { method: "callback" });
          });else {
            var f = void 0 === b.delayIfDetached_interval ? CKEDITOR.config.delayIfDetached_interval : b.delayIfDetached_interval,
                e;CKEDITOR.warn("editor-delayed-creation", { method: "interval - " + f + " ms" });e = setInterval(function () {
              a.isDetached() || (clearInterval(e), CKEDITOR[d](a, b), CKEDITOR.warn("editor-delayed-creation-success", { method: "interval - " + f + " ms" }));
            }, f);
          }
        };CKEDITOR.editor.shouldDelayEditorCreation = function (a, b) {
          CKEDITOR.editor.mergeDelayedCreationConfigs(b);
          return b && b.delayIfDetached && a.isDetached();
        };CKEDITOR.editor.mergeDelayedCreationConfigs = function (a) {
          a && (a.delayIfDetached = "boolean" === typeof a.delayIfDetached ? a.delayIfDetached : CKEDITOR.config.delayIfDetached, a.delayIfDetached_interval = isNaN(a.delayIfDetached_interval) ? CKEDITOR.config.delayIfDetached_interval : a.delayIfDetached_interval, a.delayIfDetached_callback = a.delayIfDetached_callback || CKEDITOR.config.delayIfDetached_callback);
        };
      }(), CKEDITOR.ELEMENT_MODE_NONE = 0, CKEDITOR.ELEMENT_MODE_REPLACE = 1, CKEDITOR.ELEMENT_MODE_APPENDTO = 2, CKEDITOR.ELEMENT_MODE_INLINE = 3, CKEDITOR.config.delayIfDetached = !1, CKEDITOR.config.delayIfDetached_callback = void 0, CKEDITOR.config.delayIfDetached_interval = 50, CKEDITOR.htmlParser = function () {
        this._ = { htmlPartsRegex: /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--!?>)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g };
      }, function () {
        var c = /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,
            h = { checked: 1,
          compact: 1, declare: 1, defer: 1, disabled: 1, ismap: 1, multiple: 1, nohref: 1, noresize: 1, noshade: 1, nowrap: 1, readonly: 1, selected: 1 };CKEDITOR.htmlParser.prototype = { onTagOpen: function () {}, onTagClose: function () {}, onText: function () {}, onCDATA: function () {}, onComment: function () {}, parse: function (g) {
            for (var a, e, k = 0, l; a = this._.htmlPartsRegex.exec(g);) {
              e = a.index;if (e > k) if (k = g.substring(k, e), l) l.push(k);else this.onText(k);k = this._.htmlPartsRegex.lastIndex;if (e = a[1]) if (e = e.toLowerCase(), l && CKEDITOR.dtd.$cdata[e] && (this.onCDATA(l.join("")), l = null), !l) {
                this.onTagClose(e);continue;
              }if (l) l.push(a[0]);else if (e = a[3]) {
                if (e = e.toLowerCase(), !/="/.test(e)) {
                  var m = {},
                      b,
                      d = a[4];a = !!a[5];if (d) for (; b = c.exec(d);) {
                    var f = b[1].toLowerCase();b = b[2] || b[3] || b[4] || "";m[f] = !b && h[f] ? f : CKEDITOR.tools.htmlDecodeAttr(b);
                  }this.onTagOpen(e, m, a);!l && CKEDITOR.dtd.$cdata[e] && (l = []);
                }
              } else if (e = a[2]) this.onComment(e);
            }if (g.length > k) this.onText(g.substring(k, g.length));
          } };
      }(), CKEDITOR.htmlParser.basicWriter = CKEDITOR.tools.createClass({ $: function () {
          this._ = { output: [] };
        }, proto: { openTag: function (c) {
            this._.output.push("\x3c", c);
          }, openTagClose: function (c, h) {
            h ? this._.output.push(" /\x3e") : this._.output.push("\x3e");
          }, attribute: function (c, h) {
            "string" == typeof h && (h = CKEDITOR.tools.htmlEncodeAttr(h));this._.output.push(" ", c, '\x3d"', h, '"');
          }, closeTag: function (c) {
            this._.output.push("\x3c/", c, "\x3e");
          }, text: function (c) {
            this._.output.push(c);
          }, comment: function (c) {
            this._.output.push("\x3c!--", c, "--\x3e");
          }, write: function (c) {
            this._.output.push(c);
          }, reset: function () {
            this._.output = [];this._.indent = !1;
          }, getHtml: function (c) {
            var h = this._.output.join("");
            c && this.reset();return h;
          } } }), "use strict", function () {
        CKEDITOR.htmlParser.node = function () {};CKEDITOR.htmlParser.node.prototype = { remove: function () {
            var c = this.parent.children,
                h = CKEDITOR.tools.indexOf(c, this),
                g = this.previous,
                a = this.next;g && (g.next = a);a && (a.previous = g);c.splice(h, 1);this.parent = null;
          }, replaceWith: function (c) {
            var h = this.parent.children,
                g = CKEDITOR.tools.indexOf(h, this),
                a = c.previous = this.previous,
                e = c.next = this.next;a && (a.next = c);e && (e.previous = c);h[g] = c;c.parent = this.parent;this.parent = null;
          },
          insertAfter: function (c) {
            var h = c.parent.children,
                g = CKEDITOR.tools.indexOf(h, c),
                a = c.next;h.splice(g + 1, 0, this);this.next = c.next;this.previous = c;c.next = this;a && (a.previous = this);this.parent = c.parent;
          }, insertBefore: function (c) {
            var h = c.parent.children,
                g = CKEDITOR.tools.indexOf(h, c);h.splice(g, 0, this);this.next = c;(this.previous = c.previous) && (c.previous.next = this);c.previous = this;this.parent = c.parent;
          }, getAscendant: function (c) {
            var h = "function" == typeof c ? c : "string" == typeof c ? function (a) {
              return a.name == c;
            } : function (a) {
              return a.name in c;
            },
                g = this.parent;for (; g && g.type == CKEDITOR.NODE_ELEMENT;) {
              if (h(g)) return g;g = g.parent;
            }return null;
          }, wrapWith: function (c) {
            this.replaceWith(c);c.add(this);return c;
          }, getIndex: function () {
            return CKEDITOR.tools.indexOf(this.parent.children, this);
          }, getFilterContext: function (c) {
            return c || {};
          } };
      }(), "use strict", CKEDITOR.htmlParser.comment = function (c) {
        this.value = c;this._ = { isBlockLike: !1 };
      }, CKEDITOR.htmlParser.comment.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_COMMENT, filter: function (c, h) {
          var g = this.value;if (!(g = c.onComment(h, g, this))) return this.remove(), !1;if ("string" != typeof g) return this.replaceWith(g), !1;this.value = g;return !0;
        }, writeHtml: function (c, h) {
          h && this.filter(h);c.comment(this.value);
        } }), "use strict", function () {
        CKEDITOR.htmlParser.text = function (c) {
          this.value = c;this._ = { isBlockLike: !1 };
        };CKEDITOR.htmlParser.text.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_TEXT, filter: function (c, h) {
            if (!(this.value = c.onText(h, this.value, this))) return this.remove(), !1;
          }, writeHtml: function (c, h) {
            h && this.filter(h);c.text(this.value);
          } });
      }(), "use strict", function () {
        CKEDITOR.htmlParser.cdata = function (c) {
          this.value = c;
        };CKEDITOR.htmlParser.cdata.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_TEXT, filter: function (c) {
            var h = this.getAscendant("style");if (h && h.getAscendant({ math: 1, svg: 1 })) {
              var h = CKEDITOR.htmlParser.fragment.fromHtml(this.value),
                  g = new CKEDITOR.htmlParser.basicWriter();c.applyTo(h);h.writeHtml(g);this.value = g.getHtml();
            }
          }, writeHtml: function (c) {
            c.write(this.value);
          } });
      }(), "use strict", CKEDITOR.htmlParser.fragment = function () {
        this.children = [];this.parent = null;this._ = { isBlockLike: !0, hasInlineStarted: !1 };
      }, function () {
        function c(a) {
          return a.attributes["data-cke-survive"] ? !1 : "a" == a.name && a.attributes.href || CKEDITOR.dtd.$removeEmpty[a.name];
        }var h = CKEDITOR.tools.extend({ table: 1, ul: 1, ol: 1, dl: 1 }, CKEDITOR.dtd.table, CKEDITOR.dtd.ul, CKEDITOR.dtd.ol, CKEDITOR.dtd.dl),
            g = { ol: 1, ul: 1 },
            a = CKEDITOR.tools.extend({}, { html: 1 }, CKEDITOR.dtd.html, CKEDITOR.dtd.body, CKEDITOR.dtd.head, { style: 1, script: 1 }),
            e = { ul: "li", ol: "li", dl: "dd", table: "tbody", tbody: "tr", thead: "tr", tfoot: "tr", tr: "td" };CKEDITOR.htmlParser.fragment.fromHtml = function (k, l, m) {
          function b(a) {
            var b;if (0 < v.length) for (var f = 0; f < v.length; f++) {
              var e = v[f],
                  c = e.name,
                  g = CKEDITOR.dtd[c],
                  k = n.name && CKEDITOR.dtd[n.name];k && !k[c] || a && g && !g[a] && CKEDITOR.dtd[a] ? c == n.name && (p(n, n.parent, 1), f--) : (b || (d(), b = 1), e = e.clone(), e.parent = n, n = e, v.splice(f, 1), f--);
            }
          }function d() {
            for (; B.length;) p(B.shift(), n);
          }function f(a) {
            if (a._.isBlockLike && "pre" != a.name && "textarea" != a.name) {
              var b = a.children.length,
                  d = a.children[b - 1],
                  f;d && d.type == CKEDITOR.NODE_TEXT && ((f = CKEDITOR.tools.rtrim(d.value)) ? d.value = f : a.children.length = b - 1);
            }
          }function p(a, b, d) {
            b = b || n || t;var e = n;void 0 === a.previous && (w(b, a) && (n = b, r.onTagOpen(m, {}), a.returnPoint = b = n), f(a), c(a) && !a.children.length || b.add(a), "pre" == a.name && (q = !1), "textarea" == a.name && (x = !1));a.returnPoint ? (n = a.returnPoint, delete a.returnPoint) : n = d ? b : e;
          }function w(a, b) {
            if ((a == t || "body" == a.name) && m && (!a.name || CKEDITOR.dtd[a.name][m])) {
              var d, f;
              return (d = b.attributes && (f = b.attributes["data-cke-real-element-type"]) ? f : b.name) && d in CKEDITOR.dtd.$inline && !(d in CKEDITOR.dtd.head) && !b.isOrphan || b.type == CKEDITOR.NODE_TEXT;
            }
          }function y(a, b) {
            return a in CKEDITOR.dtd.$listItem || a in CKEDITOR.dtd.$tableContent ? a == b || "dt" == a && "dd" == b || "dd" == a && "dt" == b : !1;
          }var r = new CKEDITOR.htmlParser(),
              t = l instanceof CKEDITOR.htmlParser.element ? l : "string" == typeof l ? new CKEDITOR.htmlParser.element(l) : new CKEDITOR.htmlParser.fragment(),
              v = [],
              B = [],
              n = t,
              x = "textarea" == t.name,
              q = "pre" == t.name;r.onTagOpen = function (f, e, k, l) {
            e = new CKEDITOR.htmlParser.element(f, e);e.isUnknown && k && (e.isEmpty = !0);e.isOptionalClose = l;if (c(e)) v.push(e);else {
              if ("pre" == f) q = !0;else {
                if ("br" == f && q) {
                  n.add(new CKEDITOR.htmlParser.text("\n"));return;
                }"textarea" == f && (x = !0);
              }if ("br" == f) B.push(e);else {
                for (; !(l = (k = n.name) ? CKEDITOR.dtd[k] || (n._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span) : a, e.isUnknown || n.isUnknown || l[f]);) if (n.isOptionalClose) r.onTagClose(k);else if (f in g && k in g) k = n.children, (k = k[k.length - 1]) && "li" == k.name || p(k = new CKEDITOR.htmlParser.element("li"), n), !e.returnPoint && (e.returnPoint = n), n = k;else if (f in CKEDITOR.dtd.$listItem && !y(f, k)) r.onTagOpen("li" == f ? "ul" : "dl", {}, 0, 1);else if (k in h && !y(f, k)) !e.returnPoint && (e.returnPoint = n), n = n.parent;else if (k in CKEDITOR.dtd.$inline && v.unshift(n), n.parent) p(n, n.parent, 1);else {
                  e.isOrphan = 1;break;
                }b(f);d();e.parent = n;e.isEmpty ? p(e) : n = e;
              }
            }
          };r.onTagClose = function (a) {
            for (var b = v.length - 1; 0 <= b; b--) if (a == v[b].name) {
              v.splice(b, 1);return;
            }for (var f = [], e = [], c = n; c != t && c.name != a;) c._.isBlockLike || e.unshift(c), f.push(c), c = c.returnPoint || c.parent;if (c != t) {
              for (b = 0; b < f.length; b++) {
                var g = f[b];p(g, g.parent);
              }n = c;c._.isBlockLike && d();p(c, c.parent);c == n && (n = n.parent);v = v.concat(e);
            }"body" == a && (m = !1);
          };r.onText = function (f) {
            if (!(n._.hasInlineStarted && !B.length || q || x) && (f = CKEDITOR.tools.ltrim(f), 0 === f.length)) return;var c = n.name,
                g = c ? CKEDITOR.dtd[c] || (n._.isBlockLike ? CKEDITOR.dtd.div : CKEDITOR.dtd.span) : a;if (!x && !g["#"] && c in h) r.onTagOpen(e[c] || ""), r.onText(f);else {
              d();
              b();q || x || (f = f.replace(/[\t\r\n ]{2,}|[\t\r\n]/g, " "));f = new CKEDITOR.htmlParser.text(f);if (w(n, f)) this.onTagOpen(m, {}, 0, 1);n.add(f);
            }
          };r.onCDATA = function (a) {
            n.add(new CKEDITOR.htmlParser.cdata(a));
          };r.onComment = function (a) {
            d();b();n.add(new CKEDITOR.htmlParser.comment(a));
          };r.parse(k);for (d(); n != t;) p(n, n.parent, 1);f(t);return t;
        };CKEDITOR.htmlParser.fragment.prototype = { type: CKEDITOR.NODE_DOCUMENT_FRAGMENT, add: function (a, e) {
            isNaN(e) && (e = this.children.length);var c = 0 < e ? this.children[e - 1] : null;if (c) {
              if (a._.isBlockLike && c.type == CKEDITOR.NODE_TEXT && (c.value = CKEDITOR.tools.rtrim(c.value), 0 === c.value.length)) {
                this.children.pop();this.add(a);return;
              }c.next = a;
            }a.previous = c;a.parent = this;this.children.splice(e, 0, a);this._.hasInlineStarted || (this._.hasInlineStarted = a.type == CKEDITOR.NODE_TEXT || a.type == CKEDITOR.NODE_ELEMENT && !a._.isBlockLike);
          }, filter: function (a, e) {
            e = this.getFilterContext(e);a.onRoot(e, this);this.filterChildren(a, !1, e);
          }, filterChildren: function (a, e, c) {
            if (this.childrenFilteredBy != a.id) {
              c = this.getFilterContext(c);
              if (e && !this.parent) a.onRoot(c, this);this.childrenFilteredBy = a.id;for (e = 0; e < this.children.length; e++) !1 === this.children[e].filter(a, c) && e--;
            }
          }, writeHtml: function (a, e) {
            e && this.filter(e);this.writeChildrenHtml(a);
          }, writeChildrenHtml: function (a, e, c) {
            var b = this.getFilterContext();if (c && !this.parent && e) e.onRoot(b, this);e && this.filterChildren(e, !1, b);e = 0;c = this.children;for (b = c.length; e < b; e++) c[e].writeHtml(a);
          }, forEach: function (a, e, c) {
            if (!(c || e && this.type != e)) var b = a(this);if (!1 !== b) {
              c = this.children;for (var d = 0; d < c.length; d++) b = c[d], b.type == CKEDITOR.NODE_ELEMENT ? b.forEach(a, e) : e && b.type != e || a(b);
            }
          }, getFilterContext: function (a) {
            return a || {};
          } };
      }(), "use strict", function () {
        function c() {
          this.rules = [];
        }function h(g, a, e, k) {
          var l, h;for (l in a) (h = g[l]) || (h = g[l] = new c()), h.add(a[l], e, k);
        }CKEDITOR.htmlParser.filter = CKEDITOR.tools.createClass({ $: function (g) {
            this.id = CKEDITOR.tools.getNextNumber();this.elementNameRules = new c();this.attributeNameRules = new c();this.elementsRules = {};this.attributesRules = {};this.textRules = new c();
            this.commentRules = new c();this.rootRules = new c();g && this.addRules(g, 10);
          }, proto: { addRules: function (c, a) {
              var e;"number" == typeof a ? e = a : a && "priority" in a && (e = a.priority);"number" != typeof e && (e = 10);"object" != typeof a && (a = {});c.elementNames && this.elementNameRules.addMany(c.elementNames, e, a);c.attributeNames && this.attributeNameRules.addMany(c.attributeNames, e, a);c.elements && h(this.elementsRules, c.elements, e, a);c.attributes && h(this.attributesRules, c.attributes, e, a);c.text && this.textRules.add(c.text, e, a);c.comment && this.commentRules.add(c.comment, e, a);c.root && this.rootRules.add(c.root, e, a);
            }, applyTo: function (c) {
              c.filter(this);
            }, onElementName: function (c, a) {
              return this.elementNameRules.execOnName(c, a);
            }, onAttributeName: function (c, a) {
              return this.attributeNameRules.execOnName(c, a);
            }, onText: function (c, a, e) {
              return this.textRules.exec(c, a, e);
            }, onComment: function (c, a, e) {
              return this.commentRules.exec(c, a, e);
            }, onRoot: function (c, a) {
              return this.rootRules.exec(c, a);
            }, onElement: function (c, a) {
              for (var e = [this.elementsRules["^"], this.elementsRules[a.name], this.elementsRules.$], k, l = 0; 3 > l; l++) if (k = e[l]) {
                k = k.exec(c, a, this);if (!1 === k) return null;if (k && k != a) return this.onNode(c, k);if (a.parent && !a.name) break;
              }return a;
            }, onNode: function (c, a) {
              var e = a.type;return e == CKEDITOR.NODE_ELEMENT ? this.onElement(c, a) : e == CKEDITOR.NODE_TEXT ? new CKEDITOR.htmlParser.text(this.onText(c, a.value, a)) : e == CKEDITOR.NODE_COMMENT ? new CKEDITOR.htmlParser.comment(this.onComment(c, a.value, a)) : null;
            }, onAttribute: function (c, a, e, k) {
              return (e = this.attributesRules[e]) ? e.exec(c, k, a, this) : k;
            } } });
        CKEDITOR.htmlParser.filterRulesGroup = c;c.prototype = { add: function (c, a, e) {
            this.rules.splice(this.findIndex(a), 0, { value: c, priority: a, options: e });
          }, addMany: function (c, a, e) {
            for (var k = [this.findIndex(a), 0], l = 0, h = c.length; l < h; l++) k.push({ value: c[l], priority: a, options: e });this.rules.splice.apply(this.rules, k);
          }, findIndex: function (c) {
            for (var a = this.rules, e = a.length - 1; 0 <= e && c < a[e].priority;) e--;return e + 1;
          }, exec: function (c, a) {
            var e = a instanceof CKEDITOR.htmlParser.node || a instanceof CKEDITOR.htmlParser.fragment,
                k = Array.prototype.slice.call(arguments, 1),
                l = this.rules,
                h = l.length,
                b,
                d,
                f,
                p;for (p = 0; p < h; p++) if (e && (b = a.type, d = a.name), f = l[p], !(c.nonEditable && !f.options.applyToAll || c.nestedEditable && f.options.excludeNestedEditable)) {
              f = f.value.apply(null, k);if (!1 === f || e && f && (f.name != d || f.type != b)) return f;null != f && (k[0] = a = f);
            }return a;
          }, execOnName: function (c, a) {
            for (var e = 0, k = this.rules, l = k.length, h; a && e < l; e++) h = k[e], c.nonEditable && !h.options.applyToAll || c.nestedEditable && h.options.excludeNestedEditable || (a = a.replace(h.value[0], h.value[1]));return a;
          } };
      }(), function () {
        function c(b, d) {
          function f(a) {
            return a || CKEDITOR.env.needsNbspFiller ? new CKEDITOR.htmlParser.text(" ") : new CKEDITOR.htmlParser.element("br", { "data-cke-bogus": 1 });
          }function c(b, d) {
            return function (e) {
              if (e.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
                var c = [],
                    l = g(e),
                    m,
                    O;if (l) for (h(l, 1) && c.push(l); l;) k(l) && (m = a(l)) && h(m) && ((O = a(m)) && !k(O) ? c.push(m) : (f(p).insertAfter(m), m.remove())), l = l.previous;for (l = 0; l < c.length; l++) c[l].remove();if (c = !b || !1 !== ("function" == typeof d ? d(e) : d)) p || CKEDITOR.env.needsBrFiller || e.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT ? p || CKEDITOR.env.needsBrFiller || !(7 < document.documentMode || e.name in CKEDITOR.dtd.tr || e.name in CKEDITOR.dtd.$listItem) ? (c = g(e), c = !c || "form" == e.name && "input" == c.name) : c = !1 : c = !1;c && e.add(f(b));
              }
            };
          }function h(a, b) {
            if ((!p || CKEDITOR.env.needsBrFiller) && a.type == CKEDITOR.NODE_ELEMENT && "br" == a.name && !a.attributes["data-cke-eol"]) return !0;var d;return a.type == CKEDITOR.NODE_TEXT && (d = a.value.match(B)) && (d.index && (new CKEDITOR.htmlParser.text(a.value.substring(0, d.index)).insertBefore(a), a.value = d[0]), !CKEDITOR.env.needsBrFiller && p && (!b || a.parent.name in w) || !p && ((d = a.previous) && "br" == d.name || !d || k(d))) ? !0 : !1;
          }var m = { elements: {} },
              p = "html" == d,
              w = CKEDITOR.tools.extend({}, u),
              n;for (n in w) "#" in x[n] || delete w[n];for (n in w) m.elements[n] = c(p, b.config.fillEmptyBlocks);m.root = c(p, !1);m.elements.br = function (b) {
            return function (d) {
              if (d.parent.type != CKEDITOR.NODE_DOCUMENT_FRAGMENT) {
                var c = d.attributes;if ("data-cke-bogus" in c || "data-cke-eol" in c) delete c["data-cke-bogus"];else {
                  for (c = d.next; c && e(c);) c = c.next;var g = a(d);!c && k(d.parent) ? l(d.parent, f(b)) : k(c) && g && !k(g) && f(b).insertBefore(c);
                }
              }
            };
          }(p);return m;
        }function h(a, b) {
          return a != CKEDITOR.ENTER_BR && !1 !== b ? a == CKEDITOR.ENTER_DIV ? "div" : "p" : !1;
        }function g(a) {
          for (a = a.children[a.children.length - 1]; a && e(a);) a = a.previous;return a;
        }function a(a) {
          for (a = a.previous; a && e(a);) a = a.previous;return a;
        }function e(a) {
          return a.type == CKEDITOR.NODE_TEXT && !CKEDITOR.tools.trim(a.value) || a.type == CKEDITOR.NODE_ELEMENT && a.attributes["data-cke-bookmark"];
        }
        function k(a) {
          return a && (a.type == CKEDITOR.NODE_ELEMENT && a.name in u || a.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT);
        }function l(a, b) {
          var d = a.children[a.children.length - 1];a.children.push(b);b.parent = a;d && (d.next = b, b.previous = d);
        }function m(a) {
          a = a.attributes;"false" != a.contenteditable && (a["data-cke-editable"] = a.contenteditable ? "true" : 1);a.contenteditable = "false";
        }function b(a) {
          a = a.attributes;switch (a["data-cke-editable"]) {case "true":
              a.contenteditable = "true";break;case "1":
              delete a.contenteditable;}
        }function d(a, b) {
          return a.replace(E, function (a, d, f) {
            return "\x3c" + d + f.replace(G, function (a, d) {
              return K.test(d) && -1 == f.indexOf("data-cke-saved-" + d) ? " data-cke-saved-" + a + " data-cke-" + b + "-" + a : a;
            }) + "\x3e";
          });
        }function f(a, b) {
          return a.replace(b, function (a, b, d) {
            0 === a.indexOf("\x3ctextarea") && (a = b + y(d).replace(/</g, "\x26lt;").replace(/>/g, "\x26gt;") + "\x3c/textarea\x3e");return "\x3ccke:encoded\x3e" + encodeURIComponent(a) + "\x3c/cke:encoded\x3e";
          });
        }function p(a) {
          return a.replace(H, function (a, b) {
            return decodeURIComponent(b);
          });
        }
        function w(a) {
          return a.replace(/\x3c!--(?!{cke_protected})[\s\S]+?--\x3e/g, function (a) {
            return "\x3c!--" + n + "{C}" + encodeURIComponent(a).replace(/--/g, "%2D%2D") + "--\x3e";
          });
        }function y(a) {
          return a.replace(/\x3c!--\{cke_protected\}\{C\}([\s\S]+?)--\x3e/g, function (a, b) {
            return decodeURIComponent(b);
          });
        }function r(a, b) {
          var d = b._.dataStore;return a.replace(/\x3c!--\{cke_protected\}([\s\S]+?)--\x3e/g, function (a, b) {
            return decodeURIComponent(b);
          }).replace(/\{cke_protected_(\d+)\}/g, function (a, b) {
            return d && d[b] || "";
          });
        }
        function t(a, b, d) {
          var f = [],
              e = b.config.protectedSource,
              c = b._.dataStore || (b._.dataStore = { id: 1 }),
              g = new RegExp("\x3c\\!--\\{cke_temp_" + d + "(comment)?\\}(\\d*?)--\x3e", "g"),
              e = [/<script[\s\S]*?(<\/script>|$)/gi, /<noscript[\s\S]*?<\/noscript>/gi, /<meta[\s\S]*?\/?>/gi].concat(e);a = a.replace(/\x3c!--[\s\S]*?--\x3e/g, function (a) {
            return "\x3c!--{cke_temp_" + d + "comment}" + (f.push(a) - 1) + "--\x3e";
          });for (var k = 0; k < e.length; k++) a = a.replace(e[k], function (a) {
            a = a.replace(g, function (a, b, d) {
              return f[d];
            });return g.test(a) ? a : "\x3c!--{cke_temp_" + d + "}" + (f.push(a) - 1) + "--\x3e";
          });a = a.replace(g, function (a, b, d) {
            return "\x3c!--" + n + (b ? "{C}" : "") + encodeURIComponent(f[d]).replace(/--/g, "%2D%2D") + "--\x3e";
          });a = a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g, function (a) {
            return a.replace(/\x3c!--\{cke_protected\}([^>]*)--\x3e/g, function (a, b) {
              c[c.id] = decodeURIComponent(b);return "{cke_protected_" + c.id++ + "}";
            });
          });return a = a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g, function (a, d, f, e) {
            return "\x3c" + d + f + "\x3e" + r(y(e), b) + "\x3c/" + d + "\x3e";
          });
        }var v;CKEDITOR.htmlDataProcessor = function (a) {
          var b,
              e,
              g = this;this.editor = a;this.dataFilter = b = new CKEDITOR.htmlParser.filter();this.htmlFilter = e = new CKEDITOR.htmlParser.filter();this.writer = new CKEDITOR.htmlParser.basicWriter();b.addRules(z);b.addRules(A, { applyToAll: !0 });b.addRules(c(a, "data"), { applyToAll: !0 });e.addRules(C);e.addRules(D, { applyToAll: !0 });e.addRules(c(a, "html"), { applyToAll: !0 });a.on("toHtml", function (b) {
            var e;var c = window.crypto || window.msCrypto;e = c ? c.getRandomValues(new Uint32Array(1))[0] : Math.floor(9E9 * Math.random() + 1E9);b = b.data;var c = b.dataValue,
                c = v(c),
                c = t(c, a, e),
                c = f(c, M),
                c = d(c, e),
                c = f(c, F),
                c = c.replace(I, "$1cke:$2"),
                c = c.replace(L, "\x3ccke:$1$2\x3e\x3c/cke:$1\x3e"),
                c = c.replace(/(<pre\b[^>]*>)(\r\n|\n)/g, "$1$2$2"),
                c = c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi, "$1data-cke-" + e + "-$2"),
                g = b.context || a.editable().getName(),
                k;CKEDITOR.env.ie && 9 > CKEDITOR.env.version && "pre" == g && (g = "div", c = "\x3cpre\x3e" + c + "\x3c/pre\x3e", k = 1);g = a.document.createElement(g);
            g.setHtml("a" + c);c = g.getHtml().substr(1);c = c.replace(new RegExp("data-cke-" + e + "-", "ig"), "");k && (c = c.replace(/^<pre>|<\/pre>$/gi, ""));c = c.replace(P, "$1$2");c = p(c);c = y(c);e = !1 === b.fixForBody ? !1 : h(b.enterMode, a.config.autoParagraph);c = CKEDITOR.htmlParser.fragment.fromHtml(c, b.context, e);e && (k = c, !k.children.length && CKEDITOR.dtd[k.name][e] && (e = new CKEDITOR.htmlParser.element(e), k.add(e)));b.dataValue = c;
          }, null, null, 5);a.on("toHtml", function (b) {
            b.data.filter.applyTo(b.data.dataValue, !0, b.data.dontFilter, b.data.enterMode) && a.fire("dataFiltered");
          }, null, null, 6);a.on("toHtml", function (a) {
            a.data.dataValue.filterChildren(g.dataFilter, !0);
          }, null, null, 10);a.on("toHtml", function (a) {
            a = a.data;var b = a.dataValue,
                d = new CKEDITOR.htmlParser.basicWriter();b.writeChildrenHtml(d);b = d.getHtml(!0);a.dataValue = w(b);
          }, null, null, 15);a.on("toDataFormat", function (b) {
            var d = b.data.dataValue;b.data.enterMode != CKEDITOR.ENTER_BR && (d = d.replace(/^<br *\/?>/i, ""));b.data.dataValue = CKEDITOR.htmlParser.fragment.fromHtml(d, b.data.context, h(b.data.enterMode, a.config.autoParagraph));
          }, null, null, 5);a.on("toDataFormat", function (a) {
            a.data.dataValue.filterChildren(g.htmlFilter, !0);
          }, null, null, 10);a.on("toDataFormat", function (a) {
            a.data.filter.applyTo(a.data.dataValue, !1, !0);
          }, null, null, 11);a.on("toDataFormat", function (b) {
            var d = b.data.dataValue,
                f = g.writer;f.reset();d.writeChildrenHtml(f);d = f.getHtml(!0);d = y(d);d = r(d, a);b.data.dataValue = d;
          }, null, null, 15);
        };CKEDITOR.htmlDataProcessor.prototype = { toHtml: function (a, b, d, f) {
            var e = this.editor,
                c,
                g,
                k,
                l;
            b && "object" == typeof b ? (c = b.context, d = b.fixForBody, f = b.dontFilter, g = b.filter, k = b.enterMode, l = b.protectedWhitespaces) : c = b;c || null === c || (c = e.editable().getName());return e.fire("toHtml", { dataValue: a, context: c, fixForBody: d, dontFilter: f, filter: g || e.filter, enterMode: k || e.enterMode, protectedWhitespaces: l }).dataValue;
          }, toDataFormat: function (a, b) {
            var d, f, e;b && (d = b.context, f = b.filter, e = b.enterMode);d || null === d || (d = this.editor.editable().getName());return this.editor.fire("toDataFormat", { dataValue: a, filter: f || this.editor.filter, context: d, enterMode: e || this.editor.enterMode }).dataValue;
          }, protectSource: function (a) {
            return t(a, this.editor);
          }, unprotectSource: function (a) {
            return r(a, this.editor);
          }, unprotectRealComments: function (a) {
            return y(a);
          } };var B = /(?:&nbsp;|\xa0)$/,
            n = "{cke_protected}",
            x = CKEDITOR.dtd,
            q = "caption colgroup col thead tfoot tbody".split(" "),
            u = CKEDITOR.tools.extend({}, x.$blockLimit, x.$block),
            z = { elements: { input: m, textarea: m } },
            A = { attributeNames: [[/^on/, "data-cke-pa-on"], [/^srcdoc/, "data-cke-pa-srcdoc"], [/^data-cke-expando$/, ""]], elements: { iframe: function (a) {
              if (a.attributes && a.attributes.src) {
                var b = a.attributes.src.toLowerCase().replace(/[^a-z]/gi, "");if (0 === b.indexOf("javascript") || 0 === b.indexOf("data")) a.attributes["data-cke-pa-src"] = a.attributes.src, delete a.attributes.src;
              }
            } } },
            C = { elements: { embed: function (a) {
              var b = a.parent;if (b && "object" == b.name) {
                var d = b.attributes.width,
                    b = b.attributes.height;d && (a.attributes.width = d);b && (a.attributes.height = b);
              }
            }, a: function (a) {
              var b = a.attributes;if (!(a.children.length || b.name || b.id || a.attributes["data-cke-saved-name"])) return !1;
            } } },
            D = { elementNames: [[/^cke:/, ""], [/^\?xml:namespace$/, ""]], attributeNames: [[/^data-cke-(saved|pa)-/, ""], [/^data-cke-.*/, ""], ["hidefocus", ""]], elements: { $: function (a) {
              var b = a.attributes;if (b) {
                if (b["data-cke-temp"]) return !1;for (var d = ["name", "href", "src"], f, e = 0; e < d.length; e++) f = "data-cke-saved-" + d[e], f in b && delete b[d[e]];
              }return a;
            }, table: function (a) {
              a.children.slice(0).sort(function (a, b) {
                var d, f;a.type == CKEDITOR.NODE_ELEMENT && b.type == a.type && (d = CKEDITOR.tools.indexOf(q, a.name), f = CKEDITOR.tools.indexOf(q, b.name));-1 < d && -1 < f && d != f || (d = a.parent ? a.getIndex() : -1, f = b.parent ? b.getIndex() : -1);return d > f ? 1 : -1;
              });
            }, param: function (a) {
              a.children = [];a.isEmpty = !0;return a;
            }, span: function (a) {
              "Apple-style-span" == a.attributes["class"] && delete a.name;
            }, html: function (a) {
              delete a.attributes.contenteditable;delete a.attributes["class"];
            }, body: function (a) {
              delete a.attributes.spellcheck;delete a.attributes.contenteditable;
            }, style: function (a) {
              var b = a.children[0];
              b && b.value && (b.value = CKEDITOR.tools.trim(b.value));a.attributes.type || (a.attributes.type = "text/css");
            }, title: function (a) {
              var b = a.children[0];!b && l(a, b = new CKEDITOR.htmlParser.text());b.value = a.attributes["data-cke-title"] || "";
            }, input: b, textarea: b }, attributes: { "class": function (a) {
              return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g, "")) || !1;
            } } };CKEDITOR.env.ie && (D.attributes.style = function (a) {
          return a.replace(/(^|;)([^\:]+)/g, function (a) {
            return a.toLowerCase();
          });
        });var E = /<(a|area|img|input|source)\b([^>]*)>/gi,
            G = /([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,
            K = /^(href|src|name)$/i,
            F = /(?:<style(?=[ >])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,
            M = /(<textarea(?=[ >])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,
            H = /<cke:encoded>([^<]*)<\/cke:encoded>/gi,
            I = /(<\/?)((?:object|embed|param|html|body|head|title)([\s][^>]*)?>)/gi,
            P = /(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,
            L = /<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi;v = function () {
          function a(b, d) {
            for (var f = 0; f < b.length; f++) {
              var e = b[f];
              e.lastIndex = 0;if (e.test(d)) return !0;
            }return !1;
          }function b(a) {
            return CKEDITOR.tools.array.reduce(a.split(""), function (a, b) {
              var f = b.toLowerCase(),
                  e = b.toUpperCase(),
                  c = d(f);f !== e && (c += "|" + d(e));return a + ("(" + c + ")");
            }, "");
          }function d(a) {
            var b = a.charCodeAt(0);var f = b.toString(16);b = { htmlCode: "\x26#" + b + ";?", hex: "\x26#x0*" + f + ";?", entity: { "\x3c": "\x26lt;", "\x3e": "\x26gt;", ":": "\x26colon;" }[a] };for (var e in b) b[e] && (a += "|" + b[e]);return a;
          }var f = [new RegExp("(" + b("\x3ccke:encoded\x3e") + "(.*?)" + b("\x3c/cke:encoded\x3e") + ")|(" + b("\x3c") + b("/") + "?" + b("cke:encoded\x3e") + ")", "gi"), new RegExp("((" + b("{cke_protected") + ")(_[0-9]*)?" + b("}") + ")", "gi"), /<!(?:\s*-\s*){2,3}!?\s*>/g];return function (b) {
            for (; a(f, b);) for (var d = f, e = 0; e < d.length; e++) b = b.replace(d[e], "");return b;
          };
        }();
      }(), "use strict", CKEDITOR.htmlParser.element = function (c, h) {
        this.name = c;this.attributes = h || {};this.children = [];var g = c || "",
            a = g.match(/^cke:(.*)/);a && (g = a[1]);g = !!(CKEDITOR.dtd.$nonBodyContent[g] || CKEDITOR.dtd.$block[g] || CKEDITOR.dtd.$listItem[g] || CKEDITOR.dtd.$tableContent[g] || CKEDITOR.dtd.$nonEditable[g] || "br" == g);this.isEmpty = !!CKEDITOR.dtd.$empty[c];this.isUnknown = !CKEDITOR.dtd[c];this._ = { isBlockLike: g, hasInlineStarted: this.isEmpty || !g };
      }, CKEDITOR.htmlParser.cssStyle = function (c) {
        var h = {};((c instanceof CKEDITOR.htmlParser.element ? c.attributes.style : c) || "").replace(/&quot;/g, '"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function (c, a, e) {
          "font-family" == a && (e = e.replace(/["']/g, ""));h[a.toLowerCase()] = e;
        });return { rules: h, populate: function (c) {
            var a = this.toString();a && (c instanceof CKEDITOR.dom.element ? c.setAttribute("style", a) : c instanceof CKEDITOR.htmlParser.element ? c.attributes.style = a : c.style = a);
          }, toString: function () {
            var c = [],
                a;for (a in h) h[a] && c.push(a, ":", h[a], ";");return c.join("");
          } };
      }, function () {
        function c(a) {
          return function (e) {
            return e.type == CKEDITOR.NODE_ELEMENT && ("string" == typeof a ? e.name == a : e.name in a);
          };
        }var h = function (a, e) {
          a = a[0];e = e[0];return a < e ? -1 : a > e ? 1 : 0;
        },
            g = CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype = CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node(), { type: CKEDITOR.NODE_ELEMENT, add: g.add, clone: function () {
            return new CKEDITOR.htmlParser.element(this.name, this.attributes);
          }, filter: function (a, e) {
            var c = this,
                g,
                h;e = c.getFilterContext(e);if (!c.parent) a.onRoot(e, c);for (;;) {
              g = c.name;if (!(h = a.onElementName(e, g))) return this.remove(), !1;c.name = h;if (!(c = a.onElement(e, c))) return this.remove(), !1;if (c !== this) return this.replaceWith(c), !1;if (c.name == g) break;if (c.type != CKEDITOR.NODE_ELEMENT) return this.replaceWith(c), !1;if (!c.name) return this.replaceWithChildren(), !1;
            }g = c.attributes;var b, d;for (b in g) {
              for (h = g[b];;) if (d = a.onAttributeName(e, b)) {
                if (d != b) delete g[b], b = d;else break;
              } else {
                delete g[b];break;
              }d && (!1 === (h = a.onAttribute(e, c, d, h)) ? delete g[d] : g[d] = h);
            }c.isEmpty || this.filterChildren(a, !1, e);return !0;
          }, filterChildren: g.filterChildren, writeHtml: function (a, e) {
            e && this.filter(e);var c = this.name,
                g = [],
                m = this.attributes,
                b,
                d;a.openTag(c, m);for (b in m) g.push([b, m[b]]);a.sortAttributes && g.sort(h);b = 0;for (d = g.length; b < d; b++) m = g[b], a.attribute(m[0], m[1]);a.openTagClose(c, this.isEmpty);this.writeChildrenHtml(a);this.isEmpty || a.closeTag(c);
          }, writeChildrenHtml: g.writeChildrenHtml, replaceWithChildren: function () {
            for (var a = this.children, e = a.length; e;) a[--e].insertAfter(this);this.remove();
          }, forEach: g.forEach, getFirst: function (a) {
            if (!a) return this.children.length ? this.children[0] : null;"function" != typeof a && (a = c(a));for (var e = 0, g = this.children.length; e < g; ++e) if (a(this.children[e])) return this.children[e];return null;
          }, getHtml: function () {
            var a = new CKEDITOR.htmlParser.basicWriter();
            this.writeChildrenHtml(a);return a.getHtml();
          }, setHtml: function (a) {
            a = this.children = CKEDITOR.htmlParser.fragment.fromHtml(a).children;for (var e = 0, c = a.length; e < c; ++e) a[e].parent = this;
          }, getOuterHtml: function () {
            var a = new CKEDITOR.htmlParser.basicWriter();this.writeHtml(a);return a.getHtml();
          }, split: function (a) {
            for (var e = this.children.splice(a, this.children.length - a), c = this.clone(), g = 0; g < e.length; ++g) e[g].parent = c;c.children = e;e[0] && (e[0].previous = null);0 < a && (this.children[a - 1].next = null);this.parent.add(c, this.getIndex() + 1);return c;
          }, find: function (a, e) {
            void 0 === e && (e = !1);var c = [],
                g;for (g = 0; g < this.children.length; g++) {
              var h = this.children[g];"function" == typeof a && a(h) ? c.push(h) : "string" == typeof a && h.name === a && c.push(h);e && h.find && (c = c.concat(h.find(a, e)));
            }return c;
          }, findOne: function (a, e) {
            var c = null,
                g = CKEDITOR.tools.array.find(this.children, function (g) {
              var b = "function" === typeof a ? a(g) : g.name === a;if (b || !e) return b;g.children && g.findOne && (c = g.findOne(a, !0));return !!c;
            });return c || g || null;
          }, addClass: function (a) {
            if (!this.hasClass(a)) {
              var e = this.attributes["class"] || "";this.attributes["class"] = e + (e ? " " : "") + a;
            }
          }, removeClass: function (a) {
            var e = this.attributes["class"];e && ((e = CKEDITOR.tools.trim(e.replace(new RegExp("(?:\\s+|^)" + a + "(?:\\s+|$)"), " "))) ? this.attributes["class"] = e : delete this.attributes["class"]);
          }, hasClass: function (a) {
            var e = this.attributes["class"];return e ? new RegExp("(?:^|\\s)" + a + "(?\x3d\\s|$)").test(e) : !1;
          }, getFilterContext: function (a) {
            var e = [];a || (a = { nonEditable: !1, nestedEditable: !1 });a.nonEditable || "false" != this.attributes.contenteditable ? a.nonEditable && !a.nestedEditable && "true" == this.attributes.contenteditable && e.push("nestedEditable", !0) : e.push("nonEditable", !0);if (e.length) {
              a = CKEDITOR.tools.copy(a);for (var c = 0; c < e.length; c += 2) a[e[c]] = e[c + 1];
            }return a;
          } }, !0);
      }(), function () {
        var c = /{([^}]+)}/g;CKEDITOR.template = function (c) {
          this.source = "function" === typeof c ? c : String(c);
        };CKEDITOR.template.prototype.output = function (h, g) {
          var a = ("function" === typeof this.source ? this.source(h) : this.source).replace(c, function (a, c) {
            return void 0 !== h[c] ? h[c] : a;
          });
          return g ? g.push(a) : a;
        };
      }(), delete CKEDITOR.loadFullCore, CKEDITOR.instances = {}, CKEDITOR.document = new CKEDITOR.dom.document(document), CKEDITOR.add = function (c) {
        function h() {
          CKEDITOR.currentInstance == c && (CKEDITOR.currentInstance = null, CKEDITOR.fire("currentInstance"));
        }CKEDITOR.instances[c.name] = c;c.on("focus", function () {
          CKEDITOR.currentInstance != c && (CKEDITOR.currentInstance = c, CKEDITOR.fire("currentInstance"));
        });c.on("blur", h);c.on("destroy", h);CKEDITOR.fire("instance", null, c);
      }, CKEDITOR.remove = function (c) {
        delete CKEDITOR.instances[c.name];
      }, function () {
        var c = {};CKEDITOR.addTemplate = function (h, g) {
          var a = c[h];if (a) return a;a = { name: h, source: g };CKEDITOR.fire("template", a);return c[h] = new CKEDITOR.template(a.source);
        };CKEDITOR.getTemplate = function (h) {
          return c[h];
        };
      }(), function () {
        var c = [];CKEDITOR.addCss = function (h) {
          c.push(h);
        };CKEDITOR.getCss = function () {
          return c.join("\n");
        };
      }(), CKEDITOR.on("instanceDestroyed", function () {
        CKEDITOR.tools.isEmpty(this.instances) && CKEDITOR.fire("reset");
      }), CKEDITOR.TRISTATE_ON = 1, CKEDITOR.TRISTATE_OFF = 2, CKEDITOR.TRISTATE_DISABLED = 0, function () {
        CKEDITOR.inline = function (c, h) {
          c = CKEDITOR.editor._getEditorElement(c);if (!c) return null;if (CKEDITOR.editor.shouldDelayEditorCreation(c, h)) return CKEDITOR.editor.initializeDelayedEditorCreation(c, h, "inline"), null;var g = c.is("textarea") ? c : null,
              a = g ? g.getValue() : c.getHtml(),
              e = new CKEDITOR.editor(h, c, CKEDITOR.ELEMENT_MODE_INLINE);g ? (e.setData(a, null, !0), c = CKEDITOR.dom.element.createFromHtml('\x3cdiv contenteditable\x3d"' + !!e.readOnly + '" class\x3d"cke_textarea_inline"\x3e' + g.getValue() + "\x3c/div\x3e", CKEDITOR.document), c.insertAfter(g), g.hide(), g.$.form && e._attachToForm()) : (h && "undefined" !== typeof h.readOnly && !h.readOnly && c.setAttribute("contenteditable", "true"), e.setData(a, null, !0));e.on("loaded", function () {
            e.fire("uiReady");e.editable(c);e.container = c;e.ui.contentsElement = c;e.setData(e.getData(1));e.resetDirty();e.fire("contentDom");e.mode = "wysiwyg";e.fire("mode");e.status = "ready";e.fireOnce("instanceReady");CKEDITOR.fire("instanceReady", null, e);
          }, null, null, 1E4);e.on("destroy", function () {
            var a = e.container;g && a && (a.clearCustomData(), a.remove());g && g.show();e.element.clearCustomData();delete e.element;
          });return e;
        };CKEDITOR.inlineAll = function () {
          var c, h, g;for (g in CKEDITOR.dtd.$editable) for (var a = CKEDITOR.document.getElementsByTag(g), e = 0, k = a.count(); e < k; e++) c = a.getItem(e), "true" != c.getAttribute("contenteditable") || c.getEditor() || (h = { element: c, config: {} }, !1 !== CKEDITOR.fire("inline", h) && CKEDITOR.inline(c, h.config));
        };CKEDITOR.domReady(function () {
          !CKEDITOR.disableAutoInline && CKEDITOR.inlineAll();
        });
      }(), CKEDITOR.replaceClass = "ckeditor", function () {
        function c(a, e, c, l) {
          a = CKEDITOR.editor._getEditorElement(a);if (!a) return null;if (CKEDITOR.editor.shouldDelayEditorCreation(a, e)) return CKEDITOR.editor.initializeDelayedEditorCreation(a, e, "replace"), null;var m = new CKEDITOR.editor(e, a, l);l == CKEDITOR.ELEMENT_MODE_REPLACE && (a.setStyle("visibility", "hidden"), m._.required = a.hasAttribute("required"), a.removeAttribute("required"));c && m.setData(c, null, !0);m.on("loaded", function () {
            m.isDestroyed() || m.isDetached() || (g(m), l == CKEDITOR.ELEMENT_MODE_REPLACE && m.config.autoUpdateElement && a.$.form && m._attachToForm(), m.setMode(m.config.startupMode, function () {
              m.resetDirty();m.status = "ready";m.fireOnce("instanceReady");CKEDITOR.fire("instanceReady", null, m);
            }));
          });m.on("destroy", h);return m;
        }function h() {
          var a = this.container,
              e = this.element;a && (a.clearCustomData(), a.remove());e && (e.clearCustomData(), this.elementMode == CKEDITOR.ELEMENT_MODE_REPLACE && (e.show(), this._.required && e.setAttribute("required", "required")), delete this.element);
        }
        function g(a) {
          var e = a.name,
              c = a.element,
              g = a.elementMode,
              h = a.fire("uiSpace", { space: "top", html: "" }).html,
              b = a.fire("uiSpace", { space: "bottom", html: "" }).html,
              d = new CKEDITOR.template('\x3c{outerEl} id\x3d"cke_{name}" class\x3d"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} ' + CKEDITOR.env.cssClass + '"  dir\x3d"{langDir}" lang\x3d"{langCode}" role\x3d"application"' + (a.title ? ' aria-labelledby\x3d"cke_{name}_arialbl"' : "") + "\x3e" + (a.title ? '\x3cspan id\x3d"cke_{name}_arialbl" class\x3d"cke_voice_label"\x3e{voiceLabel}\x3c/span\x3e' : "") + '\x3c{outerEl} class\x3d"cke_inner cke_reset" role\x3d"presentation"\x3e{topHtml}\x3c{outerEl} id\x3d"{contentId}" class\x3d"cke_contents cke_reset" role\x3d"presentation"\x3e\x3c/{outerEl}\x3e{bottomHtml}\x3c/{outerEl}\x3e\x3c/{outerEl}\x3e'),
              e = CKEDITOR.dom.element.createFromHtml(d.output({ id: a.id, name: e, langDir: a.lang.dir, langCode: a.langCode, voiceLabel: a.title, topHtml: h ? '\x3cspan id\x3d"' + a.ui.spaceId("top") + '" class\x3d"cke_top cke_reset_all" role\x3d"presentation" style\x3d"height:auto"\x3e' + h + "\x3c/span\x3e" : "", contentId: a.ui.spaceId("contents"), bottomHtml: b ? '\x3cspan id\x3d"' + a.ui.spaceId("bottom") + '" class\x3d"cke_bottom cke_reset_all" role\x3d"presentation"\x3e' + b + "\x3c/span\x3e" : "", outerEl: CKEDITOR.env.ie ? "span" : "div" }));g == CKEDITOR.ELEMENT_MODE_REPLACE ? (c.hide(), e.insertAfter(c)) : c.append(e);a.container = e;a.ui.contentsElement = a.ui.space("contents");h && a.ui.space("top").unselectable();b && a.ui.space("bottom").unselectable();c = a.config.width;g = a.config.height;c && e.setStyle("width", CKEDITOR.tools.cssLength(c));g && a.ui.space("contents").setStyle("height", CKEDITOR.tools.cssLength(g));e.disableContextMenu();CKEDITOR.env.webkit && e.on("focus", function () {
            a.focus();
          });a.fireOnce("uiReady");
        }CKEDITOR.replace = function (a, e) {
          return c(a, e, null, CKEDITOR.ELEMENT_MODE_REPLACE);
        };CKEDITOR.appendTo = function (a, e, g) {
          return c(a, e, g, CKEDITOR.ELEMENT_MODE_APPENDTO);
        };CKEDITOR.replaceAll = function () {
          for (var a = document.getElementsByTagName("textarea"), e = 0; e < a.length; e++) {
            var c = null,
                g = a[e];if (g.name || g.id) {
              if ("string" == typeof arguments[0]) {
                if (!new RegExp("(?:^|\\s)" + arguments[0] + "(?:$|\\s)").test(g.className)) continue;
              } else if ("function" == typeof arguments[0] && (c = {}, !1 === arguments[0](g, c))) continue;this.replace(g, c);
            }
          }
        };CKEDITOR.editor.prototype.addMode = function (a, e) {
          (this._.modes || (this._.modes = {}))[a] = e;
        };CKEDITOR.editor.prototype.setMode = function (a, e) {
          var c = this,
              g = this._.modes;if (a != c.mode && g && g[a]) {
            c.fire("beforeSetMode", a);if (c.mode) {
              var h = c.checkDirty(),
                  g = c._.previousModeData,
                  b,
                  d = 0;c.fire("beforeModeUnload");
              c.editable(0);c._.previousMode = c.mode;c._.previousModeData = b = c.getData(1);"source" == c.mode && g == b && (c.fire("lockSnapshot", { forceUpdate: !0 }), d = 1);(c.ui.space("contents") || c.ui.contentsElement).setHtml("");c.mode = "";
            } else c._.previousModeData = c.getData(1);this._.modes[a](function () {
              c.mode = a;void 0 !== h && !h && c.resetDirty();d ? c.fire("unlockSnapshot") : "wysiwyg" == a && c.fire("saveSnapshot");setTimeout(function () {
                c.isDestroyed() || c.isDetached() || (c.fire("mode"), e && e.call(c));
              }, 0);
            });
          }
        };CKEDITOR.editor.prototype.resize = function (a, c, g, h) {
          var m = this.container,
              b = this.ui.space("contents"),
              d = CKEDITOR.env.webkit && this.document && this.document.getWindow().$.frameElement;h = h ? this.container.getFirst(function (a) {
            return a.type == CKEDITOR.NODE_ELEMENT && a.hasClass("cke_inner");
          }) : m;if (a || 0 === a) a = CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(a));h.setSize("width", a, !0);d && (d.style.width = "1%");c = CKEDITOR.tools.convertToPx(CKEDITOR.tools.cssLength(c));var f = (h.$.offsetHeight || 0) - (b.$.clientHeight || 0),
              m = Math.max(c - (g ? 0 : f), 0);
          c = g ? c + f : c;b.setStyle("height", CKEDITOR.tools.cssLength(m));d && (d.style.width = "100%");this.fire("resize", { outerHeight: c, contentsHeight: m, outerWidth: a || h.getSize("width") });
        };CKEDITOR.editor.prototype.getResizable = function (a) {
          return a ? this.ui.space("contents") : this.container;
        };CKEDITOR.domReady(function () {
          CKEDITOR.replaceClass && CKEDITOR.replaceAll(CKEDITOR.replaceClass);
        });
      }(), CKEDITOR.config.startupMode = "wysiwyg", function () {
        function c(d) {
          var f = d.editor,
              c = d.data.path,
              e = c.blockLimit,
              g = d.data.selection,
              k = g.getRanges()[0],
              l;if (CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.needsBrFiller) if (g = h(g, c)) g.appendBogus(), l = CKEDITOR.env.ie && !CKEDITOR.env.edge || CKEDITOR.env.edge && f._.previousActive;b(f, c.block, e) && k.collapsed && !k.getCommonAncestor().isReadOnly() && (c = k.clone(), c.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS), e = new CKEDITOR.dom.walker(c), e.guard = function (b) {
            return !a(b) || b.type == CKEDITOR.NODE_COMMENT || b.isReadOnly();
          }, !e.checkForward() || c.checkStartOfBlock() && c.checkEndOfBlock()) && (f = k.fixBlock(!0, f.activeEnterMode == CKEDITOR.ENTER_DIV ? "div" : "p"), CKEDITOR.env.needsBrFiller || (f = f.getFirst(a)) && f.type == CKEDITOR.NODE_TEXT && CKEDITOR.tools.trim(f.getText()).match(/^(?:&nbsp;|\xa0)$/) && f.remove(), l = 1, d.cancel());l && k.select();
        }function h(b, d) {
          if (b.isFake) return 0;var f = d.block || d.blockLimit,
              c = f && f.getLast(a);if (!(!f || !f.isBlockBoundary() || c && c.type == CKEDITOR.NODE_ELEMENT && c.isBlockBoundary() || f.is("pre") || f.getBogus())) return f;
        }function g(a) {
          var b = a.data.getTarget();b.is("input") && (b = b.getAttribute("type"), "submit" != b && "reset" != b || a.data.preventDefault());
        }function a(a) {
          return y(a) && r(a);
        }function e(a, b) {
          return function (d) {
            var f = d.data.$.toElement || d.data.$.fromElement || d.data.$.relatedTarget;(f = f && f.nodeType == CKEDITOR.NODE_ELEMENT ? new CKEDITOR.dom.element(f) : null) && (b.equals(f) || b.contains(f)) || a.call(this, d);
          };
        }function k(a) {
          return !!a.getRanges()[0].startPath().contains({ table: 1, ul: 1, ol: 1, dl: 1 });
        }function l(b) {
          function d(b) {
            var c = { table: 1, ul: 1, ol: 1, dl: 1 };return function (d, e) {
              e && d.type == CKEDITOR.NODE_ELEMENT && d.is(c) && (f = d);if (!(e || !a(d) || b && v(d))) return !1;
            };
          }var f,
              c = b.getRanges()[0],
              e = b.root;return k(b) && (b = c.clone(), b.collapse(1), b.setStartAt(e, CKEDITOR.POSITION_AFTER_START), e = new CKEDITOR.dom.walker(b), e.guard = d(), e.checkBackward(), f) ? (b = c.clone(), b.collapse(), b.setEndAt(f, CKEDITOR.POSITION_AFTER_END), e = new CKEDITOR.dom.walker(b), e.guard = d(!0), f = !1, e.checkForward(), f) : null;
        }function m(a) {
          return a.block.getParent().getChildCount();
        }function b(a, b, d) {
          return !1 !== a.config.autoParagraph && a.activeEnterMode != CKEDITOR.ENTER_BR && (a.editable().equals(d) && !b || b && "true" == b.getAttribute("contenteditable"));
        }function d(a) {
          return a.activeEnterMode != CKEDITOR.ENTER_BR && !1 !== a.config.autoParagraph ? a.activeEnterMode == CKEDITOR.ENTER_DIV ? "div" : "p" : !1;
        }function f(a) {
          a && a.isEmptyInlineRemoveable() && a.remove();
        }function p(a) {
          var b = a.editor;b.getSelection().scrollIntoView();setTimeout(function () {
            b.fire("saveSnapshot");
          }, 0);
        }function w(a, b, d) {
          var f = a.getCommonAncestor(b);for (b = a = d ? b : a; (a = a.getParent()) && !f.equals(a) && 1 == a.getChildCount();) b = a;b.remove();
        }var y,
            r,
            t,
            v,
            B,
            n,
            x,
            q,
            u,
            z,
            A = { ul: 1, ol: 1, dl: 1 };CKEDITOR.editable = CKEDITOR.tools.createClass({ base: CKEDITOR.dom.element, $: function (a, b) {
            this.base(b.$ || b);this.editor = a;this.status = "unloaded";this.hasFocus = !1;this.setup();
          }, proto: { focus: function () {
              var a;if (CKEDITOR.env.webkit && !this.hasFocus && (a = this.editor._.previousActive || this.getDocument().getActive(), this.contains(a))) {
                a.focus();return;
              }CKEDITOR.env.edge && 14 < CKEDITOR.env.version && !this.hasFocus && this.getDocument().equals(CKEDITOR.document) && (this.editor._.previousScrollTop = this.$.scrollTop);try {
                if (!CKEDITOR.env.ie || CKEDITOR.env.edge && 14 < CKEDITOR.env.version || !this.getDocument().equals(CKEDITOR.document)) {
                  if (CKEDITOR.env.chrome) {
                    var b = this.$.scrollTop;this.$.focus();this.$.scrollTop = b;
                  } else this.$.focus();
                } else this.$.setActive();
              } catch (d) {
                if (!CKEDITOR.env.ie) throw d;
              }CKEDITOR.env.safari && !this.isInline() && (a = CKEDITOR.document.getActive(), a.equals(this.getWindow().getFrame()) || this.getWindow().focus());
            }, on: function (a, b) {
              var d = Array.prototype.slice.call(arguments, 0);CKEDITOR.env.ie && /^focus|blur$/.exec(a) && (a = "focus" == a ? "focusin" : "focusout", b = e(b, this), d[0] = a, d[1] = b);return CKEDITOR.dom.element.prototype.on.apply(this, d);
            }, attachListener: function (a) {
              !this._.listeners && (this._.listeners = []);var b = Array.prototype.slice.call(arguments, 1),
                  b = a.on.apply(a, b);this._.listeners.push(b);return b;
            }, clearListeners: function () {
              var a = this._.listeners;try {
                for (; a.length;) a.pop().removeListener();
              } catch (b) {}
            }, restoreAttrs: function () {
              var a = this._.attrChanges,
                  b,
                  d;for (d in a) a.hasOwnProperty(d) && (b = a[d], null !== b ? this.setAttribute(d, b) : this.removeAttribute(d));
            }, attachClass: function (a) {
              var b = this.getCustomData("classes");this.hasClass(a) || (!b && (b = []), b.push(a), this.setCustomData("classes", b), this.addClass(a));
            }, changeAttr: function (a, b) {
              var d = this.getAttribute(a);b !== d && (!this._.attrChanges && (this._.attrChanges = {}), a in this._.attrChanges || (this._.attrChanges[a] = d), this.setAttribute(a, b));
            }, insertText: function (a) {
              this.editor.focus();this.insertHtml(this.transformPlainTextToHtml(a), "text");
            }, transformPlainTextToHtml: function (a) {
              var b = this.editor.getSelection().getStartElement().hasAscendant("pre", !0) ? CKEDITOR.ENTER_BR : this.editor.activeEnterMode;return CKEDITOR.tools.transformPlainTextToHtml(a, b);
            }, insertHtml: function (a, b, d) {
              var f = this.editor;f.focus();f.fire("saveSnapshot");d || (d = f.getSelection().getRanges()[0]);n(this, b || "html", a, d);d.select();p(this);this.editor.fire("afterInsertHtml", {});
            }, insertHtmlIntoRange: function (a, b, d) {
              n(this, d || "html", a, b);this.editor.fire("afterInsertHtml", { intoRange: b });
            }, insertElement: function (b, d) {
              var f = this.editor;f.focus();f.fire("saveSnapshot");var c = f.activeEnterMode,
                  f = f.getSelection(),
                  e = b.getName(),
                  e = CKEDITOR.dtd.$block[e];d || (d = f.getRanges()[0]);this.insertElementIntoRange(b, d) && (d.moveToPosition(b, CKEDITOR.POSITION_AFTER_END), e && ((e = b.getNext(function (b) {
                return a(b) && !v(b);
              })) && e.type == CKEDITOR.NODE_ELEMENT && e.is(CKEDITOR.dtd.$block) ? e.getDtd()["#"] ? d.moveToElementEditStart(e) : d.moveToElementEditEnd(b) : e || c == CKEDITOR.ENTER_BR || (e = d.fixBlock(!0, c == CKEDITOR.ENTER_DIV ? "div" : "p"), d.moveToElementEditStart(e))));
              f.selectRanges([d]);p(this);
            }, insertElementIntoSelection: function (a) {
              this.insertElement(a);
            }, insertElementIntoRange: function (a, b) {
              var d = this.editor,
                  c = d.config.enterMode,
                  e = a.getName(),
                  g = CKEDITOR.dtd.$block[e];if (b.checkReadOnly()) return !1;b.deleteContents(1);b.startContainer.type == CKEDITOR.NODE_ELEMENT && (b.startContainer.is({ tr: 1, table: 1, tbody: 1, thead: 1, tfoot: 1 }) ? x(b) : b.startContainer.is(CKEDITOR.dtd.$list) && q(b));var k, h;if (g) for (; (k = b.getCommonAncestor(0, 1)) && (h = CKEDITOR.dtd[k.getName()]) && (!h || !h[e]);) if (k.getName() in CKEDITOR.dtd.span) {
                var g = b.splitElement(k),
                    l = b.createBookmark();f(k);f(g);b.moveToBookmark(l);
              } else b.checkStartOfBlock() && b.checkEndOfBlock() ? (b.setStartBefore(k), b.collapse(!0), k.remove()) : b.splitBlock(c == CKEDITOR.ENTER_DIV ? "div" : "p", d.editable());b.insertNode(a);return !0;
            }, setData: function (a, b) {
              b || (a = this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.fixInitialSelection();"unloaded" == this.status && (this.status = "ready");this.editor.fire("dataReady");
            }, getData: function (a) {
              var b = this.getHtml();
              a || (b = this.editor.dataProcessor.toDataFormat(b));return b;
            }, setReadOnly: function (a) {
              this.setAttribute("contenteditable", !a);
            }, detach: function () {
              this.status = "detached";this.editor.setData(this.editor.getData(), { internal: !0 });this.clearListeners();try {
                this._.cleanCustomData();
              } catch (a) {
                if (!CKEDITOR.env.ie || -2146828218 !== a.number) throw a;
              }this.editor.fire("contentDomUnload");delete this.editor.document;delete this.editor.window;delete this.editor;
            }, isInline: function () {
              return this.getDocument().equals(CKEDITOR.document);
            },
            fixInitialSelection: function () {
              function a() {
                var b = d.getDocument().$,
                    f = b.getSelection(),
                    c;a: if (f.anchorNode && f.anchorNode == d.$) c = !0;else {
                  if (CKEDITOR.env.webkit && (c = d.getDocument().getActive()) && c.equals(d) && !f.anchorNode) {
                    c = !0;break a;
                  }c = void 0;
                }c && (c = new CKEDITOR.dom.range(d), c.moveToElementEditStart(d), b = b.createRange(), b.setStart(c.startContainer.$, c.startOffset), b.collapse(!0), f.removeAllRanges(), f.addRange(b));
              }var d = this;if (CKEDITOR.env.ie && (9 > CKEDITOR.env.version || CKEDITOR.env.quirks)) this.hasFocus && (this.focus(), function b() {
                var a = d.getDocument().$,
                    f = a.selection,
                    c = d.getDocument().getActive();"None" == f.type && c.equals(d) && (f = new CKEDITOR.dom.range(d), a = a.body.createTextRange(), f.moveToElementEditStart(d), f = f.startContainer, f.type != CKEDITOR.NODE_ELEMENT && (f = f.getParent()), a.moveToElementText(f.$), a.collapse(!0), a.select());
              }());else if (this.hasFocus) this.focus(), a();else this.once("focus", function () {
                a();
              }, null, null, -999);
            }, getHtmlFromRange: function (a) {
              if (a.collapsed) return new CKEDITOR.dom.documentFragment(a.document);
              a = { doc: this.getDocument(), range: a.clone() };u.eol.detect(a, this);u.bogus.exclude(a);u.cell.shrink(a);a.fragment = a.range.cloneContents();u.tree.rebuild(a, this);u.eol.fix(a, this);return new CKEDITOR.dom.documentFragment(a.fragment.$);
            }, extractHtmlFromRange: function (a, b) {
              var d = z,
                  f = { range: a, doc: a.document },
                  c = this.getHtmlFromRange(a);if (a.collapsed) return a.optimize(), c;a.enlarge(CKEDITOR.ENLARGE_INLINE, 1);d.table.detectPurge(f);f.bookmark = a.createBookmark();delete f.range;var e = this.editor.createRange();
              e.moveToPosition(f.bookmark.startNode, CKEDITOR.POSITION_BEFORE_START);f.targetBookmark = e.createBookmark();d.list.detectMerge(f, this);d.table.detectRanges(f, this);d.block.detectMerge(f, this);f.tableContentsRanges ? (d.table.deleteRanges(f), a.moveToBookmark(f.bookmark), f.range = a) : (a.moveToBookmark(f.bookmark), f.range = a, a.extractContents(d.detectExtractMerge(f)));a.moveToBookmark(f.targetBookmark);a.optimize();d.fixUneditableRangePosition(a);d.list.merge(f, this);d.table.purge(f, this);d.block.merge(f, this);
              if (b) {
                d = a.startPath();if (f = a.checkStartOfBlock() && a.checkEndOfBlock() && d.block && !a.root.equals(d.block)) {
                  a: {
                    var f = d.block.getElementsByTag("span"),
                        e = 0,
                        g;if (f) for (; g = f.getItem(e++);) if (!r(g)) {
                      f = !0;break a;
                    }f = !1;
                  }f = !f;
                }f && (a.moveToPosition(d.block, CKEDITOR.POSITION_BEFORE_START), d.block.remove());
              } else d.autoParagraph(this.editor, a), t(a.startContainer) && a.startContainer.appendBogus();a.startContainer.mergeSiblings();return c;
            }, setup: function () {
              var b = this.editor;this.attachListener(b, "beforeGetData", function () {
                var a = this.getData();this.is("textarea") || !1 !== b.config.ignoreEmptyParagraph && (a = a.replace(B, function (a, b) {
                  return b;
                }));b.setData(a, null, 1);
              }, this);this.attachListener(b, "getSnapshot", function (a) {
                a.data = this.getData(1);
              }, this);this.attachListener(b, "afterSetData", function () {
                this.setData(b.getData(1));
              }, this);this.attachListener(b, "loadSnapshot", function (a) {
                this.setData(a.data, 1);
              }, this);this.attachListener(b, "beforeFocus", function () {
                var a = b.getSelection();(a = a && a.getNative()) && "Control" == a.type || this.focus();
              }, this);this.attachListener(b, "insertHtml", function (a) {
                this.insertHtml(a.data.dataValue, a.data.mode, a.data.range);
              }, this);this.attachListener(b, "insertElement", function (a) {
                this.insertElement(a.data);
              }, this);this.attachListener(b, "insertText", function (a) {
                this.insertText(a.data);
              }, this);this.setReadOnly(b.readOnly);this.attachClass("cke_editable");b.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? this.attachClass("cke_editable_inline") : b.elementMode != CKEDITOR.ELEMENT_MODE_REPLACE && b.elementMode != CKEDITOR.ELEMENT_MODE_APPENDTO || this.attachClass("cke_editable_themed");this.attachClass("cke_contents_" + b.config.contentsLangDirection);b.keystrokeHandler.blockedKeystrokes[8] = +b.readOnly;b.keystrokeHandler.attach(this);this.on("blur", function () {
                this.hasFocus = !1;
              }, null, null, -1);this.on("focus", function () {
                this.hasFocus = !0;
              }, null, null, -1);if (CKEDITOR.env.webkit) this.on("scroll", function () {
                b._.previousScrollTop = b.editable().$.scrollTop;
              }, null, null, -1);if (CKEDITOR.env.edge && 14 < CKEDITOR.env.version) {
                var d = function () {
                  var a = b.editable();
                  null != b._.previousScrollTop && a.getDocument().equals(CKEDITOR.document) && (a.$.scrollTop = b._.previousScrollTop, b._.previousScrollTop = null, this.removeListener("scroll", d));
                };this.on("scroll", d);
              }b.focusManager.add(this);this.equals(CKEDITOR.document.getActive()) && (this.hasFocus = !0, b.once("contentDom", function () {
                b.focusManager.focus(this);
              }, this));this.isInline() && this.changeAttr("tabindex", b.tabIndex);if (!this.is("textarea")) {
                b.document = this.getDocument();b.window = this.getWindow();var f = b.document;this.changeAttr("spellcheck", !b.config.disableNativeSpellChecker);var c = b.config.contentsLangDirection;this.getDirection(1) != c && this.changeAttr("dir", c);var e = CKEDITOR.getCss();if (e) {
                  var c = f.getHead(),
                      h = c.getCustomData("stylesheet");h ? e != h.getText() && (CKEDITOR.env.ie && 9 > CKEDITOR.env.version ? h.$.styleSheet.cssText = e : h.setText(e)) : (e = f.appendStyleText(e), e = new CKEDITOR.dom.element(e.ownerNode || e.owningElement), c.setCustomData("stylesheet", e), e.data("cke-temp", 1));
                }c = f.getCustomData("stylesheet_ref") || 0;f.setCustomData("stylesheet_ref", c + 1);this.setCustomData("cke_includeReadonly", !b.config.disableReadonlyStyling);this.attachListener(this, "click", function (a) {
                  a = a.data;var b = new CKEDITOR.dom.elementPath(a.getTarget(), this).contains("a");b && 2 != a.$.button && b.isReadOnly() && a.preventDefault();
                });var p = { 8: 1, 46: 1 };this.attachListener(b, "key", function (a) {
                  if (b.readOnly) return !0;var d = a.data.domEvent.getKey(),
                      f,
                      c = b.getSelection();if (0 !== c.getRanges().length) {
                    if (d in p) {
                      var e;a = c.getRanges()[0];var g = a.startPath(),
                          h,
                          w,
                          n,
                          d = 8 == d,
                          q = !1;if (CKEDITOR.env.ie && 11 > CKEDITOR.env.version && c.getSelectedElement()) e = c.getSelectedElement();else if (k(c)) {
                        var t = new CKEDITOR.dom.walker(a),
                            v = a.collapsed ? a.startContainer : t.next(),
                            q = !1,
                            u;if (a.checkStartOfBlock()) {
                          u = a.startPath().block || a.startPath().blockLimit;var K = u.getName();u = -1 !== CKEDITOR.tools.array.indexOf(["dd", "dt", "li"], K) && null === u.getPrevious();
                        } else u = !1;if (u) {
                          for (; v && !q;) q = v.$.nodeName.toLowerCase(), q = !!A[q], v = t.next();t = m(a.startPath());v = m(a.endPath());q = q || t !== v;
                        } else q = void 0;q || (e = l(c));
                      }e || q ? (b.fire("saveSnapshot"), q ? ((f = a.startContainer.getAscendant(A, !0)) ? (a.setStart(f, 0), a.enlarge(CKEDITOR.ENLARGE_ELEMENT), e = a) : e = null, e.deleteContents()) : (a.moveToPosition(e, CKEDITOR.POSITION_BEFORE_START), e.remove()), a.select(), b.fire("saveSnapshot"), f = 1) : a.collapsed && ((h = g.block) && (n = h[d ? "getPrevious" : "getNext"](y)) && n.type == CKEDITOR.NODE_ELEMENT && n.is("table") && a[d ? "checkStartOfBlock" : "checkEndOfBlock"]() ? (b.fire("saveSnapshot"), a[d ? "checkEndOfBlock" : "checkStartOfBlock"]() && h.remove(), a["moveToElementEdit" + (d ? "End" : "Start")](n), a.select(), b.fire("saveSnapshot"), f = 1) : g.blockLimit && g.blockLimit.is("td") && (w = g.blockLimit.getAscendant("table")) && a.checkBoundaryOfElement(w, d ? CKEDITOR.START : CKEDITOR.END) && (n = w[d ? "getPrevious" : "getNext"](y)) ? (b.fire("saveSnapshot"), a["moveToElementEdit" + (d ? "End" : "Start")](n), a.checkStartOfBlock() && a.checkEndOfBlock() ? n.remove() : a.select(), b.fire("saveSnapshot"), f = 1) : (w = g.contains(["td", "th", "caption"])) && a.checkBoundaryOfElement(w, d ? CKEDITOR.START : CKEDITOR.END) && (f = 1));
                    }return !f;
                  }
                });b.blockless && CKEDITOR.env.ie && CKEDITOR.env.needsBrFiller && this.attachListener(this, "keyup", function (d) {
                  d.data.getKeystroke() in p && !this.getFirst(a) && (this.appendBogus(), d = b.createRange(), d.moveToPosition(this, CKEDITOR.POSITION_AFTER_START), d.select());
                });this.attachListener(this, "dblclick", function (a) {
                  if (b.readOnly) return !1;a = { element: a.data.getTarget() };b.fire("doubleclick", a);
                });CKEDITOR.env.ie && this.attachListener(this, "click", g);CKEDITOR.env.ie && !CKEDITOR.env.edge || this.attachListener(this, "mousedown", function (a) {
                  var d = a.data.getTarget();d.is("img", "hr", "input", "textarea", "select") && !d.isReadOnly() && (b.getSelection().selectElement(d), d.is("input", "textarea", "select") && a.data.preventDefault());
                });CKEDITOR.env.edge && this.attachListener(this, "mouseup", function (a) {
                  (a = a.data.getTarget()) && a.is("img") && !a.isReadOnly() && b.getSelection().selectElement(a);
                });CKEDITOR.env.gecko && this.attachListener(this, "mouseup", function (a) {
                  if (2 == a.data.$.button && (a = a.data.getTarget(), !a.getAscendant("table") && !a.getOuterHtml().replace(B, ""))) {
                    var d = b.createRange();d.moveToElementEditStart(a);d.select(!0);
                  }
                });CKEDITOR.env.webkit && (this.attachListener(this, "click", function (a) {
                  a.data.getTarget().is("input", "select") && a.data.preventDefault();
                }), this.attachListener(this, "mouseup", function (a) {
                  a.data.getTarget().is("input", "textarea") && a.data.preventDefault();
                }));CKEDITOR.env.webkit && this.attachListener(b, "key", function (a) {
                  if (b.readOnly) return !0;var d = a.data.domEvent.getKey();if (d in p && (a = b.getSelection(), 0 !== a.getRanges().length)) {
                    var d = 8 == d,
                        f = a.getRanges()[0];a = f.startPath();if (f.collapsed) a: {
                      var c = a.block;if (c && f[d ? "checkStartOfBlock" : "checkEndOfBlock"](!0) && f.moveToClosestEditablePosition(c, !d) && f.collapsed) {
                        if (f.startContainer.type == CKEDITOR.NODE_ELEMENT) {
                          var e = f.startContainer.getChild(f.startOffset - (d ? 1 : 0));if (e && e.type == CKEDITOR.NODE_ELEMENT && e.is("hr")) {
                            b.fire("saveSnapshot");e.remove();a = !0;break a;
                          }
                        }f = f.startPath().block;if (!f || f && f.contains(c)) a = void 0;else {
                          b.fire("saveSnapshot");var g;(g = (d ? f : c).getBogus()) && g.remove();
                          g = b.getSelection();e = g.createBookmarks();(d ? c : f).moveChildren(d ? f : c, !1);a.lastElement.mergeSiblings();w(c, f, !d);g.selectBookmarks(e);a = !0;
                        }
                      } else a = !1;
                    } else d = f, g = a.block, f = d.endPath().block, g && f && !g.equals(f) ? (b.fire("saveSnapshot"), (c = g.getBogus()) && c.remove(), d.enlarge(CKEDITOR.ENLARGE_INLINE), d.deleteContents(), f.getParent() && (f.moveChildren(g, !1), a.lastElement.mergeSiblings(), w(g, f, !0)), d = b.getSelection().getRanges()[0], d.collapse(1), d.optimize(), "" === d.startContainer.getHtml() && d.startContainer.appendBogus(), d.select(), a = !0) : a = !1;if (!a) return;b.getSelection().scrollIntoView();b.fire("saveSnapshot");return !1;
                  }
                }, this, null, 100);
              }
            }, getUniqueId: function () {
              var a;try {
                this._.expandoNumber = a = CKEDITOR.dom.domObject.prototype.getUniqueId.call(this);
              } catch (b) {
                a = this._ && this._.expandoNumber;
              }return a;
            } }, _: { cleanCustomData: function () {
              this.removeClass("cke_editable");this.restoreAttrs();for (var a = this.removeCustomData("classes"); a && a.length;) this.removeClass(a.pop());if (!this.is("textarea")) {
                var a = this.getDocument(),
                    b = a.getHead();
                if (b.getCustomData("stylesheet")) {
                  var d = a.getCustomData("stylesheet_ref");--d ? a.setCustomData("stylesheet_ref", d) : (a.removeCustomData("stylesheet_ref"), b.removeCustomData("stylesheet").remove());
                }
              }
            } } });CKEDITOR.editor.prototype.editable = function (a) {
          var b = this._.editable;if (b && a) return 0;if (!arguments.length) return b;a ? b = a instanceof CKEDITOR.editable ? a : new CKEDITOR.editable(this, a) : (b && b.detach(), b = null);return this._.editable = b;
        };CKEDITOR.on("instanceLoaded", function (a) {
          var b = a.editor;b.on("insertElement", function (a) {
            a = a.data;a.type == CKEDITOR.NODE_ELEMENT && (a.is("input") || a.is("textarea")) && ("false" != a.getAttribute("contentEditable") && a.data("cke-editable", a.hasAttribute("contenteditable") ? "true" : "1"), a.setAttribute("contentEditable", !1));
          });b.on("selectionChange", function (a) {
            if (!b.readOnly) {
              var d = b.getSelection();d && !d.isLocked && (d = b.checkDirty(), b.fire("lockSnapshot"), c(a), b.fire("unlockSnapshot"), !d && b.resetDirty());
            }
          });
        });CKEDITOR.on("instanceCreated", function (a) {
          var b = a.editor;b.on("mode", function () {
            var a = b.editable();if (a && a.isInline()) {
              var d = b.title;a.changeAttr("role", "textbox");a.changeAttr("aria-multiline", "true");a.changeAttr("aria-label", d);d && a.changeAttr("title", d);var f = b.fire("ariaEditorHelpLabel", {}).label;if (f && (d = this.ui.space(this.elementMode == CKEDITOR.ELEMENT_MODE_INLINE ? "top" : "contents"))) {
                var c = CKEDITOR.tools.getNextId(),
                    f = CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"' + c + '" class\x3d"cke_voice_label"\x3e' + f + "\x3c/span\x3e");d.append(f);a.changeAttr("aria-describedby", c);
              }
            }
          });
        });
        CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");y = CKEDITOR.dom.walker.whitespaces(!0);r = CKEDITOR.dom.walker.bookmark(!1, !0);t = CKEDITOR.dom.walker.empty();v = CKEDITOR.dom.walker.bogus();B = /(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi;n = function () {
          function c(a) {
            return a.type == CKEDITOR.NODE_ELEMENT;
          }function e(a, b) {
            var d,
                f,
                g,
                k,
                h = [],
                l = b.range.startContainer;
            d = b.range.startPath();for (var l = p[l.getName()], m = 0, n = a.getChildren(), w = n.count(), L = -1, q = -1, t = 0, v = d.contains(p.$list); m < w; ++m) d = n.getItem(m), c(d) ? (g = d.getName(), v && g in CKEDITOR.dtd.$list ? h = h.concat(e(d, b)) : (k = !!l[g], "br" != g || !d.data("cke-eol") || m && m != w - 1 || (t = (f = m ? h[m - 1].node : n.getItem(m + 1)) && (!c(f) || !f.is("br")), f = f && c(f) && p.$block[f.getName()]), -1 != L || k || (L = m), k || (q = m), h.push({ isElement: 1, isLineBreak: t, isBlock: d.isBlockBoundary(), hasBlockSibling: f, node: d, name: g, allowed: k }), f = t = 0)) : h.push({ isElement: 0,
              node: d, allowed: 1 });-1 < L && (h[L].firstNotAllowed = 1);-1 < q && (h[q].lastNotAllowed = 1);return h;
          }function g(a, b) {
            var d = [],
                f = a.getChildren(),
                e = f.count(),
                k,
                h = 0,
                l = p[b],
                m = !a.is(p.$inline) || a.is("br");for (m && d.push(" "); h < e; h++) k = f.getItem(h), c(k) && !k.is(l) ? d = d.concat(g(k, b)) : d.push(k);m && d.push(" ");return d;
          }function k(a) {
            return c(a.startContainer) && a.startContainer.getChild(a.startOffset - 1);
          }function h(a) {
            return a && c(a) && (a.is(p.$removeEmpty) || a.is("a") && !a.isBlockBoundary());
          }function l(a, b, d, f) {
            var e = a.clone(),
                g,
                k;e.setEndAt(b, CKEDITOR.POSITION_BEFORE_END);(g = new CKEDITOR.dom.walker(e).next()) && c(g) && n[g.getName()] && (k = g.getPrevious()) && c(k) && !k.getParent().equals(a.startContainer) && d.contains(k) && f.contains(g) && g.isIdentical(k) && (g.moveChildren(k), g.remove(), l(a, b, d, f));
          }function m(a, b) {
            function d(a, b) {
              if (b.isBlock && b.isElement && !b.node.is("br") && c(a) && a.is("br")) return a.remove(), 1;
            }var f = b.endContainer.getChild(b.endOffset),
                e = b.endContainer.getChild(b.endOffset - 1);f && d(f, a[a.length - 1]);e && d(e, a[0]) && (b.setEnd(b.endContainer, b.endOffset - 1), b.collapse());
          }var p = CKEDITOR.dtd,
              n = { p: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, ul: 1, ol: 1, li: 1, pre: 1, dl: 1, blockquote: 1 },
              w = { p: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1 },
              L = CKEDITOR.tools.extend({}, p.$inline);delete L.br;return function (n, q, t, v) {
            var u = n.editor,
                x = !1,
                y;"unfiltered_html" == q && (q = "html", x = !0);if (!v.checkReadOnly()) {
              var I = new CKEDITOR.dom.elementPath(v.startContainer, v.root).blockLimit || v.root;q = { type: q, dontFilter: x, editable: n, editor: u, range: v, blockLimit: I,
                mergeCandidates: [], zombies: [] };var x = q.range,
                  I = q.mergeCandidates,
                  r = "html" === q.type,
                  z,
                  A,
                  W,
                  Z,
                  aa;"text" == q.type && x.shrink(CKEDITOR.SHRINK_ELEMENT, !0, !1) && (A = CKEDITOR.dom.element.createFromHtml("\x3cspan\x3e\x26nbsp;\x3c/span\x3e", x.document), x.insertNode(A), x.setStartAfter(A));W = new CKEDITOR.dom.elementPath(x.startContainer);q.endPath = Z = new CKEDITOR.dom.elementPath(x.endContainer);if (!x.collapsed) {
                z = Z.block || Z.blockLimit;var ca = x.getCommonAncestor();z && !z.equals(ca) && !z.contains(ca) && x.checkEndOfBlock() && q.zombies.push(z);x.deleteContents();
              }for (; (aa = k(x)) && c(aa) && aa.isBlockBoundary() && W.contains(aa);) x.moveToPosition(aa, CKEDITOR.POSITION_BEFORE_END);l(x, q.blockLimit, W, Z);A && (x.setEndBefore(A), x.collapse(), A.remove());A = x.startPath();if (z = A.contains(h, !1, 1)) y = x.splitElement(z), q.inlineStylesRoot = z, q.inlineStylesPeak = A.lastElement;A = x.createBookmark();r && (f(z), f(y));(z = A.startNode.getPrevious(a)) && c(z) && h(z) && I.push(z);(z = A.startNode.getNext(a)) && c(z) && h(z) && I.push(z);for (z = A.startNode; (z = z.getParent()) && h(z);) I.push(z);x.moveToBookmark(A);y = n.getHtml();y = "" === y || y.match(B);u.enterMode === CKEDITOR.ENTER_DIV && y && ((u = n.getFirst()) && u.remove(), v.setStartAt(n, CKEDITOR.POSITION_AFTER_START), v.collapse(!0));if (n = t) {
                n = q.range;if ("text" == q.type && q.inlineStylesRoot) {
                  v = q.inlineStylesPeak;u = v.getDocument().createText("{cke-peak}");for (y = q.inlineStylesRoot.getParent(); !v.equals(y);) u = u.appendTo(v.clone()), v = v.getParent();t = u.getOuterHtml().split("{cke-peak}").join(t);
                }v = q.blockLimit.getName();if (/^\s+|\s+$/.test(t) && "span" in CKEDITOR.dtd[v]) {
                  var X = '\x3cspan data-cke-marker\x3d"1"\x3e\x26nbsp;\x3c/span\x3e';t = X + t + X;
                }t = q.editor.dataProcessor.toHtml(t, { context: null, fixForBody: !1, protectedWhitespaces: !!X, dontFilter: q.dontFilter, filter: q.editor.activeFilter, enterMode: q.editor.activeEnterMode });v = n.document.createElement("body");v.setHtml(t);X && (v.getFirst().remove(), v.getLast().remove());if ((X = n.startPath().block) && (1 != X.getChildCount() || !X.getBogus())) a: {
                  var Q;if (1 == v.getChildCount() && c(Q = v.getFirst()) && Q.is(w) && !Q.hasAttribute("contenteditable")) {
                    X = Q.getElementsByTag("*");n = 0;for (y = X.count(); n < y; n++) if (u = X.getItem(n), !u.is(L)) break a;Q.moveChildren(Q.getParent(1));Q.remove();
                  }
                }q.dataWrapper = v;n = t;
              }if (n) {
                Q = q.range;n = Q.document;v = q.blockLimit;y = 0;var J,
                    X = [],
                    ha,
                    R;t = A = 0;var ba,
                    u = Q.startContainer;aa = q.endPath.elements[0];var Y,
                    x = aa.getPosition(u),
                    I = !!aa.getCommonAncestor(u) && x != CKEDITOR.POSITION_IDENTICAL && !(x & CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_IS_CONTAINED),
                    u = e(q.dataWrapper, q);for (q.editor.enterMode !== CKEDITOR.ENTER_BR && m(u, Q); y < u.length; y++) {
                  x = u[y];if (r = x.isLineBreak) r = Q, z = v, Z = W = void 0, x.hasBlockSibling ? r = 1 : (W = r.startContainer.getAscendant(p.$block, 1)) && W.is({ div: 1, p: 1 }) ? (Z = W.getPosition(z), Z == CKEDITOR.POSITION_IDENTICAL || Z == CKEDITOR.POSITION_CONTAINS ? r = 0 : (z = r.splitElement(W), r.moveToPosition(z, CKEDITOR.POSITION_AFTER_START), r = 1)) : r = 0;if (r) t = 0 < y;else {
                    r = Q.startPath();!x.isBlock && b(q.editor, r.block, r.blockLimit) && (R = d(q.editor)) && (R = n.createElement(R), R.appendBogus(), Q.insertNode(R), CKEDITOR.env.needsBrFiller && (J = R.getBogus()) && J.remove(), Q.moveToPosition(R, CKEDITOR.POSITION_BEFORE_END));if ((r = Q.startPath().block) && !r.equals(ha)) {
                      if (J = r.getBogus()) J.remove(), X.push(r);ha = r;
                    }x.firstNotAllowed && (A = 1);if (A && x.isElement) {
                      r = Q.startContainer;for (z = null; r && !p[r.getName()][x.name];) {
                        if (r.equals(v)) {
                          r = null;break;
                        }z = r;r = r.getParent();
                      }if (r) z && (ba = Q.splitElement(z), q.zombies.push(ba), q.zombies.push(z));else {
                        z = v.getName();Y = !y;r = y == u.length - 1;z = g(x.node, z);W = [];Z = z.length;for (var ca = 0, ga = void 0, la = 0, ma = -1; ca < Z; ca++) ga = z[ca], " " == ga ? (la || Y && !ca || (W.push(new CKEDITOR.dom.text(" ")), ma = W.length), la = 1) : (W.push(ga), la = 0);r && ma == W.length && W.pop();Y = W;
                      }
                    }if (Y) {
                      for (; r = Y.pop();) Q.insertNode(r);Y = 0;
                    } else Q.insertNode(x.node);x.lastNotAllowed && y < u.length - 1 && ((ba = I ? aa : ba) && Q.setEndAt(ba, CKEDITOR.POSITION_AFTER_START), A = 0);Q.collapse();
                  }
                }1 != u.length ? J = !1 : (J = u[0], J = J.isElement && "false" == J.node.getAttribute("contenteditable"));J && (t = !0, r = u[0].node, Q.setStartAt(r, CKEDITOR.POSITION_BEFORE_START), Q.setEndAt(r, CKEDITOR.POSITION_AFTER_END));
                q.dontMoveCaret = t;q.bogusNeededBlocks = X;
              }J = q.range;var ja;Y = q.bogusNeededBlocks;for (ha = J.createBookmark(); R = q.zombies.pop();) R.getParent() && (ba = J.clone(), ba.moveToElementEditStart(R), ba.removeEmptyBlocksAtEnd());if (Y) for (; R = Y.pop();) CKEDITOR.env.needsBrFiller ? R.appendBogus() : R.append(J.document.createText(" "));for (; R = q.mergeCandidates.pop();) R.mergeSiblings();CKEDITOR.env.webkit && J.startPath() && (R = J.startPath(), R.block ? R.block.$.normalize() : R.blockLimit && R.blockLimit.$.normalize());J.moveToBookmark(ha);
              if (!q.dontMoveCaret) {
                for (R = k(J); R && c(R) && !R.is(p.$empty);) {
                  if (R.isBlockBoundary()) J.moveToPosition(R, CKEDITOR.POSITION_BEFORE_END);else {
                    if (h(R) && R.getHtml().match(/(\s|&nbsp;)$/g)) {
                      ja = null;break;
                    }ja = J.clone();ja.moveToPosition(R, CKEDITOR.POSITION_BEFORE_END);
                  }R = R.getLast(a);
                }ja && J.moveToRange(ja);
              }
            }
          };
        }();x = function () {
          function a(b) {
            b = new CKEDITOR.dom.walker(b);b.guard = function (a, b) {
              if (b) return !1;if (a.type == CKEDITOR.NODE_ELEMENT) return a.is(CKEDITOR.dtd.$tableContent);
            };b.evaluator = function (a) {
              return a.type == CKEDITOR.NODE_ELEMENT;
            };return b;
          }function b(a, d, f) {
            d = a.getDocument().createElement(d);a.append(d, f);return d;
          }function d(a) {
            var b = a.count(),
                f;for (b; 0 < b--;) f = a.getItem(b), CKEDITOR.tools.trim(f.getHtml()) || (f.appendBogus(), CKEDITOR.env.ie && 9 > CKEDITOR.env.version && f.getChildCount() && f.getFirst().remove());
          }return function (f) {
            var c = f.startContainer,
                e = c.getAscendant("table", 1),
                g = !1;d(e.getElementsByTag("td"));d(e.getElementsByTag("th"));e = f.clone();e.setStart(c, 0);e = a(e).lastBackward();e || (e = f.clone(), e.setEndAt(c, CKEDITOR.POSITION_BEFORE_END), e = a(e).lastForward(), g = !0);e || (e = c);e.is("table") ? (f.setStartAt(e, CKEDITOR.POSITION_BEFORE_START), f.collapse(!0), e.remove()) : (e.is({ tbody: 1, thead: 1, tfoot: 1 }) && (e = b(e, "tr", g)), e.is("tr") && (e = b(e, e.getParent().is("thead") ? "th" : "td", g)), (c = e.getBogus()) && c.remove(), f.moveToPosition(e, g ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END));
          };
        }();q = function () {
          function a(b) {
            b = new CKEDITOR.dom.walker(b);b.guard = function (a, b) {
              if (b) return !1;if (a.type == CKEDITOR.NODE_ELEMENT) return a.is(CKEDITOR.dtd.$list) || a.is(CKEDITOR.dtd.$listItem);
            };b.evaluator = function (a) {
              return a.type == CKEDITOR.NODE_ELEMENT && a.is(CKEDITOR.dtd.$listItem);
            };return b;
          }return function (b) {
            var d = b.startContainer,
                f = !1,
                c;c = b.clone();c.setStart(d, 0);c = a(c).lastBackward();c || (c = b.clone(), c.setEndAt(d, CKEDITOR.POSITION_BEFORE_END), c = a(c).lastForward(), f = !0);c || (c = d);c.is(CKEDITOR.dtd.$list) ? (b.setStartAt(c, CKEDITOR.POSITION_BEFORE_START), b.collapse(!0), c.remove()) : ((d = c.getBogus()) && d.remove(), b.moveToPosition(c, f ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END), b.select());
          };
        }();u = { eol: { detect: function (a, b) {
              var d = a.range,
                  f = d.clone(),
                  c = d.clone(),
                  e = new CKEDITOR.dom.elementPath(d.startContainer, b),
                  g = new CKEDITOR.dom.elementPath(d.endContainer, b);f.collapse(1);c.collapse();e.block && f.checkBoundaryOfElement(e.block, CKEDITOR.END) && (d.setStartAfter(e.block), a.prependEolBr = 1);g.block && c.checkBoundaryOfElement(g.block, CKEDITOR.START) && (d.setEndBefore(g.block), a.appendEolBr = 1);
            }, fix: function (a, b) {
              var d = b.getDocument(),
                  f;a.appendEolBr && (f = this.createEolBr(d), a.fragment.append(f));!a.prependEolBr || f && !f.getPrevious() || a.fragment.append(this.createEolBr(d), 1);
            }, createEolBr: function (a) {
              return a.createElement("br", { attributes: { "data-cke-eol": 1 } });
            } }, bogus: { exclude: function (a) {
              var b = a.range.getBoundaryNodes(),
                  d = b.startNode,
                  b = b.endNode;!b || !v(b) || d && d.equals(b) || a.range.setEndBefore(b);
            } }, tree: { rebuild: function (a, b) {
              var d = a.range,
                  f = d.getCommonAncestor(),
                  c = new CKEDITOR.dom.elementPath(f, b),
                  e = new CKEDITOR.dom.elementPath(d.startContainer, b),
                  d = new CKEDITOR.dom.elementPath(d.endContainer, b),
                  g;f.type == CKEDITOR.NODE_TEXT && (f = f.getParent());if (c.blockLimit.is({ tr: 1, table: 1 })) {
                var k = c.contains("table").getParent();g = function (a) {
                  return !a.equals(k);
                };
              } else if (c.block && c.block.is(CKEDITOR.dtd.$listItem) && (e = e.contains(CKEDITOR.dtd.$list), d = d.contains(CKEDITOR.dtd.$list), !e.equals(d))) {
                var h = c.contains(CKEDITOR.dtd.$list).getParent();g = function (a) {
                  return !a.equals(h);
                };
              }g || (g = function (a) {
                return !a.equals(c.block) && !a.equals(c.blockLimit);
              });this.rebuildFragment(a, b, f, g);
            }, rebuildFragment: function (a, b, d, f) {
              for (var c; d && !d.equals(b) && f(d);) c = d.clone(0, 1), a.fragment.appendTo(c), a.fragment = c, d = d.getParent();
            } }, cell: { shrink: function (a) {
              a = a.range;var b = a.startContainer,
                  d = a.endContainer,
                  f = a.startOffset,
                  c = a.endOffset;b.type == CKEDITOR.NODE_ELEMENT && b.equals(d) && b.is("tr") && ++f == c && a.shrink(CKEDITOR.SHRINK_TEXT);
            } } };z = function () {
          function a(b, d) {
            var f = b.getParent();if (f.is(CKEDITOR.dtd.$inline)) b[d ? "insertBefore" : "insertAfter"](f);
          }function f(b, d, c) {
            a(d);a(c, 1);for (var e; e = c.getNext();) e.insertAfter(d), d = e;t(b) && b.remove();
          }function c(a, b) {
            var d = new CKEDITOR.dom.range(a);d.setStartAfter(b.startNode);d.setEndBefore(b.endNode);return d;
          }return { list: { detectMerge: function (a, b) {
                var d = c(b, a.bookmark),
                    f = d.startPath(),
                    e = d.endPath(),
                    g = f.contains(CKEDITOR.dtd.$list),
                    k = e.contains(CKEDITOR.dtd.$list);a.mergeList = g && k && g.getParent().equals(k.getParent()) && !g.equals(k);a.mergeListItems = f.block && e.block && f.block.is(CKEDITOR.dtd.$listItem) && e.block.is(CKEDITOR.dtd.$listItem);if (a.mergeList || a.mergeListItems) d = d.clone(), d.setStartBefore(a.bookmark.startNode), d.setEndAfter(a.bookmark.endNode), a.mergeListBookmark = d.createBookmark();
              }, merge: function (a, b) {
                if (a.mergeListBookmark) {
                  var d = a.mergeListBookmark.startNode,
                      c = a.mergeListBookmark.endNode,
                      e = new CKEDITOR.dom.elementPath(d, b),
                      g = new CKEDITOR.dom.elementPath(c, b);if (a.mergeList) {
                    var k = e.contains(CKEDITOR.dtd.$list),
                        h = g.contains(CKEDITOR.dtd.$list);k.equals(h) || (h.moveChildren(k), h.remove());
                  }a.mergeListItems && (e = e.contains(CKEDITOR.dtd.$listItem), g = g.contains(CKEDITOR.dtd.$listItem), e.equals(g) || f(g, d, c));d.remove();c.remove();
                }
              } }, block: { detectMerge: function (a, b) {
                if (!a.tableContentsRanges && !a.mergeListBookmark) {
                  var d = new CKEDITOR.dom.range(b);d.setStartBefore(a.bookmark.startNode);d.setEndAfter(a.bookmark.endNode);a.mergeBlockBookmark = d.createBookmark();
                }
              }, merge: function (a, b) {
                if (a.mergeBlockBookmark && !a.purgeTableBookmark) {
                  var d = a.mergeBlockBookmark.startNode,
                      c = a.mergeBlockBookmark.endNode,
                      e = new CKEDITOR.dom.elementPath(d, b),
                      g = new CKEDITOR.dom.elementPath(c, b),
                      e = e.block,
                      g = g.block;e && g && !e.equals(g) && f(g, d, c);d.remove();c.remove();
                }
              } }, table: function () {
              function a(f) {
                var c = [],
                    e,
                    g = new CKEDITOR.dom.walker(f),
                    k = f.startPath().contains(d),
                    h = f.endPath().contains(d),
                    l = {};g.guard = function (a, g) {
                  if (a.type == CKEDITOR.NODE_ELEMENT) {
                    var m = "visited_" + (g ? "out" : "in");if (a.getCustomData(m)) return;CKEDITOR.dom.element.setMarker(l, a, m, 1);
                  }if (g && k && a.equals(k)) e = f.clone(), e.setEndAt(k, CKEDITOR.POSITION_BEFORE_END), c.push(e);else if (!g && h && a.equals(h)) e = f.clone(), e.setStartAt(h, CKEDITOR.POSITION_AFTER_START), c.push(e);else {
                    if (m = !g) m = a.type == CKEDITOR.NODE_ELEMENT && a.is(d) && (!k || b(a, k)) && (!h || b(a, h));if (!m && (m = g)) if (a.is(d)) var m = k && k.getAscendant("table", !0),
                        p = h && h.getAscendant("table", !0),
                        n = a.getAscendant("table", !0),
                        m = m && m.contains(n) || p && p.contains(n);else m = void 0;m && (e = f.clone(), e.selectNodeContents(a), c.push(e));
                  }
                };g.lastForward();CKEDITOR.dom.element.clearAllMarkers(l);return c;
              }function b(a, d) {
                var f = CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_IS_CONTAINED,
                    c = a.getPosition(d);
                return c === CKEDITOR.POSITION_IDENTICAL ? !1 : 0 === (c & f);
              }var d = { td: 1, th: 1, caption: 1 };return { detectPurge: function (a) {
                  var b = a.range,
                      f = b.clone();f.enlarge(CKEDITOR.ENLARGE_ELEMENT);var f = new CKEDITOR.dom.walker(f),
                      c = 0;f.evaluator = function (a) {
                    a.type == CKEDITOR.NODE_ELEMENT && a.is(d) && ++c;
                  };f.checkForward();if (1 < c) {
                    var f = b.startPath().contains("table"),
                        e = b.endPath().contains("table");f && e && b.checkBoundaryOfElement(f, CKEDITOR.START) && b.checkBoundaryOfElement(e, CKEDITOR.END) && (b = a.range.clone(), b.setStartBefore(f), b.setEndAfter(e), a.purgeTableBookmark = b.createBookmark());
                  }
                }, detectRanges: function (f, e) {
                  var g = c(e, f.bookmark),
                      k = g.clone(),
                      h,
                      l,
                      m = g.getCommonAncestor();m.is(CKEDITOR.dtd.$tableContent) && !m.is(d) && (m = m.getAscendant("table", !0));l = m;m = new CKEDITOR.dom.elementPath(g.startContainer, l);l = new CKEDITOR.dom.elementPath(g.endContainer, l);m = m.contains("table");l = l.contains("table");if (m || l) m && l && b(m, l) ? (f.tableSurroundingRange = k, k.setStartAt(m, CKEDITOR.POSITION_AFTER_END), k.setEndAt(l, CKEDITOR.POSITION_BEFORE_START), k = g.clone(), k.setEndAt(m, CKEDITOR.POSITION_AFTER_END), h = g.clone(), h.setStartAt(l, CKEDITOR.POSITION_BEFORE_START), h = a(k).concat(a(h))) : m ? l || (f.tableSurroundingRange = k, k.setStartAt(m, CKEDITOR.POSITION_AFTER_END), g.setEndAt(m, CKEDITOR.POSITION_AFTER_END)) : (f.tableSurroundingRange = k, k.setEndAt(l, CKEDITOR.POSITION_BEFORE_START), g.setStartAt(l, CKEDITOR.POSITION_AFTER_START)), f.tableContentsRanges = h ? h : a(g);
                }, deleteRanges: function (a) {
                  for (var b; b = a.tableContentsRanges.pop();) b.extractContents(), t(b.startContainer) && b.startContainer.appendBogus();a.tableSurroundingRange && a.tableSurroundingRange.extractContents();
                }, purge: function (a) {
                  if (a.purgeTableBookmark) {
                    var b = a.doc,
                        d = a.range.clone(),
                        b = b.createElement("p");b.insertBefore(a.purgeTableBookmark.startNode);d.moveToBookmark(a.purgeTableBookmark);d.deleteContents();a.range.moveToPosition(b, CKEDITOR.POSITION_AFTER_START);
                  }
                } };
            }(), detectExtractMerge: function (a) {
              return !(a.range.startPath().contains(CKEDITOR.dtd.$listItem) && a.range.endPath().contains(CKEDITOR.dtd.$listItem));
            },
            fixUneditableRangePosition: function (a) {
              a.startContainer.getDtd()["#"] || a.moveToClosestEditablePosition(null, !0);
            }, autoParagraph: function (a, f) {
              var c = f.startPath(),
                  e;b(a, c.block, c.blockLimit) && (e = d(a)) && (e = f.document.createElement(e), e.appendBogus(), f.insertNode(e), f.moveToPosition(e, CKEDITOR.POSITION_AFTER_START));
            } };
        }();
      }(), function () {
        function c(a) {
          return CKEDITOR.plugins.widget && CKEDITOR.plugins.widget.isDomWidget(a);
        }function h(a, b) {
          if (0 === a.length || c(a[0].getEnclosedNode())) return !1;var d, f;if ((d = !b && 1 === a.length) && !(d = a[0].collapsed)) {
            var e = a[0];d = e.startContainer.getAscendant({ td: 1, th: 1 }, !0);var g = e.endContainer.getAscendant({ td: 1, th: 1 }, !0);f = CKEDITOR.tools.trim;d && d.equals(g) && !d.findOne("td, th, tr, tbody, table") ? (e = e.cloneContents(), d = e.getFirst() ? f(e.getFirst().getText()) !== f(d.getText()) : !0) : d = !1;
          }if (d) return !1;for (f = 0; f < a.length; f++) if (d = a[f]._getTableElement(), !d) return !1;return !0;
        }function g(a) {
          function b(a) {
            a = a.find("td, th");var d = [],
                f;for (f = 0; f < a.count(); f++) d.push(a.getItem(f));return d;
          }
          var d = [],
              f,
              c;for (c = 0; c < a.length; c++) f = a[c]._getTableElement(), f.is && f.is({ td: 1, th: 1 }) ? d.push(f) : d = d.concat(b(f));return d;
        }function a(a) {
          a = g(a);var b = "",
              d = [],
              f,
              c;for (c = 0; c < a.length; c++) f && !f.equals(a[c].getAscendant("tr")) ? (b += d.join("\t") + "\n", f = a[c].getAscendant("tr"), d = []) : 0 === c && (f = a[c].getAscendant("tr")), d.push(a[c].getText());return b += d.join("\t");
        }function e(b) {
          var d = this.root.editor,
              f = d.getSelection(1);this.reset();q = !0;f.root.once("selectionchange", function (a) {
            a.cancel();
          }, null, null, 0);f.selectRanges([b[0]]);
          f = this._.cache;f.ranges = new CKEDITOR.dom.rangeList(b);f.type = CKEDITOR.SELECTION_TEXT;f.selectedElement = b[0]._getTableElement();f.selectedText = a(b);f.nativeSel = null;this.isFake = 1;this.rev = B++;d._.fakeSelection = this;q = !1;this.root.fire("selectionchange");
        }function k() {
          var a = this._.fakeSelection,
              b;if (a) {
            b = this.getSelection(1);var d;if (!(d = !b) && (d = !b.isHidden())) {
              d = a;var f = b.getRanges(),
                  e = d.getRanges(),
                  g = f.length && f[0]._getTableElement() && f[0]._getTableElement().getAscendant("table", !0),
                  k = e.length && e[0]._getTableElement() && e[0]._getTableElement().getAscendant("table", !0),
                  l = 1 === f.length && f[0]._getTableElement() && f[0]._getTableElement().is("table"),
                  m = 1 === e.length && e[0]._getTableElement() && e[0]._getTableElement().is("table");if (c(d.getSelectedElement())) d = !1;else {
                var p = 1 === f.length && f[0].collapsed,
                    e = h(f, !!CKEDITOR.env.webkit) && h(e);g = g && k ? g.equals(k) || k.contains(g) : !1;g && (p || e) ? (l && !m && d.selectRanges(f), d = !0) : d = !1;
              }d = !d;
            }d && (a.reset(), a = 0);
          }if (!a && (a = b || this.getSelection(1), !a || a.getType() == CKEDITOR.SELECTION_NONE)) return;
          this.fire("selectionCheck", a);b = this.elementPath();b.compare(this._.selectionPreviousPath) || (d = this._.selectionPreviousPath && this._.selectionPreviousPath.blockLimit.equals(b.blockLimit), !CKEDITOR.env.webkit && !CKEDITOR.env.gecko || d || (this._.previousActive = this.document.getActive()), this._.selectionPreviousPath = b, this.fire("selectionChange", { selection: a, path: b }));
        }function l() {
          z = !0;u || (m.call(this), u = CKEDITOR.tools.setTimeout(m, 200, this));
        }function m() {
          u = null;z && (CKEDITOR.tools.setTimeout(k, 0, this), z = !1);
        }function b(a) {
          return A(a) || a.type == CKEDITOR.NODE_ELEMENT && !a.is(CKEDITOR.dtd.$empty) ? !0 : !1;
        }function d(a) {
          function d(b, f) {
            return b && b.type != CKEDITOR.NODE_TEXT ? a.clone()["moveToElementEdit" + (f ? "End" : "Start")](b) : !1;
          }if (!(a.root instanceof CKEDITOR.editable)) return !1;var f = a.startContainer,
              c = a.getPreviousNode(b, null, f),
              e = a.getNextNode(b, null, f);return d(c) || d(e, 1) || !(c || e || f.type == CKEDITOR.NODE_ELEMENT && f.isBlockBoundary() && f.getBogus()) ? !0 : !1;
        }function f(a) {
          p(a, !1);var b = a.getDocument().createText(n);
          a.setCustomData("cke-fillingChar", b);return b;
        }function p(a, b) {
          var d = a && a.removeCustomData("cke-fillingChar");if (d) {
            if (!1 !== b) {
              var f = a.getDocument().getSelection().getNative(),
                  c = f && "None" != f.type && f.getRangeAt(0),
                  e = n.length;if (d.getLength() > e && c && c.intersectsNode(d.$)) {
                var g = [{ node: f.anchorNode, offset: f.anchorOffset }, { node: f.focusNode, offset: f.focusOffset }];f.anchorNode == d.$ && f.anchorOffset > e && (g[0].offset -= e);f.focusNode == d.$ && f.focusOffset > e && (g[1].offset -= e);
              }
            }d.setText(w(d.getText(), 1));g && (d = a.getDocument().$, f = d.getSelection(), d = d.createRange(), d.setStart(g[0].node, g[0].offset), d.collapse(!0), f.removeAllRanges(), f.addRange(d), f.extend(g[1].node, g[1].offset));
          }
        }function w(a, b) {
          return b ? a.replace(x, function (a, b) {
            return b ? " " : "";
          }) : a.replace(n, "");
        }function y(a, b) {
          var d = b && CKEDITOR.tools.htmlEncode(b) || "\x26nbsp;",
              d = CKEDITOR.dom.element.createFromHtml('\x3cdiv data-cke-hidden-sel\x3d"1" data-cke-temp\x3d"1" style\x3d"' + (CKEDITOR.env.ie && 14 > CKEDITOR.env.version ? "display:none" : "position:fixed;top:0;left:-1000px;width:0;height:0;overflow:hidden;") + '"\x3e' + d + "\x3c/div\x3e", a.document);a.fire("lockSnapshot");a.editable().append(d);var f = a.getSelection(1),
              c = a.createRange(),
              e = f.root.on("selectionchange", function (a) {
            a.cancel();
          }, null, null, 0);c.setStartAt(d, CKEDITOR.POSITION_AFTER_START);c.setEndAt(d, CKEDITOR.POSITION_BEFORE_END);f.selectRanges([c]);e.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer = d;
        }function r(a) {
          var b = { 37: 1, 39: 1, 8: 1, 46: 1 };return function (d) {
            var f = d.data.getKeystroke();if (b[f]) {
              var c = a.getSelection(),
                  e = c.getRanges()[0];
              c.isCollapsed() && (e = e[38 > f ? "getPreviousEditableNode" : "getNextEditableNode"]()) && e.type == CKEDITOR.NODE_ELEMENT && "false" == e.getAttribute("contenteditable") && (c = c.getStartElement(), !c.isBlockBoundary() || "" !== (void 0 === c.$.textContent ? c.$.innerText : c.$.textContent) || 8 !== f && 46 !== f || (c.remove(), a.fire("saveSnapshot")), a.getSelection().fake(e), d.data.preventDefault(), d.cancel());
            }
          };
        }function t(a) {
          for (var b = 0; b < a.length; b++) {
            var d = a[b];d.getCommonAncestor().isReadOnly() && a.splice(b, 1);if (!d.collapsed) {
              if (d.startContainer.isReadOnly()) for (var f = d.startContainer, c; f && !((c = f.type == CKEDITOR.NODE_ELEMENT) && f.is("body") || !f.isReadOnly());) c && "false" == f.getAttribute("contentEditable") && d.setStartAfter(f), f = f.getParent();f = d.startContainer;c = d.endContainer;var e = d.startOffset,
                  g = d.endOffset,
                  k = d.clone();f && f.type == CKEDITOR.NODE_TEXT && (e >= f.getLength() ? k.setStartAfter(f) : k.setStartBefore(f));c && c.type == CKEDITOR.NODE_TEXT && (g ? k.setEndAfter(c) : k.setEndBefore(c));f = new CKEDITOR.dom.walker(k);f.evaluator = function (f) {
                if (f.type == CKEDITOR.NODE_ELEMENT && f.isReadOnly()) {
                  var c = d.clone();d.setEndBefore(f);d.collapsed && a.splice(b--, 1);f.getPosition(k.endContainer) & CKEDITOR.POSITION_CONTAINS || (c.setStartAfter(f), c.collapsed || a.splice(b + 1, 0, c));return !0;
                }return !1;
              };f.next();
            }
          }return a;
        }var v = "function" != typeof window.getSelection,
            B = 1,
            n = CKEDITOR.tools.repeat("​", 7),
            x = new RegExp(n + "( )?", "g"),
            q,
            u,
            z,
            A = CKEDITOR.dom.walker.invisible(1),
            C = function () {
          function a(b) {
            return function (a) {
              var d = a.editor.createRange();d.moveToClosestEditablePosition(a.selected, b) && a.editor.getSelection().selectRanges([d]);
              return !1;
            };
          }function b(a) {
            return function (b) {
              var d = b.editor,
                  f = d.createRange(),
                  c;if (!d.readOnly) return (c = f.moveToClosestEditablePosition(b.selected, a)) || (c = f.moveToClosestEditablePosition(b.selected, !a)), c && d.getSelection().selectRanges([f]), d.fire("saveSnapshot"), b.selected.remove(), c || (f.moveToElementEditablePosition(d.editable()), d.getSelection().selectRanges([f])), d.fire("saveSnapshot"), !1;
            };
          }var d = a(),
              f = a(1);return { 37: d, 38: d, 39: f, 40: f, 8: b(), 46: b(1) };
        }();CKEDITOR.on("instanceCreated", function (a) {
          function b() {
            var a = d.getSelection();a && a.removeAllRanges();
          }var d = a.editor;d.on("contentDom", function () {
            function a() {
              t = new CKEDITOR.dom.selection(d.getSelection());t.lock();
            }function b() {
              g.removeListener("mouseup", b);n.removeListener("mouseup", b);var a = CKEDITOR.document.$.selection,
                  d = a.createRange();"None" != a.type && d.parentElement() && d.parentElement().ownerDocument == e.$ && d.select();
            }function c(a) {
              a = a.getRanges()[0];return a ? (a = a.startContainer.getAscendant(function (a) {
                return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("contenteditable");
              }, !0)) && "false" === a.getAttribute("contenteditable") ? a : null : null;
            }var e = d.document,
                g = CKEDITOR.document,
                h = d.editable(),
                m = e.getBody(),
                n = e.getDocumentElement(),
                q = h.isInline(),
                w,
                t;CKEDITOR.env.gecko && h.attachListener(h, "focus", function (a) {
              a.removeListener();0 !== w && (a = d.getSelection().getNative()) && a.isCollapsed && a.anchorNode == h.$ && (a = d.createRange(), a.moveToElementEditStart(h), a.select());
            }, null, null, -2);h.attachListener(h, CKEDITOR.env.webkit || CKEDITOR.env.gecko ? "focusin" : "focus", function () {
              if (w && (CKEDITOR.env.webkit || CKEDITOR.env.gecko)) {
                w = d._.previousActive && d._.previousActive.equals(e.getActive());var a = null != d._.previousScrollTop && d._.previousScrollTop != h.$.scrollTop;CKEDITOR.env.webkit && w && a && (h.$.scrollTop = d._.previousScrollTop);
              }d.unlockSelection(w);w = 0;
            }, null, null, -1);h.attachListener(h, "mousedown", function () {
              w = 0;
            });if (CKEDITOR.env.ie || CKEDITOR.env.gecko || q) v ? h.attachListener(h, "beforedeactivate", a, null, null, -1) : h.attachListener(d, "selectionCheck", a, null, null, -1), h.attachListener(h, CKEDITOR.env.webkit || CKEDITOR.env.gecko ? "focusout" : "blur", function () {
              var a = t && (t.isFake || 2 > t.getRanges().length);CKEDITOR.env.gecko && !q && a || (d.lockSelection(t), w = 1);
            }, null, null, -1), h.attachListener(h, "mousedown", function () {
              w = 0;
            });if (CKEDITOR.env.ie && !q) {
              var u;h.attachListener(h, "mousedown", function (a) {
                2 == a.data.$.button && ((a = d.document.getSelection()) && a.getType() != CKEDITOR.SELECTION_NONE || (u = d.window.getScrollPosition()));
              });h.attachListener(h, "mouseup", function (a) {
                2 == a.data.$.button && u && (d.document.$.documentElement.scrollLeft = u.x, d.document.$.documentElement.scrollTop = u.y);u = null;
              });if ("BackCompat" != e.$.compatMode) {
                if (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) {
                  var x, B;n.on("mousedown", function (a) {
                    function b(a) {
                      a = a.data.$;if (x) {
                        var d = m.$.createTextRange();try {
                          d.moveToPoint(a.clientX, a.clientY);
                        } catch (f) {}x.setEndPoint(0 > B.compareEndPoints("StartToStart", d) ? "EndToEnd" : "StartToStart", d);x.select();
                      }
                    }function d() {
                      n.removeListener("mousemove", b);g.removeListener("mouseup", d);n.removeListener("mouseup", d);x.select();
                    }a = a.data;if (a.getTarget().is("html") && a.$.y < n.$.clientHeight && a.$.x < n.$.clientWidth) {
                      x = m.$.createTextRange();try {
                        x.moveToPoint(a.$.clientX, a.$.clientY);
                      } catch (f) {}B = x.duplicate();n.on("mousemove", b);g.on("mouseup", d);n.on("mouseup", d);
                    }
                  });
                }if (7 < CKEDITOR.env.version && 11 > CKEDITOR.env.version) n.on("mousedown", function (a) {
                  a.data.getTarget().is("html") && (g.on("mouseup", b), n.on("mouseup", b));
                });
              }
            }h.attachListener(h, "selectionchange", k, d);h.attachListener(h, "keyup", l, d);h.attachListener(h, "touchstart", l, d);h.attachListener(h, "touchend", l, d);CKEDITOR.env.ie && h.attachListener(h, "keydown", function f(a) {
              var b, d;b = (b = this.document.getActive()) ? "input" === b.getName() || "textarea" === b.getName() : !1;b || (b = this.getSelection(1), (d = c(b)) && !d.equals(h) && (b.selectElement(d), a.data.preventDefault()));
            }, d);if (q && (CKEDITOR.env.webkit || CKEDITOR.env.gecko)) {
              var y;h.attachListener(h, "mousedown", function () {
                y = 1;
              });h.attachListener(e.getDocumentElement(), "mouseup", function () {
                y && l.call(d);y = 0;
              });
            } else h.attachListener(CKEDITOR.env.ie ? h : e.getDocumentElement(), "mouseup", l, d);CKEDITOR.env.webkit && h.attachListener(e, "keydown", function (a) {
              switch (a.data.getKey()) {case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:
                  h.hasFocus && p(h);}
            }, null, null, -1);h.attachListener(h, "keydown", r(d), null, null, -1);
          });d.on("setData", function () {
            d.unlockSelection();CKEDITOR.env.webkit && b();
          });d.on("contentDomUnload", function () {
            d.unlockSelection();
          });if (CKEDITOR.env.ie9Compat) d.on("beforeDestroy", b, null, null, 9);d.on("dataReady", function () {
            delete d._.fakeSelection;delete d._.hiddenSelectionContainer;
            d.selectionChange(1);
          });d.on("loadSnapshot", function () {
            var a = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),
                b = d.editable().getLast(a);b && b.hasAttribute("data-cke-hidden-sel") && (b.remove(), CKEDITOR.env.gecko && (a = d.editable().getFirst(a)) && a.is("br") && a.getAttribute("_moz_editor_bogus_node") && a.remove());
          }, null, null, 100);d.on("key", function (a) {
            if ("wysiwyg" == d.mode) {
              var b = d.getSelection();if (b.isFake) {
                var f = C[a.data.keyCode];if (f) return f({ editor: d, selected: b.getSelectedElement(), selection: b, keyEvent: a });
              }
            }
          });
        });
        if (CKEDITOR.env.webkit) CKEDITOR.on("instanceReady", function (a) {
          var b = a.editor;b.on("selectionChange", function () {
            var a = b.editable(),
                d = a.getCustomData("cke-fillingChar");d && (d.getCustomData("ready") ? (p(a), a.editor.fire("selectionCheck")) : d.setCustomData("ready", 1));
          }, null, null, -1);b.on("beforeSetMode", function () {
            p(b.editable());
          }, null, null, -1);b.on("getSnapshot", function (a) {
            a.data && (a.data = w(a.data));
          }, b, null, 20);b.on("toDataFormat", function (a) {
            a.data.dataValue = w(a.data.dataValue);
          }, null, null, 0);
        });CKEDITOR.editor.prototype.selectionChange = function (a) {
          (a ? k : l).call(this);
        };CKEDITOR.editor.prototype.getSelection = function (a) {
          return !this._.savedSelection && !this._.fakeSelection || a ? (a = this.editable()) && "wysiwyg" == this.mode && "recreating" !== this.status ? new CKEDITOR.dom.selection(a) : null : this._.savedSelection || this._.fakeSelection;
        };CKEDITOR.editor.prototype.getSelectedRanges = function (a) {
          var b = this.getSelection();return b && b.getRanges(a) || [];
        };CKEDITOR.editor.prototype.lockSelection = function (a) {
          a = a || this.getSelection(1);return a.getType() != CKEDITOR.SELECTION_NONE ? (!a.isLocked && a.lock(), this._.savedSelection = a, !0) : !1;
        };CKEDITOR.editor.prototype.unlockSelection = function (a) {
          var b = this._.savedSelection;return b ? (b.unlock(a), delete this._.savedSelection, !0) : !1;
        };CKEDITOR.editor.prototype.forceNextSelectionCheck = function () {
          delete this._.selectionPreviousPath;
        };CKEDITOR.dom.document.prototype.getSelection = function () {
          return new CKEDITOR.dom.selection(this);
        };CKEDITOR.dom.range.prototype.select = function () {
          var a = this.root instanceof CKEDITOR.editable ? this.root.editor.getSelection() : new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a;
        };CKEDITOR.SELECTION_NONE = 1;CKEDITOR.SELECTION_TEXT = 2;CKEDITOR.SELECTION_ELEMENT = 3;CKEDITOR.dom.selection = function (a) {
          if (a instanceof CKEDITOR.dom.selection) {
            var b = a;a = a.root;
          }var d = a instanceof CKEDITOR.dom.element;this.rev = b ? b.rev : B++;this.document = a instanceof CKEDITOR.dom.document ? a : a.getDocument();this.root = d ? a : this.document.getBody();this.isLocked = 0;this._ = { cache: {} };if (b) return CKEDITOR.tools.extend(this._.cache, b._.cache), this.isFake = b.isFake, this.isLocked = b.isLocked, this;a = this.getNative();var f, c;if (a) if (a.getRangeAt) f = (c = a.rangeCount && a.getRangeAt(0)) && new CKEDITOR.dom.node(c.commonAncestorContainer);else {
            try {
              c = a.createRange();
            } catch (e) {}f = c && CKEDITOR.dom.element.get(c.item && c.item(0) || c.parentElement());
          }if (!f || f.type != CKEDITOR.NODE_ELEMENT && f.type != CKEDITOR.NODE_TEXT || !this.root.equals(f) && !this.root.contains(f)) this._.cache.type = CKEDITOR.SELECTION_NONE, this._.cache.startElement = null, this._.cache.selectedElement = null, this._.cache.selectedText = "", this._.cache.ranges = new CKEDITOR.dom.rangeList();return this;
        };var D = { img: 1, hr: 1, li: 1, table: 1, tr: 1, td: 1, th: 1, embed: 1, object: 1, ol: 1, ul: 1, a: 1, input: 1, form: 1, select: 1, textarea: 1, button: 1, fieldset: 1, thead: 1, tfoot: 1 };CKEDITOR.tools.extend(CKEDITOR.dom.selection, { _removeFillingCharSequenceString: w, _createFillingCharSequenceNode: f, FILLING_CHAR_SEQUENCE: n });CKEDITOR.dom.selection.prototype = { getNative: function () {
            return void 0 !== this._.cache.nativeSel ? this._.cache.nativeSel : this._.cache.nativeSel = v ? this.document.$.selection : this.document.getWindow().$.getSelection();
          }, getType: v ? function () {
            var a = this._.cache;if (a.type) return a.type;var b = CKEDITOR.SELECTION_NONE;try {
              var d = this.getNative(),
                  f = d.type;"Text" == f && (b = CKEDITOR.SELECTION_TEXT);"Control" == f && (b = CKEDITOR.SELECTION_ELEMENT);d.createRange().parentElement() && (b = CKEDITOR.SELECTION_TEXT);
            } catch (c) {}return a.type = b;
          } : function () {
            var a = this._.cache;if (a.type) return a.type;var b = CKEDITOR.SELECTION_TEXT,
                d = this.getNative();if (!d || !d.rangeCount) b = CKEDITOR.SELECTION_NONE;else if (1 == d.rangeCount) {
              var d = d.getRangeAt(0),
                  f = d.startContainer;f == d.endContainer && 1 == f.nodeType && 1 == d.endOffset - d.startOffset && D[f.childNodes[d.startOffset].nodeName.toLowerCase()] && (b = CKEDITOR.SELECTION_ELEMENT);
            }return a.type = b;
          }, getRanges: function () {
            var a = v ? function () {
              function a(b) {
                return new CKEDITOR.dom.node(b).getIndex();
              }var b = function (b, d) {
                b = b.duplicate();b.collapse(d);var f = b.parentElement();if (!f.hasChildNodes()) return { container: f, offset: 0 };for (var c = f.children, e, g, k = b.duplicate(), h = 0, l = c.length - 1, m = -1, p, n; h <= l;) if (m = Math.floor((h + l) / 2), e = c[m], k.moveToElementText(e), p = k.compareEndPoints("StartToStart", b), 0 < p) l = m - 1;else if (0 > p) h = m + 1;else return { container: f, offset: a(e) };if (-1 == m || m == c.length - 1 && 0 > p) {
                  k.moveToElementText(f);k.setEndPoint("StartToStart", b);k = k.text.replace(/(\r\n|\r)/g, "\n").length;c = f.childNodes;if (!k) return e = c[c.length - 1], e.nodeType != CKEDITOR.NODE_TEXT ? { container: f, offset: c.length } : { container: e, offset: e.nodeValue.length };for (f = c.length; 0 < k && 0 < f;) g = c[--f], g.nodeType == CKEDITOR.NODE_TEXT && (n = g, k -= g.nodeValue.length);return { container: n, offset: -k };
                }k.collapse(0 < p ? !0 : !1);k.setEndPoint(0 < p ? "StartToStart" : "EndToStart", b);k = k.text.replace(/(\r\n|\r)/g, "\n").length;if (!k) return { container: f, offset: a(e) + (0 < p ? 0 : 1) };for (; 0 < k;) try {
                  g = e[0 < p ? "previousSibling" : "nextSibling"], g.nodeType == CKEDITOR.NODE_TEXT && (k -= g.nodeValue.length, n = g), e = g;
                } catch (w) {
                  return { container: f, offset: a(e) };
                }return { container: n, offset: 0 < p ? -k : n.nodeValue.length + k };
              };return function () {
                var a = this.getNative(),
                    d = a && a.createRange(),
                    f = this.getType();if (!a) return [];if (f == CKEDITOR.SELECTION_TEXT) return a = new CKEDITOR.dom.range(this.root), f = b(d, !0), a.setStart(new CKEDITOR.dom.node(f.container), f.offset), f = b(d), a.setEnd(new CKEDITOR.dom.node(f.container), f.offset), a.endContainer.getPosition(a.startContainer) & CKEDITOR.POSITION_PRECEDING && a.endOffset <= a.startContainer.getIndex() && a.collapse(), [a];if (f == CKEDITOR.SELECTION_ELEMENT) {
                  for (var f = [], c = 0; c < d.length; c++) {
                    for (var e = d.item(c), g = e.parentNode, k = 0, a = new CKEDITOR.dom.range(this.root); k < g.childNodes.length && g.childNodes[k] != e; k++);a.setStart(new CKEDITOR.dom.node(g), k);a.setEnd(new CKEDITOR.dom.node(g), k + 1);f.push(a);
                  }return f;
                }return [];
              };
            }() : function () {
              var a = [],
                  b,
                  d = this.getNative();if (!d) return a;for (var f = 0; f < d.rangeCount; f++) {
                var c = d.getRangeAt(f);b = new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(c.startContainer), c.startOffset);b.setEnd(new CKEDITOR.dom.node(c.endContainer), c.endOffset);a.push(b);
              }return a;
            };return function (b) {
              var d = this._.cache,
                  f = d.ranges;f || (d.ranges = f = new CKEDITOR.dom.rangeList(a.call(this)));return b ? t(new CKEDITOR.dom.rangeList(f.slice())) : f;
            };
          }(), getStartElement: function () {
            var a = this._.cache;if (void 0 !== a.startElement) return a.startElement;var b;switch (this.getType()) {case CKEDITOR.SELECTION_ELEMENT:
                return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:
                var d = this.getRanges()[0];if (d) {
                  if (d.collapsed) b = d.startContainer, b.type != CKEDITOR.NODE_ELEMENT && (b = b.getParent());else {
                    for (d.optimize(); b = d.startContainer, d.startOffset == (b.getChildCount ? b.getChildCount() : b.getLength()) && !b.isBlockBoundary();) d.setStartAfter(b);b = d.startContainer;if (b.type != CKEDITOR.NODE_ELEMENT) return b.getParent();if ((b = b.getChild(d.startOffset)) && b.type == CKEDITOR.NODE_ELEMENT) for (d = b.getFirst(); d && d.type == CKEDITOR.NODE_ELEMENT;) b = d, d = d.getFirst();else b = d.startContainer;
                  }b = b.$;
                }}return a.startElement = b ? new CKEDITOR.dom.element(b) : null;
          }, getSelectedElement: function () {
            var a = this._.cache;if (void 0 !== a.selectedElement) return a.selectedElement;var b = this,
                d = CKEDITOR.tools.tryThese(function () {
              return b.getNative().createRange().item(0);
            }, function () {
              for (var a = b.getRanges()[0].clone(), d, f, c = 2; c && !((d = a.getEnclosedNode()) && d.type == CKEDITOR.NODE_ELEMENT && D[d.getName()] && (f = d)); c--) a.shrink(CKEDITOR.SHRINK_ELEMENT);return f && f.$;
            });return a.selectedElement = d ? new CKEDITOR.dom.element(d) : null;
          }, getSelectedText: function () {
            var a = this._.cache;if (void 0 !== a.selectedText) return a.selectedText;var b = this.getNative(),
                b = v ? "Control" == b.type ? "" : b.createRange().text : b.toString();return a.selectedText = b;
          }, lock: function () {
            this.getRanges();this.getStartElement();
            this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel = null;this.isLocked = 1;
          }, unlock: function (a) {
            if (this.isLocked) {
              if (a) var b = this.getSelectedElement(),
                  d = this.getRanges(),
                  f = this.isFake;this.isLocked = 0;this.reset();a && (a = b || d[0] && d[0].getCommonAncestor()) && a.getAscendant("body", 1) && ((a = this.root.editor) && a.plugins.tableselection && a.plugins.tableselection.isSupportedEnvironment(a) && h(d) ? e.call(this, d) : f ? this.fake(b) : b && 2 > d.length ? this.selectElement(b) : this.selectRanges(d));
            }
          }, reset: function () {
            this._.cache = {};this.isFake = 0;var a = this.root.editor;if (a && a._.fakeSelection) if (this.rev == a._.fakeSelection.rev) {
              delete a._.fakeSelection;var b = a._.hiddenSelectionContainer;if (b) {
                var d = a.checkDirty();a.fire("lockSnapshot");b.remove();a.fire("unlockSnapshot");!d && a.resetDirty();
              }delete a._.hiddenSelectionContainer;
            } else CKEDITOR.warn("selection-fake-reset");this.rev = B++;
          }, selectElement: function (a) {
            var b = new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b]);
          }, selectRanges: function (a) {
            var b = this.root.editor,
                c = b && b._.hiddenSelectionContainer;this.reset();if (c) for (var c = this.root, g, k = 0; k < a.length; ++k) g = a[k], g.endContainer.equals(c) && (g.endOffset = Math.min(g.endOffset, c.getChildCount()));if (a.length) if (this.isLocked) {
              var l = CKEDITOR.document.getActive();this.unlock();this.selectRanges(a);this.lock();l && !l.equals(this.root) && l.focus();
            } else {
              var m;a: {
                var n, w;if (1 == a.length && !(w = a[0]).collapsed && (m = w.getEnclosedNode()) && m.type == CKEDITOR.NODE_ELEMENT && (w = w.clone(), w.shrink(CKEDITOR.SHRINK_ELEMENT, !0), (n = w.getEnclosedNode()) && n.type == CKEDITOR.NODE_ELEMENT && (m = n), "false" == m.getAttribute("contenteditable"))) break a;m = void 0;
              }if (m) this.fake(m);else if (b && b.plugins.tableselection && b.plugins.tableselection.isSupportedEnvironment(b) && h(a) && !q && !a[0]._getTableElement({ table: 1 }).hasAttribute("data-cke-tableselection-ignored")) e.call(this, a);else {
                if (v) {
                  n = CKEDITOR.dom.walker.whitespaces(!0);m = /\ufeff|\u00a0/;w = { table: 1, tbody: 1, tr: 1 };1 < a.length && (b = a[a.length - 1], a[0].setEnd(b.endContainer, b.endOffset));
                  b = a[0];a = b.collapsed;var t, u, x;if ((c = b.getEnclosedNode()) && c.type == CKEDITOR.NODE_ELEMENT && c.getName() in D && (!c.is("a") || !c.getText())) try {
                    x = c.$.createControlRange();x.addElement(c.$);x.select();return;
                  } catch (B) {}if (b.startContainer.type == CKEDITOR.NODE_ELEMENT && b.startContainer.getName() in w || b.endContainer.type == CKEDITOR.NODE_ELEMENT && b.endContainer.getName() in w) b.shrink(CKEDITOR.NODE_ELEMENT, !0), a = b.collapsed;x = b.createBookmark();w = x.startNode;a || (l = x.endNode);x = b.document.$.body.createTextRange();
                  x.moveToElementText(w.$);x.moveStart("character", 1);l ? (m = b.document.$.body.createTextRange(), m.moveToElementText(l.$), x.setEndPoint("EndToEnd", m), x.moveEnd("character", -1)) : (t = w.getNext(n), u = w.hasAscendant("pre"), t = !(t && t.getText && t.getText().match(m)) && (u || !w.hasPrevious() || w.getPrevious().is && w.getPrevious().is("br")), u = b.document.createElement("span"), u.setHtml("\x26#65279;"), u.insertBefore(w), t && b.document.createText("﻿").insertBefore(w));b.setStartBefore(w);w.remove();a ? (t ? (x.moveStart("character", -1), x.select(), b.document.$.selection.clear()) : x.select(), b.moveToPosition(u, CKEDITOR.POSITION_BEFORE_START), u.remove()) : (b.setEndBefore(l), l.remove(), x.select());
                } else {
                  l = this.getNative();if (!l) return;this.removeAllRanges();for (x = 0; x < a.length; x++) {
                    if (x < a.length - 1 && (t = a[x], u = a[x + 1], m = t.clone(), m.setStart(t.endContainer, t.endOffset), m.setEnd(u.startContainer, u.startOffset), !m.collapsed && (m.shrink(CKEDITOR.NODE_ELEMENT, !0), b = m.getCommonAncestor(), m = m.getEnclosedNode(), b.isReadOnly() || m && m.isReadOnly()))) {
                      u.setStart(t.startContainer, t.startOffset);a.splice(x--, 1);continue;
                    }b = a[x];u = this.document.$.createRange();b.collapsed && d(b) && (m = f(this.root), b.insertNode(m), (t = m.getNext()) && !m.getPrevious() && t.type == CKEDITOR.NODE_ELEMENT && "br" == t.getName() ? (p(this.root), b.moveToPosition(t, CKEDITOR.POSITION_BEFORE_START)) : b.moveToPosition(m, CKEDITOR.POSITION_AFTER_END));u.setStart(b.startContainer.$, b.startOffset);try {
                      u.setEnd(b.endContainer.$, b.endOffset);
                    } catch (y) {
                      if (0 <= y.toString().indexOf("NS_ERROR_ILLEGAL_VALUE")) b.collapse(1), u.setEnd(b.endContainer.$, b.endOffset);else throw y;
                    }l.addRange(u);
                  }
                }this.reset();this.root.fire("selectionchange");
              }
            }
          }, fake: function (a, b) {
            var d = this.root.editor;void 0 === b && a.hasAttribute("aria-label") && (b = a.getAttribute("aria-label"));this.reset();y(d, b);var f = this._.cache,
                c = new CKEDITOR.dom.range(this.root);c.setStartBefore(a);c.setEndAfter(a);f.ranges = new CKEDITOR.dom.rangeList(c);f.selectedElement = f.startElement = a;f.type = CKEDITOR.SELECTION_ELEMENT;f.selectedText = f.nativeSel = null;this.isFake = 1;this.rev = B++;d._.fakeSelection = this;this.root.fire("selectionchange");
          }, isHidden: function () {
            var a = this.getCommonAncestor();a && a.type == CKEDITOR.NODE_TEXT && (a = a.getParent());return !(!a || !a.data("cke-hidden-sel"));
          }, isInTable: function (a) {
            return h(this.getRanges(), a);
          }, isCollapsed: function () {
            var a = this.getRanges();return 1 === a.length && a[0].collapsed;
          }, createBookmarks: function (a) {
            a = this.getRanges().createBookmarks(a);this.isFake && (a.isFake = 1);return a;
          }, createBookmarks2: function (a) {
            a = this.getRanges().createBookmarks2(a);this.isFake && (a.isFake = 1);return a;
          }, selectBookmarks: function (a) {
            for (var b = [], d, f = 0; f < a.length; f++) {
              var c = new CKEDITOR.dom.range(this.root);c.moveToBookmark(a[f]);b.push(c);
            }a.isFake && (d = h(b) ? b[0]._getTableElement() : b[0].getEnclosedNode(), d && d.type == CKEDITOR.NODE_ELEMENT || (CKEDITOR.warn("selection-not-fake"), a.isFake = 0));a.isFake && !h(b) ? this.fake(d) : this.selectRanges(b);return this;
          }, getCommonAncestor: function () {
            var a = this.getRanges();return a.length ? a[0].startContainer.getCommonAncestor(a[a.length - 1].endContainer) : null;
          },
          scrollIntoView: function () {
            this.getType() != CKEDITOR.SELECTION_NONE && this.getRanges()[0].scrollIntoView();
          }, removeAllRanges: function () {
            if (this.getType() != CKEDITOR.SELECTION_NONE) {
              var a = this.getNative();try {
                a && a[v ? "empty" : "removeAllRanges"]();
              } catch (b) {}this.reset();
            }
          } };
      }(), "use strict", CKEDITOR.STYLE_BLOCK = 1, CKEDITOR.STYLE_INLINE = 2, CKEDITOR.STYLE_OBJECT = 3, function () {
        function c(a, b) {
          for (var d, f; (a = a.getParent()) && !a.equals(b);) if (a.getAttribute("data-nostyle")) d = a;else if (!f) {
            var c = a.getAttribute("contentEditable");
            "false" == c ? d = a : "true" == c && (f = 1);
          }return d;
        }function h(a, b, d, f) {
          return (a.getPosition(b) | f) == f && (!d.childRule || d.childRule(a));
        }function g(a) {
          var b = a.document;if (a.collapsed) b = B(this, b), a.insertNode(b), a.moveToPosition(b, CKEDITOR.POSITION_BEFORE_END);else {
            var d = this.element,
                f = this._.definition,
                k,
                l = f.ignoreReadonly,
                m = l || f.includeReadonly;null == m && (m = a.root.getCustomData("cke_includeReadonly"));var p = CKEDITOR.dtd[d];p || (k = !0, p = CKEDITOR.dtd.span);a.enlarge(CKEDITOR.ENLARGE_INLINE, 1);a.trim();var n = a.createBookmark(),
                w = n.startNode,
                q = n.endNode,
                t = w,
                u;if (!l) {
              var v = a.getCommonAncestor(),
                  l = c(w, v),
                  v = c(q, v);l && (t = l.getNextSourceNode(!0));v && (q = v);
            }for (t.getPosition(q) == CKEDITOR.POSITION_FOLLOWING && (t = 0); t;) {
              l = !1;if (t.equals(q)) t = null, l = !0;else {
                var x = t.type == CKEDITOR.NODE_ELEMENT ? t.getName() : null,
                    v = x && "false" == t.getAttribute("contentEditable"),
                    y = x && -1 !== CKEDITOR.tools.array.indexOf(CKEDITOR.style.unstylableElements, x),
                    y = x && (t.getAttribute("data-nostyle") || y);if (x && t.data("cke-bookmark") || t.type === CKEDITOR.NODE_COMMENT) {
                  t = t.getNextSourceNode(!0);continue;
                }if (v && m && CKEDITOR.dtd.$block[x]) for (var z = t, A = e(z), C = void 0, D = A.length, J = 0, z = D && new CKEDITOR.dom.range(z.getDocument()); J < D; ++J) {
                  var C = A[J],
                      ha = CKEDITOR.filter.instances[C.data("cke-filter")];if (ha ? ha.check(this) : 1) z.selectNodeContents(C), g.call(this, z);
                }A = x ? !p[x] || y ? 0 : v && !m ? 0 : h(t, q, f, M) : 1;if (A) {
                  if (C = t.getParent(), A = f, D = d, J = k, !C || !(C.getDtd() || CKEDITOR.dtd.span)[D] && !J || A.parentRule && !A.parentRule(C)) l = !0;else {
                    if (u || x && CKEDITOR.dtd.$removeEmpty[x] && (t.getPosition(q) | M) != M || (u = a.clone(), u.setStartBefore(t)), x = t.type, x == CKEDITOR.NODE_TEXT || v || x == CKEDITOR.NODE_ELEMENT && !t.getChildCount()) {
                      for (var x = t, R; (l = !x.getNext(K)) && (R = x.getParent(), p[R.getName()]) && h(R, w, f, H);) x = R;u.setEndAfter(x);
                    }
                  }
                } else l = !0;t = t.getNextSourceNode(y || v);
              }if (l && u && !u.collapsed) {
                for (var l = B(this, b), v = l.hasAttributes(), y = u.getCommonAncestor(), x = {}, A = {}, C = {}, D = {}, ba, Y, ga; l && y;) {
                  if (y.getName() == d) {
                    for (ba in f.attributes) !D[ba] && (ga = y.getAttribute(Y)) && (l.getAttribute(ba) == ga ? A[ba] = 1 : D[ba] = 1);for (Y in f.styles) !C[Y] && (ga = y.getStyle(Y)) && (l.getStyle(Y) == ga ? x[Y] = 1 : C[Y] = 1);
                  }y = y.getParent();
                }for (ba in A) l.removeAttribute(ba);for (Y in x) l.removeStyle(Y);v && !l.hasAttributes() && (l = null);l ? (u.extractContents().appendTo(l), u.insertNode(l), r.call(this, l), l.mergeSiblings(), CKEDITOR.env.ie || l.$.normalize()) : (l = new CKEDITOR.dom.element("span"), u.extractContents().appendTo(l), u.insertNode(l), r.call(this, l), l.remove(!0));u = null;
              }
            }a.moveToBookmark(n);a.shrink(CKEDITOR.SHRINK_TEXT);a.shrink(CKEDITOR.NODE_ELEMENT, !0);
          }
        }function a(a) {
          function b() {
            for (var a = new CKEDITOR.dom.elementPath(f.getParent()), d = new CKEDITOR.dom.elementPath(m.getParent()), c = null, e = null, g = 0; g < a.elements.length; g++) {
              var k = a.elements[g];if (k == a.block || k == a.blockLimit) break;p.checkElementRemovable(k, !0) && (c = k);
            }for (g = 0; g < d.elements.length; g++) {
              k = d.elements[g];if (k == d.block || k == d.blockLimit) break;p.checkElementRemovable(k, !0) && (e = k);
            }e && m.breakParent(e);c && f.breakParent(c);
          }a.enlarge(CKEDITOR.ENLARGE_INLINE, 1);var d = a.createBookmark(),
              f = d.startNode,
              c = this._.definition.alwaysRemoveElement;
          if (a.collapsed) {
            for (var e = new CKEDITOR.dom.elementPath(f.getParent(), a.root), g, k = 0, h; k < e.elements.length && (h = e.elements[k]) && h != e.block && h != e.blockLimit; k++) if (this.checkElementRemovable(h)) {
              var l;!c && a.collapsed && (a.checkBoundaryOfElement(h, CKEDITOR.END) || (l = a.checkBoundaryOfElement(h, CKEDITOR.START))) ? (g = h, g.match = l ? "start" : "end") : (h.mergeSiblings(), h.is(this.element) ? y.call(this, h) : t(h, q(this)[h.getName()]));
            }if (g) {
              c = f;for (k = 0;; k++) {
                h = e.elements[k];if (h.equals(g)) break;else if (h.match) continue;else h = h.clone();h.append(c);c = h;
              }c["start" == g.match ? "insertBefore" : "insertAfter"](g);
            }
          } else {
            var m = d.endNode,
                p = this;b();for (e = f; !e.equals(m);) g = e.getNextSourceNode(), e.type == CKEDITOR.NODE_ELEMENT && this.checkElementRemovable(e) && (e.getName() == this.element ? y.call(this, e) : t(e, q(this)[e.getName()]), g.type == CKEDITOR.NODE_ELEMENT && g.contains(f) && (b(), g = f.getNext())), e = g;
          }a.moveToBookmark(d);a.shrink(CKEDITOR.NODE_ELEMENT, !0);
        }function e(a) {
          var b = [];a.forEach(function (a) {
            if ("true" == a.getAttribute("contenteditable")) return b.push(a), !1;
          }, CKEDITOR.NODE_ELEMENT, !0);return b;
        }function k(a) {
          var b = a.getEnclosedNode() || a.getCommonAncestor(!1, !0);(a = new CKEDITOR.dom.elementPath(b, a.root).contains(this.element, 1)) && !a.isReadOnly() && n(a, this);
        }function l(a) {
          var b = a.getCommonAncestor(!0, !0);if (a = new CKEDITOR.dom.elementPath(b, a.root).contains(this.element, 1)) {
            var b = this._.definition,
                d = b.attributes;if (d) for (var f in d) a.removeAttribute(f, d[f]);if (b.styles) for (var c in b.styles) b.styles.hasOwnProperty(c) && a.removeStyle(c);
          }
        }function m(a) {
          var b = a.createBookmark(!0),
              f = a.createIterator();f.enforceRealBlocks = !0;this._.enterMode && (f.enlargeBr = this._.enterMode != CKEDITOR.ENTER_BR);for (var c, e = a.document, g; c = f.getNextParagraph();) !c.isReadOnly() && (f.activeFilter ? f.activeFilter.check(this) : 1) && (g = B(this, e, c), d(c, g));a.moveToBookmark(b);
        }function b(a) {
          var b = a.createBookmark(1),
              f = a.createIterator();f.enforceRealBlocks = !0;f.enlargeBr = this._.enterMode != CKEDITOR.ENTER_BR;for (var c, e; c = f.getNextParagraph();) this.checkElementRemovable(c) && (c.is("pre") ? ((e = this._.enterMode == CKEDITOR.ENTER_BR ? null : a.document.createElement(this._.enterMode == CKEDITOR.ENTER_P ? "p" : "div")) && c.copyAttributes(e), d(c, e)) : y.call(this, c));a.moveToBookmark(b);
        }function d(a, b) {
          var d = !b;d && (b = a.getDocument().createElement("div"), a.copyAttributes(b));var c = b && b.is("pre"),
              e = a.is("pre"),
              g = !c && e;if (c && !e) {
            e = b;(g = a.getBogus()) && g.remove();g = a.getHtml();g = p(g, /(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, "");g = g.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi, "$1");g = g.replace(/([ \t\n\r]+|&nbsp;)/g, " ");g = g.replace(/<br\b[^>]*>/gi, "\n");if (CKEDITOR.env.ie) {
              var k = a.getDocument().createElement("div");k.append(e);e.$.outerHTML = "\x3cpre\x3e" + g + "\x3c/pre\x3e";e.copyAttributes(k.getFirst());e = k.getFirst().remove();
            } else e.setHtml(g);b = e;
          } else g ? b = w(d ? [a.getHtml()] : f(a), b) : a.moveChildren(b);b.replace(a);if (c) {
            var d = b,
                h;(h = d.getPrevious(F)) && h.type == CKEDITOR.NODE_ELEMENT && h.is("pre") && (c = p(h.getHtml(), /\n$/, "") + "\n\n" + p(d.getHtml(), /^\n/, ""), CKEDITOR.env.ie ? d.$.outerHTML = "\x3cpre\x3e" + c + "\x3c/pre\x3e" : d.setHtml(c), h.remove());
          } else d && v(b);
        }function f(a) {
          var b = [];p(a.getOuterHtml(), /(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi, function (a, b, d) {
            return b + "\x3c/pre\x3e" + d + "\x3cpre\x3e";
          }).replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi, function (a, d) {
            b.push(d);
          });return b;
        }function p(a, b, d) {
          var f = "",
              c = "";a = a.replace(/(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi, function (a, b, d) {
            b && (f = b);d && (c = d);return "";
          });return f + a.replace(b, d) + c;
        }function w(a, b) {
          var d;
          1 < a.length && (d = new CKEDITOR.dom.documentFragment(b.getDocument()));for (var f = 0; f < a.length; f++) {
            var c = a[f],
                c = c.replace(/(\r\n|\r)/g, "\n"),
                c = p(c, /^[ \t]*\n/, ""),
                c = p(c, /\n$/, ""),
                c = p(c, /^[ \t]+|[ \t]+$/g, function (a, b) {
              return 1 == a.length ? "\x26nbsp;" : b ? " " + CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) : CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) + " ";
            }),
                c = c.replace(/\n/g, "\x3cbr\x3e"),
                c = c.replace(/[ \t]{2,}/g, function (a) {
              return CKEDITOR.tools.repeat("\x26nbsp;", a.length - 1) + " ";
            });if (d) {
              var e = b.clone();e.setHtml(c);
              d.append(e);
            } else b.setHtml(c);
          }return d || b;
        }function y(a, b) {
          var d = this._.definition,
              f = d.attributes,
              d = d.styles,
              c = q(this)[a.getName()],
              e = CKEDITOR.tools.isEmpty(f) && CKEDITOR.tools.isEmpty(d),
              g;for (g in f) if ("class" != g && !this._.definition.fullMatch || a.getAttribute(g) == u(g, f[g])) b && "data-" == g.slice(0, 5) || (e = a.hasAttribute(g), a.removeAttribute(g));for (var k in d) this._.definition.fullMatch && a.getStyle(k) != u(k, d[k], !0) || (e = e || !!a.getStyle(k), a.removeStyle(k));t(a, c, C[a.getName()]);e && (this._.definition.alwaysRemoveElement ? v(a, 1) : !CKEDITOR.dtd.$block[a.getName()] || this._.enterMode == CKEDITOR.ENTER_BR && !a.hasAttributes() ? v(a) : a.renameNode(this._.enterMode == CKEDITOR.ENTER_P ? "p" : "div"));
        }function r(a) {
          for (var b = q(this), d = a.getElementsByTag(this.element), f, c = d.count(); 0 <= --c;) f = d.getItem(c), f.isReadOnly() || y.call(this, f, !0);for (var e in b) if (e != this.element) for (d = a.getElementsByTag(e), c = d.count() - 1; 0 <= c; c--) f = d.getItem(c), f.isReadOnly() || t(f, b[e]);
        }function t(a, b, d) {
          if (b = b && b.attributes) for (var f = 0; f < b.length; f++) {
            var c = b[f][0],
                e;if (e = a.getAttribute(c)) {
              var g = b[f][1];(null === g || g.test && g.test(e) || "string" == typeof g && e == g) && a.removeAttribute(c);
            }
          }d || v(a);
        }function v(a, b) {
          if (!a.hasAttributes() || b) if (CKEDITOR.dtd.$block[a.getName()]) {
            var d = a.getPrevious(F),
                f = a.getNext(F);!d || d.type != CKEDITOR.NODE_TEXT && d.isBlockBoundary({ br: 1 }) || a.append("br", 1);!f || f.type != CKEDITOR.NODE_TEXT && f.isBlockBoundary({ br: 1 }) || a.append("br");a.remove(!0);
          } else d = a.getFirst(), f = a.getLast(), a.remove(!0), d && (d.type == CKEDITOR.NODE_ELEMENT && d.mergeSiblings(), f && !d.equals(f) && f.type == CKEDITOR.NODE_ELEMENT && f.mergeSiblings());
        }function B(a, b, d) {
          var f = a.element;"*" == f && (f = "span");f = new CKEDITOR.dom.element(f, b);d && d.copyAttributes(f);f = n(f, a);b.getCustomData("doc_processing_style") && f.hasAttribute("id") ? f.removeAttribute("id") : b.setCustomData("doc_processing_style", 1);return f;
        }function n(a, b) {
          var d = b._.definition,
              f = d.attributes,
              d = CKEDITOR.style.getStyleText(d);if (f) for (var c in f) a.setAttribute(c, f[c]);d && a.setAttribute("style", d);a.getDocument().removeCustomData("doc_processing_style");
          return a;
        }function x(a, b) {
          for (var d in a) a[d] = a[d].replace(G, function (a, d) {
            return b[d];
          });
        }function q(a) {
          if (a._.overrides) return a._.overrides;var b = a._.overrides = {},
              d = a._.definition.overrides;if (d) {
            CKEDITOR.tools.isArray(d) || (d = [d]);for (var f = 0; f < d.length; f++) {
              var c = d[f],
                  e,
                  g;"string" == typeof c ? e = c.toLowerCase() : (e = c.element ? c.element.toLowerCase() : a.element, g = c.attributes);c = b[e] || (b[e] = {});if (g) {
                var c = c.attributes = c.attributes || [],
                    k;for (k in g) c.push([k.toLowerCase(), g[k]]);
              }
            }
          }return b;
        }function u(a, b, d) {
          var f = new CKEDITOR.dom.element("span");f[d ? "setStyle" : "setAttribute"](a, b);return f[d ? "getStyle" : "getAttribute"](a);
        }function z(a, b) {
          function d(a, b) {
            return "font-family" == b.toLowerCase() ? a.replace(/["']/g, "") : a;
          }"string" == typeof a && (a = CKEDITOR.tools.parseCssText(a));"string" == typeof b && (b = CKEDITOR.tools.parseCssText(b, !0));for (var f in a) if (!(f in b) || d(b[f], f) != d(a[f], f) && "inherit" != a[f] && "inherit" != b[f]) return !1;return !0;
        }function A(a, b, d) {
          var f = a.getRanges();b = b ? this.removeFromRange : this.applyToRange;
          for (var c, e = f.createIterator(); c = e.getNextRange();) b.call(this, c, d);a.selectRanges(f);
        }var C = { address: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, p: 1, pre: 1, section: 1, header: 1, footer: 1, nav: 1, article: 1, aside: 1, figure: 1, dialog: 1, hgroup: 1, time: 1, meter: 1, menu: 1, command: 1, keygen: 1, output: 1, progress: 1, details: 1, datagrid: 1, datalist: 1 },
            D = { a: 1, blockquote: 1, embed: 1, hr: 1, img: 1, li: 1, object: 1, ol: 1, table: 1, td: 1, tr: 1, th: 1, ul: 1, dl: 1, dt: 1, dd: 1, form: 1, audio: 1, video: 1 },
            E = /\s*(?:;\s*|$)/,
            G = /#\((.+?)\)/g,
            K = CKEDITOR.dom.walker.bookmark(0, 1),
            F = CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style = function (a, b) {
          if ("string" == typeof a.type) return new CKEDITOR.style.customHandlers[a.type](a);var d = a.attributes;d && d.style && (a.styles = CKEDITOR.tools.extend({}, a.styles, CKEDITOR.tools.parseCssText(d.style)), delete d.style);b && (a = CKEDITOR.tools.clone(a), x(a.attributes, b), x(a.styles, b));d = this.element = a.element ? "string" == typeof a.element ? a.element.toLowerCase() : a.element : "*";this.type = a.type || (C[d] ? CKEDITOR.STYLE_BLOCK : D[d] ? CKEDITOR.STYLE_OBJECT : CKEDITOR.STYLE_INLINE);"object" == typeof this.element && (this.type = CKEDITOR.STYLE_OBJECT);this._ = { definition: a };
        };CKEDITOR.style.prototype = { apply: function (a) {
            if (a instanceof CKEDITOR.dom.document) return A.call(this, a.getSelection());if (this.checkApplicable(a.elementPath(), a)) {
              var b = this._.enterMode;b || (this._.enterMode = a.activeEnterMode);A.call(this, a.getSelection(), 0, a);this._.enterMode = b;
            }
          }, remove: function (a) {
            if (a instanceof CKEDITOR.dom.document) return A.call(this, a.getSelection(), 1);if (this.checkApplicable(a.elementPath(), a)) {
              var b = this._.enterMode;b || (this._.enterMode = a.activeEnterMode);A.call(this, a.getSelection(), 1, a);this._.enterMode = b;
            }
          }, applyToRange: function (a) {
            this.applyToRange = this.type == CKEDITOR.STYLE_INLINE ? g : this.type == CKEDITOR.STYLE_BLOCK ? m : this.type == CKEDITOR.STYLE_OBJECT ? k : null;return this.applyToRange(a);
          }, removeFromRange: function (d) {
            this.removeFromRange = this.type == CKEDITOR.STYLE_INLINE ? a : this.type == CKEDITOR.STYLE_BLOCK ? b : this.type == CKEDITOR.STYLE_OBJECT ? l : null;return this.removeFromRange(d);
          }, applyToObject: function (a) {
            n(a, this);
          }, checkActive: function (a, b) {
            switch (this.type) {case CKEDITOR.STYLE_BLOCK:
                return this.checkElementRemovable(a.block || a.blockLimit, !0, b);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:
                for (var d = a.elements, f = 0, c; f < d.length; f++) if (c = d[f], this.type != CKEDITOR.STYLE_INLINE || c != a.block && c != a.blockLimit) {
                  if (this.type == CKEDITOR.STYLE_OBJECT) {
                    var e = c.getName();if (!("string" == typeof this.element ? e == this.element : e in this.element)) continue;
                  }if (this.checkElementRemovable(c, !0, b)) return !0;
                }}return !1;
          }, checkApplicable: function (a, b, d) {
            b && b instanceof CKEDITOR.filter && (d = b);if (d && !d.check(this)) return !1;switch (this.type) {case CKEDITOR.STYLE_OBJECT:
                return !!a.contains(this.element);case CKEDITOR.STYLE_BLOCK:
                return !!a.blockLimit.getDtd()[this.element];}return !0;
          }, checkElementMatch: function (a, b) {
            var d = this._.definition;if (!a || !d.ignoreReadonly && a.isReadOnly()) return !1;var f = a.getName();if ("string" == typeof this.element ? f == this.element : f in this.element) {
              if (!b && !a.hasAttributes()) return !0;if (f = d._AC) d = f;else {
                var f = {},
                    c = 0,
                    e = d.attributes;
                if (e) for (var g in e) c++, f[g] = e[g];if (g = CKEDITOR.style.getStyleText(d)) f.style || c++, f.style = g;f._length = c;d = d._AC = f;
              }if (d._length) {
                for (var k in d) if ("_length" != k) if (f = a.getAttribute(k) || "", "style" == k ? z(d[k], f) : d[k] == f) {
                  if (!b) return !0;
                } else if (b) return !1;if (b) return !0;
              } else return !0;
            }return !1;
          }, checkElementRemovable: function (a, b, d) {
            if (this.checkElementMatch(a, b, d)) return !0;if (b = q(this)[a.getName()]) {
              var f;if (!(b = b.attributes)) return !0;for (d = 0; d < b.length; d++) if (f = b[d][0], f = a.getAttribute(f)) {
                var c = b[d][1];
                if (null === c) return !0;if ("string" == typeof c) {
                  if (f == c) return !0;
                } else if (c.test(f)) return !0;
              }
            }return !1;
          }, buildPreview: function (a) {
            var b = this._.definition,
                d = [],
                f = b.element;"bdo" == f && (f = "span");var d = ["\x3c", f],
                c = b.attributes;if (c) for (var e in c) d.push(" ", e, '\x3d"', c[e], '"');(c = CKEDITOR.style.getStyleText(b)) && d.push(' style\x3d"', c, '"');d.push("\x3e", a || b.name, "\x3c/", f, "\x3e");return d.join("");
          }, getDefinition: function () {
            return this._.definition;
          } };CKEDITOR.style.getStyleText = function (a) {
          var b = a._ST;if (b) return b;
          var b = a.styles,
              d = a.attributes && a.attributes.style || "",
              f = "";d.length && (d = d.replace(E, ";"));for (var c in b) {
            var e = b[c],
                g = (c + ":" + e).replace(E, ";");"inherit" == e ? f += g : d += g;
          }d.length && (d = CKEDITOR.tools.normalizeCssText(d, !0));return a._ST = d + f;
        };CKEDITOR.style.customHandlers = {};CKEDITOR.style.unstylableElements = [];CKEDITOR.style.addCustomHandler = function (a) {
          var b = function (a) {
            this._ = { definition: a };this.setup && this.setup(a);
          };b.prototype = CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype), { assignedTo: CKEDITOR.STYLE_OBJECT }, a, !0);return this.customHandlers[a.type] = b;
        };var M = CKEDITOR.POSITION_PRECEDING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED,
            H = CKEDITOR.POSITION_FOLLOWING | CKEDITOR.POSITION_IDENTICAL | CKEDITOR.POSITION_IS_CONTAINED;
      }(), CKEDITOR.styleCommand = function (c, h) {
        this.requiredContent = this.allowedContent = this.style = c;CKEDITOR.tools.extend(this, h, !0);
      }, CKEDITOR.styleCommand.prototype.exec = function (c) {
        c.focus();this.state == CKEDITOR.TRISTATE_OFF ? c.applyStyle(this.style) : this.state == CKEDITOR.TRISTATE_ON && c.removeStyle(this.style);
      }, CKEDITOR.stylesSet = new CKEDITOR.resourceManager("", "stylesSet"), CKEDITOR.addStylesSet = CKEDITOR.tools.bind(CKEDITOR.stylesSet.add, CKEDITOR.stylesSet), CKEDITOR.loadStylesSet = function (c, h, g) {
        CKEDITOR.stylesSet.addExternal(c, h, "");CKEDITOR.stylesSet.load(c, g);
      }, CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { attachStyleStateChange: function (c, h) {
          var g = this._.styleStateChangeCallbacks;g || (g = this._.styleStateChangeCallbacks = [], this.on("selectionChange", function (a) {
            for (var c = 0; c < g.length; c++) {
              var k = g[c],
                  h = k.style.checkActive(a.data.path, this) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF;k.fn.call(this, h);
            }
          }));g.push({ style: c, fn: h });
        }, applyStyle: function (c) {
          c.apply(this);
        }, removeStyle: function (c) {
          c.remove(this);
        }, getStylesSet: function (c) {
          if (this._.stylesDefinitions) c(this._.stylesDefinitions);else {
            var h = this,
                g = h.config.stylesCombo_stylesSet || h.config.stylesSet;if (!1 === g) c(null);else if (g instanceof Array) h._.stylesDefinitions = g, c(g);else {
              g || (g = "default");
              var g = g.split(":"),
                  a = g[0];CKEDITOR.stylesSet.addExternal(a, g[1] ? g.slice(1).join(":") : CKEDITOR.getUrl("styles.js"), "");CKEDITOR.stylesSet.load(a, function (e) {
                h._.stylesDefinitions = e[a];c(h._.stylesDefinitions);
              });
            }
          }
        } }), function () {
        if (window.Promise) CKEDITOR.tools.promise = Promise;else {
          var c = CKEDITOR.getUrl("vendor/promise.js");if ("function" === typeof window.define && window.define.amd && "function" === typeof window.require) return window.require([c], function (c) {
            CKEDITOR.tools.promise = c;
          });CKEDITOR.scriptLoader.load(c, function (h) {
            if (!h) return CKEDITOR.error("no-vendor-lib", { path: c });if ("undefined" !== typeof window.ES6Promise) return CKEDITOR.tools.promise = ES6Promise;
          });
        }
      }(), function () {
        function c(a, c, k) {
          a.once("selectionCheck", function (a) {
            if (!h) {
              var m = a.data.getRanges()[0];k.equals(m) ? a.cancel() : c.equals(m) && (g = !0);
            }
          }, null, null, -1);
        }var h = !0,
            g = !1;CKEDITOR.dom.selection.setupEditorOptimization = function (a) {
          a.on("selectionCheck", function (a) {
            a.data && !g && a.data.optimizeInElementEnds();g = !1;
          });a.on("contentDom", function () {
            var c = a.editable();c && (c.attachListener(c, "keydown", function (a) {
              this._.shiftPressed = a.data.$.shiftKey;
            }, this), c.attachListener(c, "keyup", function (a) {
              this._.shiftPressed = a.data.$.shiftKey;
            }, this));
          });
        };CKEDITOR.dom.selection.prototype.optimizeInElementEnds = function () {
          var a = this.getRanges()[0],
              e = this.root.editor,
              g;if (this.root.editor._.shiftPressed || this.isFake || a.isCollapsed || a.startContainer.equals(a.endContainer)) g = !1;else if (0 === a.endOffset) g = !0;else {
            g = a.startContainer.type === CKEDITOR.NODE_TEXT;var l = a.endContainer.type === CKEDITOR.NODE_TEXT,
                m = g ? a.startContainer.getLength() : a.startContainer.getChildCount();g = a.startOffset === m || g ^ l;
          }g && (g = a.clone(), a.shrink(CKEDITOR.SHRINK_TEXT, !1, { skipBogus: !CKEDITOR.env.webkit }), h = !1, c(e, a, g), a.select(), h = !0);
        };
      }(), function () {
        function c(a, c) {
          if (g(a)) a = Math.round(c * (parseFloat(a) / 100));else if ("string" === typeof a && a.match(/^\d+$/gm) || "string" === typeof a && a.match(/^\d+(?:deg)?$/gm)) a = parseInt(a, 10);return a;
        }function h(a, c) {
          g(a) ? a = c * (parseFloat(a) / 100) : "string" === typeof a && a.match(/^\d?\.\d+/gm) && (a = parseFloat(a));return a;
        }function g(a) {
          return "string" === typeof a && a.match(/^((\d*\.\d+)|(\d+))%{1}$/gm);
        }function a(a, c, e) {
          return !isNaN(a) && a >= c && a <= e;
        }function e(a) {
          a = a.toString(16);return 1 == a.length ? "0" + a : a;
        }CKEDITOR.tools.color = CKEDITOR.tools.createClass({ $: function (a, c) {
            this._.initialColorCode = a;this._.defaultValue = c;this._.parseInput(a);
          }, proto: { getHex: function () {
              if (!this._.isValidColor) return this._.defaultValue;var a = this._.blendAlphaColor(this._.red, this._.green, this._.blue, this._.alpha);return this._.formatHexString(a[0], a[1], a[2]);
            }, getHexWithAlpha: function () {
              if (!this._.isValidColor) return this._.defaultValue;var a = Math.round(this._.alpha * CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE);return this._.formatHexString(this._.red, this._.green, this._.blue, a);
            }, getRgb: function () {
              if (!this._.isValidColor) return this._.defaultValue;var a = this._.blendAlphaColor(this._.red, this._.green, this._.blue, this._.alpha);return this._.formatRgbString("rgb", a[0], a[1], a[2]);
            }, getRgba: function () {
              return this._.isValidColor ? this._.formatRgbString("rgba", this._.red, this._.green, this._.blue, this._.alpha) : this._.defaultValue;
            }, getHsl: function () {
              var a = 0 === this._.alpha || 1 === this._.alpha;if (!this._.isValidColor) return this._.defaultValue;this._.type === CKEDITOR.tools.color.TYPE_HSL && a ? a = [this._.hue, this._.saturation, this._.lightness] : (a = this._.blendAlphaColor(this._.red, this._.green, this._.blue, this._.alpha), a = this._.rgbToHsl(a[0], a[1], a[2]));return this._.formatHslString("hsl", a[0], a[1], a[2]);
            }, getHsla: function () {
              var a;if (!this._.isValidColor) return this._.defaultValue;
              a = this._.type === CKEDITOR.tools.color.TYPE_HSL ? [this._.hue, this._.saturation, this._.lightness] : this._.rgbToHsl(this._.red, this._.green, this._.blue);return this._.formatHslString("hsla", a[0], a[1], a[2], this._.alpha);
            }, getInitialValue: function () {
              return this._.initialColorCode;
            } }, _: { initialColorCode: "", isValidColor: !0, type: 0, hue: 0, saturation: 0, lightness: 0, red: 0, green: 0, blue: 0, alpha: 1, blendAlphaColor: function (a, c, e, b) {
              return CKEDITOR.tools.array.map([a, c, e], function (a) {
                return Math.round(CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE - b * (CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE - a));
              });
            }, formatHexString: function (a, c, g, b) {
              a = "#" + e(a) + e(c) + e(g);void 0 !== b && (a += e(b));return a.toUpperCase();
            }, formatRgbString: function (a, c, e, b, d) {
              c = [c, e, b];void 0 !== d && c.push(d);return a + "(" + c.join(",") + ")";
            }, formatHslString: function (a, c, e, b, d) {
              return a + "(" + c + "," + e + "%," + b + "%" + (void 0 !== d ? "," + d : "") + ")";
            }, parseInput: function (a) {
              if ("string" !== typeof a) this._.isValidColor = !1;else {
                a = CKEDITOR.tools.trim(a);var c = this._.matchStringToNamedColor(a);c && (a = c);var c = this._.extractColorChannelsFromHex(a),
                    e = this._.extractColorChannelsFromRgba(a);a = this._.extractColorChannelsFromHsla(a);(a = c || e || a) ? (this._.type = a.type, this._.red = a.red, this._.green = a.green, this._.blue = a.blue, this._.alpha = a.alpha, a.type === CKEDITOR.tools.color.TYPE_HSL && (this._.hue = a.hue, this._.saturation = a.saturation, this._.lightness = a.lightness)) : this._.isValidColor = !1;
              }
            }, matchStringToNamedColor: function (a) {
              return CKEDITOR.tools.color.namedColors[a.toLowerCase()] || null;
            }, extractColorChannelsFromHex: function (a) {
              -1 === a.indexOf("#") && (a = "#" + a);a.match(CKEDITOR.tools.color.hex3CharsRegExp) && (a = this._.hex3ToHex6(a));a.match(CKEDITOR.tools.color.hex4CharsRegExp) && (a = this._.hex4ToHex8(a));if (!a.match(CKEDITOR.tools.color.hex6CharsRegExp) && !a.match(CKEDITOR.tools.color.hex8CharsRegExp)) return null;a = a.split("");var c = 1;a[7] && a[8] && (c = parseInt(a[7] + a[8], 16), c /= CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE, c = Number(c.toFixed(1)));return { type: CKEDITOR.tools.color.TYPE_RGB, red: parseInt(a[1] + a[2], 16), green: parseInt(a[3] + a[4], 16), blue: parseInt(a[5] + a[6], 16), alpha: c };
            }, extractColorChannelsFromRgba: function (a) {
              var e = this._.extractColorChannelsByPattern(a, CKEDITOR.tools.color.rgbRegExp);if (!e || 3 > e.length || 4 < e.length) return null;var g = 4 === e.length;a = c(e[0], CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE);var b = c(e[1], CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE),
                  d = c(e[2], CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE),
                  f = 1;g && (f = h(e[3], CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE));e = { type: CKEDITOR.tools.color.TYPE_RGB, red: a, green: b, blue: d,
                alpha: f };return this._.areColorChannelsValid(a, b, d, f) ? e : null;
            }, extractColorChannelsFromHsla: function (a) {
              var e = this._.extractColorChannelsByPattern(a, CKEDITOR.tools.color.hslRegExp);if (!e || 3 > e.length || 4 < e.length) return null;var g = 4 === e.length,
                  b = c(e[0], CKEDITOR.tools.color.MAX_HUE_CHANNEL_VALUE),
                  d = h(e[1], CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE),
                  f = h(e[2], CKEDITOR.tools.color.MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE),
                  p = 1;a = this._.hslToRgb(b, d, f);g && (p = h(e[3], CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE));
              a.push(p);e = { type: CKEDITOR.tools.color.TYPE_HSL, red: a[0], green: a[1], blue: a[2], alpha: a[3], hue: b, saturation: Math.round(100 * d), lightness: Math.round(100 * f) };return this._.areColorChannelsValid(a[0], a[1], a[2], a[3]) ? e : null;
            }, hex3ToHex6: function (a) {
              a = a.split("");return "#" + a[1] + a[1] + a[2] + a[2] + a[3] + a[3];
            }, hex4ToHex8: function (a) {
              return this._.hex3ToHex6(a.substr(0, 4)) + CKEDITOR.tools.repeat(a[4], 2);
            }, extractColorChannelsByPattern: function (a, c) {
              var e = a.match(c);if (!e) return null;var b = -1 === e[1].indexOf(",") ? /\s/ : ",",
                  b = e[1].split(b),
                  b = CKEDITOR.tools.array.reduce(b, function (a, b) {
                var c = CKEDITOR.tools.trim(b);return 0 === c.length ? a : a.concat([c]);
              }, []);e[2] && (e = CKEDITOR.tools.trim(e[2].replace(/[\/,]/, "")), b.push(e));return b;
            }, areColorChannelsValid: function (c, e, g, b) {
              return a(c, 0, CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE) && a(e, 0, CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE) && a(g, 0, CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE) && a(b, 0, CKEDITOR.tools.color.MAX_ALPHA_CHANNEL_VALUE);
            }, hslToRgb: function (a, c, e) {
              var b = function (b) {
                var f = (b + a / 30) % 12;b = c * Math.min(e, 1 - e);f = Math.min(f - 3, 9 - f, 1);f = Math.max(-1, f);return Math.round((e - b * f) * CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE);
              };return [b(0), b(8), b(4)];
            }, rgbToHsl: function (a, c, e) {
              a /= CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE;c /= CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE;var b = e / CKEDITOR.tools.color.MAX_RGB_CHANNEL_VALUE,
                  d = Math.max(a, c, b),
                  f = Math.min(a, c, b);e = d - f;var g = 0;switch (d) {case a:
                  g = (c - b) / e % 6;break;case c:
                  g = (b - a) / e + 2;break;case b:
                  g = (a - c) / e + 4;}a = 0 === e ? 0 : 60 * g;c = (d + f) / 2;d = 0;1 !== c && 0 !== c && (d = e / (1 - Math.abs(2 * c - 1)));a = Math.round(a);d = Math.round(100 * d);c = Math.round(100 * c);return [a, d, c];
            } }, statics: { TYPE_RGB: 1, TYPE_HSL: 2, MAX_RGB_CHANNEL_VALUE: 255, MAX_ALPHA_CHANNEL_VALUE: 1, MAX_HUE_CHANNEL_VALUE: 360, MAX_SATURATION_LIGHTNESS_CHANNEL_VALUE: 1, hex3CharsRegExp: /#([0-9a-f]{3}$)/gim, hex4CharsRegExp: /#([0-9a-f]{4}$)/gim, hex6CharsRegExp: /#([0-9a-f]{6}$)/gim, hex8CharsRegExp: /#([0-9a-f]{8}$)/gim, rgbRegExp: /rgba?\(([.,\d\s%]*)(\s*\/\s*[\d.%]+)?\s*\)/i, hslRegExp: /hsla?\((\s*(?:[.\d]+(?:deg)?)(?:\s*,?\s*[.\d]+%){2})((?:(?:\s*\/\s*)|(?:\s*,\s*))[\d.]+%?)?\s*\)/i,
            namedColors: { aliceblue: "#F0F8FF", antiquewhite: "#FAEBD7", aqua: "#00FFFF", aquamarine: "#7FFFD4", azure: "#F0FFFF", beige: "#F5F5DC", bisque: "#FFE4C4", black: "#000000", blanchedalmond: "#FFEBCD", blue: "#0000FF", blueviolet: "#8A2BE2", brown: "#A52A2A", burlywood: "#DEB887", cadetblue: "#5F9EA0", chartreuse: "#7FFF00", chocolate: "#D2691E", coral: "#FF7F50", cornflowerblue: "#6495ED", cornsilk: "#FFF8DC", crimson: "#DC143C", cyan: "#00FFFF", darkblue: "#00008B", darkcyan: "#008B8B", darkgoldenrod: "#B8860B", darkgray: "#A9A9A9", darkgreen: "#006400",
              darkgrey: "#A9A9A9", darkkhaki: "#BDB76B", darkmagenta: "#8B008B", darkolivegreen: "#556B2F", darkorange: "#FF8C00", darkorchid: "#9932CC", darkred: "#8B0000", darksalmon: "#E9967A", darkseagreen: "#8FBC8F", darkslateblue: "#483D8B", darkslategray: "#2F4F4F", darkslategrey: "#2F4F4F", darkturquoise: "#00CED1", darkviolet: "#9400D3", deeppink: "#FF1493", deepskyblue: "#00BFFF", dimgray: "#696969", dimgrey: "#696969", dodgerblue: "#1E90FF", firebrick: "#B22222", floralwhite: "#FFFAF0", forestgreen: "#228B22", fuchsia: "#FF00FF", gainsboro: "#DCDCDC",
              ghostwhite: "#F8F8FF", gold: "#FFD700", goldenrod: "#DAA520", gray: "#808080", green: "#008000", greenyellow: "#ADFF2F", grey: "#808080", honeydew: "#F0FFF0", hotpink: "#FF69B4", indianred: "#CD5C5C", indigo: "#4B0082", ivory: "#FFFFF0", khaki: "#F0E68C", lavender: "#E6E6FA", lavenderblush: "#FFF0F5", lawngreen: "#7CFC00", lemonchiffon: "#FFFACD", lightblue: "#ADD8E6", lightcoral: "#F08080", lightcyan: "#E0FFFF", lightgoldenrodyellow: "#FAFAD2", lightgray: "#D3D3D3", lightgreen: "#90EE90", lightgrey: "#D3D3D3", lightpink: "#FFB6C1", lightsalmon: "#FFA07A",
              lightseagreen: "#20B2AA", lightskyblue: "#87CEFA", lightslategray: "#778899", lightslategrey: "#778899", lightsteelblue: "#B0C4DE", lightyellow: "#FFFFE0", lime: "#00FF00", limegreen: "#32CD32", linen: "#FAF0E6", magenta: "#FF00FF", maroon: "#800000", mediumaquamarine: "#66CDAA", mediumblue: "#0000CD", mediumorchid: "#BA55D3", mediumpurple: "#9370DB", mediumseagreen: "#3CB371", mediumslateblue: "#7B68EE", mediumspringgreen: "#00FA9A", mediumturquoise: "#48D1CC", mediumvioletred: "#C71585", midnightblue: "#191970", mintcream: "#F5FFFA", mistyrose: "#FFE4E1",
              moccasin: "#FFE4B5", navajowhite: "#FFDEAD", navy: "#000080", oldlace: "#FDF5E6", olive: "#808000", olivedrab: "#6B8E23", orange: "#FFA500", orangered: "#FF4500", orchid: "#DA70D6", palegoldenrod: "#EEE8AA", palegreen: "#98FB98", paleturquoise: "#AFEEEE", palevioletred: "#DB7093", papayawhip: "#FFEFD5", peachpuff: "#FFDAB9", peru: "#CD853F", pink: "#FFC0CB", plum: "#DDA0DD", powderblue: "#B0E0E6", purple: "#800080", rebeccapurple: "#663399", red: "#FF0000", rosybrown: "#BC8F8F", royalblue: "#4169E1", saddlebrown: "#8B4513", salmon: "#FA8072", sandybrown: "#F4A460",
              seagreen: "#2E8B57", seashell: "#FFF5EE", sienna: "#A0522D", silver: "#C0C0C0", skyblue: "#87CEEB", slateblue: "#6A5ACD", slategray: "#708090", slategrey: "#708090", snow: "#FFFAFA", springgreen: "#00FF7F", steelblue: "#4682B4", tan: "#D2B48C", teal: "#008080", thistle: "#D8BFD8", tomato: "#FF6347", turquoise: "#40E0D0", violet: "#EE82EE", windowtext: "windowtext", wheat: "#F5DEB3", white: "#FFFFFF", whitesmoke: "#F5F5F5", yellow: "#FFFF00", yellowgreen: "#9ACD32" } } });CKEDITOR.tools.style.parse._colors = CKEDITOR.tools.color.namedColors;
      }(), CKEDITOR.dom.comment = function (c, h) {
        "string" == typeof c && (c = (h ? h.$ : document).createComment(c));CKEDITOR.dom.domObject.call(this, c);
      }, CKEDITOR.dom.comment.prototype = new CKEDITOR.dom.node(), CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype, { type: CKEDITOR.NODE_COMMENT, getOuterHtml: function () {
          return "\x3c!--" + this.$.nodeValue + "--\x3e";
        } }), "use strict", function () {
        var c = {},
            h = {},
            g;for (g in CKEDITOR.dtd.$blockLimit) g in CKEDITOR.dtd.$list || (c[g] = 1);for (g in CKEDITOR.dtd.$block) g in CKEDITOR.dtd.$blockLimit || g in CKEDITOR.dtd.$empty || (h[g] = 1);CKEDITOR.dom.elementPath = function (a, e) {
          var g = null,
              l = null,
              m = [],
              b = a,
              d;e = e || a.getDocument().getBody();b || (b = e);do if (b.type == CKEDITOR.NODE_ELEMENT) {
            m.push(b);if (!this.lastElement && (this.lastElement = b, b.is(CKEDITOR.dtd.$object) || "false" == b.getAttribute("contenteditable"))) continue;if (b.equals(e)) break;if (!l && (d = b.getName(), "true" == b.getAttribute("contenteditable") ? l = b : !g && h[d] && (g = b), c[d])) {
              if (d = !g && "div" == d) {
                a: {
                  d = b.getChildren();for (var f = 0, p = d.count(); f < p; f++) {
                    var w = d.getItem(f);if (w.type == CKEDITOR.NODE_ELEMENT && CKEDITOR.dtd.$block[w.getName()]) {
                      d = !0;break a;
                    }
                  }d = !1;
                }d = !d;
              }d ? g = b : l = b;
            }
          } while (b = b.getParent());l || (l = e);this.block = g;this.blockLimit = l;this.root = e;this.elements = m;
        };
      }(), CKEDITOR.dom.elementPath.prototype = { compare: function (c) {
          var h = this.elements;c = c && c.elements;if (!c || h.length != c.length) return !1;for (var g = 0; g < h.length; g++) if (!h[g].equals(c[g])) return !1;return !0;
        }, contains: function (c, h, g) {
          var a = 0,
              e;"string" == typeof c && (e = function (a) {
            return a.getName() == c;
          });c instanceof CKEDITOR.dom.element ? e = function (a) {
            return a.equals(c);
          } : CKEDITOR.tools.isArray(c) ? e = function (a) {
            return -1 < CKEDITOR.tools.indexOf(c, a.getName());
          } : "function" == typeof c ? e = c : "object" == typeof c && (e = function (a) {
            return a.getName() in c;
          });var k = this.elements,
              l = k.length;h && (g ? a += 1 : --l);g && (k = Array.prototype.slice.call(k, 0), k.reverse());for (; a < l; a++) if (e(k[a])) return k[a];return null;
        }, isContextFor: function (c) {
          var h;return c in CKEDITOR.dtd.$block ? (h = this.contains(CKEDITOR.dtd.$intermediate) || this.root.equals(this.block) && this.block || this.blockLimit, !!h.getDtd()[c]) : !0;
        }, direction: function () {
          return (this.block || this.blockLimit || this.root).getDirection(1);
        } }, CKEDITOR.dom.text = function (c, h) {
        "string" == typeof c && (c = (h ? h.$ : document).createTextNode(c));this.$ = c;
      }, CKEDITOR.dom.text.prototype = new CKEDITOR.dom.node(), CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype, { type: CKEDITOR.NODE_TEXT, getLength: function () {
          return this.$.nodeValue.length;
        }, getText: function () {
          return this.$.nodeValue;
        }, setText: function (c) {
          this.$.nodeValue = c;
        }, isEmpty: function (c) {
          var h = this.getText();c && (h = CKEDITOR.tools.trim(h));return !h || h === CKEDITOR.dom.selection.FILLING_CHAR_SEQUENCE;
        }, split: function (c) {
          var h = this.$.parentNode,
              g = h.childNodes.length,
              a = this.getLength(),
              e = this.getDocument(),
              k = new CKEDITOR.dom.text(this.$.splitText(c), e);h.childNodes.length == g && (c >= a ? (k = e.createText(""), k.insertAfter(this)) : (c = e.createText(""), c.insertAfter(k), c.remove()));return k;
        }, substring: function (c, h) {
          return "number" != typeof h ? this.$.nodeValue.substr(c) : this.$.nodeValue.substring(c, h);
        } }), function () {
        function c(c, a, e) {
          var h = c.serializable,
              l = a[e ? "endContainer" : "startContainer"],
              m = e ? "endOffset" : "startOffset",
              b = h ? a.document.getById(c.startNode) : c.startNode;c = h ? a.document.getById(c.endNode) : c.endNode;l.equals(b.getPrevious()) ? (a.startOffset = a.startOffset - l.getLength() - c.getPrevious().getLength(), l = c.getNext()) : l.equals(c.getPrevious()) && (a.startOffset -= l.getLength(), l = c.getNext());l.equals(b.getParent()) && a[m]++;l.equals(c.getParent()) && a[m]++;a[e ? "endContainer" : "startContainer"] = l;return a;
        }CKEDITOR.dom.rangeList = function (c) {
          if (c instanceof CKEDITOR.dom.rangeList) return c;c ? c instanceof CKEDITOR.dom.range && (c = [c]) : c = [];return CKEDITOR.tools.extend(c, h);
        };var h = { createIterator: function () {
            var c = this,
                a = CKEDITOR.dom.walker.bookmark(),
                e = [],
                h;return { getNextRange: function (l) {
                h = void 0 === h ? 0 : h + 1;var m = c[h];if (m && 1 < c.length) {
                  if (!h) for (var b = c.length - 1; 0 <= b; b--) e.unshift(c[b].createBookmark(!0));if (l) for (var d = 0; c[h + d + 1];) {
                    var f = m.document;l = 0;b = f.getById(e[d].endNode);for (f = f.getById(e[d + 1].startNode);;) {
                      b = b.getNextSourceNode(!1);
                      if (f.equals(b)) l = 1;else if (a(b) || b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary()) continue;break;
                    }if (!l) break;d++;
                  }for (m.moveToBookmark(e.shift()); d--;) b = c[++h], b.moveToBookmark(e.shift()), m.setEnd(b.endContainer, b.endOffset);
                }return m;
              } };
          }, createBookmarks: function (g) {
            for (var a = [], e, h = 0; h < this.length; h++) {
              a.push(e = this[h].createBookmark(g, !0));for (var l = h + 1; l < this.length; l++) this[l] = c(e, this[l]), this[l] = c(e, this[l], !0);
            }return a;
          }, createBookmarks2: function (c) {
            for (var a = [], e = 0; e < this.length; e++) a.push(this[e].createBookmark2(c));
            return a;
          }, moveToBookmarks: function (c) {
            for (var a = 0; a < this.length; a++) this[a].moveToBookmark(c[a]);
          } };
      }(), function () {
        function c() {
          return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1] || "skins/" + CKEDITOR.skinName.split(",")[0] + "/");
        }function h(a) {
          var b = CKEDITOR.skin["ua_" + a],
              e = CKEDITOR.env;if (b) for (var b = b.split(",").sort(function (a, b) {
            return a > b ? -1 : 1;
          }), g = 0, h; g < b.length; g++) if (h = b[g], e.ie && (h.replace(/^ie/, "") == e.version || e.quirks && "iequirks" == h) && (h = "ie"), e[h]) {
            a += "_" + b[g];break;
          }return CKEDITOR.getUrl(c() + a + ".css");
        }function g(a, b) {
          k[a] || (CKEDITOR.document.appendStyleSheet(h(a)), k[a] = 1);b && b();
        }function a(a) {
          var b = a.getById(l);b || (b = a.getHead().append("style"), b.setAttribute("id", l), b.setAttribute("type", "text/css"));return b;
        }function e(a, b, c) {
          var e, g, h;if (CKEDITOR.env.webkit) for (b = b.split("}").slice(0, -1), g = 0; g < b.length; g++) b[g] = b[g].split("{");for (var k = 0; k < a.length; k++) if (CKEDITOR.env.webkit) for (g = 0; g < b.length; g++) {
            h = b[g][1];for (e = 0; e < c.length; e++) h = h.replace(c[e][0], c[e][1]);a[k].$.sheet.addRule(b[g][0], h);
          } else {
            h = b;for (e = 0; e < c.length; e++) h = h.replace(c[e][0], c[e][1]);CKEDITOR.env.ie && 11 > CKEDITOR.env.version ? a[k].$.styleSheet.cssText += h : a[k].$.innerHTML += h;
          }
        }var k = {};CKEDITOR.skin = { path: c, loadPart: function (a, b) {
            CKEDITOR.skin.name != CKEDITOR.skinName.split(",")[0] ? CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c() + "skin.js"), function () {
              g(a, b);
            }) : g(a, b);
          }, getPath: function (a) {
            return CKEDITOR.getUrl(h(a));
          }, icons: {}, addIcon: function (a, b, c, e) {
            a = a.toLowerCase();this.icons[a] || (this.icons[a] = { path: b, offset: c || 0, bgsize: e || "16px" });
          }, getIconStyle: function (a, b, c, e, g) {
            var h;a && (a = a.toLowerCase(), b && (h = this.icons[a + "-rtl"]), h || (h = this.icons[a]));a = c || h && h.path || "";e = e || h && h.offset;g = g || h && h.bgsize || "16px";a && (a = a.replace(/'/g, "\\'"));return a && "background-image:url('" + CKEDITOR.getUrl(a) + "');background-position:0 " + e + "px;background-size:" + g + ";";
          } };CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { getUiColor: function () {
            return this.uiColor;
          }, setUiColor: function (d) {
            var f = a(CKEDITOR.document);return (this.setUiColor = function (a) {
              this.uiColor = a;var d = CKEDITOR.skin.chameleon,
                  c = "",
                  g = "";"function" == typeof d && (c = d(this, "editor"), g = d(this, "panel"));a = [[b, a]];e([f], c, a);e(m, g, a);
            }).call(this, d);
          } });var l = "cke_ui_color",
            m = [],
            b = /\$color/g;CKEDITOR.on("instanceLoaded", function (d) {
          if (!CKEDITOR.env.ie || !CKEDITOR.env.quirks) {
            var f = d.editor;d = function (d) {
              d = (d.data[0] || d.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if (!d.getById("cke_ui_color")) {
                var c = a(d);m.push(c);f.on("destroy", function () {
                  m = CKEDITOR.tools.array.filter(m, function (a) {
                    return c !== a;
                  });
                });(d = f.getUiColor()) && e([c], CKEDITOR.skin.chameleon(f, "panel"), [[b, d]]);
              }
            };f.on("panelShow", d);f.on("menuShow", d);f.config.uiColor && f.setUiColor(f.config.uiColor);
          }
        });
      }(), function () {
        var c = CKEDITOR.dom.element.createFromHtml('\x3cdiv style\x3d"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"\x3e\x3c/div\x3e', CKEDITOR.document);c.appendTo(CKEDITOR.document.getHead());try {
          var h = c.getComputedStyle("border-top-color"),
              g = c.getComputedStyle("border-right-color");
          CKEDITOR.env.hc = !(!h || h != g);
        } catch (a) {
          CKEDITOR.env.hc = !1;
        }c.remove();CKEDITOR.env.hc && (CKEDITOR.env.cssClass += " cke_hc");CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");CKEDITOR.status = "loaded";CKEDITOR.fireOnce("loaded");if (c = CKEDITOR._.pending) for (delete CKEDITOR._.pending, h = 0; h < c.length; h++) CKEDITOR.editor.prototype.constructor.apply(c[h][0], c[h][1]), CKEDITOR.add(c[h][0]);
      }(), CKEDITOR.skin.name = "moono-lexicon", CKEDITOR.skin.ua_editor = "ie,iequirks,ie8,gecko", CKEDITOR.skin.ua_dialog = "ie,iequirks,ie8", CKEDITOR.skin.chameleon = function () {
        var c = function () {
          return function (c, a) {
            for (var e = c.match(/[^#]./g), h = 0; 3 > h; h++) {
              var l = h,
                  m;m = parseInt(e[h], 16);m = ("0" + (0 > a ? 0 | m * (1 + a) : 0 | m + (255 - m) * a).toString(16)).slice(-2);e[l] = m;
            }return "#" + e.join("");
          };
        }(),
            h = { editor: new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_bottom [background-color:{defaultBackground};border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [background-color:{defaultBackground};border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [background-color:{defaultBackground};outline-color:{defaultBorder};] {id} .cke_dialog_tab [background-color:{dialogTab};border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [background-color:{lightBackground};] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} a.cke_button_off:hover,{id} a.cke_button_off:focus,{id} a.cke_button_off:active [background-color:{darkBackground};border-color:{toolbarElementsBorder};] {id} .cke_button_on [background-color:{ckeButtonOn};border-color:{toolbarElementsBorder};] {id} .cke_toolbar_separator,{id} .cke_toolgroup a.cke_button:last-child:after,{id} .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after [background-color: {toolbarElementsBorder};border-color: {toolbarElementsBorder};] {id} a.cke_combo_button:hover,{id} a.cke_combo_button:focus,{id} .cke_combo_on a.cke_combo_button [border-color:{toolbarElementsBorder};background-color:{darkBackground};] {id} .cke_combo:after [border-color:{toolbarElementsBorder};] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover,{id} a.cke_path_item:focus,{id} a.cke_path_item:active [background-color:{darkBackground};] {id}.cke_panel [border-color:{defaultBorder};] "),
          panel: new CKEDITOR.template(".cke_panel_grouptitle [background-color:{lightBackground};border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active [background-color:{menubuttonHover};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ") };
        return function (g, a) {
          var e = c(g.uiColor, .4),
              e = { id: "." + g.id, defaultBorder: c(e, -.2), toolbarElementsBorder: c(e, -.25), defaultBackground: e, lightBackground: c(e, .8), darkBackground: c(e, -.15), ckeButtonOn: c(e, .4), ckeResizer: c(e, -.4), ckeColorauto: c(e, .8), dialogBody: c(e, .7), dialogTab: c(e, .65), dialogTabSelected: "#FFF", dialogTabSelectedBorder: "#FFF", elementsPathColor: c(e, -.6), menubuttonHover: c(e, .1), menubuttonIcon: c(e, .5), menubuttonIconHover: c(e, .3) };return h[a].output(e).replace(/\[/g, "{").replace(/\]/g, "}");
        };
      }(), CKEDITOR.plugins.add("dialogui", { onLoad: function () {
          var c = function (a) {
            this._ || (this._ = {});this._["default"] = this._.initValue = a["default"] || "";this._.required = a.required || !1;for (var d = [this._], f = 1; f < arguments.length; f++) d.push(arguments[f]);d.push(!0);CKEDITOR.tools.extend.apply(CKEDITOR.tools, d);return this._;
          },
              h = { build: function (a, d, f) {
              return new CKEDITOR.ui.dialog.textInput(a, d, f);
            } },
              g = { build: function (a, d, f) {
              return new CKEDITOR.ui.dialog[d.type](a, d, f);
            } },
              a = { isChanged: function () {
              return this.getValue() != this.getInitValue();
            }, reset: function (a) {
              this.setValue(this.getInitValue(), a);
            }, setInitValue: function () {
              this._.initValue = this.getValue();
            }, resetInitValue: function () {
              this._.initValue = this._["default"];
            }, getInitValue: function () {
              return this._.initValue;
            } },
              e = CKEDITOR.tools.extend({}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { onChange: function (a, d) {
              this._.domOnChangeRegistered || (a.on("load", function () {
                this.getInputElement().on("change", function () {
                  a.parts.dialog.isVisible() && this.fire("change", { value: this.getValue() });
                }, this);
              }, this), this._.domOnChangeRegistered = !0);this.on("change", d);
            } }, !0),
              k = /^on([A-Z]\w+)/,
              l = function (a) {
            for (var d in a) (k.test(d) || "title" == d || "type" == d) && delete a[d];return a;
          },
              m = function (a) {
            a = a.data.getKeystroke();a == CKEDITOR.SHIFT + CKEDITOR.ALT + 36 ? this.setDirectionMarker("ltr") : a == CKEDITOR.SHIFT + CKEDITOR.ALT + 35 && this.setDirectionMarker("rtl");
          };CKEDITOR.tools.extend(CKEDITOR.ui.dialog, { labeledElement: function (a, d, f, e) {
              if (!(4 > arguments.length)) {
                var g = c.call(this, d);g.labelId = CKEDITOR.tools.getNextId() + "_label";this._.children = [];var h = { role: d.role || "presentation" };d.includeLabel && (h["aria-labelledby"] = g.labelId);CKEDITOR.ui.dialog.uiElement.call(this, a, d, f, "div", null, h, function () {
                  var f = [],
                      c = d.required ? " cke_required" : "";"horizontal" != d.labelLayout ? f.push('\x3clabel class\x3d"cke_dialog_ui_labeled_label' + c + '" ', ' id\x3d"' + g.labelId + '"', g.inputId ? ' for\x3d"' + g.inputId + '"' : "", (d.labelStyle ? ' style\x3d"' + d.labelStyle + '"' : "") + "\x3e", d.required ? d.label + '\x3cspan class\x3d"cke_dialog_ui_labeled_required" aria-hidden\x3d"true"\x3e*\x3c/span\x3e' : d.label, "\x3c/label\x3e", '\x3cdiv class\x3d"cke_dialog_ui_labeled_content"', d.controlStyle ? ' style\x3d"' + d.controlStyle + '"' : "", ' role\x3d"presentation"\x3e', e.call(this, a, d), "\x3c/div\x3e") : (c = { type: "hbox", widths: d.widths, padding: 0, children: [{ type: "html", html: '\x3clabel class\x3d"cke_dialog_ui_labeled_label' + c + '" id\x3d"' + g.labelId + '" for\x3d"' + g.inputId + '"' + (d.labelStyle ? ' style\x3d"' + d.labelStyle + '"' : "") + "\x3e" + CKEDITOR.tools.htmlEncode(d.label) + "\x3c/label\x3e" }, { type: "html", html: '\x3cspan class\x3d"cke_dialog_ui_labeled_content"' + (d.controlStyle ? ' style\x3d"' + d.controlStyle + '"' : "") + "\x3e" + e.call(this, a, d) + "\x3c/span\x3e" }] }, CKEDITOR.dialog._.uiElementBuilders.hbox.build(a, c, f));return f.join("");
                });
              }
            }, textInput: function (a, d, f) {
              if (!(3 > arguments.length)) {
                c.call(this, d);var e = this._.inputId = CKEDITOR.tools.getNextId() + "_textInput",
                    g = { "class": "cke_dialog_ui_input_" + d.type, id: e, type: d.type };d.validate && (this.validate = d.validate);d.maxLength && (g.maxlength = d.maxLength);d.size && (g.size = d.size);d.inputStyle && (g.style = d.inputStyle);var h = this,
                    k = !1;a.on("load", function () {
                  h.getInputElement().on("keydown", function (a) {
                    13 == a.data.getKeystroke() && (k = !0);
                  });h.getInputElement().on("keyup", function (d) {
                    13 == d.data.getKeystroke() && k && (a.getButton("ok") && setTimeout(function () {
                      a.getButton("ok").click();
                    }, 0), k = !1);h.bidi && m.call(h, d);
                  }, null, null, 1E3);
                });CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  var a = ['\x3cdiv class\x3d"cke_dialog_ui_input_', d.type, '" role\x3d"presentation"'];d.width && a.push('style\x3d"width:' + d.width + '" ');a.push("\x3e\x3cinput ");
                  g["aria-labelledby"] = this._.labelId;this._.required && (g["aria-required"] = this._.required);for (var b in g) a.push(b + '\x3d"' + g[b] + '" ');a.push(" /\x3e\x3c/div\x3e");return a.join("");
                });
              }
            }, textarea: function (a, d, f) {
              if (!(3 > arguments.length)) {
                c.call(this, d);var e = this,
                    g = this._.inputId = CKEDITOR.tools.getNextId() + "_textarea",
                    h = {};d.validate && (this.validate = d.validate);h.rows = d.rows || 5;h.cols = d.cols || 20;h["class"] = "cke_dialog_ui_input_textarea " + (d["class"] || "");"undefined" != typeof d.inputStyle && (h.style = d.inputStyle);
                d.dir && (h.dir = d.dir);if (e.bidi) a.on("load", function () {
                  e.getInputElement().on("keyup", m);
                }, e);CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  h["aria-labelledby"] = this._.labelId;this._.required && (h["aria-required"] = this._.required);var a = ['\x3cdiv class\x3d"cke_dialog_ui_input_textarea" role\x3d"presentation"\x3e\x3ctextarea id\x3d"', g, '" '],
                      b;for (b in h) a.push(b + '\x3d"' + CKEDITOR.tools.htmlEncode(h[b]) + '" ');a.push("\x3e", CKEDITOR.tools.htmlEncode(e._["default"]), "\x3c/textarea\x3e\x3c/div\x3e");
                  return a.join("");
                });
              }
            }, checkbox: function (a, d, f) {
              if (!(3 > arguments.length)) {
                var e = c.call(this, d, { "default": !!d["default"] });d.validate && (this.validate = d.validate);CKEDITOR.ui.dialog.uiElement.call(this, a, d, f, "span", null, null, function () {
                  var f = CKEDITOR.tools.extend({}, d, { id: d.id ? d.id + "_checkbox" : CKEDITOR.tools.getNextId() + "_checkbox" }, !0),
                      c = [],
                      g = CKEDITOR.tools.getNextId() + "_label",
                      h = { "class": "cke_dialog_ui_checkbox_input", type: "checkbox", "aria-labelledby": g };l(f);d["default"] && (h.checked = "checked");"undefined" != typeof f.inputStyle && (f.style = f.inputStyle);e.checkbox = new CKEDITOR.ui.dialog.uiElement(a, f, c, "input", null, h);c.push(' \x3clabel id\x3d"', g, '" for\x3d"', h.id, '"' + (d.labelStyle ? ' style\x3d"' + d.labelStyle + '"' : "") + "\x3e", CKEDITOR.tools.htmlEncode(d.label), "\x3c/label\x3e");return c.join("");
                });
              }
            }, radio: function (a, d, f) {
              if (!(3 > arguments.length)) {
                c.call(this, d);this._["default"] || (this._["default"] = this._.initValue = d.items[0][1]);d.validate && (this.validate = d.validate);var e = [],
                    g = this;d.role = "radiogroup";
                d.includeLabel = !0;CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  for (var f = [], c = [], h = (d.id ? d.id : CKEDITOR.tools.getNextId()) + "_radio", k = 0; k < d.items.length; k++) {
                    var m = d.items[k],
                        n = void 0 !== m[2] ? m[2] : m[0],
                        x = void 0 !== m[1] ? m[1] : m[0],
                        q = CKEDITOR.tools.getNextId() + "_radio_input",
                        u = q + "_label",
                        q = CKEDITOR.tools.extend({}, d, { id: q, title: null, type: null }, !0),
                        n = CKEDITOR.tools.extend({}, q, { title: n }, !0),
                        z = { type: "radio", "class": "cke_dialog_ui_radio_input", name: h, value: x, "aria-labelledby": u },
                        A = [];g._["default"] == x && (z.checked = "checked");l(q);l(n);"undefined" != typeof q.inputStyle && (q.style = q.inputStyle);q.keyboardFocusable = !0;e.push(new CKEDITOR.ui.dialog.uiElement(a, q, A, "input", null, z));A.push(" ");new CKEDITOR.ui.dialog.uiElement(a, n, A, "label", null, { id: u, "for": z.id }, m[0]);f.push(A.join(""));
                  }new CKEDITOR.ui.dialog.hbox(a, e, f, c);return c.join("");
                });this._.children = e;
              }
            }, button: function (a, d, f) {
              if (arguments.length) {
                "function" == typeof d && (d = d(a.getParentEditor()));c.call(this, d, { disabled: d.disabled || !1 });CKEDITOR.event.implementOn(this);
                var e = this;a.on("load", function () {
                  var a = this.getElement();(function () {
                    a.on("click", function (a) {
                      e.click();a.data.preventDefault();
                    });a.on("keydown", function (a) {
                      a.data.getKeystroke() in { 32: 1 } && (e.click(), a.data.preventDefault());
                    });
                  })();a.unselectable();
                }, this);var g = CKEDITOR.tools.extend({}, d);delete g.style;var h = CKEDITOR.tools.getNextId() + "_label";CKEDITOR.ui.dialog.uiElement.call(this, a, g, f, "a", null, { style: d.style, href: "javascript:void(0)", title: d.label, hidefocus: "true", "class": d["class"], role: "button",
                  "aria-labelledby": h }, '\x3cspan id\x3d"' + h + '" class\x3d"cke_dialog_ui_button"\x3e' + CKEDITOR.tools.htmlEncode(d.label) + "\x3c/span\x3e");
              }
            }, select: function (a, d, f) {
              if (!(3 > arguments.length)) {
                var e = c.call(this, d);d.validate && (this.validate = d.validate);e.inputId = CKEDITOR.tools.getNextId() + "_select";CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  var f = CKEDITOR.tools.extend({}, d, { id: d.id ? d.id + "_select" : CKEDITOR.tools.getNextId() + "_select" }, !0),
                      c = [],
                      g = [],
                      h = { id: e.inputId, "class": "cke_dialog_ui_input_select",
                    "aria-labelledby": this._.labelId };c.push('\x3cdiv class\x3d"cke_dialog_ui_input_', d.type, '" role\x3d"presentation"');d.width && c.push('style\x3d"width:' + d.width + '" ');c.push("\x3e");void 0 !== d.size && (h.size = d.size);void 0 !== d.multiple && (h.multiple = d.multiple);l(f);for (var k = 0, m; k < d.items.length && (m = d.items[k]); k++) g.push('\x3coption value\x3d"', CKEDITOR.tools.htmlEncode(void 0 !== m[1] ? m[1] : m[0]).replace(/"/g, "\x26quot;"), '" /\x3e ', CKEDITOR.tools.htmlEncode(m[0]));"undefined" != typeof f.inputStyle && (f.style = f.inputStyle);e.select = new CKEDITOR.ui.dialog.uiElement(a, f, c, "select", null, h, g.join(""));c.push("\x3c/div\x3e");return c.join("");
                });
              }
            }, file: function (a, d, f) {
              if (!(3 > arguments.length)) {
                void 0 === d["default"] && (d["default"] = "");var e = CKEDITOR.tools.extend(c.call(this, d), { definition: d, buttons: [] });d.validate && (this.validate = d.validate);a.on("load", function () {
                  CKEDITOR.document.getById(e.frameId).getParent().addClass("cke_dialog_ui_input_file");
                });CKEDITOR.ui.dialog.labeledElement.call(this, a, d, f, function () {
                  e.frameId = CKEDITOR.tools.getNextId() + "_fileInput";var a = ['\x3ciframe frameborder\x3d"0" allowtransparency\x3d"0" class\x3d"cke_dialog_ui_input_file" role\x3d"presentation" id\x3d"', e.frameId, '" title\x3d"', d.label, '" src\x3d"javascript:void('];a.push(CKEDITOR.env.ie ? "(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") + "})()" : "0");a.push(')"\x3e\x3c/iframe\x3e');return a.join("");
                });
              }
            }, fileButton: function (a, d, f) {
              var e = this;if (!(3 > arguments.length)) {
                c.call(this, d);d.validate && (this.validate = d.validate);var g = CKEDITOR.tools.extend({}, d),
                    h = g.onClick;g.className = (g.className ? g.className + " " : "") + "cke_dialog_ui_button";g.onClick = function (f) {
                  var c = d["for"];f = h ? h.call(this, f) : !1;!1 !== f && ("xhr" !== f && a.getContentElement(c[0], c[1]).submit(), this.disable());
                };a.on("load", function () {
                  a.getContentElement(d["for"][0], d["for"][1])._.buttons.push(e);
                });CKEDITOR.ui.dialog.button.call(this, a, g, f);
              }
            }, html: function () {
              var a = /^\s*<[\w:]+\s+([^>]*)?>/,
                  d = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,
                  f = /\/$/;return function (c, e, g) {
                if (!(3 > arguments.length)) {
                  var h = [],
                      k = e.html;"\x3c" != k.charAt(0) && (k = "\x3cspan\x3e" + k + "\x3c/span\x3e");var l = e.focus;if (l) {
                    var m = this.focus;this.focus = function () {
                      ("function" == typeof l ? l : m).call(this);this.fire("focus");
                    };e.isFocusable && (this.isFocusable = this.isFocusable);this.keyboardFocusable = !0;
                  }CKEDITOR.ui.dialog.uiElement.call(this, c, e, h, "span", null, null, "");h = h.join("").match(a);k = k.match(d) || ["", "", ""];f.test(k[1]) && (k[1] = k[1].slice(0, -1), k[2] = "/" + k[2]);g.push([k[1], " ", h[1] || "", k[2]].join(""));
                }
              };
            }(), fieldset: function (a, d, f, c, e) {
              var g = e.label;this._ = { children: d };CKEDITOR.ui.dialog.uiElement.call(this, a, e, c, "fieldset", null, null, function () {
                var a = [];g && a.push("\x3clegend" + (e.labelStyle ? ' style\x3d"' + e.labelStyle + '"' : "") + "\x3e" + g + "\x3c/legend\x3e");for (var b = 0; b < f.length; b++) a.push(f[b]);return a.join("");
              });
            } }, !0);CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement();CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { setLabel: function (a) {
              var d = CKEDITOR.document.getById(this._.labelId);1 > d.getChildCount() ? new CKEDITOR.dom.text(a, CKEDITOR.document).appendTo(d) : d.getChild(0).$.nodeValue = a;return this;
            }, getLabel: function () {
              var a = CKEDITOR.document.getById(this._.labelId);return !a || 1 > a.getChildCount() ? "" : a.getChild(0).getText();
            }, eventProcessors: e }, !0);CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { click: function () {
              return this._.disabled ? !1 : this.fire("click", { dialog: this._.dialog });
            },
            enable: function () {
              this._.disabled = !1;var a = this.getElement();a && a.removeClass("cke_disabled");
            }, disable: function () {
              this._.disabled = !0;this.getElement().addClass("cke_disabled");
            }, isVisible: function () {
              return this.getElement().getFirst().isVisible();
            }, isEnabled: function () {
              return !this._.disabled;
            }, eventProcessors: CKEDITOR.tools.extend({}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { onClick: function (a, d) {
                this.on("click", function () {
                  d.apply(this, arguments);
                });
              } }, !0), accessKeyUp: function () {
              this.click();
            },
            accessKeyDown: function () {
              this.focus();
            }, keyboardFocusable: !0 }, !0);CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement(), { getInputElement: function () {
              return CKEDITOR.document.getById(this._.inputId);
            }, focus: function () {
              var a = this.selectParentTab();setTimeout(function () {
                var d = a.getInputElement();d && d.$.focus();
              }, 0);
            }, select: function () {
              var a = this.selectParentTab();setTimeout(function () {
                var d = a.getInputElement();d && (d.$.focus(), d.$.select());
              }, 0);
            }, accessKeyUp: function () {
              this.select();
            },
            setValue: function (a) {
              if (this.bidi) {
                var d = a && a.charAt(0);(d = "‪" == d ? "ltr" : "‫" == d ? "rtl" : null) && (a = a.slice(1));this.setDirectionMarker(d);
              }a || (a = "");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this, arguments);
            }, getValue: function () {
              var a = CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this);if (this.bidi && a) {
                var d = this.getDirectionMarker();d && (a = ("ltr" == d ? "‪" : "‫") + a);
              }return a;
            }, setDirectionMarker: function (a) {
              var d = this.getInputElement();a ? d.setAttributes({ dir: a, "data-cke-dir-marker": a }) : this.getDirectionMarker() && d.removeAttributes(["dir", "data-cke-dir-marker"]);
            }, getDirectionMarker: function () {
              return this.getInputElement().data("cke-dir-marker");
            }, keyboardFocusable: !0 }, a, !0);CKEDITOR.ui.dialog.textarea.prototype = new CKEDITOR.ui.dialog.textInput();CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement(), { getInputElement: function () {
              return this._.select.getElement();
            }, add: function (a, d, f) {
              var c = new CKEDITOR.dom.element("option", this.getDialog().getParentEditor().document),
                  e = this.getInputElement().$;c.$.text = a;c.$.value = void 0 === d || null === d ? a : d;void 0 === f || null === f ? CKEDITOR.env.ie ? e.add(c.$) : e.add(c.$, null) : e.add(c.$, f);return this;
            }, remove: function (a) {
              this.getInputElement().$.remove(a);return this;
            }, clear: function () {
              for (var a = this.getInputElement().$; 0 < a.length;) a.remove(0);return this;
            }, keyboardFocusable: !0 }, a, !0);CKEDITOR.ui.dialog.checkbox.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { getInputElement: function () {
              return this._.checkbox.getElement();
            },
            setValue: function (a, d) {
              this.getInputElement().$.checked = a;!d && this.fire("change", { value: a });
            }, getValue: function () {
              return this.getInputElement().$.checked;
            }, accessKeyUp: function () {
              this.setValue(!this.getValue());
            }, eventProcessors: { onChange: function (a, d) {
                if (!CKEDITOR.env.ie || 8 < CKEDITOR.env.version) return e.onChange.apply(this, arguments);a.on("load", function () {
                  var a = this._.checkbox.getElement();a.on("propertychange", function (b) {
                    b = b.data.$;"checked" == b.propertyName && this.fire("change", { value: a.$.checked });
                  }, this);
                }, this);this.on("change", d);return null;
              } }, keyboardFocusable: !0 }, a, !0);CKEDITOR.ui.dialog.radio.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { setValue: function (a, d) {
              for (var f = this._.children, c, e = 0; e < f.length && (c = f[e]); e++) c.getElement().$.checked = c.getValue() == a;!d && this.fire("change", { value: a });
            }, getValue: function () {
              for (var a = this._.children, d = 0; d < a.length; d++) if (a[d].getElement().$.checked) return a[d].getValue();return null;
            }, accessKeyUp: function () {
              var a = this._.children,
                  d;
              for (d = 0; d < a.length; d++) if (a[d].getElement().$.checked) {
                a[d].getElement().focus();return;
              }a[0].getElement().focus();
            }, eventProcessors: { onChange: function (a, d) {
                if (!CKEDITOR.env.ie || 8 < CKEDITOR.env.version) return e.onChange.apply(this, arguments);a.on("load", function () {
                  for (var a = this._.children, b = this, d = 0; d < a.length; d++) a[d].getElement().on("propertychange", function (a) {
                    a = a.data.$;"checked" == a.propertyName && this.$.checked && b.fire("change", { value: this.getAttribute("value") });
                  });
                }, this);this.on("change", d);return null;
              } } }, a, !0);CKEDITOR.ui.dialog.file.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement(), a, { getInputElement: function () {
              var a = CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0 < a.$.forms.length ? new CKEDITOR.dom.element(a.$.forms[0].elements[0]) : this.getElement();
            }, submit: function () {
              this.getInputElement().getParent().$.submit();return this;
            }, getAction: function () {
              return this.getInputElement().getParent().$.action;
            }, registerEvents: function (a) {
              var d = /^on([A-Z]\w+)/,
                  f,
                  c = function (a, b, d, f) {
                a.on("formLoaded", function () {
                  a.getInputElement().on(d, f, a);
                });
              },
                  e;for (e in a) if (f = e.match(d)) this.eventProcessors[e] ? this.eventProcessors[e].call(this, this._.dialog, a[e]) : c(this, this._.dialog, f[1].toLowerCase(), a[e]);return this;
            }, reset: function () {
              function a() {
                f.$.open();var b = "";c.size && (b = c.size - (CKEDITOR.env.ie ? 7 : 0));var m = d.frameId + "_input";f.$.write(['\x3chtml dir\x3d"' + k + '" lang\x3d"' + l + '"\x3e\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e\x3cbody style\x3d"margin: 0; overflow: hidden; background: transparent;"\x3e', '\x3cform enctype\x3d"multipart/form-data" method\x3d"POST" dir\x3d"' + k + '" lang\x3d"' + l + '" action\x3d"', CKEDITOR.tools.htmlEncode(c.action), '"\x3e\x3clabel id\x3d"', d.labelId, '" for\x3d"', m, '" style\x3d"display:none"\x3e', CKEDITOR.tools.htmlEncode(c.label), '\x3c/label\x3e\x3cinput style\x3d"width:100%" id\x3d"', m, '" aria-labelledby\x3d"', d.labelId, '" type\x3d"file" name\x3d"', CKEDITOR.tools.htmlEncode(c.id || "cke_upload"), '" size\x3d"', CKEDITOR.tools.htmlEncode(0 < b ? b : ""), '" /\x3e\x3c/form\x3e\x3c/body\x3e\x3c/html\x3e\x3cscript\x3e', CKEDITOR.env.ie ? "(" + CKEDITOR.tools.fixDomain + ")();" : "", "window.parent.CKEDITOR.tools.callFunction(" + g + ");", "window.onbeforeunload \x3d function() {window.parent.CKEDITOR.tools.callFunction(" + h + ")}", "\x3c/script\x3e"].join(""));f.$.close();for (b = 0; b < e.length; b++) e[b].enable();
              }var d = this._,
                  f = CKEDITOR.document.getById(d.frameId).getFrameDocument(),
                  c = d.definition,
                  e = d.buttons,
                  g = this.formLoadedNumber,
                  h = this.formUnloadNumber,
                  k = d.dialog._.editor.lang.dir,
                  l = d.dialog._.editor.langCode;g || (g = this.formLoadedNumber = CKEDITOR.tools.addFunction(function () {
                this.fire("formLoaded");
              }, this), h = this.formUnloadNumber = CKEDITOR.tools.addFunction(function () {
                this.getInputElement().clearCustomData();
              }, this), this.getDialog()._.editor.on("destroy", function () {
                CKEDITOR.tools.removeFunction(g);CKEDITOR.tools.removeFunction(h);
              }));CKEDITOR.env.gecko ? setTimeout(a, 500) : a();
            }, getValue: function () {
              return this.getInputElement().$.value || "";
            }, setInitValue: function () {
              this._.initValue = "";
            }, eventProcessors: { onChange: function (a, d) {
                this._.domOnChangeRegistered || (this.on("formLoaded", function () {
                  this.getInputElement().on("change", function () {
                    this.fire("change", { value: this.getValue() });
                  }, this);
                }, this), this._.domOnChangeRegistered = !0);this.on("change", d);
              } }, keyboardFocusable: !0 }, !0);CKEDITOR.ui.dialog.fileButton.prototype = new CKEDITOR.ui.dialog.button();CKEDITOR.ui.dialog.fieldset.prototype = CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement("text", h);CKEDITOR.dialog.addUIElement("password", h);CKEDITOR.dialog.addUIElement("tel", h);
          CKEDITOR.dialog.addUIElement("textarea", g);CKEDITOR.dialog.addUIElement("checkbox", g);CKEDITOR.dialog.addUIElement("radio", g);CKEDITOR.dialog.addUIElement("button", g);CKEDITOR.dialog.addUIElement("select", g);CKEDITOR.dialog.addUIElement("file", g);CKEDITOR.dialog.addUIElement("fileButton", g);CKEDITOR.dialog.addUIElement("html", g);CKEDITOR.dialog.addUIElement("fieldset", { build: function (a, d, f) {
              for (var c = d.children, e, g = [], h = [], k = 0; k < c.length && (e = c[k]); k++) {
                var l = [];g.push(l);h.push(CKEDITOR.dialog._.uiElementBuilders[e.type].build(a, e, l));
              }return new CKEDITOR.ui.dialog[d.type](a, h, g, f, d);
            } });
        } }), CKEDITOR.DIALOG_RESIZE_NONE = 0, CKEDITOR.DIALOG_RESIZE_WIDTH = 1, CKEDITOR.DIALOG_RESIZE_HEIGHT = 2, CKEDITOR.DIALOG_RESIZE_BOTH = 3, CKEDITOR.DIALOG_STATE_IDLE = 1, CKEDITOR.DIALOG_STATE_BUSY = 2, function () {
        function c(a) {
          a._.tabBarMode = !0;a._.tabs[a._.currentTabId][0].focus();a._.currentFocusIndex = -1;
        }function h() {
          for (var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabId) + a, d = b - 1; d > b - a; d--) if (this._.tabs[this._.tabIdList[d % a]][0].$.offsetHeight) return this._.tabIdList[d % a];return null;
        }function g() {
          for (var a = this._.tabIdList.length, b = CKEDITOR.tools.indexOf(this._.tabIdList, this._.currentTabId), d = b + 1; d < b + a; d++) if (this._.tabs[this._.tabIdList[d % a]][0].$.offsetHeight) return this._.tabIdList[d % a];return null;
        }function a(a, b) {
          for (var d = a.$.getElementsByTagName("input"), f = 0, c = d.length; f < c; f++) {
            var e = new CKEDITOR.dom.element(d[f]);"text" == e.getAttribute("type").toLowerCase() && (b ? (e.setAttribute("value", e.getCustomData("fake_value") || ""), e.removeCustomData("fake_value")) : (e.setCustomData("fake_value", e.getAttribute("value")), e.setAttribute("value", "")));
          }
        }function e(a, b) {
          var d = this.getInputElement();d && (a ? d.removeAttribute("aria-invalid") : d.setAttribute("aria-invalid", !0));a || (this.select ? this.select() : this.focus());b && alert(b);this.fire("validated", { valid: a, msg: b });
        }function k() {
          var a = this.getInputElement();a && a.removeAttribute("aria-invalid");
        }function l(a) {
          var b = CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog", K).output({ id: CKEDITOR.tools.getNextNumber(), editorId: a.id, langDir: a.lang.dir, langCode: a.langCode, editorDialogClass: "cke_editor_" + a.name.replace(/\./g, "\\.") + "_dialog", closeTitle: a.lang.common.close, hidpi: CKEDITOR.env.hidpi ? "cke_hidpi" : "" })),
              d = b.getChild([0, 0, 0, 0, 0]),
              f = d.getChild(0),
              c = d.getChild(1);a.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(d);!CKEDITOR.env.ie || CKEDITOR.env.quirks || CKEDITOR.env.edge || (a = "javascript:void(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") + "}())", CKEDITOR.dom.element.createFromHtml('\x3ciframe frameBorder\x3d"0" class\x3d"cke_iframe_shim" src\x3d"' + a + '" tabIndex\x3d"-1"\x3e\x3c/iframe\x3e').appendTo(d.getParent()));f.unselectable();c.unselectable();return { element: b, parts: { dialog: b.getChild(0), title: f, close: c, tabs: d.getChild(2), contents: d.getChild([3, 0, 0, 0]), footer: d.getChild([3, 0, 1, 0]) } };
        }function m(a, b, d) {
          this.element = b;this.focusIndex = d;this.tabIndex = 0;this.isFocusable = function () {
            return !b.getAttribute("disabled") && b.isVisible();
          };this.focus = function () {
            a._.currentFocusIndex = this.focusIndex;this.element.focus();
          };b.on("keydown", function (a) {
            a.data.getKeystroke() in { 32: 1, 13: 1 } && this.fire("click");
          });b.on("focus", function () {
            this.fire("mouseover");
          });b.on("blur", function () {
            this.fire("mouseout");
          });
        }function b(a) {
          function b() {
            a.layout();
          }var d = CKEDITOR.document.getWindow();d.on("resize", b);a.on("hide", function () {
            d.removeListener("resize", b);
          });
        }function d(a, b) {
          this.dialog = a;for (var d = b.contents, c = 0, e; e = d[c]; c++) d[c] = e && new f(a, e);CKEDITOR.tools.extend(this, b);
        }function f(a, b) {
          this._ = { dialog: a };CKEDITOR.tools.extend(this, b);
        }function p(a) {
          function b(d) {
            var k = a.getSize(),
                l = a.parts.dialog.getParent().getClientSize(),
                m = d.data.$.screenX,
                p = d.data.$.screenY,
                n = m - f.x,
                q = p - f.y;f = { x: m, y: p };c.x += n;c.y += q;m = c.x + h[3] < g ? -h[3] : c.x - h[1] > l.width - k.width - g ? l.width - k.width + ("rtl" == e.lang.dir ? 0 : h[1]) : c.x;k = c.y + h[0] < g ? -h[0] : c.y - h[2] > l.height - k.height - g ? l.height - k.height + h[2] : c.y;m = Math.floor(m);k = Math.floor(k);a.move(m, k, 1);d.data.preventDefault();
          }
          function d() {
            CKEDITOR.document.removeListener("mousemove", b);CKEDITOR.document.removeListener("mouseup", d);if (CKEDITOR.env.ie6Compat) {
              var a = D.getChild(0).getFrameDocument();a.removeListener("mousemove", b);a.removeListener("mouseup", d);
            }
          }var f = null,
              c = null,
              e = a.getParentEditor(),
              g = e.config.dialog_magnetDistance,
              h = CKEDITOR.skin.margins || [0, 0, 0, 0];"undefined" == typeof g && (g = 20);a.parts.title.on("mousedown", function (e) {
            if (!a._.moved) {
              var g = a._.element;g.getFirst().setStyle("position", "absolute");g.removeStyle("display");
              a._.moved = !0;a.layout();
            }f = { x: e.data.$.screenX, y: e.data.$.screenY };CKEDITOR.document.on("mousemove", b);CKEDITOR.document.on("mouseup", d);c = a.getPosition();CKEDITOR.env.ie6Compat && (g = D.getChild(0).getFrameDocument(), g.on("mousemove", b), g.on("mouseup", d));e.data.preventDefault();
          }, a);
        }function w(a) {
          function b(d) {
            var p = "rtl" == e.lang.dir,
                n = m.width,
                q = m.height,
                u = n + (d.data.$.screenX - l.x) * (p ? -1 : 1) * (a._.moved ? 1 : 2),
                J = q + (d.data.$.screenY - l.y) * (a._.moved ? 1 : 2),
                w = a._.element.getFirst(),
                w = p && parseInt(w.getComputedStyle("right"), 10),
                x = a.getPosition();x.x = x.x || 0;x.y = x.y || 0;x.y + J > k.height && (J = k.height - x.y);(p ? w : x.x) + u > k.width && (u = k.width - (p ? w : x.x));J = Math.floor(J);u = Math.floor(u);if (c == CKEDITOR.DIALOG_RESIZE_WIDTH || c == CKEDITOR.DIALOG_RESIZE_BOTH) n = Math.max(f.minWidth || 0, u - g);if (c == CKEDITOR.DIALOG_RESIZE_HEIGHT || c == CKEDITOR.DIALOG_RESIZE_BOTH) q = Math.max(f.minHeight || 0, J - h);a.resize(n, q);a._.moved && y(a, a._.position.x, a._.position.y);a._.moved || a.layout();d.data.preventDefault();
          }function d() {
            CKEDITOR.document.removeListener("mouseup", d);CKEDITOR.document.removeListener("mousemove", b);p && (p.remove(), p = null);if (CKEDITOR.env.ie6Compat) {
              var a = D.getChild(0).getFrameDocument();a.removeListener("mouseup", d);a.removeListener("mousemove", b);
            }
          }var f = a.definition,
              c = f.resizable;if (c != CKEDITOR.DIALOG_RESIZE_NONE) {
            var e = a.getParentEditor(),
                g,
                h,
                k,
                l,
                m,
                p,
                n = CKEDITOR.tools.addFunction(function (f) {
              function c(a) {
                return a.isVisible();
              }m = a.getSize();var e = a.parts.contents,
                  n = e.$.getElementsByTagName("iframe").length,
                  q = !(CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.quirks);n && (p = CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_dialog_resize_cover" style\x3d"height: 100%; position: absolute; width: 100%; left:0; top:0;"\x3e\x3c/div\x3e'), e.append(p));h = m.height - a.parts.contents.getFirst(c).getSize("height", q);g = m.width - a.parts.contents.getFirst(c).getSize("width", 1);l = { x: f.screenX, y: f.screenY };k = CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on("mousemove", b);CKEDITOR.document.on("mouseup", d);CKEDITOR.env.ie6Compat && (e = D.getChild(0).getFrameDocument(), e.on("mousemove", b), e.on("mouseup", d));f.preventDefault && f.preventDefault();
            });a.on("load", function () {
              var b = "";c == CKEDITOR.DIALOG_RESIZE_WIDTH ? b = " cke_resizer_horizontal" : c == CKEDITOR.DIALOG_RESIZE_HEIGHT && (b = " cke_resizer_vertical");b = CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_resizer' + b + " cke_resizer_" + e.lang.dir + '" title\x3d"' + CKEDITOR.tools.htmlEncode(e.lang.common.resize) + '" onmousedown\x3d"CKEDITOR.tools.callFunction(' + n + ', event )"\x3e' + ("ltr" == e.lang.dir ? "◢" : "◣") + "\x3c/div\x3e");a.parts.footer.append(b, 1);
            });e.on("destroy", function () {
              CKEDITOR.tools.removeFunction(n);
            });
          }
        }function y(a, b, d) {
          var f = a.parts.dialog.getParent().getClientSize(),
              c = a.getSize(),
              e = a._.viewportRatio,
              g = Math.max(f.width - c.width, 0),
              f = Math.max(f.height - c.height, 0);e.width = g ? b / g : e.width;e.height = f ? d / f : e.height;a._.viewportRatio = e;
        }function r(a) {
          a.data.preventDefault(1);
        }function t(a) {
          var b = a.config,
              d = CKEDITOR.skinName || a.config.skin,
              f = b.dialog_backgroundCoverColor || ("moono-lisa" == d ? "black" : "white"),
              d = b.dialog_backgroundCoverOpacity,
              c = b.baseFloatZIndex,
              b = CKEDITOR.tools.genKey(f, d, c),
              e = I[b];CKEDITOR.document.getBody().addClass("cke_dialog_open");e ? e.show() : (c = ['\x3cdiv tabIndex\x3d"-1" style\x3d"position: ', CKEDITOR.env.ie6Compat ? "absolute" : "fixed", "; z-index: ", c, "; top: 0px; left: 0px; ", "; width: 100%; height: 100%;", CKEDITOR.env.ie6Compat ? "" : "background-color: " + f, '" class\x3d"cke_dialog_background_cover"\x3e'], CKEDITOR.env.ie6Compat && (f = "\x3chtml\x3e\x3cbody style\x3d\\'background-color:" + f + ";\\'\x3e\x3c/body\x3e\x3c/html\x3e", c.push('\x3ciframe hidefocus\x3d"true" frameborder\x3d"0" id\x3d"cke_dialog_background_iframe" src\x3d"javascript:'), c.push("void((function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.write( '" + f + "' );document.close();") + "})())"), c.push('" style\x3d"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity\x3d0)"\x3e\x3c/iframe\x3e')), c.push("\x3c/div\x3e"), e = CKEDITOR.dom.element.createFromHtml(c.join("")), e.setOpacity(void 0 !== d ? d : .5), e.on("keydown", r), e.on("keypress", r), e.on("keyup", r), e.appendTo(CKEDITOR.document.getBody()), I[b] = e);a.focusManager.add(e);D = e;CKEDITOR.env.mac && CKEDITOR.env.webkit || e.focus();
        }function v(a) {
          CKEDITOR.document.getBody().removeClass("cke_dialog_open");D && (a.focusManager.remove(D), D.hide());
        }function B(a) {
          var b = a.data.$.ctrlKey || a.data.$.metaKey,
              d = a.data.$.altKey,
              f = a.data.$.shiftKey,
              c = String.fromCharCode(a.data.$.keyCode);(b = P[(b ? "CTRL+" : "") + (d ? "ALT+" : "") + (f ? "SHIFT+" : "") + c]) && b.length && (b = b[b.length - 1], b.keydown && b.keydown.call(b.uiElement, b.dialog, b.key), a.data.preventDefault());
        }function n(a) {
          var b = a.data.$.ctrlKey || a.data.$.metaKey,
              d = a.data.$.altKey,
              f = a.data.$.shiftKey,
              c = String.fromCharCode(a.data.$.keyCode);(b = P[(b ? "CTRL+" : "") + (d ? "ALT+" : "") + (f ? "SHIFT+" : "") + c]) && b.length && (b = b[b.length - 1], b.keyup && (b.keyup.call(b.uiElement, b.dialog, b.key), a.data.preventDefault()));
        }function x(a, b, d, f, c) {
          (P[d] || (P[d] = [])).push({ uiElement: a, dialog: b, key: d, keyup: c || a.accessKeyUp, keydown: f || a.accessKeyDown });
        }function q(a) {
          for (var b in P) {
            for (var d = P[b], f = d.length - 1; 0 <= f; f--) d[f].dialog != a && d[f].uiElement != a || d.splice(f, 1);0 === d.length && delete P[b];
          }
        }function u(a, b) {
          a._.accessKeyMap[b] && a.selectPage(a._.accessKeyMap[b]);
        }function z() {}var A = CKEDITOR.tools.cssLength,
            C,
            D,
            E = !1,
            G = !CKEDITOR.env.ie || CKEDITOR.env.edge,
            K = '\x3cdiv class\x3d"cke_reset_all cke_dialog_container {editorId} {editorDialogClass} {hidpi}" dir\x3d"{langDir}" style\x3d"' + (G ? "display:flex" : "") + '" lang\x3d"{langCode}" role\x3d"dialog" aria-labelledby\x3d"cke_dialog_title_{id}"\x3e\x3ctable class\x3d"cke_dialog ' + CKEDITOR.env.cssClass + ' cke_{langDir}" style\x3d"' + (G ? "margin:auto" : "position:absolute") + '" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_dialog_body" role\x3d"presentation"\x3e\x3cdiv id\x3d"cke_dialog_title_{id}" class\x3d"cke_dialog_title" role\x3d"presentation"\x3e\x3c/div\x3e\x3ca id\x3d"cke_dialog_close_button_{id}" class\x3d"cke_dialog_close_button" href\x3d"javascript:void(0)" title\x3d"{closeTitle}" role\x3d"button"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e\x3cdiv id\x3d"cke_dialog_tabs_{id}" class\x3d"cke_dialog_tabs" role\x3d"tablist"\x3e\x3c/div\x3e\x3ctable class\x3d"cke_dialog_contents" role\x3d"presentation"\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_contents_{id}" class\x3d"cke_dialog_contents_body" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3ctr\x3e\x3ctd id\x3d"cke_dialog_footer_{id}" class\x3d"cke_dialog_footer" role\x3d"presentation"\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e\x3c/td\x3e\x3c/tr\x3e\x3c/table\x3e\x3c/div\x3e';
        CKEDITOR.dialog = function (a, b) {
          function f() {
            var a = A._.focusList;a.sort(function (a, b) {
              return a.tabIndex != b.tabIndex ? b.tabIndex - a.tabIndex : a.focusIndex - b.focusIndex;
            });for (var b = a.length, d = 0; d < b; d++) a[d].focusIndex = d;
          }function m(a) {
            var b = A._.focusList;a = a || 0;if (!(1 > b.length)) {
              var d = A._.currentFocusIndex;A._.tabBarMode && 0 > a && (d = 0);try {
                b[d].getInputElement().$.blur();
              } catch (f) {}var c = d,
                  e = 1 < A._.pageCount;do {
                c += a;if (e && !A._.tabBarMode && (c == b.length || -1 == c)) {
                  A._.tabBarMode = !0;A._.tabs[A._.currentTabId][0].focus();
                  A._.currentFocusIndex = -1;return;
                }c = (c + b.length) % b.length;if (c == d) break;
              } while (a && !b[c].isFocusable());b[c].focus();"text" == b[c].type && b[c].select();
            }
          }function n(b) {
            if (A == CKEDITOR.dialog._.currentTop) {
              var d = b.data.getKeystroke(),
                  f = "rtl" == a.lang.dir;z = y = 0;if (9 == d || d == CKEDITOR.SHIFT + 9) m(d == CKEDITOR.SHIFT + 9 ? -1 : 1), z = 1;else if (d == CKEDITOR.ALT + 121 && !A._.tabBarMode && 1 < A.getPageCount()) c(A), z = 1;else if (-1 != CKEDITOR.tools.indexOf([37, 38, 39, 40], d) && A._.tabBarMode) d = -1 != CKEDITOR.tools.indexOf([f ? 39 : 37, 38], d) ? h.call(A) : g.call(A), A.selectPage(d), A._.tabs[d][0].focus(), z = 1;else if (13 != d && 32 != d || !A._.tabBarMode) {
                if (13 == d) d = b.data.getTarget(), d.is("a", "button", "select", "textarea") || d.is("input") && "button" == d.$.type || ((d = this.getButton("ok")) && CKEDITOR.tools.setTimeout(d.click, 0, d), z = 1), y = 1;else if (27 == d) (d = this.getButton("cancel")) ? CKEDITOR.tools.setTimeout(d.click, 0, d) : !1 !== this.fire("cancel", { hide: !0 }).hide && this.hide(), y = 1;else return;
              } else this.selectPage(this._.currentTabId), this._.tabBarMode = !1, this._.currentFocusIndex = -1, m(1), z = 1;q(b);
            }
          }function q(a) {
            z ? a.data.preventDefault(1) : y && a.data.stopPropagation();
          }var u = CKEDITOR.dialog._.dialogDefinitions[b],
              x = CKEDITOR.tools.clone(C),
              t = a.config.dialog_buttonsOrder || "OS",
              v = a.lang.dir,
              B = {},
              z,
              y;("OS" == t && CKEDITOR.env.mac || "rtl" == t && "ltr" == v || "ltr" == t && "rtl" == v) && x.buttons.reverse();u = CKEDITOR.tools.extend(u(a), x);u = CKEDITOR.tools.clone(u);u = new d(this, u);x = l(a);this._ = { editor: a, element: x.element, name: b, model: null, contentSize: { width: 0, height: 0 }, size: { width: 0, height: 0 }, contents: {},
            buttons: {}, accessKeyMap: {}, viewportRatio: { width: .5, height: .5 }, tabs: {}, tabIdList: [], currentTabId: null, currentTabIndex: null, pageCount: 0, lastTab: null, tabBarMode: !1, focusList: [], currentFocusIndex: 0, hasFocus: !1 };this.parts = x.parts;CKEDITOR.tools.setTimeout(function () {
            a.fire("ariaWidget", this.parts.contents);
          }, 0, this);x = { top: 0, visibility: "hidden" };CKEDITOR.env.ie6Compat && (x.position = "absolute");x["rtl" == v ? "right" : "left"] = 0;this.parts.dialog.setStyles(x);CKEDITOR.event.call(this);this.definition = u = CKEDITOR.fire("dialogDefinition", { name: b, definition: u, dialog: this }, a).definition;if (!("removeDialogTabs" in a._) && a.config.removeDialogTabs) {
            x = a.config.removeDialogTabs.split(";");for (v = 0; v < x.length; v++) if (t = x[v].split(":"), 2 == t.length) {
              var r = t[0];B[r] || (B[r] = []);B[r].push(t[1]);
            }a._.removeDialogTabs = B;
          }if (a._.removeDialogTabs && (B = a._.removeDialogTabs[b])) for (v = 0; v < B.length; v++) u.removeContents(B[v]);if (u.onLoad) this.on("load", u.onLoad);if (u.onShow) this.on("show", u.onShow);if (u.onHide) this.on("hide", u.onHide);if (u.onOk) this.on("ok", function (b) {
            a.fire("saveSnapshot");setTimeout(function () {
              a.fire("saveSnapshot");
            }, 0);!1 === u.onOk.call(this, b) && (b.data.hide = !1);
          });this.state = CKEDITOR.DIALOG_STATE_IDLE;if (u.onCancel) this.on("cancel", function (a) {
            !1 === u.onCancel.call(this, a) && (a.data.hide = !1);
          });var A = this,
              D = function (a) {
            var b = A._.contents,
                d = !1,
                f;for (f in b) for (var c in b[f]) if (d = a.call(this, b[f][c])) return;
          };this.on("ok", function (a) {
            D(function (b) {
              if (b.validate) {
                var d = b.validate(this),
                    f = "string" == typeof d || !1 === d;f && (a.data.hide = !1, a.stop());
                e.call(b, !f, "string" == typeof d ? d : void 0);return f;
              }
            });
          }, this, null, 0);this.on("cancel", function (b) {
            D(function (d) {
              if (d.isChanged()) return a.config.dialog_noConfirmCancel || confirm(a.lang.common.confirmCancel) || (b.data.hide = !1), !0;
            });
          }, this, null, 0);this.parts.close.on("click", function (a) {
            !1 !== this.fire("cancel", { hide: !0 }).hide && this.hide();a.data.preventDefault();
          }, this);this.changeFocus = m;var G = this._.element;a.focusManager.add(G, 1);this.on("show", function () {
            G.on("keydown", n, this);if (CKEDITOR.env.gecko) G.on("keypress", q, this);
          });this.on("hide", function () {
            G.removeListener("keydown", n);CKEDITOR.env.gecko && G.removeListener("keypress", q);D(function (a) {
              k.apply(a);
            });
          });this.on("iframeAdded", function (a) {
            new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document).on("keydown", n, this, null, 0);
          });this.on("show", function () {
            f();var b = 1 < A._.pageCount;a.config.dialog_startupFocusTab && b ? (A._.tabBarMode = !0, A._.tabs[A._.currentTabId][0].focus(), A._.currentFocusIndex = -1) : this._.hasFocus || (this._.currentFocusIndex = b ? -1 : this._.focusList.length - 1, u.onFocus ? (b = u.onFocus.call(this)) && b.focus() : m(1));
          }, this, null, 4294967295);if (CKEDITOR.env.ie6Compat) this.on("load", function () {
            var a = this.getElement(),
                b = a.getFirst();b.remove();b.appendTo(a);
          }, this);p(this);w(this);new CKEDITOR.dom.text(u.title, CKEDITOR.document).appendTo(this.parts.title);for (v = 0; v < u.contents.length; v++) (B = u.contents[v]) && this.addPage(B);this.parts.tabs.on("click", function (a) {
            var b = a.data.getTarget();b.hasClass("cke_dialog_tab") && (b = b.$.id, this.selectPage(b.substring(4, b.lastIndexOf("_"))), c(this), a.data.preventDefault());
          }, this);v = [];B = CKEDITOR.dialog._.uiElementBuilders.hbox.build(this, { type: "hbox", className: "cke_dialog_footer_buttons", widths: [], children: u.buttons }, v).getChild();this.parts.footer.setHtml(v.join(""));for (v = 0; v < B.length; v++) this._.buttons[B[v].id] = B[v];
        };CKEDITOR.dialog.prototype = { destroy: function () {
            this.hide();this._.element.remove();
          }, resize: function (a, b) {
            if (!this._.contentSize || this._.contentSize.width != a || this._.contentSize.height != b) {
              CKEDITOR.dialog.fire("resize", { dialog: this, width: a, height: b }, this._.editor);this.fire("resize", { width: a, height: b }, this._.editor);this.parts.contents.setStyles({ width: a + "px", height: b + "px" });if ("rtl" == this._.editor.lang.dir && this._.position) {
                var d = this.parts.dialog.getParent().getClientSize().width;this._.position.x = d - this._.contentSize.width - parseInt(this._.element.getFirst().getStyle("right"), 10);
              }this._.contentSize = { width: a, height: b };
            }
          }, getSize: function () {
            var a = this._.element.getFirst();return { width: a.$.offsetWidth || 0, height: a.$.offsetHeight || 0 };
          }, move: function (a, b, d) {
            var f = this._.element.getFirst(),
                c = "rtl" == this._.editor.lang.dir;CKEDITOR.env.ie && f.setStyle("zoom", "100%");var e = this.parts.dialog.getParent().getClientSize(),
                g = this.getSize(),
                h = this._.viewportRatio,
                k = Math.max(e.width - g.width, 0),
                e = Math.max(e.height - g.height, 0);this._.position && this._.position.x == a && this._.position.y == b ? (a = Math.floor(k * h.width), b = Math.floor(e * h.height)) : y(this, a, b);this._.position = { x: a, y: b };c && (a = k - a);b = { top: (0 < b ? b : 0) + "px" };b[c ? "right" : "left"] = (0 < a ? a : 0) + "px";
            f.setStyles(b);d && (this._.moved = 1);
          }, getPosition: function () {
            return CKEDITOR.tools.extend({}, this._.position);
          }, show: function () {
            var a = this._.element,
                d = this.definition,
                f = CKEDITOR.document.getBody(),
                c = this._.editor.config.baseFloatZIndex;a.getParent() && a.getParent().equals(f) ? a.setStyle("display", G ? "flex" : "block") : a.appendTo(f);this.resize(this._.contentSize && this._.contentSize.width || d.width || d.minWidth, this._.contentSize && this._.contentSize.height || d.height || d.minHeight);this.reset();null === this._.currentTabId && this.selectPage(this.definition.contents[0].id);null === CKEDITOR.dialog._.currentZIndex && (CKEDITOR.dialog._.currentZIndex = c);this._.element.getFirst().setStyle("z-index", CKEDITOR.dialog._.currentZIndex += 10);this.getElement().setStyle("z-index", CKEDITOR.dialog._.currentZIndex);null === CKEDITOR.dialog._.currentTop ? (CKEDITOR.dialog._.currentTop = this, this._.parentDialog = null, t(this._.editor)) : CKEDITOR.dialog._.currentTop !== this && (this._.parentDialog = CKEDITOR.dialog._.currentTop, f = this._.parentDialog.getElement().getFirst(), f.$.style.zIndex -= Math.floor(c / 2), this._.parentDialog.getElement().setStyle("z-index", f.$.style.zIndex), CKEDITOR.dialog._.currentTop = this);a.on("keydown", B);a.on("keyup", n);this._.hasFocus = !1;for (var e in d.contents) if (d.contents[e]) {
              var a = d.contents[e],
                  c = this._.tabs[a.id],
                  f = a.requiredContent,
                  g = 0;if (c) {
                for (var h in this._.contents[a.id]) {
                  var k = this._.contents[a.id][h];"hbox" != k.type && "vbox" != k.type && k.getInputElement() && (k.requiredContent && !this._.editor.activeFilter.check(k.requiredContent) ? k.disable() : (k.enable(), g++));
                }!g || f && !this._.editor.activeFilter.check(f) ? c[0].addClass("cke_dialog_tab_disabled") : c[0].removeClass("cke_dialog_tab_disabled");
              }
            }CKEDITOR.tools.setTimeout(function () {
              this.layout();b(this);this.parts.dialog.setStyle("visibility", "");this.fireOnce("load", {});CKEDITOR.ui.fire("ready", this);this.fire("show", {});this._.editor.fire("dialogShow", this);this._.parentDialog || this._.editor.focusManager.lock();this.foreach(function (a) {
                a.setInitValue && a.setInitValue();
              });
            }, 100, this);
          }, layout: function () {
            var a = this.parts.dialog;if (this._.moved || !G) {
              var b = this.getSize(),
                  d = CKEDITOR.document.getWindow().getViewPaneSize(),
                  f;this._.moved && this._.position ? (f = this._.position.x, b = this._.position.y) : (f = (d.width - b.width) / 2, b = (d.height - b.height) / 2);CKEDITOR.env.ie6Compat || (a.setStyle("position", "absolute"), a.removeStyle("margin"));f = Math.floor(f);b = Math.floor(b);this.move(f, b);
            }
          }, foreach: function (a) {
            for (var b in this._.contents) for (var d in this._.contents[b]) a.call(this, this._.contents[b][d]);return this;
          }, reset: function () {
            var a = function (a) {
              a.reset && a.reset(1);
            };return function () {
              this.foreach(a);return this;
            };
          }(), setupContent: function () {
            var a = arguments;this.foreach(function (b) {
              b.setup && b.setup.apply(b, a);
            });
          }, commitContent: function () {
            var a = arguments;this.foreach(function (b) {
              CKEDITOR.env.ie && this._.currentFocusIndex == b.focusIndex && b.getInputElement().$.blur();b.commit && b.commit.apply(b, a);
            });
          }, hide: function () {
            if (this.parts.dialog.isVisible()) {
              this.fire("hide", {});this._.editor.fire("dialogHide", this);this.selectPage(this._.tabIdList[0]);
              var a = this._.element;a.setStyle("display", "none");this.parts.dialog.setStyle("visibility", "hidden");for (q(this); CKEDITOR.dialog._.currentTop != this;) CKEDITOR.dialog._.currentTop.hide();if (this._.parentDialog) {
                var b = this._.parentDialog.getElement().getFirst();this._.parentDialog.getElement().removeStyle("z-index");b.setStyle("z-index", parseInt(b.$.style.zIndex, 10) + Math.floor(this._.editor.config.baseFloatZIndex / 2));
              } else v(this._.editor);if (CKEDITOR.dialog._.currentTop = this._.parentDialog) CKEDITOR.dialog._.currentZIndex -= 10;else {
                CKEDITOR.dialog._.currentZIndex = null;a.removeListener("keydown", B);a.removeListener("keyup", n);var d = this._.editor;d.focus();setTimeout(function () {
                  d.focusManager.unlock();CKEDITOR.env.iOS && d.window.focus();
                }, 0);
              }delete this._.parentDialog;this.foreach(function (a) {
                a.resetInitValue && a.resetInitValue();
              });this.setState(CKEDITOR.DIALOG_STATE_IDLE);
            }
          }, addPage: function (a) {
            if (!a.requiredContent || this._.editor.filter.check(a.requiredContent)) {
              for (var b = [], d = a.label ? ' title\x3d"' + CKEDITOR.tools.htmlEncode(a.label) + '"' : "", f = CKEDITOR.dialog._.uiElementBuilders.vbox.build(this, { type: "vbox", className: "cke_dialog_page_contents", children: a.elements, expand: !!a.expand, padding: a.padding, style: a.style || "width: inherit;" }, b), c = this._.contents[a.id] = {}, e = f.getChild(), g = 0; f = e.shift();) f.notAllowed || "hbox" == f.type || "vbox" == f.type || g++, c[f.id] = f, "function" == typeof f.getChild && e.push.apply(e, f.getChild());g || (a.hidden = !0);b = CKEDITOR.dom.element.createFromHtml(b.join(""));b.setAttribute("role", "tabpanel");b.setStyle("min-height", "100%");f = CKEDITOR.env;c = "cke_" + a.id + "_" + CKEDITOR.tools.getNextNumber();d = CKEDITOR.dom.element.createFromHtml(['\x3ca class\x3d"cke_dialog_tab"', 0 < this._.pageCount ? " cke_last" : "cke_first", d, a.hidden ? ' style\x3d"display:none"' : "", ' id\x3d"', c, '"', f.gecko && !f.hc ? "" : ' href\x3d"javascript:void(0)"', ' tabIndex\x3d"-1" hidefocus\x3d"true" role\x3d"tab"\x3e', a.label, "\x3c/a\x3e"].join(""));b.setAttribute("aria-labelledby", c);this._.tabs[a.id] = [d, b];this._.tabIdList.push(a.id);!a.hidden && this._.pageCount++;
              this._.lastTab = d;this.updateStyle();b.setAttribute("name", a.id);b.appendTo(this.parts.contents);d.unselectable();this.parts.tabs.append(d);a.accessKey && (x(this, this, "CTRL+" + a.accessKey, z, u), this._.accessKeyMap["CTRL+" + a.accessKey] = a.id);
            }
          }, selectPage: function (b) {
            if (this._.currentTabId != b && !this._.tabs[b][0].hasClass("cke_dialog_tab_disabled") && !1 !== this.fire("selectPage", { page: b, currentPage: this._.currentTabId })) {
              for (var d in this._.tabs) {
                var f = this._.tabs[d][0],
                    c = this._.tabs[d][1];d != b && (f.removeClass("cke_dialog_tab_selected"), f.removeAttribute("aria-selected"), c.hide());c.setAttribute("aria-hidden", d != b);
              }var e = this._.tabs[b];e[0].addClass("cke_dialog_tab_selected");e[0].setAttribute("aria-selected", !0);CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ? (a(e[1]), e[1].show(), setTimeout(function () {
                a(e[1], 1);
              }, 0)) : e[1].show();this._.currentTabId = b;this._.currentTabIndex = CKEDITOR.tools.indexOf(this._.tabIdList, b);
            }
          }, updateStyle: function () {
            this.parts.dialog[(1 === this._.pageCount ? "add" : "remove") + "Class"]("cke_single_page");
          }, hidePage: function (a) {
            var b = this._.tabs[a] && this._.tabs[a][0];b && 1 != this._.pageCount && b.isVisible() && (a == this._.currentTabId && this.selectPage(h.call(this)), b.hide(), this._.pageCount--, this.updateStyle());
          }, showPage: function (a) {
            if (a = this._.tabs[a] && this._.tabs[a][0]) a.show(), this._.pageCount++, this.updateStyle();
          }, getElement: function () {
            return this._.element;
          }, getName: function () {
            return this._.name;
          }, getContentElement: function (a, b) {
            var d = this._.contents[a];return d && d[b];
          }, getValueOf: function (a, b) {
            return this.getContentElement(a, b).getValue();
          },
          setValueOf: function (a, b, d) {
            return this.getContentElement(a, b).setValue(d);
          }, getButton: function (a) {
            return this._.buttons[a];
          }, click: function (a) {
            return this._.buttons[a].click();
          }, disableButton: function (a) {
            return this._.buttons[a].disable();
          }, enableButton: function (a) {
            return this._.buttons[a].enable();
          }, getPageCount: function () {
            return this._.pageCount;
          }, getParentEditor: function () {
            return this._.editor;
          }, getSelectedElement: function () {
            return this.getParentEditor().getSelection().getSelectedElement();
          }, addFocusable: function (a, b) {
            if ("undefined" == typeof b) b = this._.focusList.length, this._.focusList.push(new m(this, a, b));else {
              this._.focusList.splice(b, 0, new m(this, a, b));for (var d = b + 1; d < this._.focusList.length; d++) this._.focusList[d].focusIndex++;
            }
          }, setState: function (a) {
            if (this.state != a) {
              this.state = a;if (a == CKEDITOR.DIALOG_STATE_BUSY) {
                if (!this.parts.spinner) {
                  var b = this.getParentEditor().lang.dir,
                      d = { attributes: { "class": "cke_dialog_spinner" }, styles: { "float": "rtl" == b ? "right" : "left" } };d.styles["margin-" + ("rtl" == b ? "left" : "right")] = "8px";this.parts.spinner = CKEDITOR.document.createElement("div", d);this.parts.spinner.setHtml("\x26#8987;");this.parts.spinner.appendTo(this.parts.title, 1);
                }this.parts.spinner.show();this.getButton("ok") && this.getButton("ok").disable();
              } else a == CKEDITOR.DIALOG_STATE_IDLE && (this.parts.spinner && this.parts.spinner.hide(), this.getButton("ok") && this.getButton("ok").enable());this.fire("state", a);
            }
          }, getModel: function (a) {
            return this._.model ? this._.model : this.definition.getModel ? this.definition.getModel(a) : null;
          },
          setModel: function (a) {
            this._.model = a;
          }, getMode: function (a) {
            if (this.definition.getMode) return this.definition.getMode(a);a = this.getModel(a);return !a || a instanceof CKEDITOR.dom.element && !a.getParent() ? CKEDITOR.dialog.CREATION_MODE : CKEDITOR.dialog.EDITING_MODE;
          } };CKEDITOR.tools.extend(CKEDITOR.dialog, { CREATION_MODE: 0, EDITING_MODE: 1, add: function (a, b) {
            this._.dialogDefinitions[a] && "function" != typeof b || (this._.dialogDefinitions[a] = b);
          }, exists: function (a) {
            return !!this._.dialogDefinitions[a];
          }, getCurrent: function () {
            return CKEDITOR.dialog._.currentTop;
          },
          isTabEnabled: function (a, b, d) {
            a = a.config.removeDialogTabs;return !(a && a.match(new RegExp("(?:^|;)" + b + ":" + d + "(?:$|;)", "i")));
          }, okButton: function () {
            var a = function (a, b) {
              b = b || {};return CKEDITOR.tools.extend({ id: "ok", type: "button", label: a.lang.common.ok, "class": "cke_dialog_ui_button_ok", onClick: function (a) {
                  a = a.data.dialog;!1 !== a.fire("ok", { hide: !0 }).hide && a.hide();
                } }, b, !0);
            };a.type = "button";a.override = function (b) {
              return CKEDITOR.tools.extend(function (d) {
                return a(d, b);
              }, { type: "button" }, !0);
            };return a;
          }(), cancelButton: function () {
            var a = function (a, b) {
              b = b || {};return CKEDITOR.tools.extend({ id: "cancel", type: "button", label: a.lang.common.cancel, "class": "cke_dialog_ui_button_cancel", onClick: function (a) {
                  a = a.data.dialog;!1 !== a.fire("cancel", { hide: !0 }).hide && a.hide();
                } }, b, !0);
            };a.type = "button";a.override = function (b) {
              return CKEDITOR.tools.extend(function (d) {
                return a(d, b);
              }, { type: "button" }, !0);
            };return a;
          }(), addUIElement: function (a, b) {
            this._.uiElementBuilders[a] = b;
          } });CKEDITOR.dialog._ = { uiElementBuilders: {}, dialogDefinitions: {}, currentTop: null, currentZIndex: null };
        CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);C = { resizable: CKEDITOR.DIALOG_RESIZE_BOTH, minWidth: 600, minHeight: 400, buttons: [CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton] };var F = function (a, b, d) {
          for (var f = 0, c; c = a[f]; f++) if (c.id == b || d && c[d] && (c = F(c[d], b, d))) return c;return null;
        },
            M = function (a, b, d, f, c) {
          if (d) {
            for (var e = 0, g; g = a[e]; e++) {
              if (g.id == d) return a.splice(e, 0, b), b;if (f && g[f] && (g = M(g[f], b, d, f, !0))) return g;
            }if (c) return null;
          }a.push(b);return b;
        },
            H = function (a, b, d) {
          for (var f = 0, c; c = a[f]; f++) {
            if (c.id == b) return a.splice(f, 1);if (d && c[d] && (c = H(c[d], b, d))) return c;
          }return null;
        };d.prototype = { getContents: function (a) {
            return F(this.contents, a);
          }, getButton: function (a) {
            return F(this.buttons, a);
          }, addContents: function (a, b) {
            return M(this.contents, a, b);
          }, addButton: function (a, b) {
            return M(this.buttons, a, b);
          }, removeContents: function (a) {
            H(this.contents, a);
          }, removeButton: function (a) {
            H(this.buttons, a);
          } };f.prototype = { get: function (a) {
            return F(this.elements, a, "children");
          },
          add: function (a, b) {
            return M(this.elements, a, b, "children");
          }, remove: function (a) {
            H(this.elements, a, "children");
          } };var I = {},
            P = {};(function () {
          CKEDITOR.ui.dialog = { uiElement: function (a, b, d, f, c, e, g) {
              if (!(4 > arguments.length)) {
                var h = (f.call ? f(b) : f) || "div",
                    k = ["\x3c", h, " "],
                    l = (c && c.call ? c(b) : c) || {},
                    m = (e && e.call ? e(b) : e) || {},
                    p = (g && g.call ? g.call(this, a, b) : g) || "",
                    n = this.domId = m.id || CKEDITOR.tools.getNextId() + "_uiElement";b.requiredContent && !a.getParentEditor().filter.check(b.requiredContent) && (l.display = "none", this.notAllowed = !0);m.id = n;var q = {};b.type && (q["cke_dialog_ui_" + b.type] = 1);b.className && (q[b.className] = 1);b.disabled && (q.cke_disabled = 1);for (var u = m["class"] && m["class"].split ? m["class"].split(" ") : [], n = 0; n < u.length; n++) u[n] && (q[u[n]] = 1);u = [];for (n in q) u.push(n);m["class"] = u.join(" ");b.title && (m.title = b.title);q = (b.style || "").split(";");b.align && (u = b.align, l["margin-left"] = "left" == u ? 0 : "auto", l["margin-right"] = "right" == u ? 0 : "auto");for (n in l) q.push(n + ":" + l[n]);b.hidden && q.push("display:none");for (n = q.length - 1; 0 <= n; n--) "" === q[n] && q.splice(n, 1);0 < q.length && (m.style = (m.style ? m.style + "; " : "") + q.join("; "));for (n in m) k.push(n + '\x3d"' + CKEDITOR.tools.htmlEncode(m[n]) + '" ');k.push("\x3e", p, "\x3c/", h, "\x3e");d.push(k.join(""));(this._ || (this._ = {})).dialog = a;"boolean" == typeof b.isChanged && (this.isChanged = function () {
                  return b.isChanged;
                });"function" == typeof b.isChanged && (this.isChanged = b.isChanged);"function" == typeof b.setValue && (this.setValue = CKEDITOR.tools.override(this.setValue, function (a) {
                  return function (d) {
                    a.call(this, b.setValue.call(this, d));
                  };
                }));"function" == typeof b.getValue && (this.getValue = CKEDITOR.tools.override(this.getValue, function (a) {
                  return function () {
                    return b.getValue.call(this, a.call(this));
                  };
                }));CKEDITOR.event.implementOn(this);this.registerEvents(b);this.accessKeyUp && this.accessKeyDown && b.accessKey && x(this, a, "CTRL+" + b.accessKey);var w = this;a.on("load", function () {
                  var b = w.getInputElement();if (b) {
                    var d = w.type in { checkbox: 1, ratio: 1 } && CKEDITOR.env.ie && 8 > CKEDITOR.env.version ? "cke_dialog_ui_focused" : "";b.on("focus", function () {
                      a._.tabBarMode = !1;a._.hasFocus = !0;w.fire("focus");d && this.addClass(d);
                    });b.on("blur", function () {
                      w.fire("blur");d && this.removeClass(d);
                    });
                  }
                });CKEDITOR.tools.extend(this, b);this.keyboardFocusable && (this.tabIndex = b.tabIndex || 0, this.focusIndex = a._.focusList.push(this) - 1, this.on("focus", function () {
                  a._.currentFocusIndex = w.focusIndex;
                }));
              }
            }, hbox: function (a, b, d, f, c) {
              if (!(4 > arguments.length)) {
                this._ || (this._ = {});var e = this._.children = b,
                    g = c && c.widths || null,
                    h = c && c.height || null,
                    k,
                    l = { role: "presentation" };
                c && c.align && (l.align = c.align);CKEDITOR.ui.dialog.uiElement.call(this, a, c || { type: "hbox" }, f, "table", {}, l, function () {
                  var a = ['\x3ctbody\x3e\x3ctr class\x3d"cke_dialog_ui_hbox"\x3e'];for (k = 0; k < d.length; k++) {
                    var b = "cke_dialog_ui_hbox_child",
                        f = [];0 === k && (b = "cke_dialog_ui_hbox_first");k == d.length - 1 && (b = "cke_dialog_ui_hbox_last");a.push('\x3ctd class\x3d"', b, '" role\x3d"presentation" ');g ? g[k] && f.push("width:" + A(g[k])) : f.push("width:" + Math.floor(100 / d.length) + "%");h && f.push("height:" + A(h));c && void 0 !== c.padding && f.push("padding:" + A(c.padding));CKEDITOR.env.ie && CKEDITOR.env.quirks && e[k].align && f.push("text-align:" + e[k].align);0 < f.length && a.push('style\x3d"' + f.join("; ") + '" ');a.push("\x3e", d[k], "\x3c/td\x3e");
                  }a.push("\x3c/tr\x3e\x3c/tbody\x3e");return a.join("");
                });
              }
            }, vbox: function (a, b, d, f, c) {
              if (!(3 > arguments.length)) {
                this._ || (this._ = {});var e = this._.children = b,
                    g = c && c.width || null,
                    h = c && c.heights || null;CKEDITOR.ui.dialog.uiElement.call(this, a, c || { type: "vbox" }, f, "div", null, { role: "presentation" }, function () {
                  var b = ['\x3ctable role\x3d"presentation" cellspacing\x3d"0" border\x3d"0" '];b.push('style\x3d"');c && c.expand && b.push("height:100%;");b.push("width:" + A(g || "100%"), ";");CKEDITOR.env.webkit && b.push("float:none;");b.push('"');b.push('align\x3d"', CKEDITOR.tools.htmlEncode(c && c.align || ("ltr" == a.getParentEditor().lang.dir ? "left" : "right")), '" ');b.push("\x3e\x3ctbody\x3e");for (var f = 0; f < d.length; f++) {
                    var k = [];b.push('\x3ctr\x3e\x3ctd role\x3d"presentation" ');g && k.push("width:" + A(g || "100%"));h ? k.push("height:" + A(h[f])) : c && c.expand && k.push("height:" + Math.floor(100 / d.length) + "%");c && void 0 !== c.padding && k.push("padding:" + A(c.padding));CKEDITOR.env.ie && CKEDITOR.env.quirks && e[f].align && k.push("text-align:" + e[f].align);0 < k.length && b.push('style\x3d"', k.join("; "), '" ');b.push(' class\x3d"cke_dialog_ui_vbox_child"\x3e', d[f], "\x3c/td\x3e\x3c/tr\x3e");
                  }b.push("\x3c/tbody\x3e\x3c/table\x3e");return b.join("");
                });
              }
            } };
        })();CKEDITOR.ui.dialog.uiElement.prototype = { getElement: function () {
            return CKEDITOR.document.getById(this.domId);
          },
          getInputElement: function () {
            return this.getElement();
          }, getDialog: function () {
            return this._.dialog;
          }, setValue: function (a, b) {
            this.getInputElement().setValue(a);!b && this.fire("change", { value: a });return this;
          }, getValue: function () {
            return this.getInputElement().getValue();
          }, isChanged: function () {
            return !1;
          }, selectParentTab: function () {
            for (var a = this.getInputElement(); (a = a.getParent()) && -1 == a.$.className.search("cke_dialog_page_contents"););if (!a) return this;a = a.getAttribute("name");this._.dialog._.currentTabId != a && this._.dialog.selectPage(a);return this;
          }, focus: function () {
            this.selectParentTab().getInputElement().focus();return this;
          }, registerEvents: function (a) {
            var b = /^on([A-Z]\w+)/,
                d,
                f = function (a, b, d, f) {
              b.on("load", function () {
                a.getInputElement().on(d, f, a);
              });
            },
                c;for (c in a) if (d = c.match(b)) this.eventProcessors[c] ? this.eventProcessors[c].call(this, this._.dialog, a[c]) : f(this, this._.dialog, d[1].toLowerCase(), a[c]);return this;
          }, eventProcessors: { onLoad: function (a, b) {
              a.on("load", b, this);
            }, onShow: function (a, b) {
              a.on("show", b, this);
            }, onHide: function (a, b) {
              a.on("hide", b, this);
            } }, accessKeyDown: function () {
            this.focus();
          }, accessKeyUp: function () {}, disable: function () {
            var a = this.getElement();this.getInputElement().setAttribute("disabled", "true");a.addClass("cke_disabled");
          }, enable: function () {
            var a = this.getElement();this.getInputElement().removeAttribute("disabled");a.removeClass("cke_disabled");
          }, isEnabled: function () {
            return !this.getElement().hasClass("cke_disabled");
          }, isVisible: function () {
            return this.getInputElement().isVisible();
          },
          isFocusable: function () {
            return this.isEnabled() && this.isVisible() ? !0 : !1;
          } };CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement(), { getChild: function (a) {
            if (1 > arguments.length) return this._.children.concat();a.splice || (a = [a]);return 2 > a.length ? this._.children[a[0]] : this._.children[a[0]] && this._.children[a[0]].getChild ? this._.children[a[0]].getChild(a.slice(1, a.length)) : null;
          } }, !0);CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox();(function () {
          var a = { build: function (a, b, d) {
              for (var f = b.children, c, e = [], g = [], h = 0; h < f.length && (c = f[h]); h++) {
                var k = [];e.push(k);g.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(a, c, k));
              }return new CKEDITOR.ui.dialog[b.type](a, g, e, d, b);
            } };CKEDITOR.dialog.addUIElement("hbox", a);CKEDITOR.dialog.addUIElement("vbox", a);
        })();CKEDITOR.dialogCommand = function (a, b) {
          this.dialogName = a;CKEDITOR.tools.extend(this, b, !0);
        };CKEDITOR.dialogCommand.prototype = { exec: function (a) {
            var b = this.tabId;a.openDialog(this.dialogName, function (a) {
              b && a.selectPage(b);
            });
          },
          canUndo: !1, editorFocus: 1 };(function () {
          var a = /^\d*$/,
              b = /^\d*(?:\.\d+)?$/,
              d = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,
              f = /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i,
              c = /^(--|-?([a-zA-Z_]|\\))(\\|[a-zA-Z0-9-_])*\s*?:\s*?[^:;]+$/;CKEDITOR.VALIDATE_OR = 1;CKEDITOR.VALIDATE_AND = 2;CKEDITOR.dialog.validate = { functions: function () {
              var a = arguments;return function () {
                var b = this && this.getValue ? this.getValue() : a[0],
                    d,
                    f = CKEDITOR.VALIDATE_AND,
                    c = [],
                    e;for (e = 0; e < a.length; e++) if ("function" == typeof a[e]) c.push(a[e]);else break;e < a.length && "string" == typeof a[e] && (d = a[e], e++);e < a.length && "number" == typeof a[e] && (f = a[e]);var g = f == CKEDITOR.VALIDATE_AND ? !0 : !1;for (e = 0; e < c.length; e++) g = f == CKEDITOR.VALIDATE_AND ? g && c[e](b) : g || c[e](b);return g ? !0 : d;
              };
            }, regex: function (a, b) {
              return function (d) {
                d = this && this.getValue ? this.getValue() : d;return a.test(d) ? !0 : b;
              };
            }, notEmpty: function (a) {
              var b = RegExp("^[\\u0020\\u00a0\\u1680\\u202f\\u205f\\u3000\\u2000-\\u200a\\s]+|[\\u0020\\u00a0\\u1680\\u202f\\u205f\\u3000\\u2000-\\u200a\\s]+$", "g");
              return function (d) {
                return 0 < (this && this.getValue ? this.getValue() : d).replace(b, "").length || a;
              };
            }, integer: function (b) {
              return this.regex(a, b);
            }, number: function (a) {
              return this.regex(b, a);
            }, cssLength: function (a) {
              return this.functions(function (a) {
                return f.test(CKEDITOR.tools.trim(a));
              }, a);
            }, htmlLength: function (a) {
              return this.functions(function (a) {
                return d.test(CKEDITOR.tools.trim(a));
              }, a);
            }, inlineStyle: function (a) {
              return this.functions(function (a) {
                a = CKEDITOR.tools.trim(a).split(";");"" === a[a.length - 1] && a.pop();
                return CKEDITOR.tools.array.every(a, function (a) {
                  return c.test(CKEDITOR.tools.trim(a));
                });
              }, a);
            }, equals: function (a, b) {
              return this.functions(function (b) {
                return b == a;
              }, b);
            }, notEqual: function (a, b) {
              return this.functions(function (b) {
                return b != a;
              }, b);
            } };CKEDITOR.on("instanceDestroyed", function (a) {
            if (CKEDITOR.tools.isEmpty(CKEDITOR.instances)) {
              for (var b; b = CKEDITOR.dialog._.currentTop;) b.hide();for (var d in I) I[d].remove();I = {};
            }a = a.editor._.storedDialogs;for (var f in a) a[f].destroy();
          });
        })();CKEDITOR.tools.extend(CKEDITOR.editor.prototype, { openDialog: function (a, b, d) {
            var f = null,
                c = CKEDITOR.dialog._.dialogDefinitions[a];null === CKEDITOR.dialog._.currentTop && t(this);if ("function" == typeof c) c = this._.storedDialogs || (this._.storedDialogs = {}), f = c[a] || (c[a] = new CKEDITOR.dialog(this, a)), f.setModel(d), b && b.call(f, f), f.show();else {
              if ("failed" == c) throw v(this), Error('[CKEDITOR.dialog.openDialog] Dialog "' + a + '" failed when loading definition.');"string" == typeof c && CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c), function () {
                "function" != typeof CKEDITOR.dialog._.dialogDefinitions[a] && (CKEDITOR.dialog._.dialogDefinitions[a] = "failed");this.openDialog(a, b, d);
              }, this, 0, 1);
            }CKEDITOR.skin.loadPart("dialog");if (f) f.once("hide", function () {
              f.setModel(null);
            }, null, null, 999);return f;
          } });CKEDITOR.plugins.add("dialog", { requires: "dialogui", init: function (a) {
            E || (CKEDITOR.document.appendStyleSheet(this.path + "styles/dialog.css"), E = !0);a.on("doubleclick", function (b) {
              b.data.dialog && a.openDialog(b.data.dialog);
            }, null, null, 999);
          } });
      }(), function () {
        CKEDITOR.plugins.add("a11yhelp", { requires: "dialog", availableLangs: { af: 1,
            ar: 1, az: 1, bg: 1, ca: 1, cs: 1, cy: 1, da: 1, de: 1, "de-ch": 1, el: 1, en: 1, "en-au": 1, "en-gb": 1, eo: 1, es: 1, "es-mx": 1, et: 1, eu: 1, fa: 1, fi: 1, fo: 1, fr: 1, "fr-ca": 1, gl: 1, gu: 1, he: 1, hi: 1, hr: 1, hu: 1, id: 1, it: 1, ja: 1, km: 1, ko: 1, ku: 1, lt: 1, lv: 1, mk: 1, mn: 1, nb: 1, nl: 1, no: 1, oc: 1, pl: 1, pt: 1, "pt-br": 1, ro: 1, ru: 1, si: 1, sk: 1, sl: 1, sq: 1, sr: 1, "sr-latn": 1, sv: 1, th: 1, tr: 1, tt: 1, ug: 1, uk: 1, vi: 1, zh: 1, "zh-cn": 1 }, init: function (c) {
            var h = this;c.addCommand("a11yHelp", { exec: function () {
                var g = c.langCode,
                    g = h.availableLangs[g] ? g : h.availableLangs[g.replace(/-.*/, "")] ? g.replace(/-.*/, "") : "en";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(h.path + "dialogs/lang/" + g + ".js"), function () {
                  c.lang.a11yhelp = h.langEntries[g];c.openDialog("a11yHelp");
                });
              }, modes: { wysiwyg: 1, source: 1 }, readOnly: 1, canUndo: !1 });c.setKeystroke(CKEDITOR.ALT + 48, "a11yHelp");CKEDITOR.dialog.add("a11yHelp", this.path + "dialogs/a11yhelp.js");c.on("ariaEditorHelpLabel", function (g) {
              g.data.label = c.lang.common.editorHelp;
            });
          } });
      }(), CKEDITOR.plugins.add("basicstyles", { init: function (c) {
          var h = 0,
              g = function (e, g, b, d) {
            if (d) {
              d = new CKEDITOR.style(d);var f = a[b];f.unshift(d);c.attachStyleStateChange(d, function (a) {
                !c.readOnly && c.getCommand(b).setState(a);
              });c.addCommand(b, new CKEDITOR.styleCommand(d, { contentForms: f }));c.ui.addButton && c.ui.addButton(e, { label: g, command: b, toolbar: "basicstyles," + (h += 10) });
            }
          },
              a = { bold: ["strong", "b", ["span", function (a) {
              a = a.styles["font-weight"];return "bold" == a || 700 <= +a;
            }]], italic: ["em", "i", ["span", function (a) {
              return "italic" == a.styles["font-style"];
            }]], underline: ["u", ["span", function (a) {
              return "underline" == a.styles["text-decoration"];
            }]], strike: ["s", "strike", ["span", function (a) {
              return "line-through" == a.styles["text-decoration"];
            }]], subscript: ["sub"], superscript: ["sup"] },
              e = c.config,
              k = c.lang.basicstyles;g("Bold", k.bold, "bold", e.coreStyles_bold);g("Italic", k.italic, "italic", e.coreStyles_italic);g("Underline", k.underline, "underline", e.coreStyles_underline);g("Strike", k.strike, "strike", e.coreStyles_strike);g("Subscript", k.subscript, "subscript", e.coreStyles_subscript);g("Superscript", k.superscript, "superscript", e.coreStyles_superscript);c.setKeystroke([[CKEDITOR.CTRL + 66, "bold"], [CKEDITOR.CTRL + 73, "italic"], [CKEDITOR.CTRL + 85, "underline"]]);
        } }), CKEDITOR.config.coreStyles_bold = { element: "strong", overrides: "b" }, CKEDITOR.config.coreStyles_italic = { element: "em", overrides: "i" }, CKEDITOR.config.coreStyles_underline = { element: "u" }, CKEDITOR.config.coreStyles_strike = { element: "s", overrides: "strike" }, CKEDITOR.config.coreStyles_subscript = { element: "sub" }, CKEDITOR.config.coreStyles_superscript = { element: "sup" }, function () {
        var c = { exec: function (c) {
            var g = c.getCommand("blockquote").state,
                a = c.getSelection(),
                e = a && a.getRanges()[0];if (e) {
              var k = a.createBookmarks();if (CKEDITOR.env.ie) {
                var l = k[0].startNode,
                    m = k[0].endNode,
                    b;if (l && "blockquote" == l.getParent().getName()) for (b = l; b = b.getNext();) if (b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary()) {
                  l.move(b, !0);break;
                }if (m && "blockquote" == m.getParent().getName()) for (b = m; b = b.getPrevious();) if (b.type == CKEDITOR.NODE_ELEMENT && b.isBlockBoundary()) {
                  m.move(b);break;
                }
              }var d = e.createIterator();d.enlargeBr = c.config.enterMode != CKEDITOR.ENTER_BR;if (g == CKEDITOR.TRISTATE_OFF) {
                for (l = []; g = d.getNextParagraph();) l.push(g);1 > l.length && (g = c.document.createElement(c.config.enterMode == CKEDITOR.ENTER_P ? "p" : "div"), m = k.shift(), e.insertNode(g), g.append(new CKEDITOR.dom.text("﻿", c.document)), e.moveToBookmark(m), e.selectNodeContents(g), e.collapse(!0), m = e.createBookmark(), l.push(g), k.unshift(m));b = l[0].getParent();e = [];for (m = 0; m < l.length; m++) g = l[m], b = b.getCommonAncestor(g.getParent());for (g = { table: 1, tbody: 1, tr: 1, ol: 1,
                  ul: 1 }; g[b.getName()];) b = b.getParent();for (m = null; 0 < l.length;) {
                  for (g = l.shift(); !g.getParent().equals(b);) g = g.getParent();g.equals(m) || e.push(g);m = g;
                }for (; 0 < e.length;) if (g = e.shift(), "blockquote" == g.getName()) {
                  for (m = new CKEDITOR.dom.documentFragment(c.document); g.getFirst();) m.append(g.getFirst().remove()), l.push(m.getLast());m.replace(g);
                } else l.push(g);e = c.document.createElement("blockquote");for (e.insertBefore(l[0]); 0 < l.length;) g = l.shift(), e.append(g);
              } else if (g == CKEDITOR.TRISTATE_ON) {
                m = [];for (b = {}; g = d.getNextParagraph();) {
                  for (l = e = null; g.getParent();) {
                    if ("blockquote" == g.getParent().getName()) {
                      e = g.getParent();l = g;break;
                    }g = g.getParent();
                  }e && l && !l.getCustomData("blockquote_moveout") && (m.push(l), CKEDITOR.dom.element.setMarker(b, l, "blockquote_moveout", !0));
                }CKEDITOR.dom.element.clearAllMarkers(b);g = [];l = [];for (b = {}; 0 < m.length;) d = m.shift(), e = d.getParent(), d.getPrevious() ? d.getNext() ? (d.breakParent(d.getParent()), l.push(d.getNext())) : d.remove().insertAfter(e) : d.remove().insertBefore(e), e.getCustomData("blockquote_processed") || (l.push(e), CKEDITOR.dom.element.setMarker(b, e, "blockquote_processed", !0)), g.push(d);CKEDITOR.dom.element.clearAllMarkers(b);for (m = l.length - 1; 0 <= m; m--) {
                  e = l[m];a: {
                    b = e;for (var d = 0, f = b.getChildCount(), p = void 0; d < f && (p = b.getChild(d)); d++) if (p.type == CKEDITOR.NODE_ELEMENT && p.isBlockBoundary()) {
                      b = !1;break a;
                    }b = !0;
                  }b && e.remove();
                }if (c.config.enterMode == CKEDITOR.ENTER_BR) for (e = !0; g.length;) if (d = g.shift(), "div" == d.getName()) {
                  m = new CKEDITOR.dom.documentFragment(c.document);!e || !d.getPrevious() || d.getPrevious().type == CKEDITOR.NODE_ELEMENT && d.getPrevious().isBlockBoundary() || m.append(c.document.createElement("br"));for (e = d.getNext() && !(d.getNext().type == CKEDITOR.NODE_ELEMENT && d.getNext().isBlockBoundary()); d.getFirst();) d.getFirst().remove().appendTo(m);e && m.append(c.document.createElement("br"));m.replace(d);e = !1;
                }
              }a.selectBookmarks(k);c.focus();
            }
          }, refresh: function (c, g) {
            this.setState(c.elementPath(g.block || g.blockLimit).contains("blockquote", 1) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);
          }, context: "blockquote", allowedContent: "blockquote",
          requiredContent: "blockquote" };CKEDITOR.plugins.add("blockquote", { init: function (h) {
            h.blockless || (h.addCommand("blockquote", c), h.ui.addButton && h.ui.addButton("Blockquote", { label: h.lang.blockquote.toolbar, command: "blockquote", toolbar: "blocks,10" }));
          } });
      }(), "use strict", function () {
        function c(c, a) {
          CKEDITOR.tools.extend(this, a, { editor: c, id: "cke-" + CKEDITOR.tools.getUniqueId(), area: c._.notificationArea });a.type || (this.type = "info");this.element = this._createElement();c.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement(this.element);
        }
        function h(c) {
          var a = this;this.editor = c;this.notifications = [];this.element = this._createElement();this._uiBuffer = CKEDITOR.tools.eventsBuffer(10, this._layout, this);this._changeBuffer = CKEDITOR.tools.eventsBuffer(500, this._layout, this);c.on("destroy", function () {
            a._removeListeners();a.element.remove();
          });
        }CKEDITOR.plugins.add("notification", { init: function (c) {
            function a(a) {
              var c = new CKEDITOR.dom.element("div");c.setStyles({ position: "fixed", "margin-left": "-9999px" });c.setAttributes({ "aria-live": "assertive",
                "aria-atomic": "true" });c.setText(a);CKEDITOR.document.getBody().append(c);setTimeout(function () {
                c.remove();
              }, 100);
            }c._.notificationArea = new h(c);c.showNotification = function (a, h, l) {
              var m, b;"progress" == h ? m = l : b = l;a = new CKEDITOR.plugins.notification(c, { message: a, type: h, progress: m, duration: b });a.show();return a;
            };c.on("key", function (e) {
              if (27 == e.data.keyCode) {
                var h = c._.notificationArea.notifications;h.length && (a(c.lang.notification.closed), h[h.length - 1].hide(), e.cancel());
              }
            });
          } });c.prototype = { show: function () {
            !1 !== this.editor.fire("notificationShow", { notification: this }) && (this.area.add(this), this._hideAfterTimeout());
          }, update: function (c) {
            var a = !0;!1 === this.editor.fire("notificationUpdate", { notification: this, options: c }) && (a = !1);var e = this.element,
                h = e.findOne(".cke_notification_message"),
                l = e.findOne(".cke_notification_progress"),
                m = c.type;e.removeAttribute("role");c.progress && "progress" != this.type && (m = "progress");m && (e.removeClass(this._getClass()), e.removeAttribute("aria-label"), this.type = m, e.addClass(this._getClass()), e.setAttribute("aria-label", this.type), "progress" != this.type || l ? "progress" != this.type && l && l.remove() : (l = this._createProgressElement(), l.insertBefore(h)));void 0 !== c.message && (this.message = c.message, h.setHtml(this.message));void 0 !== c.progress && (this.progress = c.progress, l && l.setStyle("width", this._getPercentageProgress()));a && c.important && (e.setAttribute("role", "alert"), this.isVisible() || this.area.add(this));this.duration = c.duration;this._hideAfterTimeout();
          }, hide: function () {
            !1 !== this.editor.fire("notificationHide", { notification: this }) && this.area.remove(this);
          }, isVisible: function () {
            return 0 <= CKEDITOR.tools.indexOf(this.area.notifications, this);
          }, _createElement: function () {
            var c = this,
                a,
                e,
                h = this.editor.lang.common.close;a = new CKEDITOR.dom.element("div");a.addClass("cke_notification");a.addClass(this._getClass());a.setAttributes({ id: this.id, role: "alert", "aria-label": this.type });"progress" == this.type && a.append(this._createProgressElement());e = new CKEDITOR.dom.element("p");e.addClass("cke_notification_message");e.setHtml(this.message);
            a.append(e);e = CKEDITOR.dom.element.createFromHtml('\x3ca class\x3d"cke_notification_close" href\x3d"javascript:void(0)" title\x3d"' + h + '" role\x3d"button" tabindex\x3d"-1"\x3e\x3cspan class\x3d"cke_label"\x3eX\x3c/span\x3e\x3c/a\x3e');a.append(e);e.on("click", function () {
              c.editor.focus();c.hide();
            });return a;
          }, _getClass: function () {
            return "progress" == this.type ? "cke_notification_info" : "cke_notification_" + this.type;
          }, _createProgressElement: function () {
            var c = new CKEDITOR.dom.element("span");c.addClass("cke_notification_progress");
            c.setStyle("width", this._getPercentageProgress());return c;
          }, _getPercentageProgress: function () {
            return Math.round(100 * (this.progress || 0)) + "%";
          }, _hideAfterTimeout: function () {
            var c = this,
                a;this._hideTimeoutId && clearTimeout(this._hideTimeoutId);if ("number" == typeof this.duration) a = this.duration;else if ("info" == this.type || "success" == this.type) a = "number" == typeof this.editor.config.notification_duration ? this.editor.config.notification_duration : 5E3;a && (c._hideTimeoutId = setTimeout(function () {
              c.hide();
            }, a));
          } };h.prototype = { add: function (c) {
            this.notifications.push(c);this.element.append(c.element);1 == this.element.getChildCount() && (CKEDITOR.document.getBody().append(this.element), this._attachListeners());this._layout();
          }, remove: function (c) {
            var a = CKEDITOR.tools.indexOf(this.notifications, c);0 > a || (this.notifications.splice(a, 1), c.element.remove(), this.element.getChildCount() || (this._removeListeners(), this.element.remove()));
          }, _createElement: function () {
            var c = this.editor,
                a = c.config,
                e = new CKEDITOR.dom.element("div");e.addClass("cke_notifications_area");
            e.setAttribute("id", "cke_notifications_area_" + c.name);e.setStyle("z-index", a.baseFloatZIndex - 2);return e;
          }, _attachListeners: function () {
            var c = CKEDITOR.document.getWindow(),
                a = this.editor;c.on("scroll", this._uiBuffer.input);c.on("resize", this._uiBuffer.input);a.on("change", this._changeBuffer.input);a.on("floatingSpaceLayout", this._layout, this, null, 20);a.on("blur", this._layout, this, null, 20);
          }, _removeListeners: function () {
            var c = CKEDITOR.document.getWindow(),
                a = this.editor;c.removeListener("scroll", this._uiBuffer.input);
            c.removeListener("resize", this._uiBuffer.input);a.removeListener("change", this._changeBuffer.input);a.removeListener("floatingSpaceLayout", this._layout);a.removeListener("blur", this._layout);
          }, _layout: function () {
            function c() {
              a.setStyle("left", B(n + h.width - p - w));
            }var a = this.element,
                e = this.editor,
                h = e.ui.contentsElement.getClientRect(),
                l = e.ui.contentsElement.getDocumentPosition(),
                m,
                b,
                d = a.getClientRect(),
                f,
                p = this._notificationWidth,
                w = this._notificationMargin;f = CKEDITOR.document.getWindow();var y = f.getScrollPosition(),
                r = f.getViewPaneSize(),
                t = CKEDITOR.document.getBody(),
                v = t.getDocumentPosition(),
                B = CKEDITOR.tools.cssLength;p && w || (f = this.element.getChild(0), p = this._notificationWidth = f.getClientRect().width, w = this._notificationMargin = parseInt(f.getComputedStyle("margin-left"), 10) + parseInt(f.getComputedStyle("margin-right"), 10));e.toolbar && (m = e.ui.space(e.config.toolbarLocation), b = m.getClientRect());m && m.isVisible() && b.bottom > h.top && b.bottom < h.bottom - d.height ? a.setStyles({ position: "fixed", top: B(b.bottom) }) : 0 < h.top ? a.setStyles({ position: "absolute", top: B(l.y) }) : l.y + h.height - d.height > y.y ? a.setStyles({ position: "fixed", top: 0 }) : a.setStyles({ position: "absolute", top: B(l.y + h.height - d.height) });var n = "fixed" == a.getStyle("position") ? h.left : "static" != t.getComputedStyle("position") ? l.x - v.x : l.x;h.width < p + w ? l.x + p + w > y.x + r.width ? c() : a.setStyle("left", B(n)) : l.x + p + w > y.x + r.width ? a.setStyle("left", B(n)) : l.x + h.width / 2 + p / 2 + w > y.x + r.width ? a.setStyle("left", B(n - l.x + y.x + r.width - p - w)) : 0 > h.left + h.width - p - w ? c() : 0 > h.left + h.width / 2 - p / 2 ? a.setStyle("left", B(n - l.x + y.x)) : a.setStyle("left", B(n + h.width / 2 - p / 2 - w / 2));
          } };CKEDITOR.plugins.notification = c;
      }(), function () {
        var c = '\x3ca id\x3d"{id}" class\x3d"cke_button cke_button__{name} cke_button_{state} {cls}"' + (CKEDITOR.env.gecko && !CKEDITOR.env.hc ? "" : " href\x3d\"javascript:void('{titleJs}')\"") + ' title\x3d"{title}" tabindex\x3d"-1" hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasArrow}" aria-disabled\x3d"{ariaDisabled}"';CKEDITOR.env.gecko && CKEDITOR.env.mac && (c += ' onkeypress\x3d"return false;"');CKEDITOR.env.gecko && (c += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');var h = "";CKEDITOR.env.ie && (h = 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26');var c = c + (' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" onclick\x3d"' + h + 'CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{style}"') + '\x3e\x26nbsp;\x3c/span\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_button_label cke_button__{name}_label" aria-hidden\x3d"false"\x3e{label}\x3c/span\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_button_label" aria-hidden\x3d"false"\x3e{ariaShortcutSpace}{ariaShortcut}\x3c/span\x3e{arrowHtml}\x3c/a\x3e',
            g = CKEDITOR.addTemplate("buttonArrow", '\x3cspan class\x3d"cke_button_arrow"\x3e' + (CKEDITOR.env.hc ? "\x26#9660;" : "") + "\x3c/span\x3e"),
            a = CKEDITOR.addTemplate("button", c);CKEDITOR.plugins.add("button", { beforeInit: function (a) {
            a.ui.addHandler(CKEDITOR.UI_BUTTON, CKEDITOR.ui.button.handler);
          } });CKEDITOR.UI_BUTTON = "button";CKEDITOR.ui.button = function (a) {
          CKEDITOR.tools.extend(this, a, { title: a.label, click: a.click || function (c) {
              c.execCommand(a.command);
            } });this._ = {};
        };CKEDITOR.ui.button.handler = { create: function (a) {
            return new CKEDITOR.ui.button(a);
          } };CKEDITOR.ui.button.prototype = { render: function (c, h) {
            function l() {
              var a = c.mode;a && (a = this.modes[a] ? void 0 !== m[a] ? m[a] : CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, a = c.readOnly && !this.readOnly ? CKEDITOR.TRISTATE_DISABLED : a, this.setState(a), this.refresh && this.refresh());
            }var m = null,
                b = CKEDITOR.env,
                d = "",
                f = this.command,
                p,
                w,
                y,
                r = this._.id;r || (r = CKEDITOR.tools.getNextId(), this._.id = r);this._.editor = c;var t = { id: r, button: this, editor: c, focus: function () {
                CKEDITOR.document.getById(r).focus();
              }, execute: function () {
                this.button.click(c);
              }, attach: function (a) {
                this.button.attach(a);
              } },
                v = CKEDITOR.tools.addFunction(function (a) {
              if (t.onkey) return a = new CKEDITOR.dom.event(a), !1 !== t.onkey(t, a.getKeystroke());
            }),
                B = CKEDITOR.tools.addFunction(function (a) {
              var b;t.onfocus && (b = !1 !== t.onfocus(t, new CKEDITOR.dom.event(a)));return b;
            }),
                n = 0;t.clickFn = p = CKEDITOR.tools.addFunction(function () {
              n && (c.unlockSelection(1), n = 0);t.execute();b.iOS && c.focus();
            });this.modes ? (m = {}, c.on("beforeModeUnload", function () {
              c.mode && this._.state != CKEDITOR.TRISTATE_DISABLED && (m[c.mode] = this._.state);
            }, this), c.on("activeFilterChange", l, this), c.on("mode", l, this), !this.readOnly && c.on("readOnly", l, this)) : f && (f = c.getCommand(f)) && (f.on("state", function () {
              this.setState(f.state);
            }, this), d += f.state == CKEDITOR.TRISTATE_ON ? "on" : f.state == CKEDITOR.TRISTATE_DISABLED ? "disabled" : "off");var x;if (this.directional) c.on("contentDirChanged", function (a) {
              var b = CKEDITOR.document.getById(this._.id),
                  d = b.getFirst();a = a.data;a != c.lang.dir ? b.addClass("cke_" + a) : b.removeClass("cke_ltr").removeClass("cke_rtl");d.setAttribute("style", CKEDITOR.skin.getIconStyle(x, "rtl" == a, this.icon, this.iconOffset));
            }, this);f ? (w = c.getCommandKeystroke(f)) && (y = CKEDITOR.tools.keystrokeToString(c.lang.common.keyboard, w)) : d += "off";w = this.name || this.command;var q = null,
                u = this.icon;x = w;this.icon && !/\./.test(this.icon) ? (x = this.icon, u = null) : (this.icon && (q = this.icon), CKEDITOR.env.hidpi && this.iconHiDpi && (q = this.iconHiDpi));q ? (CKEDITOR.skin.addIcon(q, q), u = null) : q = x;d = { id: r, name: w, iconName: x, label: this.label, cls: (this.hasArrow ? "cke_button_expandable " : "") + (this.className || ""), state: d, ariaDisabled: "disabled" == d ? "true" : "false", title: this.title + (y ? " (" + y.display + ")" : ""), ariaShortcutSpace: y ? "\x26nbsp;" : "", ariaShortcut: y ? c.lang.common.keyboardShortcut + " " + y.aria : "", titleJs: b.gecko && !b.hc ? "" : (this.title || "").replace("'", ""), hasArrow: "string" === typeof this.hasArrow && this.hasArrow || (this.hasArrow ? "true" : "false"), keydownFn: v, focusFn: B, clickFn: p, style: CKEDITOR.skin.getIconStyle(q, "rtl" == c.lang.dir, u, this.iconOffset), arrowHtml: this.hasArrow ? g.output() : "" };a.output(d, h);if (this.onRender) this.onRender();return t;
          }, setState: function (a) {
            if (this._.state == a) return !1;this._.state = a;var c = CKEDITOR.document.getById(this._.id);return c ? (c.setState(a, "cke_button"), c.setAttribute("aria-disabled", a == CKEDITOR.TRISTATE_DISABLED), this.hasArrow ? c.setAttribute("aria-expanded", a == CKEDITOR.TRISTATE_ON) : a === CKEDITOR.TRISTATE_ON ? c.setAttribute("aria-pressed", !0) : c.removeAttribute("aria-pressed"), !0) : !1;
          }, getState: function () {
            return this._.state;
          }, toFeature: function (a) {
            if (this._.feature) return this._.feature;var c = this;this.allowedContent || this.requiredContent || !this.command || (c = a.getCommand(this.command) || c);return this._.feature = c;
          } };CKEDITOR.ui.prototype.addButton = function (a, c) {
          this.add(a, CKEDITOR.UI_BUTTON, c);
        };
      }(), function () {
        function c(a) {
          function c() {
            for (var b = g(), d = CKEDITOR.tools.clone(a.config.toolbarGroups) || h(a), f = 0; f < d.length; f++) {
              var k = d[f];if ("/" != k) {
                "string" == typeof k && (k = d[f] = { name: k });var t,
                    v = k.groups;if (v) for (var B = 0; B < v.length; B++) t = v[B], (t = b[t]) && m(k, t);(t = b[k.name]) && m(k, t);
              }
            }return d;
          }function g() {
            var b = {},
                d,
                c,
                f;for (d in a.ui.items) c = a.ui.items[d], f = c.toolbar || "others", f = f.split(","), c = f[0], f = parseInt(f[1] || -1, 10), b[c] || (b[c] = []), b[c].push({ name: d, order: f });
            for (c in b) b[c] = b[c].sort(function (a, b) {
              return a.order == b.order ? 0 : 0 > b.order ? -1 : 0 > a.order ? 1 : a.order < b.order ? -1 : 1;
            });return b;
          }function m(b, c) {
            if (c.length) {
              b.items ? b.items.push(a.ui.create("-")) : b.items = [];for (var f; f = c.shift();) f = "string" == typeof f ? f : f.name, d && -1 != CKEDITOR.tools.indexOf(d, f) || (f = a.ui.create(f)) && a.addFeature(f) && b.items.push(f);
            }
          }function b(a) {
            var b = [],
                d,
                c,
                f;for (d = 0; d < a.length; ++d) c = a[d], f = {}, "/" == c ? b.push(c) : CKEDITOR.tools.isArray(c) ? (m(f, CKEDITOR.tools.clone(c)), b.push(f)) : c.items && (m(f, CKEDITOR.tools.clone(c.items)), f.name = c.name, b.push(f));return b;
          }var d = a.config.removeButtons,
              d = d && d.split(","),
              f = a.config.toolbar;"string" == typeof f && (f = a.config["toolbar_" + f]);return a.toolbar = f ? b(f) : c();
        }function h(a) {
          return a._.toolbarGroups || (a._.toolbarGroups = [{ name: "document", groups: ["mode", "document", "doctools"] }, { name: "clipboard", groups: ["clipboard", "undo"] }, { name: "editing", groups: ["find", "selection", "spellchecker"] }, { name: "forms" }, "/", { name: "basicstyles", groups: ["basicstyles", "cleanup"] }, { name: "paragraph", groups: ["list", "indent", "blocks", "align", "bidi"] }, { name: "links" }, { name: "insert" }, "/", { name: "styles" }, { name: "colors" }, { name: "tools" }, { name: "others" }, { name: "about" }]);
        }var g = function () {
          this.toolbars = [];this.focusCommandExecuted = !1;
        };g.prototype.focus = function () {
          for (var a = 0, c; c = this.toolbars[a++];) for (var g = 0, h; h = c.items[g++];) if (h.focus) {
            h.focus();return;
          }
        };var a = { modes: { wysiwyg: 1, source: 1 }, readOnly: 1, exec: function (a) {
            a.toolbox && (a.toolbox.focusCommandExecuted = !0, CKEDITOR.env.ie || CKEDITOR.env.air ? setTimeout(function () {
              a.toolbox.focus();
            }, 100) : a.toolbox.focus());
          } };CKEDITOR.plugins.add("toolbar", { requires: "button", init: function (e) {
            var h,
                l = function (a, b) {
              var d,
                  c = "rtl" == e.lang.dir,
                  g = e.config.toolbarGroupCycling,
                  w = c ? 37 : 39,
                  c = c ? 39 : 37,
                  g = void 0 === g || g;switch (b) {case 9:case CKEDITOR.SHIFT + 9:
                  for (; !d || !d.items.length;) if (d = 9 == b ? (d ? d.next : a.toolbar.next) || e.toolbox.toolbars[0] : (d ? d.previous : a.toolbar.previous) || e.toolbox.toolbars[e.toolbox.toolbars.length - 1], d.items.length) for (a = d.items[h ? d.items.length - 1 : 0]; a && !a.focus;) (a = h ? a.previous : a.next) || (d = 0);a && a.focus();return !1;case w:
                  d = a;do d = d.next, !d && g && (d = a.toolbar.items[0]); while (d && !d.focus);d ? d.focus() : l(a, 9);return !1;case 40:
                  return a.button && a.button.hasArrow ? a.execute() : l(a, 40 == b ? w : c), !1;case c:case 38:
                  d = a;do d = d.previous, !d && g && (d = a.toolbar.items[a.toolbar.items.length - 1]); while (d && !d.focus);d ? d.focus() : (h = 1, l(a, CKEDITOR.SHIFT + 9), h = 0);return !1;case 27:
                  return e.focus(), !1;case 13:case 32:
                  return a.execute(), !1;}return !0;
            };e.on("uiSpace", function (a) {
              if (a.data.space == e.config.toolbarLocation) {
                a.removeListener();e.toolbox = new g();var b = CKEDITOR.tools.getNextId(),
                    d = ['\x3cspan id\x3d"', b, '" class\x3d"cke_voice_label"\x3e', e.lang.toolbar.toolbars, "\x3c/span\x3e", '\x3cspan id\x3d"' + e.ui.spaceId("toolbox") + '" class\x3d"cke_toolbox" role\x3d"group" aria-labelledby\x3d"', b, '" onmousedown\x3d"return false;"\x3e'],
                    b = !1 !== e.config.toolbarStartupExpanded,
                    f,
                    h;e.config.toolbarCanCollapse && e.elementMode != CKEDITOR.ELEMENT_MODE_INLINE && d.push('\x3cspan class\x3d"cke_toolbox_main"' + (b ? "\x3e" : ' style\x3d"display:none"\x3e'));for (var k = e.toolbox.toolbars, y = c(e), r = y.length, t = 0; t < r; t++) {
                  var v,
                      B = 0,
                      n,
                      x = y[t],
                      q = "/" !== x && ("/" === y[t + 1] || t == r - 1),
                      u;if (x) if (f && (d.push("\x3c/span\x3e"), h = f = 0), "/" === x) d.push('\x3cspan class\x3d"cke_toolbar_break"\x3e\x3c/span\x3e');else {
                    u = x.items || x;for (var z = 0; z < u.length; z++) {
                      var A = u[z],
                          C;if (A) {
                        var D = function (a) {
                          a = a.render(e, d);E = B.items.push(a) - 1;0 < E && (a.previous = B.items[E - 1], a.previous.next = a);a.toolbar = B;a.onkey = l;a.onfocus = function () {
                            e.toolbox.focusCommandExecuted || e.focus();
                          };
                        };if (A.type == CKEDITOR.UI_SEPARATOR) h = f && A;else {
                          C = !1 !== A.canGroup;if (!B) {
                            v = CKEDITOR.tools.getNextId();B = { id: v, items: [] };n = x.name && (e.lang.toolbar.toolbarGroups[x.name] || x.name);d.push('\x3cspan id\x3d"', v, '" class\x3d"cke_toolbar' + (q ? ' cke_toolbar_last"' : '"'), n ? ' aria-labelledby\x3d"' + v + '_label"' : "", ' role\x3d"toolbar"\x3e');n && d.push('\x3cspan id\x3d"', v, '_label" class\x3d"cke_voice_label"\x3e', n, "\x3c/span\x3e");d.push('\x3cspan class\x3d"cke_toolbar_start"\x3e\x3c/span\x3e');var E = k.push(B) - 1;0 < E && (B.previous = k[E - 1], B.previous.next = B);
                          }C ? f || (d.push('\x3cspan class\x3d"cke_toolgroup" role\x3d"presentation"\x3e'), f = 1) : f && (d.push("\x3c/span\x3e"), f = 0);h && (D(h), h = 0);D(A);
                        }
                      }
                    }f && (d.push("\x3c/span\x3e"), h = f = 0);B && d.push('\x3cspan class\x3d"cke_toolbar_end"\x3e\x3c/span\x3e\x3c/span\x3e');
                  }
                }e.config.toolbarCanCollapse && d.push("\x3c/span\x3e");if (e.config.toolbarCanCollapse && e.elementMode != CKEDITOR.ELEMENT_MODE_INLINE) {
                  var G = CKEDITOR.tools.addFunction(function () {
                    e.execCommand("toolbarCollapse");
                  });
                  e.on("destroy", function () {
                    CKEDITOR.tools.removeFunction(G);
                  });e.addCommand("toolbarCollapse", { readOnly: 1, exec: function (a) {
                      var b = a.ui.space("toolbar_collapser"),
                          d = b.getPrevious(),
                          c = a.ui.space("contents"),
                          f = d.getParent(),
                          e = parseInt(c.$.style.height, 10),
                          g = f.$.offsetHeight,
                          h = b.hasClass("cke_toolbox_collapser_min");h ? (d.show(), b.removeClass("cke_toolbox_collapser_min"), b.setAttribute("title", a.lang.toolbar.toolbarCollapse)) : (d.hide(), b.addClass("cke_toolbox_collapser_min"), b.setAttribute("title", a.lang.toolbar.toolbarExpand));
                      b.getFirst().setText(h ? "▲" : "◀");c.setStyle("height", e - (f.$.offsetHeight - g) + "px");a.fire("resize", { outerHeight: a.container.$.offsetHeight, contentsHeight: c.$.offsetHeight, outerWidth: a.container.$.offsetWidth });
                    }, modes: { wysiwyg: 1, source: 1 } });e.setKeystroke(CKEDITOR.ALT + (CKEDITOR.env.ie || CKEDITOR.env.webkit ? 189 : 109), "toolbarCollapse");d.push('\x3ca title\x3d"' + (b ? e.lang.toolbar.toolbarCollapse : e.lang.toolbar.toolbarExpand) + '" id\x3d"' + e.ui.spaceId("toolbar_collapser") + '" tabIndex\x3d"-1" class\x3d"cke_toolbox_collapser');
                  b || d.push(" cke_toolbox_collapser_min");d.push('" onclick\x3d"CKEDITOR.tools.callFunction(' + G + ')"\x3e', '\x3cspan class\x3d"cke_arrow"\x3e\x26#9650;\x3c/span\x3e', "\x3c/a\x3e");
                }d.push("\x3c/span\x3e");a.data.html += d.join("");
              }
            });e.on("destroy", function () {
              if (this.toolbox) {
                var a,
                    b = 0,
                    d,
                    c,
                    e;for (a = this.toolbox.toolbars; b < a.length; b++) for (c = a[b].items, d = 0; d < c.length; d++) e = c[d], e.clickFn && CKEDITOR.tools.removeFunction(e.clickFn), e.keyDownFn && CKEDITOR.tools.removeFunction(e.keyDownFn);
              }
            });e.on("uiReady", function () {
              var a = e.ui.space("toolbox");a && e.focusManager.add(a, 1);
            });e.addCommand("toolbarFocus", a);e.setKeystroke(CKEDITOR.ALT + 121, "toolbarFocus");e.ui.add("-", CKEDITOR.UI_SEPARATOR, {});e.ui.addHandler(CKEDITOR.UI_SEPARATOR, { create: function () {
                return { render: function (a, b) {
                    b.push('\x3cspan class\x3d"cke_toolbar_separator" role\x3d"separator"\x3e\x3c/span\x3e');return {};
                  } };
              } });
          } });CKEDITOR.ui.prototype.addToolbarGroup = function (a, c, g) {
          var m = h(this.editor),
              b = 0 === c;if (g) {
            if (g = CKEDITOR.tools.search(m, function (a) {
              return a.name == g;
            })) {
              !g.groups && (g.groups = []);if (c && (c = CKEDITOR.tools.indexOf(g.groups, c), 0 <= c)) {
                g.groups.splice(c + 1, 0, a);return;
              }b ? g.groups.splice(0, 0, a) : g.groups.push(a);return;
            }c = null;
          }c && (c = CKEDITOR.tools.indexOf(m, function (a) {
            return a.name == c;
          }));b ? m.splice(0, 0, a) : "number" == typeof c ? m.splice(c + 1, 0, { name: a }) : m.push(a);
        };
      }(), CKEDITOR.UI_SEPARATOR = "separator", CKEDITOR.config.toolbarLocation = "top", "use strict", function () {
        function c(a, b, d) {
          b.type || (b.type = "auto");if (d && !1 === a.fire("beforePaste", b) || !b.dataValue && b.dataTransfer.isEmpty()) return !1;
          b.dataValue || (b.dataValue = "");if (CKEDITOR.env.gecko && "drop" == b.method && a.toolbox) a.once("afterPaste", function () {
            a.toolbox.focus();
          });return a.fire("paste", b);
        }function h(a) {
          function b() {
            var d = a.editable();if (CKEDITOR.plugins.clipboard.isCustomCopyCutSupported) {
              var c = function (b) {
                a.getSelection().isCollapsed() || (a.readOnly && "cut" == b.name || C.initPasteDataTransfer(b, a), b.data.preventDefault());
              };d.on("copy", c);d.on("cut", c);d.on("cut", function () {
                a.readOnly || a.extractSelectedHtml();
              }, null, null, 999);
            }d.on(C.mainPasteEvent, function (a) {
              "beforepaste" == C.mainPasteEvent && D || u(a);
            });"beforepaste" == C.mainPasteEvent && (d.on("paste", function (a) {
              E || (g(), a.data.preventDefault(), u(a), k("paste"));
            }), d.on("contextmenu", h, null, null, 0), d.on("beforepaste", function (a) {
              !a.data || a.data.$.ctrlKey || a.data.$.shiftKey || h();
            }, null, null, 0));d.on("beforecut", function () {
              !D && l(a);
            });var e;d.attachListener(CKEDITOR.env.ie ? d : a.document.getDocumentElement(), "mouseup", function () {
              e = setTimeout(z, 0);
            });a.on("destroy", function () {
              clearTimeout(e);
            });d.on("keyup", z);
          }function d(b) {
            return { type: b, canUndo: "cut" == b, startDisabled: !0, fakeKeystroke: "cut" == b ? CKEDITOR.CTRL + 88 : CKEDITOR.CTRL + 67, exec: function () {
                "cut" == this.type && l();var b;var d = this.type;if (CKEDITOR.env.ie) b = k(d);else try {
                  b = a.document.$.execCommand(d, !1, null);
                } catch (c) {
                  b = !1;
                }b || a.showNotification(a.lang.clipboard[this.type + "Error"]);return b;
              } };
          }function e() {
            return { canUndo: !1, async: !0, fakeKeystroke: CKEDITOR.CTRL + 86, exec: function (a, b) {
                function d(b, g) {
                  g = "undefined" !== typeof g ? g : !0;b ? (b.method = "paste", b.dataTransfer || (b.dataTransfer = C.initPasteDataTransfer()), c(a, b, g)) : e && !a._.forcePasteDialog && a.showNotification(k, "info", a.config.clipboard_notificationDuration);a._.forcePasteDialog = !1;a.fire("afterCommandExec", { name: "paste", command: f, returnValue: !!b });
                }b = "undefined" !== typeof b && null !== b ? b : {};var f = this,
                    e = "undefined" !== typeof b.notification ? b.notification : !0,
                    g = b.type,
                    h = CKEDITOR.tools.keystrokeToString(a.lang.common.keyboard, a.getCommandKeystroke(this)),
                    k = "string" === typeof e ? e : a.lang.clipboard.pasteNotification.replace(/%1/, '\x3ckbd aria-label\x3d"' + h.aria + '"\x3e' + h.display + "\x3c/kbd\x3e"),
                    h = "string" === typeof b ? b : b.dataValue;g && !0 !== a.config.forcePasteAsPlainText && "allow-word" !== a.config.forcePasteAsPlainText ? a._.nextPasteType = g : delete a._.nextPasteType;"string" === typeof h ? d({ dataValue: h }) : a.getClipboardData(d);
              } };
          }function g() {
            E = 1;setTimeout(function () {
              E = 0;
            }, 100);
          }function h() {
            D = 1;setTimeout(function () {
              D = 0;
            }, 10);
          }function k(b) {
            var d = a.document,
                c = d.getBody(),
                e = !1,
                g = function () {
              e = !0;
            };c.on(b, g);7 < CKEDITOR.env.version ? d.$.execCommand(b) : d.$.selection.createRange().execCommand(b);c.removeListener(b, g);return e;
          }function l() {
            if (CKEDITOR.env.ie && !CKEDITOR.env.quirks) {
              var b = a.getSelection(),
                  d,
                  c,
                  e;b.getType() == CKEDITOR.SELECTION_ELEMENT && (d = b.getSelectedElement()) && (c = b.getRanges()[0], e = a.document.createText(""), e.insertBefore(d), c.setStartBefore(e), c.setEndAfter(d), b.selectRanges([c]), setTimeout(function () {
                d.getParent() && (e.remove(), b.selectElement(d));
              }, 0));
            }
          }function m(b, d) {
            var c = a.document,
                e = a.editable(),
                g = function (a) {
              a.cancel();
            },
                h;
            if (!c.getById("cke_pastebin")) {
              var k = a.getSelection(),
                  l = k.createBookmarks();CKEDITOR.env.ie && k.root.fire("selectionchange");var n = new CKEDITOR.dom.element(!CKEDITOR.env.webkit && !e.is("body") || CKEDITOR.env.ie ? "div" : "body", c);n.setAttributes({ id: "cke_pastebin", "data-cke-temp": "1" });var p = 0,
                  c = c.getWindow();CKEDITOR.env.webkit ? (e.append(n), n.addClass("cke_editable"), e.is("body") || (p = "static" != e.getComputedStyle("position") ? e : CKEDITOR.dom.element.get(e.$.offsetParent), p = p.getDocumentPosition().y)) : e.getAscendant(CKEDITOR.env.ie ? "body" : "html", 1).append(n);n.setStyles({ position: "absolute", top: c.getScrollPosition().y - p + 10 + "px", width: "1px", height: Math.max(1, c.getViewPaneSize().height - 20) + "px", overflow: "hidden", margin: 0, padding: 0 });CKEDITOR.env.safari && n.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select", "text"));(p = n.getParent().isReadOnly()) ? (n.setOpacity(0), n.setAttribute("contenteditable", !0)) : n.setStyle("ltr" == a.config.contentsLangDirection ? "left" : "right", "-10000px");a.on("selectionChange", g, null, null, 0);if (CKEDITOR.env.webkit || CKEDITOR.env.gecko) h = e.once("blur", g, null, null, -100);p && n.focus();p = new CKEDITOR.dom.range(n);p.selectNodeContents(n);var q = p.select();CKEDITOR.env.ie && (h = e.once("blur", function () {
                a.lockSelection(q);
              }));var u = CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function () {
                CKEDITOR.env.webkit && (CKEDITOR.document.getBody().$.scrollTop = u);h && h.removeListener();CKEDITOR.env.ie && e.focus();k.selectBookmarks(l);n.remove();var b;CKEDITOR.env.webkit && (b = n.getFirst()) && b.is && b.hasClass("Apple-style-span") && (n = b);a.removeListener("selectionChange", g);d(n.getHtml());
              }, 0);
            }
          }function x() {
            if ("paste" == C.mainPasteEvent) return a.fire("beforePaste", { type: "auto", method: "paste" }), !1;a.focus();g();var b = a.focusManager;b.lock();if (a.editable().fire(C.mainPasteEvent) && !k("paste")) return b.unlock(), !1;b.unlock();return !0;
          }function q(b) {
            if ("wysiwyg" == a.mode) switch (b.data.keyCode) {case CKEDITOR.CTRL + 86:case CKEDITOR.SHIFT + 45:
                b = a.editable();g();"paste" == C.mainPasteEvent && b.fire("beforepaste");break;case CKEDITOR.CTRL + 88:case CKEDITOR.SHIFT + 46:
                a.fire("saveSnapshot"), setTimeout(function () {
                  a.fire("saveSnapshot");
                }, 50);}
          }function u(b) {
            var d = { type: "auto", method: "paste", dataTransfer: C.initPasteDataTransfer(b) };d.dataTransfer.cacheData();var e = !1 !== a.fire("beforePaste", d);e && C.canClipboardApiBeTrusted(d.dataTransfer, a) ? (b.data.preventDefault(), setTimeout(function () {
              c(a, d);
            }, 0)) : m(b, function (b) {
              d.dataValue = b.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig, "");e && c(a, d);
            });
          }function z() {
            if ("wysiwyg" == a.mode) {
              var b = A("paste");a.getCommand("cut").setState(A("cut"));
              a.getCommand("copy").setState(A("copy"));a.getCommand("paste").setState(b);a.fire("pasteState", b);
            }
          }function A(b) {
            var d = a.getSelection(),
                d = d && d.getRanges()[0];if ((a.readOnly || d && d.checkReadOnly()) && b in { paste: 1, cut: 1 }) return CKEDITOR.TRISTATE_DISABLED;if ("paste" == b) return CKEDITOR.TRISTATE_OFF;b = a.getSelection();d = b.getRanges();return b.getType() == CKEDITOR.SELECTION_NONE || 1 == d.length && d[0].collapsed ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF;
          }var C = CKEDITOR.plugins.clipboard,
              D = 0,
              E = 0;(function () {
            a.on("key", q);a.on("contentDom", b);a.on("selectionChange", z);if (a.contextMenu) {
              a.contextMenu.addListener(function () {
                return { cut: A("cut"), copy: A("copy"), paste: A("paste") };
              });var d = null;a.on("menuShow", function () {
                d && (d.removeListener(), d = null);var b = a.contextMenu.findItemByCommandName("paste");b && b.element && (d = b.element.on("touchend", function () {
                  a._.forcePasteDialog = !0;
                }));
              });
            }if (a.ui.addButton) a.once("instanceReady", function () {
              a._.pasteButtons && CKEDITOR.tools.array.forEach(a._.pasteButtons, function (b) {
                if (b = a.ui.get(b)) if (b = CKEDITOR.document.getById(b._.id)) b.on("touchend", function () {
                  a._.forcePasteDialog = !0;
                });
              });
            });
          })();(function () {
            function b(d, c, e, g, h) {
              var k = a.lang.clipboard[c];a.addCommand(c, e);a.ui.addButton && a.ui.addButton(d, { label: k, command: c, toolbar: "clipboard," + g });a.addMenuItems && a.addMenuItem(c, { label: k, command: c, group: "clipboard", order: h });
            }b("Cut", "cut", d("cut"), 10, 1);b("Copy", "copy", d("copy"), 20, 4);b("Paste", "paste", e(), 30, 8);a._.pasteButtons || (a._.pasteButtons = []);a._.pasteButtons.push("Paste");
          })();a.getClipboardData = function (b, d) {
            function c(a) {
              a.removeListener();a.cancel();d(a.data);
            }function e(a) {
              a.removeListener();a.cancel();d({ type: h, dataValue: a.data.dataValue, dataTransfer: a.data.dataTransfer, method: "paste" });
            }var g = !1,
                h = "auto";d || (d = b, b = null);a.on("beforePaste", function (a) {
              a.removeListener();g = !0;h = a.data.type;
            }, null, null, 1E3);a.on("paste", c, null, null, 0);!1 === x() && (a.removeListener("paste", c), a._.forcePasteDialog && g && a.fire("pasteDialog") ? (a.on("pasteDialogCommit", e), a.on("dialogHide", function (a) {
              a.removeListener();
              a.data.removeListener("pasteDialogCommit", e);a.data._.committed || d(null);
            })) : d(null));
          };
        }function g(a) {
          if (CKEDITOR.env.webkit) {
            if (!a.match(/^[^<]*$/g) && !a.match(/^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi)) return "html";
          } else if (CKEDITOR.env.ie) {
            if (!a.match(/^([^<]|<br( ?\/)?>)*$/gi) && !a.match(/^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi)) return "html";
          } else if (CKEDITOR.env.gecko) {
            if (!a.match(/^([^<]|<br( ?\/)?>)*$/gi)) return "html";
          } else return "html";return "htmlifiedtext";
        }function a(a, b) {
          function d(a) {
            return CKEDITOR.tools.repeat("\x3c/p\x3e\x3cp\x3e", ~~(a / 2)) + (1 == a % 2 ? "\x3cbr\x3e" : "");
          }b = b.replace(/(?!\u3000)\s+/g, " ").replace(/> +</g, "\x3e\x3c").replace(/<br ?\/>/gi, "\x3cbr\x3e");b = b.replace(/<\/?[A-Z]+>/g, function (a) {
            return a.toLowerCase();
          });if (b.match(/^[^<]$/)) return b;CKEDITOR.env.webkit && -1 < b.indexOf("\x3cdiv\x3e") && (b = b.replace(/^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g, "\x3cbr\x3e").replace(/^(<div>(<br>|)<\/div>){2}(?!$)/g, "\x3cdiv\x3e\x3c/div\x3e"), b.match(/<div>(<br>|)<\/div>/) && (b = "\x3cp\x3e" + b.replace(/(<div>(<br>|)<\/div>)+/g, function (a) {
            return d(a.split("\x3c/div\x3e\x3cdiv\x3e").length + 1);
          }) + "\x3c/p\x3e"), b = b.replace(/<\/div><div>/g, "\x3cbr\x3e"), b = b.replace(/<\/?div>/g, ""));CKEDITOR.env.gecko && a.enterMode != CKEDITOR.ENTER_BR && (CKEDITOR.env.gecko && (b = b.replace(/^<br><br>$/, "\x3cbr\x3e")), -1 < b.indexOf("\x3cbr\x3e\x3cbr\x3e") && (b = "\x3cp\x3e" + b.replace(/(<br>){2,}/g, function (a) {
            return d(a.length / 4);
          }) + "\x3c/p\x3e"));return l(a, b);
        }function e(a) {
          function b() {
            var a = {},
                d;for (d in CKEDITOR.dtd) "$" != d.charAt(0) && "div" != d && "span" != d && (a[d] = 1);return a;
          }var d = {};return { get: function (c) {
              return "plain-text" == c ? d.plainText || (d.plainText = new CKEDITOR.filter(a, "br")) : "semantic-content" == c ? ((c = d.semanticContent) || (c = new CKEDITOR.filter(a, {}), c.allow({ $1: { elements: b(), attributes: !0, styles: !1, classes: !1 } }), c = d.semanticContent = c), c) : c ? new CKEDITOR.filter(a, c) : null;
            } };
        }function k(a, b, d) {
          b = CKEDITOR.htmlParser.fragment.fromHtml(b);var c = new CKEDITOR.htmlParser.basicWriter();d.applyTo(b, !0, !1, a.activeEnterMode);b.writeHtml(c);return c.getHtml();
        }
        function l(a, b) {
          a.enterMode == CKEDITOR.ENTER_BR ? b = b.replace(/(<\/p><p>)+/g, function (a) {
            return CKEDITOR.tools.repeat("\x3cbr\x3e", a.length / 7 * 2);
          }).replace(/<\/?p>/g, "") : a.enterMode == CKEDITOR.ENTER_DIV && (b = b.replace(/<(\/)?p>/g, "\x3c$1div\x3e"));return b;
        }function m(a) {
          a.data.preventDefault();a.data.$.dataTransfer.dropEffect = "none";
        }function b(a) {
          var b = CKEDITOR.plugins.clipboard;a.on("contentDom", function () {
            function d(b, e, g) {
              e.select();c(a, { dataTransfer: g, method: "drop" }, 1);g.sourceEditor.fire("saveSnapshot");
              g.sourceEditor.editable().extractHtmlFromRange(b);g.sourceEditor.getSelection().selectRanges([b]);g.sourceEditor.fire("saveSnapshot");
            }function e(d, g) {
              d.select();c(a, { dataTransfer: g, method: "drop" }, 1);b.resetDragDataTransfer();
            }function g(b, d, c) {
              var e = { $: b.data.$, target: b.data.getTarget() };d && (e.dragRange = d);c && (e.dropRange = c);!1 === a.fire(b.name, e) && b.data.preventDefault();
            }function h(a) {
              a.type != CKEDITOR.NODE_ELEMENT && (a = a.getParent());return a.getChildCount();
            }var k = a.editable(),
                l = CKEDITOR.plugins.clipboard.getDropTarget(a),
                m = a.ui.space("top"),
                x = a.ui.space("bottom");b.preventDefaultDropOnElement(m);b.preventDefaultDropOnElement(x);k.attachListener(l, "dragstart", g);k.attachListener(a, "dragstart", b.resetDragDataTransfer, b, null, 1);k.attachListener(a, "dragstart", function (d) {
              b.initDragDataTransfer(d, a);
            }, null, null, 2);k.attachListener(a, "dragstart", function () {
              var d = b.dragRange = a.getSelection().getRanges()[0];CKEDITOR.env.ie && 10 > CKEDITOR.env.version && (b.dragStartContainerChildCount = d ? h(d.startContainer) : null, b.dragEndContainerChildCount = d ? h(d.endContainer) : null);
            }, null, null, 100);k.attachListener(l, "dragend", g);k.attachListener(a, "dragend", b.initDragDataTransfer, b, null, 1);k.attachListener(a, "dragend", b.resetDragDataTransfer, b, null, 100);k.attachListener(l, "dragover", function (a) {
              if (CKEDITOR.env.edge) a.data.preventDefault();else {
                var b = a.data.getTarget();b && b.is && b.is("html") ? a.data.preventDefault() : CKEDITOR.env.ie && CKEDITOR.plugins.clipboard.isFileApiSupported && a.data.$.dataTransfer.types.contains("Files") && a.data.preventDefault();
              }
            });
            k.attachListener(l, "drop", function (d) {
              if (!d.data.$.defaultPrevented && (d.data.preventDefault(), !a.readOnly)) {
                var c = d.data.getTarget();if (!c.isReadOnly() || c.type == CKEDITOR.NODE_ELEMENT && c.is("html")) {
                  var c = b.getRangeAtDropPosition(d, a),
                      e = b.dragRange;c && g(d, e, c);
                }
              }
            }, null, null, 9999);k.attachListener(a, "drop", b.initDragDataTransfer, b, null, 1);k.attachListener(a, "drop", function (c) {
              if (c = c.data) {
                var g = c.dropRange,
                    h = c.dragRange,
                    k = c.dataTransfer;k.getTransferType(a) == CKEDITOR.DATA_TRANSFER_INTERNAL ? setTimeout(function () {
                  b.internalDrop(h, g, k, a);
                }, 0) : k.getTransferType(a) == CKEDITOR.DATA_TRANSFER_CROSS_EDITORS ? d(h, g, k) : e(g, k);
              }
            }, null, null, 9999);
          });
        }var d;CKEDITOR.plugins.add("clipboard", { requires: "dialog,notification,toolbar", init: function (d) {
            function c(a) {
              a = CKEDITOR.tools.array.map(a, function (a) {
                return a.split("/")[1].toUpperCase();
              }).join(", ");return d.lang.clipboard.fileFormatNotSupportedNotification.replace(/\${formats\}/g, a);
            }function l(a, b) {
              return CKEDITOR.env.ie && a.data.fileTransferCancel || !(CKEDITOR.env.ie || b && B !== b.id) ? !1 : b.isFileTransfer() && 1 === b.getFilesCount();
            }var m,
                r = e(d);d.config.forcePasteAsPlainText ? m = "plain-text" : d.config.pasteFilter ? m = d.config.pasteFilter : !CKEDITOR.env.webkit || "pasteFilter" in d.config || (m = "semantic-content");d.pasteFilter = r.get(m);h(d);b(d);CKEDITOR.dialog.add("paste", CKEDITOR.getUrl(this.path + "dialogs/paste.js"));if ((CKEDITOR.plugins.clipboard.isCustomDataTypesSupported || CKEDITOR.plugins.clipboard.isFileApiSupported) && d.config.clipboard_handleImages) {
              var t = ["image/png", "image/jpeg", "image/gif"],
                  v = c(t),
                  B;d.on("paste", function (a) {
                var b = a.data,
                    c = b.dataTransfer;if (!b.dataValue && l(a, c)) if (c = c.getFile(0), -1 === CKEDITOR.tools.indexOf(t, c.type)) d.showNotification(v, "info", d.config.clipboard_notificationDuration);else {
                  var e = new FileReader();e.addEventListener("load", function () {
                    a.data.dataValue = '\x3cimg src\x3d"' + e.result + '" /\x3e';d.fire("paste", a.data);
                  }, !1);e.addEventListener("abort", function () {
                    CKEDITOR.env.ie && (a.data.fileTransferCancel = !0);d.fire("paste", a.data);
                  }, !1);e.addEventListener("error", function () {
                    CKEDITOR.env.ie && (a.data.fileTransferCancel = !0);d.fire("paste", a.data);
                  }, !1);e.readAsDataURL(c);B = b.dataTransfer.id;a.stop();
                }
              }, null, null, 1);
            }d.on("paste", function (a) {
              a.data.dataTransfer || (a.data.dataTransfer = new CKEDITOR.plugins.clipboard.dataTransfer());if (!a.data.dataValue) {
                var b = a.data.dataTransfer,
                    c = b.getData("text/html");if (c) a.data.dataValue = c, a.data.type = "html";else if (c = b.getData("text/plain")) a.data.dataValue = d.editable().transformPlainTextToHtml(c), a.data.type = "text";
              }
            }, null, null, 1);d.on("paste", function (a) {
              var b = a.data.dataValue,
                  d = CKEDITOR.dtd.$block;-1 < b.indexOf("Apple-") && (b = b.replace(/<span class="Apple-converted-space">&nbsp;<\/span>/gi, " "), "html" != a.data.type && (b = b.replace(/<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi, function (a, b) {
                return b.replace(/\t/g, "\x26nbsp;\x26nbsp; \x26nbsp;");
              })), -1 < b.indexOf('\x3cbr class\x3d"Apple-interchange-newline"\x3e') && (a.data.startsWithEOL = 1, a.data.preSniffing = "html", b = b.replace(/<br class="Apple-interchange-newline">/, "")), b = b.replace(/(<[^>]+) class="Apple-[^"]*"/gi, "$1"));if (b.match(/^<[^<]+cke_(editable|contents)/i)) {
                var c,
                    f,
                    e = new CKEDITOR.dom.element("div");for (e.setHtml(b); 1 == e.getChildCount() && (c = e.getFirst()) && c.type == CKEDITOR.NODE_ELEMENT && (c.hasClass("cke_editable") || c.hasClass("cke_contents"));) e = f = c;f && (b = f.getHtml().replace(/<br>$/i, ""));
              }CKEDITOR.env.ie ? b = b.replace(/^&nbsp;(?: |\r\n)?<(\w+)/g, function (b, c) {
                return c.toLowerCase() in d ? (a.data.preSniffing = "html", "\x3c" + c) : b;
              }) : CKEDITOR.env.webkit ? b = b.replace(/<\/(\w+)><div><br><\/div>$/, function (b, c) {
                return c in d ? (a.data.endsWithEOL = 1, "\x3c/" + c + "\x3e") : b;
              }) : CKEDITOR.env.gecko && (b = b.replace(/(\s)<br>$/, "$1"));a.data.dataValue = b;
            }, null, null, 3);d.on("paste", function (b) {
              b = b.data;var c = d._.nextPasteType || b.type,
                  e = b.dataValue,
                  h,
                  l = d.config.clipboard_defaultContentType || "html",
                  m = b.dataTransfer.getTransferType(d) == CKEDITOR.DATA_TRANSFER_EXTERNAL,
                  p = !0 === d.config.forcePasteAsPlainText;h = "html" == c || "html" == b.preSniffing ? "html" : g(e);delete d._.nextPasteType;"htmlifiedtext" == h && (e = a(d.config, e));if ("text" == c && "html" == h) e = k(d, e, r.get("plain-text"));else if (m && d.pasteFilter && !b.dontFilter || p) e = k(d, e, d.pasteFilter);b.startsWithEOL && (e = '\x3cbr data-cke-eol\x3d"1"\x3e' + e);b.endsWithEOL && (e += '\x3cbr data-cke-eol\x3d"1"\x3e');"auto" == c && (c = "html" == h || "html" == l ? "html" : "text");b.type = c;b.dataValue = e;delete b.preSniffing;delete b.startsWithEOL;delete b.endsWithEOL;
            }, null, null, 6);d.on("paste", function (a) {
              a = a.data;a.dataValue && (d.insertHtml(a.dataValue, a.type, a.range), setTimeout(function () {
                d.fire("afterPaste");
              }, 0));
            }, null, null, 1E3);d.on("pasteDialog", function (a) {
              setTimeout(function () {
                d.openDialog("paste", a.data);
              }, 0);
            });
          } });CKEDITOR.plugins.clipboard = { isCustomCopyCutSupported: CKEDITOR.env.ie && 16 > CKEDITOR.env.version || CKEDITOR.env.iOS && 605 > CKEDITOR.env.version ? !1 : !0, isCustomDataTypesSupported: !CKEDITOR.env.ie || 16 <= CKEDITOR.env.version, isFileApiSupported: !CKEDITOR.env.ie || 9 < CKEDITOR.env.version, mainPasteEvent: CKEDITOR.env.ie && !CKEDITOR.env.edge ? "beforepaste" : "paste", addPasteButton: function (a, b, d) {
            a.ui.addButton && (a.ui.addButton(b, d), a._.pasteButtons || (a._.pasteButtons = []), a._.pasteButtons.push(b));
          }, canClipboardApiBeTrusted: function (a, b) {
            return a.getTransferType(b) != CKEDITOR.DATA_TRANSFER_EXTERNAL || CKEDITOR.env.chrome && !a.isEmpty() || CKEDITOR.env.gecko && (a.getData("text/html") || a.getFilesCount()) || CKEDITOR.env.safari && 603 <= CKEDITOR.env.version && !CKEDITOR.env.iOS || CKEDITOR.env.iOS && 605 <= CKEDITOR.env.version || CKEDITOR.env.edge && 16 <= CKEDITOR.env.version ? !0 : !1;
          }, getDropTarget: function (a) {
            var b = a.editable();return CKEDITOR.env.ie && 9 > CKEDITOR.env.version || b.isInline() ? b : a.document;
          }, fixSplitNodesAfterDrop: function (a, b, d, c) {
            function e(a, d, c) {
              var f = a;f.type == CKEDITOR.NODE_TEXT && (f = a.getParent());if (f.equals(d) && c != d.getChildCount()) return a = b.startContainer.getChild(b.startOffset - 1), d = b.startContainer.getChild(b.startOffset), a && a.type == CKEDITOR.NODE_TEXT && d && d.type == CKEDITOR.NODE_TEXT && (c = a.getLength(), a.setText(a.getText() + d.getText()), d.remove(), b.setStart(a, c), b.collapse(!0)), !0;
            }var g = b.startContainer;"number" == typeof c && "number" == typeof d && g.type == CKEDITOR.NODE_ELEMENT && (e(a.startContainer, g, d) || e(a.endContainer, g, c));
          }, isDropRangeAffectedByDragRange: function (a, b) {
            var d = b.startContainer,
                c = b.endOffset;return a.endContainer.equals(d) && a.endOffset <= c || a.startContainer.getParent().equals(d) && a.startContainer.getIndex() < c || a.endContainer.getParent().equals(d) && a.endContainer.getIndex() < c ? !0 : !1;
          }, internalDrop: function (a, b, d, e) {
            var g = CKEDITOR.plugins.clipboard,
                h = e.editable(),
                k,
                l;e.fire("saveSnapshot");e.fire("lockSnapshot", { dontUpdate: 1 });
            CKEDITOR.env.ie && 10 > CKEDITOR.env.version && this.fixSplitNodesAfterDrop(a, b, g.dragStartContainerChildCount, g.dragEndContainerChildCount);(l = this.isDropRangeAffectedByDragRange(a, b)) || (k = a.createBookmark(!1));g = b.clone().createBookmark(!1);l && (k = a.createBookmark(!1));a = k.startNode;b = k.endNode;l = g.startNode;b && a.getPosition(l) & CKEDITOR.POSITION_PRECEDING && b.getPosition(l) & CKEDITOR.POSITION_FOLLOWING && l.insertBefore(a);a = e.createRange();a.moveToBookmark(k);h.extractHtmlFromRange(a, 1);b = e.createRange();
            g.startNode.getCommonAncestor(h) || (g = e.getSelection().createBookmarks()[0]);b.moveToBookmark(g);c(e, { dataTransfer: d, method: "drop", range: b }, 1);e.fire("unlockSnapshot");
          }, getRangeAtDropPosition: function (a, b) {
            var d = a.data.$,
                c = d.clientX,
                e = d.clientY,
                g = b.getSelection(!0).getRanges()[0],
                h = b.createRange();if (a.data.testRange) return a.data.testRange;if (document.caretRangeFromPoint && b.document.$.caretRangeFromPoint(c, e)) d = b.document.$.caretRangeFromPoint(c, e), h.setStart(CKEDITOR.dom.node(d.startContainer), d.startOffset), h.collapse(!0);else if (d.rangeParent) h.setStart(CKEDITOR.dom.node(d.rangeParent), d.rangeOffset), h.collapse(!0);else {
              if (CKEDITOR.env.ie && 8 < CKEDITOR.env.version && g && b.editable().hasFocus) return g;if (document.body.createTextRange) {
                b.focus();d = b.document.getBody().$.createTextRange();try {
                  for (var k = !1, l = 0; 20 > l && !k; l++) {
                    if (!k) try {
                      d.moveToPoint(c, e - l), k = !0;
                    } catch (m) {}if (!k) try {
                      d.moveToPoint(c, e + l), k = !0;
                    } catch (q) {}
                  }if (k) {
                    var u = "cke-temp-" + new Date().getTime();d.pasteHTML('\x3cspan id\x3d"' + u + '"\x3e​\x3c/span\x3e');
                    var z = b.document.getById(u);h.moveToPosition(z, CKEDITOR.POSITION_BEFORE_START);z.remove();
                  } else {
                    var A = b.document.$.elementFromPoint(c, e),
                        C = new CKEDITOR.dom.element(A),
                        D;if (C.equals(b.editable()) || "html" == C.getName()) return g && g.startContainer && !g.startContainer.equals(b.editable()) ? g : null;D = C.getClientRect();c < D.left ? h.setStartAt(C, CKEDITOR.POSITION_AFTER_START) : h.setStartAt(C, CKEDITOR.POSITION_BEFORE_END);h.collapse(!0);
                  }
                } catch (E) {
                  return null;
                }
              } else return null;
            }return h;
          }, initDragDataTransfer: function (a, b) {
            var d = a.data.$ ? a.data.$.dataTransfer : null,
                c = new this.dataTransfer(d, b);"dragstart" === a.name && c.storeId();d ? this.dragData && c.id == this.dragData.id ? c = this.dragData : this.dragData = c : this.dragData ? c = this.dragData : this.dragData = c;a.data.dataTransfer = c;
          }, resetDragDataTransfer: function () {
            this.dragData = null;
          }, initPasteDataTransfer: function (a, b) {
            if (this.isCustomCopyCutSupported) {
              if (a && a.data && a.data.$) {
                var d = a.data.$.clipboardData,
                    c = new this.dataTransfer(d, b);"copy" !== a.name && "cut" !== a.name || c.storeId();this.copyCutData && c.id == this.copyCutData.id ? (c = this.copyCutData, c.$ = d) : this.copyCutData = c;return c;
              }return new this.dataTransfer(null, b);
            }return new this.dataTransfer(CKEDITOR.env.edge && a && a.data.$ && a.data.$.clipboardData || null, b);
          }, preventDefaultDropOnElement: function (a) {
            a && a.on("dragover", m);
          } };d = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? "cke/id" : "Text";CKEDITOR.plugins.clipboard.dataTransfer = function (a, b) {
          a && (this.$ = a);this._ = { metaRegExp: /^<meta.*?>/i, fragmentRegExp: /\s*\x3c!--StartFragment--\x3e|\x3c!--EndFragment--\x3e\s*/g,
            types: [], data: {}, files: [], nativeHtmlCache: "", normalizeType: function (a) {
              a = a.toLowerCase();return "text" == a || "text/plain" == a ? "Text" : "url" == a ? "URL" : "files" === a ? "Files" : a;
            } };this._.fallbackDataTransfer = new CKEDITOR.plugins.clipboard.fallbackDataTransfer(this);this.id = this.getData(d);this.id || (this.id = "Text" == d ? "" : "cke-" + CKEDITOR.tools.getUniqueId());b && (this.sourceEditor = b, this.setData("text/html", b.getSelectedHtml(1)), "Text" == d || this.getData("text/plain") || this.setData("text/plain", b.getSelection().getSelectedText()));
        };
        CKEDITOR.DATA_TRANSFER_INTERNAL = 1;CKEDITOR.DATA_TRANSFER_CROSS_EDITORS = 2;CKEDITOR.DATA_TRANSFER_EXTERNAL = 3;CKEDITOR.plugins.clipboard.dataTransfer.prototype = { getData: function (a, b) {
            a = this._.normalizeType(a);var d = "text/html" == a && b ? this._.nativeHtmlCache : this._.data[a];if (void 0 === d || null === d || "" === d) {
              if (this._.fallbackDataTransfer.isRequired()) d = this._.fallbackDataTransfer.getData(a, b);else try {
                d = this.$.getData(a) || "";
              } catch (c) {
                d = "";
              }"text/html" != a || b || (d = this._stripHtml(d));
            }"Text" == a && CKEDITOR.env.gecko && this.getFilesCount() && "file://" == d.substring(0, 7) && (d = "");if ("string" === typeof d) var e = d.indexOf("\x3c/html\x3e"),
                d = -1 !== e ? d.substring(0, e + 7) : d;return d;
          }, setData: function (a, b) {
            a = this._.normalizeType(a);"text/html" == a ? (this._.data[a] = this._stripHtml(b), this._.nativeHtmlCache = b) : this._.data[a] = b;if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported || "URL" == a || "Text" == a) if ("Text" == d && "Text" == a && (this.id = b), this._.fallbackDataTransfer.isRequired()) this._.fallbackDataTransfer.setData(a, b);else try {
              this.$.setData(a, b);
            } catch (c) {}
          }, storeId: function () {
            "Text" !== d && this.setData(d, this.id);
          }, getTransferType: function (a) {
            return this.sourceEditor ? this.sourceEditor == a ? CKEDITOR.DATA_TRANSFER_INTERNAL : CKEDITOR.DATA_TRANSFER_CROSS_EDITORS : CKEDITOR.DATA_TRANSFER_EXTERNAL;
          }, cacheData: function () {
            function a(d) {
              d = b._.normalizeType(d);var c = b.getData(d);"text/html" == d && (b._.nativeHtmlCache = b.getData(d, !0), c = b._stripHtml(c));c && (b._.data[d] = c);b._.types.push(d);
            }if (this.$) {
              var b = this,
                  d,
                  c,
                  e;if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported) {
                if (this.$.types) for (d = 0; d < this.$.types.length; d++) a(this.$.types[d]);
              } else a("Text"), a("URL");c = this._getImageFromClipboard();if ((e = this.$ && this.$.files || null) || c) {
                this._.files = [];if (e && e.length) for (d = 0; d < e.length; d++) this._.files.push(e[d]);0 === this._.files.length && c && this._.files.push(c);
              }
            }
          }, getFilesCount: function () {
            if (this._.files.length) return this._.files.length;var a = this.$ && this.$.files || null;return a && a.length ? a.length : this._getImageFromClipboard() ? 1 : 0;
          }, getFile: function (a) {
            if (this._.files.length) return this._.files[a];
            var b = this.$ && this.$.files || null;return b && b.length ? b[a] : 0 === a ? this._getImageFromClipboard() : void 0;
          }, isFileTransfer: function () {
            var a = this.getTypes(),
                a = CKEDITOR.tools.array.filter(a, function (a) {
              return "application/x-moz-file" !== a;
            });return 1 === a.length && "files" === a[0].toLowerCase();
          }, isEmpty: function () {
            var a = {},
                b;if (this.getFilesCount()) return !1;CKEDITOR.tools.array.forEach(CKEDITOR.tools.object.keys(this._.data), function (b) {
              a[b] = 1;
            });if (this.$) if (CKEDITOR.plugins.clipboard.isCustomDataTypesSupported) {
              if (this.$.types) for (var c = 0; c < this.$.types.length; c++) a[this.$.types[c]] = 1;
            } else a.Text = 1, a.URL = 1;"Text" != d && (a[d] = 0);for (b in a) if (a[b] && "" !== this.getData(b)) return !1;return !0;
          }, getTypes: function () {
            return 0 < this._.types.length ? this._.types : this.$ && this.$.types ? [].slice.call(this.$.types) : [];
          }, _getImageFromClipboard: function () {
            var a;try {
              if (this.$ && this.$.items && this.$.items[0] && (a = this.$.items[0].getAsFile()) && a.type) return a;
            } catch (b) {}
          }, _stripHtml: function (a) {
            function b(a) {
              var d = new CKEDITOR.htmlParser(),
                  c,
                  e;d.onTagOpen = function (a) {
                "body" === a && (c = d._.htmlPartsRegex.lastIndex);
              };d.onTagClose = function (a) {
                "body" === a && (e = d._.htmlPartsRegex.lastIndex);
              };d.parse(a);return "number" !== typeof c || "number" !== typeof e ? a : a.substring(c, e).replace(/<\/body\s*>$/gi, "");
            }a && a.length && (a = b(a), a = a.replace(this._.metaRegExp, ""), a = a.replace(this._.fragmentRegExp, ""));return a;
          } };CKEDITOR.plugins.clipboard.fallbackDataTransfer = function (a) {
          this._dataTransfer = a;this._customDataFallbackType = "text/html";
        };CKEDITOR.plugins.clipboard.fallbackDataTransfer._isCustomMimeTypeSupported = null;CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes = [];CKEDITOR.plugins.clipboard.fallbackDataTransfer.prototype = { isRequired: function () {
            var a = CKEDITOR.plugins.clipboard.fallbackDataTransfer,
                b = this._dataTransfer.$;if (null === a._isCustomMimeTypeSupported) if (b) {
              a._isCustomMimeTypeSupported = !1;if (CKEDITOR.env.edge && 17 <= CKEDITOR.env.version) return !0;try {
                b.setData("cke/mimetypetest", "cke test value"), a._isCustomMimeTypeSupported = "cke test value" === b.getData("cke/mimetypetest"), b.clearData("cke/mimetypetest");
              } catch (d) {}
            } else return !1;
            return !a._isCustomMimeTypeSupported;
          }, getData: function (a, b) {
            var d = this._getData(this._customDataFallbackType, !0);if (b) return d;var d = this._extractDataComment(d),
                c = null,
                c = a === this._customDataFallbackType ? d.content : d.data && d.data[a] ? d.data[a] : this._getData(a, !0);return null !== c ? c : "";
          }, setData: function (a, b) {
            var d = a === this._customDataFallbackType;d && (b = this._applyDataComment(b, this._getFallbackTypeData()));var c = b,
                e = this._dataTransfer.$;try {
              e.setData(a, c), d && (this._dataTransfer._.nativeHtmlCache = c);
            } catch (g) {
              if (this._isUnsupportedMimeTypeError(g)) {
                d = CKEDITOR.plugins.clipboard.fallbackDataTransfer;-1 === CKEDITOR.tools.indexOf(d._customTypes, a) && d._customTypes.push(a);var d = this._getFallbackTypeContent(),
                    h = this._getFallbackTypeData();h[a] = c;try {
                  c = this._applyDataComment(d, h), e.setData(this._customDataFallbackType, c), this._dataTransfer._.nativeHtmlCache = c;
                } catch (k) {
                  c = "";
                }
              }
            }return c;
          }, _getData: function (a, b) {
            var d = this._dataTransfer._.data;if (!b && d[a]) return d[a];try {
              return this._dataTransfer.$.getData(a);
            } catch (c) {
              return null;
            }
          }, _getFallbackTypeContent: function () {
            var a = this._dataTransfer._.data[this._customDataFallbackType];a || (a = this._extractDataComment(this._getData(this._customDataFallbackType, !0)).content);return a;
          }, _getFallbackTypeData: function () {
            var a = CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes,
                b = this._extractDataComment(this._getData(this._customDataFallbackType, !0)).data || {},
                d = this._dataTransfer._.data;CKEDITOR.tools.array.forEach(a, function (a) {
              void 0 !== d[a] ? b[a] = d[a] : void 0 !== b[a] && (b[a] = b[a]);
            }, this);return b;
          }, _isUnsupportedMimeTypeError: function (a) {
            return a.message && -1 !== a.message.search(/element not found/gi);
          }, _extractDataComment: function (a) {
            var b = { data: null, content: a || "" };if (a && 16 < a.length) {
              var d;(d = /\x3c!--cke-data:(.*?)--\x3e/g.exec(a)) && d[1] && (b.data = JSON.parse(decodeURIComponent(d[1])), b.content = a.replace(d[0], ""));
            }return b;
          }, _applyDataComment: function (a, b) {
            var d = "";b && CKEDITOR.tools.object.keys(b).length && (d = "\x3c!--cke-data:" + encodeURIComponent(JSON.stringify(b)) + "--\x3e");return d + (a && a.length ? a : "");
          } };
      }(), CKEDITOR.config.clipboard_notificationDuration = 1E4, CKEDITOR.config.clipboard_handleImages = !0, function () {
        var c = !1;CKEDITOR.plugins.add("codemirror", { _createCodeMirrorEditor: function (c) {
            var a = this;c.addMode("source", function (e) {
              var k = this,
                  l = c.ui.space("contents") || c.ui.contentsElement,
                  m = l.getDocument().createElement("textarea");l.append(m);k.codeMirrorEditor = CodeMirror.fromTextArea(m.$, { lineNumbers: !0, lineWrapping: !0, mode: "text/html" });l = c.getData(1);m = c.editable(new h(c, m));m.setData(l);k.codeMirrorEditor.setValue(l);k.codeMirrorEditor.getWrapperElement().classList.add("cke_enable_context_menu");
              m = m.getParent().getClientSize();m.height && k.codeMirrorEditor.setSize(null, m.height);k.codeMirrorEditor.on("change", a._handleCodeMirrorChange.bind(k, c, l));c.on("resize", a._handleEditorResize.bind(k));c.on("dataReady", function (a) {
                a = a.data;var d = k.codeMirrorEditor.getValue();a && a !== d && k.codeMirrorEditor.setValue(a);
              });c.fire("ariaWidget", this);e();
            });
          }, _handleCodeMirrorChange: function (c, a) {
            var e = this.codeMirrorEditor.getValue();e !== a && c.setData(e);
          }, _handleEditorResize: function (c) {
            this.codeMirrorEditor.setSize(null, c.data.contentsHeight);
          }, hidpi: !0, icons: "source,source-rtl", init: function (g) {
            var a = this;if (!g.plugins.detectConflict("codemirror", ["sourcearea"])) {
              c || (CKEDITOR.document.appendStyleSheet(this.path + "skins/default.css"), CKEDITOR.document.appendStyleSheet(this.path + "vendors/vendors.css"), c = !0);CKEDITOR.scriptLoader.load(this.path + "vendors/vendors.js", function () {
                a._createCodeMirrorEditor(g);
              });g.addCommand("codemirror", CKEDITOR.plugins.codemirror.commands.source);var e = { state: CKEDITOR.TRISTATE_OFF };g.balloonToolbars || (e.modes = { source: 1, wysiwyg: 0 });g.addCommand("codemirrordialog", CKEDITOR.tools.extend(new CKEDITOR.dialogCommand("codemirrordialog"), e));CKEDITOR.dialog.add("codemirrordialog", this.path + "dialogs/codemirrordialog.js");g.ui.addButton && (g.ui.addButton("Source", { label: g.lang.codemirror.source, command: "codemirror", toolbar: "mode,10" }), g.ui.addButton("Expand", { label: g.lang.common.preview, command: "codemirrordialog", toolbar: "mode,11" }));g.on("mode", function () {
                g.getCommand("codemirror").setState("source" === g.mode ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);
              });
            }
          } });var h = CKEDITOR.tools.createClass({ base: CKEDITOR.editable, proto: { setData: function (c) {
              this.setValue(c);this.status = "ready";this.editor.fire("dataReady", c);
            }, getData: function () {
              return this.getValue();
            }, insertHtml: function () {}, insertElement: function () {}, insertText: function () {}, setReadOnly: function (c) {
              this[(c ? "set" : "remove") + "Attribute"]("readOnly", "readonly");
            }, detach: function () {
              h.baseProto.detach.call(this);this.clearCustomData();this.remove();
            } } });
      }(), CKEDITOR.plugins.codemirror = { commands: { source: { modes: { source: 1, wysiwyg: 1 }, editorFocus: !0, exec: function (c) {
              "wysiwyg" === c.mode && c.fire("saveSnapshot");c.getCommand("codemirror").setState(CKEDITOR.TRISTATE_DISABLED);c.setMode("source" === c.mode ? "wysiwyg" : "source");
            }, canUndo: !1 } } }, CKEDITOR.plugins.add("panelbutton", { requires: "button", onLoad: function () {
          function c(c) {
            var g = this._;g.state != CKEDITOR.TRISTATE_DISABLED && (this.createPanel(c), g.on ? g.panel.hide() : g.panel.showBlock(this._.id, this.document.getById(this._.id), 4));
          }CKEDITOR.ui.panelButton = CKEDITOR.tools.createClass({ base: CKEDITOR.ui.button, $: function (h) {
              var g = h.panel || {};delete h.panel;this.base(h);this.document = g.parent && g.parent.getDocument() || CKEDITOR.document;g.block = { attributes: g.attributes };g.toolbarRelated = !0;this.hasArrow = "listbox";this.click = c;this._ = { panelDefinition: g };
            }, statics: { handler: { create: function (c) {
                  return new CKEDITOR.ui.panelButton(c);
                } } }, proto: { createPanel: function (c) {
                var g = this._;if (!g.panel) {
                  var a = this._.panelDefinition,
                      e = this._.panelDefinition.block,
                      k = a.parent || CKEDITOR.document.getBody(),
                      l = this._.panel = new CKEDITOR.ui.floatPanel(c, k, a),
                      a = l.addBlock(g.id, e),
                      m = this,
                      b = c.getCommand(this.command);l.onShow = function () {
                    m.className && this.element.addClass(m.className + "_panel");m.setState(CKEDITOR.TRISTATE_ON);g.on = 1;m.editorFocus && c.focus();if (m.onOpen) m.onOpen();
                  };l.onHide = function (a) {
                    m.className && this.element.getFirst().removeClass(m.className + "_panel");!m.modes && b ? m.setStateFromCommand(b) : m.setState(m.modes && m.modes[c.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);
                    g.on = 0;if (!a && m.onClose) m.onClose();
                  };l.onEscape = function () {
                    l.hide(1);m.document.getById(g.id).focus();
                  };if (this.onBlock) this.onBlock(l, a);a.onHide = function () {
                    g.on = 0;!m.modes && m.command ? m.setStateFromCommand(b) : m.setState(CKEDITOR.TRISTATE_OFF);
                  };
                }
              }, setStateFromCommand: function (c) {
                this.setState(c.state);
              } } });
        }, beforeInit: function (c) {
          c.ui.addHandler(CKEDITOR.UI_PANELBUTTON, CKEDITOR.ui.panelButton.handler);
        } }), CKEDITOR.UI_PANELBUTTON = "panelbutton", function () {
        CKEDITOR.plugins.add("panel", { beforeInit: function (a) {
            a.ui.addHandler(CKEDITOR.UI_PANEL, CKEDITOR.ui.panel.handler);
          } });CKEDITOR.UI_PANEL = "panel";CKEDITOR.ui.panel = function (a, c) {
          c && CKEDITOR.tools.extend(this, c);CKEDITOR.tools.extend(this, { className: "", css: [] });this.id = CKEDITOR.tools.getNextId();this.document = a;this.isFramed = this.forceIFrame || this.css.length;this._ = { blocks: {} };
        };CKEDITOR.ui.panel.handler = { create: function (a) {
            return new CKEDITOR.ui.panel(a);
          } };var c = CKEDITOR.addTemplate("panel", '\x3cdiv lang\x3d"{langCode}" id\x3d"{id}" dir\x3d{dir} class\x3d"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style\x3d"z-index:{z-index}" role\x3d"presentation"\x3e{frame}\x3c/div\x3e'),
            h = CKEDITOR.addTemplate("panel-frame", '\x3ciframe id\x3d"{id}" class\x3d"cke_panel_frame" role\x3d"presentation" frameborder\x3d"0" src\x3d"{src}"\x3e\x3c/iframe\x3e'),
            g = CKEDITOR.addTemplate("panel-frame-inner", '\x3c!DOCTYPE html\x3e\x3chtml class\x3d"cke_panel_container {env}" dir\x3d"{dir}" lang\x3d"{langCode}"\x3e\x3chead\x3e{css}\x3c/head\x3e\x3cbody class\x3d"cke_{dir}" style\x3d"margin:0;padding:0" onload\x3d"{onload}"\x3e\x3c/body\x3e\x3c/html\x3e');CKEDITOR.ui.panel.prototype = { render: function (a, e) {
            var k = { editorId: a.id, id: this.id, langCode: a.langCode, dir: a.lang.dir, cls: this.className, frame: "", env: CKEDITOR.env.cssClass, "z-index": a.config.baseFloatZIndex + 1 };this.getHolderElement = function () {
              var a = this._.holder;if (!a) {
                if (this.isFramed) {
                  var a = this.document.getById(this.id + "_frame"),
                      b = a.getParent(),
                      a = a.getFrameDocument();CKEDITOR.env.iOS && b.setStyles({ overflow: "scroll", "-webkit-overflow-scrolling": "touch" });b = CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function () {
                    this.isLoaded = !0;if (this.onLoad) this.onLoad();
                  }, this));a.write(g.output(CKEDITOR.tools.extend({ css: CKEDITOR.tools.buildStyleHtml(this.css), onload: "window.parent.CKEDITOR.tools.callFunction(" + b + ");" }, k)));a.getWindow().$.CKEDITOR = CKEDITOR;a.on("keydown", function (a) {
                    var b = a.data.getKeystroke(),
                        c = this.document.getById(this.id).getAttribute("dir");if ("input" !== a.data.getTarget().getName() || 37 !== b && 39 !== b) this._.onKeyDown && !1 === this._.onKeyDown(b) ? "input" === a.data.getTarget().getName() && 32 === b || a.data.preventDefault() : (27 == b || b == ("rtl" == c ? 39 : 37)) && this.onEscape && !1 === this.onEscape(b) && a.data.preventDefault();
                  }, this);a = a.getBody();a.unselectable();CKEDITOR.env.air && CKEDITOR.tools.callFunction(b);
                } else a = this.document.getById(this.id);this._.holder = a;
              }return a;
            };if (this.isFramed) {
              var l = CKEDITOR.env.air ? "javascript:void(0)" : CKEDITOR.env.ie && !CKEDITOR.env.edge ? "javascript:void(function(){" + encodeURIComponent("document.open();(" + CKEDITOR.tools.fixDomain + ")();document.close();") + "}())" : "";k.frame = h.output({ id: this.id + "_frame", src: l });
            }l = c.output(k);e && e.push(l);return l;
          }, addBlock: function (a, c) {
            c = this._.blocks[a] = c instanceof CKEDITOR.ui.panel.block ? c : new CKEDITOR.ui.panel.block(this.getHolderElement(), c);this._.currentBlock || this.showBlock(a);return c;
          }, getBlock: function (a) {
            return this._.blocks[a];
          }, showBlock: function (a) {
            a = this._.blocks[a];var c = this._.currentBlock,
                g = !this.forceIFrame || CKEDITOR.env.ie ? this._.holder : this.document.getById(this.id + "_frame");c && c.hide();this._.currentBlock = a;CKEDITOR.fire("ariaWidget", g);a._.focusIndex = -1;this._.onKeyDown = a.onKeyDown && CKEDITOR.tools.bind(a.onKeyDown, a);a.show();return a;
          }, destroy: function () {
            this.element && this.element.remove();
          } };CKEDITOR.ui.panel.block = CKEDITOR.tools.createClass({ $: function (a, c) {
            this.element = a.append(a.getDocument().createElement("div", { attributes: { tabindex: -1, "class": "cke_panel_block" }, styles: { display: "none" } }));c && CKEDITOR.tools.extend(this, c);this.element.setAttributes({ role: this.attributes.role || "presentation", "aria-label": this.attributes["aria-label"], title: this.attributes.title || this.attributes["aria-label"] });this.keys = {};this._.focusIndex = -1;this.element.disableContextMenu();
          }, _: { markItem: function (a) {
              -1 != a && (a = this._.getItems().getItem(this._.focusIndex = a), CKEDITOR.env.webkit && a.getDocument().getWindow().focus(), a.focus(), this.onMark && this.onMark(a));
            }, markFirstDisplayed: function (a) {
              for (var c = function (a) {
                return a.type == CKEDITOR.NODE_ELEMENT && "none" == a.getStyle("display");
              }, g = this._.getItems(), h, m, b = g.count() - 1; 0 <= b; b--) if (h = g.getItem(b), h.getAscendant(c) || (m = h, this._.focusIndex = b), "true" == h.getAttribute("aria-selected")) {
                m = h;this._.focusIndex = b;break;
              }m && (a && a(), CKEDITOR.env.webkit && m.getDocument().getWindow().focus(), m.focus(), this.onMark && this.onMark(m));
            }, getItems: function () {
              return this.element.find("a,input");
            } }, proto: { show: function () {
              this.element.setStyle("display", "");
            }, hide: function () {
              this.onHide && !0 === this.onHide.call(this) || this.element.setStyle("display", "none");
            }, onKeyDown: function (a, c) {
              var g = this.keys[a];switch (g) {case "next":
                  for (var h = this._.focusIndex, g = this._.getItems(), m; m = g.getItem(++h);) if (m.getAttribute("_cke_focus") && m.$.offsetWidth) {
                    this._.focusIndex = h;m.focus(!0);break;
                  }return m || c ? !1 : (this._.focusIndex = -1, this.onKeyDown(a, 1));case "prev":
                  h = this._.focusIndex;for (g = this._.getItems(); 0 < h && (m = g.getItem(--h));) {
                    if (m.getAttribute("_cke_focus") && m.$.offsetWidth) {
                      this._.focusIndex = h;m.focus(!0);break;
                    }m = null;
                  }return m || c ? !1 : (this._.focusIndex = g.count(), this.onKeyDown(a, 1));case "click":case "mouseup":
                  return h = this._.focusIndex, (m = 0 <= h && this._.getItems().getItem(h)) && m.fireEventHandler(g, { button: CKEDITOR.tools.normalizeMouseButton(CKEDITOR.MOUSE_BUTTON_LEFT, !0) }), !1;}return !0;
            } } });
      }(), CKEDITOR.plugins.add("floatpanel", { requires: "panel" }), function () {
        function c(c, a, e, k, l) {
          l = CKEDITOR.tools.genKey(a.getUniqueId(), e.getUniqueId(), c.lang.dir, c.uiColor || "", k.css || "", l || "");var m = h[l];m || (m = h[l] = new CKEDITOR.ui.panel(a, k), m.element = e.append(CKEDITOR.dom.element.createFromHtml(m.render(c), a)), m.element.setStyles({ display: "none", position: "absolute" }));return m;
        }var h = {};CKEDITOR.ui.floatPanel = CKEDITOR.tools.createClass({ $: function (g, a, e, h) {
            function l() {
              f.hide();
            }e.forceIFrame = 1;e.toolbarRelated && g.elementMode == CKEDITOR.ELEMENT_MODE_INLINE && (a = CKEDITOR.document.getById("cke_" + g.name));var m = a.getDocument();h = c(g, m, a, e, h || 0);var b = h.element,
                d = b.getFirst(),
                f = this;b.disableContextMenu();this.element = b;this._ = { editor: g, panel: h, parentElement: a, definition: e, document: m, iframe: d, children: [], dir: g.lang.dir, showBlockParams: null, markFirst: void 0 !== e.markFirst ? e.markFirst : !0 };g.on("mode", l);g.on("resize", l);m.getWindow().on("resize", function () {
              this.reposition();
            }, this);
          }, proto: { addBlock: function (c, a) {
              return this._.panel.addBlock(c, a);
            }, addListBlock: function (c, a) {
              return this._.panel.addListBlock(c, a);
            }, getBlock: function (c) {
              return this._.panel.getBlock(c);
            }, showBlock: function (c, a, e, h, l, m) {
              var b = this._.panel,
                  d = b.showBlock(c);this._.showBlockParams = [].slice.call(arguments);this.allowBlur(!1);var f = this._.editor.editable();this._.returnFocus = f.hasFocus ? f : new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);
              this._.hideTimeout = 0;var p = this.element,
                  f = this._.iframe,
                  f = CKEDITOR.env.ie && !CKEDITOR.env.edge ? f : new CKEDITOR.dom.window(f.$.contentWindow),
                  w = p.getDocument(),
                  y = this._.parentElement.getPositionedAncestor(),
                  r = a.getDocumentPosition(w),
                  w = y ? y.getDocumentPosition(w) : { x: 0, y: 0 },
                  t = "rtl" == this._.dir,
                  v = r.x + (h || 0) - w.x,
                  B = r.y + (l || 0) - w.y;!t || 1 != e && 4 != e ? t || 2 != e && 3 != e || (v += a.$.offsetWidth - 1) : v += a.$.offsetWidth;if (3 == e || 4 == e) B += a.$.offsetHeight - 1;this._.panel._.offsetParentId = a.getId();p.setStyles({ top: B + "px", left: 0,
                display: "" });p.setOpacity(0);p.getFirst().removeStyle("width");this._.editor.focusManager.add(f);this._.blurSet || (CKEDITOR.event.useCapture = !0, f.on("blur", function (a) {
                function b() {
                  delete this._.returnFocus;this.hide();
                }this.allowBlur() && a.data.getPhase() == CKEDITOR.EVENT_PHASE_AT_TARGET && this.visible && !this._.activeChild && (CKEDITOR.env.iOS ? this._.hideTimeout || (this._.hideTimeout = CKEDITOR.tools.setTimeout(b, 0, this)) : b.call(this));
              }, this), f.on("focus", function () {
                this._.focused = !0;this.hideChild();this.allowBlur(!0);
              }, this), CKEDITOR.env.iOS && (f.on("touchstart", function () {
                clearTimeout(this._.hideTimeout);
              }, this), f.on("touchend", function () {
                this._.hideTimeout = 0;this.focus();
              }, this)), CKEDITOR.event.useCapture = !1, this._.blurSet = 1);b.onEscape = CKEDITOR.tools.bind(function (a) {
                if (this.onEscape && !1 === this.onEscape(a)) return !1;
              }, this);CKEDITOR.tools.setTimeout(function () {
                var a = CKEDITOR.tools.bind(function () {
                  var a = p;a.removeStyle("width");if (d.autoSize) {
                    var c = d.element.getDocument(),
                        c = (CKEDITOR.env.webkit || CKEDITOR.env.edge ? d.element : c.getBody()).$.scrollWidth;CKEDITOR.env.ie && CKEDITOR.env.quirks && 0 < c && (c += (a.$.offsetWidth || 0) - (a.$.clientWidth || 0) + 3);a.setStyle("width", c + 10 + "px");c = d.element.$.scrollHeight;CKEDITOR.env.ie && CKEDITOR.env.quirks && 0 < c && (c += (a.$.offsetHeight || 0) - (a.$.clientHeight || 0) + 3);a.setStyle("height", c + "px");b._.currentBlock.element.setStyle("display", "none").removeStyle("display");
                  } else a.removeStyle("height");t && (v -= p.$.offsetWidth);p.setStyle("left", v + "px");var c = b.element.getWindow(),
                      a = p.$.getBoundingClientRect(),
                      c = c.getViewPaneSize(),
                      e = a.width || a.right - a.left,
                      f = a.height || a.bottom - a.top,
                      g = t ? a.right : c.width - a.left,
                      h = t ? c.width - a.right : a.left;t ? g < e && (v = h > e ? v + e : c.width > e ? v - a.left : v - a.right + c.width) : g < e && (v = h > e ? v - e : c.width > e ? v - a.right + c.width : v - a.left);e = a.top;c.height - a.top < f && (B = e > f ? B - f : c.height > f ? B - a.bottom + c.height : B - a.top);CKEDITOR.env.ie && !CKEDITOR.env.edge && ((c = a = p.$.offsetParent && new CKEDITOR.dom.element(p.$.offsetParent)) && "html" == c.getName() && (c = c.getDocument().getBody()), c && "rtl" == c.getComputedStyle("direction") && (v = CKEDITOR.env.ie8Compat ? v - 2 * p.getDocument().getDocumentElement().$.scrollLeft : v - (a.$.scrollWidth - a.$.clientWidth)));var a = p.getFirst(),
                      k;(k = a.getCustomData("activePanel")) && k.onHide && k.onHide.call(this, 1);a.setCustomData("activePanel", this);p.setStyles({ top: B + "px", left: v + "px" });p.setOpacity(1);m && m();
                }, this);b.isLoaded ? a() : b.onLoad = a;CKEDITOR.tools.setTimeout(function () {
                  var a = CKEDITOR.env.webkit && CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();d.element.focus();CKEDITOR.env.webkit && (CKEDITOR.document.getBody().$.scrollTop = a);this.allowBlur(!0);this._.markFirst && (CKEDITOR.env.ie ? CKEDITOR.tools.setTimeout(function () {
                    d.markFirstDisplayed ? d.markFirstDisplayed() : d._.markFirstDisplayed();
                  }, 0) : d.markFirstDisplayed ? d.markFirstDisplayed() : d._.markFirstDisplayed());this._.editor.fire("panelShow", this);
                }, 0, this);
              }, CKEDITOR.env.air ? 200 : 0, this);this.visible = 1;this.onShow && this.onShow.call(this);
            }, reposition: function () {
              var c = this._.showBlockParams;this.visible && this._.showBlockParams && (this.hide(), this.showBlock.apply(this, c));
            }, focus: function () {
              if (CKEDITOR.env.webkit) {
                var c = CKEDITOR.document.getActive();c && !c.equals(this._.iframe) && c.$.blur();
              }(this._.lastFocused || this._.iframe.getFrameDocument().getWindow()).focus();
            }, blur: function () {
              var c = this._.iframe.getFrameDocument().getActive();c && c.is("a") && (this._.lastFocused = c);
            }, hide: function (c) {
              if (this.visible && (!this.onHide || !0 !== this.onHide.call(this))) {
                this.hideChild();CKEDITOR.env.gecko && this._.iframe.getFrameDocument().$.activeElement.blur();
                this.element.setStyle("display", "none");this.visible = 0;this.element.getFirst().removeCustomData("activePanel");if (c = c && this._.returnFocus) CKEDITOR.env.webkit && c.type && c.getWindow().$.focus(), c.focus();delete this._.lastFocused;this._.showBlockParams = null;this._.editor.fire("panelHide", this);
              }
            }, allowBlur: function (c) {
              var a = this._.panel;void 0 !== c && (a.allowBlur = c);return a.allowBlur;
            }, showAsChild: function (c, a, e, h, l, m) {
              if (this._.activeChild != c || c._.panel._.offsetParentId != e.getId()) this.hideChild(), c.onHide = CKEDITOR.tools.bind(function () {
                CKEDITOR.tools.setTimeout(function () {
                  this._.focused || this.hide();
                }, 0, this);
              }, this), this._.activeChild = c, this._.focused = !1, c.showBlock(a, e, h, l, m), this.blur(), (CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat) && setTimeout(function () {
                c.element.getChild(0).$.style.cssText += "";
              }, 100);
            }, hideChild: function (c) {
              var a = this._.activeChild;a && (delete a.onHide, delete this._.activeChild, a.hide(), c && this.focus());
            } } });CKEDITOR.on("instanceDestroyed", function () {
          var c = CKEDITOR.tools.isEmpty(CKEDITOR.instances),
              a;for (a in h) {
            var e = h[a];c ? e.destroy() : e.element.hide();
          }c && (h = {});
        });
      }(), function () {
        var c, h, g;CKEDITOR.plugins.add("colorbutton", { requires: "panelbutton,floatpanel", init: function (a) {
            function e(e) {
              function f() {
                var b = a.config["colorButton_" + v + "Style"];b.childRule = "back" == v ? function (a) {
                  return l(a);
                } : function (a) {
                  return !(a.is("a") || a.getElementsByTag("a").count()) || l(a);
                };return b;
              }function p(b, d, c) {
                var e = {};b && (e.color = b);d && (e.colorName = d);d = !CKEDITOR.tools.isEmpty(e) && new CKEDITOR.style(f(), e);a.execCommand(x, { newStyle: d });if (b && c) for (c.addColor(b.substr(1).toUpperCase()), b = E.element.find("[role\x3doption]").toArray(), c = 0; c < b.length; c++) b[c].setAttributes({ "aria-posinset": c + 1, "aria-setsize": b.length });
              }var t = e.name,
                  v = e.type,
                  B = e.title,
                  n = e.order,
                  x = e.commandName;e = e.contentTransformations || {};var q = new CKEDITOR.style(b["colorButton_" + v + "Style"]),
                  u = CKEDITOR.tools.getNextId() + "_colorBox",
                  z = { type: v },
                  A = new CKEDITOR.style(b["colorButton_" + v + "Style"], { color: "inherit" }),
                  C = function () {
                return CKEDITOR.tools.addFunction(function (b, d, c) {
                  a.focus();a.fire("saveSnapshot");"?" == b ? a.getColorFromDialog(function (a) {
                    a && p(a, d, D);
                  }, null, z) : p(b && "#" + b, d, D);c && (c.setAttribute("cke_colorlast", !0), a.once("selectionChange", function () {
                    c.removeAttribute("cke_colorlast");
                  }));
                });
              }(),
                  D = g.getRowLimit(a) ? new g(a, "back" == v ? "background-color" : "color", C) : void 0,
                  E;a.addCommand(x, { contextSensitive: !0, exec: function (a, b) {
                  if (!a.readOnly) {
                    var d = b.newStyle;a.removeStyle(A);a.focus();d && a.applyStyle(d);a.fire("saveSnapshot");
                  }
                }, refresh: function (a, b) {
                  A.checkApplicable(b, a, a.activeFilter) ? A.checkActive(b, a) ? this.setState(CKEDITOR.TRISTATE_ON) : this.setState(CKEDITOR.TRISTATE_OFF) : this.setState(CKEDITOR.TRISTATE_DISABLED);
                } });a.ui.add(t, CKEDITOR.UI_PANELBUTTON, { label: B, title: B, command: x, editorFocus: 0, toolbar: "colors," + n, allowedContent: q, requiredContent: q, contentTransformations: e, panel: { css: CKEDITOR.skin.getPath("editor"), attributes: { role: "listbox", "aria-label": d.panelTitle } }, select: function (a) {
                  var d = b.colorButton_colors.split(",");a = CKEDITOR.tools.array.find(d, a);a = c.normalizeColor(a);m(E, a);E._.markFirstDisplayed();
                }, onBlock: function (b, d) {
                  E = d;d.autoSize = !0;d.element.addClass("cke_colorblock");d.element.setHtml(h(u, C, D ? D.getLength() : 0));d.element.getDocument().getBody().setStyle("overflow", "hidden");d.element.getAscendant({ html: 1 }).setStyle("overflow", "hidden");CKEDITOR.ui.fire("ready", this);var c = d.keys,
                      e = "rtl" == a.lang.dir;c[e ? 37 : 39] = "next";c[40] = "next";c[9] = "next";c[e ? 39 : 37] = "prev";c[38] = "prev";c[CKEDITOR.SHIFT + 9] = "prev";c[32] = "click";D && D.setContainer(d.element.findOne(".cke_colorhistory"));
                },
                onOpen: function () {
                  var d = a.getSelection(),
                      e = d && d.getStartElement(),
                      f = a.elementPath(e),
                      g = "back" == v ? "background-color" : "color";if (f) {
                    e = f.block || f.blockLimit || a.document.getBody();do f = e && e.getComputedStyle(g) || "transparent"; while ("back" == v && "transparent" == f && e && (e = e.getParent()));f && "transparent" != f || (f = "#ffffff");b.colorButton_enableAutomatic && E.element.findOne("#" + u).setStyle("background-color", f);if (e = d && d.getRanges()[0]) {
                      for (var d = new CKEDITOR.dom.walker(e), h = e.collapsed ? e.startContainer : d.next(), e = ""; h;) {
                        h.type !== CKEDITOR.NODE_ELEMENT && (h = h.getParent());h = c.normalizeColor(h.getComputedStyle(g));e = e || h;if (e !== h) {
                          e = "";break;
                        }h = d.next();
                      }"transparent" == e && (e = "");"fore" == v && (z.automaticTextColor = "#" + c.normalizeColor(f));z.selectionColor = e ? "#" + e : "";m(E, e);
                    }return f;
                  }
                } });
            }function h(e, f, k) {
              var l = [],
                  m = b.colorButton_colors.split(","),
                  p = a.plugins.colordialog && b.colorButton_enableMore;k = m.length + k + (p ? 1 : 0);var n = 1;b.colorButton_enableAutomatic && (k += 1, n += 1, l.push('\x3ca class\x3d"cke_colorauto" _cke_focus\x3d1 hidefocus\x3dtrue', ' title\x3d"', d.auto, '"', ' draggable\x3d"false"', ' ondragstart\x3d"return false;"', ' onclick\x3d"CKEDITOR.tools.callFunction(', f, ',null);return false;"', " href\x3d\"javascript:void('", d.auto, "')\"", ' role\x3d"option" aria-posinset\x3d"1" aria-setsize\x3d"', k, '"\x3e', '\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e', "\x3ctr\x3e", '\x3ctd colspan\x3d"', a.config.colorButton_colorsPerRow, '" align\x3d"center"\x3e', '\x3cspan class\x3d"cke_colorbox" id\x3d"', e, '"\x3e\x3c/span\x3e', d.auto, "\x3c/td\x3e", "\x3c/tr\x3e", "\x3c/table\x3e", "\x3c/a\x3e"));l.push('\x3ctable role\x3d"presentation" cellspacing\x3d0 cellpadding\x3d0 width\x3d"100%"\x3e\x3ctbody\x3e');for (e = 0; e < m.length; e++) {
                0 === e % a.config.colorButton_colorsPerRow && l.push("\x3c/tr\x3e\x3ctr\x3e");var x = m[e].split("/"),
                    q = x[0],
                    x = new c(a, { color: x[1] || q, label: x[1] ? q : void 0 }, f);x.setPositionIndex(n + e, k);l.push(x.getHtml());
              }g.getRowLimit(a) && g.renderContainer(l, a);p && l.push("\x3c/tr\x3e", "\x3ctr\x3e", '\x3ctd colspan\x3d"', a.config.colorButton_colorsPerRow, '" align\x3d"center"\x3e', '\x3ca class\x3d"cke_colormore" _cke_focus\x3d1 hidefocus\x3dtrue', ' title\x3d"', d.more, '"', ' draggable\x3d"false"', ' ondragstart\x3d"return false;"', ' onclick\x3d"CKEDITOR.tools.callFunction(', f, ",'?');return false;\"", " href\x3d\"javascript:void('", d.more, "')\"", ' role\x3d"option" aria-posinset\x3d"', k, '" aria-setsize\x3d"', k, '"\x3e', d.more, "\x3c/a\x3e", "\x3c/td\x3e");l.push("\x3c/tr\x3e\x3c/tbody\x3e\x3c/table\x3e");return l.join("");
            }function l(a) {
              return "false" == a.getAttribute("contentEditable") || a.getAttribute("data-nostyle");
            }function m(a, b) {
              var d = a._.getItems(),
                  e = a.element.findOne("[aria-selected]"),
                  f = a.element.findOne("[cke_colorlast]");e && e.removeAttribute("aria-selected");if (f) f.setAttribute("aria-selected", !0);else for (e = 0; e < d.count(); e++) if (f = d.getItem(e), b && b == c.normalizeColor(f.getAttribute("data-value"))) {
                f.setAttribute("aria-selected", !0);break;
              }
            }var b = a.config,
                d = a.lang.colorbutton;if (!CKEDITOR.env.hc) {
              e({ name: "TextColor", type: "fore", commandName: "textColor", title: d.textColorTitle,
                order: 10, contentTransformations: [[{ element: "font", check: "span{color}", left: function (a) {
                    return !!a.attributes.color;
                  }, right: function (a) {
                    a.name = "span";a.attributes.color && (a.styles.color = a.attributes.color);delete a.attributes.color;
                  } }]] });var f,
                  p = a.config.colorButton_normalizeBackground;if (void 0 === p || p) f = [[{ element: "span", left: function (a) {
                  var b = CKEDITOR.tools;if ("span" != a.name || !a.styles || !a.styles.background) return !1;a = b.style.parse.background(a.styles.background);return a.color && 1 === b.object.keys(a).length;
                },
                right: function (b) {
                  var d = new CKEDITOR.style(a.config.colorButton_backStyle, { color: b.styles.background }).getDefinition();b.name = d.element;b.styles = d.styles;b.attributes = d.attributes || {};return b;
                } }]];e({ name: "BGColor", type: "back", commandName: "bgColor", title: d.bgColorTitle, order: 20, contentTransformations: f });
            }
          } });c = CKEDITOR.tools.createClass({ $: function (a, e, g) {
            this.$ = new CKEDITOR.dom.element("td");this.color = CKEDITOR.tools._isValidColorFormat(e.color) ? e.color : "";this.clickFn = g;this.label = e.label || c.colorNames(a)[this.color] || this.color;this.setHtml();
          }, statics: { colorNames: function (a) {
              return a.lang.colorbutton.colors;
            }, normalizeColor: function (a) {
              var c = /^(rgb|hsl)a\(/g.test(a),
                  g = /^rgba\((\s*0\s*,?){4}\)$/g.test(a);return c && !g ? (a = new CKEDITOR.tools.color(a), CKEDITOR.tools.normalizeHex(a.getHex() || "").replace(/#/g, "")) : CKEDITOR.tools.normalizeHex("#" + CKEDITOR.tools.convertRgbToHex(a || "")).replace(/#/g, "");
            } }, proto: { getElement: function () {
              return this.$;
            }, getHtml: function () {
              return this.getElement().getOuterHtml();
            }, setHtml: function () {
              this.getElement().setHtml('\x3ca class\x3d"cke_colorbox" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"' + this.label + '" draggable\x3d"false" ondragstart\x3d"return false;" onclick\x3d"CKEDITOR.tools.callFunction(' + this.clickFn + ",'" + this.color + "','" + this.label + "', this); return false;\" href\x3d\"javascript:void('" + this.color + '\')" data-value\x3d"' + this.color + '" role\x3d"option"\x3e\x3cspan class\x3d"cke_colorbox" style\x3d"background-color:#' + this.color + '"\x3e\x3c/span\x3e\x3c/a\x3e');
            }, setPositionIndex: function (a, c) {
              this.getElement().getChild(0).setAttributes({ "aria-posinset": a, "aria-setsize": c });
            } } });
        h = CKEDITOR.tools.createClass({ $: function () {
            this.$ = new CKEDITOR.dom.element("tr");this.$.addClass("cke_colorhistory_row");this.boxes = [];
          }, proto: { getElement: function () {
              return this.$;
            }, removeLastColor: function () {
              this.getElement().getLast().remove();return this.boxes.pop();
            }, addNewColor: function (a) {
              this.boxes.unshift(a);this.getElement().append(a.getElement(), !0);
            }, extractColorBox: function (a) {
              var c = CKEDITOR.tools.getIndex(this.boxes, function (c) {
                return c.color === a;
              });if (0 > c) return null;this.boxes[c].getElement().remove();
              return this.boxes.splice(c, 1)[0];
            } } });g = CKEDITOR.tools.createClass({ $: function (a, c, g) {
            this.editor = a;this.cssProperty = c;this.clickFn = g;this.rows = [];this._.addNewRow();if (this.editor.config.colorButton_renderContentColors) this.editor.once("instanceReady", function () {
              this.renderContentColors();
            }, this);
          }, statics: { renderContainer: function (a, c) {
              a.push('\x3c/tbody\x3e\x3ctbody class\x3d"cke_colorhistory" style\x3d"display:none;"\x3e', "\x3ctr\x3e", '\x3ctd colspan\x3d"', c.config.colorButton_colorsPerRow, '" align\x3d"center"\x3e', "\x3cspan\x3e\x3chr\x3e\x3c/span\x3e", "\x3c/td\x3e", "\x3c/tr\x3e", "\x3c/tbody\x3e\x3ctbody\x3e");
            }, getRowLimit: function (a) {
              return a.config.colorButton_historyRowLimit;
            }, getCapacity: function (a) {
              return g.getRowLimit(a) * a.config.colorButton_colorsPerRow;
            }, colorList: CKEDITOR.tools.style.parse._colors }, _: { countColors: function () {
              var a = CKEDITOR.tools.getStyledSpans(this.cssProperty, this.editor.editable());return CKEDITOR.tools.array.reduce(a, function (a, c) {
                var h = this._.getHexCode(c, this.cssProperty, g.colorList);
                a[h] = a[h] || 0;a[h] += 1;return a;
              }, {}, this);
            }, getHexCode: function (a, e, g) {
              var h = a.getStyle(e);return h in g ? g[h].substr(1) : c.normalizeColor(a.getComputedStyle(e)).toUpperCase();
            }, sortByOccurrencesAscending: function (a, c) {
              var g = [],
                  h;for (h in a) {
                var m = {};m[c] = h;m.frequency = a[h];g.push(m);
              }g.sort(function (a, d) {
                return d.frequency - a.frequency;
              });this._.trimToCapacity(g);return g.reverse();
            }, trimToCapacity: function (a) {
              a.splice(g.getCapacity(this.editor));
            }, addColors: function (a) {
              CKEDITOR.tools.array.forEach(a, function (a) {
                this.addColor(a.colorCode);
              }, this);
            }, extractColorBox: function (a) {
              for (var c = 0; c < this.rows.length; c++) {
                var g = this.rows[c].extractColorBox(a);if (g) return g;
              }return null;
            }, moveToBeginning: function (a) {
              this.rows[0].addNewColor(a);
            }, createAtBeginning: function (a) {
              this._.moveToBeginning(new c(this.editor, { color: a }, this.clickFn));
            }, addNewRow: function () {
              this.rows.push(new h());this.container && this.container.append(this.rows[this.rows.length - 1].getElement());
            }, alignRows: function () {
              for (var a = 0; a < g.getRowLimit(this.editor) && !(this.rows[a].boxes.length <= this.editor.config.colorButton_colorsPerRow); a++) this.rows[a + 1] ? this._.moveLastBoxToNextRow(a) : a < g.getRowLimit(this.editor) - 1 ? (this._.addNewRow(), this._.moveLastBoxToNextRow(a)) : this.rows[a].removeLastColor();
            }, moveLastBoxToNextRow: function (a) {
              this.rows[a + 1].addNewColor(this.rows[a].removeLastColor());
            }, refreshPositions: function () {
              var a = this._.countPanelElements(),
                  c = this._.calculateFirstPosition(a);CKEDITOR.tools.array.forEach(this.rows, function (g) {
                CKEDITOR.tools.array.forEach(g.boxes, function (g) {
                  g.setPositionIndex(c, a);c += 1;
                });
              });
            }, countPanelElements: function () {
              var a = this.editor.config.colorButton_colors.split(",").length + this.getLength();this.editor.plugins.colordialog && this.editor.config.colorButton_enableMore && (a += 1);this.editor.config.colorButton_enableAutomatic && (a += 1);return a;
            }, calculateFirstPosition: function (a) {
              return this.editor.plugins.colordialog && this.editor.config.colorButton_enableMore ? a - this.getLength() : a - this.getLength() + 1;
            }, attachRows: function () {
              CKEDITOR.tools.array.forEach(this.rows, function (a) {
                this.container.append(a.getElement());
              }, this);
            } }, proto: { setContainer: function (a) {
              this.container = a;this._.attachRows();this.getLength() && this.show();
            }, show: function () {
              this.container && this.container.show();
            }, renderContentColors: function () {
              var a = this._.countColors();CKEDITOR.tools.isEmpty(a) || (a = this._.sortByOccurrencesAscending(a, "colorCode"), this._.addColors(a), this._.refreshPositions());
            }, addColor: function (a) {
              var c = this._.extractColorBox(a);this.container && !this.container.isVisible() && this.show();c ? this._.moveToBeginning(c) : this._.createAtBeginning(a);
              this._.alignRows();
            }, getLength: function () {
              return CKEDITOR.tools.array.reduce(this.rows, function (a, c) {
                return a + c.boxes.length;
              }, 0);
            } } });
      }(), CKEDITOR.config.colorButton_enableMore = !0, CKEDITOR.config.colorButton_colors = "1ABC9C,2ECC71,3498DB,9B59B6,4E5F70,F1C40F,16A085,27AE60,2980B9,8E44AD,2C3E50,F39C12,E67E22,E74C3C,ECF0F1,95A5A6,DDD,FFF,D35400,C0392B,BDC3C7,7F8C8D,999,000", CKEDITOR.config.colorButton_foreStyle = { element: "span", styles: { color: "#(color)" }, overrides: [{ element: "font", attributes: { color: null } }] }, CKEDITOR.config.colorButton_backStyle = { element: "span", styles: { "background-color": "#(color)" } }, CKEDITOR.config.colorButton_enableAutomatic = !0, CKEDITOR.config.colorButton_colorsPerRow = 6, CKEDITOR.config.colorButton_historyRowLimit = 1, CKEDITOR.config.colorButton_renderContentColors = !0, CKEDITOR.plugins.add("menu", { requires: "floatpanel", beforeInit: function (c) {
          for (var h = c.config.menu_groups.split(","), g = c._.menuGroups = {}, a = c._.menuItems = {}, e = 0; e < h.length; e++) g[h[e]] = e + 1;c.addMenuGroup = function (a, c) {
            g[a] = c || 100;
          };c.addMenuItem = function (c, e) {
            g[e.group] && (a[c] = new CKEDITOR.menuItem(this, c, e));
          };c.addMenuItems = function (a) {
            for (var c in a) this.addMenuItem(c, a[c]);
          };c.getMenuItem = function (c) {
            return a[c];
          };c.removeMenuItem = function (c) {
            delete a[c];
          };
        } }), function () {
        function c(a) {
          a.sort(function (a, b) {
            return a.group < b.group ? -1 : a.group > b.group ? 1 : a.order < b.order ? -1 : a.order > b.order ? 1 : 0;
          });
        }var h = '\x3cspan class\x3d"cke_menuitem"\x3e\x3ca id\x3d"{id}" class\x3d"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href\x3d"{href}" title\x3d"{title}" tabindex\x3d"-1" _cke_focus\x3d1 hidefocus\x3d"true" role\x3d"{role}" aria-label\x3d"{attrLabel}" aria-describedby\x3d"{id}_description" aria-haspopup\x3d"{hasPopup}" aria-disabled\x3d"{disabled}" {ariaChecked} draggable\x3d"false"',
            g = "";CKEDITOR.env.gecko && CKEDITOR.env.mac && (h += ' onkeypress\x3d"return false;"');CKEDITOR.env.gecko && (h += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;" ondragstart\x3d"return false;"');CKEDITOR.env.ie && (g = 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26');var h = h + (' onmouseover\x3d"CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout\x3d"CKEDITOR.tools.callFunction({moveOutFn},{index});" onclick\x3d"' + g + 'CKEDITOR.tools.callFunction({clickFn},{index}); return false;"\x3e') + '\x3cspan class\x3d"cke_menubutton_inner"\x3e\x3cspan class\x3d"cke_menubutton_icon"\x3e\x3cspan class\x3d"cke_button_icon cke_button__{iconName}_icon" style\x3d"{iconStyle}"\x3e\x3c/span\x3e\x3c/span\x3e\x3cspan class\x3d"cke_menubutton_label"\x3e{label}\x3c/span\x3e{shortcutHtml}{arrowHtml}\x3c/span\x3e\x3c/a\x3e\x3cspan id\x3d"{id}_description" class\x3d"cke_voice_label" aria-hidden\x3d"false"\x3e{ariaShortcut}\x3c/span\x3e\x3c/span\x3e',
            a = CKEDITOR.addTemplate("menuItem", h),
            e = CKEDITOR.addTemplate("menuArrow", '\x3cspan class\x3d"cke_menuarrow"\x3e\x3cspan\x3e{label}\x3c/span\x3e\x3c/span\x3e'),
            k = CKEDITOR.addTemplate("menuShortcut", '\x3cspan class\x3d"cke_menubutton_label cke_menubutton_shortcut"\x3e{shortcut}\x3c/span\x3e');CKEDITOR.menu = CKEDITOR.tools.createClass({ $: function (a, c) {
            c = this._.definition = c || {};this.id = CKEDITOR.tools.getNextId();this.editor = a;this.items = [];this._.listeners = [];this._.level = c.level || 1;var b = CKEDITOR.tools.extend({}, c.panel, { css: [CKEDITOR.skin.getPath("editor")], level: this._.level - 1, block: {} }),
                d = b.block.attributes = b.attributes || {};!d.role && (d.role = "menu");this._.panelDefinition = b;
          }, _: { onShow: function () {
              var a = this.editor.getSelection(),
                  c = a && a.getStartElement(),
                  b = this.editor.elementPath(),
                  d = this._.listeners;this.removeAll();for (var e = 0; e < d.length; e++) {
                var g = d[e](c, a, b);if (g) for (var h in g) {
                  var k = this.editor.getMenuItem(h);!k || k.command && !this.editor.getCommand(k.command).state || (k.state = g[h], this.add(k));
                }
              }
            }, onClick: function (a) {
              this.hide();if (a.onClick) a.onClick();else a.command && this.editor.execCommand(a.command);
            }, onEscape: function (a) {
              var c = this.parent;c ? c._.panel.hideChild(1) : 27 == a && this.hide(1);return !1;
            }, onHide: function () {
              this.onHide && this.onHide();
            }, showSubMenu: function (a) {
              var c = this._.subMenu,
                  b = this.items[a];if (b = b.getItems && b.getItems()) {
                c ? c.removeAll() : (c = this._.subMenu = new CKEDITOR.menu(this.editor, CKEDITOR.tools.extend({}, this._.definition, { level: this._.level + 1 }, !0)), c.parent = this, c._.onClick = CKEDITOR.tools.bind(this._.onClick, this));for (var d in b) {
                  var e = this.editor.getMenuItem(d);
                  e && (e.state = b[d], c.add(e));
                }var g = this._.panel.getBlock(this.id).element.getDocument().getById(this.id + String(a));setTimeout(function () {
                  c.show(g, 2);
                }, 0);
              } else this._.panel.hideChild(1);
            } }, proto: { add: function (a) {
              a.order || (a.order = this.items.length);this.items.push(a);
            }, removeAll: function () {
              this.items = [];
            }, show: function (a, e, b, d) {
              if (!this.parent && (this._.onShow(), !this.items.length)) return;e = e || ("rtl" == this.editor.lang.dir ? 2 : 1);var f = this.items,
                  g = this.editor,
                  h = this._.panel,
                  k = this._.element;if (!h) {
                h = this._.panel = new CKEDITOR.ui.floatPanel(this.editor, CKEDITOR.document.getBody(), this._.panelDefinition, this._.level);h.onEscape = CKEDITOR.tools.bind(function (a) {
                  if (!1 === this._.onEscape(a)) return !1;
                }, this);h.onShow = function () {
                  h._.panel.getHolderElement().getParent().addClass("cke").addClass("cke_reset_all");
                };h.onHide = CKEDITOR.tools.bind(function () {
                  this._.onHide && this._.onHide();
                }, this);k = h.addBlock(this.id, this._.panelDefinition.block);k.autoSize = !0;var r = k.keys;r[40] = "next";r[9] = "next";r[38] = "prev";r[CKEDITOR.SHIFT + 9] = "prev";r["rtl" == g.lang.dir ? 37 : 39] = CKEDITOR.env.ie ? "mouseup" : "click";r[32] = CKEDITOR.env.ie ? "mouseup" : "click";CKEDITOR.env.ie && (r[13] = "mouseup");k = this._.element = k.element;r = k.getDocument();r.getBody().setStyle("overflow", "hidden");r.getElementsByTag("html").getItem(0).setStyle("overflow", "hidden");this._.itemOverFn = CKEDITOR.tools.addFunction(function (a) {
                  clearTimeout(this._.showSubTimeout);this._.showSubTimeout = CKEDITOR.tools.setTimeout(this._.showSubMenu, g.config.menu_subMenuDelay || 400, this, [a]);
                }, this);this._.itemOutFn = CKEDITOR.tools.addFunction(function () {
                  clearTimeout(this._.showSubTimeout);
                }, this);this._.itemClickFn = CKEDITOR.tools.addFunction(function (a) {
                  var b = this.items[a];if (b.state == CKEDITOR.TRISTATE_DISABLED) this.hide(1);else if (b.getItems) this._.showSubMenu(a);else this._.onClick(b);
                }, this);
              }c(f);for (var r = g.elementPath(), r = ['\x3cdiv class\x3d"cke_menu' + (r && r.direction() != g.lang.dir ? " cke_mixed_dir_content" : "") + '" role\x3d"presentation"\x3e'], t = f.length, v = t && f[0].group, B = 0; B < t; B++) {
                var n = f[B];v != n.group && (r.push('\x3cdiv class\x3d"cke_menuseparator" role\x3d"separator"\x3e\x3c/div\x3e'), v = n.group);n.render(this, B, r);
              }r.push("\x3c/div\x3e");k.setHtml(r.join(""));CKEDITOR.ui.fire("ready", this);this.parent ? this.parent._.panel.showAsChild(h, this.id, a, e, b, d) : h.showBlock(this.id, a, e, b, d);g.fire("menuShow", [h]);
            }, addListener: function (a) {
              this._.listeners.push(a);
            }, hide: function (a) {
              this._.onHide && this._.onHide();this._.panel && this._.panel.hide(a);
            }, findItemByCommandName: function (a) {
              var c = CKEDITOR.tools.array.filter(this.items, function (b) {
                return a === b.command;
              });return c.length ? (c = c[0], { item: c, element: this._.element.findOne("." + c.className) }) : null;
            } } });CKEDITOR.menuItem = CKEDITOR.tools.createClass({ $: function (a, c, b) {
            CKEDITOR.tools.extend(this, b, { order: 0, className: "cke_menubutton__" + c });this.group = a._.menuGroups[this.group];this.editor = a;this.name = c;
          }, proto: { render: function (c, g, b) {
              var d = c.id + String(g),
                  f = "undefined" == typeof this.state ? CKEDITOR.TRISTATE_OFF : this.state,
                  h = "",
                  w = this.editor,
                  y,
                  r,
                  t = f == CKEDITOR.TRISTATE_ON ? "on" : f == CKEDITOR.TRISTATE_DISABLED ? "disabled" : "off";this.role in { menuitemcheckbox: 1, menuitemradio: 1 } && (h = ' aria-checked\x3d"' + (f == CKEDITOR.TRISTATE_ON ? "true" : "false") + '"');var v = this.getItems,
                  B = "\x26#" + ("rtl" == this.editor.lang.dir ? "9668" : "9658") + ";",
                  n = this.name;this.icon && !/\./.test(this.icon) && (n = this.icon);this.command && (y = w.getCommand(this.command), (y = w.getCommandKeystroke(y)) && (r = CKEDITOR.tools.keystrokeToString(w.lang.common.keyboard, y)));y = CKEDITOR.tools.htmlEncodeAttr(this.label);c = { id: d, name: this.name, iconName: n, label: this.label,
                attrLabel: y, cls: this.className || "", state: t, hasPopup: v ? "true" : "false", disabled: f == CKEDITOR.TRISTATE_DISABLED, title: y + (r ? " (" + r.display + ")" : ""), ariaShortcut: r ? w.lang.common.keyboardShortcut + " " + r.aria : "", href: "javascript:void('" + (y || "").replace("'") + "')", hoverFn: c._.itemOverFn, moveOutFn: c._.itemOutFn, clickFn: c._.itemClickFn, index: g, iconStyle: CKEDITOR.skin.getIconStyle(n, "rtl" == this.editor.lang.dir, n == this.icon ? null : this.icon, this.iconOffset), shortcutHtml: r ? k.output({ shortcut: r.display }) : "", arrowHtml: v ? e.output({ label: B }) : "", role: this.role ? this.role : "menuitem", ariaChecked: h };a.output(c, b);
            } } });
      }(), CKEDITOR.config.menu_groups = "clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div", CKEDITOR.plugins.add("contextmenu", { requires: "menu", onLoad: function () {
          CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass({ base: CKEDITOR.menu, $: function (c) {
              this.base.call(this, c, { panel: { css: c.config.contextmenu_contentsCss,
                  className: "cke_menu_panel", attributes: { "aria-label": c.lang.contextmenu.options } } });
            }, proto: { addTarget: function (c, h) {
                function g() {
                  e = !1;
                }var a, e;c.on("contextmenu", function (c) {
                  c = c.data;var g = CKEDITOR.env.webkit ? a : CKEDITOR.env.mac ? c.$.metaKey : c.$.ctrlKey;if (!h || !g) if (c.preventDefault(), !e) {
                    if (CKEDITOR.env.mac && CKEDITOR.env.webkit) {
                      var g = this.editor,
                          b = new CKEDITOR.dom.elementPath(c.getTarget(), g.editable()).contains(function (a) {
                        return a.hasAttribute("contenteditable");
                      }, !0);b && "false" == b.getAttribute("contenteditable") && g.getSelection().fake(b);
                    }var b = c.getTarget().getDocument(),
                        d = c.getTarget().getDocument().getDocumentElement(),
                        g = !b.equals(CKEDITOR.document),
                        b = b.getWindow().getScrollPosition(),
                        f = g ? c.$.clientX : c.$.pageX || b.x + c.$.clientX,
                        k = g ? c.$.clientY : c.$.pageY || b.y + c.$.clientY;CKEDITOR.tools.setTimeout(function () {
                      this.open(d, null, f, k);
                    }, CKEDITOR.env.ie ? 200 : 0, this);
                  }
                }, this);if (CKEDITOR.env.webkit) {
                  var k = function () {
                    a = 0;
                  };c.on("keydown", function (c) {
                    a = CKEDITOR.env.mac ? c.data.$.metaKey : c.data.$.ctrlKey;
                  });c.on("keyup", k);
                  c.on("contextmenu", k);
                }CKEDITOR.env.gecko && !CKEDITOR.env.mac && (c.on("keydown", function (a) {
                  a.data.$.shiftKey && 121 === a.data.$.keyCode && (e = !0);
                }, null, null, 0), c.on("keyup", g), c.on("contextmenu", g));
              }, open: function (c, h, g, a) {
                !1 !== this.editor.config.enableContextMenu && this.editor.getSelection().getType() !== CKEDITOR.SELECTION_NONE && (this.editor.focus(), c = c || CKEDITOR.document.getDocumentElement(), this.editor.selectionChange(1), this.show(c, h, g, a));
              } } });
        }, beforeInit: function (c) {
          var h = c.contextMenu = new CKEDITOR.plugins.contextMenu(c);
          c.on("contentDom", function () {
            h.addTarget(c.editable(), !1 !== c.config.browserContextMenuOnCtrl);
          });c.addCommand("contextMenu", { exec: function (c) {
              var a = 0,
                  e = 0,
                  h = c.getSelection().getRanges(),
                  h = h[h.length - 1].getClientRects(c.editable().isInline());if (h = h[h.length - 1]) a = h["rtl" === c.lang.dir ? "left" : "right"], e = h.bottom;c.contextMenu.open(c.document.getBody().getParent(), null, a, e);
            } });c.setKeystroke(CKEDITOR.SHIFT + 121, "contextMenu");c.setKeystroke(CKEDITOR.CTRL + CKEDITOR.SHIFT + 121, "contextMenu");
        } }), function () {
        function c(a) {
          var c = this.att;a = a && a.hasAttribute(c) && a.getAttribute(c) || "";void 0 !== a && this.setValue(a);
        }function h() {
          for (var a, c = 0; c < arguments.length; c++) if (arguments[c] instanceof CKEDITOR.dom.element) {
            a = arguments[c];break;
          }if (a) {
            var c = this.att,
                g = this.getValue();g ? a.setAttribute(c, g) : a.removeAttribute(c, g);
          }
        }var g = { id: 1, dir: 1, classes: 1, styles: 1 };CKEDITOR.plugins.add("dialogadvtab", { requires: "dialog", allowedContent: function (a) {
            a || (a = g);var c = [];a.id && c.push("id");a.dir && c.push("dir");var h = "";c.length && (h += "[" + c.join(",") + "]");a.classes && (h += "(*)");a.styles && (h += "{*}");return h;
          }, createAdvancedTab: function (a, e, k) {
            e || (e = g);var l = a.lang.common,
                m = { id: "advanced", label: l.advancedTab, title: l.advancedTab, elements: [{ type: "vbox", padding: 1, children: [] }] },
                b = [];if (e.id || e.dir) e.id && b.push({ id: "advId", att: "id", type: "text", requiredContent: k ? k + "[id]" : null, label: l.id, setup: c, commit: h }), e.dir && b.push({ id: "advLangDir", att: "dir", type: "select", requiredContent: k ? k + "[dir]" : null, label: l.langDir, "default": "", style: "width:100%", items: [[l.notSet, ""], [l.langDirLTR, "ltr"], [l.langDirRTL, "rtl"]], setup: c, commit: h }), m.elements[0].children.push({ type: "hbox", widths: ["50%", "50%"], children: [].concat(b) });if (e.styles || e.classes) b = [], e.styles && b.push({ id: "advStyles", att: "style", type: "text", requiredContent: k ? k + "{cke-xyz}" : null, label: l.styles, "default": "", validate: CKEDITOR.dialog.validate.inlineStyle(l.invalidInlineStyle), onChange: function () {}, getStyle: function (a, b) {
                var c = this.getValue().match(new RegExp("(?:^|;)\\s*" + a + "\\s*:\\s*([^;]*)", "i"));return c ? c[1] : b;
              }, updateStyle: function (b, c) {
                var e = this.getValue(),
                    g = a.document.createElement("span");g.setAttribute("style", e);g.setStyle(b, c);e = CKEDITOR.tools.normalizeCssText(g.getAttribute("style"));this.setValue(e, 1);
              }, setup: c, commit: h }), e.classes && b.push({ type: "hbox", widths: ["45%", "55%"], children: [{ id: "advCSSClasses", att: "class", type: "text", requiredContent: k ? k + "(cke-xyz)" : null, label: l.cssClasses, "default": "", setup: c, commit: h }] }), m.elements[0].children.push({ type: "hbox", widths: ["50%", "50%"], children: [].concat(b) });
            return m;
          } });
      }(), function () {
        function c(a, b, c) {
          c = a.config.forceEnterMode || c;if ("wysiwyg" == a.mode) {
            b || (b = a.activeEnterMode);var e = a.elementPath();e && !e.isContextFor("p") && (b = CKEDITOR.ENTER_BR, c = 1);a.fire("saveSnapshot");b == CKEDITOR.ENTER_BR ? l(a, b, null, c) : m(a, b, null, c);a.fire("saveSnapshot");
          }
        }function h(a) {
          a = a.getSelection().getRanges(!0);for (var b = a.length - 1; 0 < b; b--) a[b].deleteContents();return a[0];
        }function g(a) {
          var b = a.startContainer.getAscendant(function (a) {
            return a.type == CKEDITOR.NODE_ELEMENT && "true" == a.getAttribute("contenteditable");
          }, !0);if (a.root.equals(b)) return a;b = new CKEDITOR.dom.range(b);b.moveToRange(a);return b;
        }CKEDITOR.plugins.add("enterkey", { init: function (a) {
            a.addCommand("enter", { modes: { wysiwyg: 1 }, editorFocus: !1, exec: function (a) {
                c(a);
              } });a.addCommand("shiftEnter", { modes: { wysiwyg: 1 }, editorFocus: !1, exec: function (a) {
                c(a, a.activeShiftEnterMode, 1);
              } });a.setKeystroke([[13, "enter"], [CKEDITOR.SHIFT + 13, "shiftEnter"]]);
          } });var a = CKEDITOR.dom.walker.whitespaces(),
            e = CKEDITOR.dom.walker.bookmark(),
            k,
            l,
            m,
            b;CKEDITOR.plugins.enterkey = { enterBlock: function (d, c, k, m) {
            function y(a) {
              var b;if (a === CKEDITOR.ENTER_BR || -1 === CKEDITOR.tools.indexOf(["td", "th"], B.lastElement.getName()) || 1 !== B.lastElement.getChildCount()) return !1;a = B.lastElement.getChild(0).clone(!0);(b = a.getBogus()) && b.remove();return a.getText().length ? !1 : !0;
            }if (k = k || h(d)) {
              k = g(k);var r = k.document,
                  t = k.checkStartOfBlock(),
                  v = k.checkEndOfBlock(),
                  B = d.elementPath(k.startContainer),
                  n = B.block,
                  x = c == CKEDITOR.ENTER_DIV ? "div" : "p",
                  q;if (n && t && v) {
                t = n.getParent();
                if (t.is("li") && 1 < t.getChildCount()) {
                  r = new CKEDITOR.dom.element("li");q = d.createRange();r.insertAfter(t);n.remove();q.setStart(r, 0);d.getSelection().selectRanges([q]);return;
                }if (n.is("li") || n.getParent().is("li")) {
                  n.is("li") || (n = n.getParent(), t = n.getParent());q = t.getParent();k = !n.hasPrevious();var u = !n.hasNext();m = d.getSelection();var x = m.createBookmarks(),
                      z = n.getDirection(1),
                      v = n.getAttribute("class"),
                      A = n.getAttribute("style"),
                      C = q.getDirection(1) != z;d = d.enterMode != CKEDITOR.ENTER_BR || C || A || v;if (q.is("li")) k || u ? (k && u && t.remove(), n[u ? "insertAfter" : "insertBefore"](q)) : n.breakParent(q);else {
                    if (d) {
                      if (B.block.is("li") ? (q = r.createElement(c == CKEDITOR.ENTER_P ? "p" : "div"), C && q.setAttribute("dir", z), A && q.setAttribute("style", A), v && q.setAttribute("class", v), n.moveChildren(q)) : q = B.block, k || u) q[k ? "insertBefore" : "insertAfter"](t);else n.breakParent(t), q.insertAfter(t);
                    } else if (n.appendBogus(!0), k || u) for (; r = n[k ? "getFirst" : "getLast"]();) r[k ? "insertBefore" : "insertAfter"](t);else for (n.breakParent(t); r = n.getLast();) r.insertAfter(t);
                    n.remove();
                  }m.selectBookmarks(x);return;
                }if (n && n.getParent().is("blockquote")) {
                  n.breakParent(n.getParent());n.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1)) || n.getPrevious().remove();n.getNext().getFirst(CKEDITOR.dom.walker.invisible(1)) || n.getNext().remove();k.moveToElementEditStart(n);k.select();return;
                }
              } else if (n && n.is("pre") && !v) {
                l(d, c, k, m);return;
              }if (A = k.splitBlock(x)) {
                d = A.previousBlock;n = A.nextBlock;t = A.wasStartOfBlock;v = A.wasEndOfBlock;n ? (u = n.getParent(), u.is("li") && (n.breakParent(u), n.move(n.getNext(), 1))) : d && (u = d.getParent()) && u.is("li") && (d.breakParent(u), u = d.getNext(), k.moveToElementEditStart(u), d.move(d.getPrevious()));if (t || v) {
                  if (y(c)) k.moveToElementEditStart(k.getTouchedStartNode());else {
                    if (d) {
                      if (d.is("li") || !b.test(d.getName()) && !d.is("pre")) q = d.clone();
                    } else n && (q = n.clone());q ? m && !q.is("li") && q.renameNode(x) : u && u.is("li") ? q = u : (q = r.createElement(x), d && (z = d.getDirection()) && q.setAttribute("dir", z));if (r = A.elementPath) for (c = 0, m = r.elements.length; c < m; c++) {
                      x = r.elements[c];if (x.equals(r.block) || x.equals(r.blockLimit)) break;CKEDITOR.dtd.$removeEmpty[x.getName()] && (x = x.clone(), q.moveChildren(x), q.append(x));
                    }q.appendBogus();q.getParent() || k.insertNode(q);q.is("li") && q.removeAttribute("value");!CKEDITOR.env.ie || !t || v && d.getChildCount() || (k.moveToElementEditStart(v ? d : q), k.select());k.moveToElementEditStart(t && !v ? n : q);
                  }
                } else n.is("li") && (q = k.clone(), q.selectNodeContents(n), q = new CKEDITOR.dom.walker(q), q.evaluator = function (b) {
                  return !(e(b) || a(b) || b.type == CKEDITOR.NODE_ELEMENT && b.getName() in CKEDITOR.dtd.$inline && !(b.getName() in CKEDITOR.dtd.$empty));
                }, (u = q.next()) && u.type == CKEDITOR.NODE_ELEMENT && u.is("ul", "ol") && (CKEDITOR.env.needsBrFiller ? r.createElement("br") : r.createText(" ")).insertBefore(u)), n && k.moveToElementEditStart(n);k.select();k.scrollIntoView();
              }
            }
          }, enterBr: function (a, c, e, g) {
            if (e = e || h(a)) {
              var k = e.document,
                  l = e.checkEndOfBlock(),
                  t = new CKEDITOR.dom.elementPath(a.getSelection().getStartElement()),
                  v = t.block,
                  B = v && t.block.getName();g || "li" != B ? (!g && l && b.test(B) ? (l = v.getDirection()) ? (k = k.createElement("div"), k.setAttribute("dir", l), k.insertAfter(v), e.setStart(k, 0)) : (k.createElement("br").insertAfter(v), CKEDITOR.env.gecko && k.createText("").insertAfter(v), e.setStartAt(v.getNext(), CKEDITOR.env.ie ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_START)) : (a = "pre" == B && CKEDITOR.env.ie && 8 > CKEDITOR.env.version ? k.createText("\r") : k.createElement("br"), e.deleteContents(), e.insertNode(a), CKEDITOR.env.needsBrFiller ? (k.createText("﻿").insertAfter(a), l && (v || t.blockLimit).appendBogus(), a.getNext().$.nodeValue = "", e.setStartAt(a.getNext(), CKEDITOR.POSITION_AFTER_START)) : e.setStartAt(a, CKEDITOR.POSITION_AFTER_END)), e.collapse(!0), e.select(), e.scrollIntoView()) : m(a, c, e, g);
            }
          } };k = CKEDITOR.plugins.enterkey;l = k.enterBr;m = k.enterBlock;b = /^h[1-6]$/;
      }(), CKEDITOR.plugins.add("listblock", { requires: "panel", onLoad: function () {
          var c = CKEDITOR.addTemplate("panel-list", '\x3cul role\x3d"presentation" class\x3d"cke_panel_list"\x3e{items}\x3c/ul\x3e'),
              h = CKEDITOR.addTemplate("panel-list-item", '\x3cli id\x3d"{id}" class\x3d"cke_panel_listItem" role\x3dpresentation\x3e\x3ca id\x3d"{id}_option" _cke_focus\x3d1 hidefocus\x3dtrue title\x3d"{title}" draggable\x3d"false" ondragstart\x3d"return false;" href\x3d"javascript:void(\'{val}\')"  onclick\x3d"{onclick}CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;" role\x3d"option"\x3e{text}\x3c/a\x3e\x3c/li\x3e'),
              g = CKEDITOR.addTemplate("panel-list-group", '\x3ch1 id\x3d"{id}" draggable\x3d"false" ondragstart\x3d"return false;" class\x3d"cke_panel_grouptitle" role\x3d"presentation" \x3e{label}\x3c/h1\x3e'),
              a = /\'/g;CKEDITOR.ui.panel.prototype.addListBlock = function (a, c) {
            return this.addBlock(a, new CKEDITOR.ui.listBlock(this.getHolderElement(), c));
          };CKEDITOR.ui.listBlock = CKEDITOR.tools.createClass({ base: CKEDITOR.ui.panel.block, $: function (a, c) {
              c = c || {};var g = c.attributes || (c.attributes = {});(this.multiSelect = !!c.multiSelect) && (g["aria-multiselectable"] = !0);!g.role && (g.role = "listbox");this.base.apply(this, arguments);this.element.setAttribute("role", g.role);g = this.keys;g[40] = "next";g[9] = "next";g[38] = "prev";g[CKEDITOR.SHIFT + 9] = "prev";g[32] = CKEDITOR.env.ie ? "mouseup" : "click";CKEDITOR.env.ie && (g[13] = "mouseup");this._.pendingHtml = [];this._.pendingList = [];this._.items = {};this._.groups = {};
            }, _: { close: function () {
                if (this._.started) {
                  var a = c.output({ items: this._.pendingList.join("") });this._.pendingList = [];this._.pendingHtml.push(a);
                  delete this._.started;
                }
              }, getClick: function () {
                this._.click || (this._.click = CKEDITOR.tools.addFunction(function (a) {
                  var c = this.toggle(a);if (this.onClick) this.onClick(a, c);
                }, this));return this._.click;
              } }, proto: { add: function (c, g, l) {
                var m = CKEDITOR.tools.getNextId();this._.started || (this._.started = 1, this._.size = this._.size || 0);this._.items[c] = m;var b = CKEDITOR.tools.htmlEncodeAttr(c).replace(a, "\\'");c = { id: m, val: b, onclick: CKEDITOR.env.ie ? 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26' : "", clickFn: this._.getClick(), title: CKEDITOR.tools.htmlEncodeAttr(l || c), text: g || c };this._.pendingList.push(h.output(c));
              }, startGroup: function (a) {
                this._.close();var c = CKEDITOR.tools.getNextId();this._.groups[a] = c;this._.pendingHtml.push(g.output({ id: c, label: a }));
              }, commit: function () {
                this._.close();this.element.appendHtml(this._.pendingHtml.join(""));delete this._.size;this._.pendingHtml = [];
              }, toggle: function (a) {
                var c = this.isMarked(a);c ? this.unmark(a) : this.mark(a);return !c;
              }, hideGroup: function (a) {
                var c = (a = this.element.getDocument().getById(this._.groups[a])) && a.getNext();a && (a.setStyle("display", "none"), c && "ul" == c.getName() && c.setStyle("display", "none"));
              }, hideItem: function (a) {
                this.element.getDocument().getById(this._.items[a]).setStyle("display", "none");
              }, showAll: function () {
                var a = this._.items,
                    c = this._.groups,
                    g = this.element.getDocument(),
                    h;for (h in a) g.getById(a[h]).setStyle("display", "");for (var b in c) a = g.getById(c[b]), h = a.getNext(), a.setStyle("display", ""), h && "ul" == h.getName() && h.setStyle("display", "");
              }, mark: function (a) {
                this.multiSelect || this.unmarkAll();a = this._.items[a];var c = this.element.getDocument().getById(a);c.addClass("cke_selected");this.element.getDocument().getById(a + "_option").setAttribute("aria-selected", !0);this.onMark && this.onMark(c);
              }, markFirstDisplayed: function () {
                var a = this;this._.markFirstDisplayed(function () {
                  a.multiSelect || a.unmarkAll();
                });
              }, unmark: function (a) {
                var c = this.element.getDocument();a = this._.items[a];var g = c.getById(a);g.removeClass("cke_selected");c.getById(a + "_option").removeAttribute("aria-selected");
                this.onUnmark && this.onUnmark(g);
              }, unmarkAll: function () {
                var a = this._.items,
                    c = this.element.getDocument(),
                    g;for (g in a) {
                  var h = a[g];c.getById(h).removeClass("cke_selected");c.getById(h + "_option").removeAttribute("aria-selected");
                }this.onUnmark && this.onUnmark();
              }, isMarked: function (a) {
                return this.element.getDocument().getById(this._.items[a]).hasClass("cke_selected");
              }, focus: function (a) {
                this._.focusIndex = -1;var c = this.element.getElementsByTag("a"),
                    g,
                    h = -1;if (a) for (g = this.element.getDocument().getById(this._.items[a]).getFirst(); a = c.getItem(++h);) {
                  if (a.equals(g)) {
                    this._.focusIndex = h;break;
                  }
                } else this.element.focus();g && setTimeout(function () {
                  g.focus();
                }, 0);
              } } });
        } }), CKEDITOR.plugins.add("richcombo", { requires: "floatpanel,listblock,button", beforeInit: function (c) {
          c.ui.addHandler(CKEDITOR.UI_RICHCOMBO, CKEDITOR.ui.richCombo.handler);
        } }), function () {
        var c = '\x3cspan id\x3d"{id}" class\x3d"cke_combo cke_combo__{name} {cls}" role\x3d"presentation"\x3e\x3cspan id\x3d"{id}_label" class\x3d"cke_combo_label"\x3e{label}\x3c/span\x3e\x3ca class\x3d"cke_combo_button" title\x3d"{title}" tabindex\x3d"-1"' + (CKEDITOR.env.gecko && !CKEDITOR.env.hc ? "" : " href\x3d\"javascript:void('{titleJs}')\"") + ' hidefocus\x3d"true" role\x3d"button" aria-labelledby\x3d"{id}_label" aria-haspopup\x3d"listbox"',
            h = "";CKEDITOR.env.gecko && CKEDITOR.env.mac && (c += ' onkeypress\x3d"return false;"');CKEDITOR.env.gecko && (c += ' onblur\x3d"this.style.cssText \x3d this.style.cssText;"');CKEDITOR.env.ie && (h = 'return false;" onmouseup\x3d"CKEDITOR.tools.getMouseButton(event)\x3d\x3dCKEDITOR.MOUSE_BUTTON_LEFT\x26\x26');var c = c + (' onkeydown\x3d"return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus\x3d"return CKEDITOR.tools.callFunction({focusFn},event);" onclick\x3d"' + h + 'CKEDITOR.tools.callFunction({clickFn},this);return false;"\x3e\x3cspan id\x3d"{id}_text" class\x3d"cke_combo_text cke_combo_inlinelabel"\x3e{label}\x3c/span\x3e\x3cspan class\x3d"cke_combo_open"\x3e\x3cspan class\x3d"cke_combo_arrow"\x3e' + (CKEDITOR.env.hc ? "\x26#9660;" : CKEDITOR.env.air ? "\x26nbsp;" : "") + "\x3c/span\x3e\x3c/span\x3e\x3c/a\x3e\x3c/span\x3e"),
            g = CKEDITOR.addTemplate("combo", c);CKEDITOR.UI_RICHCOMBO = "richcombo";CKEDITOR.ui.richCombo = CKEDITOR.tools.createClass({ $: function (a) {
            CKEDITOR.tools.extend(this, a, { canGroup: !1, title: a.label, modes: { wysiwyg: 1 }, editorFocus: 1 });a = this.panel || {};delete this.panel;this.id = CKEDITOR.tools.getNextNumber();this.document = a.parent && a.parent.getDocument() || CKEDITOR.document;a.className = "cke_combopanel";a.block = { multiSelect: a.multiSelect, attributes: a.attributes };a.toolbarRelated = !0;this._ = { panelDefinition: a, items: {}, listeners: [] };
          }, proto: { renderHtml: function (a) {
              var c = [];this.render(a, c);return c.join("");
            }, render: function (a, c) {
              function h() {
                if (this.getState() != CKEDITOR.TRISTATE_ON) {
                  var b = this.modes[a.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED;a.readOnly && !this.readOnly && (b = CKEDITOR.TRISTATE_DISABLED);this.setState(b);this.setValue("");b != CKEDITOR.TRISTATE_DISABLED && this.refresh && this.refresh();
                }
              }var l = CKEDITOR.env,
                  m,
                  b,
                  d = "cke_" + this.id,
                  f = CKEDITOR.tools.addFunction(function (c) {
                b && (a.unlockSelection(1), b = 0);m.execute(c);
              }, this),
                  p = this;m = { id: d, combo: this, focus: function () {
                  CKEDITOR.document.getById(d).getChild(1).focus();
                }, execute: function (b) {
                  var c = p._;if (c.state != CKEDITOR.TRISTATE_DISABLED) if (p.createPanel(a), c.on) c.panel.hide();else {
                    p.commit();var d = p.getValue();d ? c.list.mark(d) : c.list.unmarkAll();c.panel.showBlock(p.id, new CKEDITOR.dom.element(b), 4);
                  }
                }, clickFn: f };this._.listeners.push(a.on("activeFilterChange", h, this));this._.listeners.push(a.on("mode", h, this));this._.listeners.push(a.on("selectionChange", h, this));!this.readOnly && this._.listeners.push(a.on("readOnly", h, this));var w = CKEDITOR.tools.addFunction(function (a, b) {
                a = new CKEDITOR.dom.event(a);var c = a.getKeystroke();switch (c) {case 13:case 32:case 40:
                    CKEDITOR.tools.callFunction(f, b);break;default:
                    m.onkey(m, c);}a.preventDefault();
              }),
                  y = CKEDITOR.tools.addFunction(function () {
                m.onfocus && m.onfocus();
              });b = 0;m.keyDownFn = w;l = { id: d, name: this.name || this.command, label: this.label, title: this.title, cls: this.className || "", titleJs: l.gecko && !l.hc ? "" : (this.title || "").replace("'", ""), keydownFn: w, focusFn: y, clickFn: f };g.output(l, c);if (this.onRender) this.onRender();return m;
            }, createPanel: function (a) {
              if (!this._.panel) {
                var c = this._.panelDefinition,
                    g = this._.panelDefinition.block,
                    h = c.parent || CKEDITOR.document.getBody(),
                    m = "cke_combopanel__" + this.name,
                    b = new CKEDITOR.ui.floatPanel(a, h, c),
                    c = b.addListBlock(this.id, g),
                    d = this;b.onShow = function () {
                  this.element.addClass(m);d.setState(CKEDITOR.TRISTATE_ON);d._.on = 1;d.editorFocus && !a.focusManager.hasFocus && a.focus();if (d.onOpen) d.onOpen();
                };b.onHide = function (b) {
                  this.element.removeClass(m);d.setState(d.modes && d.modes[a.mode] ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);d._.on = 0;if (!b && d.onClose) d.onClose();
                };b.onEscape = function () {
                  b.hide(1);
                };c.onClick = function (a, c) {
                  d.onClick && d.onClick.call(d, a, c);b.hide();
                };this._.panel = b;this._.list = c;b.getBlock(this.id).onHide = function () {
                  d._.on = 0;d.setState(CKEDITOR.TRISTATE_OFF);
                };this.init && this.init();
              }
            }, setValue: function (a, c) {
              this._.value = a;var g = this.document.getById("cke_" + this.id + "_text");g && (a || c ? g.removeClass("cke_combo_inlinelabel") : (c = this.label, g.addClass("cke_combo_inlinelabel")), g.setText("undefined" != typeof c ? c : a));var g = "undefined" != typeof c ? c : a,
                  h = this.label,
                  g = g === h ? g : g + ", " + h;(h = this.document.getById("cke_" + this.id + "_label")) && h.setText(g);
            }, getValue: function () {
              return this._.value || "";
            }, unmarkAll: function () {
              this._.list.unmarkAll();
            }, mark: function (a) {
              this._.list.mark(a);
            }, hideItem: function (a) {
              this._.list.hideItem(a);
            }, hideGroup: function (a) {
              this._.list.hideGroup(a);
            }, showAll: function () {
              this._.list.showAll();
            }, add: function (a, c, g) {
              this._.items[a] = g || a;this._.list.add(a, c, g);
            }, startGroup: function (a) {
              this._.list.startGroup(a);
            }, commit: function () {
              this._.committed || (this._.list.commit(), this._.committed = 1, CKEDITOR.ui.fire("ready", this));
              this._.committed = 1;
            }, setState: function (a) {
              if (this._.state != a) {
                var c = this.document.getById("cke_" + this.id),
                    g = c.getElementsByTag("a").getItem(0);c.setState(a, "cke_combo");a == CKEDITOR.TRISTATE_DISABLED ? c.setAttribute("aria-disabled", !0) : c.removeAttribute("aria-disabled");g && g.setAttribute("aria-expanded", a == CKEDITOR.TRISTATE_ON);this._.state = a;
              }
            }, getState: function () {
              return this._.state;
            }, enable: function () {
              this._.state == CKEDITOR.TRISTATE_DISABLED && this.setState(this._.lastState);
            }, disable: function () {
              this._.state != CKEDITOR.TRISTATE_DISABLED && (this._.lastState = this._.state, this.setState(CKEDITOR.TRISTATE_DISABLED));
            }, destroy: function () {
              CKEDITOR.tools.array.forEach(this._.listeners, function (a) {
                a.removeListener();
              });this._.listeners = [];
            }, select: function (a) {
              if (!CKEDITOR.tools.isEmpty(this._.items)) for (var c in this._.items) if (a({ value: c, text: this._.items[c] })) {
                this.setValue(c);break;
              }
            } }, statics: { handler: { create: function (a) {
                return new CKEDITOR.ui.richCombo(a);
              } } } });CKEDITOR.ui.prototype.addRichCombo = function (a, c) {
          this.add(a, CKEDITOR.UI_RICHCOMBO, c);
        };
      }(), function () {
        function c(a, c) {
          var m = a.config,
              b = c.lang,
              d = new CKEDITOR.style(c.styleDefinition),
              f = new e({ entries: c.entries, styleVariable: c.styleVariable, styleDefinition: c.styleDefinition }),
              p;a.addCommand(c.commandName, { exec: function (a, b) {
              var c = b.newStyle,
                  d = b.oldStyle,
                  e = a.getSelection().getRanges()[0];if (d || c) d && e.collapsed && g({ editor: a, range: e, style: d }), void 0 === c ? a.removeStyle(d) : (d && !h(d, c) && a.removeStyle(d), a.applyStyle(c));
            }, refresh: function (a, b) {
              d.checkApplicable(b, a, a.activeFilter) || this.setState(CKEDITOR.TRISTATE_DISABLED);
            } });p = a.getCommand(c.commandName);a.ui.addRichCombo(c.comboName, { label: b.label, title: b.panelTitle, command: c.commandName, toolbar: "styles," + c.order, defaultValue: "cke-default", allowedContent: d, requiredContent: d, contentTransformations: "span" === c.styleDefinition.element ? [[{ element: "font", check: "span", left: function (a) {
                return !!a.attributes.size || !!a.attributes.align || !!a.attributes.face;
              }, right: function (a) {
                var b = " x-small small medium large x-large xx-large 48px".split(" ");
                a.name = "span";a.attributes.size && (a.styles["font-size"] = b[a.attributes.size], delete a.attributes.size);a.attributes.align && (a.styles["text-align"] = a.attributes.align, delete a.attributes.align);a.attributes.face && (a.styles["font-family"] = a.attributes.face, delete a.attributes.face);
              } }]] : null, panel: { css: [CKEDITOR.skin.getPath("editor")].concat(m.contentsCss), multiSelect: !1, attributes: { "aria-label": b.panelTitle } }, init: function () {
              var c = "(" + a.lang.common.optionDefault + ")";this.startGroup(b.panelTitle);this.add(this.defaultValue, c, c);f.addToCombo(this);
            }, onClick: function (b) {
              var d = this.getValue();a.focus();a.fire("saveSnapshot");a.execCommand(c.commandName, { newStyle: f.getStyle(b), oldStyle: f.getStyle(d) });a.fire("saveSnapshot");
            }, onRender: function () {
              a.on("selectionChange", function (b) {
                var d = this.getValue();(b = f.getMatchingValue(a, b.data.path)) ? b != d && this.setValue(b) : this.setValue("", c.defaultLabel);
              }, this);p.on("state", function () {
                this.setState(p.state);
              }, this);
            }, refresh: function () {
              this.setState(p.state);
            } });
        }function h(a, c) {
          if (!(a instanceof CKEDITOR.style && c instanceof CKEDITOR.style)) return !1;var e = function (a, b) {
            var c = a.getDefinition().attributes,
                e = b.getDefinition().attributes;return CKEDITOR.tools.objectCompare(c, e);
          }(a, c),
              b = function (a, b) {
            return CKEDITOR.style.getStyleText(a.getDefinition()) === CKEDITOR.style.getStyleText(b.getDefinition());
          }(a, c);return e && b;
        }function g(c) {
          var e = c.editor,
              g = c.range,
              b = c.style,
              d,
              f,
              h;d = e.elementPath();if (c = d.contains(function (a) {
            return b.checkElementRemovable(a);
          })) {
            f = g.checkBoundaryOfElement(c, CKEDITOR.START);
            h = g.checkBoundaryOfElement(c, CKEDITOR.END);if (f && h) {
              for (f = g.createBookmark(); d = c.getFirst();) d.insertBefore(c);c.remove();g.moveToBookmark(f);
            } else f || h ? g.moveToPosition(c, f ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_END) : (g.splitElement(c), g.moveToPosition(c, CKEDITOR.POSITION_AFTER_END)), a(g, d.elements.slice(), c);e.getSelection().selectRanges([g]);
          }
        }function a(c, e, g) {
          var b = e.pop();if (b) {
            if (g) return a(c, e, b.equals(g) ? null : g);g = b.clone();c.insertNode(g);c.moveToPosition(g, CKEDITOR.POSITION_AFTER_START);
            a(c, e);
          }
        }var e = CKEDITOR.tools.createClass({ $: function (a) {
            var c = a.entries.split(";");this._.data = {};this._.names = [];for (var e = 0; e < c.length; e++) {
              var b = c[e],
                  d,
                  f;b ? (b = b.split("/"), d = b[0], b = b[1], f = {}, f[a.styleVariable] = b || d, this._.data[d] = new CKEDITOR.style(a.styleDefinition, f), this._.data[d]._.definition.name = d, this._.names.push(d)) : (c.splice(e, 1), e--);
            }
          }, proto: { getStyle: function (a) {
              return this._.data[a];
            }, addToCombo: function (a) {
              for (var c = 0; c < this._.names.length; c++) {
                var e = this._.names[c];a.add(e, this.getStyle(e).buildPreview(), e);
              }
            }, getMatchingValue: function (a, c) {
              for (var e = c.elements, b = 0, d; b < e.length; b++) if (d = e[b], d = this._.findMatchingStyleName(a, d)) return d;return null;
            } }, _: { findMatchingStyleName: function (a, c) {
              return CKEDITOR.tools.array.find(this._.names, function (e) {
                return this.getStyle(e).checkElementMatch(c, !0, a);
              }, this);
            } } });CKEDITOR.plugins.add("font", { requires: "richcombo", init: function (a) {
            var e = a.config;c(a, { comboName: "Font", commandName: "font", styleVariable: "family", lang: a.lang.font, entries: e.font_names, defaultLabel: e.font_defaultLabel,
              styleDefinition: e.font_style, order: 30 });c(a, { comboName: "FontSize", commandName: "fontSize", styleVariable: "size", lang: a.lang.font.fontSize, entries: e.fontSize_sizes, defaultLabel: e.fontSize_defaultLabel, styleDefinition: e.fontSize_style, order: 40 });
          } });
      }(), CKEDITOR.config.font_names = "Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif", CKEDITOR.config.font_defaultLabel = "", CKEDITOR.config.font_style = { element: "span", styles: { "font-family": "#(family)" }, overrides: [{ element: "font", attributes: { face: null } }] }, CKEDITOR.config.fontSize_sizes = "8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px", CKEDITOR.config.fontSize_defaultLabel = "", CKEDITOR.config.fontSize_style = { element: "span", styles: { "font-size": "#(size)" }, overrides: [{ element: "font", attributes: { size: null } }] }, CKEDITOR.plugins.add("format", { requires: "richcombo", init: function (c) {
          if (!c.blockless) {
            for (var h = c.config, g = c.lang.format, a = h.format_tags.split(";"), e = {}, k = 0, l = [], m = 0; m < a.length; m++) {
              var b = a[m],
                  d = new CKEDITOR.style(h["format_" + b]);if (!c.filter.customConfig || c.filter.check(d)) k++, e[b] = d, e[b]._.enterMode = c.config.enterMode, l.push(d);
            }0 !== k && c.ui.addRichCombo("Format", { label: g.label, title: g.panelTitle, toolbar: "styles,20", allowedContent: l, panel: { css: [CKEDITOR.skin.getPath("editor")].concat(h.contentsCss), multiSelect: !1, attributes: { "aria-label": g.panelTitle } },
              init: function () {
                this.startGroup(g.panelTitle);for (var a in e) {
                  var b = g["tag_" + a];this.add(a, e[a].buildPreview(b), b);
                }
              }, onClick: function (a) {
                c.focus();c.fire("saveSnapshot");a = e[a];var b = c.elementPath();c.fire("stylesRemove", { type: CKEDITOR.STYLE_BLOCK });a.checkActive(b, c) || c.applyStyle(a);setTimeout(function () {
                  c.fire("saveSnapshot");
                }, 0);
              }, onRender: function () {
                c.on("selectionChange", function (a) {
                  var b = this.getValue();a = a.data.path;this.refresh();for (var d in e) if (e[d].checkActive(a, c)) {
                    d != b && this.setValue(d, c.lang.format["tag_" + d]);return;
                  }this.setValue("");
                }, this);
              }, onOpen: function () {
                this.showAll();for (var a in e) c.activeFilter.check(e[a]) || this.hideItem(a);
              }, refresh: function () {
                var a = c.elementPath();if (a) {
                  if (a.isContextFor("p")) for (var b in e) if (c.activeFilter.check(e[b])) return;this.setState(CKEDITOR.TRISTATE_DISABLED);
                }
              } });
          }
        } }), CKEDITOR.config.format_tags = "p;h1;h2;h3;h4;h5;h6;pre;address;div", CKEDITOR.config.format_p = { element: "p" }, CKEDITOR.config.format_div = { element: "div" }, CKEDITOR.config.format_pre = { element: "pre" }, CKEDITOR.config.format_address = { element: "address" }, CKEDITOR.config.format_h1 = { element: "h1" }, CKEDITOR.config.format_h2 = { element: "h2" }, CKEDITOR.config.format_h3 = { element: "h3" }, CKEDITOR.config.format_h4 = { element: "h4" }, CKEDITOR.config.format_h5 = { element: "h5" }, CKEDITOR.config.format_h6 = { element: "h6" }, function () {
        var c = { canUndo: !1, exec: function (c) {
            var g = c.document.createElement("hr");c.insertElement(g);
          }, allowedContent: "hr", requiredContent: "hr" };CKEDITOR.plugins.add("horizontalrule", { init: function (h) {
            h.blockless || (h.addCommand("horizontalrule", c), h.ui.addButton && h.ui.addButton("HorizontalRule", { label: h.lang.horizontalrule.toolbar, command: "horizontalrule", toolbar: "insert,40" }));
          } });
      }(), CKEDITOR.plugins.add("htmlwriter", { init: function (c) {
          var h = new CKEDITOR.htmlWriter();h.forceSimpleAmpersand = c.config.forceSimpleAmpersand;h.indentationChars = "string" === typeof c.config.dataIndentationChars ? c.config.dataIndentationChars : "\t";c.dataProcessor.writer = h;
        } }), CKEDITOR.htmlWriter = CKEDITOR.tools.createClass({ base: CKEDITOR.htmlParser.basicWriter,
        $: function () {
          this.base();this.indentationChars = "\t";this.selfClosingEnd = " /\x3e";this.lineBreakChars = "\n";this.sortAttributes = 1;this._.indent = 0;this._.indentation = "";this._.inPre = 0;this._.rules = {};var c = CKEDITOR.dtd,
              h;for (h in CKEDITOR.tools.extend({}, c.$nonBodyContent, c.$block, c.$listItem, c.$tableContent)) this.setRules(h, { indent: !c[h]["#"], breakBeforeOpen: 1, breakBeforeClose: !c[h]["#"], breakAfterClose: 1, needsSpace: h in c.$block && !(h in { li: 1, dt: 1, dd: 1 }) });this.setRules("br", { breakAfterOpen: 1 });this.setRules("title", { indent: 0, breakAfterOpen: 0 });this.setRules("style", { indent: 0, breakBeforeClose: 1 });this.setRules("pre", { breakAfterOpen: 1, indent: 0 });
        }, proto: { openTag: function (c) {
            var h = this._.rules[c];this._.afterCloser && h && h.needsSpace && this._.needsSpace && this._.output.push("\n");this._.indent ? this.indentation() : h && h.breakBeforeOpen && (this.lineBreak(), this.indentation());this._.output.push("\x3c", c);this._.afterCloser = 0;
          }, openTagClose: function (c, h) {
            var g = this._.rules[c];h ? (this._.output.push(this.selfClosingEnd), g && g.breakAfterClose && (this._.needsSpace = g.needsSpace)) : (this._.output.push("\x3e"), g && g.indent && (this._.indentation += this.indentationChars));g && g.breakAfterOpen && this.lineBreak();"pre" == c && (this._.inPre = 1);
          }, attribute: function (c, h) {
            "string" == typeof h && (h = CKEDITOR.tools.htmlEncodeAttr(h), this.forceSimpleAmpersand && (h = h.replace(/&amp;/g, "\x26")));this._.output.push(" ", c, '\x3d"', h, '"');
          }, closeTag: function (c) {
            var h = this._.rules[c];h && h.indent && (this._.indentation = this._.indentation.substr(this.indentationChars.length));
            this._.indent ? this.indentation() : h && h.breakBeforeClose && (this.lineBreak(), this.indentation());this._.output.push("\x3c/", c, "\x3e");"pre" == c && (this._.inPre = 0);h && h.breakAfterClose && (this.lineBreak(), this._.needsSpace = h.needsSpace);this._.afterCloser = 1;
          }, text: function (c) {
            this._.indent && (this.indentation(), !this._.inPre && (c = CKEDITOR.tools.ltrim(c)));this._.output.push(c);
          }, comment: function (c) {
            this._.indent && this.indentation();this._.output.push("\x3c!--", c, "--\x3e");
          }, lineBreak: function () {
            !this._.inPre && 0 < this._.output.length && this._.output.push(this.lineBreakChars);this._.indent = 1;
          }, indentation: function () {
            !this._.inPre && this._.indentation && this._.output.push(this._.indentation);this._.indent = 0;
          }, reset: function () {
            this._.output = [];this._.indent = 0;this._.indentation = "";this._.afterCloser = 0;this._.inPre = 0;this._.needsSpace = 0;
          }, setRules: function (c, h) {
            var g = this._.rules[c];g ? CKEDITOR.tools.extend(g, h, !0) : this._.rules[c] = h;
          } } }), "use strict", function () {
        function c(a, c) {
          CKEDITOR.tools.extend(this, { editor: a, editable: a.editable(),
            doc: a.document, win: a.window }, c, !0);this.inline = this.editable.isInline();this.inline || (this.frame = this.win.getFrame());this.target = this[this.inline ? "editable" : "doc"];
        }function h(a, c) {
          CKEDITOR.tools.extend(this, c, { editor: a }, !0);
        }function g(a, c) {
          var f = a.editable();CKEDITOR.tools.extend(this, { editor: a, editable: f, inline: f.isInline(), doc: a.document, win: a.window, container: CKEDITOR.document.getBody(), winTop: CKEDITOR.document.getWindow() }, c, !0);this.hidden = {};this.visible = {};this.inline || (this.frame = this.win.getFrame());
          this.queryViewport();var g = CKEDITOR.tools.bind(this.queryViewport, this),
              h = CKEDITOR.tools.bind(this.hideVisible, this),
              l = CKEDITOR.tools.bind(this.removeAll, this);f.attachListener(this.winTop, "resize", g);f.attachListener(this.winTop, "scroll", g);f.attachListener(this.winTop, "resize", h);f.attachListener(this.win, "scroll", h);f.attachListener(this.inline ? f : this.frame, "mouseout", function (a) {
            var b = a.data.$.clientX;a = a.data.$.clientY;this.queryViewport();(b <= this.rect.left || b >= this.rect.right || a <= this.rect.top || a >= this.rect.bottom) && this.hideVisible();(0 >= b || b >= this.winTopPane.width || 0 >= a || a >= this.winTopPane.height) && this.hideVisible();
          }, this);f.attachListener(a, "resize", g);f.attachListener(a, "mode", l);a.on("destroy", l);this.lineTpl = new CKEDITOR.template('\x3cdiv data-cke-lineutils-line\x3d"1" class\x3d"cke_reset_all" style\x3d"{lineStyle}"\x3e\x3cspan style\x3d"{tipLeftStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3cspan style\x3d"{tipRightStyle}"\x3e\x26nbsp;\x3c/span\x3e\x3c/div\x3e').output({ lineStyle: CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({}, k, this.lineStyle, !0)), tipLeftStyle: CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({}, e, { left: "0px", "border-left-color": "red", "border-width": "6px 0 6px 6px" }, this.tipCss, this.tipLeftStyle, !0)), tipRightStyle: CKEDITOR.tools.writeCssText(CKEDITOR.tools.extend({}, e, { right: "0px", "border-right-color": "red", "border-width": "6px 6px 6px 0" }, this.tipCss, this.tipRightStyle, !0)) });
        }function a(a) {
          var c;if (c = a && a.type == CKEDITOR.NODE_ELEMENT) c = !(l[a.getComputedStyle("float")] || l[a.getAttribute("align")]);return c && !m[a.getComputedStyle("position")];
        }CKEDITOR.plugins.add("lineutils");CKEDITOR.LINEUTILS_BEFORE = 1;CKEDITOR.LINEUTILS_AFTER = 2;CKEDITOR.LINEUTILS_INSIDE = 4;c.prototype = { start: function (a) {
            var c = this,
                e = this.editor,
                g = this.doc,
                h,
                k,
                l,
                m,
                v = CKEDITOR.tools.eventsBuffer(50, function () {
              e.readOnly || "wysiwyg" != e.mode || (c.relations = {}, (k = g.$.elementFromPoint(l, m)) && k.nodeType && (h = new CKEDITOR.dom.element(k), c.traverseSearch(h), isNaN(l + m) || c.pixelSearch(h, l, m), a && a(c.relations, l, m)));
            });this.listener = this.editable.attachListener(this.target, "mousemove", function (a) {
              l = a.data.$.clientX;m = a.data.$.clientY;v.input();
            });this.editable.attachListener(this.inline ? this.editable : this.frame, "mouseout", function () {
              v.reset();
            });
          }, stop: function () {
            this.listener && this.listener.removeListener();
          }, getRange: function () {
            var a = {};a[CKEDITOR.LINEUTILS_BEFORE] = CKEDITOR.POSITION_BEFORE_START;a[CKEDITOR.LINEUTILS_AFTER] = CKEDITOR.POSITION_AFTER_END;a[CKEDITOR.LINEUTILS_INSIDE] = CKEDITOR.POSITION_AFTER_START;return function (c) {
              var e = this.editor.createRange();e.moveToPosition(this.relations[c.uid].element, a[c.type]);return e;
            };
          }(), store: function () {
            function b(a, b, c) {
              var e = a.getUniqueId();e in c ? c[e].type |= b : c[e] = { element: a, type: b };
            }return function (c, e) {
              var g;e & CKEDITOR.LINEUTILS_AFTER && a(g = c.getNext()) && g.isVisible() && (b(g, CKEDITOR.LINEUTILS_BEFORE, this.relations), e ^= CKEDITOR.LINEUTILS_AFTER);e & CKEDITOR.LINEUTILS_INSIDE && a(g = c.getFirst()) && g.isVisible() && (b(g, CKEDITOR.LINEUTILS_BEFORE, this.relations), e ^= CKEDITOR.LINEUTILS_INSIDE);b(c, e, this.relations);
            };
          }(), traverseSearch: function (b) {
            var c, e, g;do if (g = b.$["data-cke-expando"], !(g && g in this.relations)) {
              if (b.equals(this.editable)) break;if (a(b)) for (c in this.lookups) (e = this.lookups[c](b)) && this.store(b, e);
            } while ((!b || b.type != CKEDITOR.NODE_ELEMENT || "true" != b.getAttribute("contenteditable")) && (b = b.getParent()));
          }, pixelSearch: function () {
            function b(b, e, g, h, k) {
              for (var l = 0, m; k(g);) {
                g += h;if (25 == ++l) break;if (m = this.doc.$.elementFromPoint(e, g)) if (m == b) l = 0;else if (c(b, m) && (l = 0, a(m = new CKEDITOR.dom.element(m)))) return m;
              }
            }var c = CKEDITOR.env.ie || CKEDITOR.env.webkit ? function (a, b) {
              return a.contains(b);
            } : function (a, b) {
              return !!(a.compareDocumentPosition(b) & 16);
            };return function (c, d, e) {
              var g = this.win.getViewPaneSize().height,
                  h = b.call(this, c.$, d, e, -1, function (a) {
                return 0 < a;
              });d = b.call(this, c.$, d, e, 1, function (a) {
                return a < g;
              });if (h) for (this.traverseSearch(h); !h.getParent().equals(c);) h = h.getParent();if (d) for (this.traverseSearch(d); !d.getParent().equals(c);) d = d.getParent();for (; h || d;) {
                h && (h = h.getNext(a));if (!h || h.equals(d)) break;this.traverseSearch(h);d && (d = d.getPrevious(a));if (!d || d.equals(h)) break;this.traverseSearch(d);
              }
            };
          }(),
          greedySearch: function () {
            this.relations = {};for (var b = this.editable.getElementsByTag("*"), c = 0, e, g, h; e = b.getItem(c++);) if (!e.equals(this.editable) && e.type == CKEDITOR.NODE_ELEMENT && (e.hasAttribute("contenteditable") || !e.isReadOnly()) && a(e) && e.isVisible()) for (h in this.lookups) (g = this.lookups[h](e)) && this.store(e, g);return this.relations;
          } };h.prototype = { locate: function () {
            function b(b, c) {
              var e = b.element[c === CKEDITOR.LINEUTILS_BEFORE ? "getPrevious" : "getNext"]();return e && a(e) ? (b.siblingRect = e.getClientRect(), c == CKEDITOR.LINEUTILS_BEFORE ? (b.siblingRect.bottom + b.elementRect.top) / 2 : (b.elementRect.bottom + b.siblingRect.top) / 2) : c == CKEDITOR.LINEUTILS_BEFORE ? b.elementRect.top : b.elementRect.bottom;
            }return function (a) {
              var c;this.locations = {};for (var e in a) c = a[e], c.elementRect = c.element.getClientRect(), c.type & CKEDITOR.LINEUTILS_BEFORE && this.store(e, CKEDITOR.LINEUTILS_BEFORE, b(c, CKEDITOR.LINEUTILS_BEFORE)), c.type & CKEDITOR.LINEUTILS_AFTER && this.store(e, CKEDITOR.LINEUTILS_AFTER, b(c, CKEDITOR.LINEUTILS_AFTER)), c.type & CKEDITOR.LINEUTILS_INSIDE && this.store(e, CKEDITOR.LINEUTILS_INSIDE, (c.elementRect.top + c.elementRect.bottom) / 2);return this.locations;
            };
          }(), sort: function () {
            var a, c, e, g;return function (h, k) {
              a = this.locations;c = [];for (var l in a) for (var m in a[l]) if (e = Math.abs(h - a[l][m]), c.length) {
                for (g = 0; g < c.length; g++) if (e < c[g].dist) {
                  c.splice(g, 0, { uid: +l, type: m, dist: e });break;
                }g == c.length && c.push({ uid: +l, type: m, dist: e });
              } else c.push({ uid: +l, type: m, dist: e });return "undefined" != typeof k ? c.slice(0, k) : c;
            };
          }(), store: function (a, c, e) {
            this.locations[a] || (this.locations[a] = {});this.locations[a][c] = e;
          } };var e = { display: "block", width: "0px", height: "0px", "border-color": "transparent", "border-style": "solid", position: "absolute", top: "-6px" },
            k = { height: "0px", "border-top": "1px dashed red", position: "absolute", "z-index": 9999 };g.prototype = { removeAll: function () {
            for (var a in this.hidden) this.hidden[a].remove(), delete this.hidden[a];for (a in this.visible) this.visible[a].remove(), delete this.visible[a];
          }, hideLine: function (a) {
            var c = a.getUniqueId();
            a.hide();this.hidden[c] = a;delete this.visible[c];
          }, showLine: function (a) {
            var c = a.getUniqueId();a.show();this.visible[c] = a;delete this.hidden[c];
          }, hideVisible: function () {
            for (var a in this.visible) this.hideLine(this.visible[a]);
          }, placeLine: function (a, c) {
            var e, g, h;if (e = this.getStyle(a.uid, a.type)) {
              for (h in this.visible) if (this.visible[h].getCustomData("hash") !== this.hash) {
                g = this.visible[h];break;
              }if (!g) for (h in this.hidden) if (this.hidden[h].getCustomData("hash") !== this.hash) {
                this.showLine(g = this.hidden[h]);
                break;
              }g || this.showLine(g = this.addLine());g.setCustomData("hash", this.hash);this.visible[g.getUniqueId()] = g;g.setStyles(e);c && c(g);
            }
          }, getStyle: function (a, c) {
            var e = this.relations[a],
                g = this.locations[a][c],
                h = {};h.width = e.siblingRect ? Math.max(e.siblingRect.width, e.elementRect.width) : e.elementRect.width;h.top = this.inline ? g + this.winTopScroll.y - this.rect.relativeY : this.rect.top + this.winTopScroll.y + g;if (h.top - this.winTopScroll.y < this.rect.top || h.top - this.winTopScroll.y > this.rect.bottom) return !1;this.inline ? h.left = e.elementRect.left - this.rect.relativeX : (0 < e.elementRect.left ? h.left = this.rect.left + e.elementRect.left : (h.width += e.elementRect.left, h.left = this.rect.left), 0 < (e = h.left + h.width - (this.rect.left + this.winPane.width)) && (h.width -= e));h.left += this.winTopScroll.x;for (var k in h) h[k] = CKEDITOR.tools.cssLength(h[k]);return h;
          }, addLine: function () {
            var a = CKEDITOR.dom.element.createFromHtml(this.lineTpl);a.appendTo(this.container);return a;
          }, prepare: function (a, c) {
            this.relations = a;this.locations = c;this.hash = Math.random();
          },
          cleanup: function () {
            var a, c;for (c in this.visible) a = this.visible[c], a.getCustomData("hash") !== this.hash && this.hideLine(a);
          }, queryViewport: function () {
            this.winPane = this.win.getViewPaneSize();this.winTopScroll = this.winTop.getScrollPosition();this.winTopPane = this.winTop.getViewPaneSize();this.rect = this.getClientRect(this.inline ? this.editable : this.frame);
          }, getClientRect: function (a) {
            a = a.getClientRect();var c = this.container.getDocumentPosition(),
                e = this.container.getComputedStyle("position");a.relativeX = a.relativeY = 0;"static" != e && (a.relativeY = c.y, a.relativeX = c.x, a.top -= a.relativeY, a.bottom -= a.relativeY, a.left -= a.relativeX, a.right -= a.relativeX);return a;
          } };var l = { left: 1, right: 1, center: 1 },
            m = { absolute: 1, fixed: 1 };CKEDITOR.plugins.lineutils = { finder: c, locator: h, liner: g };
      }(), function () {
        function c(c) {
          return c.getName && !c.hasAttribute("data-cke-temp");
        }CKEDITOR.plugins.add("widgetselection", { init: function (c) {
            if (CKEDITOR.env.webkit) {
              var g = CKEDITOR.plugins.widgetselection;c.on("contentDom", function (a) {
                a = a.editor;var c = a.editable();
                c.attachListener(c, "keydown", function (a) {
                  a.data.getKeystroke() == CKEDITOR.CTRL + 65 && CKEDITOR.tools.setTimeout(function () {
                    g.addFillers(c) || g.removeFillers(c);
                  }, 0);
                }, null, null, -1);a.on("selectionCheck", function (a) {
                  g.removeFillers(a.editor.editable());
                });a.on("paste", function (a) {
                  a.data.dataValue = g.cleanPasteData(a.data.dataValue);
                });"selectall" in a.plugins && g.addSelectAllIntegration(a);
              });
            }
          } });CKEDITOR.plugins.widgetselection = { startFiller: null, endFiller: null, fillerAttribute: "data-cke-filler-webkit", fillerContent: "\x26nbsp;",
          fillerTagName: "div", addFillers: function (h) {
            var g = h.editor;if (!this.isWholeContentSelected(h) && 0 < h.getChildCount()) {
              var a = h.getFirst(c),
                  e = h.getLast(c);a && a.type == CKEDITOR.NODE_ELEMENT && !a.isEditable() && (this.startFiller = this.createFiller(), h.append(this.startFiller, 1));e && e.type == CKEDITOR.NODE_ELEMENT && !e.isEditable() && (this.endFiller = this.createFiller(!0), h.append(this.endFiller, 0));if (this.hasFiller(h)) return g = g.createRange(), g.selectNodeContents(h), g.select(), !0;
            }return !1;
          }, removeFillers: function (c) {
            if (this.hasFiller(c) && !this.isWholeContentSelected(c)) {
              var g = c.findOne(this.fillerTagName + "[" + this.fillerAttribute + "\x3dstart]"),
                  a = c.findOne(this.fillerTagName + "[" + this.fillerAttribute + "\x3dend]");this.startFiller && g && this.startFiller.equals(g) ? this.removeFiller(this.startFiller, c) : this.startFiller = g;this.endFiller && a && this.endFiller.equals(a) ? this.removeFiller(this.endFiller, c) : this.endFiller = a;
            }
          }, cleanPasteData: function (c) {
            c && c.length && (c = c.replace(this.createFillerRegex(), "").replace(this.createFillerRegex(!0), ""));
            return c;
          }, isWholeContentSelected: function (c) {
            var g = c.editor.getSelection().getRanges()[0];return !g || g && g.collapsed ? !1 : (g = g.clone(), g.enlarge(CKEDITOR.ENLARGE_ELEMENT), !!(g && c && g.startContainer && g.endContainer && 0 === g.startOffset && g.endOffset === c.getChildCount() && g.startContainer.equals(c) && g.endContainer.equals(c)));
          }, hasFiller: function (c) {
            return 0 < c.find(this.fillerTagName + "[" + this.fillerAttribute + "]").count();
          }, createFiller: function (c) {
            var g = new CKEDITOR.dom.element(this.fillerTagName);g.setHtml(this.fillerContent);
            g.setAttribute(this.fillerAttribute, c ? "end" : "start");g.setAttribute("data-cke-temp", 1);g.setStyles({ display: "block", width: 0, height: 0, padding: 0, border: 0, margin: 0, position: "absolute", top: 0, left: "-9999px", opacity: 0, overflow: "hidden" });return g;
          }, removeFiller: function (c, g) {
            if (c) {
              var a = g.editor,
                  e = g.editor.getSelection().getRanges()[0].startPath(),
                  k = a.createRange(),
                  l,
                  m;e.contains(c) && (l = c.getHtml(), m = !0);e = "start" == c.getAttribute(this.fillerAttribute);c.remove();l && 0 < l.length && l != this.fillerContent ? (g.insertHtmlIntoRange(l, a.getSelection().getRanges()[0]), k.setStartAt(g.getChild(g.getChildCount() - 1), CKEDITOR.POSITION_BEFORE_END), a.getSelection().selectRanges([k])) : m && (e ? k.setStartAt(g.getFirst().getNext(), CKEDITOR.POSITION_AFTER_START) : k.setEndAt(g.getLast().getPrevious(), CKEDITOR.POSITION_BEFORE_END), g.editor.getSelection().selectRanges([k]));
            }
          }, createFillerRegex: function (c) {
            var g = this.createFiller(c).getOuterHtml().replace(/style="[^"]*"/gi, 'style\x3d"[^"]*"').replace(/>[^<]*</gi, "\x3e[^\x3c]*\x3c");return new RegExp((c ? "" : "^") + g + (c ? "$" : ""));
          }, addSelectAllIntegration: function (c) {
            var g = this;c.editable().attachListener(c, "beforeCommandExec", function (a) {
              var e = c.editable();"selectAll" == a.data.name && e && g.addFillers(e);
            }, null, null, 9999);
          } };
      }(), "use strict", function () {
        function c(a) {
          this.editor = a;this.registered = {};this.instances = {};this.selected = [];this.widgetHoldingFocusedEditable = this.focused = null;this._ = { nextId: 0, upcasts: [], upcastCallbacks: [], filters: {} };D(this);C(this);this.on("checkWidgets", l);this.editor.on("contentDomInvalidated", this.checkWidgets, this);A(this);q(this);u(this);x(this);z(this);
        }function h(a, b, c, d, e) {
          var f = a.editor;CKEDITOR.tools.extend(this, d, { editor: f, id: b, inline: "span" == c.getParent().getName(), element: c, data: CKEDITOR.tools.extend({}, "function" == typeof d.defaults ? d.defaults() : d.defaults), dataReady: !1, inited: !1, ready: !1, edit: h.prototype.edit, focusedEditable: null, definition: d, repository: a, draggable: !1 !== d.draggable, _: { downcastFn: d.downcast && "string" == typeof d.downcast ? d.downcasts[d.downcast] : d.downcast } }, !0);
          a.fire("instanceCreated", this);N(this, d);this.init && this.init();this.inited = !0;(a = this.element.data("cke-widget-data")) && this.setData(JSON.parse(decodeURIComponent(a)));e && this.setData(e);this.data.classes || this.setData("classes", this.getClasses());this.dataReady = !0;Z(this);this.fire("data", this.data);this.isInited() && f.editable().contains(this.wrapper) && (this.ready = !0, this.fire("ready"));
        }function g(a, b, c) {
          CKEDITOR.dom.element.call(this, b.$);this.editor = a;this._ = {};b = this.filter = c.filter;CKEDITOR.dtd[this.getName()].p ? (this.enterMode = b ? b.getAllowedEnterMode(a.enterMode) : a.enterMode, this.shiftEnterMode = b ? b.getAllowedEnterMode(a.shiftEnterMode, !0) : a.shiftEnterMode) : this.enterMode = this.shiftEnterMode = CKEDITOR.ENTER_BR;
        }function a(a, b) {
          a.addCommand(b.name, { exec: function (a, c) {
              function d() {
                a.widgets.finalizeCreation(h);
              }var e = a.widgets.focused;if (e && e.name == b.name) e.edit();else if (b.insert) b.insert({ editor: a, commandData: c });else if (b.template) {
                var e = "function" == typeof b.defaults ? b.defaults() : b.defaults,
                    e = CKEDITOR.dom.element.createFromHtml(b.template.output(e), a.document),
                    f,
                    g = a.widgets.wrapElement(e, b.name),
                    h = new CKEDITOR.dom.documentFragment(g.getDocument());h.append(g);(f = a.widgets.initOn(e, b, c && c.startupData)) ? (e = f.once("edit", function (b) {
                  if (b.data.dialog) f.once("dialog", function (b) {
                    b = b.data;var c, e;c = b.once("ok", d, null, null, 20);e = b.once("cancel", function (b) {
                      b.data && !1 === b.data.hide || a.widgets.destroy(f, !0);
                    });b.once("hide", function () {
                      c.removeListener();e.removeListener();
                    });
                  });else d();
                }, null, null, 999), f.edit(), e.removeListener()) : d();
              }
            }, allowedContent: b.allowedContent,
            requiredContent: b.requiredContent, contentForms: b.contentForms, contentTransformations: b.contentTransformations });
        }function e(a, b) {
          function d(b, c, e) {
            var f = CKEDITOR.tools.getIndex(a._.upcasts, function (a) {
              return a[2] > e;
            });0 > f && (f = a._.upcasts.length);a._.upcasts.splice(f, 0, [CKEDITOR.tools.bind(b, c), c.name, e]);
          }var e = b.upcast,
              f = b.upcastPriority || 10;e && ("string" == typeof e ? d(function c(a, d) {
            var e = b.upcast.split(","),
                f,
                g;for (g = 0; g < e.length; g++) if (f = e[g], f === a.name) return b.upcasts[f].call(this, a, d);return !1;
          }, b, f) : d(e, b, f));
        }function k(a, b) {
          a.focused = null;if (b.isInited()) {
            var c = b.editor.checkDirty();a.fire("widgetBlurred", { widget: b });b.setFocused(!1);!c && b.editor.resetDirty();
          }
        }function l(a) {
          a = a.data;if ("wysiwyg" == this.editor.mode) {
            var b = this.editor.editable(),
                c = this.instances,
                d,
                e,
                f,
                g;if (b) {
              for (d in c) c[d].isReady() && !b.contains(c[d].wrapper) && this.destroy(c[d], !0);if (a && a.initOnlyNew) c = this.initOnAll();else {
                var k = b.find(".cke_widget_wrapper"),
                    c = [];d = 0;for (e = k.count(); d < e; d++) {
                  f = k.getItem(d);if (g = !this.getByElement(f, !0)) {
                    a: {
                      g = t;for (var l = f; l = l.getParent();) if (g(l)) {
                        g = !0;break a;
                      }g = !1;
                    }g = !g;
                  }g && b.contains(f) && (f.addClass("cke_widget_new"), c.push(this.initOn(f.getFirst(h.isDomWidgetElement))));
                }
              }a && a.focusInited && 1 == c.length && c[0].focus();
            }
          }
        }function m(a) {
          if ("undefined" != typeof a.attributes && a.attributes["data-widget"]) {
            var c = b(a),
                e = d(a),
                f = !1;c && c.value && c.value.match(/^\s/g) && (c.parent.attributes["data-cke-white-space-first"] = 1, c.value = c.value.replace(/^\s/g, "\x26nbsp;"), f = !0);e && e.value && e.value.match(/\s$/g) && (e.parent.attributes["data-cke-white-space-last"] = 1, e.value = e.value.replace(/\s$/g, "\x26nbsp;"), f = !0);f && (a.attributes["data-cke-widget-white-space"] = 1);
          }
        }function b(a) {
          return a.find(function (a) {
            return 3 === a.type;
          }, !0).shift();
        }function d(a) {
          return a.find(function (a) {
            return 3 === a.type;
          }, !0).pop();
        }function f(a, b, c) {
          if (!c.allowedContent && !c.disallowedContent) return null;var d = this._.filters[a];d || (this._.filters[a] = d = {});a = d[b];a || (a = c.allowedContent ? new CKEDITOR.filter(c.allowedContent) : this.editor.filter.clone(), d[b] = a, c.disallowedContent && a.disallow(c.disallowedContent));
          return a;
        }function p(a) {
          var b = [],
              c = a._.upcasts,
              d = a._.upcastCallbacks;return { toBeWrapped: b, iterator: function (a) {
              var e, f, g, k, l;if ("data-cke-widget-wrapper" in a.attributes) return (a = a.getFirst(h.isParserWidgetElement)) && b.push([a]), !1;if ("data-widget" in a.attributes) return b.push([a]), !1;if (l = c.length) {
                if (a.attributes["data-cke-widget-upcasted"]) return !1;k = 0;for (e = d.length; k < e; ++k) if (!1 === d[k](a)) return;for (k = 0; k < l; ++k) if (e = c[k], g = {}, f = e[0](a, g)) return f instanceof CKEDITOR.htmlParser.element && (a = f), a.attributes["data-cke-widget-data"] = encodeURIComponent(JSON.stringify(g)), a.attributes["data-cke-widget-upcasted"] = 1, b.push([a, e[1]]), !1;
              }
            } };
        }function w(a, b) {
          return { tabindex: -1, contenteditable: "false", "data-cke-widget-wrapper": 1, "data-cke-filter": "off", "class": "cke_widget_wrapper cke_widget_new cke_widget_" + (a ? "inline" : "block") + (b ? " cke_widget_" + b : "") };
        }function y(a, b, c) {
          if (a.type == CKEDITOR.NODE_ELEMENT) {
            var d = CKEDITOR.dtd[a.name];if (d && !d[c.name]) {
              var d = a.split(b),
                  e = a.parent;b = d.getIndex();a.children.length || (--b, a.remove());d.children.length || d.remove();return y(e, b, c);
            }
          }a.add(c, b);
        }function r(a, b) {
          return "boolean" == typeof a.inline ? a.inline : !!CKEDITOR.dtd.$inline[b];
        }function t(a) {
          return a.hasAttribute("data-cke-temp");
        }function v(a, b, c, d) {
          var e = a.editor;e.fire("lockSnapshot");c ? (d = c.data("cke-widget-editable"), d = b.editables[d], a.widgetHoldingFocusedEditable = b, b.focusedEditable = d, c.addClass("cke_widget_editable_focused"), d.filter && e.setActiveFilter(d.filter), e.setActiveEnterMode(d.enterMode, d.shiftEnterMode)) : (d || b.focusedEditable.removeClass("cke_widget_editable_focused"), b.focusedEditable = null, a.widgetHoldingFocusedEditable = null, e.setActiveFilter(null), e.setActiveEnterMode(null, null));e.fire("unlockSnapshot");
        }function B(a) {
          a.contextMenu && a.contextMenu.addListener(function (b) {
            if (b = a.widgets.getByElement(b, !0)) return b.fire("contextMenu", {});
          });
        }function n(a, b) {
          return CKEDITOR.tools.trim(b);
        }function x(a) {
          var b = a.editor,
              c = CKEDITOR.plugins.lineutils;b.on("dragstart", function (c) {
            var d = c.data.target;h.isDomDragHandler(d) && (d = a.getByElement(d), c.data.dataTransfer.setData("cke/widget-id", d.id), b.focus(), d.focus());
          });b.on("drop", function (c) {
            var e = c.data.dataTransfer,
                f = e.getData("cke/widget-id"),
                g = e.getTransferType(b),
                e = b.createRange(),
                h = function (a) {
              a = a.getBoundaryNodes().startNode;a.type !== CKEDITOR.NODE_ELEMENT && (a = a.getParent());return b.widgets.getByElement(a);
            }(c.data.dropRange);if ("" !== f && g === CKEDITOR.DATA_TRANSFER_CROSS_EDITORS) c.cancel();else if (g == CKEDITOR.DATA_TRANSFER_INTERNAL) if ("" === f && 0 < b.widgets.selected.length) c.data.dataTransfer.setData("text/html", O(b));else if (f = a.instances[f]) (function d(a, b) {
              return a && b ? a.wrapper.equals(b.wrapper) || a.wrapper.contains(b.wrapper) : !1;
            })(f, h) ? c.cancel() : (e.setStartBefore(f.wrapper), e.setEndAfter(f.wrapper), c.data.dragRange = e, delete CKEDITOR.plugins.clipboard.dragStartContainerChildCount, delete CKEDITOR.plugins.clipboard.dragEndContainerChildCount, c.data.dataTransfer.setData("text/html", f.getClipboardHtml()), b.widgets.destroy(f, !0));
          });b.on("contentDom", function () {
            var d = b.editable();CKEDITOR.tools.extend(a, { finder: new c.finder(b, { lookups: { "default": function (b) {
                    if (!b.is(CKEDITOR.dtd.$listItem) && b.is(CKEDITOR.dtd.$block) && !h.isDomNestedEditable(b) && !a._.draggedWidget.wrapper.contains(b)) {
                      var c = h.getNestedEditable(d, b);if (c) {
                        b = a._.draggedWidget;if (a.getByElement(c) == b) return;c = CKEDITOR.filter.instances[c.data("cke-filter")];b = b.requiredContent;if (c && b && !c.check(b)) return;
                      }return CKEDITOR.LINEUTILS_BEFORE | CKEDITOR.LINEUTILS_AFTER;
                    }
                  } } }), locator: new c.locator(b), liner: new c.liner(b, { lineStyle: { cursor: "move !important", "border-top-color": "#666" },
                tipLeftStyle: { "border-left-color": "#666" }, tipRightStyle: { "border-right-color": "#666" } }) }, !0);
          });
        }function q(a) {
          var b = a.editor;b.on("contentDom", function () {
            var c = b.editable(),
                d = c.isInline() ? c : b.document,
                e,
                f;c.attachListener(d, "mousedown", function (c) {
              var d = c.data.getTarget();e = d instanceof CKEDITOR.dom.element ? a.getByElement(d) : null;f = 0;e && (e.inline && d.type == CKEDITOR.NODE_ELEMENT && d.hasAttribute("data-cke-widget-drag-handler") ? (f = 1, a.focused != e && b.getSelection().removeAllRanges()) : h.getNestedEditable(e.wrapper, d) ? e = null : (c.data.preventDefault(), CKEDITOR.env.ie || e.focus()));
            });c.attachListener(d, "mouseup", function () {
              f && e && e.wrapper && (f = 0, e.focus());
            });CKEDITOR.env.ie && c.attachListener(d, "mouseup", function () {
              setTimeout(function () {
                e && e.wrapper && c.contains(e.wrapper) && (e.focus(), e = null);
              });
            });
          });b.on("doubleclick", function (b) {
            var c = a.getByElement(b.data.element);if (c && !h.getNestedEditable(c.wrapper, b.data.element)) return c.fire("doubleclick", { element: b.data.element });
          }, null, null, 1);
        }function u(a) {
          a.editor.on("key", function (b) {
            var c = a.focused,
                d = a.widgetHoldingFocusedEditable,
                e;c ? e = c.fire("key", { keyCode: b.data.keyCode }) : d && (c = b.data.keyCode, b = d.focusedEditable, c == CKEDITOR.CTRL + 65 ? (c = b.getBogus(), d = d.editor.createRange(), d.selectNodeContents(b), c && d.setEndAt(c, CKEDITOR.POSITION_BEFORE_START), d.select(), e = !1) : 8 == c || 46 == c ? (e = d.editor.getSelection().getRanges(), d = e[0], e = !(1 == e.length && d.collapsed && d.checkBoundaryOfElement(b, CKEDITOR[8 == c ? "START" : "END"]))) : e = void 0);return e;
          }, null, null, 1);
        }function z(a) {
          function b(d) {
            1 > a.selected.length || H(c, "cut" === d.name);
          }var c = a.editor;c.on("contentDom", function () {
            var a = c.editable();a.attachListener(a, "copy", b);a.attachListener(a, "cut", b);
          });
        }function A(a) {
          function c(a) {
            return a ? a.type == CKEDITOR.NODE_TEXT ? c(a.getParent()) : e.widgets.getByElement(a) : null;
          }function d() {
            a.fire("checkSelection");
          }
          var e = a.editor;e.on("selectionCheck", d);e.on("contentDom", function () {
            e.editable().attachListener(e, "key", function () {
              setTimeout(d, 10);
            });
          });if (!CKEDITOR.env.ie) a.on("checkSelection", function b() {
            var a = e.getSelection();if (a && (a = a.getRanges()[0]) && !a.collapsed) {
              var d = c(a.startContainer),
                  f = c(a.endContainer);!d && f ? (a.setEndBefore(f.wrapper), a.select()) : d && !f && (a.setStartAfter(d.wrapper), a.select());
            }
          });a.on("checkSelection", a.checkSelection, a);e.on("selectionChange", function (b) {
            var c = (b = h.getNestedEditable(e.editable(), b.data.selection.getStartElement())) && a.getByElement(b),
                d = a.widgetHoldingFocusedEditable;d ? d === c && d.focusedEditable.equals(b) || (v(a, d, null), c && b && v(a, c, b)) : c && b && v(a, c, b);
          });e.on("dataReady", function () {
            E(a).commit();
          });
          e.on("blur", function () {
            var b;(b = a.focused) && k(a, b);(b = a.widgetHoldingFocusedEditable) && v(a, b, null);
          });
        }function C(a) {
          var c = a.editor,
              e = {};c.on("toDataFormat", function (c) {
            var f = CKEDITOR.tools.getNextNumber(),
                g = [];c.data.downcastingSessionId = f;e[f] = g;c.data.dataValue.forEach(function (c) {
              var e = c.attributes,
                  f;if ("data-cke-widget-white-space" in e) {
                f = b(c);var k = d(c);f.parent.attributes["data-cke-white-space-first"] && (f.value = f.value.replace(/^&nbsp;/g, " "));k.parent.attributes["data-cke-white-space-last"] && (k.value = k.value.replace(/&nbsp;$/g, " "));
              }if ("data-cke-widget-id" in e) {
                if (e = a.instances[e["data-cke-widget-id"]]) f = c.getFirst(h.isParserWidgetElement), g.push({ wrapper: c, element: f, widget: e, editables: {} }), "1" != f.attributes["data-cke-widget-keep-attr"] && delete f.attributes["data-widget"];
              } else if ("data-cke-widget-editable" in e) return 0 < g.length && (g[g.length - 1].editables[e["data-cke-widget-editable"]] = c), !1;
            }, CKEDITOR.NODE_ELEMENT, !0);
          }, null, null, 8);c.on("toDataFormat", function (a) {
            if (a.data.downcastingSessionId) for (var b = e[a.data.downcastingSessionId], c, d, f, g, h, k; c = b.shift();) {
              d = c.widget;f = c.element;g = d._.downcastFn && d._.downcastFn.call(d, f);a.data.widgetsCopy && d.getClipboardHtml && (g = CKEDITOR.htmlParser.fragment.fromHtml(d.getClipboardHtml()), g = g.children[0]);for (k in c.editables) h = c.editables[k], delete h.attributes.contenteditable, h.setHtml(d.editables[k].getData());g || (g = f);c.wrapper.replaceWith(g);
            }
          }, null, null, 13);c.on("contentDomUnload", function () {
            a.destroyAll(!0);
          });
        }function D(a) {
          var b = a.editor,
              c,
              d;b.on("toHtml", function (b) {
            var d = p(a),
                e;for (b.data.dataValue.forEach(d.iterator, CKEDITOR.NODE_ELEMENT, !0); e = d.toBeWrapped.pop();) {
              var f = e[0],
                  g = f.parent;g.type == CKEDITOR.NODE_ELEMENT && g.attributes["data-cke-widget-wrapper"] && g.replaceWith(f);a.wrapElement(e[0], e[1]);
            }c = b.data.protectedWhitespaces ? 3 == b.data.dataValue.children.length && h.isParserWidgetWrapper(b.data.dataValue.children[1]) : 1 == b.data.dataValue.children.length && h.isParserWidgetWrapper(b.data.dataValue.children[0]);
          }, null, null, 8);b.on("dataReady", function () {
            if (d) for (var c = b.editable().find(".cke_widget_wrapper"), e, f, g = 0, k = c.count(); g < k; ++g) e = c.getItem(g), f = e.getFirst(h.isDomWidgetElement), f.type == CKEDITOR.NODE_ELEMENT && f.data("widget") ? (f.replace(e), a.wrapElement(f)) : e.remove();d = 0;a.destroyAll(!0);a.initOnAll();
          });b.on("loadSnapshot", function (b) {
            /data-cke-widget/.test(b.data) && (d = 1);a.destroyAll(!0);
          }, null, null, 9);b.on("paste", function (a) {
            a = a.data;a.dataValue = a.dataValue.replace(ca, n);a.range && (a = h.getNestedEditable(b.editable(), a.range.startContainer)) && (a = CKEDITOR.filter.instances[a.data("cke-filter")]) && b.setActiveFilter(a);
          });b.on("afterInsertHtml", function (d) {
            d.data.intoRange ? a.checkWidgets({ initOnlyNew: !0 }) : (b.fire("lockSnapshot"), a.checkWidgets({ initOnlyNew: !0, focusInited: c }), b.fire("unlockSnapshot"));
          });
        }function E(a) {
          var b = a.selected,
              c = [],
              d = b.slice(0),
              e = null;return { select: function (a) {
              0 > CKEDITOR.tools.indexOf(b, a) && c.push(a);a = CKEDITOR.tools.indexOf(d, a);0 <= a && d.splice(a, 1);return this;
            }, focus: function (a) {
              e = a;return this;
            }, commit: function () {
              var f = a.focused !== e,
                  g,
                  h;a.editor.fire("lockSnapshot");for (f && (g = a.focused) && k(a, g); g = d.pop();) b.splice(CKEDITOR.tools.indexOf(b, g), 1), g.isInited() && (h = g.editor.checkDirty(), g.setSelected(!1), !h && g.editor.resetDirty());f && e && (h = a.editor.checkDirty(), a.focused = e, a.fire("widgetFocused", { widget: e }), e.setFocused(!0), !h && a.editor.resetDirty());for (; g = c.pop();) b.push(g), g.setSelected(!0);a.editor.fire("unlockSnapshot");
            } };
        }function G(a) {
          a && a.addFilterRule(function (a) {
            return a.replace(/\s*cke_widget_selected/g, "").replace(/\s*cke_widget_focused/g, "");
          });
        }function K(a, b, c) {
          var d = 0;b = I(b);var e = a.data.classes || {},
              f;if (b) {
            for (e = CKEDITOR.tools.clone(e); f = b.pop();) c ? e[f] || (d = e[f] = 1) : e[f] && (delete e[f], d = 1);d && a.setData("classes", e);
          }
        }function F(a) {
          a.cancel();
        }function M(a, b) {
          var c = function (a) {
            return a == CKEDITOR.ENTER_BR ? "br" : a == CKEDITOR.ENTER_DIV ? "div" : "p";
          }(a.editor.config.enterMode),
              d = new CKEDITOR.dom.element(c);"br" !== c && d.appendBogus();"after" === b ? d.insertAfter(a.wrapper) : d.insertBefore(a.wrapper);(function (b) {
            var c = a.editor.createRange();c.setStart(b, 0);a.editor.getSelection().selectRanges([c]);
          })(d);
        }
        function H(a, b) {
          var c = a.widgets.focused,
              d,
              e,
              f;Q.hasCopyBin(a) || (e = new Q(a, { beforeDestroy: function () {
              !b && c && c.focus();f && a.getSelection().selectBookmarks(f);d && CKEDITOR.plugins.widgetselection.addFillers(a.editable());
            }, afterDestroy: function () {
              b && !a.readOnly && (c ? a.widgets.del(c) : a.extractSelectedHtml(), a.fire("saveSnapshot"));
            } }), c || (d = CKEDITOR.env.webkit && CKEDITOR.plugins.widgetselection.isWholeContentSelected(a.editable()), f = a.getSelection().createBookmarks(!0)), e.handle(O(a)));
        }function I(a) {
          return (a = (a = a.getDefinition().attributes) && a["class"]) ? a.split(/\s+/) : null;
        }function P() {
          var a = CKEDITOR.document.getActive(),
              b = this.editor,
              c = b.editable();(c.isInline() ? c : b.document.getWindow().getFrame()).equals(a) && b.focusManager.focus(c);
        }function L() {
          CKEDITOR.env.gecko && this.editor.unlockSelection();CKEDITOR.env.webkit || (this.editor.forceNextSelectionCheck(), this.editor.selectionChange(1));
        }function O(a) {
          var b = a.getSelectedHtml(!0);if (a.widgets.focused) return a.widgets.focused.getClipboardHtml();a.once("toDataFormat", function (a) {
            a.data.widgetsCopy = !0;
          }, null, null, -1);return a.dataProcessor.toDataFormat(b);
        }function N(a, b) {
          var c = a.editor.config.widget_keystrokeInsertLineBefore,
              d = a.editor.config.widget_keystrokeInsertLineAfter;V(a);S(a);U(a);da(a);fa(a);ka(a);W(a);if (CKEDITOR.env.ie && 9 > CKEDITOR.env.version) a.wrapper.on("dragstart", function (b) {
            var c = b.data.getTarget();h.getNestedEditable(a, c) || a.inline && h.isDomDragHandler(c) || b.data.preventDefault();
          });a.wrapper.removeClass("cke_widget_new");a.element.addClass("cke_widget_element");
          a.on("key", function (b) {
            b = b.data.keyCode;if (b == c) M(a, "before"), a.editor.fire("saveSnapshot");else if (b == d) M(a, "after"), a.editor.fire("saveSnapshot");else if (13 == b) a.edit();else {
              if (b == CKEDITOR.CTRL + 67 || b == CKEDITOR.CTRL + 88) {
                H(a.editor, b == CKEDITOR.CTRL + 88);return;
              }if (b in X || CKEDITOR.CTRL & b || CKEDITOR.ALT & b) return;
            }return !1;
          }, null, null, 999);a.on("doubleclick", function (b) {
            a.edit() && b.cancel();
          });if (b.data) a.on("data", b.data);if (b.edit) a.on("edit", b.edit);
        }function V(a) {
          (a.wrapper = a.element.getParent()).setAttribute("data-cke-widget-id", a.id);
        }function S(a, b) {
          a.partSelectors || (a.partSelectors = a.parts);if (a.parts) {
            var c = {},
                d,
                e;for (e in a.partSelectors) b || !a.parts[e] || "string" == typeof a.parts[e] ? (d = a.wrapper.findOne(a.partSelectors[e]), c[e] = d) : c[e] = a.parts[e];a.parts = c;
          }
        }function U(a) {
          var b = a.editables,
              c,
              d;a.editables = {};if (a.editables) for (c in b) d = b[c], a.initEditable(c, "string" == typeof d ? { selector: d } : d);
        }function da(a) {
          if (!0 === a.mask) T(a);else if (a.mask) {
            var b = new CKEDITOR.tools.buffers.throttle(250, ea, a),
                c = CKEDITOR.env.gecko ? 300 : 0,
                d,
                e;a.on("focus", function () {
              b.input();d = a.editor.on("change", b.input);e = a.on("blur", function () {
                d.removeListener();e.removeListener();
              });
            });a.editor.on("instanceReady", function () {
              setTimeout(function () {
                b.input();
              }, c);
            });a.editor.on("mode", function () {
              setTimeout(function () {
                b.input();
              }, c);
            });if (CKEDITOR.env.gecko) {
              var f = a.element.find("img");CKEDITOR.tools.array.forEach(f.toArray(), function (a) {
                a.on("load", function () {
                  b.input();
                });
              });
            }for (var g in a.editables) a.editables[g].on("focus", function () {
              a.editor.on("change", b.input);e && e.removeListener();
            }), a.editables[g].on("blur", function () {
              a.editor.removeListener("change", b.input);
            });b.input();
          }
        }function T(a) {
          var b = a.wrapper.findOne(".cke_widget_mask");b || (b = new CKEDITOR.dom.element("img", a.editor.document), b.setAttributes({ src: CKEDITOR.tools.transparentImageData, "class": "cke_reset cke_widget_mask" }), a.wrapper.append(b));a.mask = b;
        }function ea() {
          if (this.wrapper) {
            this.maskPart = this.maskPart || this.mask;var a = this.parts[this.maskPart],
                b;if (a && "string" != typeof a) {
              b = this.wrapper.findOne(".cke_widget_partial_mask");
              b || (b = new CKEDITOR.dom.element("img", this.editor.document), b.setAttributes({ src: CKEDITOR.tools.transparentImageData, "class": "cke_reset cke_widget_partial_mask" }), this.wrapper.append(b));this.mask = b;var c = b.$,
                  d = a.$,
                  e = !(c.offsetTop == d.offsetTop && c.offsetLeft == d.offsetLeft);if (c.offsetWidth != d.offsetWidth || c.offsetHeight != d.offsetHeight || e) c = a.getParent(), d = CKEDITOR.plugins.widget.isDomWidget(c), b.setStyles({ top: a.$.offsetTop + (d ? 0 : c.$.offsetTop) + "px", left: a.$.offsetLeft + (d ? 0 : c.$.offsetLeft) + "px", width: a.$.offsetWidth + "px", height: a.$.offsetHeight + "px" });
            }
          }
        }function fa(a) {
          if (a.draggable) {
            var b = a.editor,
                c = a.wrapper.getLast(h.isDomDragHandlerContainer),
                d;c ? d = c.findOne("img") : (c = new CKEDITOR.dom.element("span", b.document), c.setAttributes({ "class": "cke_reset cke_widget_drag_handler_container", style: "background:rgba(220,220,220,0.5);background-image:url(" + b.plugins.widget.path + "images/handle.png);display:none;" }), d = new CKEDITOR.dom.element("img", b.document), d.setAttributes({ "class": "cke_reset cke_widget_drag_handler",
              "data-cke-widget-drag-handler": "1", src: CKEDITOR.tools.transparentImageData, width: 15, title: b.lang.widget.move, height: 15, role: "presentation" }), a.inline && d.setAttribute("draggable", "true"), c.append(d), a.wrapper.append(c));a.wrapper.on("dragover", function (a) {
              a.data.preventDefault();
            });a.wrapper.on("mouseenter", a.updateDragHandlerPosition, a);setTimeout(function () {
              a.on("data", a.updateDragHandlerPosition, a);
            }, 50);if (!a.inline && (d.on("mousedown", ia, a), CKEDITOR.env.ie && 9 > CKEDITOR.env.version)) d.on("dragstart", function (a) {
              a.data.preventDefault(!0);
            });a.dragHandlerContainer = c;
          }
        }function ia(a) {
          function b() {
            var c;for (q.reset(); c = h.pop();) c.removeListener();var d = k;c = a.sender;var e = this.repository.finder,
                f = this.repository.liner,
                g = this.editor,
                l = this.editor.editable();CKEDITOR.tools.isEmpty(f.visible) || (d = e.getRange(d[0]), this.focus(), g.fire("drop", { dropRange: d, target: d.startContainer }));l.removeClass("cke_widget_dragging");f.hideVisible();g.fire("dragend", { target: c });
          }if (CKEDITOR.tools.getMouseButton(a) === CKEDITOR.MOUSE_BUTTON_LEFT) {
            var c = this.repository.finder,
                d = this.repository.locator,
                e = this.repository.liner,
                f = this.editor,
                g = f.editable(),
                h = [],
                k = [],
                l,
                m;this.repository._.draggedWidget = this;var n = c.greedySearch(),
                q = CKEDITOR.tools.eventsBuffer(50, function () {
              l = d.locate(n);k = d.sort(m, 1);k.length && (e.prepare(n, l), e.placeLine(k[0]), e.cleanup());
            });g.addClass("cke_widget_dragging");h.push(g.on("mousemove", function (a) {
              m = a.data.$.clientY;q.input();
            }));f.fire("dragstart", { target: a.sender });h.push(f.document.once("mouseup", b, this));g.isInline() || h.push(CKEDITOR.document.once("mouseup", b, this));
          }
        }function ka(a) {
          var b = null;a.on("data", function () {
            var a = this.data.classes,
                c;if (b != a) {
              for (c in b) a && a[c] || this.removeClass(c);for (c in a) this.addClass(c);b = a;
            }
          });
        }function W(a) {
          a.on("data", function () {
            if (a.wrapper) {
              var b = this.getLabel ? this.getLabel() : this.editor.lang.widget.label.replace(/%1/, this.pathName || this.element.getName());a.wrapper.setAttribute("role", "region");a.wrapper.setAttribute("aria-label", b);
            }
          }, null, null, 9999);
        }function Z(a) {
          a.element.data("cke-widget-data", encodeURIComponent(JSON.stringify(a.data)));
        }function aa() {
          function a() {}function b(a, c, d) {
            return d && this.checkElement(a) ? (a = d.widgets.getByElement(a, !0)) && a.checkStyleActive(this) : !1;
          }function c(a) {
            function b(a, c, d) {
              for (var e = a.length, f = 0; f < e;) {
                if (c.call(d, a[f], f, a)) return a[f];f++;
              }
            }function e(a) {
              function b(a, c) {
                var d = CKEDITOR.tools.object.keys(a),
                    e = CKEDITOR.tools.object.keys(c);if (d.length !== e.length) return !1;for (var f in a) if (("object" !== typeof a[f] || "object" !== typeof c[f] || !b(a[f], c[f])) && a[f] !== c[f]) return !1;return !0;
              }return function (c) {
                return b(a.getDefinition(), c.getDefinition());
              };
            }var f = a.widget,
                g;d[f] || (d[f] = {});for (var h = 0, k = a.group.length; h < k; h++) g = a.group[h], d[f][g] || (d[f][g] = []), g = d[f][g], b(g, e(a)) || g.push(a);
          }var d = {};CKEDITOR.style.addCustomHandler({ type: "widget", setup: function (a) {
              this.widget = a.widget;(this.group = "string" == typeof a.group ? [a.group] : a.group) && c(this);
            }, apply: function (a) {
              var b;a instanceof CKEDITOR.editor && this.checkApplicable(a.elementPath(), a) && (b = a.widgets.focused, this.group && this.removeStylesFromSameGroup(a), b.applyStyle(this));
            }, remove: function (a) {
              a instanceof CKEDITOR.editor && this.checkApplicable(a.elementPath(), a) && a.widgets.focused.removeStyle(this);
            }, removeStylesFromSameGroup: function (a) {
              var b = !1,
                  c,
                  e;if (!(a instanceof CKEDITOR.editor)) return !1;e = a.elementPath();if (this.checkApplicable(e, a)) for (var f = 0, g = this.group.length; f < g; f++) {
                c = d[this.widget][this.group[f]];for (var h = 0; h < c.length; h++) c[h] !== this && c[h].checkActive(e, a) && (a.widgets.focused.removeStyle(c[h]), b = !0);
              }return b;
            }, checkActive: function (a, b) {
              return this.checkElementMatch(a.lastElement, 0, b);
            }, checkApplicable: function (a, b) {
              return b instanceof CKEDITOR.editor ? this.checkElement(a.lastElement) : !1;
            }, checkElementMatch: b, checkElementRemovable: b, checkElement: function (a) {
              return h.isDomWidgetWrapper(a) ? (a = a.getFirst(h.isDomWidgetElement)) && a.data("widget") == this.widget : !1;
            }, buildPreview: function (a) {
              return a || this._.definition.name;
            }, toAllowedContentRules: function (a) {
              if (!a) return null;a = a.widgets.registered[this.widget];
              var b,
                  c = {};if (!a) return null;if (a.styleableElements) {
                b = this.getClassesArray();if (!b) return null;c[a.styleableElements] = { classes: b, propertiesOnly: !0 };return c;
              }return a.styleToAllowedContentRules ? a.styleToAllowedContentRules(this) : null;
            }, getClassesArray: function () {
              var a = this._.definition.attributes && this._.definition.attributes["class"];return a ? CKEDITOR.tools.trim(a).split(/\s+/) : null;
            }, applyToRange: a, removeFromRange: a, applyToObject: a });
        }CKEDITOR.plugins.add("widget", { requires: "lineutils,clipboard,widgetselection",
          onLoad: function () {
            void 0 !== CKEDITOR.document.$.querySelectorAll && (CKEDITOR.addCss('.cke_widget_wrapper{position:relative;outline:none}.cke_widget_inline{display:inline-block}.cke_widget_wrapper:hover\x3e.cke_widget_element{outline:2px solid #ffd25c;cursor:default}.cke_widget_wrapper:hover .cke_widget_editable{outline:2px solid #ffd25c}.cke_widget_wrapper.cke_widget_focused\x3e.cke_widget_element,.cke_widget_wrapper .cke_widget_editable.cke_widget_editable_focused{outline:2px solid #47a4f5}.cke_widget_editable{cursor:text}.cke_widget_drag_handler_container{position:absolute;width:15px;height:0;display:block;opacity:0.75;transition:height 0s 0.2s;line-height:0}.cke_widget_wrapper:hover\x3e.cke_widget_drag_handler_container{height:15px;transition:none}.cke_widget_drag_handler_container:hover{opacity:1}.cke_editable[contenteditable\x3d"false"] .cke_widget_drag_handler_container{display:none;}img.cke_widget_drag_handler{cursor:move;width:15px;height:15px;display:inline-block}.cke_widget_mask{position:absolute;top:0;left:0;width:100%;height:100%;display:block}.cke_widget_partial_mask{position:absolute;display:block}.cke_editable.cke_widget_dragging, .cke_editable.cke_widget_dragging *{cursor:move !important}'), aa());
          }, beforeInit: function (a) {
            void 0 !== CKEDITOR.document.$.querySelectorAll && (a.widgets = new c(a));
          }, afterInit: function (a) {
            if (void 0 !== CKEDITOR.document.$.querySelectorAll) {
              var b = a.widgets.registered,
                  c,
                  d,
                  e;for (d in b) c = b[d], (e = c.button) && a.ui.addButton && a.ui.addButton(CKEDITOR.tools.capitalize(c.name, !0), { label: e, command: c.name, toolbar: "insert,10" });B(a);G(a.undoManager);
            }
          } });c.prototype = { MIN_SELECTION_CHECK_INTERVAL: 500, add: function (b, c) {
            var d = this.editor;c = CKEDITOR.tools.prototypedCopy(c);c.name = b;
            c._ = c._ || {};d.fire("widgetDefinition", c);c.template && (c.template = new CKEDITOR.template(c.template));a(d, c);e(this, c);this.registered[b] = c;if (c.dialog && d.plugins.dialog) var f = CKEDITOR.on("dialogDefinition", function (a) {
              a = a.data.definition;var b = a.dialog;a.getMode || b.getName() !== c.dialog || (a.getMode = function () {
                var a = b.getModel(d);return a && a instanceof CKEDITOR.plugins.widget && a.ready ? CKEDITOR.dialog.EDITING_MODE : CKEDITOR.dialog.CREATION_MODE;
              });f.removeListener();
            });return c;
          }, addUpcastCallback: function (a) {
            this._.upcastCallbacks.push(a);
          },
          checkSelection: function () {
            if (this.editor.getSelection()) {
              var a = this.editor.getSelection(),
                  b = a.getSelectedElement(),
                  c = E(this),
                  d;if (b && (d = this.getByElement(b, !0))) return c.focus(d).select(d).commit();a = a.getRanges()[0];if (!a || a.collapsed) return c.commit();a = new CKEDITOR.dom.walker(a);for (a.evaluator = h.isDomWidgetWrapper; b = a.next();) c.select(this.getByElement(b));c.commit();
            }
          }, checkWidgets: function (a) {
            this.fire("checkWidgets", CKEDITOR.tools.copy(a || {}));
          }, del: function (a) {
            if (this.focused === a) {
              var b = a.editor,
                  c = b.createRange(),
                  d;(d = c.moveToClosestEditablePosition(a.wrapper, !0)) || (d = c.moveToClosestEditablePosition(a.wrapper, !1));d && b.getSelection().selectRanges([c]);
            }a.wrapper.remove();this.destroy(a, !0);
          }, destroy: function (a, b) {
            this.widgetHoldingFocusedEditable === a && v(this, a, null, b);a.destroy(b);delete this.instances[a.id];this.fire("instanceDestroyed", a);
          }, destroyAll: function (a, b) {
            var c,
                d,
                e = this.instances;if (b && !a) {
              d = b.find(".cke_widget_wrapper");for (var e = d.count(), f = 0; f < e; ++f) (c = this.getByElement(d.getItem(f), !0)) && this.destroy(c);
            } else for (d in e) c = e[d], this.destroy(c, a);
          }, finalizeCreation: function (a) {
            (a = a.getFirst()) && h.isDomWidgetWrapper(a) && (this.editor.insertElement(a), a = this.getByElement(a), a.ready = !0, a.fire("ready"), a.focus());
          }, getByElement: function () {
            function a(c) {
              return c.is(b) && c.data("cke-widget-id");
            }var b = { div: 1, span: 1 };return function (b, c) {
              if (!b) return null;var d = a(b);if (!c && !d) {
                var e = this.editor.editable();do b = b.getParent(); while (b && !b.equals(e) && !(d = a(b)));
              }return this.instances[d] || null;
            };
          }(),
          initOn: function (a, b, c) {
            b ? "string" == typeof b && (b = this.registered[b]) : b = this.registered[a.data("widget")];if (!b) return null;var d = this.wrapElement(a, b.name);return d ? d.hasClass("cke_widget_new") ? (a = new h(this, this._.nextId++, a, b, c), a.isInited() ? this.instances[a.id] = a : null) : this.getByElement(a) : null;
          }, initOnAll: function (a) {
            a = (a || this.editor.editable()).find(".cke_widget_new");for (var b = [], c, d = a.count(); d--;) (c = this.initOn(a.getItem(d).getFirst(h.isDomWidgetElement))) && b.push(c);return b;
          }, onWidget: function (a) {
            var b = Array.prototype.slice.call(arguments);b.shift();for (var c in this.instances) {
              var d = this.instances[c];d.name == a && d.on.apply(d, b);
            }this.on("instanceCreated", function (c) {
              c = c.data;c.name == a && c.on.apply(c, b);
            });
          }, parseElementClasses: function (a) {
            if (!a) return null;a = CKEDITOR.tools.trim(a).split(/\s+/);for (var b, c = {}, d = 0; b = a.pop();) -1 == b.indexOf("cke_") && (c[b] = d = 1);return d ? c : null;
          }, wrapElement: function (a, b) {
            var c = null,
                d,
                e;if (a instanceof CKEDITOR.dom.element) {
              b = b || a.data("widget");d = this.registered[b];if (!d) return null;
              if ((c = a.getParent()) && c.type == CKEDITOR.NODE_ELEMENT && c.data("cke-widget-wrapper")) return c;a.hasAttribute("data-cke-widget-keep-attr") || a.data("cke-widget-keep-attr", a.data("widget") ? 1 : 0);a.data("widget", b);(e = r(d, a.getName())) && m(a);c = new CKEDITOR.dom.element(e ? "span" : "div", a.getDocument());c.setAttributes(w(e, b));c.data("cke-display-name", d.pathName ? d.pathName : a.getName());a.getParent(!0) && c.replace(a);a.appendTo(c);
            } else if (a instanceof CKEDITOR.htmlParser.element) {
              b = b || a.attributes["data-widget"];
              d = this.registered[b];if (!d) return null;if ((c = a.parent) && c.type == CKEDITOR.NODE_ELEMENT && c.attributes["data-cke-widget-wrapper"]) return c;"data-cke-widget-keep-attr" in a.attributes || (a.attributes["data-cke-widget-keep-attr"] = a.attributes["data-widget"] ? 1 : 0);b && (a.attributes["data-widget"] = b);(e = r(d, a.name)) && m(a);c = new CKEDITOR.htmlParser.element(e ? "span" : "div", w(e, b));c.attributes["data-cke-display-name"] = d.pathName ? d.pathName : a.name;d = a.parent;var f;d && (f = a.getIndex(), a.remove());c.add(a);d && y(d, f, c);
            }return c;
          }, _tests_createEditableFilter: f };CKEDITOR.event.implementOn(c.prototype);h.prototype = { addClass: function (a) {
            this.element.addClass(a);this.wrapper.addClass(h.WRAPPER_CLASS_PREFIX + a);
          }, applyStyle: function (a) {
            K(this, a, 1);
          }, checkStyleActive: function (a) {
            a = I(a);var b;if (!a) return !1;for (; b = a.pop();) if (!this.hasClass(b)) return !1;return !0;
          }, destroy: function (a) {
            this.fire("destroy");if (this.editables) for (var b in this.editables) this.destroyEditable(b, a);a || ("0" == this.element.data("cke-widget-keep-attr") && this.element.removeAttribute("data-widget"), this.element.removeAttributes(["data-cke-widget-data", "data-cke-widget-keep-attr"]), this.element.removeClass("cke_widget_element"), this.element.replace(this.wrapper));this.wrapper = null;
          }, destroyEditable: function (a, b) {
            var c = this.editables[a],
                d = !0;c.removeListener("focus", L);c.removeListener("blur", P);this.editor.focusManager.remove(c);if (c.filter) {
              for (var e in this.repository.instances) {
                var f = this.repository.instances[e];f.editables && (f = f.editables[a]) && f !== c && c.filter === f.filter && (d = !1);
              }d && (c.filter.destroy(), (d = this.repository._.filters[this.name]) && delete d[a]);
            }b || (this.repository.destroyAll(!1, c), c.removeClass("cke_widget_editable"), c.removeClass("cke_widget_editable_focused"), c.removeAttributes(["contenteditable", "data-cke-widget-editable", "data-cke-enter-mode"]));delete this.editables[a];
          }, edit: function () {
            var a = { dialog: this.dialog },
                b = this;if (!1 === this.fire("edit", a) || !a.dialog) return !1;this.editor.openDialog(a.dialog, function (a) {
              var c, d;!1 !== b.fire("dialog", a) && (c = a.on("show", function () {
                a.setupContent(b);
              }), d = a.on("ok", function () {
                var c,
                    d = b.on("data", function (a) {
                  c = 1;a.cancel();
                }, null, null, 0);b.editor.fire("saveSnapshot");a.commitContent(b);d.removeListener();c && (b.fire("data", b.data), b.editor.fire("saveSnapshot"));
              }), a.once("hide", function () {
                c.removeListener();d.removeListener();
              }));
            }, b);return !0;
          }, getClasses: function () {
            return this.repository.parseElementClasses(this.element.getAttribute("class"));
          }, getClipboardHtml: function () {
            var a = this.editor.createRange();
            a.setStartBefore(this.wrapper);a.setEndAfter(this.wrapper);return this.editor.editable().getHtmlFromRange(a).getHtml();
          }, hasClass: function (a) {
            return this.element.hasClass(a);
          }, initEditable: function (a, b) {
            var c = this._findOneNotNested(b.selector);return c && c.is(CKEDITOR.dtd.$editable) ? (c = new g(this.editor, c, { filter: f.call(this.repository, this.name, a, b) }), this.editables[a] = c, c.setAttributes({ contenteditable: "true", "data-cke-widget-editable": a, "data-cke-enter-mode": c.enterMode }), c.filter && c.data("cke-filter", c.filter.id), c.addClass("cke_widget_editable"), c.removeClass("cke_widget_editable_focused"), b.pathName && c.data("cke-display-name", b.pathName), this.editor.focusManager.add(c), c.on("focus", L, this), CKEDITOR.env.ie && c.on("blur", P, this), c._.initialSetData = !0, c.setData(c.getHtml()), !0) : !1;
          }, _findOneNotNested: function (a) {
            a = this.wrapper.find(a);for (var b, c, d = 0; d < a.count(); d++) if (b = a.getItem(d), c = b.getAscendant(h.isDomWidgetWrapper), this.wrapper.equals(c)) return b;return null;
          }, isInited: function () {
            return !(!this.wrapper || !this.inited);
          }, isReady: function () {
            return this.isInited() && this.ready;
          }, focus: function () {
            var a = this.editor.getSelection();if (a) {
              var b = this.editor.checkDirty();a.fake(this.wrapper);!b && this.editor.resetDirty();
            }this.editor.focus();
          }, refreshMask: function () {
            da(this);
          }, refreshParts: function (a) {
            S(this, "undefined" !== typeof a ? a : !0);
          }, removeClass: function (a) {
            this.element.removeClass(a);this.wrapper.removeClass(h.WRAPPER_CLASS_PREFIX + a);
          }, removeStyle: function (a) {
            K(this, a, 0);
          }, setData: function (a, b) {
            var c = this.data,
                d = 0;if ("string" == typeof a) c[a] !== b && (c[a] = b, d = 1);else {
              var e = a;for (a in e) c[a] !== e[a] && (d = 1, c[a] = e[a]);
            }d && this.dataReady && (Z(this), this.fire("data", c));return this;
          }, setFocused: function (a) {
            this.wrapper[a ? "addClass" : "removeClass"]("cke_widget_focused");this.fire(a ? "focus" : "blur");return this;
          }, setSelected: function (a) {
            this.wrapper[a ? "addClass" : "removeClass"]("cke_widget_selected");this.fire(a ? "select" : "deselect");return this;
          }, updateDragHandlerPosition: function () {
            var a = this.editor,
                b = this.element.$,
                c = this._.dragHandlerOffset,
                b = { x: b.offsetLeft, y: b.offsetTop - 15 };CKEDITOR.env.ie && (b.y = 0);c && b.x == c.x && b.y == c.y || (c = a.checkDirty(), a.fire("lockSnapshot"), this.dragHandlerContainer.setStyles({ top: b.y + "px", left: b.x + "px" }), this.dragHandlerContainer.removeStyle("display"), a.fire("unlockSnapshot"), !c && a.resetDirty(), this._.dragHandlerOffset = b);
          } };CKEDITOR.event.implementOn(h.prototype);h.getNestedEditable = function (a, b) {
          return !b || b.equals(a) ? null : h.isDomNestedEditable(b) ? b : h.getNestedEditable(a, b.getParent());
        };h.isDomDragHandler = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("data-cke-widget-drag-handler");
        };h.isDomDragHandlerContainer = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasClass("cke_widget_drag_handler_container");
        };h.isDomNestedEditable = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("data-cke-widget-editable");
        };h.isDomWidgetElement = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("data-widget");
        };h.isDomWidgetWrapper = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.hasAttribute("data-cke-widget-wrapper");
        };
        h.isDomWidget = function (a) {
          return a ? this.isDomWidgetWrapper(a) || this.isDomWidgetElement(a) : !1;
        };h.isParserWidgetElement = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && !!a.attributes["data-widget"];
        };h.isParserWidgetWrapper = function (a) {
          return a.type == CKEDITOR.NODE_ELEMENT && !!a.attributes["data-cke-widget-wrapper"];
        };h.WRAPPER_CLASS_PREFIX = "cke_widget_wrapper_";g.prototype = CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.dom.element.prototype), { setData: function (a) {
            this._.initialSetData || this.editor.widgets.destroyAll(!1, this);this._.initialSetData = !1;a = this.editor.dataProcessor.unprotectRealComments(a);a = this.editor.dataProcessor.unprotectSource(a);a = this.editor.dataProcessor.toHtml(a, { context: this.getName(), filter: this.filter, enterMode: this.enterMode });this.setHtml(a);this.editor.widgets.initOnAll(this);
          }, getData: function () {
            return this.editor.dataProcessor.toDataFormat(this.getHtml(), { context: this.getName(), filter: this.filter, enterMode: this.enterMode });
          } });var ca = /^(?:<(?:div|span)(?: data-cke-temp="1")?(?: id="cke_copybin")?(?: data-cke-temp="1")?>)?(?:<(?:div|span)(?: style="[^"]+")?>)?<span [^>]*data-cke-copybin-start="1"[^>]*>.?<\/span>([\s\S]+)<span [^>]*data-cke-copybin-end="1"[^>]*>.?<\/span>(?:<\/(?:div|span)>)?(?:<\/(?:div|span)>)?$/i,
            X = { 37: 1, 38: 1, 39: 1, 40: 1, 8: 1, 46: 1 };X[CKEDITOR.SHIFT + 121] = 1;var Q = CKEDITOR.tools.createClass({ $: function (a, b) {
            this._.createCopyBin(a, b);this._.createListeners(b);
          }, _: { createCopyBin: function (a) {
              var b = a.document,
                  c = CKEDITOR.env.edge && 16 <= CKEDITOR.env.version,
                  d = !a.blockless && !CKEDITOR.env.ie || c ? "div" : "span",
                  c = b.createElement(d),
                  b = b.createElement(d);b.setAttributes({ id: "cke_copybin", "data-cke-temp": "1" });c.setStyles({ position: "absolute", width: "1px", height: "1px", overflow: "hidden" });c.setStyle("ltr" == a.config.contentsLangDirection ? "left" : "right", "-5000px");this.editor = a;this.copyBin = c;this.container = b;
            }, createListeners: function (a) {
              a && (a.beforeDestroy && (this.beforeDestroy = a.beforeDestroy), a.afterDestroy && (this.afterDestroy = a.afterDestroy));
            } }, proto: { handle: function (a) {
              var b = this.copyBin,
                  c = this.editor,
                  d = this.container,
                  e = CKEDITOR.env.ie && 9 > CKEDITOR.env.version,
                  f = c.document.getDocumentElement().$,
                  g = c.createRange(),
                  h = this,
                  k = CKEDITOR.env.mac && CKEDITOR.env.webkit,
                  l = k ? 100 : 0,
                  m = window.requestAnimationFrame && !k ? requestAnimationFrame : setTimeout,
                  n,
                  q,
                  u;b.setHtml('\x3cspan data-cke-copybin-start\x3d"1"\x3e​\x3c/span\x3e' + a + '\x3cspan data-cke-copybin-end\x3d"1"\x3e​\x3c/span\x3e');c.fire("lockSnapshot");d.append(b);c.editable().append(d);n = c.on("selectionChange", F, null, null, 0);q = c.widgets.on("checkSelection", F, null, null, 0);e && (u = f.scrollTop);g.selectNodeContents(b);g.select();e && (f.scrollTop = u);return new CKEDITOR.tools.promise(function (a) {
                m(function () {
                  h.beforeDestroy && h.beforeDestroy();d.remove();n.removeListener();q.removeListener();c.fire("unlockSnapshot");
                  h.afterDestroy && h.afterDestroy();a();
                }, l);
              });
            } }, statics: { hasCopyBin: function (a) {
              return !!Q.getCopyBin(a);
            }, getCopyBin: function (a) {
              return a.document.getById("cke_copybin");
            } } });CKEDITOR.plugins.widget = h;h.repository = c;h.nestedEditable = g;
      }(), CKEDITOR.config.widget_keystrokeInsertLineBefore = CKEDITOR.SHIFT + CKEDITOR.ALT + 13, CKEDITOR.config.widget_keystrokeInsertLineAfter = CKEDITOR.SHIFT + 13, "use strict", function () {
        function c(a) {
          function b() {
            this.deflated || (a.widgets.focused == this.widget && (this.focused = !0), a.widgets.destroy(this.widget), this.deflated = !0);
          }function c() {
            var b = a.editable(),
                d = a.document;if (this.deflated) this.widget = a.widgets.initOn(this.element, "image", this.widget.data), this.widget.inline && !new CKEDITOR.dom.elementPath(this.widget.wrapper, b).block && (b = d.createElement(a.activeEnterMode == CKEDITOR.ENTER_P ? "p" : "div"), b.replace(this.widget.wrapper), this.widget.wrapper.move(b)), this.focused && (this.widget.focus(), delete this.focused), delete this.deflated;else {
              var f = this.widget,
                  b = e,
                  d = f.wrapper,
                  g = f.data.align,
                  f = f.data.hasCaption;
              if (b) {
                for (var h = 3; h--;) d.removeClass(b[h]);"center" == g ? f && d.addClass(b[1]) : "none" != g && d.addClass(b[y[g]]);
              } else "center" == g ? (f ? d.setStyle("text-align", "center") : d.removeStyle("text-align"), d.removeStyle("float")) : ("none" == g ? d.removeStyle("float") : d.setStyle("float", g), d.removeStyle("text-align"));
            }
          }var e = a.config.image2_alignClasses,
              l = a.config.image2_captionedClass;return { allowedContent: d(a), requiredContent: "img[src,alt]", features: f(a), styleableElements: "img figure", contentTransformations: [["img[width]: sizeToAttribute"]],
            editables: { caption: { selector: "figcaption", allowedContent: "br em strong sub sup u s; a[!href,target]" } }, parts: { image: "img", caption: "figcaption" }, dialog: "image2", template: '\x3cimg alt\x3d"" src\x3d"" /\x3e', data: function () {
              var d = this.features;this.data.hasCaption && !a.filter.checkFeature(d.caption) && (this.data.hasCaption = !1);"none" == this.data.align || a.filter.checkFeature(d.align) || (this.data.align = "none");this.shiftState({ widget: this, element: this.element, oldData: this.oldData, newData: this.data, deflate: b,
                inflate: c });this.data.link ? this.parts.link || (this.parts.link = this.parts.image.getParent()) : this.parts.link && delete this.parts.link;this.parts.image.setAttributes({ src: this.data.src, "data-cke-saved-src": this.data.src, alt: this.data.alt });if (this.oldData && !this.oldData.hasCaption && this.data.hasCaption) for (var e in this.data.classes) this.parts.image.removeClass(e);if (a.filter.checkFeature(d.dimension)) {
                d = this.data;d = { width: d.width, height: d.height };e = this.parts.image;for (var f in d) d[f] ? e.setAttribute(f, d[f]) : e.removeAttribute(f), e.$.style.removeProperty(f);
              }this.oldData = CKEDITOR.tools.extend({}, this.data);
            }, init: function () {
              var b = CKEDITOR.plugins.image2,
                  c = this.parts.image,
                  d = { hasCaption: !!this.parts.caption, src: c.getAttribute("src"), alt: c.getAttribute("alt") || "", width: c.$.style.width && parseInt(c.$.style.width) || c.getAttribute("width") || "", height: c.$.style.height && parseInt(c.$.style.height) || c.getAttribute("height") || "", lock: this.ready ? b.checkHasNaturalRatio(c) : !0 },
                  f = c.getAscendant("a");f && this.wrapper.contains(f) && (this.parts.link = f);d.align || (c = d.hasCaption ? this.element : c, e ? (c.hasClass(e[0]) ? d.align = "left" : c.hasClass(e[2]) && (d.align = "right"), d.align ? c.removeClass(e[y[d.align]]) : d.align = "none") : (d.align = c.getStyle("float") || "none", c.removeStyle("float")));a.plugins.link && this.parts.link && (d.link = b.getLinkAttributesParser()(a, this.parts.link), (c = d.link.advanced) && c.advCSSClasses && (c.advCSSClasses = CKEDITOR.tools.trim(c.advCSSClasses.replace(/cke_\S+/, ""))));this.wrapper[(d.hasCaption ? "remove" : "add") + "Class"]("cke_image_nocaption");
              this.setData(d);a.filter.checkFeature(this.features.dimension) && !0 !== a.config.image2_disableResizer && k(this);this.shiftState = b.stateShifter(this.editor);this.on("contextMenu", function (a) {
                a.data.image = CKEDITOR.TRISTATE_OFF;if (this.parts.link || this.wrapper.getAscendant("a")) a.data.link = a.data.unlink = CKEDITOR.TRISTATE_OFF;
              });
            }, addClass: function (a) {
              p(this).addClass(a);
            }, hasClass: function (a) {
              return p(this).hasClass(a);
            }, removeClass: function (a) {
              p(this).removeClass(a);
            }, getClasses: function () {
              var a = new RegExp("^(" + [].concat(l, e).join("|") + ")$");return function () {
                var b = this.repository.parseElementClasses(p(this).getAttribute("class")),
                    c;for (c in b) a.test(c) && delete b[c];return b;
              };
            }(), upcast: h(a), downcast: g(a), getLabel: function () {
              return this.editor.lang.widget.label.replace(/%1/, (this.data.alt || "") + " " + this.pathName);
            } };
        }function h(b) {
          var c = a(b),
              d = b.config.image2_captionedClass;return function (a, b) {
            var f = { width: 1, height: 1 },
                g = a.name,
                h;if (!a.attributes["data-cke-realelement"] && (c(a) ? ("div" == g && (h = a.getFirst("figure")) && (a.replaceWith(h), a = h), b.align = "center", h = a.getFirst("img") || a.getFirst("a").getFirst("img")) : "figure" == g && a.hasClass(d) ? h = a.find(function (a) {
              return "img" === a.name && -1 !== CKEDITOR.tools.array.indexOf(["figure", "a"], a.parent.name);
            }, !0)[0] : e(a) && (h = "a" == a.name ? a.children[0] : a), h)) {
              for (var k in f) (f = h.attributes[k]) && f.match(r) && delete h.attributes[k];return a;
            }
          };
        }function g(a) {
          var b = a.config.image2_alignClasses;return function (a) {
            var c = "a" == a.name ? a.getFirst() : a,
                d = c.attributes,
                e = this.data.align;if (!this.inline) {
              var f = a.getFirst("span");f && f.replaceWith(f.getFirst({ img: 1, a: 1 }));
            }e && "none" != e && (f = CKEDITOR.tools.parseCssText(d.style || ""), "center" == e && "figure" == a.name ? a = a.wrapWith(new CKEDITOR.htmlParser.element("div", b ? { "class": b[1] } : { style: "text-align:center" })) : e in { left: 1, right: 1 } && (b ? c.addClass(b[y[e]]) : f["float"] = e), b || CKEDITOR.tools.isEmpty(f) || (d.style = CKEDITOR.tools.writeCssText(f)));return a;
          };
        }function a(a) {
          var b = a.config.image2_captionedClass,
              c = a.config.image2_alignClasses,
              d = { figure: 1, a: 1, img: 1 };return function (f) {
            if (!(f.name in { div: 1, p: 1 })) return !1;var g = f.children;if (1 !== g.length) return !1;g = g[0];if (!(g.name in d)) return !1;if ("p" == f.name) {
              if (!e(g)) return !1;
            } else if ("figure" == g.name) {
              if (!g.hasClass(b)) return !1;
            } else if (a.enterMode == CKEDITOR.ENTER_P || !e(g)) return !1;return (c ? f.hasClass(c[1]) : "center" == CKEDITOR.tools.parseCssText(f.attributes.style || "", !0)["text-align"]) ? !0 : !1;
          };
        }function e(a) {
          return "img" == a.name ? !0 : "a" == a.name ? 1 == a.children.length && a.getFirst("img") : !1;
        }function k(a) {
          var b = a.editor,
              c = b.editable(),
              d = b.document,
              e = a.resizer = d.createElement("span");e.addClass("cke_image_resizer");e.setAttribute("title", b.lang.image2.resizer);e.append(new CKEDITOR.dom.text("​", d));if (a.inline) a.wrapper.append(e);else {
            var f = a.parts.link || a.parts.image,
                g = f.getParent(),
                h = d.createElement("span");h.addClass("cke_image_resizer_wrapper");h.append(f);h.append(e);a.element.append(h, !0);g.is("span") && g.remove();
          }e.on("mousedown", function (f) {
            function g(a, b, c) {
              var e = CKEDITOR.document,
                  f = [];d.equals(e) || f.push(e.on(a, b));f.push(d.on(a, b));
              if (c) for (a = f.length; a--;) c.push(f.pop());
            }function h() {
              S = z + q * T;U = Math.round(S / r);
            }function k() {
              U = w - ea;S = Math.round(U * r);
            }var l = a.parts.image,
                m = function () {
              var a = b.config.image2_maxSize,
                  c;if (!a) return null;a = CKEDITOR.tools.copy(a);c = CKEDITOR.plugins.image2.getNatural(l);a.width = Math.max("natural" === a.width ? c.width : a.width, 15);a.height = Math.max("natural" === a.height ? c.height : a.height, 15);return a;
            }(),
                q = "right" == a.data.align ? -1 : 1,
                u = f.data.$.screenX,
                p = f.data.$.screenY,
                z = l.$.clientWidth,
                w = l.$.clientHeight,
                r = z / w,
                y = [],
                N = "cke_image_s" + (~q ? "e" : "w"),
                V,
                S,
                U,
                da,
                T,
                ea,
                fa;l.$.style.height && (l.setAttribute("height", parseInt(l.$.style.height)), l.$.style.removeProperty("height"));l.$.style.width && (l.setAttribute("width", parseInt(l.$.style.width)), l.$.style.removeProperty("width"));b.fire("saveSnapshot");g("mousemove", function (a) {
              V = a.data.$;T = V.screenX - u;ea = p - V.screenY;fa = Math.abs(T / ea);1 == q ? 0 >= T ? 0 >= ea ? h() : fa >= r ? h() : k() : 0 >= ea ? fa >= r ? k() : h() : k() : 0 >= T ? 0 >= ea ? fa >= r ? k() : h() : k() : 0 >= ea ? h() : fa >= r ? h() : k();a = m && (S > m.width || U > m.height);15 > S || 15 > U || a || (da = { width: S, height: U }, l.setAttributes(da));
            }, y);g("mouseup", function () {
              for (var d; d = y.pop();) d.removeListener();c.removeClass(N);e.removeClass("cke_image_resizing");da && (a.setData(da), b.fire("saveSnapshot"));da = !1;
            }, y);c.addClass(N);e.addClass("cke_image_resizing");
          });a.on("data", function () {
            e["right" == a.data.align ? "addClass" : "removeClass"]("cke_image_resizer_left");
          });
        }function l(a) {
          var c = [],
              d;return function (e) {
            var f = a.getCommand("justify" + e);if (f) {
              c.push(function () {
                f.refresh(a, a.elementPath());
              });if (e in { right: 1, left: 1, center: 1 }) f.on("exec", function (d) {
                var f = b(a);if (f) {
                  f.setData("align", e);for (f = c.length; f--;) c[f]();d.cancel();
                }
              });f.on("refresh", function (c) {
                var f = b(a);f && (void 0 === d && (d = a.filter.checkFeature(a.widgets.registered.image.features.align)), d ? this.setState(f.data.align == e ? CKEDITOR.TRISTATE_ON : e in { right: 1, left: 1, center: 1 } ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED) : this.setState(CKEDITOR.TRISTATE_DISABLED), c.cancel());
              });
            }
          };
        }function m(a) {
          if (a.plugins.link) {
            var c = CKEDITOR.on("dialogDefinition", function (c) {
              c = c.data;if ("link" == c.name) {
                c = c.definition;var d = c.onShow,
                    e = c.onOk;c.onShow = function () {
                  var c = b(a),
                      e = this.getContentElement("info", "linkDisplayText").getElement().getParent().getParent();c && (c.inline ? !c.wrapper.getAscendant("a") : 1) ? (this.setupContent(c.data.link || {}), e.hide()) : (e.show(), d.apply(this, arguments));
                };c.onOk = function () {
                  var c = b(a);if (c && (c.inline ? !c.wrapper.getAscendant("a") : 1)) {
                    var d = {};this.commitContent(d);c.setData("link", d);
                  } else e.apply(this, arguments);
                };
              }
            });a.on("destroy", function () {
              c.removeListener();
            });a.getCommand("unlink").on("exec", function (c) {
              var d = b(a);d && d.parts.link && (d.setData("link", null), this.refresh(a, a.elementPath()), c.cancel());
            });a.getCommand("unlink").on("refresh", function (c) {
              var d = b(a);d && (this.setState(d.data.link || d.wrapper.getAscendant("a") ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED), c.cancel());
            });
          }
        }function b(a) {
          return (a = a.widgets.focused) && "image" == a.name ? a : null;
        }function d(b) {
          var c = b.config.image2_alignClasses;
          b = { div: { match: a(b) }, p: { match: a(b) }, img: { attributes: "!src,alt,width,height" }, figure: { classes: "!" + b.config.image2_captionedClass }, figcaption: !0 };c ? (b.div.classes = c[1], b.p.classes = b.div.classes, b.img.classes = c[0] + "," + c[2], b.figure.classes += "," + b.img.classes) : (b.div.styles = "text-align", b.p.styles = "text-align", b.img.styles = "float", b.figure.styles = "float,display");return b;
        }function f(a) {
          a = a.config.image2_alignClasses;return { dimension: { requiredContent: "img[width,height]" }, align: { requiredContent: "img" + (a ? "(" + a[0] + ")" : "{float}") }, caption: { requiredContent: "figcaption" } };
        }function p(a) {
          return a.data.hasCaption ? a.element : a.parts.image;
        }var w = new CKEDITOR.template('\x3cfigure class\x3d"{captionedClass}"\x3e\x3cimg alt\x3d"" src\x3d"" /\x3e\x3cfigcaption\x3e{captionPlaceholder}\x3c/figcaption\x3e\x3c/figure\x3e'),
            y = { left: 0, center: 1, right: 2 },
            r = /^\s*(\d+\%)\s*$/i;CKEDITOR.plugins.add("image2", { requires: "widget,dialog", icons: "image", hidpi: !0, onLoad: function () {
            CKEDITOR.addCss('.cke_image_nocaption{line-height:0}.cke_editable.cke_image_sw, .cke_editable.cke_image_sw *{cursor:sw-resize !important}.cke_editable.cke_image_se, .cke_editable.cke_image_se *{cursor:se-resize !important}.cke_image_resizer{display:none;position:absolute;width:10px;height:10px;bottom:-5px;right:-5px;background:#000;outline:1px solid #fff;line-height:0;cursor:se-resize;}.cke_image_resizer_wrapper{position:relative;display:inline-block;line-height:0;}.cke_image_resizer.cke_image_resizer_left{right:auto;left:-5px;cursor:sw-resize;}.cke_widget_wrapper:hover .cke_image_resizer,.cke_image_resizer.cke_image_resizing{display:block}.cke_editable[contenteditable\x3d"false"] .cke_image_resizer{display:none;}.cke_widget_wrapper\x3ea{display:inline-block}');
          },
          init: function (a) {
            if (!a.plugins.detectConflict("image2", ["easyimage"])) {
              var b = a.config,
                  d = a.lang.image2,
                  e = c(a);b.filebrowserImage2BrowseUrl = b.filebrowserImageBrowseUrl;b.filebrowserImage2UploadUrl = b.filebrowserImageUploadUrl;e.pathName = d.pathName;e.editables.caption.pathName = d.pathNameCaption;a.widgets.add("image", e);a.ui.addButton && a.ui.addButton("Image", { label: a.lang.common.image, command: "image", toolbar: "insert,10" });a.contextMenu && (a.addMenuGroup("image", 10), a.addMenuItem("image", { label: d.menu, command: "image",
                group: "image" }));CKEDITOR.dialog.add("image2", this.path + "dialogs/image2.js");
            }
          }, afterInit: function (a) {
            var b = { left: 1, right: 1, center: 1, block: 1 },
                c = l(a),
                d;for (d in b) c(d);m(a);
          } });CKEDITOR.plugins.image2 = { stateShifter: function (a) {
            function b(a, f) {
              var g = {};e ? g.attributes = { "class": e[1] } : g.styles = { "text-align": "center" };g = d.createElement(a.activeEnterMode == CKEDITOR.ENTER_P ? "p" : "div", g);c(g, f);f.move(g);return g;
            }function c(b, d) {
              if (d.getParent()) {
                var e = a.createRange();e.moveToPosition(d, CKEDITOR.POSITION_BEFORE_START);
                d.remove();g.insertElementIntoRange(b, e);
              } else b.replace(d);
            }var d = a.document,
                e = a.config.image2_alignClasses,
                f = a.config.image2_captionedClass,
                g = a.editable(),
                h = ["hasCaption", "align", "link"],
                k = { align: function (c, d, f) {
                var g = c.element;c.changed.align ? c.newData.hasCaption || ("center" == f && (c.deflate(), c.element = b(a, g)), c.changed.hasCaption || "center" != d || "center" == f || (c.deflate(), d = g.findOne("a,img"), d.replace(g), c.element = d)) : "center" == f && c.changed.hasCaption && !c.newData.hasCaption && (c.deflate(), c.element = b(a, g));!e && g.is("figure") && ("center" == f ? g.setStyle("display", "inline-block") : g.removeStyle("display"));
              }, hasCaption: function (b, e, g) {
                b.changed.hasCaption && (e = b.element.is({ img: 1, a: 1 }) ? b.element : b.element.findOne("a,img"), b.deflate(), g ? (g = CKEDITOR.dom.element.createFromHtml(w.output({ captionedClass: f, captionPlaceholder: a.lang.image2.captionPlaceholder }), d), c(g, b.element), e.replace(g.findOne("img")), b.element = g) : (e.replace(b.element), b.element = e));
              }, link: function (b, c, e) {
                if (b.changed.link) {
                  var f = b.element.is("img") ? b.element : b.element.findOne("img"),
                      g = b.element.is("a") ? b.element : b.element.findOne("a"),
                      h = b.element.is("a") && !e || b.element.is("img") && e,
                      k;h && b.deflate();e ? (c || (k = d.createElement("a", { attributes: { href: b.newData.link.url } }), k.replace(f), f.move(k)), e = CKEDITOR.plugins.image2.getLinkAttributesGetter()(a, e), CKEDITOR.tools.isEmpty(e.set) || (k || g).setAttributes(e.set), e.removed.length && (k || g).removeAttributes(e.removed)) : (e = g.findOne("img"), e.replace(g), k = e);h && (b.element = k);
                }
              } };return function (a) {
              var b, c;
              a.changed = {};for (c = 0; c < h.length; c++) b = h[c], a.changed[b] = a.oldData ? a.oldData[b] !== a.newData[b] : !1;for (c = 0; c < h.length; c++) b = h[c], k[b](a, a.oldData ? a.oldData[b] : null, a.newData[b]);a.inflate();
            };
          }, checkHasNaturalRatio: function (a) {
            var b = a.$;a = this.getNatural(a);return Math.round(b.clientWidth / a.width * a.height) == b.clientHeight || Math.round(b.clientHeight / a.height * a.width) == b.clientWidth;
          }, getNatural: function (a) {
            if (a.$.naturalWidth) a = { width: a.$.naturalWidth, height: a.$.naturalHeight };else {
              var b = new Image();b.src = a.getAttribute("src");a = { width: b.width, height: b.height };
            }return a;
          }, getLinkAttributesGetter: function () {
            return CKEDITOR.plugins.link.getLinkAttributes;
          }, getLinkAttributesParser: function () {
            return CKEDITOR.plugins.link.parseLinkAttributes;
          } };
      }(), CKEDITOR.config.image2_captionedClass = "image", function () {
        CKEDITOR.plugins.add("imagespacingbox", { init: function (c) {
            CKEDITOR.on("dialogDefinition", function (h) {
              var g = h.data.definition;"image2" === h.data.dialog.getName() && (h = g.getContents("info"), h.get("spacingBox") || (g = { children: [{ children: [{ onShow: function () {
                      var a = this.getDialog().getParentEditor().widgets.focused;if (a) {
                        var c = a.parts.image.$.style,
                            g = "";c && (g = parseInt(c.marginLeft, 10) || parseInt(c.marginRight, 10));a.setData("hspace", g);
                      }
                    }, commit: function (a) {
                      a.setData("hspace", this.getValue());var c = a.data.hspace ? a.data.hspace : 0;(a = a.parts.image) && a.setStyles({ "margin-left": c + "px", "margin-right": c + "px" });
                    }, id: "hspace", label: c.lang.image.hSpace, requiredContent: "img{margin-left,margin-right}", setup: function (a) {
                      this.setValue(a.data.hspace);
                    },
                    type: "text", validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace) }], type: "hbox" }, { children: [{ onShow: function () {
                      var a = this.getDialog().getParentEditor().widgets.focused;if (a) {
                        var c = a.parts.image.$.style,
                            g = "";c && (g = parseInt(c.marginTop, 10) || parseInt(c.marginBottom, 10));a.setData("vspace", g);
                      }
                    }, commit: function (a) {
                      a.setData("vspace", this.getValue());var c = a.data.vspace ? a.data.vspace : 0;(a = a.parts.image) && a.setStyles({ "margin-bottom": c + "px", "margin-top": c + "px" });
                    }, id: "vspace", label: c.lang.image.vSpace,
                    requiredContent: "img{margin-top,margin-bottom}", setup: function (a) {
                      this.setValue(a.data.vspace);
                    }, type: "text", validate: CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace) }], type: "hbox" }], id: "spacingBox", type: "hbox" }, h.add(g)));
            });
          } });
      }(), function () {
        function c(a, c) {
          var k, l;c.on("refresh", function (a) {
            var b = [h],
                c;for (c in a.data.states) b.push(a.data.states[c]);this.setState(CKEDITOR.tools.search(b, g) ? g : h);
          }, c, null, 100);c.on("exec", function (c) {
            k = a.getSelection();l = k.createBookmarks(1);c.data || (c.data = {});c.data.done = !1;
          }, c, null, 0);c.on("exec", function () {
            a.forceNextSelectionCheck();k.selectBookmarks(l);
          }, c, null, 100);
        }var h = CKEDITOR.TRISTATE_DISABLED,
            g = CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indent", { init: function (a) {
            var e = CKEDITOR.plugins.indent.genericDefinition;c(a, a.addCommand("indent", new e(!0)));c(a, a.addCommand("outdent", new e()));a.ui.addButton && (a.ui.addButton("Indent", { label: a.lang.indent.indent, command: "indent", directional: !0, toolbar: "indent,20" }), a.ui.addButton("Outdent", { label: a.lang.indent.outdent,
              command: "outdent", directional: !0, toolbar: "indent,10" }));a.on("dirChanged", function (c) {
              var e = a.createRange(),
                  g = c.data.node;e.setStartBefore(g);e.setEndAfter(g);for (var b = new CKEDITOR.dom.walker(e), d; d = b.next();) if (d.type == CKEDITOR.NODE_ELEMENT) if (!d.equals(g) && d.getDirection()) e.setStartAfter(d), b = new CKEDITOR.dom.walker(e);else {
                var f = a.config.indentClasses;if (f) for (var h = "ltr" == c.data.dir ? ["_rtl", ""] : ["", "_rtl"], w = 0; w < f.length; w++) d.hasClass(f[w] + h[0]) && (d.removeClass(f[w] + h[0]), d.addClass(f[w] + h[1]));
                f = d.getStyle("margin-right");h = d.getStyle("margin-left");f ? d.setStyle("margin-left", f) : d.removeStyle("margin-left");h ? d.setStyle("margin-right", h) : d.removeStyle("margin-right");
              }
            });
          } });CKEDITOR.plugins.indent = { genericDefinition: function (a) {
            this.isIndent = !!a;this.startDisabled = !this.isIndent;
          }, specificDefinition: function (a, c, g) {
            this.name = c;this.editor = a;this.jobs = {};this.enterBr = a.config.enterMode == CKEDITOR.ENTER_BR;this.isIndent = !!g;this.relatedGlobal = g ? "indent" : "outdent";this.indentKey = g ? 9 : CKEDITOR.SHIFT + 9;this.database = {};
          }, registerCommands: function (a, c) {
            a.on("pluginsLoaded", function () {
              for (var a in c) (function (a, c) {
                var b = a.getCommand(c.relatedGlobal),
                    d;for (d in c.jobs) b.on("exec", function (b) {
                  b.data.done || (a.fire("lockSnapshot"), c.execJob(a, d) && (b.data.done = !0), a.fire("unlockSnapshot"), CKEDITOR.dom.element.clearAllMarkers(c.database));
                }, this, null, d), b.on("refresh", function (b) {
                  b.data.states || (b.data.states = {});b.data.states[c.name + "@" + d] = c.refreshJob(a, d, b.data.path);
                }, this, null, d);a.addFeature(c);
              })(this, c[a]);
            });
          } };CKEDITOR.plugins.indent.genericDefinition.prototype = { context: "p", exec: function () {} };CKEDITOR.plugins.indent.specificDefinition.prototype = { execJob: function (a, c) {
            var g = this.jobs[c];if (g.state != h) return g.exec.call(this, a);
          }, refreshJob: function (a, c, g) {
            c = this.jobs[c];a.activeFilter.checkFeature(this) ? c.state = c.refresh.call(this, a, g) : c.state = h;return c.state;
          }, getContext: function (a) {
            return a.contains(this.context);
          } };
      }(), function () {
        function c(a) {
          function b(b) {
            for (var h = l.startContainer, n = l.endContainer; h && !h.getParent().equals(b);) h = h.getParent();for (; n && !n.getParent().equals(b);) n = n.getParent();if (!h || !n) return !1;for (var x = [], q = !1; !q;) h.equals(n) && (q = !0), x.push(h), h = h.getNext();if (1 > x.length) return !1;h = b.getParents(!0);for (n = 0; n < h.length; n++) if (h[n].getName && k[h[n].getName()]) {
              b = h[n];break;
            }for (var h = c.isIndent ? 1 : -1, n = x[0], x = x[x.length - 1], q = CKEDITOR.plugins.list.listToArray(b, e), u = q[x.getCustomData("listarray_index")].indent, n = n.getCustomData("listarray_index"); n <= x.getCustomData("listarray_index"); n++) if (q[n].indent += h, 0 < h) {
              for (var t = q[n].parent, A = n - 1; 0 <= A; A--) if (q[A].indent === h) {
                t = q[A].parent;break;
              }q[n].parent = new CKEDITOR.dom.element(t.getName(), t.getDocument());
            }for (n = x.getCustomData("listarray_index") + 1; n < q.length && q[n].indent > u; n++) q[n].indent += h;h = CKEDITOR.plugins.list.arrayToList(q, e, null, a.config.enterMode, b.getDirection());if (!c.isIndent) {
              var r;if ((r = b.getParent()) && r.is("li")) for (var x = h.listNode.getChildren(), D = [], y, n = x.count() - 1; 0 <= n; n--) (y = x.getItem(n)) && y.is && y.is("li") && D.push(y);
            }h && h.listNode.replace(b);
            if (D && D.length) for (n = 0; n < D.length; n++) {
              for (y = b = D[n]; (y = y.getNext()) && y.is && y.getName() in k;) CKEDITOR.env.needsNbspFiller && !b.getFirst(g) && b.append(l.document.createText(" ")), b.append(y);b.insertAfter(r);
            }h && a.fire("contentDomInvalidated");return !0;
          }for (var c = this, e = this.database, k = this.context, l, y = a.getSelection(), y = (y && y.getRanges()).createIterator(); l = y.getNextRange();) {
            for (var r = l.getCommonAncestor(); r && (r.type != CKEDITOR.NODE_ELEMENT || !k[r.getName()]);) {
              if (a.editable().equals(r)) {
                r = !1;break;
              }r = r.getParent();
            }r || (r = l.startPath().contains(k)) && l.setEndAt(r, CKEDITOR.POSITION_BEFORE_END);if (!r) {
              var t = l.getEnclosedNode();t && t.type == CKEDITOR.NODE_ELEMENT && t.getName() in k && (l.setStartAt(t, CKEDITOR.POSITION_AFTER_START), l.setEndAt(t, CKEDITOR.POSITION_BEFORE_END), r = t);
            }r && l.startContainer.type == CKEDITOR.NODE_ELEMENT && l.startContainer.getName() in k && (t = new CKEDITOR.dom.walker(l), t.evaluator = h, l.startContainer = t.next());r && l.endContainer.type == CKEDITOR.NODE_ELEMENT && l.endContainer.getName() in k && (t = new CKEDITOR.dom.walker(l), t.evaluator = h, l.endContainer = t.previous());if (r) return b(r);
          }return 0;
        }function h(a) {
          return a.type == CKEDITOR.NODE_ELEMENT && a.is("li");
        }function g(c) {
          return a(c) && e(c);
        }var a = CKEDITOR.dom.walker.whitespaces(!0),
            e = CKEDITOR.dom.walker.bookmark(!1, !0),
            k = CKEDITOR.TRISTATE_DISABLED,
            l = CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentlist", { requires: "indent", init: function (a) {
            function b(a) {
              d.specificDefinition.apply(this, arguments);this.requiredContent = ["ul", "ol"];a.on("key", function (b) {
                var c = a.elementPath();
                if ("wysiwyg" == a.mode && b.data.keyCode == this.indentKey && c) {
                  var d = this.getContext(c);!d || this.isIndent && CKEDITOR.plugins.indentList.firstItemInPath(this.context, c, d) || (a.execCommand(this.relatedGlobal), b.cancel());
                }
              }, this);this.jobs[this.isIndent ? 10 : 30] = { refresh: this.isIndent ? function (a, b) {
                  var c = this.getContext(b),
                      d = CKEDITOR.plugins.indentList.firstItemInPath(this.context, b, c);return c && this.isIndent && !d ? l : k;
                } : function (a, b) {
                  return !this.getContext(b) || this.isIndent ? k : l;
                }, exec: CKEDITOR.tools.bind(c, this) };
            }
            var d = CKEDITOR.plugins.indent;d.registerCommands(a, { indentlist: new b(a, "indentlist", !0), outdentlist: new b(a, "outdentlist") });CKEDITOR.tools.extend(b.prototype, d.specificDefinition.prototype, { context: { ol: 1, ul: 1 } });
          } });CKEDITOR.plugins.indentList = {};CKEDITOR.plugins.indentList.firstItemInPath = function (a, b, c) {
          var e = b.contains(h);c || (c = b.contains(a));return c && e && e.equals(c.getFirst(h));
        };
      }(), function () {
        function c(a, c, b) {
          if (!a.getCustomData("indent_processed")) {
            var d = this.editor,
                e = this.isIndent;if (c) {
              d = a.$.className.match(this.classNameRegex);b = 0;d && (d = d[1], b = CKEDITOR.tools.indexOf(c, d) + 1);if (0 > (b += e ? 1 : -1)) return;b = Math.min(b, c.length);b = Math.max(b, 0);a.$.className = CKEDITOR.tools.ltrim(a.$.className.replace(this.classNameRegex, ""));0 < b && a.addClass(c[b - 1]);
            } else {
              c = h(a, b);b = parseInt(a.getStyle(c), 10);var g = d.config.indentOffset || 40;isNaN(b) && (b = 0);b += (e ? 1 : -1) * g;if (0 > b) return;b = Math.max(b, 0);b = Math.ceil(b / g) * g;a.setStyle(c, b ? b + (d.config.indentUnit || "px") : "");"" === a.getAttribute("style") && a.removeAttribute("style");
            }CKEDITOR.dom.element.setMarker(this.database, a, "indent_processed", 1);
          }
        }function h(a, c) {
          return "ltr" == (c || a.getComputedStyle("direction")) ? "margin-left" : "margin-right";
        }var g = CKEDITOR.dtd.$listItem,
            a = CKEDITOR.dtd.$list,
            e = CKEDITOR.TRISTATE_DISABLED,
            k = CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentblock", { requires: "indent", init: function (l) {
            function m() {
              b.specificDefinition.apply(this, arguments);this.allowedContent = { "div h1 h2 h3 h4 h5 h6 ol p pre ul": { propertiesOnly: !0, styles: d ? null : "margin-left,margin-right", classes: d || null } };this.contentTransformations = [["div: splitMarginShorthand"], ["h1: splitMarginShorthand"], ["h2: splitMarginShorthand"], ["h3: splitMarginShorthand"], ["h4: splitMarginShorthand"], ["h5: splitMarginShorthand"], ["h6: splitMarginShorthand"], ["ol: splitMarginShorthand"], ["p: splitMarginShorthand"], ["pre: splitMarginShorthand"], ["ul: splitMarginShorthand"]];this.enterBr && (this.allowedContent.div = !0);this.requiredContent = (this.enterBr ? "div" : "p") + (d ? "(" + d.join(",") + ")" : "{margin-left}");this.jobs = { 20: { refresh: function (a, b) {
                    var c = b.block || b.blockLimit;if (!c.is(g)) var l = c.getAscendant(g),
                        c = l && b.contains(l) || c;c.is(g) && (c = c.getParent());if (this.enterBr || this.getContext(b)) {
                      if (d) {
                        var l = d,
                            c = c.$.className.match(this.classNameRegex),
                            m = this.isIndent,
                            l = c ? m ? c[1] != l.slice(-1) : !0 : m;return l ? k : e;
                      }return this.isIndent ? k : c ? CKEDITOR[0 >= (parseInt(c.getStyle(h(c)), 10) || 0) ? "TRISTATE_DISABLED" : "TRISTATE_OFF"] : e;
                    }return e;
                  }, exec: function (b) {
                    var e = b.getSelection(),
                        e = e && e.getRanges()[0],
                        g;if (g = b.elementPath().contains(a)) c.call(this, g, d);else for (e = e.createIterator(), b = b.config.enterMode, e.enforceRealBlocks = !0, e.enlargeBr = b != CKEDITOR.ENTER_BR; g = e.getNextParagraph(b == CKEDITOR.ENTER_P ? "p" : "div");) g.isReadOnly() || c.call(this, g, d);return !0;
                  } } };
            }var b = CKEDITOR.plugins.indent,
                d = l.config.indentClasses;b.registerCommands(l, { indentblock: new m(l, "indentblock", !0), outdentblock: new m(l, "outdentblock") });CKEDITOR.tools.extend(m.prototype, b.specificDefinition.prototype, { context: { div: 1, dl: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, ul: 1, ol: 1, p: 1, pre: 1, table: 1 }, classNameRegex: d ? new RegExp("(?:^|\\s+)(" + d.join("|") + ")(?\x3d$|\\s)") : null });
          } });
      }(), function () {
        function c(a, c) {
          var g;if (c) g = a.getComputedStyle("text-align");else {
            for (; !a.hasAttribute || !a.hasAttribute("align") && !a.getStyle("text-align");) {
              g = a.getParent();if (!g) break;a = g;
            }g = a.getStyle("text-align") || a.getAttribute("align") || "";
          }g && (g = g.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i, ""));!g && c && (g = "rtl" == a.getComputedStyle("direction") ? "right" : "left");return g;
        }function h(a, c, g) {
          this.editor = a;this.name = c;this.value = g;this.context = "p";c = a.config.justifyClasses;
          var h = a.config.enterMode == CKEDITOR.ENTER_P ? "p" : "div";if (c) {
            switch (g) {case "left":
                this.cssClassName = c[0];break;case "center":
                this.cssClassName = c[1];break;case "right":
                this.cssClassName = c[2];break;case "justify":
                this.cssClassName = c[3];}this.cssClassRegex = new RegExp("(?:^|\\s+)(?:" + c.join("|") + ")(?\x3d$|\\s)");this.requiredContent = h + "(" + this.cssClassName + ")";
          } else this.requiredContent = h + "{text-align}";this.allowedContent = { "caption div h1 h2 h3 h4 h5 h6 p pre td th li": { propertiesOnly: !0, styles: this.cssClassName ? null : "text-align", classes: this.cssClassName || null } };a.config.enterMode == CKEDITOR.ENTER_BR && (this.allowedContent.div = !0);
        }function g(a) {
          var c = a.editor,
              g = c.createRange();g.setStartBefore(a.data.node);g.setEndAfter(a.data.node);for (var h = new CKEDITOR.dom.walker(g), m; m = h.next();) if (m.type == CKEDITOR.NODE_ELEMENT) if (!m.equals(a.data.node) && m.getDirection()) g.setStartAfter(m), h = new CKEDITOR.dom.walker(g);else {
            var b = c.config.justifyClasses;b && (m.hasClass(b[0]) ? (m.removeClass(b[0]), m.addClass(b[2])) : m.hasClass(b[2]) && (m.removeClass(b[2]), m.addClass(b[0])));b = m.getStyle("text-align");"left" == b ? m.setStyle("text-align", "right") : "right" == b && m.setStyle("text-align", "left");
          }
        }h.prototype = { exec: function (a) {
            var e = a.getSelection(),
                g = a.config.enterMode;if (e) {
              for (var h = e.createBookmarks(), m = e.getRanges(), b = this.cssClassName, d, f, p = a.config.useComputedState, w = m.length - 1; 0 <= w; w--) for (d = m[w].createIterator(), d.enlargeBr = g != CKEDITOR.ENTER_BR; f = d.getNextParagraph(g == CKEDITOR.ENTER_P ? "p" : "div");) if (!f.isReadOnly()) {
                var y = f.getName(),
                    r;r = a.activeFilter.check(y + "{text-align}");if ((y = a.activeFilter.check(y + "(" + b + ")")) || r) {
                  f.removeAttribute("align");f.removeStyle("text-align");var t = b && (f.$.className = CKEDITOR.tools.ltrim(f.$.className.replace(this.cssClassRegex, ""))),
                      v = this.state == CKEDITOR.TRISTATE_OFF && (!p || c(f, !0) != this.value);b && y ? v ? f.addClass(b) : t || f.removeAttribute("class") : v && r && f.setStyle("text-align", this.value);
                }
              }a.focus();a.forceNextSelectionCheck();e.selectBookmarks(h);
            }
          }, refresh: function (a, e) {
            var g = e.block || e.blockLimit,
                h = g.getName(),
                m = g.equals(a.editable()),
                h = this.cssClassName ? a.activeFilter.check(h + "(" + this.cssClassName + ")") : a.activeFilter.check(h + "{text-align}");m && !CKEDITOR.dtd.$list[e.lastElement.getName()] ? this.setState(CKEDITOR.TRISTATE_OFF) : !m && h ? this.setState(c(g, this.editor.config.useComputedState) == this.value ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF) : this.setState(CKEDITOR.TRISTATE_DISABLED);
          } };CKEDITOR.plugins.add("justify", { init: function (a) {
            if (!a.blockless) {
              var c = new h(a, "justifyleft", "left"),
                  k = new h(a, "justifycenter", "center"),
                  l = new h(a, "justifyright", "right"),
                  m = new h(a, "justifyblock", "justify");a.addCommand("justifyleft", c);a.addCommand("justifycenter", k);a.addCommand("justifyright", l);a.addCommand("justifyblock", m);a.ui.addButton && (a.ui.addButton("JustifyLeft", { label: a.lang.common.alignLeft, command: "justifyleft", toolbar: "align,10" }), a.ui.addButton("JustifyCenter", { label: a.lang.common.center, command: "justifycenter", toolbar: "align,20" }), a.ui.addButton("JustifyRight", { label: a.lang.common.alignRight,
                command: "justifyright", toolbar: "align,30" }), a.ui.addButton("JustifyBlock", { label: a.lang.common.justify, command: "justifyblock", toolbar: "align,40" }));a.on("dirChanged", g);
            }
          } });
      }(), function () {
        function c(a, c) {
          var b = k.exec(a),
              d = k.exec(c);if (b) {
            if (!b[2] && "px" == d[2]) return d[1];if ("px" == b[2] && !d[2]) return d[1] + "px";
          }return c;
        }function h(e) {
          return { elements: { $: function (h) {
                var b = h.attributes,
                    b = b && b["data-cke-realelement"],
                    d = g(e, decodeURIComponent(b));if ((b = (b = b && new CKEDITOR.htmlParser.fragment.fromHtml(d)) && b.children[0]) && h.attributes["data-cke-resizable"]) {
                  var f = new a(h).rules;h = b.attributes;d = f.width;f = f.height;d && (h.width = c(h.width, d));f && (h.height = c(h.height, f));
                }return b;
              } } };
        }function g(a, c) {
          var b = [],
              d = /^cke:/i,
              e = new CKEDITOR.htmlParser.filter({ elements: { "^": function (a) {
                d.test(a.name) && (a.name = a.name.replace(d, ""), b.push(a));
              }, iframe: function (a) {
                a.children = [];
              } } }),
              g = a.activeFilter,
              h = new CKEDITOR.htmlParser.basicWriter(),
              k = CKEDITOR.htmlParser.fragment.fromHtml(c);e.applyTo(k);g.applyTo(k);CKEDITOR.tools.array.forEach(b, function (a) {
            a.name = "cke:" + a.name;
          });k.writeHtml(h);return h.getHtml();
        }var a = CKEDITOR.htmlParser.cssStyle,
            e = CKEDITOR.tools.cssLength,
            k = /^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i;CKEDITOR.plugins.add("fakeobjects", { init: function (a) {
            a.filter.allow("img[!data-cke-realelement,src,alt,title](*){*}", "fakeobjects");
          }, afterInit: function (a) {
            var c = a.dataProcessor;(c = c && c.htmlFilter) && c.addRules(h(a), { applyToAll: !0 });
          } });CKEDITOR.editor.prototype.createFakeElement = function (c, g, b, d) {
          var f = this.lang.fakeobjects,
              f = f[b] || f.unknown;g = { "class": g, "data-cke-realelement": encodeURIComponent(c.getOuterHtml()), "data-cke-real-node-type": c.type, alt: f, title: f, align: c.getAttribute("align") || "" };CKEDITOR.env.hc || (g.src = CKEDITOR.tools.transparentImageData);b && (g["data-cke-real-element-type"] = b);d && (g["data-cke-resizable"] = d, b = new a(), d = c.getAttribute("width"), c = c.getAttribute("height"), d && (b.rules.width = e(d)), c && (b.rules.height = e(c)), b.populate(g));return this.document.createElement("img", { attributes: g });
        };CKEDITOR.editor.prototype.createFakeParserElement = function (c, g, b, d) {
          var f = this.lang.fakeobjects,
              f = f[b] || f.unknown,
              h;h = new CKEDITOR.htmlParser.basicWriter();c.writeHtml(h);h = h.getHtml();g = { "class": g, "data-cke-realelement": encodeURIComponent(h), "data-cke-real-node-type": c.type, alt: f, title: f, align: c.attributes.align || "" };CKEDITOR.env.hc || (g.src = CKEDITOR.tools.transparentImageData);b && (g["data-cke-real-element-type"] = b);d && (g["data-cke-resizable"] = d, d = c.attributes, c = new a(), b = d.width, d = d.height, void 0 !== b && (c.rules.width = e(b)), void 0 !== d && (c.rules.height = e(d)), c.populate(g));return new CKEDITOR.htmlParser.element("img", g);
        };CKEDITOR.editor.prototype.restoreRealElement = function (a) {
          if (a.data("cke-real-node-type") != CKEDITOR.NODE_ELEMENT) return null;var e = decodeURIComponent(a.data("cke-realelement")),
              e = g(this, e),
              e = CKEDITOR.dom.element.createFromHtml(e, this.document);if (a.data("cke-resizable")) {
            var b = a.getStyle("width");a = a.getStyle("height");b && e.setAttribute("width", c(e.getAttribute("width"), b));a && e.setAttribute("height", c(e.getAttribute("height"), a));
          }return e;
        };
      }(), "use strict", function () {
        function c(a) {
          return a.replace(/'/g, "\\$\x26");
        }function h(a) {
          for (var b = a.length, c = [], d, e = 0; e < b; e++) d = a.charCodeAt(e), c.push(d);return "String.fromCharCode(" + c.join(",") + ")";
        }function g(a, b) {
          for (var d = a.plugins.link, e = d.compiledProtectionFunction.params, d = [d.compiledProtectionFunction.name, "("], f, g, h = 0; h < e.length; h++) f = e[h].toLowerCase(), g = b[f], 0 < h && d.push(","), d.push("'", g ? c(encodeURIComponent(b[f])) : "", "'");d.push(")");return d.join("");
        }function a(a) {
          a = a.config.emailProtection || "";var b;a && "encode" != a && (b = {}, a.replace(/^([^(]+)\(([^)]+)\)$/, function (a, c, d) {
            b.name = c;b.params = [];d.replace(/[^,\s]+/g, function (a) {
              b.params.push(a);
            });
          }));return b;
        }CKEDITOR.plugins.add("link", { requires: "dialog,fakeobjects", onLoad: function () {
            function a(b) {
              return c.replace(/%1/g, "rtl" == b ? "right" : "left").replace(/%2/g, "cke_contents_" + b);
            }var b = "background:url(" + CKEDITOR.getUrl(this.path + "images" + (CKEDITOR.env.hidpi ? "/hidpi" : "") + "/anchor.png") + ") no-repeat %1 center;border:1px dotted #00f;background-size:16px;",
                c = ".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{" + b + "padding-%1:18px;cursor:auto;}.%2 img.cke_anchor{" + b + "width:16px;min-height:15px;height:1.15em;vertical-align:text-bottom;}";CKEDITOR.addCss(a("ltr") + a("rtl"));
          }, init: function (b) {
            var c = "a[!href]";CKEDITOR.dialog.isTabEnabled(b, "link", "advanced") && (c = c.replace("]", ",accesskey,charset,dir,id,lang,name,rel,tabindex,title,type,download]{*}(*)"));CKEDITOR.dialog.isTabEnabled(b, "link", "target") && (c = c.replace("]", ",target,onclick]"));b.addCommand("link", new CKEDITOR.dialogCommand("link", { allowedContent: c, requiredContent: "a[href]" }));b.addCommand("anchor", new CKEDITOR.dialogCommand("anchor", { allowedContent: "a[!name,id]", requiredContent: "a[name]" }));b.addCommand("unlink", new CKEDITOR.unlinkCommand());b.addCommand("removeAnchor", new CKEDITOR.removeAnchorCommand());b.setKeystroke(CKEDITOR.CTRL + 76, "link");b.setKeystroke(CKEDITOR.CTRL + 75, "link");b.ui.addButton && (b.ui.addButton("Link", { label: b.lang.link.toolbar,
              command: "link", toolbar: "links,10" }), b.ui.addButton("Unlink", { label: b.lang.link.unlink, command: "unlink", toolbar: "links,20" }), b.ui.addButton("Anchor", { label: b.lang.link.anchor.toolbar, command: "anchor", toolbar: "links,30" }));CKEDITOR.dialog.add("link", this.path + "dialogs/link.js");CKEDITOR.dialog.add("anchor", this.path + "dialogs/anchor.js");b.on("doubleclick", function (a) {
              var c = a.data.element.getAscendant({ a: 1, img: 1 }, !0);c && !c.isReadOnly() && (c.is("a") ? (a.data.dialog = !c.getAttribute("name") || c.getAttribute("href") && c.getChildCount() ? "link" : "anchor", a.data.link = c) : CKEDITOR.plugins.link.tryRestoreFakeAnchor(b, c) && (a.data.dialog = "anchor"));
            }, null, null, 0);b.on("doubleclick", function (a) {
              a.data.dialog in { link: 1, anchor: 1 } && a.data.link && b.getSelection().selectElement(a.data.link);
            }, null, null, 20);b.addMenuItems && b.addMenuItems({ anchor: { label: b.lang.link.anchor.menu, command: "anchor", group: "anchor", order: 1 }, removeAnchor: { label: b.lang.link.anchor.remove, command: "removeAnchor", group: "anchor", order: 5 }, link: { label: b.lang.link.menu,
                command: "link", group: "link", order: 1 }, unlink: { label: b.lang.link.unlink, command: "unlink", group: "link", order: 5 } });b.contextMenu && b.contextMenu.addListener(function (a) {
              if (!a || a.isReadOnly()) return null;a = CKEDITOR.plugins.link.tryRestoreFakeAnchor(b, a);if (!a && !(a = CKEDITOR.plugins.link.getSelectedLink(b))) return null;var c = {};a.getAttribute("href") && a.getChildCount() && (c = { link: CKEDITOR.TRISTATE_OFF, unlink: CKEDITOR.TRISTATE_OFF });a && a.hasAttribute("name") && (c.anchor = c.removeAnchor = CKEDITOR.TRISTATE_OFF);
              return c;
            });this.compiledProtectionFunction = a(b);
          }, afterInit: function (a) {
            a.dataProcessor.dataFilter.addRules({ elements: { a: function (b) {
                  return b.attributes.name ? b.children.length ? null : a.createFakeParserElement(b, "cke_anchor", "anchor") : null;
                } } });var b = a._.elementsPath && a._.elementsPath.filters;b && b.push(function (b, c) {
              if ("a" == c && (CKEDITOR.plugins.link.tryRestoreFakeAnchor(a, b) || b.getAttribute("name") && (!b.getAttribute("href") || !b.getChildCount()))) return "anchor";
            });
          } });var e = /^javascript:/,
            k = /^(?:mailto)(?:(?!\?(subject|body)=).)+/i,
            l = /subject=([^;?:@&=$,\/]*)/i,
            m = /body=([^;?:@&=$,\/]*)/i,
            b = /^#(.*)$/,
            d = /^((?:http|https|ftp|news):\/\/)?(.*)$/,
            f = /^(_(?:self|top|parent|blank))$/,
            p = /^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,
            w = /^javascript:([^(]+)\(([^)]+)\)$/,
            y = /\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,
            r = /(?:^|,)([^=]+)=(\d+|yes|no)/gi,
            t = /^tel:(.*)$/,
            v = { id: "advId", dir: "advLangDir", accessKey: "advAccessKey", name: "advName",
          lang: "advLangCode", tabindex: "advTabIndex", title: "advTitle", type: "advContentType", "class": "advCSSClasses", charset: "advCharset", style: "advStyles", rel: "advRel" };CKEDITOR.plugins.link = { getSelectedLink: function (a, b) {
            var c = a.getSelection(),
                d = c.getSelectedElement(),
                e = c.getRanges(),
                f = [],
                g;if (!b && d && d.is("a")) return d;for (d = 0; d < e.length; d++) if (g = c.getRanges()[d], g.shrink(CKEDITOR.SHRINK_ELEMENT, !0, { skipBogus: !0 }), (g = a.elementPath(g.getCommonAncestor()).contains("a", 1)) && b) f.push(g);else if (g) return g;return b ? f : null;
          }, getEditorAnchors: function (a) {
            for (var b = a.editable(), c = b.isInline() && !a.plugins.divarea ? a.document : b, b = c.getElementsByTag("a"), c = c.getElementsByTag("img"), d = [], e = 0, f; f = b.getItem(e++);) (f.data("cke-saved-name") || f.hasAttribute("name")) && d.push({ name: f.data("cke-saved-name") || f.getAttribute("name"), id: f.getAttribute("id") });for (e = 0; f = c.getItem(e++);) (f = this.tryRestoreFakeAnchor(a, f)) && d.push({ name: f.getAttribute("name"), id: f.getAttribute("id") });return d;
          }, fakeAnchor: !0, tryRestoreFakeAnchor: function (a, b) {
            if (b && b.data("cke-real-element-type") && "anchor" == b.data("cke-real-element-type")) {
              var c = a.restoreRealElement(b);if (c.data("cke-saved-name")) return c;
            }
          }, parseLinkAttributes: function (a, c) {
            var g = c && (c.data("cke-saved-href") || c.getAttribute("href")) || "",
                h = a.plugins.link.compiledProtectionFunction,
                u = a.config.emailProtection,
                z = {},
                A;g.match(e) && ("encode" == u ? g = g.replace(p, function (a, b, c) {
              c = c || "";return "mailto:" + String.fromCharCode.apply(String, b.split(",")) + c.replace(/\\'/g, "'");
            }) : u && g.replace(w, function (a, b, c) {
              if (b == h.name) {
                z.type = "email";a = z.email = {};b = /(^')|('$)/g;c = c.match(/[^,\s]+/g);for (var d = c.length, e, f, g = 0; g < d; g++) e = decodeURIComponent, f = c[g].replace(b, "").replace(/\\'/g, "'"), f = e(f), e = h.params[g].toLowerCase(), a[e] = f;a.address = [a.name, a.domain].join("@");
              }
            }));if (!z.type) if (u = g.match(b)) z.type = "anchor", z.anchor = {}, z.anchor.name = z.anchor.id = u[1];else if (u = g.match(t)) z.type = "tel", z.tel = u[1];else if (u = g.match(k)) {
              A = g.match(l);var g = g.match(m),
                  C = z.email = {};z.type = "email";C.address = u[0].replace("mailto:", "");A && (C.subject = decodeURIComponent(A[1]));g && (C.body = decodeURIComponent(g[1]));
            } else g && (A = g.match(d)) && (z.type = "url", z.url = {}, z.url.protocol = A[1], z.url.url = A[2]);if (c) {
              if (g = c.getAttribute("target")) z.target = { type: g.match(f) ? g : "frame", name: g };else if (g = (g = c.data("cke-pa-onclick") || c.getAttribute("onclick")) && g.match(y)) for (z.target = { type: "popup", name: g[1] }; u = r.exec(g[2]);) "yes" != u[2] && "1" != u[2] || u[1] in { height: 1, width: 1, top: 1, left: 1 } ? isFinite(u[2]) && (z.target[u[1]] = u[2]) : z.target[u[1]] = !0;null !== c.getAttribute("download") && (z.download = !0);var g = {},
                  D;for (D in v) (u = c.getAttribute(D)) && (g[v[D]] = u);if (D = c.data("cke-saved-name") || g.advName) g.advName = D;CKEDITOR.tools.isEmpty(g) || (z.advanced = g);
            }return z;
          }, getLinkAttributes: function (a, b) {
            var d = a.config.emailProtection || "",
                e = {};switch (b.type) {case "url":
                var d = b.url && void 0 !== b.url.protocol ? b.url.protocol : "http://",
                    f = b.url && CKEDITOR.tools.trim(b.url.url) || "";e["data-cke-saved-href"] = 0 === f.indexOf("/") ? f : d + f;break;case "anchor":
                d = b.anchor && b.anchor.id;
                e["data-cke-saved-href"] = "#" + (b.anchor && b.anchor.name || d || "");break;case "email":
                var k = b.email,
                    f = k.address;switch (d) {case "":case "encode":
                    var l = encodeURIComponent(k.subject || ""),
                        m = encodeURIComponent(k.body || ""),
                        k = [];l && k.push("subject\x3d" + l);m && k.push("body\x3d" + m);k = k.length ? "?" + k.join("\x26") : "";"encode" == d ? (d = ["javascript:void(location.href\x3d'mailto:'+", h(f)], k && d.push("+'", c(k), "'"), d.push(")")) : d = ["mailto:", f, k];break;default:
                    d = f.split("@", 2), k.name = d[0], k.domain = d[1], d = ["javascript:", g(a, k)];}e["data-cke-saved-href"] = d.join("");break;case "tel":
                e["data-cke-saved-href"] = "tel:" + b.tel;}if (b.target) if ("popup" == b.target.type) {
              for (var d = ["window.open(this.href, '", b.target.name || "", "', '"], p = "resizable status location toolbar menubar fullscreen scrollbars dependent".split(" "), f = p.length, l = function (a) {
                b.target[a] && p.push(a + "\x3d" + b.target[a]);
              }, k = 0; k < f; k++) p[k] += b.target[p[k]] ? "\x3dyes" : "\x3dno";l("width");l("left");l("height");l("top");d.push(p.join(","), "'); return false;");e["data-cke-pa-onclick"] = d.join("");
            } else "notSet" != b.target.type && b.target.name && (e.target = b.target.name);b.download && (e.download = "");if (b.advanced) {
              for (var t in v) (d = b.advanced[v[t]]) && (e[t] = d);e.name && (e["data-cke-saved-name"] = e.name);
            }e["data-cke-saved-href"] && (e.href = e["data-cke-saved-href"]);t = { target: 1, onclick: 1, "data-cke-pa-onclick": 1, "data-cke-saved-name": 1, download: 1 };b.advanced && CKEDITOR.tools.extend(t, v);for (var w in e) delete t[w];return { set: e, removed: CKEDITOR.tools.object.keys(t) };
          }, showDisplayTextForElement: function (a, b) {
            var d = b.getSelection();return b.widgets && b.widgets.focused || d && 1 < d.getRanges().length ? !1 : !a || !a.getName || !a.is({ img: 1, table: 1, tbody: 1, thead: 1, tfoot: 1, input: 1, select: 1, textarea: 1 });
          } };CKEDITOR.unlinkCommand = function () {};CKEDITOR.unlinkCommand.prototype = { exec: function (a) {
            if (CKEDITOR.env.ie) {
              var b = a.getSelection().getRanges()[0],
                  c = b.getPreviousEditableNode() && b.getPreviousEditableNode().getAscendant("a", !0) || b.getNextEditableNode() && b.getNextEditableNode().getAscendant("a", !0),
                  d;b.collapsed && c && (d = b.createBookmark(), b.selectNodeContents(c), b.select());
            }c = new CKEDITOR.style({ element: "a", type: CKEDITOR.STYLE_INLINE, alwaysRemoveElement: 1 });a.removeStyle(c);d && (b.moveToBookmark(d), b.select());
          }, refresh: function (a, b) {
            var c = b.lastElement && b.lastElement.getAscendant("a", !0);c && "a" == c.getName() && c.getAttribute("href") && c.getChildCount() ? this.setState(CKEDITOR.TRISTATE_OFF) : this.setState(CKEDITOR.TRISTATE_DISABLED);
          }, contextSensitive: 1, startDisabled: 1, requiredContent: "a[href]", editorFocus: 1 };CKEDITOR.removeAnchorCommand = function () {};CKEDITOR.removeAnchorCommand.prototype = { exec: function (a) {
            var b = a.getSelection(),
                c = b.createBookmarks(),
                d;if (b && (d = b.getSelectedElement()) && (d.getChildCount() ? d.is("a") : CKEDITOR.plugins.link.tryRestoreFakeAnchor(a, d))) d.remove(1);else if (d = CKEDITOR.plugins.link.getSelectedLink(a)) d.hasAttribute("href") ? (d.removeAttributes({ name: 1, "data-cke-saved-name": 1 }), d.removeClass("cke_anchor")) : d.remove(1);b.selectBookmarks(c);
          }, requiredContent: "a[name]" };CKEDITOR.tools.extend(CKEDITOR.config, { linkShowAdvancedTab: !0,
          linkShowTargetTab: !0, linkDefaultProtocol: "http://" });
      }(), function () {
        function c(a, b, c, d) {
          for (var e = CKEDITOR.plugins.list.listToArray(b.root, c), f = [], g = 0; g < b.contents.length; g++) {
            var h = b.contents[g];(h = h.getAscendant("li", !0)) && !h.getCustomData("list_item_processed") && (f.push(h), CKEDITOR.dom.element.setMarker(c, h, "list_item_processed", !0));
          }for (var h = b.root.getDocument(), k, l, g = 0; g < f.length; g++) {
            var m = f[g].getCustomData("listarray_index");k = e[m].parent;k.is(this.type) || (l = h.createElement(this.type), k.copyAttributes(l, { start: 1, type: 1 }), l.removeStyle("list-style-type"), e[m].parent = l);
          }c = CKEDITOR.plugins.list.arrayToList(e, c, null, a.config.enterMode);for (var p, e = c.listNode.getChildCount(), g = 0; g < e && (p = c.listNode.getChild(g)); g++) p.getName() == this.type && d.push(p);c.listNode.replace(b.root);a.fire("contentDomInvalidated");
        }function h(a, b, c) {
          var d = b.contents,
              e = b.root.getDocument(),
              f = [];if (1 == d.length && d[0].equals(b.root)) {
            var g = e.createElement("div");d[0].moveChildren && d[0].moveChildren(g);d[0].append(g);d[0] = g;
          }b = b.contents[0].getParent();
          for (g = 0; g < d.length; g++) b = b.getCommonAncestor(d[g].getParent());a = a.config.useComputedState;for (var h, k, g = 0; g < d.length; g++) for (var l = d[g], m; m = l.getParent();) {
            if (m.equals(b)) {
              f.push(l);!k && l.getDirection() && (k = 1);l = l.getDirection(a);null !== h && (h = h && h != l ? null : l);break;
            }l = m;
          }if (!(1 > f.length)) {
            d = f[f.length - 1].getNext();g = e.createElement(this.type);for (c.push(g); f.length;) c = f.shift(), a = e.createElement("li"), l = c, l.is("pre") || r.test(l.getName()) || "false" == l.getAttribute("contenteditable") ? c.appendTo(a) : (c.copyAttributes(a), h && c.getDirection() && (a.removeStyle("direction"), a.removeAttribute("dir")), c.moveChildren(a), c.remove()), a.appendTo(g);h && k && g.setAttribute("dir", h);d ? g.insertBefore(d) : g.appendTo(b);
          }
        }function g(a, b, c) {
          function d(c) {
            if (!(!(l = k[c ? "getFirst" : "getLast"]()) || l.is && l.isBlockBoundary() || !(m = b.root[c ? "getPrevious" : "getNext"](CKEDITOR.dom.walker.invisible(!0))) || m.is && m.isBlockBoundary({ br: 1 }))) a.document.createElement("br")[c ? "insertBefore" : "insertAfter"](l);
          }for (var e = CKEDITOR.plugins.list.listToArray(b.root, c), f = [], g = 0; g < b.contents.length; g++) {
            var h = b.contents[g];(h = h.getAscendant("li", !0)) && !h.getCustomData("list_item_processed") && (f.push(h), CKEDITOR.dom.element.setMarker(c, h, "list_item_processed", !0));
          }h = null;for (g = 0; g < f.length; g++) h = f[g].getCustomData("listarray_index"), e[h].indent = -1;for (g = h + 1; g < e.length; g++) if (e[g].indent > e[g - 1].indent + 1) {
            f = e[g - 1].indent + 1 - e[g].indent;for (h = e[g].indent; e[g] && e[g].indent >= h;) e[g].indent += f, g++;g--;
          }var k = CKEDITOR.plugins.list.arrayToList(e, c, null, a.config.enterMode, b.root.getAttribute("dir")).listNode,
              l,
              m;d(!0);d();k.replace(b.root);a.fire("contentDomInvalidated");
        }function a(a, b) {
          this.name = a;this.context = this.type = b;this.allowedContent = b + " li";this.requiredContent = b;
        }function e(a, b, c, d) {
          for (var e, f; e = a[d ? "getLast" : "getFirst"](t);) (f = e.getDirection(1)) !== b.getDirection(1) && e.setAttribute("dir", f), e.remove(), c ? e[d ? "insertBefore" : "insertAfter"](c) : b.append(e, d), c = e;
        }function k(a) {
          function b(c) {
            var d = a[c ? "getPrevious" : "getNext"](w);d && d.type == CKEDITOR.NODE_ELEMENT && d.is(a.getName()) && (e(a, d, null, !c), a.remove(), a = d);
          }b();b(1);
        }function l(a) {
          return a.type == CKEDITOR.NODE_ELEMENT && (a.getName() in CKEDITOR.dtd.$block || a.getName() in CKEDITOR.dtd.$listItem) && CKEDITOR.dtd[a.getName()]["#"];
        }function m(a, c, d) {
          a.fire("saveSnapshot");d.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var f = d.extractContents();c.trim(!1, !0);var g = c.createBookmark(),
              h = new CKEDITOR.dom.elementPath(c.startContainer),
              l = h.block,
              h = h.lastElement.getAscendant("li", 1) || l,
              m = new CKEDITOR.dom.elementPath(d.startContainer),
              p = m.contains(CKEDITOR.dtd.$listItem),
              m = m.contains(CKEDITOR.dtd.$list);l ? (l = l.getBogus()) && l.remove() : m && (l = m.getPrevious(w)) && y(l) && l.remove();(l = f.getLast()) && l.type == CKEDITOR.NODE_ELEMENT && l.is("br") && l.remove();(l = c.startContainer.getChild(c.startOffset)) ? f.insertBefore(l) : c.startContainer.append(f);p && (f = b(p)) && (h.contains(p) ? (e(f, p.getParent(), p), f.remove()) : h.append(f));for (; d.checkStartOfBlock() && d.checkEndOfBlock();) {
            m = d.startPath();f = m.block;if (!f) break;f.is("li") && (h = f.getParent(), f.equals(h.getLast(w)) && f.equals(h.getFirst(w)) && (f = h));d.moveToPosition(f, CKEDITOR.POSITION_BEFORE_START);f.remove();
          }d = d.clone();f = a.editable();d.setEndAt(f, CKEDITOR.POSITION_BEFORE_END);d = new CKEDITOR.dom.walker(d);d.evaluator = function (a) {
            return w(a) && !y(a);
          };(d = d.next()) && d.type == CKEDITOR.NODE_ELEMENT && d.getName() in CKEDITOR.dtd.$list && k(d);c.moveToBookmark(g);c.select();a.fire("saveSnapshot");
        }function b(a) {
          return (a = a.getLast(w)) && a.type == CKEDITOR.NODE_ELEMENT && a.getName() in d ? a : null;
        }var d = { ol: 1, ul: 1 },
            f = CKEDITOR.dom.walker.whitespaces(),
            p = CKEDITOR.dom.walker.bookmark(),
            w = function (a) {
          return !(f(a) || p(a));
        },
            y = CKEDITOR.dom.walker.bogus();CKEDITOR.plugins.list = { listToArray: function (a, b, c, e, f) {
            if (!d[a.getName()]) return [];e || (e = 0);c || (c = []);for (var g = 0, h = a.getChildCount(); g < h; g++) {
              var k = a.getChild(g);k.type == CKEDITOR.NODE_ELEMENT && k.getName() in CKEDITOR.dtd.$list && CKEDITOR.plugins.list.listToArray(k, b, c, e + 1);if ("li" == k.$.nodeName.toLowerCase()) {
                var l = { parent: a, indent: e, element: k, contents: [] };f ? l.grandparent = f : (l.grandparent = a.getParent(), l.grandparent && "li" == l.grandparent.$.nodeName.toLowerCase() && (l.grandparent = l.grandparent.getParent()));b && CKEDITOR.dom.element.setMarker(b, k, "listarray_index", c.length);c.push(l);for (var m = 0, p = k.getChildCount(), t; m < p; m++) t = k.getChild(m), t.type == CKEDITOR.NODE_ELEMENT && d[t.getName()] ? CKEDITOR.plugins.list.listToArray(t, b, c, e + 1, l.grandparent) : l.contents.push(t);
              }
            }return c;
          }, arrayToList: function (a, b, c, e, f) {
            c || (c = 0);if (!a || a.length < c + 1) return null;for (var g, h = a[c].parent.getDocument(), k = new CKEDITOR.dom.documentFragment(h), l = null, m = c, t = Math.max(a[c].indent, 0), r = null, y, F, M = e == CKEDITOR.ENTER_P ? "p" : "div";;) {
              var H = a[m];g = H.grandparent;y = H.element.getDirection(1);if (H.indent == t) {
                l && a[m].parent.getName() == l.getName() || (l = a[m].parent.clone(!1, 1), f && l.setAttribute("dir", f), k.append(l));r = l.append(H.element.clone(0, 1));y != l.getDirection(1) && r.setAttribute("dir", y);for (g = 0; g < H.contents.length; g++) r.append(H.contents[g].clone(1, 1));m++;
              } else if (H.indent == Math.max(t, 0) + 1) H = a[m - 1].element.getDirection(1), m = CKEDITOR.plugins.list.arrayToList(a, null, m, e, H != y ? y : null), !r.getChildCount() && CKEDITOR.env.needsNbspFiller && 7 >= h.$.documentMode && r.append(h.createText(" ")), r.append(m.listNode), m = m.nextIndex;else if (-1 == H.indent && !c && g) {
                d[g.getName()] ? (r = H.element.clone(!1, !0), y != g.getDirection(1) && r.setAttribute("dir", y)) : r = new CKEDITOR.dom.documentFragment(h);var l = g.getDirection(1) != y,
                    I = H.element,
                    P = I.getAttribute("class"),
                    L = I.getAttribute("style"),
                    O = r.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT && (e != CKEDITOR.ENTER_BR || l || L || P),
                    N,
                    V = H.contents.length,
                    S;
                for (g = 0; g < V; g++) if (N = H.contents[g], p(N) && 1 < V) O ? S = N.clone(1, 1) : r.append(N.clone(1, 1));else if (N.type == CKEDITOR.NODE_ELEMENT && N.isBlockBoundary()) {
                  l && !N.getDirection() && N.setAttribute("dir", y);F = N;var U = I.getAttribute("style");U && F.setAttribute("style", U.replace(/([^;])$/, "$1;") + (F.getAttribute("style") || ""));P && N.addClass(P);F = null;S && (r.append(S), S = null);r.append(N.clone(1, 1));
                } else O ? (F || (F = h.createElement(M), r.append(F), l && F.setAttribute("dir", y)), L && F.setAttribute("style", L), P && F.setAttribute("class", P), S && (F.append(S), S = null), F.append(N.clone(1, 1))) : r.append(N.clone(1, 1));S && ((F || r).append(S), S = null);r.type == CKEDITOR.NODE_DOCUMENT_FRAGMENT && m != a.length - 1 && (CKEDITOR.env.needsBrFiller && (y = r.getLast()) && y.type == CKEDITOR.NODE_ELEMENT && y.is("br") && y.remove(), (y = r.getLast(w)) && y.type == CKEDITOR.NODE_ELEMENT && y.is(CKEDITOR.dtd.$block) || r.append(h.createElement("br")));y = r.$.nodeName.toLowerCase();"div" != y && "p" != y || r.appendBogus();k.append(r);l = null;m++;
              } else return null;F = null;if (a.length <= m || Math.max(a[m].indent, 0) < t) break;
            }if (b) for (a = k.getFirst(); a;) {
              if (a.type == CKEDITOR.NODE_ELEMENT && (CKEDITOR.dom.element.clearMarkers(b, a), a.getName() in CKEDITOR.dtd.$listItem && (c = a, h = f = e = void 0, e = c.getDirection()))) {
                for (f = c.getParent(); f && !(h = f.getDirection());) f = f.getParent();e == h && c.removeAttribute("dir");
              }a = a.getNextSourceNode();
            }return { listNode: k, nextIndex: m };
          } };var r = /^h[1-6]$/,
            t = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);a.prototype = { exec: function (a) {
            function b(a) {
              return d[a.root.getName()] && !e(a.root, [CKEDITOR.NODE_COMMENT]);
            }
            function e(a, b) {
              return CKEDITOR.tools.array.filter(a.getChildren().toArray(), function (a) {
                return -1 === CKEDITOR.tools.array.indexOf(b, a.type);
              }).length;
            }function f(a) {
              var b = !0;if (0 === a.getChildCount()) return !1;a.forEach(function (a) {
                if (a.type !== CKEDITOR.NODE_COMMENT) return b = !1;
              }, null, !0);return b;
            }this.refresh(a, a.elementPath());var l = a.config,
                m = a.getSelection(),
                p = m && m.getRanges();if (this.state == CKEDITOR.TRISTATE_OFF) {
              var t = a.editable();if (t.getFirst(w)) {
                var r = 1 == p.length && p[0];(l = r && r.getEnclosedNode()) && l.is && this.type == l.getName() && this.setState(CKEDITOR.TRISTATE_ON);
              } else l.enterMode == CKEDITOR.ENTER_BR ? t.appendBogus() : p[0].fixBlock(1, l.enterMode == CKEDITOR.ENTER_P ? "p" : "div"), m.selectRanges(p);
            }for (var l = m.createBookmarks(!0), t = [], y = {}, p = p.createIterator(), E = 0; (r = p.getNextRange()) && ++E;) {
              var G = r.getBoundaryNodes(),
                  K = G.startNode,
                  F = G.endNode;K.type == CKEDITOR.NODE_ELEMENT && "td" == K.getName() && r.setStartAt(G.startNode, CKEDITOR.POSITION_AFTER_START);F.type == CKEDITOR.NODE_ELEMENT && "td" == F.getName() && r.setEndAt(G.endNode, CKEDITOR.POSITION_BEFORE_END);r = r.createIterator();for (r.forceBrBreak = this.state == CKEDITOR.TRISTATE_OFF; G = r.getNextParagraph();) if (!G.getCustomData("list_block") && !f(G)) {
                CKEDITOR.dom.element.setMarker(y, G, "list_block", 1);for (var M = a.elementPath(G), K = M.elements, F = 0, M = M.blockLimit, H, I = K.length - 1; 0 <= I && (H = K[I]); I--) if (d[H.getName()] && M.contains(H)) {
                  M.removeCustomData("list_group_object_" + E);(K = H.getCustomData("list_group_object")) ? K.contents.push(G) : (K = { root: H, contents: [G] }, t.push(K), CKEDITOR.dom.element.setMarker(y, H, "list_group_object", K));F = 1;break;
                }F || (F = M, F.getCustomData("list_group_object_" + E) ? F.getCustomData("list_group_object_" + E).contents.push(G) : (K = { root: F, contents: [G] }, CKEDITOR.dom.element.setMarker(y, F, "list_group_object_" + E, K), t.push(K)));
              }
            }for (H = []; 0 < t.length;) K = t.shift(), this.state == CKEDITOR.TRISTATE_OFF ? b(K) || (d[K.root.getName()] ? c.call(this, a, K, y, H) : h.call(this, a, K, H)) : this.state == CKEDITOR.TRISTATE_ON && d[K.root.getName()] && !b(K) && g.call(this, a, K, y);for (I = 0; I < H.length; I++) k(H[I]);CKEDITOR.dom.element.clearAllMarkers(y);
            m.selectBookmarks(l);a.focus();
          }, refresh: function (a, b) {
            var c = b.contains(d, 1),
                e = b.blockLimit || b.root;c && e.contains(c) ? this.setState(c.is(this.type) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF) : this.setState(CKEDITOR.TRISTATE_OFF);
          } };CKEDITOR.plugins.add("list", { requires: "indentlist", init: function (c) {
            c.blockless || (c.addCommand("numberedlist", new a("numberedlist", "ol")), c.addCommand("bulletedlist", new a("bulletedlist", "ul")), c.ui.addButton && (c.ui.addButton("NumberedList", { label: c.lang.list.numberedlist,
              command: "numberedlist", directional: !0, toolbar: "list,10" }), c.ui.addButton("BulletedList", { label: c.lang.list.bulletedlist, command: "bulletedlist", directional: !0, toolbar: "list,20" })), c.on("key", function (a) {
              var e = a.data.domEvent.getKey(),
                  f;if ("wysiwyg" == c.mode && e in { 8: 1, 46: 1 }) {
                var g = c.getSelection().getRanges()[0],
                    h = g && g.startPath();if (g && g.collapsed) {
                  var k = 8 == e,
                      p = c.editable(),
                      t = new CKEDITOR.dom.walker(g.clone());t.evaluator = function (a) {
                    return w(a) && !y(a);
                  };t.guard = function (a, b) {
                    return !(b && a.type == CKEDITOR.NODE_ELEMENT && a.is("table"));
                  };e = g.clone();if (k) {
                    var r;(r = h.contains(d)) && g.checkBoundaryOfElement(r, CKEDITOR.START) && (r = r.getParent()) && r.is("li") && (r = b(r)) ? (f = r, r = r.getPrevious(w), e.moveToPosition(r && y(r) ? r : f, CKEDITOR.POSITION_BEFORE_START)) : (t.range.setStartAt(p, CKEDITOR.POSITION_AFTER_START), t.range.setEnd(g.startContainer, g.startOffset), (r = t.previous()) && r.type == CKEDITOR.NODE_ELEMENT && (r.getName() in d || r.is("li")) && (r.is("li") || (t.range.selectNodeContents(r), t.reset(), t.evaluator = l, r = t.previous()), f = r, e.moveToElementEditEnd(f), e.moveToPosition(e.endPath().block, CKEDITOR.POSITION_BEFORE_END)));if (f) m(c, e, g), a.cancel();else {
                      var E = h.contains(d);E && g.checkBoundaryOfElement(E, CKEDITOR.START) && (f = E.getFirst(w), g.checkBoundaryOfElement(f, CKEDITOR.START) && (r = E.getPrevious(w), b(f) ? r && (g.moveToElementEditEnd(r), g.select()) : c.execCommand("outdent"), a.cancel()));
                    }
                  } else if (f = h.contains("li")) {
                    if (t.range.setEndAt(p, CKEDITOR.POSITION_BEFORE_END), k = (p = f.getLast(w)) && l(p) ? p : f, h = 0, (r = t.next()) && r.type == CKEDITOR.NODE_ELEMENT && r.getName() in d && r.equals(p) ? (h = 1, r = t.next()) : g.checkBoundaryOfElement(k, CKEDITOR.END) && (h = 2), h && r) {
                      g = g.clone();g.moveToElementEditStart(r);if (1 == h && (e.optimize(), !e.startContainer.equals(f))) {
                        for (f = e.startContainer; f.is(CKEDITOR.dtd.$inline);) E = f, f = f.getParent();E && e.moveToPosition(E, CKEDITOR.POSITION_AFTER_END);
                      }2 == h && (e.moveToPosition(e.endPath().block, CKEDITOR.POSITION_BEFORE_END), g.endPath().block && g.moveToPosition(g.endPath().block, CKEDITOR.POSITION_AFTER_START));m(c, e, g);a.cancel();
                    }
                  } else t.range.setEndAt(p, CKEDITOR.POSITION_BEFORE_END), (r = t.next()) && r.type == CKEDITOR.NODE_ELEMENT && r.is(d) && (r = r.getFirst(w), h.block && g.checkStartOfBlock() && g.checkEndOfBlock() ? (h.block.remove(), g.moveToElementEditStart(r), g.select()) : b(r) ? (g.moveToElementEditStart(r), g.select()) : (g = g.clone(), g.moveToElementEditStart(r), m(c, e, g)), a.cancel());setTimeout(function () {
                    c.selectionChange(1);
                  });
                }
              }
            }));
          } });
      }(), function () {
        CKEDITOR.plugins.liststyle = { requires: "dialog,contextmenu", init: function (c) {
            if (!c.blockless) {
              var h = new CKEDITOR.dialogCommand("numberedListStyle", { requiredContent: "ol", allowedContent: "ol{list-style-type}[start]; li{list-style-type}[value]", contentTransformations: [["ol: listTypeToStyle"]] });h = c.addCommand("numberedListStyle", h);c.addFeature(h);CKEDITOR.dialog.add("numberedListStyle", this.path + "dialogs/liststyle.js");h = new CKEDITOR.dialogCommand("bulletedListStyle", { requiredContent: "ul", allowedContent: "ul{list-style-type}", contentTransformations: [["ul: listTypeToStyle"]] });h = c.addCommand("bulletedListStyle", h);c.addFeature(h);CKEDITOR.dialog.add("bulletedListStyle", this.path + "dialogs/liststyle.js");c.addMenuGroup("list", 108);c.addMenuItems({ numberedlist: { label: c.lang.liststyle.numberedTitle, group: "list", command: "numberedListStyle" }, bulletedlist: { label: c.lang.liststyle.bulletedTitle, group: "list", command: "bulletedListStyle" } });c.contextMenu.addListener(function (c) {
                if (!c || c.isReadOnly()) return null;for (; c;) {
                  var a = c.getName();if ("ol" == a) return { numberedlist: CKEDITOR.TRISTATE_OFF };if ("ul" == a) return { bulletedlist: CKEDITOR.TRISTATE_OFF };c = c.getParent();
                }return null;
              });
            }
          } };
        CKEDITOR.plugins.add("liststyle", CKEDITOR.plugins.liststyle);
      }(), "use strict", function () {
        function c(a, b, c) {
          return p(b) && p(c) && c.equals(b.getNext(function (a) {
            return !(aa(a) || ca(a) || w(a));
          }));
        }function h(a) {
          this.upper = a[0];this.lower = a[1];this.set.apply(this, a.slice(2));
        }function g(a) {
          var b = a.element;if (b && p(b) && (b = b.getAscendant(a.triggers, !0)) && a.editable.contains(b)) {
            var c = l(b);if ("true" == c.getAttribute("contenteditable")) return b;if (c.is(a.triggers)) return c;
          }return null;
        }function a(a, b, c) {
          q(a, b);q(a, c);a = b.size.bottom;c = c.size.top;return a && c ? 0 | (a + c) / 2 : a || c;
        }function e(a, b, c) {
          return b = b[c ? "getPrevious" : "getNext"](function (b) {
            return b && b.type == CKEDITOR.NODE_TEXT && !aa(b) || p(b) && !w(b) && !f(a, b);
          });
        }function k(a, b, c) {
          return a > b && a < c;
        }function l(a, b) {
          if (a.data("cke-editable")) return null;for (b || (a = a.getParent()); a && !a.data("cke-editable");) {
            if (a.hasAttribute("contenteditable")) return a;a = a.getParent();
          }return null;
        }function m(a) {
          var c = a.doc,
              d = E('\x3cspan contenteditable\x3d"false" data-cke-magic-line\x3d"1" style\x3d"' + ia + "position:absolute;border-top:1px dashed " + a.boxColor + '"\x3e\x3c/span\x3e', c),
              e = CKEDITOR.getUrl(this.path + "images/" + (G.hidpi ? "hidpi/" : "") + "icon" + (a.rtl ? "-rtl" : "") + ".png");C(d, { attach: function () {
              this.wrap.getParent() || this.wrap.appendTo(a.editable, !0);return this;
            }, lineChildren: [C(E('\x3cspan title\x3d"' + a.editor.lang.magicline.title + '" contenteditable\x3d"false"\x3e\x26#8629;\x3c/span\x3e', c), { base: ia + "height:17px;width:17px;" + (a.rtl ? "left" : "right") + ":17px;background:url(" + e + ") center no-repeat " + a.boxColor + ";cursor:pointer;" + (G.hc ? "font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;" : "") + (G.hidpi ? "background-size: 9px 10px;" : ""), looks: ["top:-8px; border-radius: 2px;", "top:-17px; border-radius: 2px 2px 0px 0px;", "top:-1px; border-radius: 0px 0px 2px 2px;"] }), C(E(W, c), { base: ka + "left:0px;border-left-color:" + a.boxColor + ";", looks: ["border-width:8px 0 8px 8px;top:-8px", "border-width:8px 0 0 8px;top:-8px", "border-width:0 0 8px 8px;top:0px"] }), C(E(W, c), { base: ka + "right:0px;border-right-color:" + a.boxColor + ";", looks: ["border-width:8px 8px 8px 0;top:-8px", "border-width:8px 8px 0 0;top:-8px", "border-width:0 8px 8px 0;top:0px"] })], detach: function () {
              this.wrap.getParent() && this.wrap.remove();return this;
            }, mouseNear: function () {
              q(a, this);var b = a.holdDistance,
                  c = this.size;return c && k(a.mouse.y, c.top - b, c.bottom + b) && k(a.mouse.x, c.left - b, c.right + b) ? !0 : !1;
            }, place: function () {
              var b = a.view,
                  c = a.editable,
                  d = a.trigger,
                  e = d.upper,
                  f = d.lower,
                  g = e || f,
                  h = g.getParent(),
                  l = {};this.trigger = d;e && q(a, e, !0);f && q(a, f, !0);q(a, h, !0);a.inInlineMode && u(a, !0);h.equals(c) ? (l.left = b.scroll.x, l.right = -b.scroll.x, l.width = "") : (l.left = g.size.left - g.size.margin.left + b.scroll.x - (a.inInlineMode ? b.editable.left + b.editable.border.left : 0), l.width = g.size.outerWidth + g.size.margin.left + g.size.margin.right + b.scroll.x, l.right = "");e && f ? l.top = e.size.margin.bottom === f.size.margin.top ? 0 | e.size.bottom + e.size.margin.bottom / 2 : e.size.margin.bottom < f.size.margin.top ? e.size.bottom + e.size.margin.bottom : e.size.bottom + e.size.margin.bottom - f.size.margin.top : e ? f || (l.top = e.size.bottom + e.size.margin.bottom) : l.top = f.size.top - f.size.margin.top;d.is(O) || k(l.top, b.scroll.y - 15, b.scroll.y + 5) ? (l.top = a.inInlineMode ? 0 : b.scroll.y, this.look(O)) : d.is(N) || k(l.top, b.pane.bottom - 5, b.pane.bottom + 15) ? (l.top = a.inInlineMode ? b.editable.height + b.editable.padding.top + b.editable.padding.bottom : b.pane.bottom - 1, this.look(N)) : (a.inInlineMode && (l.top -= b.editable.top + b.editable.border.top), this.look(V));a.inInlineMode && (l.top--, l.top += b.editable.scroll.top, l.left += b.editable.scroll.left);
              for (var m in l) l[m] = CKEDITOR.tools.cssLength(l[m]);this.setStyles(l);
            }, look: function (a) {
              if (this.oldLook != a) {
                for (var b = this.lineChildren.length, c; b--;) (c = this.lineChildren[b]).setAttribute("style", c.base + c.looks[0 | a / 2]);this.oldLook = a;
              }
            }, wrap: new D("span", a.doc) });for (c = d.lineChildren.length; c--;) d.lineChildren[c].appendTo(d);d.look(V);d.appendTo(d.wrap);d.unselectable();d.lineChildren[0].on("mouseup", function (c) {
            d.detach();b(a, function (b) {
              var c = a.line.trigger;b[c.is(H) ? "insertBefore" : "insertAfter"](c.is(H) ? c.lower : c.upper);
            }, !0);a.editor.focus();G.ie || a.enterMode == CKEDITOR.ENTER_BR || a.hotNode.scrollIntoView();c.data.preventDefault(!0);
          });d.on("mousedown", function (a) {
            a.data.preventDefault(!0);
          });a.line = d;
        }function b(a, b, c) {
          var d = new CKEDITOR.dom.range(a.doc),
              e = a.editor,
              f;G.ie && a.enterMode == CKEDITOR.ENTER_BR ? f = a.doc.createText(S) : (f = (f = l(a.element, !0)) && f.data("cke-enter-mode") || a.enterMode, f = new D(M[f], a.doc), f.is("br") || a.doc.createText(S).appendTo(f));c && e.fire("saveSnapshot");b(f);d.moveToPosition(f, CKEDITOR.POSITION_AFTER_START);e.getSelection().selectRanges([d]);a.hotNode = f;c && e.fire("saveSnapshot");
        }function d(a, c) {
          return { canUndo: !0, modes: { wysiwyg: 1 }, exec: function () {
              function d(e) {
                var f = G.ie && 9 > G.version ? " " : S,
                    g = a.hotNode && a.hotNode.getText() == f && a.element.equals(a.hotNode) && a.lastCmdDirection === !!c;b(a, function (b) {
                  g && a.hotNode && a.hotNode.remove();b[c ? "insertAfter" : "insertBefore"](e);b.setAttributes({ "data-cke-magicline-hot": 1, "data-cke-magicline-dir": !!c });a.lastCmdDirection = !!c;
                });G.ie || a.enterMode == CKEDITOR.ENTER_BR || a.hotNode.scrollIntoView();a.line.detach();
              }return function (b) {
                b = b.getSelection().getStartElement();var f;b = b.getAscendant(ea, 1);if (!t(a, b) && b && !b.equals(a.editable) && !b.contains(a.editable)) {
                  (f = l(b)) && "false" == f.getAttribute("contenteditable") && (b = f);a.element = b;f = e(a, b, !c);var h;p(f) && f.is(a.triggers) && f.is(T) && (!e(a, f, !c) || (h = e(a, f, !c)) && p(h) && h.is(a.triggers)) ? d(f) : (h = g(a, b), p(h) && (e(a, h, !c) ? (b = e(a, h, !c)) && p(b) && b.is(a.triggers) && d(h) : d(h)));
                }
              };
            }() };
        }function f(a, b) {
          if (!b || b.type != CKEDITOR.NODE_ELEMENT || !b.$) return !1;var c = a.line;return c.wrap.equals(b) || c.wrap.contains(b);
        }function p(a) {
          return a && a.type == CKEDITOR.NODE_ELEMENT && a.$;
        }function w(a) {
          if (!p(a)) return !1;var b;(b = y(a)) || (p(a) ? (b = { left: 1, right: 1, center: 1 }, b = !(!b[a.getComputedStyle("float")] && !b[a.getAttribute("align")])) : b = !1);return b;
        }function y(a) {
          return !!{ absolute: 1, fixed: 1 }[a.getComputedStyle("position")];
        }function r(a, b) {
          return p(b) ? b.is(a.triggers) : null;
        }function t(a, b) {
          if (!b) return !1;for (var c = b.getParents(1), d = c.length; d--;) for (var e = a.tabuList.length; e--;) if (c[d].hasAttribute(a.tabuList[e])) return !0;return !1;
        }function v(a, b, c) {
          b = b[c ? "getLast" : "getFirst"](function (b) {
            return a.isRelevant(b) && !b.is(da);
          });if (!b) return !1;q(a, b);return c ? b.size.top > a.mouse.y : b.size.bottom < a.mouse.y;
        }function B(a) {
          var b = a.editable,
              c = a.mouse,
              d = a.view,
              e = a.triggerOffset;u(a);var g = c.y > (a.inInlineMode ? d.editable.top + d.editable.height / 2 : Math.min(d.editable.height, d.pane.height) / 2),
              b = b[g ? "getLast" : "getFirst"](function (a) {
            return !(aa(a) || ca(a));
          });if (!b) return null;f(a, b) && (b = a.line.wrap[g ? "getPrevious" : "getNext"](function (a) {
            return !(aa(a) || ca(a));
          }));if (!p(b) || w(b) || !r(a, b)) return null;q(a, b);return !g && 0 <= b.size.top && k(c.y, 0, b.size.top + e) ? (a = a.inInlineMode || 0 === d.scroll.y ? O : V, new h([null, b, H, L, a])) : g && b.size.bottom <= d.pane.height && k(c.y, b.size.bottom - e, d.pane.height) ? (a = a.inInlineMode || k(b.size.bottom, d.pane.height - e, d.pane.height) ? N : V, new h([b, null, I, L, a])) : null;
        }function n(a) {
          var b = a.mouse,
              c = a.view,
              d = a.triggerOffset,
              f = g(a);if (!f) return null;
          q(a, f);var d = Math.min(d, 0 | f.size.outerHeight / 2),
              l = [],
              m,
              n;if (k(b.y, f.size.top - 1, f.size.top + d)) n = !1;else if (k(b.y, f.size.bottom - d, f.size.bottom + 1)) n = !0;else return null;if (w(f) || v(a, f, n) || f.getParent().is(U)) return null;var t = e(a, f, !n);if (t) {
            if (t && t.type == CKEDITOR.NODE_TEXT) return null;if (p(t)) {
              if (w(t) || !r(a, t) || t.getParent().is(U)) return null;l = [t, f][n ? "reverse" : "concat"]().concat([P, L]);
            }
          } else f.equals(a.editable[n ? "getLast" : "getFirst"](a.isRelevant)) ? (u(a), n && k(b.y, f.size.bottom - d, c.pane.height) && k(f.size.bottom, c.pane.height - d, c.pane.height) ? m = N : k(b.y, 0, f.size.top + d) && (m = O)) : m = V, l = [null, f][n ? "reverse" : "concat"]().concat([n ? I : H, L, m, f.equals(a.editable[n ? "getLast" : "getFirst"](a.isRelevant)) ? n ? N : O : V]);return 0 in l ? new h(l) : null;
        }function x(a, b, c, d) {
          for (var e = b.getDocumentPosition(), f = {}, g = {}, h = {}, k = {}, l = Q.length; l--;) f[Q[l]] = parseInt(b.getComputedStyle.call(b, "border-" + Q[l] + "-width"), 10) || 0, h[Q[l]] = parseInt(b.getComputedStyle.call(b, "padding-" + Q[l]), 10) || 0, g[Q[l]] = parseInt(b.getComputedStyle.call(b, "margin-" + Q[l]), 10) || 0;c && !d || z(a, d);k.top = e.y - (c ? 0 : a.view.scroll.y);k.left = e.x - (c ? 0 : a.view.scroll.x);k.outerWidth = b.$.offsetWidth;k.outerHeight = b.$.offsetHeight;k.height = k.outerHeight - (h.top + h.bottom + f.top + f.bottom);k.width = k.outerWidth - (h.left + h.right + f.left + f.right);k.bottom = k.top + k.outerHeight;k.right = k.left + k.outerWidth;a.inInlineMode && (k.scroll = { top: b.$.scrollTop, left: b.$.scrollLeft });return C({ border: f, padding: h, margin: g, ignoreScroll: c }, k, !0);
        }function q(a, b, c) {
          if (!p(b)) return b.size = null;if (!b.size) b.size = {};else if (b.size.ignoreScroll == c && b.size.date > new Date() - fa) return null;return C(b.size, x(a, b, c), { date: +new Date() }, !0);
        }function u(a, b) {
          a.view.editable = x(a, a.editable, b, !0);
        }function z(a, b) {
          a.view || (a.view = {});var c = a.view;if (!(!b && c && c.date > new Date() - fa)) {
            var d = a.win,
                c = d.getScrollPosition(),
                d = d.getViewPaneSize();C(a.view, { scroll: { x: c.x, y: c.y, width: a.doc.$.documentElement.scrollWidth - d.width, height: a.doc.$.documentElement.scrollHeight - d.height }, pane: { width: d.width, height: d.height, bottom: d.height + c.y },
              date: +new Date() }, !0);
          }
        }function A(a, b, c, d) {
          for (var e = d, f = d, g = 0, k = !1, l = !1, m = a.view.pane.height, n = a.mouse; n.y + g < m && 0 < n.y - g;) {
            k || (k = b(e, d));l || (l = b(f, d));!k && 0 < n.y - g && (e = c(a, { x: n.x, y: n.y - g }));!l && n.y + g < m && (f = c(a, { x: n.x, y: n.y + g }));if (k && l) break;g += 2;
          }return new h([e, f, null, null]);
        }CKEDITOR.plugins.add("magicline", { init: function (a) {
            var c = a.config,
                k = c.magicline_triggerOffset || 30,
                l = { editor: a, enterMode: c.enterMode, triggerOffset: k, holdDistance: 0 | k * (c.magicline_holdDistance || .5), boxColor: c.magicline_color || "#ff0000",
              rtl: "rtl" == c.contentsLangDirection, tabuList: ["data-cke-hidden-sel"].concat(c.magicline_tabuList || []), triggers: c.magicline_everywhere ? ea : { table: 1, hr: 1, div: 1, ul: 1, ol: 1, dl: 1, form: 1, blockquote: 1 } },
                q,
                v,
                r;l.isRelevant = function (a) {
              return p(a) && !f(l, a) && !w(a);
            };a.on("contentDom", function () {
              var k = a.editable(),
                  p = a.document,
                  w = a.window;C(l, { editable: k, inInlineMode: k.isInline(), doc: p, win: w, hotNode: null }, !0);l.boundary = l.inInlineMode ? l.editable : l.doc.getDocumentElement();k.is(F.$inline) || (l.inInlineMode && !y(k) && k.setStyles({ position: "relative", top: null, left: null }), m.call(this, l), z(l), k.attachListener(a, "beforeUndoImage", function () {
                l.line.detach();
              }), k.attachListener(a, "beforeGetData", function () {
                l.line.wrap.getParent() && (l.line.detach(), a.once("getData", function () {
                  l.line.attach();
                }, null, null, 1E3));
              }, null, null, 0), k.attachListener(l.inInlineMode ? p : p.getWindow().getFrame(), "mouseout", function (b) {
                if ("wysiwyg" == a.mode) if (l.inInlineMode) {
                  var c = b.data.$.clientX;b = b.data.$.clientY;z(l);u(l, !0);var d = l.view.editable,
                      e = l.view.scroll;c > d.left - e.x && c < d.right - e.x && b > d.top - e.y && b < d.bottom - e.y || (clearTimeout(r), r = null, l.line.detach());
                } else clearTimeout(r), r = null, l.line.detach();
              }), k.attachListener(k, "keyup", function () {
                l.hiddenMode = 0;
              }), k.attachListener(k, "keydown", function (b) {
                if ("wysiwyg" == a.mode) switch (b.data.getKeystroke()) {case 2228240:case 16:
                    l.hiddenMode = 1, l.line.detach();}
              }), k.attachListener(l.inInlineMode ? k : p, "mousemove", function (b) {
                v = !0;if ("wysiwyg" == a.mode && !a.readOnly && !r) {
                  var c = { x: b.data.$.clientX, y: b.data.$.clientY };
                  r = setTimeout(function () {
                    l.mouse = c;r = l.trigger = null;z(l);v && !l.hiddenMode && a.focusManager.hasFocus && !l.line.mouseNear() && (l.element = Z(l, !0)) && ((l.trigger = B(l) || n(l) || X(l)) && !t(l, l.trigger.upper || l.trigger.lower) ? l.line.attach().place() : (l.trigger = null, l.line.detach()), v = !1);
                  }, 30);
                }
              }), k.attachListener(w, "scroll", function () {
                "wysiwyg" == a.mode && (l.line.detach(), G.webkit && (l.hiddenMode = 1, clearTimeout(q), q = setTimeout(function () {
                  l.mouseDown || (l.hiddenMode = 0);
                }, 50)));
              }), k.attachListener(K ? p : w, "mousedown", function () {
                "wysiwyg" == a.mode && (l.line.detach(), l.hiddenMode = 1, l.mouseDown = 1);
              }), k.attachListener(K ? p : w, "mouseup", function () {
                l.hiddenMode = 0;l.mouseDown = 0;
              }), a.addCommand("accessPreviousSpace", d(l)), a.addCommand("accessNextSpace", d(l, !0)), a.setKeystroke([[c.magicline_keystrokePrevious, "accessPreviousSpace"], [c.magicline_keystrokeNext, "accessNextSpace"]]), a.on("loadSnapshot", function () {
                var b, c, d, e;for (e in { p: 1, br: 1, div: 1 }) for (b = a.document.getElementsByTag(e), d = b.count(); d--;) if ((c = b.getItem(d)).data("cke-magicline-hot")) {
                  l.hotNode = c;l.lastCmdDirection = "true" === c.data("cke-magicline-dir") ? !0 : !1;return;
                }
              }), a._.magiclineBackdoor = { accessFocusSpace: b, boxTrigger: h, isLine: f, getAscendantTrigger: g, getNonEmptyNeighbour: e, getSize: x, that: l, triggerEdge: n, triggerEditable: B, triggerExpand: X });
            }, this);
          } });var C = CKEDITOR.tools.extend,
            D = CKEDITOR.dom.element,
            E = D.createFromHtml,
            G = CKEDITOR.env,
            K = CKEDITOR.env.ie && 9 > CKEDITOR.env.version,
            F = CKEDITOR.dtd,
            M = {},
            H = 128,
            I = 64,
            P = 32,
            L = 16,
            O = 4,
            N = 2,
            V = 1,
            S = " ",
            U = F.$listItem,
            da = F.$tableContent,
            T = C({}, F.$nonEditable, F.$empty),
            ea = F.$block,
            fa = 100,
            ia = "width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;",
            ka = ia + "border-color:transparent;display:block;border-style:solid;",
            W = "\x3cspan\x3e" + S + "\x3c/span\x3e";M[CKEDITOR.ENTER_BR] = "br";M[CKEDITOR.ENTER_P] = "p";M[CKEDITOR.ENTER_DIV] = "div";h.prototype = { set: function (a, b, c) {
            this.properties = a + b + (c || V);return this;
          }, is: function (a) {
            return (this.properties & a) == a;
          } };var Z = function () {
          function a(b, c) {
            var d = b.$.elementFromPoint(c.x, c.y);return d && d.nodeType ? new CKEDITOR.dom.element(d) : null;
          }return function (b, c, d) {
            if (!b.mouse) return null;var e = b.doc,
                g = b.line.wrap;d = d || b.mouse;var h = a(e, d);c && f(b, h) && (g.hide(), h = a(e, d), g.show());return !h || h.type != CKEDITOR.NODE_ELEMENT || !h.$ || G.ie && 9 > G.version && !b.boundary.equals(h) && !b.boundary.contains(h) ? null : h;
          };
        }(),
            aa = CKEDITOR.dom.walker.whitespaces(),
            ca = CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_COMMENT),
            X = function () {
          function b(e) {
            var f = e.element,
                g,
                h,
                l;if (!p(f) || f.contains(e.editable) || f.isReadOnly()) return null;l = A(e, function (a, b) {
              return !b.equals(a);
            }, function (a, b) {
              return Z(a, !0, b);
            }, f);g = l.upper;h = l.lower;if (c(e, g, h)) return l.set(P, 8);if (g && f.contains(g)) for (; !g.getParent().equals(f);) g = g.getParent();else g = f.getFirst(function (a) {
              return d(e, a);
            });if (h && f.contains(h)) for (; !h.getParent().equals(f);) h = h.getParent();else h = f.getLast(function (a) {
              return d(e, a);
            });if (!g || !h) return null;q(e, g);q(e, h);if (!k(e.mouse.y, g.size.top, h.size.bottom)) return null;for (var f = Number.MAX_VALUE, m, n, u, t; h && !h.equals(g) && (n = g.getNext(e.isRelevant));) m = Math.abs(a(e, g, n) - e.mouse.y), m < f && (f = m, u = g, t = n), g = n, q(e, g);if (!u || !t || !k(e.mouse.y, u.size.top, t.size.bottom)) return null;l.upper = u;l.lower = t;return l.set(P, 8);
          }function d(a, b) {
            return !(b && b.type == CKEDITOR.NODE_TEXT || ca(b) || w(b) || f(a, b) || b.type == CKEDITOR.NODE_ELEMENT && b.$ && b.is("br"));
          }return function (a) {
            var d = b(a),
                e;if (e = d) {
              e = d.upper;var f = d.lower;e = !e || !f || w(f) || w(e) || f.equals(e) || e.equals(f) || f.contains(e) || e.contains(f) ? !1 : r(a, e) && r(a, f) && c(a, e, f) ? !0 : !1;
            }return e ? d : null;
          };
        }(),
            Q = ["top", "left", "right", "bottom"];
      }(), CKEDITOR.config.magicline_keystrokePrevious = CKEDITOR.CTRL + CKEDITOR.SHIFT + 51, CKEDITOR.config.magicline_keystrokeNext = CKEDITOR.CTRL + CKEDITOR.SHIFT + 52, "use strict", function () {
        function c(c) {
          return { "aria-label": c, "class": "cke_pagebreak", contenteditable: "false", "data-cke-display-name": "pagebreak", "data-cke-pagebreak": 1, style: "page-break-after: always", title: c };
        }CKEDITOR.plugins.add("pagebreak", { requires: "fakeobjects", onLoad: function () {
            var c = ("background:url(" + CKEDITOR.getUrl(this.path + "images/pagebreak.gif") + ") no-repeat center center;clear:both;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;padding:0;height:7px;cursor:default;").replace(/;/g, " !important;");CKEDITOR.addCss("div.cke_pagebreak{" + c + "}");
          }, init: function (c) {
            c.blockless || (c.addCommand("pagebreak", CKEDITOR.plugins.pagebreakCmd), c.ui.addButton && c.ui.addButton("PageBreak", { label: c.lang.pagebreak.toolbar, command: "pagebreak", toolbar: "insert,70" }), CKEDITOR.env.webkit && c.on("contentDom", function () {
              c.document.on("click", function (g) {
                g = g.data.getTarget();g.is("div") && g.hasClass("cke_pagebreak") && c.getSelection().selectElement(g);
              });
            }));
          }, afterInit: function (h) {
            function g(a) {
              CKEDITOR.tools.extend(a.attributes, c(h.lang.pagebreak.alt), !0);a.children.length = 0;
            }var a = h.dataProcessor,
                e = a && a.dataFilter,
                a = a && a.htmlFilter,
                k = /page-break-after\s*:\s*always/i,
                l = /display\s*:\s*none/i;a && a.addRules({ attributes: { "class": function (a, b) {
                  var c = a.replace("cke_pagebreak", "");if (c != a) {
                    var e = CKEDITOR.htmlParser.fragment.fromHtml('\x3cspan style\x3d"display: none;"\x3e\x26nbsp;\x3c/span\x3e').children[0];
                    b.children.length = 0;b.add(e);e = b.attributes;delete e["aria-label"];delete e.contenteditable;delete e.title;
                  }return c;
                } } }, { applyToAll: !0, priority: 5 });e && e.addRules({ elements: { div: function (a) {
                  if (a.attributes["data-cke-pagebreak"]) g(a);else if (k.test(a.attributes.style)) {
                    var b = a.children[0];b && "span" == b.name && l.test(b.attributes.style) && g(a);
                  }
                } } });
          } });CKEDITOR.plugins.pagebreakCmd = { exec: function (c) {
            c.insertElement(CKEDITOR.plugins.pagebreak.createElement(c));
          }, context: "div", allowedContent: { div: { styles: "!page-break-after" },
            span: { match: function (c) {
                return (c = c.parent) && "div" == c.name && c.styles && c.styles["page-break-after"];
              }, styles: "display" } }, requiredContent: "div{page-break-after}" };CKEDITOR.plugins.pagebreak = { createElement: function (h) {
            return h.document.createElement("div", { attributes: c(h.lang.pagebreak.alt) });
          } };
      }(), function () {
        CKEDITOR.plugins.add("pastefromword", { requires: "pastetools", init: function (c) {
            var h = 0,
                g = CKEDITOR.plugins.getPath("pastetools"),
                a = this.path,
                e = void 0 === c.config.pasteFromWord_inlineImages ? !0 : c.config.pasteFromWord_inlineImages,
                g = [CKEDITOR.getUrl(g + "filter/common.js"), CKEDITOR.getUrl(g + "filter/image.js"), CKEDITOR.getUrl(a + "filter/default.js")];c.addCommand("pastefromword", { canUndo: !1, async: !0, exec: function (a, c) {
                h = 1;a.execCommand("paste", { type: "html", notification: c && "undefined" !== typeof c.notification ? c.notification : !0 });
              } });CKEDITOR.plugins.clipboard.addPasteButton(c, "PasteFromWord", { label: c.lang.pastefromword.toolbar, command: "pastefromword", toolbar: "clipboard,50" });c.pasteTools.register({ filters: c.config.pasteFromWordCleanupFile ? [c.config.pasteFromWordCleanupFile] : g, canHandle: function (a) {
                a = CKEDITOR.plugins.pastetools.getClipboardData(a.data, "text/html");var c = CKEDITOR.plugins.pastetools.getContentGeneratorName(a),
                    e = /(class="?Mso|style=["'][^"]*?\bmso\-|w:WordDocument|<o:\w+>|<\/font>)/,
                    c = c ? "microsoft" === c : e.test(a);return a && (h || c);
              }, handle: function (a, g) {
                var m = a.data,
                    b = CKEDITOR.plugins.pastetools.getClipboardData(m, "text/html"),
                    d = CKEDITOR.plugins.pastetools.getClipboardData(m, "text/rtf"),
                    b = { dataValue: b, dataTransfer: { "text/rtf": d } };
                if (!1 !== c.fire("pasteFromWord", b) || h) {
                  m.dontFilter = !0;if (h || !c.config.pasteFromWordPromptCleanup || confirm(c.lang.pastefromword.confirmCleanup)) b.dataValue = CKEDITOR.cleanWord(b.dataValue, c), CKEDITOR.plugins.clipboard.isCustomDataTypesSupported && e && CKEDITOR.pasteFilters.image && (b.dataValue = CKEDITOR.pasteFilters.image(b.dataValue, c, d)), c.fire("afterPasteFromWord", b), m.dataValue = b.dataValue, !0 === c.config.forcePasteAsPlainText ? m.type = "text" : CKEDITOR.plugins.clipboard.isCustomCopyCutSupported || "allow-word" !== c.config.forcePasteAsPlainText || (m.type = "html");h = 0;g();
                }
              } });
          } });
      }(), function () {
        var c = { canUndo: !1, async: !0, exec: function (c, g) {
            var a = c.lang,
                e = CKEDITOR.tools.keystrokeToString(a.common.keyboard, c.getCommandKeystroke(CKEDITOR.env.ie ? c.commands.paste : this)),
                k = g && "undefined" !== typeof g.notification ? g.notification : !g || !g.from || "keystrokeHandler" === g.from && CKEDITOR.env.ie,
                a = k && "string" === typeof k ? k : a.pastetext.pasteNotification.replace(/%1/, '\x3ckbd aria-label\x3d"' + e.aria + '"\x3e' + e.display + "\x3c/kbd\x3e");
            c.execCommand("paste", { type: "text", notification: k ? a : !1 });
          } };CKEDITOR.plugins.add("pastetext", { requires: "clipboard", init: function (h) {
            var g = CKEDITOR.env.safari ? CKEDITOR.CTRL + CKEDITOR.ALT + CKEDITOR.SHIFT + 86 : CKEDITOR.CTRL + CKEDITOR.SHIFT + 86;h.addCommand("pastetext", c);h.setKeystroke(g, "pastetext");CKEDITOR.plugins.clipboard.addPasteButton(h, "PasteText", { label: h.lang.pastetext.button, command: "pastetext", toolbar: "clipboard,40" });if (h.config.forcePasteAsPlainText) h.on("beforePaste", function (a) {
              "html" != a.data.type && (a.data.type = "text");
            });h.on("pasteState", function (a) {
              h.getCommand("pastetext").setState(a.data);
            });
          } });
      }(), function () {
        CKEDITOR.plugins.add("xml", {});CKEDITOR.xml = function (c) {
          var h = null;if ("object" == typeof c) h = c;else if (c = (c || "").replace(/&nbsp;/g, " "), "ActiveXObject" in window) {
            try {
              h = new ActiveXObject("MSXML2.DOMDocument");
            } catch (g) {
              try {
                h = new ActiveXObject("Microsoft.XmlDom");
              } catch (a) {}
            }h && (h.async = !1, h.resolveExternals = !1, h.validateOnParse = !1, h.loadXML(c));
          } else window.DOMParser && (h = new DOMParser().parseFromString(c, "text/xml"));this.baseXml = h;
        };CKEDITOR.xml.prototype = { selectSingleNode: function (c, h) {
            var g = this.baseXml;if (h || (h = g)) {
              if ("selectSingleNode" in h) return h.selectSingleNode(c);if (g.evaluate) return (g = g.evaluate(c, h, null, 9, null)) && g.singleNodeValue || null;
            }return null;
          }, selectNodes: function (c, h) {
            var g = this.baseXml,
                a = [];if (h || (h = g)) {
              if ("selectNodes" in h) return h.selectNodes(c);if (g.evaluate && (g = g.evaluate(c, h, null, 5, null))) for (var e; e = g.iterateNext();) a.push(e);
            }return a;
          }, getInnerXml: function (c, h) {
            var g = this.selectSingleNode(c, h),
                a = [];if (g) for (g = g.firstChild; g;) g.xml ? a.push(g.xml) : window.XMLSerializer && a.push(new XMLSerializer().serializeToString(g)), g = g.nextSibling;return a.length ? a.join("") : null;
          } };
      }(), function () {
        CKEDITOR.plugins.add("ajax", { requires: "xml" });CKEDITOR.ajax = function () {
          function c() {
            if (!CKEDITOR.env.ie || "file:" != location.protocol) try {
              return new XMLHttpRequest();
            } catch (a) {}try {
              return new ActiveXObject("Msxml2.XMLHTTP");
            } catch (c) {}try {
              return new ActiveXObject("Microsoft.XMLHTTP");
            } catch (g) {}return null;
          }function h(a, c) {
            if (4 != a.readyState || !(200 <= a.status && 300 > a.status || 304 == a.status || 0 === a.status || 1223 == a.status)) return null;switch (c) {case "text":
                return a.responseText;case "xml":
                var g = a.responseXML;return new CKEDITOR.xml(g && g.firstChild ? g : a.responseText);case "arraybuffer":
                return a.response;default:
                return null;}
          }function g(a, g, l) {
            var m = !!g,
                b = c();if (!b) return null;m && "text" !== l && "xml" !== l && (b.responseType = l);b.open("GET", a, m);m && (b.onreadystatechange = function () {
              4 == b.readyState && (g(h(b, l)), b = null);
            });b.send(null);
            return m ? "" : h(b, l);
          }function a(a, g, l, m, b) {
            var d = c();if (!d) return null;d.open("POST", a, !0);d.onreadystatechange = function () {
              4 == d.readyState && (m && m(h(d, b)), d = null);
            };d.setRequestHeader("Content-type", l || "application/x-www-form-urlencoded; charset\x3dUTF-8");d.send(g);
          }return { load: function (a, c, h) {
              return g(a, c, h || "text");
            }, post: function (c, g, h, m) {
              return a(c, g, h, m, "text");
            }, loadXml: function (a, c) {
              return g(a, c, "xml");
            }, loadText: function (a, c) {
              return g(a, c, "text");
            }, loadBinary: function (a, c) {
              return g(a, c, "arraybuffer");
            } };
        }();
      }(), function () {
        function c(a, c) {
          return CKEDITOR.tools.array.filter(a, function (a) {
            return a.canHandle(c);
          }).sort(function (a, c) {
            return a.priority === c.priority ? 0 : a.priority - c.priority;
          });
        }function h(a, c) {
          var b = a.shift();b && b.handle(c, function () {
            h(a, c);
          });
        }function g(a) {
          var c = CKEDITOR.tools.array.reduce(a, function (a, c) {
            return CKEDITOR.tools.array.isArray(c.filters) ? a.concat(c.filters) : a;
          }, []);return CKEDITOR.tools.array.filter(c, function (a, d) {
            return CKEDITOR.tools.array.indexOf(c, a) === d;
          });
        }function a(a, c) {
          var b = 0,
              d,
              f;if (!CKEDITOR.tools.array.isArray(a) || 0 === a.length) return !0;d = CKEDITOR.tools.array.filter(a, function (a) {
            return -1 === CKEDITOR.tools.array.indexOf(e, a);
          });if (0 < d.length) for (f = 0; f < d.length; f++) (function (a) {
            CKEDITOR.scriptLoader.queue(a, function (f) {
              f && e.push(a);++b === d.length && c();
            });
          })(d[f]);return 0 === d.length;
        }var e = [],
            k = CKEDITOR.tools.createClass({ $: function () {
            this.handlers = [];
          }, proto: { register: function (a) {
              "number" !== typeof a.priority && (a.priority = 10);this.handlers.push(a);
            }, addPasteListener: function (e) {
              e.on("paste", function (k) {
                var b = c(this.handlers, k),
                    d;if (0 !== b.length) {
                  d = g(b);d = a(d, function () {
                    return e.fire("paste", k.data);
                  });if (!d) return k.cancel();h(b, k);
                }
              }, this, null, 3);
            } } });CKEDITOR.plugins.add("pastetools", { requires: ["clipboard", "ajax"], beforeInit: function (a) {
            a.pasteTools = new k();a.pasteTools.addPasteListener(a);
          } });CKEDITOR.plugins.pastetools = { filters: {}, loadFilters: a, createFilter: function (a) {
            var c = CKEDITOR.tools.array.isArray(a.rules) ? a.rules : [a.rules],
                b = a.additionalTransforms;return function (a, e) {
              var g = new CKEDITOR.htmlParser.basicWriter(),
                  h = new CKEDITOR.htmlParser.filter(),
                  k;b && (a = b(a, e));CKEDITOR.tools.array.forEach(c, function (b) {
                h.addRules(b(a, e, h));
              });k = CKEDITOR.htmlParser.fragment.fromHtml(a);h.applyTo(k);k.writeHtml(g);return g.getHtml();
            };
          }, getClipboardData: function (a, c) {
            var b;return CKEDITOR.plugins.clipboard.isCustomDataTypesSupported || "text/html" === c ? (b = a.dataTransfer.getData(c, !0)) || "text/html" !== c ? b : a.dataValue : null;
          }, getConfigValue: function (a, c) {
            if (a && a.config) {
              var b = CKEDITOR.tools,
                  d = a.config,
                  e = b.object.keys(d),
                  g = ["pasteTools_" + c, "pasteFromWord_" + c, "pasteFromWord" + b.capitalize(c, !0)],
                  g = b.array.find(g, function (a) {
                return -1 !== b.array.indexOf(e, a);
              });return d[g];
            }
          }, getContentGeneratorName: function (a) {
            if ((a = /<meta\s+name=["']?generator["']?\s+content=["']?(\w+)/gi.exec(a)) && a.length) return a = a[1].toLowerCase(), 0 === a.indexOf("microsoft") ? "microsoft" : 0 === a.indexOf("libreoffice") ? "libreoffice" : "unknown";
          } };CKEDITOR.pasteFilters = CKEDITOR.plugins.pastetools.filters;
      }(), CKEDITOR.plugins.add("removeformat", { init: function (c) {
          c.addCommand("removeFormat", CKEDITOR.plugins.removeformat.commands.removeformat);c.ui.addButton && c.ui.addButton("RemoveFormat", { label: c.lang.removeformat.toolbar, command: "removeFormat", toolbar: "cleanup,10" });
        } }), CKEDITOR.plugins.removeformat = { commands: { removeformat: { exec: function (c) {
              for (var h = c._.removeFormatRegex || (c._.removeFormatRegex = new RegExp("^(?:" + c.config.removeFormatTags.replace(/,/g, "|") + ")$", "i")), g = c._.removeAttributes || (c._.removeAttributes = c.config.removeFormatAttributes.split(",")), a = CKEDITOR.plugins.removeformat.filter, e = c.getSelection().getRanges(), k = e.createIterator(), l = function (a) {
                return a.type == CKEDITOR.NODE_ELEMENT;
              }, m; m = k.getNextRange();) {
                m.enlarge(CKEDITOR.ENLARGE_INLINE);var b = m.createBookmark(),
                    d = b.startNode,
                    f = b.endNode,
                    p = function (b) {
                  for (var d = c.elementPath(b), e = d.elements, f = 1, g; (g = e[f]) && !g.equals(d.block) && !g.equals(d.blockLimit); f++) h.test(g.getName()) && a(c, g) && b.breakParent(g);
                };p(d);if (f) for (p(f), d = d.getNextSourceNode(!0, CKEDITOR.NODE_ELEMENT); d && !d.equals(f);) if (d.isReadOnly()) {
                  if (d.getPosition(f) & CKEDITOR.POSITION_CONTAINS) break;d = d.getNext(l);
                } else p = d.getNextSourceNode(!1, CKEDITOR.NODE_ELEMENT), "img" == d.getName() && d.data("cke-realelement") || !a(c, d) || (h.test(d.getName()) ? d.remove(1) : (d.removeAttributes(g), c.fire("removeFormatCleanup", d))), d = p;m.moveToBookmark(b);
              }c.forceNextSelectionCheck();c.getSelection().selectRanges(e);
            } } }, filter: function (c, h) {
          for (var g = c._.removeFormatFilters || [], a = 0; a < g.length; a++) if (!1 === g[a](h)) return !1;return !0;
        } }, CKEDITOR.editor.prototype.addRemoveFormatFilter = function (c) {
        this._.removeFormatFilters || (this._.removeFormatFilters = []);this._.removeFormatFilters.push(c);
      }, CKEDITOR.config.removeFormatTags = "b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var", CKEDITOR.config.removeFormatAttributes = "class,style,lang,width,height,align,hspace,valign", CKEDITOR.plugins.add("resize", { init: function (c) {
          function h(e) {
            var g = b.width,
                h = b.height,
                l = g + (e.data.$.screenX - m.x) * ("rtl" == k ? -1 : 1);e = h + (e.data.$.screenY - m.y);d && (g = Math.max(a.resize_minWidth, Math.min(l, a.resize_maxWidth)));
            f && (h = Math.max(a.resize_minHeight, Math.min(e, a.resize_maxHeight)));c.resize(d ? g : null, h);
          }function g() {
            CKEDITOR.document.removeListener("mousemove", h);CKEDITOR.document.removeListener("mouseup", g);c.document && (c.document.removeListener("mousemove", h), c.document.removeListener("mouseup", g));
          }var a = c.config,
              e = c.ui.spaceId("resizer"),
              k = c.element ? c.element.getDirection(1) : "ltr";!a.resize_dir && (a.resize_dir = "vertical");void 0 === a.resize_maxWidth && (a.resize_maxWidth = 3E3);void 0 === a.resize_maxHeight && (a.resize_maxHeight = 3E3);void 0 === a.resize_minWidth && (a.resize_minWidth = 750);void 0 === a.resize_minHeight && (a.resize_minHeight = 250);if (!1 !== a.resize_enabled) {
            var l = null,
                m,
                b,
                d = ("both" == a.resize_dir || "horizontal" == a.resize_dir) && a.resize_minWidth != a.resize_maxWidth,
                f = ("both" == a.resize_dir || "vertical" == a.resize_dir) && a.resize_minHeight != a.resize_maxHeight,
                p = CKEDITOR.tools.addFunction(function (d) {
              l || (l = c.getResizable());b = { width: l.$.offsetWidth || 0, height: l.$.offsetHeight || 0 };m = { x: d.screenX, y: d.screenY };a.resize_minWidth > b.width && (a.resize_minWidth = b.width);a.resize_minHeight > b.height && (a.resize_minHeight = b.height);CKEDITOR.document.on("mousemove", h);CKEDITOR.document.on("mouseup", g);c.document && (c.document.on("mousemove", h), c.document.on("mouseup", g));d.preventDefault && d.preventDefault();
            });c.on("destroy", function () {
              CKEDITOR.tools.removeFunction(p);
            });c.on("uiSpace", function (a) {
              if ("bottom" == a.data.space) {
                var b = "";d && !f && (b = " cke_resizer_horizontal");!d && f && (b = " cke_resizer_vertical");var g = '\x3cspan id\x3d"' + e + '" class\x3d"cke_resizer' + b + " cke_resizer_" + k + '" title\x3d"' + CKEDITOR.tools.htmlEncode(c.lang.common.resize) + '" onmousedown\x3d"CKEDITOR.tools.callFunction(' + p + ', event)"\x3e' + ("ltr" == k ? "◢" : "◣") + "\x3c/span\x3e";"ltr" == k && "ltr" == b ? a.data.html += g : a.data.html = g + a.data.html;
              }
            }, c, null, 100);c.on("maximize", function (a) {
              c.ui.space("resizer")[a.data == CKEDITOR.TRISTATE_ON ? "hide" : "show"]();
            });
          }
        } }), function () {
        function c(a) {
          return { editorFocus: !1, canUndo: !1, modes: { wysiwyg: 1 }, exec: function (c) {
              if (c.editable().hasFocus) {
                var g = c.getSelection(),
                    h;if (h = new CKEDITOR.dom.elementPath(g.getCommonAncestor(), g.root).contains({ td: 1, th: 1 }, 1)) {
                  var g = c.createRange(),
                      b = CKEDITOR.tools.tryThese(function () {
                    var b = h.getParent().$.cells[h.$.cellIndex + (a ? -1 : 1)];b.parentNode.parentNode;return b;
                  }, function () {
                    var b = h.getParent(),
                        b = b.getAscendant("table").$.rows[b.$.rowIndex + (a ? -1 : 1)];return b.cells[a ? b.cells.length - 1 : 0];
                  });if (b || a) {
                    if (b) b = new CKEDITOR.dom.element(b), g.moveToElementEditStart(b), g.checkStartOfBlock() && g.checkEndOfBlock() || g.selectNodeContents(b);else return !0;
                  } else {
                    for (var d = h.getAscendant("table").$, b = h.getParent().$.cells, d = new CKEDITOR.dom.element(d.insertRow(-1), c.document), f = 0, p = b.length; f < p; f++) d.append(new CKEDITOR.dom.element(b[f], c.document).clone(!1, !1)).appendBogus();g.moveToElementEditStart(d);
                  }g.select(!0);return !0;
                }
              }return !1;
            } };
        }var h = { editorFocus: !1, modes: { wysiwyg: 1, source: 1 } },
            g = { exec: function (a) {
            a.container.focusNext(!0, a.tabIndex);
          } },
            a = { exec: function (a) {
            a.container.focusPrevious(!0, a.tabIndex);
          } };CKEDITOR.plugins.add("tab", { init: function (e) {
            for (var k = !1 !== e.config.enableTabKeyTools, l = e.config.tabSpaces || 0, m = ""; l--;) m += " ";if (m) e.on("key", function (a) {
              9 == a.data.keyCode && (e.insertText(m), a.cancel());
            });if (k) e.on("key", function (a) {
              (9 == a.data.keyCode && e.execCommand("selectNextCell") || a.data.keyCode == CKEDITOR.SHIFT + 9 && e.execCommand("selectPreviousCell")) && a.cancel();
            });e.addCommand("blur", CKEDITOR.tools.extend(g, h));e.addCommand("blurBack", CKEDITOR.tools.extend(a, h));e.addCommand("selectNextCell", c());e.addCommand("selectPreviousCell", c(!0));
          } });
      }(), CKEDITOR.dom.element.prototype.focusNext = function (c, h) {
        var g = void 0 === h ? this.getTabIndex() : h,
            a,
            e,
            k,
            l,
            m,
            b;if (0 >= g) for (m = this.getNextSourceNode(c, CKEDITOR.NODE_ELEMENT); m;) {
          if (m.isVisible() && 0 === m.getTabIndex()) {
            k = m;break;
          }m = m.getNextSourceNode(!1, CKEDITOR.NODE_ELEMENT);
        } else for (m = this.getDocument().getBody().getFirst(); m = m.getNextSourceNode(!1, CKEDITOR.NODE_ELEMENT);) {
          if (!a) if (!e && m.equals(this)) {
            if (e = !0, c) {
              if (!(m = m.getNextSourceNode(!0, CKEDITOR.NODE_ELEMENT))) break;a = 1;
            }
          } else e && !this.contains(m) && (a = 1);if (m.isVisible() && !(0 > (b = m.getTabIndex()))) {
            if (a && b == g) {
              k = m;break;
            }b > g && (!k || !l || b < l) ? (k = m, l = b) : k || 0 !== b || (k = m, l = b);
          }
        }k && k.focus();
      }, CKEDITOR.dom.element.prototype.focusPrevious = function (c, h) {
        for (var g = void 0 === h ? this.getTabIndex() : h, a, e, k, l = 0, m, b = this.getDocument().getBody().getLast(); b = b.getPreviousSourceNode(!1, CKEDITOR.NODE_ELEMENT);) {
          if (!a) if (!e && b.equals(this)) {
            if (e = !0, c) {
              if (!(b = b.getPreviousSourceNode(!0, CKEDITOR.NODE_ELEMENT))) break;a = 1;
            }
          } else e && !this.contains(b) && (a = 1);if (b.isVisible() && !(0 > (m = b.getTabIndex()))) if (0 >= g) {
            if (a && 0 === m) {
              k = b;break;
            }m > l && (k = b, l = m);
          } else {
            if (a && m == g) {
              k = b;break;
            }m < g && (!k || m > l) && (k = b, l = m);
          }
        }k && k.focus();
      }, CKEDITOR.plugins.add("table", { requires: "dialog", init: function (c) {
          function h(a) {
            return CKEDITOR.tools.extend(a || {}, { contextSensitive: 1, refresh: function (a, c) {
                this.setState(c.contains("table", 1) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);
              } });
          }if (!c.blockless) {
            var g = c.lang.table;c.addCommand("table", new CKEDITOR.dialogCommand("table", { context: "table", allowedContent: "table{width,height,border-collapse}[align,border,cellpadding,cellspacing];caption tbody thead tfoot;th td tr[scope];td{border*,background-color,vertical-align,width,height}[colspan,rowspan];" + (c.plugins.dialogadvtab ? "table" + c.plugins.dialogadvtab.allowedContent() : ""), requiredContent: "table", contentTransformations: [["table{width}: sizeToStyle", "table[width]: sizeToAttribute"], ["td: splitBorderShorthand"], [{ element: "table", right: function (a) {
                  if (a.styles) {
                    var c;if (a.styles.border) c = CKEDITOR.tools.style.parse.border(a.styles.border);else if (CKEDITOR.env.ie && 8 === CKEDITOR.env.version) {
                      var g = a.styles;g["border-left"] && g["border-left"] === g["border-right"] && g["border-right"] === g["border-top"] && g["border-top"] === g["border-bottom"] && (c = CKEDITOR.tools.style.parse.border(g["border-top"]));
                    }c && c.style && "solid" === c.style && c.width && 0 !== parseFloat(c.width) && (a.attributes.border = 1);"collapse" == a.styles["border-collapse"] && (a.attributes.cellspacing = 0);
                  }
                } }]] }));c.addCommand("tableProperties", new CKEDITOR.dialogCommand("tableProperties", h()));c.addCommand("tableDelete", h({ exec: function (a) {
                var c = a.elementPath().contains("table", 1);if (c) {
                  var g = c.getParent(),
                      h = a.editable();1 != g.getChildCount() || g.is("td", "th") || g.equals(h) || (c = g);a = a.createRange();a.moveToPosition(c, CKEDITOR.POSITION_BEFORE_START);c.remove();a.select();
                }
              } }));c.ui.addButton && c.ui.addButton("Table", { label: g.toolbar, command: "table", toolbar: "insert,30" });CKEDITOR.dialog.add("table", this.path + "dialogs/table.js");CKEDITOR.dialog.add("tableProperties", this.path + "dialogs/table.js");c.addMenuItems && c.addMenuItems({ table: { label: g.menu, command: "tableProperties", group: "table", order: 5 }, tabledelete: { label: g.deleteTable, command: "tableDelete", group: "table",
                order: 1 } });c.on("doubleclick", function (a) {
              a.data.element.is("table") && (a.data.dialog = "tableProperties");
            });c.contextMenu && c.contextMenu.addListener(function () {
              return { tabledelete: CKEDITOR.TRISTATE_OFF, table: CKEDITOR.TRISTATE_OFF };
            });
          }
        } }), function () {
        function c(a, b) {
          function c(a) {
            return b ? b.contains(a) && a.getAscendant("table", !0).equals(b) : !0;
          }function d(a) {
            var b = /^(?:td|th)$/;0 < e.length || a.type != CKEDITOR.NODE_ELEMENT || !b.test(a.getName()) || a.getCustomData("selected_cell") || (CKEDITOR.dom.element.setMarker(f, a, "selected_cell", !0), e.push(a));
          }var e = [],
              f = {};if (!a) return e;for (var g = a.getRanges(), h = 0; h < g.length; h++) {
            var k = g[h];if (k.collapsed) (k = k.getCommonAncestor().getAscendant({ td: 1, th: 1 }, !0)) && c(k) && e.push(k);else {
              var k = new CKEDITOR.dom.walker(k),
                  l;for (k.guard = d; l = k.next();) l.type == CKEDITOR.NODE_ELEMENT && l.is(CKEDITOR.dtd.table) || (l = l.getAscendant({ td: 1, th: 1 }, !0)) && !l.getCustomData("selected_cell") && c(l) && (CKEDITOR.dom.element.setMarker(f, l, "selected_cell", !0), e.push(l));
            }
          }CKEDITOR.dom.element.clearAllMarkers(f);
          return e;
        }function h(a, b) {
          for (var d = r(a) ? a : c(a), e = d[0], f = e.getAscendant("table"), e = e.getDocument(), g = d[0].getParent(), h = g.$.rowIndex, d = d[d.length - 1], k = d.getParent().$.rowIndex + d.$.rowSpan - 1, d = new CKEDITOR.dom.element(f.$.rows[k]), h = b ? h : k, g = b ? g : d, d = CKEDITOR.tools.buildTableMap(f), f = d[h], h = b ? d[h - 1] : d[h + 1], d = d[0].length, e = e.createElement("tr"), k = 0; f[k] && k < d; k++) {
            var l;1 < f[k].rowSpan && h && f[k] == h[k] ? (l = f[k], l.rowSpan += 1) : (l = new CKEDITOR.dom.element(f[k]).clone(), l.removeAttribute("rowSpan"), l.appendBogus(), e.append(l), l = l.$);k += l.colSpan - 1;
          }b ? e.insertBefore(g) : e.insertAfter(g);return e;
        }function g(a) {
          if (a instanceof CKEDITOR.dom.selection) {
            var b = a.getRanges(),
                d = c(a),
                e = d[0].getAscendant("table"),
                f = CKEDITOR.tools.buildTableMap(e),
                h = d[0].getParent().$.rowIndex,
                d = d[d.length - 1],
                k = d.getParent().$.rowIndex + d.$.rowSpan - 1,
                d = [];a.reset();for (a = h; a <= k; a++) {
              for (var l = f[a], m = new CKEDITOR.dom.element(e.$.rows[a]), p = 0; p < l.length; p++) {
                var r = new CKEDITOR.dom.element(l[p]),
                    w = r.getParent().$.rowIndex;1 == r.$.rowSpan ? r.remove() : (--r.$.rowSpan, w == a && (w = f[a + 1], w[p - 1] ? r.insertAfter(new CKEDITOR.dom.element(w[p - 1])) : new CKEDITOR.dom.element(e.$.rows[a + 1]).append(r, 1)));p += r.$.colSpan - 1;
              }d.push(m);
            }f = e.$.rows;b[0].moveToPosition(e, CKEDITOR.POSITION_BEFORE_START);h = new CKEDITOR.dom.element(f[k + 1] || (0 < h ? f[h - 1] : null) || e.$.parentNode);for (a = d.length; 0 <= a; a--) g(d[a]);return e.$.parentNode ? h : (b[0].select(), null);
          }a instanceof CKEDITOR.dom.element && (e = a.getAscendant("table"), 1 == e.$.rows.length ? e.remove() : a.remove());return null;
        }function a(a) {
          for (var b = a.getParent().$.cells, c = 0, d = 0; d < b.length; d++) {
            var e = b[d],
                c = c + e.colSpan;if (e == a.$) break;
          }return c - 1;
        }function e(b, c) {
          for (var d = c ? Infinity : 0, e = 0; e < b.length; e++) {
            var f = a(b[e]);if (c ? f < d : f > d) d = f;
          }return d;
        }function k(a, b) {
          for (var d = r(a) ? a : c(a), f = d[0].getAscendant("table"), g = e(d, 1), d = e(d), h = b ? g : d, k = CKEDITOR.tools.buildTableMap(f), f = [], g = [], d = [], l = k.length, m = 0; m < l; m++) {
            var p = b ? k[m][h - 1] : k[m][h + 1];f.push(k[m][h]);g.push(p);
          }for (m = 0; m < l; m++) f[m] && (1 < f[m].colSpan && g[m] == f[m] ? (k = f[m], k.colSpan += 1) : (h = new CKEDITOR.dom.element(f[m]), k = h.clone(), k.removeAttribute("colSpan"), k.appendBogus(), k[b ? "insertBefore" : "insertAfter"].call(k, h), d.push(k), k = k.$), m += k.rowSpan - 1);return d;
        }function l(a) {
          function b(a) {
            var c = a.getRanges(),
                d,
                e;if (1 !== c.length) return a;c = c[0];if (c.collapsed || 0 !== c.endOffset) return a;d = c.endContainer;e = d.getName().toLowerCase();if ("td" !== e && "th" !== e) return a;for ((e = d.getPrevious()) || (e = d.getParent().getPrevious().getLast()); e.type !== CKEDITOR.NODE_TEXT && "br" !== e.getName().toLowerCase();) if (e = e.getLast(), !e) return a;
            c.setEndAt(e, CKEDITOR.POSITION_BEFORE_END);return c.select();
          }CKEDITOR.env.webkit && !a.isFake && (a = b(a));var d = a.getRanges(),
              e = c(a),
              f = e[0],
              g = e[e.length - 1],
              e = f.getAscendant("table"),
              h = CKEDITOR.tools.buildTableMap(e),
              k,
              l,
              m = [];a.reset();var p = 0;for (a = h.length; p < a; p++) for (var r = 0, w = h[p].length; r < w; r++) void 0 === k && h[p][r] == f.$ && (k = r), h[p][r] == g.$ && (l = r);for (p = k; p <= l; p++) for (r = 0; r < h.length; r++) g = h[r], f = new CKEDITOR.dom.element(e.$.rows[r]), g = new CKEDITOR.dom.element(g[p]), g.$ && (1 == g.$.colSpan ? g.remove() : --g.$.colSpan, r += g.$.rowSpan - 1, f.$.cells.length || m.push(f));k = h[0].length - 1 > l ? new CKEDITOR.dom.element(h[0][l + 1]) : k && -1 !== h[0][k - 1].cellIndex ? new CKEDITOR.dom.element(h[0][k - 1]) : new CKEDITOR.dom.element(e.$.parentNode);m.length == a && (d[0].moveToPosition(e, CKEDITOR.POSITION_AFTER_END), d[0].select(), e.remove());return k;
        }function m(a, b) {
          var c = a.getStartElement().getAscendant({ td: 1, th: 1 }, !0);if (c) {
            var d = c.clone();d.appendBogus();b ? d.insertBefore(c) : d.insertAfter(c);
          }
        }function b(a) {
          if (a instanceof CKEDITOR.dom.selection) {
            var e = a.getRanges(),
                f = c(a),
                g = f[0] && f[0].getAscendant("table"),
                h;a: {
              var k = 0;h = f.length - 1;for (var l = {}, m, p; m = f[k++];) CKEDITOR.dom.element.setMarker(l, m, "delete_cell", !0);for (k = 0; m = f[k++];) if ((p = m.getPrevious()) && !p.getCustomData("delete_cell") || (p = m.getNext()) && !p.getCustomData("delete_cell")) {
                CKEDITOR.dom.element.clearAllMarkers(l);h = p;break a;
              }CKEDITOR.dom.element.clearAllMarkers(l);k = f[0].getParent();(k = k.getPrevious()) ? h = k.getLast() : (k = f[h].getParent(), h = (k = k.getNext()) ? k.getChild(0) : null);
            }a.reset();for (a = f.length - 1; 0 <= a; a--) b(f[a]);h ? d(h, !0) : g && (e[0].moveToPosition(g, CKEDITOR.POSITION_BEFORE_START), e[0].select(), g.remove());
          } else a instanceof CKEDITOR.dom.element && (e = a.getParent(), 1 == e.getChildCount() ? e.remove() : a.remove());
        }function d(a, b) {
          var c = a.getDocument(),
              d = CKEDITOR.document;CKEDITOR.env.ie && 10 == CKEDITOR.env.version && (d.focus(), c.focus());c = new CKEDITOR.dom.range(c);c["moveToElementEdit" + (b ? "End" : "Start")](a) || (c.selectNodeContents(a), c.collapse(b ? !1 : !0));c.select(!0);
        }function f(a, b, c) {
          a = a[b];
          if ("undefined" == typeof c) return a;for (b = 0; a && b < a.length; b++) {
            if (c.is && a[b] == c.$) return b;if (b == c) return new CKEDITOR.dom.element(a[b]);
          }return c.is ? -1 : null;
        }function p(a, b, d) {
          var e = c(a),
              g;if ((b ? 1 != e.length : 2 > e.length) || (g = a.getCommonAncestor()) && g.type == CKEDITOR.NODE_ELEMENT && g.is("table")) return !1;a = e[0];g = a.getAscendant("table");var h = CKEDITOR.tools.buildTableMap(g),
              k = h.length,
              l = h[0].length,
              m = a.getParent().$.rowIndex,
              p = f(h, m, a),
              r;if (b) {
            var w;try {
              var y = parseInt(a.getAttribute("rowspan"), 10) || 1;r = parseInt(a.getAttribute("colspan"), 10) || 1;w = h["up" == b ? m - y : "down" == b ? m + y : m]["left" == b ? p - r : "right" == b ? p + r : p];
            } catch (K) {
              return !1;
            }if (!w || a.$ == w) return !1;e["up" == b || "left" == b ? "unshift" : "push"](new CKEDITOR.dom.element(w));
          }b = a.getDocument();var F = m,
              y = w = 0,
              M = !d && new CKEDITOR.dom.documentFragment(b),
              H = 0;for (b = 0; b < e.length; b++) {
            r = e[b];var I = r.getParent(),
                P = r.getFirst(),
                L = r.$.colSpan,
                O = r.$.rowSpan,
                I = I.$.rowIndex,
                N = f(h, I, r),
                H = H + L * O,
                y = Math.max(y, N - p + L);w = Math.max(w, I - m + O);d || (L = r, (O = L.getBogus()) && O.remove(), L.trim(), r.getChildren().count() && (I == F || !P || P.isBlockBoundary && P.isBlockBoundary({ br: 1 }) || (F = M.getLast(CKEDITOR.dom.walker.whitespaces(!0)), !F || F.is && F.is("br") || M.append("br")), r.moveChildren(M)), b ? r.remove() : r.setHtml(""));F = I;
          }if (d) return w * y == H;M.moveChildren(a);a.appendBogus();y >= l ? a.removeAttribute("rowSpan") : a.$.rowSpan = w;w >= k ? a.removeAttribute("colSpan") : a.$.colSpan = y;d = new CKEDITOR.dom.nodeList(g.$.rows);e = d.count();for (b = e - 1; 0 <= b; b--) g = d.getItem(b), g.$.cells.length || (g.remove(), e++);return a;
        }function w(a, b) {
          var d = c(a);if (1 < d.length) return !1;if (b) return !0;var d = d[0],
              e = d.getParent(),
              g = e.getAscendant("table"),
              h = CKEDITOR.tools.buildTableMap(g),
              k = e.$.rowIndex,
              l = f(h, k, d),
              m = d.$.rowSpan,
              p;if (1 < m) {
            p = Math.ceil(m / 2);for (var m = Math.floor(m / 2), e = k + p, g = new CKEDITOR.dom.element(g.$.rows[e]), h = f(h, e), r, e = d.clone(), k = 0; k < h.length; k++) if (r = h[k], r.parentNode == g.$ && k > l) {
              e.insertBefore(new CKEDITOR.dom.element(r));break;
            } else r = null;r || g.append(e);
          } else for (m = p = 1, g = e.clone(), g.insertAfter(e), g.append(e = d.clone()), r = f(h, k), l = 0; l < r.length; l++) r[l].rowSpan++;
          e.appendBogus();d.$.rowSpan = p;e.$.rowSpan = m;1 == p && d.removeAttribute("rowSpan");1 == m && e.removeAttribute("rowSpan");return e;
        }function y(a, b) {
          var d = c(a);if (1 < d.length) return !1;if (b) return !0;var d = d[0],
              e = d.getParent(),
              g = e.getAscendant("table"),
              g = CKEDITOR.tools.buildTableMap(g),
              h = f(g, e.$.rowIndex, d),
              k = d.$.colSpan;if (1 < k) e = Math.ceil(k / 2), k = Math.floor(k / 2);else {
            for (var k = e = 1, l = [], m = 0; m < g.length; m++) {
              var p = g[m];l.push(p[h]);1 < p[h].rowSpan && (m += p[h].rowSpan - 1);
            }for (g = 0; g < l.length; g++) l[g].colSpan++;
          }g = d.clone();
          g.insertAfter(d);g.appendBogus();d.$.colSpan = e;g.$.colSpan = k;1 == e && d.removeAttribute("colSpan");1 == k && g.removeAttribute("colSpan");return g;
        }var r = CKEDITOR.tools.isArray;CKEDITOR.plugins.tabletools = { requires: "table,dialog,contextmenu", init: function (a) {
            function e(a) {
              return CKEDITOR.tools.extend(a || {}, { contextSensitive: 1, refresh: function (a, b) {
                  this.setState(b.contains({ td: 1, th: 1 }, 1) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);
                } });
            }function f(b, c) {
              var d = a.addCommand(b, c);a.addFeature(d);
            }var n = a.lang.table,
                r = CKEDITOR.tools.style.parse,
                q = "td{width} td{height} td{border-color} td{background-color} td{white-space} td{vertical-align} td{text-align} td[colspan] td[rowspan] th".split(" ");f("cellProperties", new CKEDITOR.dialogCommand("cellProperties", e({ allowedContent: "td th{width,height,border-color,background-color,white-space,vertical-align,text-align}[colspan,rowspan]", requiredContent: q, contentTransformations: [[{ element: "td", left: function (a) {
                  return a.styles.background && r.background(a.styles.background).color;
                },
                right: function (a) {
                  a.styles["background-color"] = r.background(a.styles.background).color;
                } }, { element: "td", check: "td{vertical-align}", left: function (a) {
                  return a.attributes && a.attributes.valign;
                }, right: function (a) {
                  a.styles["vertical-align"] = a.attributes.valign;delete a.attributes.valign;
                } }], [{ element: "tr", check: "td{height}", left: function (a) {
                  return a.styles && a.styles.height;
                }, right: function (a) {
                  CKEDITOR.tools.array.forEach(a.children, function (b) {
                    b.name in { td: 1, th: 1 } && (b.attributes["cke-row-height"] = a.styles.height);
                  });
                  delete a.styles.height;
                } }], [{ element: "td", check: "td{height}", left: function (a) {
                  return (a = a.attributes) && a["cke-row-height"];
                }, right: function (a) {
                  a.styles.height = a.attributes["cke-row-height"];delete a.attributes["cke-row-height"];
                } }]] })));CKEDITOR.dialog.add("cellProperties", this.path + "dialogs/tableCell.js");f("rowDelete", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();(a = g(a)) && d(a);
              } }));f("rowInsertBefore", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();a = c(a);h(a, !0);
              } }));
            f("rowInsertAfter", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();a = c(a);h(a);
              } }));f("columnDelete", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();(a = l(a)) && d(a, !0);
              } }));f("columnInsertBefore", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();a = c(a);k(a, !0);
              } }));f("columnInsertAfter", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();a = c(a);k(a);
              } }));f("cellDelete", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();b(a);
              } }));f("cellMerge", e({ allowedContent: "td[colspan,rowspan]", requiredContent: "td[colspan,rowspan]", exec: function (a, b) {
                b.cell = p(a.getSelection());d(b.cell, !0);
              } }));f("cellMergeRight", e({ allowedContent: "td[colspan]", requiredContent: "td[colspan]", exec: function (a, b) {
                b.cell = p(a.getSelection(), "right");d(b.cell, !0);
              } }));f("cellMergeDown", e({ allowedContent: "td[rowspan]", requiredContent: "td[rowspan]", exec: function (a, b) {
                b.cell = p(a.getSelection(), "down");d(b.cell, !0);
              } }));f("cellVerticalSplit", e({ allowedContent: "td[rowspan]", requiredContent: "td[rowspan]",
              exec: function (a) {
                d(y(a.getSelection()));
              } }));f("cellHorizontalSplit", e({ allowedContent: "td[colspan]", requiredContent: "td[colspan]", exec: function (a) {
                d(w(a.getSelection()));
              } }));f("cellInsertBefore", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();m(a, !0);
              } }));f("cellInsertAfter", e({ requiredContent: "table", exec: function (a) {
                a = a.getSelection();m(a);
              } }));a.addMenuItems && a.addMenuItems({ tablecell: { label: n.cell.menu, group: "tablecell", order: 1, getItems: function () {
                  var b = a.getSelection(),
                      d = c(b),
                      b = { tablecell_insertBefore: CKEDITOR.TRISTATE_OFF, tablecell_insertAfter: CKEDITOR.TRISTATE_OFF, tablecell_delete: CKEDITOR.TRISTATE_OFF, tablecell_merge: p(b, null, !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_merge_right: p(b, "right", !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_merge_down: p(b, "down", !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_split_vertical: y(b, !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_split_horizontal: w(b, !0) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED };a.filter.check(q) && (b.tablecell_properties = 0 < d.length ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);return b;
                } }, tablecell_insertBefore: { label: n.cell.insertBefore, group: "tablecell", command: "cellInsertBefore", order: 5 }, tablecell_insertAfter: { label: n.cell.insertAfter, group: "tablecell", command: "cellInsertAfter", order: 10 }, tablecell_delete: { label: n.cell.deleteCell, group: "tablecell", command: "cellDelete", order: 15 }, tablecell_merge: { label: n.cell.merge, group: "tablecell", command: "cellMerge",
                order: 16 }, tablecell_merge_right: { label: n.cell.mergeRight, group: "tablecell", command: "cellMergeRight", order: 17 }, tablecell_merge_down: { label: n.cell.mergeDown, group: "tablecell", command: "cellMergeDown", order: 18 }, tablecell_split_horizontal: { label: n.cell.splitHorizontal, group: "tablecell", command: "cellHorizontalSplit", order: 19 }, tablecell_split_vertical: { label: n.cell.splitVertical, group: "tablecell", command: "cellVerticalSplit", order: 20 }, tablecell_properties: { label: n.cell.title, group: "tablecellproperties", command: "cellProperties",
                order: 21 }, tablerow: { label: n.row.menu, group: "tablerow", order: 1, getItems: function () {
                  return { tablerow_insertBefore: CKEDITOR.TRISTATE_OFF, tablerow_insertAfter: CKEDITOR.TRISTATE_OFF, tablerow_delete: CKEDITOR.TRISTATE_OFF };
                } }, tablerow_insertBefore: { label: n.row.insertBefore, group: "tablerow", command: "rowInsertBefore", order: 5 }, tablerow_insertAfter: { label: n.row.insertAfter, group: "tablerow", command: "rowInsertAfter", order: 10 }, tablerow_delete: { label: n.row.deleteRow, group: "tablerow", command: "rowDelete", order: 15 },
              tablecolumn: { label: n.column.menu, group: "tablecolumn", order: 1, getItems: function () {
                  return { tablecolumn_insertBefore: CKEDITOR.TRISTATE_OFF, tablecolumn_insertAfter: CKEDITOR.TRISTATE_OFF, tablecolumn_delete: CKEDITOR.TRISTATE_OFF };
                } }, tablecolumn_insertBefore: { label: n.column.insertBefore, group: "tablecolumn", command: "columnInsertBefore", order: 5 }, tablecolumn_insertAfter: { label: n.column.insertAfter, group: "tablecolumn", command: "columnInsertAfter", order: 10 }, tablecolumn_delete: { label: n.column.deleteColumn, group: "tablecolumn",
                command: "columnDelete", order: 15 } });a.contextMenu && a.contextMenu.addListener(function (a, b, c) {
              return (a = c.contains({ td: 1, th: 1 }, 1)) && !a.isReadOnly() ? { tablecell: CKEDITOR.TRISTATE_OFF, tablerow: CKEDITOR.TRISTATE_OFF, tablecolumn: CKEDITOR.TRISTATE_OFF } : null;
            });
          }, getCellColIndex: a, insertRow: h, insertColumn: k, getSelectedCells: c };CKEDITOR.plugins.add("tabletools", CKEDITOR.plugins.tabletools);
      }(), CKEDITOR.tools.buildTableMap = function (c, h, g, a, e) {
        c = c.$.rows;g = g || 0;a = "number" === typeof a ? a : c.length - 1;e = "number" === typeof e ? e : -1;var k = -1,
            l = [];for (h = h || 0; h <= a; h++) {
          k++;!l[k] && (l[k] = []);for (var m = -1, b = g; b <= (-1 === e ? c[h].cells.length - 1 : e); b++) {
            var d = c[h].cells[b];if (!d) break;for (m++; l[k][m];) m++;for (var f = isNaN(d.colSpan) ? 1 : d.colSpan, d = isNaN(d.rowSpan) ? 1 : d.rowSpan, p = 0; p < d && !(h + p > a); p++) {
              l[k + p] || (l[k + p] = []);for (var w = 0; w < f; w++) l[k + p][m + w] = c[h].cells[b];
            }m += f - 1;if (-1 !== e && m >= e) break;
          }
        }return l;
      }, "use strict", function () {
        function c(a, c) {
          return CKEDITOR.tools.array.reduce(c, function (a, b) {
            return b(a);
          }, a);
        }var h = [CKEDITOR.CTRL + 90, CKEDITOR.CTRL + 89, CKEDITOR.CTRL + CKEDITOR.SHIFT + 90],
            g = { 8: 1, 46: 1 };CKEDITOR.plugins.add("undo", { init: function (b) {
            function c(a) {
              g.enabled && !1 !== a.data.command.canUndo && g.save();
            }function e() {
              g.enabled = b.readOnly ? !1 : "wysiwyg" == b.mode;g.onChange();
            }var g = b.undoManager = new a(b),
                k = g.editingHandler = new l(g),
                m = b.addCommand("undo", { exec: function () {
                g.undo() && (b.selectionChange(), this.fire("afterUndo"));
              }, startDisabled: !0, canUndo: !1 }),
                r = b.addCommand("redo", { exec: function () {
                g.redo() && (b.selectionChange(), this.fire("afterRedo"));
              },
              startDisabled: !0, canUndo: !1 });b.setKeystroke([[h[0], "undo"], [h[1], "redo"], [h[2], "redo"]]);g.onChange = function () {
              m.setState(g.undoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);r.setState(g.redoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED);
            };b.on("beforeCommandExec", c);b.on("afterCommandExec", c);b.on("saveSnapshot", function (a) {
              g.save(a.data && a.data.contentOnly);
            });b.on("contentDom", k.attachListeners, k);b.on("instanceReady", function () {
              b.fire("saveSnapshot");
            });b.on("beforeModeUnload", function () {
              "wysiwyg" == b.mode && g.save(!0);
            });b.on("mode", e);b.on("readOnly", e);b.ui.addButton && (b.ui.addButton("Undo", { label: b.lang.undo.undo, command: "undo", toolbar: "undo,10" }), b.ui.addButton("Redo", { label: b.lang.undo.redo, command: "redo", toolbar: "undo,20" }));b.resetUndo = function () {
              g.reset();b.fire("saveSnapshot");
            };b.on("updateSnapshot", function () {
              g.currentImage && g.update();
            });b.on("lockSnapshot", function (a) {
              a = a.data;g.lock(a && a.dontUpdate, a && a.forceUpdate);
            });b.on("unlockSnapshot", g.unlock, g);
          } });CKEDITOR.plugins.undo = {};var a = CKEDITOR.plugins.undo.UndoManager = function (a) {
          this.strokesRecorded = [0, 0];this.locked = null;this.previousKeyGroup = -1;this.limit = a.config.undoStackSize || 20;this.strokesLimit = 25;this._filterRules = [];this.editor = a;this.reset();CKEDITOR.env.ie && this.addFilterRule(function (a) {
            return a.replace(/\s+data-cke-expando=".*?"/g, "");
          });
        };a.prototype = { type: function (b, c) {
            var e = a.getKeyGroup(b),
                g = this.strokesRecorded[e] + 1;c = c || g >= this.strokesLimit;this.typing || (this.hasUndo = this.typing = !0, this.hasRedo = !1, this.onChange());
            c ? (g = 0, this.editor.fire("saveSnapshot")) : this.editor.fire("change");this.strokesRecorded[e] = g;this.previousKeyGroup = e;
          }, keyGroupChanged: function (b) {
            return a.getKeyGroup(b) != this.previousKeyGroup;
          }, reset: function () {
            this.snapshots = [];this.index = -1;this.currentImage = null;this.hasRedo = this.hasUndo = !1;this.locked = null;this.resetType();
          }, resetType: function () {
            this.strokesRecorded = [0, 0];this.typing = !1;this.previousKeyGroup = -1;
          }, refreshState: function () {
            this.hasUndo = !!this.getNextImage(!0);this.hasRedo = !!this.getNextImage(!1);
            this.resetType();this.onChange();
          }, save: function (a, c, f) {
            var g = this.editor;if (this.locked || "ready" != g.status || "wysiwyg" != g.mode) return !1;var h = g.editable();if (!h || "ready" != h.status) return !1;h = this.snapshots;c || (c = new e(g));if (!1 === c.contents) return !1;if (this.currentImage) if (c.equalsContent(this.currentImage)) {
              if (a || c.equalsSelection(this.currentImage)) return !1;
            } else !1 !== f && g.fire("change");h.splice(this.index + 1, h.length - this.index - 1);h.length == this.limit && h.shift();this.index = h.push(c) - 1;this.currentImage = c;!1 !== f && this.refreshState();return !0;
          }, restoreImage: function (a) {
            var c = this.editor,
                e;a.bookmarks && (c.focus(), e = c.getSelection());this.locked = { level: 999 };this.editor.loadSnapshot(a.contents);a.bookmarks ? e.selectBookmarks(a.bookmarks) : CKEDITOR.env.ie && (e = this.editor.document.getBody().$.createTextRange(), e.collapse(!0), e.select());this.locked = null;this.index = a.index;this.currentImage = this.snapshots[this.index];this.update();this.refreshState();c.fire("change");
          }, getNextImage: function (a) {
            var c = this.snapshots,
                e = this.currentImage,
                g;if (e) if (a) for (g = this.index - 1; 0 <= g; g--) {
              if (a = c[g], !e.equalsContent(a)) return a.index = g, a;
            } else for (g = this.index + 1; g < c.length; g++) if (a = c[g], !e.equalsContent(a)) return a.index = g, a;return null;
          }, redoable: function () {
            return this.enabled && this.hasRedo;
          }, undoable: function () {
            return this.enabled && this.hasUndo;
          }, undo: function () {
            if (this.undoable()) {
              this.save(!0);var a = this.getNextImage(!0);if (a) return this.restoreImage(a), !0;
            }return !1;
          }, redo: function () {
            if (this.redoable() && (this.save(!0), this.redoable())) {
              var a = this.getNextImage(!1);if (a) return this.restoreImage(a), !0;
            }return !1;
          }, update: function (a) {
            if (!this.locked) {
              a || (a = new e(this.editor));for (var c = this.index, f = this.snapshots; 0 < c && this.currentImage.equalsContent(f[c - 1]);) --c;f.splice(c, this.index - c + 1, a);this.index = c;this.currentImage = a;
            }
          }, updateSelection: function (a) {
            if (!this.snapshots.length) return !1;var c = this.snapshots,
                e = c[c.length - 1];return e.equalsContent(a) && !e.equalsSelection(a) ? (this.currentImage = c[c.length - 1] = a, !0) : !1;
          }, lock: function (a, c) {
            if (this.locked) this.locked.level++;else if (a) this.locked = { level: 1 };else {
              var f = null;if (c) f = !0;else {
                var g = new e(this.editor, !0);this.currentImage && this.currentImage.equalsContent(g) && (f = g);
              }this.locked = { update: f, level: 1 };
            }
          }, unlock: function () {
            if (this.locked && ! --this.locked.level) {
              var a = this.locked.update;this.locked = null;if (!0 === a) this.update();else if (a) {
                var c = new e(this.editor, !0);a.equalsContent(c) || this.update();
              }
            }
          }, addFilterRule: function (a) {
            this._filterRules.push(a);
          } };a.navigationKeyCodes = { 37: 1, 38: 1, 39: 1, 40: 1, 36: 1, 35: 1, 33: 1, 34: 1 };a.keyGroups = { PRINTABLE: 0, FUNCTIONAL: 1 };a.isNavigationKey = function (b) {
          return !!a.navigationKeyCodes[b];
        };a.getKeyGroup = function (b) {
          var c = a.keyGroups;return g[b] ? c.FUNCTIONAL : c.PRINTABLE;
        };a.getOppositeKeyGroup = function (b) {
          var c = a.keyGroups;return b == c.FUNCTIONAL ? c.PRINTABLE : c.FUNCTIONAL;
        };a.ieFunctionalKeysBug = function (b) {
          return CKEDITOR.env.ie && a.getKeyGroup(b) == a.keyGroups.FUNCTIONAL;
        };var e = CKEDITOR.plugins.undo.Image = function (a, d) {
          this.editor = a;a.fire("beforeUndoImage");var e = a.getSnapshot();e && (this.contents = c(e, a.undoManager._filterRules));d || (this.bookmarks = (e = e && a.getSelection()) && e.createBookmarks2(!0));a.fire("afterUndoImage");
        },
            k = /\b(?:href|src|name)="[^"]*?"/gi;e.prototype = { equalsContent: function (a) {
            var c = this.contents;a = a.contents;CKEDITOR.env.ie && (CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks) && (c = c.replace(k, ""), a = a.replace(k, ""));return c != a ? !1 : !0;
          }, equalsSelection: function (a) {
            var c = this.bookmarks;a = a.bookmarks;if (c || a) {
              if (!c || !a || c.length != a.length) return !1;for (var e = 0; e < c.length; e++) {
                var g = c[e],
                    h = a[e];if (g.startOffset != h.startOffset || g.endOffset != h.endOffset || !CKEDITOR.tools.arrayCompare(g.start, h.start) || !CKEDITOR.tools.arrayCompare(g.end, h.end)) return !1;
              }
            }return !0;
          } };var l = CKEDITOR.plugins.undo.NativeEditingHandler = function (a) {
          this.undoManager = a;this.ignoreInputEvent = !1;this.keyEventsStack = new m();this.lastKeydownImage = null;
        };l.prototype = { onKeydown: function (b) {
            var c = b.data.getKey();if (229 !== c) if (-1 < CKEDITOR.tools.indexOf(h, b.data.getKeystroke())) b.data.preventDefault();else if (this.keyEventsStack.cleanUp(b), b = this.undoManager, this.keyEventsStack.getLast(c) || this.keyEventsStack.push(c), this.lastKeydownImage = new e(b.editor), a.isNavigationKey(c) || this.undoManager.keyGroupChanged(c)) if (b.strokesRecorded[0] || b.strokesRecorded[1]) b.save(!1, this.lastKeydownImage, !1), b.resetType();
          }, onInput: function () {
            if (this.ignoreInputEvent) this.ignoreInputEvent = !1;else {
              var a = this.keyEventsStack.getLast();a || (a = this.keyEventsStack.push(0));this.keyEventsStack.increment(a.keyCode);this.keyEventsStack.getTotalInputs() >= this.undoManager.strokesLimit && (this.undoManager.type(a.keyCode, !0), this.keyEventsStack.resetInputs());
            }
          }, onKeyup: function (b) {
            var c = this.undoManager;b = b.data.getKey();var f = this.keyEventsStack.getTotalInputs();this.keyEventsStack.remove(b);if (!(a.ieFunctionalKeysBug(b) && this.lastKeydownImage && this.lastKeydownImage.equalsContent(new e(c.editor, !0)))) if (0 < f) c.type(b);else if (a.isNavigationKey(b)) this.onNavigationKey(!0);
          }, onNavigationKey: function (a) {
            var c = this.undoManager;!a && c.save(!0, null, !1) || c.updateSelection(new e(c.editor));
            c.resetType();
          }, ignoreInputEventListener: function () {
            this.ignoreInputEvent = !0;
          }, activateInputEventListener: function () {
            this.ignoreInputEvent = !1;
          }, attachListeners: function () {
            var b = this.undoManager.editor,
                c = b.editable(),
                e = this;c.attachListener(c, "keydown", function (b) {
              e.onKeydown(b);if (a.ieFunctionalKeysBug(b.data.getKey())) e.onInput();
            }, null, null, 999);c.attachListener(c, CKEDITOR.env.ie ? "keypress" : "input", e.onInput, e, null, 999);c.attachListener(c, "keyup", e.onKeyup, e, null, 999);c.attachListener(c, "paste", e.ignoreInputEventListener, e, null, 999);c.attachListener(c, "drop", e.ignoreInputEventListener, e, null, 999);b.on("afterPaste", e.activateInputEventListener, e, null, 999);c.attachListener(c.isInline() ? c : b.document.getDocumentElement(), "click", function () {
              e.onNavigationKey();
            }, null, null, 999);c.attachListener(this.undoManager.editor, "blur", function () {
              e.keyEventsStack.remove(9);
            }, null, null, 999);
          } };var m = CKEDITOR.plugins.undo.KeyEventsStack = function () {
          this.stack = [];
        };m.prototype = { push: function (a) {
            a = this.stack.push({ keyCode: a, inputs: 0 });return this.stack[a - 1];
          }, getLastIndex: function (a) {
            if ("number" != typeof a) return this.stack.length - 1;for (var c = this.stack.length; c--;) if (this.stack[c].keyCode == a) return c;return -1;
          }, getLast: function (a) {
            a = this.getLastIndex(a);return -1 != a ? this.stack[a] : null;
          }, increment: function (a) {
            this.getLast(a).inputs++;
          }, remove: function (a) {
            a = this.getLastIndex(a);-1 != a && this.stack.splice(a, 1);
          }, resetInputs: function (a) {
            if ("number" == typeof a) this.getLast(a).inputs = 0;else for (a = this.stack.length; a--;) this.stack[a].inputs = 0;
          }, getTotalInputs: function () {
            for (var a = this.stack.length, c = 0; a--;) c += this.stack[a].inputs;return c;
          }, cleanUp: function (a) {
            a = a.data.$;a.ctrlKey || a.metaKey || this.remove(17);a.shiftKey || this.remove(16);a.altKey || this.remove(18);
          } };
      }(), function () {
        function c(a) {
          function c(a) {
            var b = !1;f.attachListener(f, "keydown", function () {
              var c = m.getBody().getElementsByTag(a);if (!b) {
                for (var d = 0; d < c.count(); d++) c.getItem(d).setCustomData("retain", !0);b = !0;
              }
            }, null, null, 1);f.attachListener(f, "keyup", function () {
              var c = m.getElementsByTag(a);b && (1 == c.count() && !c.getItem(0).getCustomData("retain") && CKEDITOR.tools.isEmpty(c.getItem(0).getAttributes()) && c.getItem(0).remove(1), b = !1);
            });
          }var g = this.editor;if (g && !g.isDetached()) {
            var m = a.document,
                b = m.body,
                d = m.getElementById("cke_actscrpt");d && d.parentNode.removeChild(d);(d = m.getElementById("cke_shimscrpt")) && d.parentNode.removeChild(d);(d = m.getElementById("cke_basetagscrpt")) && d.parentNode.removeChild(d);b.contentEditable = !0;CKEDITOR.env.ie && (b.hideFocus = !0, b.disabled = !0, b.removeAttribute("disabled"));delete this._.isLoadingData;this.$ = b;m = new CKEDITOR.dom.document(m);
            this.setup();this.fixInitialSelection();var f = this;CKEDITOR.env.ie && !CKEDITOR.env.edge && m.getDocumentElement().addClass(m.$.compatMode);CKEDITOR.env.ie && !CKEDITOR.env.edge && g.enterMode != CKEDITOR.ENTER_P ? c("p") : CKEDITOR.env.edge && 15 > CKEDITOR.env.version && g.enterMode != CKEDITOR.ENTER_DIV && c("div");if (CKEDITOR.env.webkit || CKEDITOR.env.ie && 10 < CKEDITOR.env.version) m.getDocumentElement().on("mousedown", function (a) {
              a.data.getTarget().is("html") && setTimeout(function () {
                g.editable().focus();
              });
            });h(g);try {
              g.document.$.execCommand("2D-position", !1, !0);
            } catch (p) {}(CKEDITOR.env.gecko || CKEDITOR.env.ie && "CSS1Compat" == g.document.$.compatMode) && this.attachListener(this, "keydown", function (a) {
              var b = a.data.getKeystroke();if (33 == b || 34 == b) if (CKEDITOR.env.ie) setTimeout(function () {
                g.getSelection().scrollIntoView();
              }, 0);else if (g.window.$.innerHeight > this.$.offsetHeight) {
                var c = g.createRange();c[33 == b ? "moveToElementEditStart" : "moveToElementEditEnd"](this);c.select();a.data.preventDefault();
              }
            });CKEDITOR.env.ie && this.attachListener(m, "blur", function () {
              try {
                m.$.selection.empty();
              } catch (a) {}
            });
            CKEDITOR.env.iOS && this.attachListener(m, "touchend", function () {
              a.focus();
            });b = g.document.getElementsByTag("title").getItem(0);b.data("cke-title", b.getText());CKEDITOR.env.ie && (g.document.$.title = this._.docTitle);CKEDITOR.tools.setTimeout(function () {
              "unloaded" == this.status && (this.status = "ready");g.fire("contentDom");this._.isPendingFocus && (g.focus(), this._.isPendingFocus = !1);setTimeout(function () {
                g.fire("dataReady");
              }, 0);
            }, 0, this);
          }
        }function h(a) {
          function g(a) {
            a.returnValue = !1;
          }if (CKEDITOR.env.gecko) try {
            var h = a.document.$;h.execCommand("enableObjectResizing", !1, !a.config.disableObjectResizing);h.execCommand("enableInlineTableEditing", !1, !a.config.disableNativeTableHandles);
          } catch (b) {} else CKEDITOR.env.ie && 11 > CKEDITOR.env.version && a.config.disableObjectResizing && function c() {
            var b;a.editable().attachListener(a, "selectionChange", function () {
              var c = a.getSelection().getSelectedElement();c && (b && (b.detachEvent("onresizestart", g), b = null), c.$.attachEvent("onresizestart", g), b = c.$);
            });
          }();
        }function g() {
          var a = [];if (8 <= CKEDITOR.document.$.documentMode) {
            a.push("html.CSS1Compat [contenteditable\x3dfalse]{min-height:0 !important}");
            var c = [],
                g;for (g in CKEDITOR.dtd.$removeEmpty) c.push("html.CSS1Compat " + g + "[contenteditable\x3dfalse]");a.push(c.join(",") + "{display:inline-block}");
          } else CKEDITOR.env.gecko && (a.push("html{height:100% !important}"), a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"));a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n");
        }var a;CKEDITOR.plugins.add("wysiwygarea", { init: function (c) {
            c.config.fullPage && c.addFeature({ allowedContent: "html head title; style [media,type]; body (*)[id]; meta link [*]",
              requiredContent: "body" });c.addMode("wysiwyg", function (g) {
              function h(d) {
                d && d.removeListener();if (!c.isDestroyed() && !c.isDetached() && (c.editable(new a(c, p.getFrameDocument().getBody())), c.setData(c.getData(1), g), B)) {
                  if (v) c.on("mode", m, { iframe: p, editor: c, callback: g });c.on("mode", function () {
                    c.status = "ready";
                  });b();
                }
              }function m(a) {
                a && a.removeListener();p.on("load", function () {
                  t && (t = !1, d());
                });
              }function b() {
                n = new MutationObserver(function (a) {
                  for (var b = 0; b < a.length; b++) {
                    var f = a[b];if ("childList" === f.type && 0 !== f.addedNodes.length) for (var g = 0; g < f.addedNodes.length; g++) {
                      var h = f.addedNodes[g];h.contains && h.contains(c.container.$) && (v ? t = !0 : d());
                    }
                  }
                });n.observe(c.config.observableParent, { childList: !0, subtree: !0 });
              }function d() {
                var b = c.getData(!1),
                    d;c.editable().preserveIframe = !0;c.editable(null);d = new a(c, p.getFrameDocument().getBody());c.editable(d);c.status = "recreating";c.setData(b, { callback: g, internal: !1, noSnapshot: !1 });
              }var f = "document.open();" + (CKEDITOR.env.ie ? "(" + CKEDITOR.tools.fixDomain + ")();" : "") + "document.close();",
                  f = CKEDITOR.env.air ? "javascript:void(0)" : CKEDITOR.env.ie && !CKEDITOR.env.edge ? "javascript:void(function(){" + encodeURIComponent(f) + "}())" : "",
                  p = CKEDITOR.dom.element.createFromHtml('\x3ciframe src\x3d"' + f + '" frameBorder\x3d"0"\x3e\x3c/iframe\x3e');p.setStyles({ width: "100%", height: "100%" });p.addClass("cke_wysiwyg_frame").addClass("cke_reset");f = c.ui.space("contents") || c.ui.contentsElement;f.append(p);var w = CKEDITOR.env.ie && !CKEDITOR.env.edge || CKEDITOR.env.gecko;if (w) p.on("load", h);var y = c.title,
                  r = c.fire("ariaEditorHelpLabel", {}).label,
                  t = !1,
                  v = CKEDITOR.env.ie && 11 === CKEDITOR.env.version,
                  B = !!window.MutationObserver,
                  n;y && (CKEDITOR.env.ie && r && (y += ", " + r), p.setAttribute("title", y));if (r) {
                var y = CKEDITOR.tools.getNextId(),
                    x = CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"' + y + '" class\x3d"cke_voice_label"\x3e' + r + "\x3c/span\x3e");f.append(x, 1);p.setAttribute("aria-describedby", y);
              }c.on("beforeModeUnload", function (a) {
                a.removeListener();x && x.remove();B && n.disconnect();
              });c.on("destroy", function () {
                n && n.disconnect();
              });p.setAttributes({ tabIndex: c.tabIndex,
                allowTransparency: "true" });!w && h();c.fire("ariaWidget", p);
            });
          } });CKEDITOR.editor.prototype.addContentsCss = function (a) {
          var c = this.config,
              g = c.contentsCss;CKEDITOR.tools.isArray(g) || (c.contentsCss = g ? [g] : []);c.contentsCss.push(a);
        };a = CKEDITOR.tools.createClass({ $: function () {
            this.base.apply(this, arguments);this._.frameLoadedHandler = CKEDITOR.tools.addFunction(function (a) {
              CKEDITOR.tools.setTimeout(c, 0, this, a);
            }, this);this._.docTitle = this.getWindow().getFrame().getAttribute("title");
          }, base: CKEDITOR.editable, proto: { preserveIframe: !1,
            setData: function (a, c) {
              var h = this.editor;if (c) this.setHtml(a), this.fixInitialSelection(), h.fire("dataReady");else {
                this._.isLoadingData = !0;h._.dataStore = { id: 1 };var m = h.config,
                    b = m.fullPage,
                    d = m.docType,
                    f = CKEDITOR.tools.buildStyleHtml(g()).replace(/<style>/, '\x3cstyle data-cke-temp\x3d"1"\x3e');b || (f += CKEDITOR.tools.buildStyleHtml(h.config.contentsCss));var p = m.baseHref ? '\x3cbase href\x3d"' + m.baseHref + '" data-cke-temp\x3d"1" /\x3e' : "";b && (a = a.replace(/<!DOCTYPE[^>]*>/i, function (a) {
                  h.docType = d = a;return "";
                }).replace(/<\?xml\s[^\?]*\?>/i, function (a) {
                  h.xmlDeclaration = a;return "";
                }));a = h.dataProcessor.toHtml(a);b ? (/<body[\s|>]/.test(a) || (a = "\x3cbody\x3e" + a), /<html[\s|>]/.test(a) || (a = "\x3chtml\x3e" + a + "\x3c/html\x3e"), /<head[\s|>]/.test(a) ? /<title[\s|>]/.test(a) || (a = a.replace(/<head[^>]*>/, "$\x26\x3ctitle\x3e\x3c/title\x3e")) : a = a.replace(/<html[^>]*>/, "$\x26\x3chead\x3e\x3ctitle\x3e\x3c/title\x3e\x3c/head\x3e"), p && (a = a.replace(/<head[^>]*?>/, "$\x26" + p)), a = a.replace(/<\/head\s*>/, f + "$\x26"), a = d + a) : a = m.docType + '\x3chtml dir\x3d"' + m.contentsLangDirection + '" lang\x3d"' + (m.contentsLanguage || h.langCode) + '"\x3e\x3chead\x3e\x3ctitle\x3e' + this._.docTitle + "\x3c/title\x3e" + p + f + "\x3c/head\x3e\x3cbody" + (m.bodyId ? ' id\x3d"' + m.bodyId + '"' : "") + (m.bodyClass ? ' class\x3d"' + m.bodyClass + '"' : "") + "\x3e" + a + "\x3c/body\x3e\x3c/html\x3e";CKEDITOR.env.gecko && (a = a.replace(/<body/, '\x3cbody contenteditable\x3d"true" '), 2E4 > CKEDITOR.env.version && (a = a.replace(/<body[^>]*>/, "$\x26\x3c!-- cke-content-start --\x3e")));m = '\x3cscript id\x3d"cke_actscrpt" type\x3d"text/javascript"' + (CKEDITOR.env.ie ? ' defer\x3d"defer" ' : "") + "\x3evar wasLoaded\x3d0;function onload(){if(!wasLoaded)window.parent.CKEDITOR \x26\x26 window.parent.CKEDITOR.tools.callFunction(" + this._.frameLoadedHandler + ",window);wasLoaded\x3d1;}" + (CKEDITOR.env.ie ? "onload();" : 'document.addEventListener("DOMContentLoaded", onload, false );') + "\x3c/script\x3e";CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (m += '\x3cscript id\x3d"cke_shimscrpt"\x3ewindow.parent.CKEDITOR.tools.enableHtml5Elements(document)\x3c/script\x3e');p && CKEDITOR.env.ie && 10 > CKEDITOR.env.version && (m += '\x3cscript id\x3d"cke_basetagscrpt"\x3evar baseTag \x3d document.querySelector( "base" );baseTag.href \x3d baseTag.href;\x3c/script\x3e');a = a.replace(/(?=\s*<\/(:?head)>)/, m);this.clearCustomData();this.clearListeners();h.fire("contentDomUnload");var w = this.getDocument();try {
                  w.write(a);
                } catch (y) {
                  setTimeout(function () {
                    w.write(a);
                  }, 0);
                }
              }
            }, getData: function (a) {
              if (a) return this.getHtml();a = this.editor;var c = a.config,
                  g = c.fullPage,
                  h = g && a.docType,
                  b = g && a.xmlDeclaration,
                  d = this.getDocument(),
                  g = g ? d.getDocumentElement().getOuterHtml() : d.getBody().getHtml();CKEDITOR.env.gecko && c.enterMode != CKEDITOR.ENTER_BR && (g = g.replace(/<br>(?=\s*(:?$|<\/body>))/, ""));g = a.dataProcessor.toDataFormat(g);b && (g = b + "\n" + g);h && (g = h + "\n" + g);return g;
            }, focus: function () {
              this._.isLoadingData ? this._.isPendingFocus = !0 : a.baseProto.focus.call(this);
            }, detach: function () {
              if (!this.preserveIframe) {
                var c = this.editor,
                    g = c.document,
                    c = c.container.findOne("iframe.cke_wysiwyg_frame");a.baseProto.detach.call(this);
                this.clearCustomData(this._.expandoNumber);g.getDocumentElement().clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);c && (c.clearCustomData(), (g = c.removeCustomData("onResize")) && g.removeListener(), c.isDetached() || c.remove());
              }
            } } });
      }(), CKEDITOR.config.disableObjectResizing = !1, CKEDITOR.config.disableNativeTableHandles = !0, CKEDITOR.config.disableNativeSpellChecker = !0, CKEDITOR.config.observableParent = CKEDITOR.document.$, CKEDITOR.config.plugins = "dialogui,dialog,a11yhelp,basicstyles,blockquote,notification,button,toolbar,clipboard,codemirror,panelbutton,panel,floatpanel,colorbutton,menu,contextmenu,dialogadvtab,enterkey,listblock,richcombo,font,format,horizontalrule,htmlwriter,lineutils,widgetselection,widget,image2,imagespacingbox,indent,indentlist,indentblock,justify,fakeobjects,link,list,liststyle,magicline,pagebreak,pastefromword,pastetext,xml,ajax,pastetools,removeformat,resize,tab,table,tabletools,undo,wysiwygarea", CKEDITOR.config.skin = "moono-lexicon", function () {
        var c = function (c, g) {
          var a = CKEDITOR.getUrl("plugins/" + g);c = c.split(",");for (var e = 0; e < c.length; e++) CKEDITOR.skin.icons[c[e]] = { path: a, offset: -c[++e], bgsize: c[++e] };
        };CKEDITOR.env.hidpi ? c("about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,copy-rtl,240,,copy,264,,cut-rtl,288,,cut,312,,paste-rtl,336,,paste,360,,codesnippet,384,,bgcolor,408,,textcolor,432,,copyformatting,456,,creatediv,480,,docprops-rtl,504,,docprops,528,,easyimagealigncenter,552,,easyimagealignleft,576,,easyimagealignright,600,,easyimagealt,624,,easyimagefull,648,,easyimageside,672,,easyimageupload,696,,embed,720,,embedsemantic,744,,emojipanel,768,,find-rtl,792,,find,816,,replace,840,,button,864,,checkbox,888,,form,912,,hiddenfield,936,,imagebutton,960,,radio,984,,select-rtl,1008,,select,1032,,textarea-rtl,1056,,textarea,1080,,textfield-rtl,1104,,textfield,1128,,horizontalrule,1152,,iframe,1176,,image,1200,,indent-rtl,1224,,indent,1248,,outdent-rtl,1272,,outdent,1296,,justifyblock,1320,,justifycenter,1344,,justifyleft,1368,,justifyright,1392,,language,1416,,anchor-rtl,1440,,anchor,1464,,link,1488,,unlink,1512,,bulletedlist-rtl,1536,,bulletedlist,1560,,numberedlist-rtl,1584,,numberedlist,1608,,mathjax,1632,,maximize,1656,,newpage-rtl,1680,,newpage,1704,,pagebreak-rtl,1728,,pagebreak,1752,,pastefromword-rtl,1776,,pastefromword,1800,,pastetext-rtl,1824,,pastetext,1848,,placeholder,1872,,preview-rtl,1896,,preview,1920,,print,1944,,removeformat,1968,,save,1992,,scayt,2016,,selectall,2040,,showblocks-rtl,2064,,showblocks,2088,,smiley,2112,,source-rtl,2136,,source,2160,,sourcedialog-rtl,2184,,sourcedialog,2208,,specialchar,2232,,table,2256,,templates-rtl,2280,,templates,2304,,uicolor,2328,,redo-rtl,2352,,redo,2376,,undo-rtl,2400,,undo,2424,,simplebox,4896,auto", "icons_hidpi.png") : c("about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,copy-rtl,240,auto,copy,264,auto,cut-rtl,288,auto,cut,312,auto,paste-rtl,336,auto,paste,360,auto,codesnippet,384,auto,bgcolor,408,auto,textcolor,432,auto,copyformatting,456,auto,creatediv,480,auto,docprops-rtl,504,auto,docprops,528,auto,easyimagealigncenter,552,auto,easyimagealignleft,576,auto,easyimagealignright,600,auto,easyimagealt,624,auto,easyimagefull,648,auto,easyimageside,672,auto,easyimageupload,696,auto,embed,720,auto,embedsemantic,744,auto,emojipanel,768,auto,find-rtl,792,auto,find,816,auto,replace,840,auto,button,864,auto,checkbox,888,auto,form,912,auto,hiddenfield,936,auto,imagebutton,960,auto,radio,984,auto,select-rtl,1008,auto,select,1032,auto,textarea-rtl,1056,auto,textarea,1080,auto,textfield-rtl,1104,auto,textfield,1128,auto,horizontalrule,1152,auto,iframe,1176,auto,image,1200,auto,indent-rtl,1224,auto,indent,1248,auto,outdent-rtl,1272,auto,outdent,1296,auto,justifyblock,1320,auto,justifycenter,1344,auto,justifyleft,1368,auto,justifyright,1392,auto,language,1416,auto,anchor-rtl,1440,auto,anchor,1464,auto,link,1488,auto,unlink,1512,auto,bulletedlist-rtl,1536,auto,bulletedlist,1560,auto,numberedlist-rtl,1584,auto,numberedlist,1608,auto,mathjax,1632,auto,maximize,1656,auto,newpage-rtl,1680,auto,newpage,1704,auto,pagebreak-rtl,1728,auto,pagebreak,1752,auto,pastefromword-rtl,1776,auto,pastefromword,1800,auto,pastetext-rtl,1824,auto,pastetext,1848,auto,placeholder,1872,auto,preview-rtl,1896,auto,preview,1920,auto,print,1944,auto,removeformat,1968,auto,save,1992,auto,scayt,2016,auto,selectall,2040,auto,showblocks-rtl,2064,auto,showblocks,2088,auto,smiley,2112,auto,source-rtl,2136,auto,source,2160,auto,sourcedialog-rtl,2184,auto,sourcedialog,2208,auto,specialchar,2232,auto,table,2256,auto,templates-rtl,2280,auto,templates,2304,auto,uicolor,2328,auto,redo-rtl,2352,auto,redo,2376,auto,undo-rtl,2400,auto,undo,2424,auto,simplebox,2448,auto", "icons.png");
      }());
    })();
  }
});
//# sourceMappingURL=ckeditor.js.map