%PDF- %PDF-
Direktori : /var/www/projetos/radar.ongrace.com.br/js/ |
Current File : /var/www/projetos/radar.ongrace.com.br/js/nicEdit.js |
/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/"; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 1); /******/ }) /************************************************************************/ /******/ ({ /***/ "./resources/js/nicEdit.js": /*!*********************************!*\ !*** ./resources/js/nicEdit.js ***! \*********************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/* NicEdit - Micro Inline WYSIWYG\n * Copyright 2007-2008 Brian Kirchoff\n *\n * NicEdit is distributed under the terms of the MIT license\n * For more information visit http://nicedit.com/\n * Do not remove this copyright message\n */\nvar bkExtend = function bkExtend() {\n var A = arguments;\n\n if (A.length == 1) {\n A = [this, A[0]];\n }\n\n for (var B in A[1]) {\n A[0][B] = A[1][B];\n }\n\n return A[0];\n};\n\nfunction bkClass() {}\n\nbkClass.prototype.construct = function () {};\n\nbkClass.extend = function (C) {\n var A = function A() {\n if (arguments[0] !== bkClass) {\n return this.construct.apply(this, arguments);\n }\n };\n\n var B = new this(bkClass);\n bkExtend(B, C);\n A.prototype = B;\n A.extend = this.extend;\n return A;\n};\n\nvar bkElement = bkClass.extend({\n construct: function construct(B, A) {\n if (typeof B == \"string\") {\n B = (A || document).createElement(B);\n }\n\n B = $BK(B);\n return B;\n },\n appendTo: function appendTo(A) {\n A.appendChild(this);\n return this;\n },\n appendBefore: function appendBefore(A) {\n A.parentNode.insertBefore(this, A);\n return this;\n },\n addEvent: function addEvent(B, A) {\n bkLib.addEvent(this, B, A);\n return this;\n },\n setContent: function setContent(A) {\n this.innerHTML = A;\n return this;\n },\n pos: function pos() {\n var C = curtop = 0;\n var B = obj = this;\n\n if (obj.offsetParent) {\n do {\n C += obj.offsetLeft;\n curtop += obj.offsetTop;\n } while (obj = obj.offsetParent);\n }\n\n var A = !window.opera ? parseInt(this.getStyle(\"border-width\") || this.style.border) || 0 : 0;\n return [C + A, curtop + A + this.offsetHeight];\n },\n noSelect: function noSelect() {\n bkLib.noSelect(this);\n return this;\n },\n parentTag: function parentTag(A) {\n var B = this;\n\n do {\n if (B && B.nodeName && B.nodeName.toUpperCase() == A) {\n return B;\n }\n\n B = B.parentNode;\n } while (B);\n\n return false;\n },\n hasClass: function hasClass(A) {\n return this.className.match(new RegExp(\"(\\\\s|^)nicEdit-\" + A + \"(\\\\s|$)\"));\n },\n addClass: function addClass(A) {\n if (!this.hasClass(A)) {\n this.className += \" nicEdit-\" + A;\n }\n\n return this;\n },\n removeClass: function removeClass(A) {\n if (this.hasClass(A)) {\n this.className = this.className.replace(new RegExp(\"(\\\\s|^)nicEdit-\" + A + \"(\\\\s|$)\"), \" \");\n }\n\n return this;\n },\n setStyle: function setStyle(A) {\n var B = this.style;\n\n for (var C in A) {\n switch (C) {\n case \"float\":\n B.cssFloat = B.styleFloat = A[C];\n break;\n\n case \"opacity\":\n B.opacity = A[C];\n B.filter = \"alpha(opacity=\" + Math.round(A[C] * 100) + \")\";\n break;\n\n case \"className\":\n this.className = A[C];\n break;\n\n default:\n B[C] = A[C];\n }\n }\n\n return this;\n },\n getStyle: function getStyle(A, C) {\n var B = !C ? document.defaultView : C;\n\n if (this.nodeType == 1) {\n return B && B.getComputedStyle ? B.getComputedStyle(this, null).getPropertyValue(A) : this.currentStyle[bkLib.camelize(A)];\n }\n },\n remove: function remove() {\n this.parentNode.removeChild(this);\n return this;\n },\n setAttributes: function setAttributes(A) {\n for (var B in A) {\n this[B] = A[B];\n }\n\n return this;\n }\n});\nvar bkLib = {\n isMSIE: navigator.appVersion.indexOf(\"MSIE\") != -1,\n addEvent: function addEvent(C, B, A) {\n C.addEventListener ? C.addEventListener(B, A, false) : C.attachEvent(\"on\" + B, A);\n },\n toArray: function toArray(C) {\n var B = C.length,\n A = new Array(B);\n\n while (B--) {\n A[B] = C[B];\n }\n\n return A;\n },\n noSelect: function noSelect(B) {\n if (B.setAttribute && B.nodeName.toLowerCase() != \"input\" && B.nodeName.toLowerCase() != \"textarea\") {\n B.setAttribute(\"unselectable\", \"on\");\n }\n\n for (var A = 0; A < B.childNodes.length; A++) {\n bkLib.noSelect(B.childNodes[A]);\n }\n },\n camelize: function camelize(A) {\n return A.replace(/\\-(.)/g, function (B, C) {\n return C.toUpperCase();\n });\n },\n inArray: function inArray(A, B) {\n return bkLib.search(A, B) != null;\n },\n search: function search(A, C) {\n for (var B = 0; B < A.length; B++) {\n if (A[B] == C) {\n return B;\n }\n }\n\n return null;\n },\n cancelEvent: function cancelEvent(A) {\n A = A || window.event;\n\n if (A.preventDefault && A.stopPropagation) {\n A.preventDefault();\n A.stopPropagation();\n }\n\n return false;\n },\n domLoad: [],\n domLoaded: function domLoaded() {\n if (arguments.callee.done) {\n return;\n }\n\n arguments.callee.done = true;\n\n for (i = 0; i < bkLib.domLoad.length; i++) {\n bkLib.domLoad[i]();\n }\n },\n onDomLoaded: function onDomLoaded(A) {\n this.domLoad.push(A);\n\n if (document.addEventListener) {\n document.addEventListener(\"DOMContentLoaded\", bkLib.domLoaded, null);\n } else {\n if (bkLib.isMSIE) {\n document.write(\"<style>.nicEdit-main p { margin: 0; }</style><script id=__ie_onload defer \" + (location.protocol == \"https:\" ? \"src='javascript:void(0)'\" : \"src=//0\") + \"><\\/script>\");\n\n $BK(\"__ie_onload\").onreadystatechange = function () {\n if (this.readyState == \"complete\") {\n bkLib.domLoaded();\n }\n };\n }\n }\n\n window.onload = bkLib.domLoaded;\n }\n};\n\nfunction $BK(A) {\n if (typeof A == \"string\") {\n A = document.getElementById(A);\n }\n\n return A && !A.appendTo ? bkExtend(A, bkElement.prototype) : A;\n}\n\nvar bkEvent = {\n addEvent: function addEvent(A, B) {\n if (B) {\n this.eventList = this.eventList || {};\n this.eventList[A] = this.eventList[A] || [];\n this.eventList[A].push(B);\n }\n\n return this;\n },\n fireEvent: function fireEvent() {\n var A = bkLib.toArray(arguments),\n C = A.shift();\n\n if (this.eventList && this.eventList[C]) {\n for (var B = 0; B < this.eventList[C].length; B++) {\n this.eventList[C][B].apply(this, A);\n }\n }\n }\n};\n\nfunction __(A) {\n return A;\n}\n\nFunction.prototype.closure = function () {\n var A = this,\n B = bkLib.toArray(arguments),\n C = B.shift();\n return function () {\n if (typeof bkLib != \"undefined\") {\n return A.apply(C, B.concat(bkLib.toArray(arguments)));\n }\n };\n};\n\nFunction.prototype.closureListener = function () {\n var A = this,\n C = bkLib.toArray(arguments),\n B = C.shift();\n return function (E) {\n E = E || window.event;\n\n if (E.target) {\n var D = E.target;\n } else {\n var D = E.srcElement;\n }\n\n return A.apply(B, [E, D].concat(C));\n };\n};\n\nvar nicEditorConfig = bkClass.extend({\n buttons: {\n 'bold': {\n name: __('Click to Bold'),\n command: 'Bold',\n tags: ['B', 'STRONG'],\n css: {\n 'font-weight': 'bold'\n },\n key: 'b'\n },\n 'italic': {\n name: __('Click to Italic'),\n command: 'Italic',\n tags: ['EM', 'I'],\n css: {\n 'font-style': 'italic'\n },\n key: 'i'\n },\n 'underline': {\n name: __('Click to Underline'),\n command: 'Underline',\n tags: ['U'],\n css: {\n 'text-decoration': 'underline'\n },\n key: 'u'\n },\n 'left': {\n name: __('Left Align'),\n command: 'justifyleft',\n noActive: true\n },\n 'center': {\n name: __('Center Align'),\n command: 'justifycenter',\n noActive: true\n },\n 'right': {\n name: __('Right Align'),\n command: 'justifyright',\n noActive: true\n },\n 'justify': {\n name: __('Justify Align'),\n command: 'justifyfull',\n noActive: true\n },\n 'ol': {\n name: __('Insert Ordered List'),\n command: 'insertorderedlist',\n tags: ['OL']\n },\n 'ul': {\n name: __('Insert Unordered List'),\n command: 'insertunorderedlist',\n tags: ['UL']\n },\n 'subscript': {\n name: __('Click to Subscript'),\n command: 'subscript',\n tags: ['SUB']\n },\n 'superscript': {\n name: __('Click to Superscript'),\n command: 'superscript',\n tags: ['SUP']\n },\n 'strikethrough': {\n name: __('Click to Strike Through'),\n command: 'strikeThrough',\n css: {\n 'text-decoration': 'line-through'\n }\n },\n 'removeformat': {\n name: __('Remove Formatting'),\n command: 'removeformat',\n noActive: true\n },\n 'indent': {\n name: __('Indent Text'),\n command: 'indent',\n noActive: true\n },\n 'outdent': {\n name: __('Remove Indent'),\n command: 'outdent',\n noActive: true\n },\n 'hr': {\n name: __('Horizontal Rule'),\n command: 'insertHorizontalRule',\n noActive: true\n }\n },\n iconsPath: '../nicEditorIcons.gif',\n buttonList: ['save', 'bold', 'italic', 'underline', 'left', 'center', 'right', 'justify', 'ol', 'ul', 'fontSize', 'fontFamily', 'fontFormat', 'indent', 'outdent', 'image', 'upload', 'link', 'unlink', 'forecolor', 'bgcolor'],\n iconList: {\n \"bgcolor\": 1,\n \"forecolor\": 2,\n \"bold\": 3,\n \"center\": 4,\n \"hr\": 5,\n \"indent\": 6,\n \"italic\": 7,\n \"justify\": 8,\n \"left\": 9,\n \"ol\": 10,\n \"outdent\": 11,\n \"removeformat\": 12,\n \"right\": 13,\n \"save\": 24,\n \"strikethrough\": 15,\n \"subscript\": 16,\n \"superscript\": 17,\n \"ul\": 18,\n \"underline\": 19,\n \"image\": 20,\n \"link\": 21,\n \"unlink\": 22,\n \"close\": 23,\n \"arrow\": 25\n }\n});\n;\nvar nicEditors = {\n nicPlugins: [],\n editors: [],\n registerPlugin: function registerPlugin(B, A) {\n this.nicPlugins.push({\n p: B,\n o: A\n });\n },\n allTextAreas: function allTextAreas(C) {\n var A = document.getElementsByTagName(\"textarea\");\n\n for (var B = 0; B < A.length; B++) {\n nicEditors.editors.push(new nicEditor(C).panelInstance(A[B]));\n }\n\n return nicEditors.editors;\n },\n findEditor: function findEditor(C) {\n var B = nicEditors.editors;\n\n for (var A = 0; A < B.length; A++) {\n if (B[A].instanceById(C)) {\n return B[A].instanceById(C);\n }\n }\n }\n};\nvar nicEditor = bkClass.extend({\n construct: function construct(C) {\n this.options = new nicEditorConfig();\n bkExtend(this.options, C);\n this.nicInstances = new Array();\n this.loadedPlugins = new Array();\n var A = nicEditors.nicPlugins;\n\n for (var B = 0; B < A.length; B++) {\n this.loadedPlugins.push(new A[B].p(this, A[B].o));\n }\n\n nicEditors.editors.push(this);\n bkLib.addEvent(document.body, \"mousedown\", this.selectCheck.closureListener(this));\n },\n panelInstance: function panelInstance(B, C) {\n B = this.checkReplace($BK(B));\n var A = new bkElement(\"DIV\").setStyle({\n width: (parseInt(B.getStyle(\"width\")) || B.clientWidth) + \"px\"\n }).appendBefore(B);\n this.setPanel(A);\n return this.addInstance(B, C);\n },\n checkReplace: function checkReplace(B) {\n var A = nicEditors.findEditor(B);\n\n if (A) {\n A.removeInstance(B);\n A.removePanel();\n }\n\n return B;\n },\n addInstance: function addInstance(B, C) {\n B = this.checkReplace($BK(B));\n\n if (B.contentEditable || !!window.opera) {\n var A = new nicEditorInstance(B, C, this);\n } else {\n var A = new nicEditorIFrameInstance(B, C, this);\n }\n\n this.nicInstances.push(A);\n return this;\n },\n removeInstance: function removeInstance(C) {\n C = $BK(C);\n var B = this.nicInstances;\n\n for (var A = 0; A < B.length; A++) {\n if (B[A].e == C) {\n B[A].remove();\n this.nicInstances.splice(A, 1);\n }\n }\n },\n removePanel: function removePanel(A) {\n if (this.nicPanel) {\n this.nicPanel.remove();\n this.nicPanel = null;\n }\n },\n instanceById: function instanceById(C) {\n C = $BK(C);\n var B = this.nicInstances;\n\n for (var A = 0; A < B.length; A++) {\n if (B[A].e == C) {\n return B[A];\n }\n }\n },\n setPanel: function setPanel(A) {\n this.nicPanel = new nicEditorPanel($BK(A), this.options, this);\n this.fireEvent(\"panel\", this.nicPanel);\n return this;\n },\n nicCommand: function nicCommand(B, A) {\n if (this.selectedInstance) {\n this.selectedInstance.nicCommand(B, A);\n }\n },\n getIcon: function getIcon(D, A) {\n var C = this.options.iconList[D];\n var B = A.iconFiles ? A.iconFiles[D] : \"\";\n return {\n backgroundImage: \"url('\" + (C ? this.options.iconsPath : B) + \"')\",\n backgroundPosition: (C ? (C - 1) * -18 : 0) + \"px 0px\"\n };\n },\n selectCheck: function selectCheck(C, A) {\n var B = false;\n\n do {\n if (A.className && A.className.indexOf(\"nicEdit\") != -1) {\n return false;\n }\n } while (A = A.parentNode);\n\n this.fireEvent(\"blur\", this.selectedInstance, A);\n this.lastSelectedInstance = this.selectedInstance;\n this.selectedInstance = null;\n return false;\n }\n});\nnicEditor = nicEditor.extend(bkEvent);\nvar nicEditorInstance = bkClass.extend({\n isSelected: false,\n construct: function construct(G, D, C) {\n this.ne = C;\n this.elm = this.e = G;\n this.options = D || {};\n newX = parseInt(G.getStyle(\"width\")) || G.clientWidth;\n newY = parseInt(G.getStyle(\"height\")) || G.clientHeight;\n this.initialHeight = newY - 8;\n var H = G.nodeName.toLowerCase() == \"textarea\";\n\n if (H || this.options.hasPanel) {\n var B = bkLib.isMSIE && !(typeof document.body.style.maxHeight != \"undefined\" && document.compatMode == \"CSS1Compat\");\n var E = {\n width: newX + \"px\",\n border: \"1px solid #ccc\",\n borderTop: 0,\n overflowY: \"auto\",\n overflowX: \"hidden\"\n };\n E[B ? \"height\" : \"maxHeight\"] = this.ne.options.maxHeight ? this.ne.options.maxHeight + \"px\" : null;\n this.editorContain = new bkElement(\"DIV\").setStyle(E).appendBefore(G);\n var A = new bkElement(\"DIV\").setStyle({\n width: newX - 8 + \"px\",\n margin: \"4px\",\n minHeight: newY + \"px\"\n }).addClass(\"main\").appendTo(this.editorContain);\n G.setStyle({\n display: \"none\"\n });\n A.innerHTML = G.innerHTML;\n\n if (H) {\n A.setContent(G.value);\n this.copyElm = G;\n var F = G.parentTag(\"FORM\");\n\n if (F) {\n bkLib.addEvent(F, \"submit\", this.saveContent.closure(this));\n }\n }\n\n A.setStyle(B ? {\n height: newY + \"px\"\n } : {\n overflow: \"hidden\"\n });\n this.elm = A;\n }\n\n this.ne.addEvent(\"blur\", this.blur.closure(this));\n this.init();\n this.blur();\n },\n init: function init() {\n this.elm.setAttribute(\"contentEditable\", \"true\");\n\n if (this.getContent() == \"\") {\n this.setContent(\"<br />\");\n }\n\n this.instanceDoc = document.defaultView;\n this.elm.addEvent(\"mousedown\", this.selected.closureListener(this)).addEvent(\"keypress\", this.keyDown.closureListener(this)).addEvent(\"focus\", this.selected.closure(this)).addEvent(\"blur\", this.blur.closure(this)).addEvent(\"keyup\", this.selected.closure(this));\n this.ne.fireEvent(\"add\", this);\n },\n remove: function remove() {\n this.saveContent();\n\n if (this.copyElm || this.options.hasPanel) {\n this.editorContain.remove();\n this.e.setStyle({\n display: \"block\"\n });\n this.ne.removePanel();\n }\n\n this.disable();\n this.ne.fireEvent(\"remove\", this);\n },\n disable: function disable() {\n this.elm.setAttribute(\"contentEditable\", \"false\");\n },\n getSel: function getSel() {\n return window.getSelection ? window.getSelection() : document.selection;\n },\n getRng: function getRng() {\n var A = this.getSel();\n\n if (!A || A.rangeCount === 0) {\n return;\n }\n\n return A.rangeCount > 0 ? A.getRangeAt(0) : A.createRange();\n },\n selRng: function selRng(A, B) {\n if (window.getSelection) {\n B.removeAllRanges();\n B.addRange(A);\n } else {\n A.select();\n }\n },\n selElm: function selElm() {\n var C = this.getRng();\n\n if (!C) {\n return;\n }\n\n if (C.startContainer) {\n var D = C.startContainer;\n\n if (C.cloneContents().childNodes.length == 1) {\n for (var B = 0; B < D.childNodes.length; B++) {\n var A = D.childNodes[B].ownerDocument.createRange();\n A.selectNode(D.childNodes[B]);\n\n if (C.compareBoundaryPoints(Range.START_TO_START, A) != 1 && C.compareBoundaryPoints(Range.END_TO_END, A) != -1) {\n return $BK(D.childNodes[B]);\n }\n }\n }\n\n return $BK(D);\n } else {\n return $BK(this.getSel().type == \"Control\" ? C.item(0) : C.parentElement());\n }\n },\n saveRng: function saveRng() {\n this.savedRange = this.getRng();\n this.savedSel = this.getSel();\n },\n restoreRng: function restoreRng() {\n if (this.savedRange) {\n this.selRng(this.savedRange, this.savedSel);\n }\n },\n keyDown: function keyDown(B, A) {\n if (B.ctrlKey) {\n this.ne.fireEvent(\"key\", this, B);\n }\n },\n selected: function selected(C, A) {\n if (!A && !(A = this.selElm)) {\n A = this.selElm();\n }\n\n if (!C.ctrlKey) {\n var B = this.ne.selectedInstance;\n\n if (B != this) {\n if (B) {\n this.ne.fireEvent(\"blur\", B, A);\n }\n\n this.ne.selectedInstance = this;\n this.ne.fireEvent(\"focus\", B, A);\n }\n\n this.ne.fireEvent(\"selected\", B, A);\n this.isFocused = true;\n this.elm.addClass(\"selected\");\n }\n\n return false;\n },\n blur: function blur() {\n this.isFocused = false;\n this.elm.removeClass(\"selected\");\n },\n saveContent: function saveContent() {\n if (this.copyElm || this.options.hasPanel) {\n this.ne.fireEvent(\"save\", this);\n this.copyElm ? this.copyElm.value = this.getContent() : this.e.innerHTML = this.getContent();\n }\n },\n getElm: function getElm() {\n return this.elm;\n },\n getContent: function getContent() {\n this.content = this.getElm().innerHTML;\n this.ne.fireEvent(\"get\", this);\n return this.content;\n },\n setContent: function setContent(A) {\n this.content = A;\n this.ne.fireEvent(\"set\", this);\n this.elm.innerHTML = this.content;\n },\n nicCommand: function nicCommand(B, A) {\n document.execCommand(B, false, A);\n }\n});\nvar nicEditorIFrameInstance = nicEditorInstance.extend({\n savedStyles: [],\n init: function init() {\n var B = this.elm.innerHTML.replace(/^\\s+|\\s+$/g, \"\");\n this.elm.innerHTML = \"\";\n !B ? B = \"<br />\" : B;\n this.initialContent = B;\n this.elmFrame = new bkElement(\"iframe\").setAttributes({\n src: \"javascript:;\",\n frameBorder: 0,\n allowTransparency: \"true\",\n scrolling: \"no\"\n }).setStyle({\n height: \"100px\",\n width: \"100%\"\n }).addClass(\"frame\").appendTo(this.elm);\n\n if (this.copyElm) {\n this.elmFrame.setStyle({\n width: this.elm.offsetWidth - 4 + \"px\"\n });\n }\n\n var A = [\"font-size\", \"font-family\", \"font-weight\", \"color\"];\n\n for (itm in A) {\n this.savedStyles[bkLib.camelize(itm)] = this.elm.getStyle(itm);\n }\n\n setTimeout(this.initFrame.closure(this), 50);\n },\n disable: function disable() {\n this.elm.innerHTML = this.getContent();\n },\n initFrame: function initFrame() {\n var B = $BK(this.elmFrame.contentWindow.document);\n B.designMode = \"on\";\n B.open();\n var A = this.ne.options.externalCSS;\n B.write(\"<html><head>\" + (A ? '<link href=\"' + A + '\" rel=\"stylesheet\" type=\"text/css\" />' : \"\") + '</head><body id=\"nicEditContent\" style=\"margin: 0 !important; background-color: transparent !important;\">' + this.initialContent + \"</body></html>\");\n B.close();\n this.frameDoc = B;\n this.frameWin = $BK(this.elmFrame.contentWindow);\n this.frameContent = $BK(this.frameWin.document.body).setStyle(this.savedStyles);\n this.instanceDoc = this.frameWin.document.defaultView;\n this.heightUpdate();\n this.frameDoc.addEvent(\"mousedown\", this.selected.closureListener(this)).addEvent(\"keyup\", this.heightUpdate.closureListener(this)).addEvent(\"keydown\", this.keyDown.closureListener(this)).addEvent(\"keyup\", this.selected.closure(this));\n this.ne.fireEvent(\"add\", this);\n },\n getElm: function getElm() {\n return this.frameContent;\n },\n setContent: function setContent(A) {\n this.content = A;\n this.ne.fireEvent(\"set\", this);\n this.frameContent.innerHTML = this.content;\n this.heightUpdate();\n },\n getSel: function getSel() {\n return this.frameWin ? this.frameWin.getSelection() : this.frameDoc.selection;\n },\n heightUpdate: function heightUpdate() {\n this.elmFrame.style.height = Math.max(this.frameContent.offsetHeight, this.initialHeight) + \"px\";\n },\n nicCommand: function nicCommand(B, A) {\n this.frameDoc.execCommand(B, false, A);\n setTimeout(this.heightUpdate.closure(this), 100);\n }\n});\nvar nicEditorPanel = bkClass.extend({\n construct: function construct(E, B, A) {\n this.elm = E;\n this.options = B;\n this.ne = A;\n this.panelButtons = new Array();\n this.buttonList = bkExtend([], this.ne.options.buttonList);\n this.panelContain = new bkElement(\"DIV\").setStyle({\n overflow: \"hidden\",\n width: \"100%\",\n border: \"1px solid #cccccc\",\n backgroundColor: \"#efefef\"\n }).addClass(\"panelContain\");\n this.panelElm = new bkElement(\"DIV\").setStyle({\n margin: \"2px\",\n marginTop: \"0px\",\n zoom: 1,\n overflow: \"hidden\"\n }).addClass(\"panel\").appendTo(this.panelContain);\n this.panelContain.appendTo(E);\n var C = this.ne.options;\n var D = C.buttons;\n\n for (button in D) {\n this.addButton(button, C, true);\n }\n\n this.reorder();\n E.noSelect();\n },\n addButton: function addButton(buttonName, options, noOrder) {\n var button = options.buttons[buttonName];\n var type = button.type ? eval(\"(typeof(\" + button.type + ') == \"undefined\") ? null : ' + button.type + \";\") : nicEditorButton;\n var hasButton = bkLib.inArray(this.buttonList, buttonName);\n\n if (type && (hasButton || this.ne.options.fullPanel)) {\n this.panelButtons.push(new type(this.panelElm, buttonName, options, this.ne));\n\n if (!hasButton) {\n this.buttonList.push(buttonName);\n }\n }\n },\n findButton: function findButton(B) {\n for (var A = 0; A < this.panelButtons.length; A++) {\n if (this.panelButtons[A].name == B) {\n return this.panelButtons[A];\n }\n }\n },\n reorder: function reorder() {\n var C = this.buttonList;\n\n for (var B = 0; B < C.length; B++) {\n var A = this.findButton(C[B]);\n\n if (A) {\n this.panelElm.appendChild(A.margin);\n }\n }\n },\n remove: function remove() {\n this.elm.remove();\n }\n});\nvar nicEditorButton = bkClass.extend({\n construct: function construct(D, A, C, B) {\n this.options = C.buttons[A];\n this.name = A;\n this.ne = B;\n this.elm = D;\n this.margin = new bkElement(\"DIV\").setStyle({\n \"float\": \"left\",\n marginTop: \"2px\"\n }).appendTo(D);\n this.contain = new bkElement(\"DIV\").setStyle({\n width: \"20px\",\n height: \"20px\"\n }).addClass(\"buttonContain\").appendTo(this.margin);\n this.border = new bkElement(\"DIV\").setStyle({\n backgroundColor: \"#efefef\",\n border: \"1px solid #efefef\"\n }).appendTo(this.contain);\n this.button = new bkElement(\"DIV\").setStyle({\n width: \"18px\",\n height: \"18px\",\n overflow: \"hidden\",\n zoom: 1,\n cursor: \"pointer\"\n }).addClass(\"button\").setStyle(this.ne.getIcon(A, C)).appendTo(this.border);\n this.button.addEvent(\"mouseover\", this.hoverOn.closure(this)).addEvent(\"mouseout\", this.hoverOff.closure(this)).addEvent(\"mousedown\", this.mouseClick.closure(this)).noSelect();\n\n if (!window.opera) {\n this.button.onmousedown = this.button.onclick = bkLib.cancelEvent;\n }\n\n B.addEvent(\"selected\", this.enable.closure(this)).addEvent(\"blur\", this.disable.closure(this)).addEvent(\"key\", this.key.closure(this));\n this.disable();\n this.init();\n },\n init: function init() {},\n hide: function hide() {\n this.contain.setStyle({\n display: \"none\"\n });\n },\n updateState: function updateState() {\n if (this.isDisabled) {\n this.setBg();\n } else {\n if (this.isHover) {\n this.setBg(\"hover\");\n } else {\n if (this.isActive) {\n this.setBg(\"active\");\n } else {\n this.setBg();\n }\n }\n }\n },\n setBg: function setBg(A) {\n switch (A) {\n case \"hover\":\n var B = {\n border: \"1px solid #666\",\n backgroundColor: \"#ddd\"\n };\n break;\n\n case \"active\":\n var B = {\n border: \"1px solid #666\",\n backgroundColor: \"#ccc\"\n };\n break;\n\n default:\n var B = {\n border: \"1px solid #efefef\",\n backgroundColor: \"#efefef\"\n };\n }\n\n this.border.setStyle(B).addClass(\"button-\" + A);\n },\n checkNodes: function checkNodes(A) {\n var B = A;\n\n do {\n if (this.options.tags && bkLib.inArray(this.options.tags, B.nodeName)) {\n this.activate();\n return true;\n }\n } while (B = B.parentNode && B.className != \"nicEdit\");\n\n B = $BK(A);\n\n while (B.nodeType == 3) {\n B = $BK(B.parentNode);\n }\n\n if (this.options.css) {\n for (itm in this.options.css) {\n if (B.getStyle(itm, this.ne.selectedInstance.instanceDoc) == this.options.css[itm]) {\n this.activate();\n return true;\n }\n }\n }\n\n this.deactivate();\n return false;\n },\n activate: function activate() {\n if (!this.isDisabled) {\n this.isActive = true;\n this.updateState();\n this.ne.fireEvent(\"buttonActivate\", this);\n }\n },\n deactivate: function deactivate() {\n this.isActive = false;\n this.updateState();\n\n if (!this.isDisabled) {\n this.ne.fireEvent(\"buttonDeactivate\", this);\n }\n },\n enable: function enable(A, B) {\n this.isDisabled = false;\n this.contain.setStyle({\n opacity: 1\n }).addClass(\"buttonEnabled\");\n this.updateState();\n this.checkNodes(B);\n },\n disable: function disable(A, B) {\n this.isDisabled = true;\n this.contain.setStyle({\n opacity: 0.6\n }).removeClass(\"buttonEnabled\");\n this.updateState();\n },\n toggleActive: function toggleActive() {\n this.isActive ? this.deactivate() : this.activate();\n },\n hoverOn: function hoverOn() {\n if (!this.isDisabled) {\n this.isHover = true;\n this.updateState();\n this.ne.fireEvent(\"buttonOver\", this);\n }\n },\n hoverOff: function hoverOff() {\n this.isHover = false;\n this.updateState();\n this.ne.fireEvent(\"buttonOut\", this);\n },\n mouseClick: function mouseClick() {\n if (this.options.command) {\n this.ne.nicCommand(this.options.command, this.options.commandArgs);\n\n if (!this.options.noActive) {\n this.toggleActive();\n }\n }\n\n this.ne.fireEvent(\"buttonClick\", this);\n },\n key: function key(A, B) {\n if (this.options.key && B.ctrlKey && String.fromCharCode(B.keyCode || B.charCode).toLowerCase() == this.options.key) {\n this.mouseClick();\n\n if (B.preventDefault) {\n B.preventDefault();\n }\n }\n }\n});\nvar nicPlugin = bkClass.extend({\n construct: function construct(B, A) {\n this.options = A;\n this.ne = B;\n this.ne.addEvent(\"panel\", this.loadPanel.closure(this));\n this.init();\n },\n loadPanel: function loadPanel(C) {\n var B = this.options.buttons;\n\n for (var A in B) {\n C.addButton(A, this.options);\n }\n\n C.reorder();\n },\n init: function init() {}\n});\nvar nicPaneOptions = {};\nvar nicEditorPane = bkClass.extend({\n construct: function construct(D, C, B, A) {\n this.ne = C;\n this.elm = D;\n this.pos = D.pos();\n this.contain = new bkElement(\"div\").setStyle({\n zIndex: \"99999\",\n overflow: \"hidden\",\n position: \"absolute\",\n left: this.pos[0] + \"px\",\n top: this.pos[1] + \"px\"\n });\n this.pane = new bkElement(\"div\").setStyle({\n fontSize: \"12px\",\n border: \"1px solid #ccc\",\n overflow: \"hidden\",\n padding: \"4px\",\n textAlign: \"left\",\n backgroundColor: \"#ffffc9\"\n }).addClass(\"pane\").setStyle(B).appendTo(this.contain);\n\n if (A && !A.options.noClose) {\n this.close = new bkElement(\"div\").setStyle({\n \"float\": \"right\",\n height: \"16px\",\n width: \"16px\",\n cursor: \"pointer\"\n }).setStyle(this.ne.getIcon(\"close\", nicPaneOptions)).addEvent(\"mousedown\", A.removePane.closure(this)).appendTo(this.pane);\n }\n\n this.contain.noSelect().appendTo(document.body);\n this.position();\n this.init();\n },\n init: function init() {},\n position: function position() {\n if (this.ne.nicPanel) {\n var B = this.ne.nicPanel.elm;\n var A = B.pos();\n var C = A[0] + parseInt(B.getStyle(\"width\")) - (parseInt(this.pane.getStyle(\"width\")) + 8);\n\n if (C < this.pos[0]) {\n this.contain.setStyle({\n left: C + \"px\"\n });\n }\n }\n },\n toggle: function toggle() {\n this.isVisible = !this.isVisible;\n this.contain.setStyle({\n display: this.isVisible ? \"block\" : \"none\"\n });\n },\n remove: function remove() {\n if (this.contain) {\n this.contain.remove();\n this.contain = null;\n }\n },\n append: function append(A) {\n A.appendTo(this.pane);\n },\n setContent: function setContent(A) {\n this.pane.setContent(A);\n }\n});\nvar nicEditorAdvancedButton = nicEditorButton.extend({\n init: function init() {\n this.ne.addEvent(\"selected\", this.removePane.closure(this)).addEvent(\"blur\", this.removePane.closure(this));\n },\n mouseClick: function mouseClick() {\n if (!this.isDisabled) {\n if (this.pane && this.pane.pane) {\n this.removePane();\n } else {\n this.pane = new nicEditorPane(this.contain, this.ne, {\n width: this.width || \"270px\",\n backgroundColor: \"#fff\"\n }, this);\n this.addPane();\n this.ne.selectedInstance.saveRng();\n }\n }\n },\n addForm: function addForm(C, G) {\n this.form = new bkElement(\"form\").addEvent(\"submit\", this.submit.closureListener(this));\n this.pane.append(this.form);\n this.inputs = {};\n\n for (itm in C) {\n var D = C[itm];\n var F = \"\";\n\n if (G) {\n F = G.getAttribute(itm);\n }\n\n if (!F) {\n F = D.value || \"\";\n }\n\n var A = C[itm].type;\n\n if (A == \"title\") {\n new bkElement(\"div\").setContent(D.txt).setStyle({\n fontSize: \"14px\",\n fontWeight: \"bold\",\n padding: \"0px\",\n margin: \"2px 0\"\n }).appendTo(this.form);\n } else {\n var B = new bkElement(\"div\").setStyle({\n overflow: \"hidden\",\n clear: \"both\"\n }).appendTo(this.form);\n\n if (D.txt) {\n new bkElement(\"label\").setAttributes({\n \"for\": itm\n }).setContent(D.txt).setStyle({\n margin: \"2px 4px\",\n fontSize: \"13px\",\n width: \"50px\",\n lineHeight: \"20px\",\n textAlign: \"right\",\n \"float\": \"left\"\n }).appendTo(B);\n }\n\n switch (A) {\n case \"text\":\n this.inputs[itm] = new bkElement(\"input\").setAttributes({\n id: itm,\n value: F,\n type: \"text\"\n }).setStyle({\n margin: \"2px 0\",\n fontSize: \"13px\",\n \"float\": \"left\",\n height: \"20px\",\n border: \"1px solid #ccc\",\n overflow: \"hidden\"\n }).setStyle(D.style).appendTo(B);\n break;\n\n case \"select\":\n this.inputs[itm] = new bkElement(\"select\").setAttributes({\n id: itm\n }).setStyle({\n border: \"1px solid #ccc\",\n \"float\": \"left\",\n margin: \"2px 0\"\n }).appendTo(B);\n\n for (opt in D.options) {\n var E = new bkElement(\"option\").setAttributes({\n value: opt,\n selected: opt == F ? \"selected\" : \"\"\n }).setContent(D.options[opt]).appendTo(this.inputs[itm]);\n }\n\n break;\n\n case \"content\":\n this.inputs[itm] = new bkElement(\"textarea\").setAttributes({\n id: itm\n }).setStyle({\n border: \"1px solid #ccc\",\n \"float\": \"left\"\n }).setStyle(D.style).appendTo(B);\n this.inputs[itm].value = F;\n }\n }\n }\n\n new bkElement(\"input\").setAttributes({\n type: \"submit\"\n }).setStyle({\n backgroundColor: \"#efefef\",\n border: \"1px solid #ccc\",\n margin: \"3px 0\",\n \"float\": \"left\",\n clear: \"both\"\n }).appendTo(this.form);\n this.form.onsubmit = bkLib.cancelEvent;\n },\n submit: function submit() {},\n findElm: function findElm(B, A, E) {\n var D = this.ne.selectedInstance.getElm().getElementsByTagName(B);\n\n for (var C = 0; C < D.length; C++) {\n if (D[C].getAttribute(A) == E) {\n return $BK(D[C]);\n }\n }\n },\n removePane: function removePane() {\n if (this.pane) {\n this.pane.remove();\n this.pane = null;\n this.ne.selectedInstance.restoreRng();\n }\n }\n});\nvar nicButtonTips = bkClass.extend({\n construct: function construct(A) {\n this.ne = A;\n A.addEvent(\"buttonOver\", this.show.closure(this)).addEvent(\"buttonOut\", this.hide.closure(this));\n },\n show: function show(A) {\n this.timer = setTimeout(this.create.closure(this, A), 400);\n },\n create: function create(A) {\n this.timer = null;\n\n if (!this.pane) {\n this.pane = new nicEditorPane(A.button, this.ne, {\n fontSize: \"12px\",\n marginTop: \"5px\"\n });\n this.pane.setContent(A.options.name);\n }\n },\n hide: function hide(A) {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n if (this.pane) {\n this.pane = this.pane.remove();\n }\n }\n});\nnicEditors.registerPlugin(nicButtonTips);\nvar nicSelectOptions = {\n buttons: {\n 'fontSize': {\n name: __('Select Font Size'),\n type: 'nicEditorFontSizeSelect',\n command: 'fontsize'\n },\n 'fontFamily': {\n name: __('Select Font Family'),\n type: 'nicEditorFontFamilySelect',\n command: 'fontname'\n },\n 'fontFormat': {\n name: __('Select Font Format'),\n type: 'nicEditorFontFormatSelect',\n command: 'formatBlock'\n }\n }\n};\nvar nicEditorSelect = bkClass.extend({\n construct: function construct(D, A, C, B) {\n this.options = C.buttons[A];\n this.elm = D;\n this.ne = B;\n this.name = A;\n this.selOptions = new Array();\n this.margin = new bkElement(\"div\").setStyle({\n \"float\": \"left\",\n margin: \"2px 1px 0 1px\"\n }).appendTo(this.elm);\n this.contain = new bkElement(\"div\").setStyle({\n width: \"90px\",\n height: \"20px\",\n cursor: \"pointer\",\n overflow: \"hidden\"\n }).addClass(\"selectContain\").addEvent(\"click\", this.toggle.closure(this)).appendTo(this.margin);\n this.items = new bkElement(\"div\").setStyle({\n overflow: \"hidden\",\n zoom: 1,\n border: \"1px solid #ccc\",\n paddingLeft: \"3px\",\n backgroundColor: \"#fff\"\n }).appendTo(this.contain);\n this.control = new bkElement(\"div\").setStyle({\n overflow: \"hidden\",\n \"float\": \"right\",\n height: \"18px\",\n width: \"16px\"\n }).addClass(\"selectControl\").setStyle(this.ne.getIcon(\"arrow\", C)).appendTo(this.items);\n this.txt = new bkElement(\"div\").setStyle({\n overflow: \"hidden\",\n \"float\": \"left\",\n width: \"66px\",\n height: \"14px\",\n marginTop: \"1px\",\n fontFamily: \"sans-serif\",\n textAlign: \"center\",\n fontSize: \"12px\"\n }).addClass(\"selectTxt\").appendTo(this.items);\n\n if (!window.opera) {\n this.contain.onmousedown = this.control.onmousedown = this.txt.onmousedown = bkLib.cancelEvent;\n }\n\n this.margin.noSelect();\n this.ne.addEvent(\"selected\", this.enable.closure(this)).addEvent(\"blur\", this.disable.closure(this));\n this.disable();\n this.init();\n },\n disable: function disable() {\n this.isDisabled = true;\n this.close();\n this.contain.setStyle({\n opacity: 0.6\n });\n },\n enable: function enable(A) {\n this.isDisabled = false;\n this.close();\n this.contain.setStyle({\n opacity: 1\n });\n },\n setDisplay: function setDisplay(A) {\n this.txt.setContent(A);\n },\n toggle: function toggle() {\n if (!this.isDisabled) {\n this.pane ? this.close() : this.open();\n }\n },\n open: function open() {\n this.pane = new nicEditorPane(this.items, this.ne, {\n width: \"88px\",\n padding: \"0px\",\n borderTop: 0,\n borderLeft: \"1px solid #ccc\",\n borderRight: \"1px solid #ccc\",\n borderBottom: \"0px\",\n backgroundColor: \"#fff\"\n });\n\n for (var C = 0; C < this.selOptions.length; C++) {\n var _bkElement$setStyle;\n\n var B = this.selOptions[C];\n var A = new bkElement(\"div\").setStyle((_bkElement$setStyle = {\n overflow: \"hidden\",\n borderBottom: \"1px solid #ccc\",\n width: \"88px\",\n textAlign: \"left\"\n }, _defineProperty(_bkElement$setStyle, \"overflow\", \"hidden\"), _defineProperty(_bkElement$setStyle, \"cursor\", \"pointer\"), _bkElement$setStyle));\n var D = new bkElement(\"div\").setStyle({\n padding: \"0px 4px\"\n }).setContent(B[1]).appendTo(A).noSelect();\n D.addEvent(\"click\", this.update.closure(this, B[0])).addEvent(\"mouseover\", this.over.closure(this, D)).addEvent(\"mouseout\", this.out.closure(this, D)).setAttributes(\"id\", B[0]);\n this.pane.append(A);\n\n if (!window.opera) {\n D.onmousedown = bkLib.cancelEvent;\n }\n }\n },\n close: function close() {\n if (this.pane) {\n this.pane = this.pane.remove();\n }\n },\n over: function over(A) {\n A.setStyle({\n backgroundColor: \"#ccc\"\n });\n },\n out: function out(A) {\n A.setStyle({\n backgroundColor: \"#fff\"\n });\n },\n add: function add(B, A) {\n this.selOptions.push(new Array(B, A));\n },\n update: function update(A) {\n this.ne.nicCommand(this.options.command, A);\n this.close();\n }\n});\nvar nicEditorFontSizeSelect = nicEditorSelect.extend({\n sel: {\n 1: \"1 (8pt)\",\n 2: \"2 (10pt)\",\n 3: \"3 (12pt)\",\n 4: \"4 (14pt)\",\n 5: \"5 (18pt)\",\n 6: \"6 (24pt)\"\n },\n init: function init() {\n this.setDisplay(\"Font Size...\");\n\n for (itm in this.sel) {\n this.add(itm, '<font size=\"' + itm + '\">' + this.sel[itm] + \"</font>\");\n }\n }\n});\nvar nicEditorFontFamilySelect = nicEditorSelect.extend({\n sel: {\n arial: \"Arial\",\n \"comic sans ms\": \"Comic Sans\",\n \"courier new\": \"Courier New\",\n georgia: \"Georgia\",\n helvetica: \"Helvetica\",\n impact: \"Impact\",\n \"times new roman\": \"Times\",\n \"trebuchet ms\": \"Trebuchet\",\n verdana: \"Verdana\"\n },\n init: function init() {\n this.setDisplay(\"Font Family...\");\n\n for (itm in this.sel) {\n this.add(itm, '<font face=\"' + itm + '\">' + this.sel[itm] + \"</font>\");\n }\n }\n});\nvar nicEditorFontFormatSelect = nicEditorSelect.extend({\n sel: {\n p: \"Paragraph\",\n pre: \"Pre\",\n h6: \"Heading 6\",\n h5: \"Heading 5\",\n h4: \"Heading 4\",\n h3: \"Heading 3\",\n h2: \"Heading 2\",\n h1: \"Heading 1\"\n },\n init: function init() {\n this.setDisplay(\"Font Format...\");\n\n for (itm in this.sel) {\n var A = itm.toUpperCase();\n this.add(\"<\" + A + \">\", \"<\" + itm + ' style=\"padding: 0px; margin: 0px;\">' + this.sel[itm] + \"</\" + A + \">\");\n }\n }\n});\nnicEditors.registerPlugin(nicPlugin, nicSelectOptions);\nvar nicLinkOptions = {\n buttons: {\n 'link': {\n name: 'Add Link',\n type: 'nicLinkButton',\n tags: ['A']\n },\n 'unlink': {\n name: 'Remove Link',\n command: 'unlink',\n noActive: true\n }\n }\n};\nvar nicLinkButton = nicEditorAdvancedButton.extend({\n addPane: function addPane() {\n this.ln = this.ne.selectedInstance.selElm().parentTag(\"A\");\n this.addForm({\n \"\": {\n type: \"title\",\n txt: \"Add/Edit Link\"\n },\n href: {\n type: \"text\",\n txt: \"URL\",\n value: \"http://\",\n style: {\n width: \"150px\"\n }\n },\n title: {\n type: \"text\",\n txt: \"Title\"\n },\n target: {\n type: \"select\",\n txt: \"Open In\",\n options: {\n \"\": \"Current Window\",\n _blank: \"New Window\"\n },\n style: {\n width: \"100px\"\n }\n }\n }, this.ln);\n },\n submit: function submit(C) {\n var A = this.inputs.href.value;\n\n if (A == \"http://\" || A == \"\") {\n alert(\"You must enter a URL to Create a Link\");\n return false;\n }\n\n this.removePane();\n\n if (!this.ln) {\n var B = \"javascript:nicTemp();\";\n this.ne.nicCommand(\"createlink\", B);\n this.ln = this.findElm(\"A\", \"href\", B);\n }\n\n if (this.ln) {\n this.ln.setAttributes({\n href: this.inputs.href.value,\n title: this.inputs.title.value,\n target: this.inputs.target.options[this.inputs.target.selectedIndex].value\n });\n }\n }\n});\nnicEditors.registerPlugin(nicPlugin, nicLinkOptions);\nvar nicColorOptions = {\n buttons: {\n 'forecolor': {\n name: __('Change Text Color'),\n type: 'nicEditorColorButton',\n noClose: true\n },\n 'bgcolor': {\n name: __('Change Background Color'),\n type: 'nicEditorBgColorButton',\n noClose: true\n }\n }\n};\nvar nicEditorColorButton = nicEditorAdvancedButton.extend({\n addPane: function addPane() {\n var D = {\n 0: \"00\",\n 1: \"33\",\n 2: \"66\",\n 3: \"99\",\n 4: \"CC\",\n 5: \"FF\"\n };\n var H = new bkElement(\"DIV\").setStyle({\n width: \"270px\"\n });\n\n for (var A in D) {\n for (var F in D) {\n for (var E in D) {\n var I = \"#\" + D[A] + D[E] + D[F];\n var C = new bkElement(\"DIV\").setStyle({\n cursor: \"pointer\",\n height: \"15px\",\n \"float\": \"left\"\n }).appendTo(H);\n var G = new bkElement(\"DIV\").setStyle({\n border: \"2px solid \" + I\n }).appendTo(C);\n var B = new bkElement(\"DIV\").setStyle({\n backgroundColor: I,\n overflow: \"hidden\",\n width: \"11px\",\n height: \"11px\"\n }).addEvent(\"click\", this.colorSelect.closure(this, I)).addEvent(\"mouseover\", this.on.closure(this, G)).addEvent(\"mouseout\", this.off.closure(this, G, I)).appendTo(G);\n\n if (!window.opera) {\n C.onmousedown = B.onmousedown = bkLib.cancelEvent;\n }\n }\n }\n }\n\n this.pane.append(H.noSelect());\n },\n colorSelect: function colorSelect(A) {\n this.ne.nicCommand(\"foreColor\", A);\n this.removePane();\n },\n on: function on(A) {\n A.setStyle({\n border: \"2px solid #000\"\n });\n },\n off: function off(A, B) {\n A.setStyle({\n border: \"2px solid \" + B\n });\n }\n});\nvar nicEditorBgColorButton = nicEditorColorButton.extend({\n colorSelect: function colorSelect(A) {\n this.ne.nicCommand(\"hiliteColor\", A);\n this.removePane();\n }\n});\nnicEditors.registerPlugin(nicPlugin, nicColorOptions);\nvar nicImageOptions = {\n buttons: {\n 'image': {\n name: 'Add Image',\n type: 'nicImageButton',\n tags: ['IMG']\n }\n }\n};\nvar nicImageButton = nicEditorAdvancedButton.extend({\n addPane: function addPane() {\n this.im = this.ne.selectedInstance.selElm().parentTag(\"IMG\");\n this.addForm({\n \"\": {\n type: \"title\",\n txt: \"Add/Edit Image\"\n },\n src: {\n type: \"text\",\n txt: \"URL\",\n value: \"http://\",\n style: {\n width: \"150px\"\n }\n },\n alt: {\n type: \"text\",\n txt: \"Alt Text\",\n style: {\n width: \"100px\"\n }\n },\n align: {\n type: \"select\",\n txt: \"Align\",\n options: {\n none: \"Default\",\n left: \"Left\",\n right: \"Right\"\n }\n }\n }, this.im);\n },\n submit: function submit(B) {\n var C = this.inputs.src.value;\n\n if (C == \"\" || C == \"http://\") {\n alert(\"You must enter a Image URL to insert\");\n return false;\n }\n\n this.removePane();\n\n if (!this.im) {\n var A = \"javascript:nicImTemp();\";\n this.ne.nicCommand(\"insertImage\", A);\n this.im = this.findElm(\"IMG\", \"src\", A);\n }\n\n if (this.im) {\n this.im.setAttributes({\n src: this.inputs.src.value,\n alt: this.inputs.alt.value,\n align: this.inputs.align.value\n });\n }\n }\n});\nnicEditors.registerPlugin(nicPlugin, nicImageOptions);\nvar nicSaveOptions = {\n buttons: {\n 'save': {\n name: __('Save this content'),\n type: 'nicEditorSaveButton'\n }\n }\n};\nvar nicEditorSaveButton = nicEditorButton.extend({\n init: function init() {\n if (!this.ne.options.onSave) {\n this.margin.setStyle({\n display: \"none\"\n });\n }\n },\n mouseClick: function mouseClick() {\n var B = this.ne.options.onSave;\n var A = this.ne.selectedInstance;\n B(A.getContent(), A.elm.id, A);\n }\n});\nnicEditors.registerPlugin(nicPlugin, nicSaveOptions);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvanMvbmljRWRpdC5qcz9hZmFkIl0sIm5hbWVzIjpbImJrRXh0ZW5kIiwiQSIsImFyZ3VtZW50cyIsImxlbmd0aCIsIkIiLCJia0NsYXNzIiwicHJvdG90eXBlIiwiY29uc3RydWN0IiwiZXh0ZW5kIiwiQyIsImFwcGx5IiwiYmtFbGVtZW50IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiJEJLIiwiYXBwZW5kVG8iLCJhcHBlbmRDaGlsZCIsImFwcGVuZEJlZm9yZSIsInBhcmVudE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJhZGRFdmVudCIsImJrTGliIiwic2V0Q29udGVudCIsImlubmVySFRNTCIsInBvcyIsImN1cnRvcCIsIm9iaiIsIm9mZnNldFBhcmVudCIsIm9mZnNldExlZnQiLCJvZmZzZXRUb3AiLCJ3aW5kb3ciLCJvcGVyYSIsInBhcnNlSW50IiwiZ2V0U3R5bGUiLCJzdHlsZSIsImJvcmRlciIsIm9mZnNldEhlaWdodCIsIm5vU2VsZWN0IiwicGFyZW50VGFnIiwibm9kZU5hbWUiLCJ0b1VwcGVyQ2FzZSIsImhhc0NsYXNzIiwiY2xhc3NOYW1lIiwibWF0Y2giLCJSZWdFeHAiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwicmVwbGFjZSIsInNldFN0eWxlIiwiY3NzRmxvYXQiLCJzdHlsZUZsb2F0Iiwib3BhY2l0eSIsImZpbHRlciIsIk1hdGgiLCJyb3VuZCIsImRlZmF1bHRWaWV3Iiwibm9kZVR5cGUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsImN1cnJlbnRTdHlsZSIsImNhbWVsaXplIiwicmVtb3ZlIiwicmVtb3ZlQ2hpbGQiLCJzZXRBdHRyaWJ1dGVzIiwiaXNNU0lFIiwibmF2aWdhdG9yIiwiYXBwVmVyc2lvbiIsImluZGV4T2YiLCJhZGRFdmVudExpc3RlbmVyIiwiYXR0YWNoRXZlbnQiLCJ0b0FycmF5IiwiQXJyYXkiLCJzZXRBdHRyaWJ1dGUiLCJ0b0xvd2VyQ2FzZSIsImNoaWxkTm9kZXMiLCJpbkFycmF5Iiwic2VhcmNoIiwiY2FuY2VsRXZlbnQiLCJldmVudCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiZG9tTG9hZCIsImRvbUxvYWRlZCIsImNhbGxlZSIsImRvbmUiLCJpIiwib25Eb21Mb2FkZWQiLCJwdXNoIiwid3JpdGUiLCJsb2NhdGlvbiIsInByb3RvY29sIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsIm9ubG9hZCIsImdldEVsZW1lbnRCeUlkIiwiYmtFdmVudCIsImV2ZW50TGlzdCIsImZpcmVFdmVudCIsInNoaWZ0IiwiX18iLCJGdW5jdGlvbiIsImNsb3N1cmUiLCJjb25jYXQiLCJjbG9zdXJlTGlzdGVuZXIiLCJFIiwidGFyZ2V0IiwiRCIsInNyY0VsZW1lbnQiLCJuaWNFZGl0b3JDb25maWciLCJidXR0b25zIiwibmFtZSIsImNvbW1hbmQiLCJ0YWdzIiwiY3NzIiwia2V5Iiwibm9BY3RpdmUiLCJpY29uc1BhdGgiLCJidXR0b25MaXN0IiwiaWNvbkxpc3QiLCJuaWNFZGl0b3JzIiwibmljUGx1Z2lucyIsImVkaXRvcnMiLCJyZWdpc3RlclBsdWdpbiIsInAiLCJvIiwiYWxsVGV4dEFyZWFzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJuaWNFZGl0b3IiLCJwYW5lbEluc3RhbmNlIiwiZmluZEVkaXRvciIsImluc3RhbmNlQnlJZCIsIm9wdGlvbnMiLCJuaWNJbnN0YW5jZXMiLCJsb2FkZWRQbHVnaW5zIiwiYm9keSIsInNlbGVjdENoZWNrIiwiY2hlY2tSZXBsYWNlIiwid2lkdGgiLCJjbGllbnRXaWR0aCIsInNldFBhbmVsIiwiYWRkSW5zdGFuY2UiLCJyZW1vdmVJbnN0YW5jZSIsInJlbW92ZVBhbmVsIiwiY29udGVudEVkaXRhYmxlIiwibmljRWRpdG9ySW5zdGFuY2UiLCJuaWNFZGl0b3JJRnJhbWVJbnN0YW5jZSIsImUiLCJzcGxpY2UiLCJuaWNQYW5lbCIsIm5pY0VkaXRvclBhbmVsIiwibmljQ29tbWFuZCIsInNlbGVjdGVkSW5zdGFuY2UiLCJnZXRJY29uIiwiaWNvbkZpbGVzIiwiYmFja2dyb3VuZEltYWdlIiwiYmFja2dyb3VuZFBvc2l0aW9uIiwibGFzdFNlbGVjdGVkSW5zdGFuY2UiLCJpc1NlbGVjdGVkIiwiRyIsIm5lIiwiZWxtIiwibmV3WCIsIm5ld1kiLCJjbGllbnRIZWlnaHQiLCJpbml0aWFsSGVpZ2h0IiwiSCIsImhhc1BhbmVsIiwibWF4SGVpZ2h0IiwiY29tcGF0TW9kZSIsImJvcmRlclRvcCIsIm92ZXJmbG93WSIsIm92ZXJmbG93WCIsImVkaXRvckNvbnRhaW4iLCJtYXJnaW4iLCJtaW5IZWlnaHQiLCJkaXNwbGF5IiwidmFsdWUiLCJjb3B5RWxtIiwiRiIsInNhdmVDb250ZW50IiwiaGVpZ2h0Iiwib3ZlcmZsb3ciLCJibHVyIiwiaW5pdCIsImdldENvbnRlbnQiLCJpbnN0YW5jZURvYyIsInNlbGVjdGVkIiwia2V5RG93biIsImRpc2FibGUiLCJnZXRTZWwiLCJnZXRTZWxlY3Rpb24iLCJzZWxlY3Rpb24iLCJnZXRSbmciLCJyYW5nZUNvdW50IiwiZ2V0UmFuZ2VBdCIsImNyZWF0ZVJhbmdlIiwic2VsUm5nIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJzZWxlY3QiLCJzZWxFbG0iLCJzdGFydENvbnRhaW5lciIsImNsb25lQ29udGVudHMiLCJvd25lckRvY3VtZW50Iiwic2VsZWN0Tm9kZSIsImNvbXBhcmVCb3VuZGFyeVBvaW50cyIsIlJhbmdlIiwiU1RBUlRfVE9fU1RBUlQiLCJFTkRfVE9fRU5EIiwidHlwZSIsIml0ZW0iLCJwYXJlbnRFbGVtZW50Iiwic2F2ZVJuZyIsInNhdmVkUmFuZ2UiLCJzYXZlZFNlbCIsInJlc3RvcmVSbmciLCJjdHJsS2V5IiwiaXNGb2N1c2VkIiwiZ2V0RWxtIiwiY29udGVudCIsImV4ZWNDb21tYW5kIiwic2F2ZWRTdHlsZXMiLCJpbml0aWFsQ29udGVudCIsImVsbUZyYW1lIiwic3JjIiwiZnJhbWVCb3JkZXIiLCJhbGxvd1RyYW5zcGFyZW5jeSIsInNjcm9sbGluZyIsIm9mZnNldFdpZHRoIiwiaXRtIiwic2V0VGltZW91dCIsImluaXRGcmFtZSIsImNvbnRlbnRXaW5kb3ciLCJkZXNpZ25Nb2RlIiwib3BlbiIsImV4dGVybmFsQ1NTIiwiY2xvc2UiLCJmcmFtZURvYyIsImZyYW1lV2luIiwiZnJhbWVDb250ZW50IiwiaGVpZ2h0VXBkYXRlIiwibWF4IiwicGFuZWxCdXR0b25zIiwicGFuZWxDb250YWluIiwiYmFja2dyb3VuZENvbG9yIiwicGFuZWxFbG0iLCJtYXJnaW5Ub3AiLCJ6b29tIiwiYnV0dG9uIiwiYWRkQnV0dG9uIiwicmVvcmRlciIsImJ1dHRvbk5hbWUiLCJub09yZGVyIiwiZXZhbCIsIm5pY0VkaXRvckJ1dHRvbiIsImhhc0J1dHRvbiIsImZ1bGxQYW5lbCIsImZpbmRCdXR0b24iLCJjb250YWluIiwiY3Vyc29yIiwiaG92ZXJPbiIsImhvdmVyT2ZmIiwibW91c2VDbGljayIsIm9ubW91c2Vkb3duIiwib25jbGljayIsImVuYWJsZSIsImhpZGUiLCJ1cGRhdGVTdGF0ZSIsImlzRGlzYWJsZWQiLCJzZXRCZyIsImlzSG92ZXIiLCJpc0FjdGl2ZSIsImNoZWNrTm9kZXMiLCJhY3RpdmF0ZSIsImRlYWN0aXZhdGUiLCJ0b2dnbGVBY3RpdmUiLCJjb21tYW5kQXJncyIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImtleUNvZGUiLCJjaGFyQ29kZSIsIm5pY1BsdWdpbiIsImxvYWRQYW5lbCIsIm5pY1BhbmVPcHRpb25zIiwibmljRWRpdG9yUGFuZSIsInpJbmRleCIsInBvc2l0aW9uIiwibGVmdCIsInRvcCIsInBhbmUiLCJmb250U2l6ZSIsInBhZGRpbmciLCJ0ZXh0QWxpZ24iLCJub0Nsb3NlIiwicmVtb3ZlUGFuZSIsInRvZ2dsZSIsImlzVmlzaWJsZSIsImFwcGVuZCIsIm5pY0VkaXRvckFkdmFuY2VkQnV0dG9uIiwiYWRkUGFuZSIsImFkZEZvcm0iLCJmb3JtIiwic3VibWl0IiwiaW5wdXRzIiwiZ2V0QXR0cmlidXRlIiwidHh0IiwiZm9udFdlaWdodCIsImNsZWFyIiwibGluZUhlaWdodCIsImlkIiwib3B0Iiwib25zdWJtaXQiLCJmaW5kRWxtIiwibmljQnV0dG9uVGlwcyIsInNob3ciLCJ0aW1lciIsImNyZWF0ZSIsImNsZWFyVGltZW91dCIsIm5pY1NlbGVjdE9wdGlvbnMiLCJuaWNFZGl0b3JTZWxlY3QiLCJzZWxPcHRpb25zIiwiaXRlbXMiLCJwYWRkaW5nTGVmdCIsImNvbnRyb2wiLCJmb250RmFtaWx5Iiwic2V0RGlzcGxheSIsImJvcmRlckxlZnQiLCJib3JkZXJSaWdodCIsImJvcmRlckJvdHRvbSIsInVwZGF0ZSIsIm92ZXIiLCJvdXQiLCJhZGQiLCJuaWNFZGl0b3JGb250U2l6ZVNlbGVjdCIsInNlbCIsIm5pY0VkaXRvckZvbnRGYW1pbHlTZWxlY3QiLCJhcmlhbCIsImdlb3JnaWEiLCJoZWx2ZXRpY2EiLCJpbXBhY3QiLCJ2ZXJkYW5hIiwibmljRWRpdG9yRm9udEZvcm1hdFNlbGVjdCIsInByZSIsImg2IiwiaDUiLCJoNCIsImgzIiwiaDIiLCJoMSIsIm5pY0xpbmtPcHRpb25zIiwibmljTGlua0J1dHRvbiIsImxuIiwiaHJlZiIsInRpdGxlIiwiX2JsYW5rIiwiYWxlcnQiLCJzZWxlY3RlZEluZGV4IiwibmljQ29sb3JPcHRpb25zIiwibmljRWRpdG9yQ29sb3JCdXR0b24iLCJJIiwiY29sb3JTZWxlY3QiLCJvbiIsIm9mZiIsIm5pY0VkaXRvckJnQ29sb3JCdXR0b24iLCJuaWNJbWFnZU9wdGlvbnMiLCJuaWNJbWFnZUJ1dHRvbiIsImltIiwiYWx0IiwiYWxpZ24iLCJub25lIiwicmlnaHQiLCJuaWNTYXZlT3B0aW9ucyIsIm5pY0VkaXRvclNhdmVCdXR0b24iLCJvblNhdmUiXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJQSxRQUFRLEdBQUMsU0FBVEEsUUFBUyxHQUFVO0FBQUMsTUFBSUMsQ0FBQyxHQUFDQyxT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OiIuL3Jlc291cmNlcy9qcy9uaWNFZGl0LmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogTmljRWRpdCAtIE1pY3JvIElubGluZSBXWVNJV1lHXG4gKiBDb3B5cmlnaHQgMjAwNy0yMDA4IEJyaWFuIEtpcmNob2ZmXG4gKlxuICogTmljRWRpdCBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1JVCBsaWNlbnNlXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiB2aXNpdCBodHRwOi8vbmljZWRpdC5jb20vXG4gKiBEbyBub3QgcmVtb3ZlIHRoaXMgY29weXJpZ2h0IG1lc3NhZ2VcbiAqL1xudmFyIGJrRXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIEE9YXJndW1lbnRzO2lmKEEubGVuZ3RoPT0xKXtBPVt0aGlzLEFbMF1dfWZvcih2YXIgQiBpbiBBWzFdKXtBWzBdW0JdPUFbMV1bQl19cmV0dXJuIEFbMF19O2Z1bmN0aW9uIGJrQ2xhc3MoKXt9YmtDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0PWZ1bmN0aW9uKCl7fTtia0NsYXNzLmV4dGVuZD1mdW5jdGlvbihDKXt2YXIgQT1mdW5jdGlvbigpe2lmKGFyZ3VtZW50c1swXSE9PWJrQ2xhc3Mpe3JldHVybiB0aGlzLmNvbnN0cnVjdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTt2YXIgQj1uZXcgdGhpcyhia0NsYXNzKTtia0V4dGVuZChCLEMpO0EucHJvdG90eXBlPUI7QS5leHRlbmQ9dGhpcy5leHRlbmQ7cmV0dXJuIEF9O3ZhciBia0VsZW1lbnQ9YmtDbGFzcy5leHRlbmQoe2NvbnN0cnVjdDpmdW5jdGlvbihCLEEpe2lmKHR5cGVvZiAoQik9PVwic3RyaW5nXCIpe0I9KEF8fGRvY3VtZW50KS5jcmVhdGVFbGVtZW50KEIpfUI9JEJLKEIpO3JldHVybiBCfSxhcHBlbmRUbzpmdW5jdGlvbihBKXtBLmFwcGVuZENoaWxkKHRoaXMpO3JldHVybiB0aGlzfSxhcHBlbmRCZWZvcmU6ZnVuY3Rpb24oQSl7QS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLEEpO3JldHVybiB0aGlzfSxhZGRFdmVudDpmdW5jdGlvbihCLEEpe2JrTGliLmFkZEV2ZW50KHRoaXMsQixBKTtyZXR1cm4gdGhpc30sc2V0Q29udGVudDpmdW5jdGlvbihBKXt0aGlzLmlubmVySFRNTD1BO3JldHVybiB0aGlzfSxwb3M6ZnVuY3Rpb24oKXt2YXIgQz1jdXJ0b3A9MDt2YXIgQj1vYmo9dGhpcztpZihvYmoub2Zmc2V0UGFyZW50KXtkb3tDKz1vYmoub2Zmc2V0TGVmdDtjdXJ0b3ArPW9iai5vZmZzZXRUb3B9d2hpbGUob2JqPW9iai5vZmZzZXRQYXJlbnQpfXZhciBBPSghd2luZG93Lm9wZXJhKT9wYXJzZUludCh0aGlzLmdldFN0eWxlKFwiYm9yZGVyLXdpZHRoXCIpfHx0aGlzLnN0eWxlLmJvcmRlcil8fDA6MDtyZXR1cm5bQytBLGN1cnRvcCtBK3RoaXMub2Zmc2V0SGVpZ2h0XX0sbm9TZWxlY3Q6ZnVuY3Rpb24oKXtia0xpYi5ub1NlbGVjdCh0aGlzKTtyZXR1cm4gdGhpc30scGFyZW50VGFnOmZ1bmN0aW9uKEEpe3ZhciBCPXRoaXM7ZG97aWYoQiYmQi5ub2RlTmFtZSYmQi5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT1BKXtyZXR1cm4gQn1CPUIucGFyZW50Tm9kZX13aGlsZShCKTtyZXR1cm4gZmFsc2V9LGhhc0NsYXNzOmZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLmNsYXNzTmFtZS5tYXRjaChuZXcgUmVnRXhwKFwiKFxcXFxzfF4pbmljRWRpdC1cIitBK1wiKFxcXFxzfCQpXCIpKX0sYWRkQ2xhc3M6ZnVuY3Rpb24oQSl7aWYoIXRoaXMuaGFzQ2xhc3MoQSkpe3RoaXMuY2xhc3NOYW1lKz1cIiBuaWNFZGl0LVwiK0F9cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKEEpe2lmKHRoaXMuaGFzQ2xhc3MoQSkpe3RoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lLnJlcGxhY2UobmV3IFJlZ0V4cChcIihcXFxcc3xeKW5pY0VkaXQtXCIrQStcIihcXFxcc3wkKVwiKSxcIiBcIil9cmV0dXJuIHRoaXN9LHNldFN0eWxlOmZ1bmN0aW9uKEEpe3ZhciBCPXRoaXMuc3R5bGU7Zm9yKHZhciBDIGluIEEpe3N3aXRjaChDKXtjYXNlXCJmbG9hdFwiOkIuY3NzRmxvYXQ9Qi5zdHlsZUZsb2F0PUFbQ107YnJlYWs7Y2FzZVwib3BhY2l0eVwiOkIub3BhY2l0eT1BW0NdO0IuZmlsdGVyPVwiYWxwaGEob3BhY2l0eT1cIitNYXRoLnJvdW5kKEFbQ10qMTAwKStcIilcIjticmVhaztjYXNlXCJjbGFzc05hbWVcIjp0aGlzLmNsYXNzTmFtZT1BW0NdO2JyZWFrO2RlZmF1bHQ6QltDXT1BW0NdfX1yZXR1cm4gdGhpc30sZ2V0U3R5bGU6ZnVuY3Rpb24oQSxDKXt2YXIgQj0oIUMpP2RvY3VtZW50LmRlZmF1bHRWaWV3OkM7aWYodGhpcy5ub2RlVHlwZT09MSl7cmV0dXJuKEImJkIuZ2V0Q29tcHV0ZWRTdHlsZSk/Qi5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShBKTp0aGlzLmN1cnJlbnRTdHlsZVtia0xpYi5jYW1lbGl6ZShBKV19fSxyZW1vdmU6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcyk7cmV0dXJuIHRoaXN9LHNldEF0dHJpYnV0ZXM6ZnVuY3Rpb24oQSl7Zm9yKHZhciBCIGluIEEpe3RoaXNbQl09QVtCXX1yZXR1cm4gdGhpc319KTt2YXIgYmtMaWI9e2lzTVNJRToobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIk1TSUVcIikhPS0xKSxhZGRFdmVudDpmdW5jdGlvbihDLEIsQSl7KEMuYWRkRXZlbnRMaXN0ZW5lcik/Qy5hZGRFdmVudExpc3RlbmVyKEIsQSxmYWxzZSk6Qy5hdHRhY2hFdmVudChcIm9uXCIrQixBKX0sdG9BcnJheTpmdW5jdGlvbihDKXt2YXIgQj1DLmxlbmd0aCxBPW5ldyBBcnJheShCKTt3aGlsZShCLS0pe0FbQl09Q1tCXX1yZXR1cm4gQX0sbm9TZWxlY3Q6ZnVuY3Rpb24oQil7aWYoQi5zZXRBdHRyaWJ1dGUmJkIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9XCJpbnB1dFwiJiZCLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPVwidGV4dGFyZWFcIil7Qi5zZXRBdHRyaWJ1dGUoXCJ1bnNlbGVjdGFibGVcIixcIm9uXCIpfWZvcih2YXIgQT0wO0E8Qi5jaGlsZE5vZGVzLmxlbmd0aDtBKyspe2JrTGliLm5vU2VsZWN0KEIuY2hpbGROb2Rlc1tBXSl9fSxjYW1lbGl6ZTpmdW5jdGlvbihBKXtyZXR1cm4gQS5yZXBsYWNlKC9cXC0oLikvZyxmdW5jdGlvbihCLEMpe3JldHVybiBDLnRvVXBwZXJDYXNlKCl9KX0saW5BcnJheTpmdW5jdGlvbihBLEIpe3JldHVybihia0xpYi5zZWFyY2goQSxCKSE9bnVsbCl9LHNlYXJjaDpmdW5jdGlvbihBLEMpe2Zvcih2YXIgQj0wO0I8QS5sZW5ndGg7QisrKXtpZihBW0JdPT1DKXtyZXR1cm4gQn19cmV0dXJuIG51bGx9LGNhbmNlbEV2ZW50OmZ1bmN0aW9uKEEpe0E9QXx8d2luZG93LmV2ZW50O2lmKEEucHJldmVudERlZmF1bHQmJkEuc3RvcFByb3BhZ2F0aW9uKXtBLnByZXZlbnREZWZhdWx0KCk7QS5zdG9wUHJvcGFnYXRpb24oKX1yZXR1cm4gZmFsc2V9LGRvbUxvYWQ6W10sZG9tTG9hZGVkOmZ1bmN0aW9uKCl7aWYoYXJndW1lbnRzLmNhbGxlZS5kb25lKXtyZXR1cm4gfWFyZ3VtZW50cy5jYWxsZWUuZG9uZT10cnVlO2ZvcihpPTA7aTxia0xpYi5kb21Mb2FkLmxlbmd0aDtpKyspe2JrTGliLmRvbUxvYWRbaV0oKX19LG9uRG9tTG9hZGVkOmZ1bmN0aW9uKEEpe3RoaXMuZG9tTG9hZC5wdXNoKEEpO2lmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpe2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsYmtMaWIuZG9tTG9hZGVkLG51bGwpfWVsc2V7aWYoYmtMaWIuaXNNU0lFKXtkb2N1bWVudC53cml0ZShcIjxzdHlsZT4ubmljRWRpdC1tYWluIHAgeyBtYXJnaW46IDA7IH08L3N0eWxlPjxzY3JpcHQgaWQ9X19pZV9vbmxvYWQgZGVmZXIgXCIrKChsb2NhdGlvbi5wcm90b2NvbD09XCJodHRwczpcIik/XCJzcmM9J2phdmFzY3JpcHQ6dm9pZCgwKSdcIjpcInNyYz0vLzBcIikrXCI+PFxcL3NjcmlwdD5cIik7JEJLKFwiX19pZV9vbmxvYWRcIikub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYodGhpcy5yZWFkeVN0YXRlPT1cImNvbXBsZXRlXCIpe2JrTGliLmRvbUxvYWRlZCgpfX19fXdpbmRvdy5vbmxvYWQ9YmtMaWIuZG9tTG9hZGVkfX07ZnVuY3Rpb24gJEJLKEEpe2lmKHR5cGVvZiAoQSk9PVwic3RyaW5nXCIpe0E9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoQSl9cmV0dXJuKEEmJiFBLmFwcGVuZFRvKT9ia0V4dGVuZChBLGJrRWxlbWVudC5wcm90b3R5cGUpOkF9dmFyIGJrRXZlbnQ9e2FkZEV2ZW50OmZ1bmN0aW9uKEEsQil7aWYoQil7dGhpcy5ldmVudExpc3Q9dGhpcy5ldmVudExpc3R8fHt9O3RoaXMuZXZlbnRMaXN0W0FdPXRoaXMuZXZlbnRMaXN0W0FdfHxbXTt0aGlzLmV2ZW50TGlzdFtBXS5wdXNoKEIpfXJldHVybiB0aGlzfSxmaXJlRXZlbnQ6ZnVuY3Rpb24oKXt2YXIgQT1ia0xpYi50b0FycmF5KGFyZ3VtZW50cyksQz1BLnNoaWZ0KCk7aWYodGhpcy5ldmVudExpc3QmJnRoaXMuZXZlbnRMaXN0W0NdKXtmb3IodmFyIEI9MDtCPHRoaXMuZXZlbnRMaXN0W0NdLmxlbmd0aDtCKyspe3RoaXMuZXZlbnRMaXN0W0NdW0JdLmFwcGx5KHRoaXMsQSl9fX19O2Z1bmN0aW9uIF9fKEEpe3JldHVybiBBfUZ1bmN0aW9uLnByb3RvdHlwZS5jbG9zdXJlPWZ1bmN0aW9uKCl7dmFyIEE9dGhpcyxCPWJrTGliLnRvQXJyYXkoYXJndW1lbnRzKSxDPUIuc2hpZnQoKTtyZXR1cm4gZnVuY3Rpb24oKXtpZih0eXBlb2YgKGJrTGliKSE9XCJ1bmRlZmluZWRcIil7cmV0dXJuIEEuYXBwbHkoQyxCLmNvbmNhdChia0xpYi50b0FycmF5KGFyZ3VtZW50cykpKX19fTtGdW5jdGlvbi5wcm90b3R5cGUuY2xvc3VyZUxpc3RlbmVyPWZ1bmN0aW9uKCl7dmFyIEE9dGhpcyxDPWJrTGliLnRvQXJyYXkoYXJndW1lbnRzKSxCPUMuc2hpZnQoKTtyZXR1cm4gZnVuY3Rpb24oRSl7RT1FfHx3aW5kb3cuZXZlbnQ7aWYoRS50YXJnZXQpe3ZhciBEPUUudGFyZ2V0fWVsc2V7dmFyIEQ9RS5zcmNFbGVtZW50fXJldHVybiBBLmFwcGx5KEIsW0UsRF0uY29uY2F0KEMpKX19O1xuXG5cblxudmFyIG5pY0VkaXRvckNvbmZpZyA9IGJrQ2xhc3MuZXh0ZW5kKHtcblx0YnV0dG9ucyA6IHtcblx0XHQnYm9sZCcgOiB7bmFtZSA6IF9fKCdDbGljayB0byBCb2xkJyksIGNvbW1hbmQgOiAnQm9sZCcsIHRhZ3MgOiBbJ0InLCdTVFJPTkcnXSwgY3NzIDogeydmb250LXdlaWdodCcgOiAnYm9sZCd9LCBrZXkgOiAnYid9LFxuXHRcdCdpdGFsaWMnIDoge25hbWUgOiBfXygnQ2xpY2sgdG8gSXRhbGljJyksIGNvbW1hbmQgOiAnSXRhbGljJywgdGFncyA6IFsnRU0nLCdJJ10sIGNzcyA6IHsnZm9udC1zdHlsZScgOiAnaXRhbGljJ30sIGtleSA6ICdpJ30sXG5cdFx0J3VuZGVybGluZScgOiB7bmFtZSA6IF9fKCdDbGljayB0byBVbmRlcmxpbmUnKSwgY29tbWFuZCA6ICdVbmRlcmxpbmUnLCB0YWdzIDogWydVJ10sIGNzcyA6IHsndGV4dC1kZWNvcmF0aW9uJyA6ICd1bmRlcmxpbmUnfSwga2V5IDogJ3UnfSxcblx0XHQnbGVmdCcgOiB7bmFtZSA6IF9fKCdMZWZ0IEFsaWduJyksIGNvbW1hbmQgOiAnanVzdGlmeWxlZnQnLCBub0FjdGl2ZSA6IHRydWV9LFxuXHRcdCdjZW50ZXInIDoge25hbWUgOiBfXygnQ2VudGVyIEFsaWduJyksIGNvbW1hbmQgOiAnanVzdGlmeWNlbnRlcicsIG5vQWN0aXZlIDogdHJ1ZX0sXG5cdFx0J3JpZ2h0JyA6IHtuYW1lIDogX18oJ1JpZ2h0IEFsaWduJyksIGNvbW1hbmQgOiAnanVzdGlmeXJpZ2h0Jywgbm9BY3RpdmUgOiB0cnVlfSxcblx0XHQnanVzdGlmeScgOiB7bmFtZSA6IF9fKCdKdXN0aWZ5IEFsaWduJyksIGNvbW1hbmQgOiAnanVzdGlmeWZ1bGwnLCBub0FjdGl2ZSA6IHRydWV9LFxuXHRcdCdvbCcgOiB7bmFtZSA6IF9fKCdJbnNlcnQgT3JkZXJlZCBMaXN0JyksIGNvbW1hbmQgOiAnaW5zZXJ0b3JkZXJlZGxpc3QnLCB0YWdzIDogWydPTCddfSxcblx0XHQndWwnIDogXHR7bmFtZSA6IF9fKCdJbnNlcnQgVW5vcmRlcmVkIExpc3QnKSwgY29tbWFuZCA6ICdpbnNlcnR1bm9yZGVyZWRsaXN0JywgdGFncyA6IFsnVUwnXX0sXG5cdFx0J3N1YnNjcmlwdCcgOiB7bmFtZSA6IF9fKCdDbGljayB0byBTdWJzY3JpcHQnKSwgY29tbWFuZCA6ICdzdWJzY3JpcHQnLCB0YWdzIDogWydTVUInXX0sXG5cdFx0J3N1cGVyc2NyaXB0JyA6IHtuYW1lIDogX18oJ0NsaWNrIHRvIFN1cGVyc2NyaXB0JyksIGNvbW1hbmQgOiAnc3VwZXJzY3JpcHQnLCB0YWdzIDogWydTVVAnXX0sXG5cdFx0J3N0cmlrZXRocm91Z2gnIDoge25hbWUgOiBfXygnQ2xpY2sgdG8gU3RyaWtlIFRocm91Z2gnKSwgY29tbWFuZCA6ICdzdHJpa2VUaHJvdWdoJywgY3NzIDogeyd0ZXh0LWRlY29yYXRpb24nIDogJ2xpbmUtdGhyb3VnaCd9fSxcblx0XHQncmVtb3ZlZm9ybWF0JyA6IHtuYW1lIDogX18oJ1JlbW92ZSBGb3JtYXR0aW5nJyksIGNvbW1hbmQgOiAncmVtb3ZlZm9ybWF0Jywgbm9BY3RpdmUgOiB0cnVlfSxcblx0XHQnaW5kZW50JyA6IHtuYW1lIDogX18oJ0luZGVudCBUZXh0JyksIGNvbW1hbmQgOiAnaW5kZW50Jywgbm9BY3RpdmUgOiB0cnVlfSxcblx0XHQnb3V0ZGVudCcgOiB7bmFtZSA6IF9fKCdSZW1vdmUgSW5kZW50JyksIGNvbW1hbmQgOiAnb3V0ZGVudCcsIG5vQWN0aXZlIDogdHJ1ZX0sXG5cdFx0J2hyJyA6IHtuYW1lIDogX18oJ0hvcml6b250YWwgUnVsZScpLCBjb21tYW5kIDogJ2luc2VydEhvcml6b250YWxSdWxlJywgbm9BY3RpdmUgOiB0cnVlfVxuXHR9LFxuXHRpY29uc1BhdGggOiAnLi4vbmljRWRpdG9ySWNvbnMuZ2lmJyxcblx0YnV0dG9uTGlzdCA6IFsnc2F2ZScsJ2JvbGQnLCdpdGFsaWMnLCd1bmRlcmxpbmUnLCdsZWZ0JywnY2VudGVyJywncmlnaHQnLCdqdXN0aWZ5Jywnb2wnLCd1bCcsJ2ZvbnRTaXplJywnZm9udEZhbWlseScsJ2ZvbnRGb3JtYXQnLCdpbmRlbnQnLCdvdXRkZW50JywnaW1hZ2UnLCd1cGxvYWQnLCdsaW5rJywndW5saW5rJywnZm9yZWNvbG9yJywnYmdjb2xvciddLFxuXHRpY29uTGlzdCA6IHtcImJnY29sb3JcIjoxLFwiZm9yZWNvbG9yXCI6MixcImJvbGRcIjozLFwiY2VudGVyXCI6NCxcImhyXCI6NSxcImluZGVudFwiOjYsXCJpdGFsaWNcIjo3LFwianVzdGlmeVwiOjgsXCJsZWZ0XCI6OSxcIm9sXCI6MTAsXCJvdXRkZW50XCI6MTEsXCJyZW1vdmVmb3JtYXRcIjoxMixcInJpZ2h0XCI6MTMsXCJzYXZlXCI6MjQsXCJzdHJpa2V0aHJvdWdoXCI6MTUsXCJzdWJzY3JpcHRcIjoxNixcInN1cGVyc2NyaXB0XCI6MTcsXCJ1bFwiOjE4LFwidW5kZXJsaW5lXCI6MTksXCJpbWFnZVwiOjIwLFwibGlua1wiOjIxLFwidW5saW5rXCI6MjIsXCJjbG9zZVwiOjIzLFwiYXJyb3dcIjoyNX1cblx0XG59KTtcbjtcbnZhciBuaWNFZGl0b3JzPXtuaWNQbHVnaW5zOltdLGVkaXRvcnM6W10scmVnaXN0ZXJQbHVnaW46ZnVuY3Rpb24oQixBKXt0aGlzLm5pY1BsdWdpbnMucHVzaCh7cDpCLG86QX0pfSxhbGxUZXh0QXJlYXM6ZnVuY3Rpb24oQyl7dmFyIEE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0ZXh0YXJlYVwiKTtmb3IodmFyIEI9MDtCPEEubGVuZ3RoO0IrKyl7bmljRWRpdG9ycy5lZGl0b3JzLnB1c2gobmV3IG5pY0VkaXRvcihDKS5wYW5lbEluc3RhbmNlKEFbQl0pKX1yZXR1cm4gbmljRWRpdG9ycy5lZGl0b3JzfSxmaW5kRWRpdG9yOmZ1bmN0aW9uKEMpe3ZhciBCPW5pY0VkaXRvcnMuZWRpdG9ycztmb3IodmFyIEE9MDtBPEIubGVuZ3RoO0ErKyl7aWYoQltBXS5pbnN0YW5jZUJ5SWQoQykpe3JldHVybiBCW0FdLmluc3RhbmNlQnlJZChDKX19fX07dmFyIG5pY0VkaXRvcj1ia0NsYXNzLmV4dGVuZCh7Y29uc3RydWN0OmZ1bmN0aW9uKEMpe3RoaXMub3B0aW9ucz1uZXcgbmljRWRpdG9yQ29uZmlnKCk7YmtFeHRlbmQodGhpcy5vcHRpb25zLEMpO3RoaXMubmljSW5zdGFuY2VzPW5ldyBBcnJheSgpO3RoaXMubG9hZGVkUGx1Z2lucz1uZXcgQXJyYXkoKTt2YXIgQT1uaWNFZGl0b3JzLm5pY1BsdWdpbnM7Zm9yKHZhciBCPTA7QjxBLmxlbmd0aDtCKyspe3RoaXMubG9hZGVkUGx1Z2lucy5wdXNoKG5ldyBBW0JdLnAodGhpcyxBW0JdLm8pKX1uaWNFZGl0b3JzLmVkaXRvcnMucHVzaCh0aGlzKTtia0xpYi5hZGRFdmVudChkb2N1bWVudC5ib2R5LFwibW91c2Vkb3duXCIsdGhpcy5zZWxlY3RDaGVjay5jbG9zdXJlTGlzdGVuZXIodGhpcykpfSxwYW5lbEluc3RhbmNlOmZ1bmN0aW9uKEIsQyl7Qj10aGlzLmNoZWNrUmVwbGFjZSgkQksoQikpO3ZhciBBPW5ldyBia0VsZW1lbnQoXCJESVZcIikuc2V0U3R5bGUoe3dpZHRoOihwYXJzZUludChCLmdldFN0eWxlKFwid2lkdGhcIikpfHxCLmNsaWVudFdpZHRoKStcInB4XCJ9KS5hcHBlbmRCZWZvcmUoQik7dGhpcy5zZXRQYW5lbChBKTtyZXR1cm4gdGhpcy5hZGRJbnN0YW5jZShCLEMpfSxjaGVja1JlcGxhY2U6ZnVuY3Rpb24oQil7dmFyIEE9bmljRWRpdG9ycy5maW5kRWRpdG9yKEIpO2lmKEEpe0EucmVtb3ZlSW5zdGFuY2UoQik7QS5yZW1vdmVQYW5lbCgpfXJldHVybiBCfSxhZGRJbnN0YW5jZTpmdW5jdGlvbihCLEMpe0I9dGhpcy5jaGVja1JlcGxhY2UoJEJLKEIpKTtpZihCLmNvbnRlbnRFZGl0YWJsZXx8ISF3aW5kb3cub3BlcmEpe3ZhciBBPW5ldyBuaWNFZGl0b3JJbnN0YW5jZShCLEMsdGhpcyl9ZWxzZXt2YXIgQT1uZXcgbmljRWRpdG9ySUZyYW1lSW5zdGFuY2UoQixDLHRoaXMpfXRoaXMubmljSW5zdGFuY2VzLnB1c2goQSk7cmV0dXJuIHRoaXN9LHJlbW92ZUluc3RhbmNlOmZ1bmN0aW9uKEMpe0M9JEJLKEMpO3ZhciBCPXRoaXMubmljSW5zdGFuY2VzO2Zvcih2YXIgQT0wO0E8Qi5sZW5ndGg7QSsrKXtpZihCW0FdLmU9PUMpe0JbQV0ucmVtb3ZlKCk7dGhpcy5uaWNJbnN0YW5jZXMuc3BsaWNlKEEsMSl9fX0scmVtb3ZlUGFuZWw6ZnVuY3Rpb24oQSl7aWYodGhpcy5uaWNQYW5lbCl7dGhpcy5uaWNQYW5lbC5yZW1vdmUoKTt0aGlzLm5pY1BhbmVsPW51bGx9fSxpbnN0YW5jZUJ5SWQ6ZnVuY3Rpb24oQyl7Qz0kQksoQyk7dmFyIEI9dGhpcy5uaWNJbnN0YW5jZXM7Zm9yKHZhciBBPTA7QTxCLmxlbmd0aDtBKyspe2lmKEJbQV0uZT09Qyl7cmV0dXJuIEJbQV19fX0sc2V0UGFuZWw6ZnVuY3Rpb24oQSl7dGhpcy5uaWNQYW5lbD1uZXcgbmljRWRpdG9yUGFuZWwoJEJLKEEpLHRoaXMub3B0aW9ucyx0aGlzKTt0aGlzLmZpcmVFdmVudChcInBhbmVsXCIsdGhpcy5uaWNQYW5lbCk7cmV0dXJuIHRoaXN9LG5pY0NvbW1hbmQ6ZnVuY3Rpb24oQixBKXtpZih0aGlzLnNlbGVjdGVkSW5zdGFuY2Upe3RoaXMuc2VsZWN0ZWRJbnN0YW5jZS5uaWNDb21tYW5kKEIsQSl9fSxnZXRJY29uOmZ1bmN0aW9uKEQsQSl7dmFyIEM9dGhpcy5vcHRpb25zLmljb25MaXN0W0RdO3ZhciBCPShBLmljb25GaWxlcyk/QS5pY29uRmlsZXNbRF06XCJcIjtyZXR1cm57YmFja2dyb3VuZEltYWdlOlwidXJsKCdcIisoKEMpP3RoaXMub3B0aW9ucy5pY29uc1BhdGg6QikrXCInKVwiLGJhY2tncm91bmRQb3NpdGlvbjooKEMpPygoQy0xKSotMTgpOjApK1wicHggMHB4XCJ9fSxzZWxlY3RDaGVjazpmdW5jdGlvbihDLEEpe3ZhciBCPWZhbHNlO2Rve2lmKEEuY2xhc3NOYW1lJiZBLmNsYXNzTmFtZS5pbmRleE9mKFwibmljRWRpdFwiKSE9LTEpe3JldHVybiBmYWxzZX19d2hpbGUoQT1BLnBhcmVudE5vZGUpO3RoaXMuZmlyZUV2ZW50KFwiYmx1clwiLHRoaXMuc2VsZWN0ZWRJbnN0YW5jZSxBKTt0aGlzLmxhc3RTZWxlY3RlZEluc3RhbmNlPXRoaXMuc2VsZWN0ZWRJbnN0YW5jZTt0aGlzLnNlbGVjdGVkSW5zdGFuY2U9bnVsbDtyZXR1cm4gZmFsc2V9fSk7bmljRWRpdG9yPW5pY0VkaXRvci5leHRlbmQoYmtFdmVudCk7XG52YXIgbmljRWRpdG9ySW5zdGFuY2U9YmtDbGFzcy5leHRlbmQoe2lzU2VsZWN0ZWQ6ZmFsc2UsY29uc3RydWN0OmZ1bmN0aW9uKEcsRCxDKXt0aGlzLm5lPUM7dGhpcy5lbG09dGhpcy5lPUc7dGhpcy5vcHRpb25zPUR8fHt9O25ld1g9cGFyc2VJbnQoRy5nZXRTdHlsZShcIndpZHRoXCIpKXx8Ry5jbGllbnRXaWR0aDtuZXdZPXBhcnNlSW50KEcuZ2V0U3R5bGUoXCJoZWlnaHRcIikpfHxHLmNsaWVudEhlaWdodDt0aGlzLmluaXRpYWxIZWlnaHQ9bmV3WS04O3ZhciBIPShHLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PVwidGV4dGFyZWFcIik7aWYoSHx8dGhpcy5vcHRpb25zLmhhc1BhbmVsKXt2YXIgQj0oYmtMaWIuaXNNU0lFJiYhKCh0eXBlb2YgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXhIZWlnaHQhPVwidW5kZWZpbmVkXCIpJiZkb2N1bWVudC5jb21wYXRNb2RlPT1cIkNTUzFDb21wYXRcIikpO3ZhciBFPXt3aWR0aDpuZXdYK1wicHhcIixib3JkZXI6XCIxcHggc29saWQgI2NjY1wiLGJvcmRlclRvcDowLG92ZXJmbG93WTpcImF1dG9cIixvdmVyZmxvd1g6XCJoaWRkZW5cIn07RVsoQik/XCJoZWlnaHRcIjpcIm1heEhlaWdodFwiXT0odGhpcy5uZS5vcHRpb25zLm1heEhlaWdodCk/dGhpcy5uZS5vcHRpb25zLm1heEhlaWdodCtcInB4XCI6bnVsbDt0aGlzLmVkaXRvckNvbnRhaW49bmV3IGJrRWxlbWVudChcIkRJVlwiKS5zZXRTdHlsZShFKS5hcHBlbmRCZWZvcmUoRyk7dmFyIEE9bmV3IGJrRWxlbWVudChcIkRJVlwiKS5zZXRTdHlsZSh7d2lkdGg6KG5ld1gtOCkrXCJweFwiLG1hcmdpbjpcIjRweFwiLG1pbkhlaWdodDpuZXdZK1wicHhcIn0pLmFkZENsYXNzKFwibWFpblwiKS5hcHBlbmRUbyh0aGlzLmVkaXRvckNvbnRhaW4pO0cuc2V0U3R5bGUoe2Rpc3BsYXk6XCJub25lXCJ9KTtBLmlubmVySFRNTD1HLmlubmVySFRNTDtpZihIKXtBLnNldENvbnRlbnQoRy52YWx1ZSk7dGhpcy5jb3B5RWxtPUc7dmFyIEY9Ry5wYXJlbnRUYWcoXCJGT1JNXCIpO2lmKEYpe2JrTGliLmFkZEV2ZW50KEYsXCJzdWJtaXRcIix0aGlzLnNhdmVDb250ZW50LmNsb3N1cmUodGhpcykpfX1BLnNldFN0eWxlKChCKT97aGVpZ2h0Om5ld1krXCJweFwifTp7b3ZlcmZsb3c6XCJoaWRkZW5cIn0pO3RoaXMuZWxtPUF9dGhpcy5uZS5hZGRFdmVudChcImJsdXJcIix0aGlzLmJsdXIuY2xvc3VyZSh0aGlzKSk7dGhpcy5pbml0KCk7dGhpcy5ibHVyKCl9LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLmVsbS5zZXRBdHRyaWJ1dGUoXCJjb250ZW50RWRpdGFibGVcIixcInRydWVcIik7aWYodGhpcy5nZXRDb250ZW50KCk9PVwiXCIpe3RoaXMuc2V0Q29udGVudChcIjxiciAvPlwiKX10aGlzLmluc3RhbmNlRG9jPWRvY3VtZW50LmRlZmF1bHRWaWV3O3RoaXMuZWxtLmFkZEV2ZW50KFwibW91c2Vkb3duXCIsdGhpcy5zZWxlY3RlZC5jbG9zdXJlTGlzdGVuZXIodGhpcykpLmFkZEV2ZW50KFwia2V5cHJlc3NcIix0aGlzLmtleURvd24uY2xvc3VyZUxpc3RlbmVyKHRoaXMpKS5hZGRFdmVudChcImZvY3VzXCIsdGhpcy5zZWxlY3RlZC5jbG9zdXJlKHRoaXMpKS5hZGRFdmVudChcImJsdXJcIix0aGlzLmJsdXIuY2xvc3VyZSh0aGlzKSkuYWRkRXZlbnQoXCJrZXl1cFwiLHRoaXMuc2VsZWN0ZWQuY2xvc3VyZSh0aGlzKSk7dGhpcy5uZS5maXJlRXZlbnQoXCJhZGRcIix0aGlzKX0scmVtb3ZlOmZ1bmN0aW9uKCl7dGhpcy5zYXZlQ29udGVudCgpO2lmKHRoaXMuY29weUVsbXx8dGhpcy5vcHRpb25zLmhhc1BhbmVsKXt0aGlzLmVkaXRvckNvbnRhaW4ucmVtb3ZlKCk7dGhpcy5lLnNldFN0eWxlKHtkaXNwbGF5OlwiYmxvY2tcIn0pO3RoaXMubmUucmVtb3ZlUGFuZWwoKX10aGlzLmRpc2FibGUoKTt0aGlzLm5lLmZpcmVFdmVudChcInJlbW92ZVwiLHRoaXMpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbG0uc2V0QXR0cmlidXRlKFwiY29udGVudEVkaXRhYmxlXCIsXCJmYWxzZVwiKX0sZ2V0U2VsOmZ1bmN0aW9uKCl7cmV0dXJuKHdpbmRvdy5nZXRTZWxlY3Rpb24pP3dpbmRvdy5nZXRTZWxlY3Rpb24oKTpkb2N1bWVudC5zZWxlY3Rpb259LGdldFJuZzpmdW5jdGlvbigpe3ZhciBBPXRoaXMuZ2V0U2VsKCk7aWYoIUF8fEEucmFuZ2VDb3VudD09PTApe3JldHVybiB9cmV0dXJuKEEucmFuZ2VDb3VudD4wKT9BLmdldFJhbmdlQXQoMCk6QS5jcmVhdGVSYW5nZSgpfSxzZWxSbmc6ZnVuY3Rpb24oQSxCKXtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXtCLnJlbW92ZUFsbFJhbmdlcygpO0IuYWRkUmFuZ2UoQSl9ZWxzZXtBLnNlbGVjdCgpfX0sc2VsRWxtOmZ1bmN0aW9uKCl7dmFyIEM9dGhpcy5nZXRSbmcoKTtpZighQyl7cmV0dXJuIH1pZihDLnN0YXJ0Q29udGFpbmVyKXt2YXIgRD1DLnN0YXJ0Q29udGFpbmVyO2lmKEMuY2xvbmVDb250ZW50cygpLmNoaWxkTm9kZXMubGVuZ3RoPT0xKXtmb3IodmFyIEI9MDtCPEQuY2hpbGROb2Rlcy5sZW5ndGg7QisrKXt2YXIgQT1ELmNoaWxkTm9kZXNbQl0ub3duZXJEb2N1bWVudC5jcmVhdGVSYW5nZSgpO0Euc2VsZWN0Tm9kZShELmNoaWxkTm9kZXNbQl0pO2lmKEMuY29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlLlNUQVJUX1RPX1NUQVJULEEpIT0xJiZDLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5FTkRfVE9fRU5ELEEpIT0tMSl7cmV0dXJuICRCSyhELmNoaWxkTm9kZXNbQl0pfX19cmV0dXJuICRCSyhEKX1lbHNle3JldHVybiAkQksoKHRoaXMuZ2V0U2VsKCkudHlwZT09XCJDb250cm9sXCIpP0MuaXRlbSgwKTpDLnBhcmVudEVsZW1lbnQoKSl9fSxzYXZlUm5nOmZ1bmN0aW9uKCl7dGhpcy5zYXZlZFJhbmdlPXRoaXMuZ2V0Um5nKCk7dGhpcy5zYXZlZFNlbD10aGlzLmdldFNlbCgpfSxyZXN0b3JlUm5nOmZ1bmN0aW9uKCl7aWYodGhpcy5zYXZlZFJhbmdlKXt0aGlzLnNlbFJuZyh0aGlzLnNhdmVkUmFuZ2UsdGhpcy5zYXZlZFNlbCl9fSxrZXlEb3duOmZ1bmN0aW9uKEIsQSl7aWYoQi5jdHJsS2V5KXt0aGlzLm5lLmZpcmVFdmVudChcImtleVwiLHRoaXMsQil9fSxzZWxlY3RlZDpmdW5jdGlvbihDLEEpe2lmKCFBJiYhKEE9dGhpcy5zZWxFbG0pKXtBPXRoaXMuc2VsRWxtKCl9aWYoIUMuY3RybEtleSl7dmFyIEI9dGhpcy5uZS5zZWxlY3RlZEluc3RhbmNlO2lmKEIhPXRoaXMpe2lmKEIpe3RoaXMubmUuZmlyZUV2ZW50KFwiYmx1clwiLEIsQSl9dGhpcy5uZS5zZWxlY3RlZEluc3RhbmNlPXRoaXM7dGhpcy5uZS5maXJlRXZlbnQoXCJmb2N1c1wiLEIsQSl9dGhpcy5uZS5maXJlRXZlbnQoXCJzZWxlY3RlZFwiLEIsQSk7dGhpcy5pc0ZvY3VzZWQ9dHJ1ZTt0aGlzLmVsbS5hZGRDbGFzcyhcInNlbGVjdGVkXCIpfXJldHVybiBmYWxzZX0sYmx1cjpmdW5jdGlvbigpe3RoaXMuaXNGb2N1c2VkPWZhbHNlO3RoaXMuZWxtLnJlbW92ZUNsYXNzKFwic2VsZWN0ZWRcIil9LHNhdmVDb250ZW50OmZ1bmN0aW9uKCl7aWYodGhpcy5jb3B5RWxtfHx0aGlzLm9wdGlvbnMuaGFzUGFuZWwpe3RoaXMubmUuZmlyZUV2ZW50KFwic2F2ZVwiLHRoaXMpOyh0aGlzLmNvcHlFbG0pP3RoaXMuY29weUVsbS52YWx1ZT10aGlzLmdldENvbnRlbnQoKTp0aGlzLmUuaW5uZXJIVE1MPXRoaXMuZ2V0Q29udGVudCgpfX0sZ2V0RWxtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxtfSxnZXRDb250ZW50OmZ1bmN0aW9uKCl7dGhpcy5jb250ZW50PXRoaXMuZ2V0RWxtKCkuaW5uZXJIVE1MO3RoaXMubmUuZmlyZUV2ZW50KFwiZ2V0XCIsdGhpcyk7cmV0dXJuIHRoaXMuY29udGVudH0sc2V0Q29udGVudDpmdW5jdGlvbihBKXt0aGlzLmNvbnRlbnQ9QTt0aGlzLm5lLmZpcmVFdmVudChcInNldFwiLHRoaXMpO3RoaXMuZWxtLmlubmVySFRNTD10aGlzLmNvbnRlbnR9LG5pY0NvbW1hbmQ6ZnVuY3Rpb24oQixBKXtkb2N1bWVudC5leGVjQ29tbWFuZChCLGZhbHNlLEEpfX0pO1xudmFyIG5pY0VkaXRvcklGcmFtZUluc3RhbmNlPW5pY0VkaXRvckluc3RhbmNlLmV4dGVuZCh7c2F2ZWRTdHlsZXM6W10saW5pdDpmdW5jdGlvbigpe3ZhciBCPXRoaXMuZWxtLmlubmVySFRNTC5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLFwiXCIpO3RoaXMuZWxtLmlubmVySFRNTD1cIlwiOyghQik/Qj1cIjxiciAvPlwiOkI7dGhpcy5pbml0aWFsQ29udGVudD1CO3RoaXMuZWxtRnJhbWU9bmV3IGJrRWxlbWVudChcImlmcmFtZVwiKS5zZXRBdHRyaWJ1dGVzKHtzcmM6XCJqYXZhc2NyaXB0OjtcIixmcmFtZUJvcmRlcjowLGFsbG93VHJhbnNwYXJlbmN5OlwidHJ1ZVwiLHNjcm9sbGluZzpcIm5vXCJ9KS5zZXRTdHlsZSh7aGVpZ2h0OlwiMTAwcHhcIix3aWR0aDpcIjEwMCVcIn0pLmFkZENsYXNzKFwiZnJhbWVcIikuYXBwZW5kVG8odGhpcy5lbG0pO2lmKHRoaXMuY29weUVsbSl7dGhpcy5lbG1GcmFtZS5zZXRTdHlsZSh7d2lkdGg6KHRoaXMuZWxtLm9mZnNldFdpZHRoLTQpK1wicHhcIn0pfXZhciBBPVtcImZvbnQtc2l6ZVwiLFwiZm9udC1mYW1pbHlcIixcImZvbnQtd2VpZ2h0XCIsXCJjb2xvclwiXTtmb3IoaXRtIGluIEEpe3RoaXMuc2F2ZWRTdHlsZXNbYmtMaWIuY2FtZWxpemUoaXRtKV09dGhpcy5lbG0uZ2V0U3R5bGUoaXRtKX1zZXRUaW1lb3V0KHRoaXMuaW5pdEZyYW1lLmNsb3N1cmUodGhpcyksNTApfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbG0uaW5uZXJIVE1MPXRoaXMuZ2V0Q29udGVudCgpfSxpbml0RnJhbWU6ZnVuY3Rpb24oKXt2YXIgQj0kQksodGhpcy5lbG1GcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50KTtCLmRlc2lnbk1vZGU9XCJvblwiO0Iub3BlbigpO3ZhciBBPXRoaXMubmUub3B0aW9ucy5leHRlcm5hbENTUztCLndyaXRlKFwiPGh0bWw+PGhlYWQ+XCIrKChBKT8nPGxpbmsgaHJlZj1cIicrQSsnXCIgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIC8+JzpcIlwiKSsnPC9oZWFkPjxib2R5IGlkPVwibmljRWRpdENvbnRlbnRcIiBzdHlsZT1cIm1hcmdpbjogMCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1wiPicrdGhpcy5pbml0aWFsQ29udGVudCtcIjwvYm9keT48L2h0bWw+XCIpO0IuY2xvc2UoKTt0aGlzLmZyYW1lRG9jPUI7dGhpcy5mcmFtZVdpbj0kQksodGhpcy5lbG1GcmFtZS5jb250ZW50V2luZG93KTt0aGlzLmZyYW1lQ29udGVudD0kQksodGhpcy5mcmFtZVdpbi5kb2N1bWVudC5ib2R5KS5zZXRTdHlsZSh0aGlzLnNhdmVkU3R5bGVzKTt0aGlzLmluc3RhbmNlRG9jPXRoaXMuZnJhbWVXaW4uZG9jdW1lbnQuZGVmYXVsdFZpZXc7dGhpcy5oZWlnaHRVcGRhdGUoKTt0aGlzLmZyYW1lRG9jLmFkZEV2ZW50KFwibW91c2Vkb3duXCIsdGhpcy5zZWxlY3RlZC5jbG9zdXJlTGlzdGVuZXIodGhpcykpLmFkZEV2ZW50KFwia2V5dXBcIix0aGlzLmhlaWdodFVwZGF0ZS5jbG9zdXJlTGlzdGVuZXIodGhpcykpLmFkZEV2ZW50KFwia2V5ZG93blwiLHRoaXMua2V5RG93bi5jbG9zdXJlTGlzdGVuZXIodGhpcykpLmFkZEV2ZW50KFwia2V5dXBcIix0aGlzLnNlbGVjdGVkLmNsb3N1cmUodGhpcykpO3RoaXMubmUuZmlyZUV2ZW50KFwiYWRkXCIsdGhpcyl9LGdldEVsbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZyYW1lQ29udGVudH0sc2V0Q29udGVudDpmdW5jdGlvbihBKXt0aGlzLmNvbnRlbnQ9QTt0aGlzLm5lLmZpcmVFdmVudChcInNldFwiLHRoaXMpO3RoaXMuZnJhbWVDb250ZW50LmlubmVySFRNTD10aGlzLmNvbnRlbnQ7dGhpcy5oZWlnaHRVcGRhdGUoKX0sZ2V0U2VsOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuZnJhbWVXaW4pP3RoaXMuZnJhbWVXaW4uZ2V0U2VsZWN0aW9uKCk6dGhpcy5mcmFtZURvYy5zZWxlY3Rpb259LGhlaWdodFVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuZWxtRnJhbWUuc3R5bGUuaGVpZ2h0PU1hdGgubWF4KHRoaXMuZnJhbWVDb250ZW50Lm9mZnNldEhlaWdodCx0aGlzLmluaXRpYWxIZWlnaHQpK1wicHhcIn0sbmljQ29tbWFuZDpmdW5jdGlvbihCLEEpe3RoaXMuZnJhbWVEb2MuZXhlY0NvbW1hbmQoQixmYWxzZSxBKTtzZXRUaW1lb3V0KHRoaXMuaGVpZ2h0VXBkYXRlLmNsb3N1cmUodGhpcyksMTAwKX19KTtcbnZhciBuaWNFZGl0b3JQYW5lbD1ia0NsYXNzLmV4dGVuZCh7Y29uc3RydWN0OmZ1bmN0aW9uKEUsQixBKXt0aGlzLmVsbT1FO3RoaXMub3B0aW9ucz1CO3RoaXMubmU9QTt0aGlzLnBhbmVsQnV0dG9ucz1uZXcgQXJyYXkoKTt0aGlzLmJ1dHRvbkxpc3Q9YmtFeHRlbmQoW10sdGhpcy5uZS5vcHRpb25zLmJ1dHRvbkxpc3QpO3RoaXMucGFuZWxDb250YWluPW5ldyBia0VsZW1lbnQoXCJESVZcIikuc2V0U3R5bGUoe292ZXJmbG93OlwiaGlkZGVuXCIsd2lkdGg6XCIxMDAlXCIsYm9yZGVyOlwiMXB4IHNvbGlkICNjY2NjY2NcIixiYWNrZ3JvdW5kQ29sb3I6XCIjZWZlZmVmXCJ9KS5hZGRDbGFzcyhcInBhbmVsQ29udGFpblwiKTt0aGlzLnBhbmVsRWxtPW5ldyBia0VsZW1lbnQoXCJESVZcIikuc2V0U3R5bGUoe21hcmdpbjpcIjJweFwiLG1hcmdpblRvcDpcIjBweFwiLHpvb206MSxvdmVyZmxvdzpcImhpZGRlblwifSkuYWRkQ2xhc3MoXCJwYW5lbFwiKS5hcHBlbmRUbyh0aGlzLnBhbmVsQ29udGFpbik7dGhpcy5wYW5lbENvbnRhaW4uYXBwZW5kVG8oRSk7dmFyIEM9dGhpcy5uZS5vcHRpb25zO3ZhciBEPUMuYnV0dG9ucztmb3IoYnV0dG9uIGluIEQpe3RoaXMuYWRkQnV0dG9uKGJ1dHRvbixDLHRydWUpfXRoaXMucmVvcmRlcigpO0Uubm9TZWxlY3QoKX0sYWRkQnV0dG9uOmZ1bmN0aW9uKGJ1dHRvbk5hbWUsb3B0aW9ucyxub09yZGVyKXt2YXIgYnV0dG9uPW9wdGlvbnMuYnV0dG9uc1tidXR0b25OYW1lXTt2YXIgdHlwZT0oYnV0dG9uLnR5cGUpP2V2YWwoXCIodHlwZW9mKFwiK2J1dHRvbi50eXBlKycpID09IFwidW5kZWZpbmVkXCIpID8gbnVsbCA6ICcrYnV0dG9uLnR5cGUrXCI7XCIpOm5pY0VkaXRvckJ1dHRvbjt2YXIgaGFzQnV0dG9uPWJrTGliLmluQXJyYXkodGhpcy5idXR0b25MaXN0LGJ1dHRvbk5hbWUpO2lmKHR5cGUmJihoYXNCdXR0b258fHRoaXMubmUub3B0aW9ucy5mdWxsUGFuZWwpKXt0aGlzLnBhbmVsQnV0dG9ucy5wdXNoKG5ldyB0eXBlKHRoaXMucGFuZWxFbG0sYnV0dG9uTmFtZSxvcHRpb25zLHRoaXMubmUpKTtpZighaGFzQnV0dG9uKXt0aGlzLmJ1dHRvbkxpc3QucHVzaChidXR0b25OYW1lKX19fSxmaW5kQnV0dG9uOmZ1bmN0aW9uKEIpe2Zvcih2YXIgQT0wO0E8dGhpcy5wYW5lbEJ1dHRvbnMubGVuZ3RoO0ErKyl7aWYodGhpcy5wYW5lbEJ1dHRvbnNbQV0ubmFtZT09Qil7cmV0dXJuIHRoaXMucGFuZWxCdXR0b25zW0FdfX19LHJlb3JkZXI6ZnVuY3Rpb24oKXt2YXIgQz10aGlzLmJ1dHRvbkxpc3Q7Zm9yKHZhciBCPTA7QjxDLmxlbmd0aDtCKyspe3ZhciBBPXRoaXMuZmluZEJ1dHRvbihDW0JdKTtpZihBKXt0aGlzLnBhbmVsRWxtLmFwcGVuZENoaWxkKEEubWFyZ2luKX19fSxyZW1vdmU6ZnVuY3Rpb24oKXt0aGlzLmVsbS5yZW1vdmUoKX19KTtcbnZhciBuaWNFZGl0b3JCdXR0b249YmtDbGFzcy5leHRlbmQoe2NvbnN0cnVjdDpmdW5jdGlvbihELEEsQyxCKXt0aGlzLm9wdGlvbnM9Qy5idXR0b25zW0FdO3RoaXMubmFtZT1BO3RoaXMubmU9Qjt0aGlzLmVsbT1EO3RoaXMubWFyZ2luPW5ldyBia0VsZW1lbnQoXCJESVZcIikuc2V0U3R5bGUoe1wiZmxvYXRcIjpcImxlZnRcIixtYXJnaW5Ub3A6XCIycHhcIn0pLmFwcGVuZFRvKEQpO3RoaXMuY29udGFpbj1uZXcgYmtFbGVtZW50KFwiRElWXCIpLnNldFN0eWxlKHt3aWR0aDpcIjIwcHhcIixoZWlnaHQ6XCIyMHB4XCJ9KS5hZGRDbGFzcyhcImJ1dHRvbkNvbnRhaW5cIikuYXBwZW5kVG8odGhpcy5tYXJnaW4pO3RoaXMuYm9yZGVyPW5ldyBia0VsZW1lbnQoXCJESVZcIikuc2V0U3R5bGUoe2JhY2tncm91bmRDb2xvcjpcIiNlZmVmZWZcIixib3JkZXI6XCIxcHggc29saWQgI2VmZWZlZlwifSkuYXBwZW5kVG8odGhpcy5jb250YWluKTt0aGlzLmJ1dHRvbj1uZXcgYmtFbGVtZW50KFwiRElWXCIpLnNldFN0eWxlKHt3aWR0aDpcIjE4cHhcIixoZWlnaHQ6XCIxOHB4XCIsb3ZlcmZsb3c6XCJoaWRkZW5cIix6b29tOjEsY3Vyc29yOlwicG9pbnRlclwifSkuYWRkQ2xhc3MoXCJidXR0b25cIikuc2V0U3R5bGUodGhpcy5uZS5nZXRJY29uKEEsQykpLmFwcGVuZFRvKHRoaXMuYm9yZGVyKTt0aGlzLmJ1dHRvbi5hZGRFdmVudChcIm1vdXNlb3ZlclwiLHRoaXMuaG92ZXJPbi5jbG9zdXJlKHRoaXMpKS5hZGRFdmVudChcIm1vdXNlb3V0XCIsdGhpcy5ob3Zlck9mZi5jbG9zdXJlKHRoaXMpKS5hZGRFdmVudChcIm1vdXNlZG93blwiLHRoaXMubW91c2VDbGljay5jbG9zdXJlKHRoaXMpKS5ub1NlbGVjdCgpO2lmKCF3aW5kb3cub3BlcmEpe3RoaXMuYnV0dG9uLm9ubW91c2Vkb3duPXRoaXMuYnV0dG9uLm9uY2xpY2s9YmtMaWIuY2FuY2VsRXZlbnR9Qi5hZGRFdmVudChcInNlbGVjdGVkXCIsdGhpcy5lbmFibGUuY2xvc3VyZSh0aGlzKSkuYWRkRXZlbnQoXCJibHVyXCIsdGhpcy5kaXNhYmxlLmNsb3N1cmUodGhpcykpLmFkZEV2ZW50KFwia2V5XCIsdGhpcy5rZXkuY2xvc3VyZSh0aGlzKSk7dGhpcy5kaXNhYmxlKCk7dGhpcy5pbml0KCl9LGluaXQ6ZnVuY3Rpb24oKXt9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW4uc2V0U3R5bGUoe2Rpc3BsYXk6XCJub25lXCJ9KX0sdXBkYXRlU3RhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLmlzRGlzYWJsZWQpe3RoaXMuc2V0QmcoKX1lbHNle2lmKHRoaXMuaXNIb3Zlcil7dGhpcy5zZXRCZyhcImhvdmVyXCIpfWVsc2V7aWYodGhpcy5pc0FjdGl2ZSl7dGhpcy5zZXRCZyhcImFjdGl2ZVwiKX1lbHNle3RoaXMuc2V0QmcoKX19fX0sc2V0Qmc6ZnVuY3Rpb24oQSl7c3dpdGNoKEEpe2Nhc2VcImhvdmVyXCI6dmFyIEI9e2JvcmRlcjpcIjFweCBzb2xpZCAjNjY2XCIsYmFja2dyb3VuZENvbG9yOlwiI2RkZFwifTticmVhaztjYXNlXCJhY3RpdmVcIjp2YXIgQj17Ym9yZGVyOlwiMXB4IHNvbGlkICM2NjZcIixiYWNrZ3JvdW5kQ29sb3I6XCIjY2NjXCJ9O2JyZWFrO2RlZmF1bHQ6dmFyIEI9e2JvcmRlcjpcIjFweCBzb2xpZCAjZWZlZmVmXCIsYmFja2dyb3VuZENvbG9yOlwiI2VmZWZlZlwifX10aGlzLmJvcmRlci5zZXRTdHlsZShCKS5hZGRDbGFzcyhcImJ1dHRvbi1cIitBKX0sY2hlY2tOb2RlczpmdW5jdGlvbihBKXt2YXIgQj1BO2Rve2lmKHRoaXMub3B0aW9ucy50YWdzJiZia0xpYi5pbkFycmF5KHRoaXMub3B0aW9ucy50YWdzLEIubm9kZU5hbWUpKXt0aGlzLmFjdGl2YXRlKCk7cmV0dXJuIHRydWV9fXdoaWxlKEI9Qi5wYXJlbnROb2RlJiZCLmNsYXNzTmFtZSE9XCJuaWNFZGl0XCIpO0I9JEJLKEEpO3doaWxlKEIubm9kZVR5cGU9PTMpe0I9JEJLKEIucGFyZW50Tm9kZSl9aWYodGhpcy5vcHRpb25zLmNzcyl7Zm9yKGl0bSBpbiB0aGlzLm9wdGlvbnMuY3NzKXtpZihCLmdldFN0eWxlKGl0bSx0aGlzLm5lLnNlbGVjdGVkSW5zdGFuY2UuaW5zdGFuY2VEb2MpPT10aGlzLm9wdGlvbnMuY3NzW2l0bV0pe3RoaXMuYWN0aXZhdGUoKTtyZXR1cm4gdHJ1ZX19fXRoaXMuZGVhY3RpdmF0ZSgpO3JldHVybiBmYWxzZX0sYWN0aXZhdGU6ZnVuY3Rpb24oKXtpZighdGhpcy5pc0Rpc2FibGVkKXt0aGlzLmlzQWN0aXZlPXRydWU7dGhpcy51cGRhdGVTdGF0ZSgpO3RoaXMubmUuZmlyZUV2ZW50KFwiYnV0dG9uQWN0aXZhdGVcIix0aGlzKX19LGRlYWN0aXZhdGU6ZnVuY3Rpb24oKXt0aGlzLmlzQWN0aXZlPWZhbHNlO3RoaXMudXBkYXRlU3RhdGUoKTtpZighdGhpcy5pc0Rpc2FibGVkKXt0aGlzLm5lLmZpcmVFdmVudChcImJ1dHRvbkRlYWN0aXZhdGVcIix0aGlzKX19LGVuYWJsZTpmdW5jdGlvbihBLEIpe3RoaXMuaXNEaXNhYmxlZD1mYWxzZTt0aGlzLmNvbnRhaW4uc2V0U3R5bGUoe29wYWNpdHk6MX0pLmFkZENsYXNzKFwiYnV0dG9uRW5hYmxlZFwiKTt0aGlzLnVwZGF0ZVN0YXRlKCk7dGhpcy5jaGVja05vZGVzKEIpfSxkaXNhYmxlOmZ1bmN0aW9uKEEsQil7dGhpcy5pc0Rpc2FibGVkPXRydWU7dGhpcy5jb250YWluLnNldFN0eWxlKHtvcGFjaXR5OjAuNn0pLnJlbW92ZUNsYXNzKFwiYnV0dG9uRW5hYmxlZFwiKTt0aGlzLnVwZGF0ZVN0YXRlKCl9LHRvZ2dsZUFjdGl2ZTpmdW5jdGlvbigpeyh0aGlzLmlzQWN0aXZlKT90aGlzLmRlYWN0aXZhdGUoKTp0aGlzLmFjdGl2YXRlKCl9LGhvdmVyT246ZnVuY3Rpb24oKXtpZighdGhpcy5pc0Rpc2FibGVkKXt0aGlzLmlzSG92ZXI9dHJ1ZTt0aGlzLnVwZGF0ZVN0YXRlKCk7dGhpcy5uZS5maXJlRXZlbnQoXCJidXR0b25PdmVyXCIsdGhpcyl9fSxob3Zlck9mZjpmdW5jdGlvbigpe3RoaXMuaXNIb3Zlcj1mYWxzZTt0aGlzLnVwZGF0ZVN0YXRlKCk7dGhpcy5uZS5maXJlRXZlbnQoXCJidXR0b25PdXRcIix0aGlzKX0sbW91c2VDbGljazpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5jb21tYW5kKXt0aGlzLm5lLm5pY0NvbW1hbmQodGhpcy5vcHRpb25zLmNvbW1hbmQsdGhpcy5vcHRpb25zLmNvbW1hbmRBcmdzKTtpZighdGhpcy5vcHRpb25zLm5vQWN0aXZlKXt0aGlzLnRvZ2dsZUFjdGl2ZSgpfX10aGlzLm5lLmZpcmVFdmVudChcImJ1dHRvbkNsaWNrXCIsdGhpcyl9LGtleTpmdW5jdGlvbihBLEIpe2lmKHRoaXMub3B0aW9ucy5rZXkmJkIuY3RybEtleSYmU3RyaW5nLmZyb21DaGFyQ29kZShCLmtleUNvZGV8fEIuY2hhckNvZGUpLnRvTG93ZXJDYXNlKCk9PXRoaXMub3B0aW9ucy5rZXkpe3RoaXMubW91c2VDbGljaygpO2lmKEIucHJldmVudERlZmF1bHQpe0IucHJldmVudERlZmF1bHQoKX19fX0pO1xudmFyIG5pY1BsdWdpbj1ia0NsYXNzLmV4dGVuZCh7Y29uc3RydWN0OmZ1bmN0aW9uKEIsQSl7dGhpcy5vcHRpb25zPUE7dGhpcy5uZT1CO3RoaXMubmUuYWRkRXZlbnQoXCJwYW5lbFwiLHRoaXMubG9hZFBhbmVsLmNsb3N1cmUodGhpcykpO3RoaXMuaW5pdCgpfSxsb2FkUGFuZWw6ZnVuY3Rpb24oQyl7dmFyIEI9dGhpcy5vcHRpb25zLmJ1dHRvbnM7Zm9yKHZhciBBIGluIEIpe0MuYWRkQnV0dG9uKEEsdGhpcy5vcHRpb25zKX1DLnJlb3JkZXIoKX0saW5pdDpmdW5jdGlvbigpe319KTtcblxuXG52YXIgbmljUGFuZU9wdGlvbnMgPSB7IH07XG5cbnZhciBuaWNFZGl0b3JQYW5lPWJrQ2xhc3MuZXh0ZW5kKHtjb25zdHJ1Y3Q6ZnVuY3Rpb24oRCxDLEIsQSl7dGhpcy5uZT1DO3RoaXMuZWxtPUQ7dGhpcy5wb3M9RC5wb3MoKTt0aGlzLmNvbnRhaW49bmV3IGJrRWxlbWVudChcImRpdlwiKS5zZXRTdHlsZSh7ekluZGV4OlwiOTk5OTlcIixvdmVyZmxvdzpcImhpZGRlblwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIixsZWZ0OnRoaXMucG9zWzBdK1wicHhcIix0b3A6dGhpcy5wb3NbMV0rXCJweFwifSk7dGhpcy5wYW5lPW5ldyBia0VsZW1lbnQoXCJkaXZcIikuc2V0U3R5bGUoe2ZvbnRTaXplOlwiMTJweFwiLGJvcmRlcjpcIjFweCBzb2xpZCAjY2NjXCIsb3ZlcmZsb3c6XCJoaWRkZW5cIixwYWRkaW5nOlwiNHB4XCIsdGV4dEFsaWduOlwibGVmdFwiLGJhY2tncm91bmRDb2xvcjpcIiNmZmZmYzlcIn0pLmFkZENsYXNzKFwicGFuZVwiKS5zZXRTdHlsZShCKS5hcHBlbmRUbyh0aGlzLmNvbnRhaW4pO2lmKEEmJiFBLm9wdGlvbnMubm9DbG9zZSl7dGhpcy5jbG9zZT1uZXcgYmtFbGVtZW50KFwiZGl2XCIpLnNldFN0eWxlKHtcImZsb2F0XCI6XCJyaWdodFwiLGhlaWdodDpcIjE2cHhcIix3aWR0aDpcIjE2cHhcIixjdXJzb3I6XCJwb2ludGVyXCJ9KS5zZXRTdHlsZSh0aGlzLm5lLmdldEljb24oXCJjbG9zZVwiLG5pY1BhbmVPcHRpb25zKSkuYWRkRXZlbnQoXCJtb3VzZWRvd25cIixBLnJlbW92ZVBhbmUuY2xvc3VyZSh0aGlzKSkuYXBwZW5kVG8odGhpcy5wYW5lKX10aGlzLmNvbnRhaW4ubm9TZWxlY3QoKS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTt0aGlzLnBvc2l0aW9uKCk7dGhpcy5pbml0KCl9LGluaXQ6ZnVuY3Rpb24oKXt9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpcy5uZS5uaWNQYW5lbCl7dmFyIEI9dGhpcy5uZS5uaWNQYW5lbC5lbG07dmFyIEE9Qi5wb3MoKTt2YXIgQz1BWzBdK3BhcnNlSW50KEIuZ2V0U3R5bGUoXCJ3aWR0aFwiKSktKHBhcnNlSW50KHRoaXMucGFuZS5nZXRTdHlsZShcIndpZHRoXCIpKSs4KTtpZihDPHRoaXMucG9zWzBdKXt0aGlzLmNvbnRhaW4uc2V0U3R5bGUoe2xlZnQ6QytcInB4XCJ9KX19fSx0b2dnbGU6ZnVuY3Rpb24oKXt0aGlzLmlzVmlzaWJsZT0hdGhpcy5pc1Zpc2libGU7dGhpcy5jb250YWluLnNldFN0eWxlKHtkaXNwbGF5OigodGhpcy5pc1Zpc2libGUpP1wiYmxvY2tcIjpcIm5vbmVcIil9KX0scmVtb3ZlOmZ1bmN0aW9uKCl7aWYodGhpcy5jb250YWluKXt0aGlzLmNvbnRhaW4ucmVtb3ZlKCk7dGhpcy5jb250YWluPW51bGx9fSxhcHBlbmQ6ZnVuY3Rpb24oQSl7QS5hcHBlbmRUbyh0aGlzLnBhbmUpfSxzZXRDb250ZW50OmZ1bmN0aW9uKEEpe3RoaXMucGFuZS5zZXRDb250ZW50KEEpfX0pO1xuXG52YXIgbmljRWRpdG9yQWR2YW5jZWRCdXR0b249bmljRWRpdG9yQnV0dG9uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe3RoaXMubmUuYWRkRXZlbnQoXCJzZWxlY3RlZFwiLHRoaXMucmVtb3ZlUGFuZS5jbG9zdXJlKHRoaXMpKS5hZGRFdmVudChcImJsdXJcIix0aGlzLnJlbW92ZVBhbmUuY2xvc3VyZSh0aGlzKSl9LG1vdXNlQ2xpY2s6ZnVuY3Rpb24oKXtpZighdGhpcy5pc0Rpc2FibGVkKXtpZih0aGlzLnBhbmUmJnRoaXMucGFuZS5wYW5lKXt0aGlzLnJlbW92ZVBhbmUoKX1lbHNle3RoaXMucGFuZT1uZXcgbmljRWRpdG9yUGFuZSh0aGlzLmNvbnRhaW4sdGhpcy5uZSx7d2lkdGg6KHRoaXMud2lkdGh8fFwiMjcwcHhcIiksYmFja2dyb3VuZENvbG9yOlwiI2ZmZlwifSx0aGlzKTt0aGlzLmFkZFBhbmUoKTt0aGlzLm5lLnNlbGVjdGVkSW5zdGFuY2Uuc2F2ZVJuZygpfX19LGFkZEZvcm06ZnVuY3Rpb24oQyxHKXt0aGlzLmZvcm09bmV3IGJrRWxlbWVudChcImZvcm1cIikuYWRkRXZlbnQoXCJzdWJtaXRcIix0aGlzLnN1Ym1pdC5jbG9zdXJlTGlzdGVuZXIodGhpcykpO3RoaXMucGFuZS5hcHBlbmQodGhpcy5mb3JtKTt0aGlzLmlucHV0cz17fTtmb3IoaXRtIGluIEMpe3ZhciBEPUNbaXRtXTt2YXIgRj1cIlwiO2lmKEcpe0Y9Ry5nZXRBdHRyaWJ1dGUoaXRtKX1pZighRil7Rj1ELnZhbHVlfHxcIlwifXZhciBBPUNbaXRtXS50eXBlO2lmKEE9PVwidGl0bGVcIil7bmV3IGJrRWxlbWVudChcImRpdlwiKS5zZXRDb250ZW50KEQudHh0KS5zZXRTdHlsZSh7Zm9udFNpemU6XCIxNHB4XCIsZm9udFdlaWdodDpcImJvbGRcIixwYWRkaW5nOlwiMHB4XCIsbWFyZ2luOlwiMnB4IDBcIn0pLmFwcGVuZFRvKHRoaXMuZm9ybSl9ZWxzZXt2YXIgQj1uZXcgYmtFbGVtZW50KFwiZGl2XCIpLnNldFN0eWxlKHtvdmVyZmxvdzpcImhpZGRlblwiLGNsZWFyOlwiYm90aFwifSkuYXBwZW5kVG8odGhpcy5mb3JtKTtpZihELnR4dCl7bmV3IGJrRWxlbWVudChcImxhYmVsXCIpLnNldEF0dHJpYnV0ZXMoe1wiZm9yXCI6aXRtfSkuc2V0Q29udGVudChELnR4dCkuc2V0U3R5bGUoe21hcmdpbjpcIjJweCA0cHhcIixmb250U2l6ZTpcIjEzcHhcIix3aWR0aDpcIjUwcHhcIixsaW5lSGVpZ2h0OlwiMjBweFwiLHRleHRBbGlnbjpcInJpZ2h0XCIsXCJmbG9hdFwiOlwibGVmdFwifSkuYXBwZW5kVG8oQil9c3dpdGNoKEEpe2Nhc2VcInRleHRcIjp0aGlzLmlucHV0c1tpdG1dPW5ldyBia0VsZW1lbnQoXCJpbnB1dFwiKS5zZXRBdHRyaWJ1dGVzKHtpZDppdG0sdmFsdWU6Rix0eXBlOlwidGV4dFwifSkuc2V0U3R5bGUoe21hcmdpbjpcIjJweCAwXCIsZm9udFNpemU6XCIxM3B4XCIsXCJmbG9hdFwiOlwibGVmdFwiLGhlaWdodDpcIjIwcHhcIixib3JkZXI6XCIxcHggc29saWQgI2NjY1wiLG92ZXJmbG93OlwiaGlkZGVuXCJ9KS5zZXRTdHlsZShELnN0eWxlKS5hcHBlbmRUbyhCKTticmVhaztjYXNlXCJzZWxlY3RcIjp0aGlzLmlucHV0c1tpdG1dPW5ldyBia0VsZW1lbnQoXCJzZWxlY3RcIikuc2V0QXR0cmlidXRlcyh7aWQ6aXRtfSkuc2V0U3R5bGUoe2JvcmRlcjpcIjFweCBzb2xpZCAjY2NjXCIsXCJmbG9hdFwiOlwibGVmdFwiLG1hcmdpbjpcIjJweCAwXCJ9KS5hcHBlbmRUbyhCKTtmb3Iob3B0IGluIEQub3B0aW9ucyl7dmFyIEU9bmV3IGJrRWxlbWVudChcIm9wdGlvblwiKS5zZXRBdHRyaWJ1dGVzKHt2YWx1ZTpvcHQsc2VsZWN0ZWQ6KG9wdD09Rik/XCJzZWxlY3RlZFwiOlwiXCJ9KS5zZXRDb250ZW50KEQub3B0aW9uc1tvcHRdKS5hcHBlbmRUbyh0aGlzLmlucHV0c1tpdG1dKX1icmVhaztjYXNlXCJjb250ZW50XCI6dGhpcy5pbnB1dHNbaXRtXT1uZXcgYmtFbGVtZW50KFwidGV4dGFyZWFcIikuc2V0QXR0cmlidXRlcyh7aWQ6aXRtfSkuc2V0U3R5bGUoe2JvcmRlcjpcIjFweCBzb2xpZCAjY2NjXCIsXCJmbG9hdFwiOlwibGVmdFwifSkuc2V0U3R5bGUoRC5zdHlsZSkuYXBwZW5kVG8oQik7dGhpcy5pbnB1dHNbaXRtXS52YWx1ZT1GfX19bmV3IGJrRWxlbWVudChcImlucHV0XCIpLnNldEF0dHJpYnV0ZXMoe3R5cGU6XCJzdWJtaXRcIn0pLnNldFN0eWxlKHtiYWNrZ3JvdW5kQ29sb3I6XCIjZWZlZmVmXCIsYm9yZGVyOlwiMXB4IHNvbGlkICNjY2NcIixtYXJnaW46XCIzcHggMFwiLFwiZmxvYXRcIjpcImxlZnRcIixjbGVhcjpcImJvdGhcIn0pLmFwcGVuZFRvKHRoaXMuZm9ybSk7dGhpcy5mb3JtLm9uc3VibWl0PWJrTGliLmNhbmNlbEV2ZW50fSxzdWJtaXQ6ZnVuY3Rpb24oKXt9LGZpbmRFbG06ZnVuY3Rpb24oQixBLEUpe3ZhciBEPXRoaXMubmUuc2VsZWN0ZWRJbnN0YW5jZS5nZXRFbG0oKS5nZXRFbGVtZW50c0J5VGFnTmFtZShCKTtmb3IodmFyIEM9MDtDPEQubGVuZ3RoO0MrKyl7aWYoRFtDXS5nZXRBdHRyaWJ1dGUoQSk9PUUpe3JldHVybiAkQksoRFtDXSl9fX0scmVtb3ZlUGFuZTpmdW5jdGlvbigpe2lmKHRoaXMucGFuZSl7dGhpcy5wYW5lLnJlbW92ZSgpO3RoaXMucGFuZT1udWxsO3RoaXMubmUuc2VsZWN0ZWRJbnN0YW5jZS5yZXN0b3JlUm5nKCl9fX0pO1xuXG52YXIgbmljQnV0dG9uVGlwcz1ia0NsYXNzLmV4dGVuZCh7Y29uc3RydWN0OmZ1bmN0aW9uKEEpe3RoaXMubmU9QTtBLmFkZEV2ZW50KFwiYnV0dG9uT3ZlclwiLHRoaXMuc2hvdy5jbG9zdXJlKHRoaXMpKS5hZGRFdmVudChcImJ1dHRvbk91dFwiLHRoaXMuaGlkZS5jbG9zdXJlKHRoaXMpKX0sc2hvdzpmdW5jdGlvbihBKXt0aGlzLnRpbWVyPXNldFRpbWVvdXQodGhpcy5jcmVhdGUuY2xvc3VyZSh0aGlzLEEpLDQwMCl9LGNyZWF0ZTpmdW5jdGlvbihBKXt0aGlzLnRpbWVyPW51bGw7aWYoIXRoaXMucGFuZSl7dGhpcy5wYW5lPW5ldyBuaWNFZGl0b3JQYW5lKEEuYnV0dG9uLHRoaXMubmUse2ZvbnRTaXplOlwiMTJweFwiLG1hcmdpblRvcDpcIjVweFwifSk7dGhpcy5wYW5lLnNldENvbnRlbnQoQS5vcHRpb25zLm5hbWUpfX0saGlkZTpmdW5jdGlvbihBKXtpZih0aGlzLnRpbWVyKXtjbGVhclRpbWVvdXQodGhpcy50aW1lcil9aWYodGhpcy5wYW5lKXt0aGlzLnBhbmU9dGhpcy5wYW5lLnJlbW92ZSgpfX19KTtuaWNFZGl0b3JzLnJlZ2lzdGVyUGx1Z2luKG5pY0J1dHRvblRpcHMpO1xuXG5cbnZhciBuaWNTZWxlY3RPcHRpb25zID0ge1xuXHRidXR0b25zIDoge1xuXHRcdCdmb250U2l6ZScgOiB7bmFtZSA6IF9fKCdTZWxlY3QgRm9udCBTaXplJyksIHR5cGUgOiAnbmljRWRpdG9yRm9udFNpemVTZWxlY3QnLCBjb21tYW5kIDogJ2ZvbnRzaXplJ30sXG5cdFx0J2ZvbnRGYW1pbHknIDoge25hbWUgOiBfXygnU2VsZWN0IEZvbnQgRmFtaWx5JyksIHR5cGUgOiAnbmljRWRpdG9yRm9udEZhbWlseVNlbGVjdCcsIGNvbW1hbmQgOiAnZm9udG5hbWUnfSxcblx0XHQnZm9udEZvcm1hdCcgOiB7bmFtZSA6IF9fKCdTZWxlY3QgRm9udCBGb3JtYXQnKSwgdHlwZSA6ICduaWNFZGl0b3JGb250Rm9ybWF0U2VsZWN0JywgY29tbWFuZCA6ICdmb3JtYXRCbG9jayd9XG5cdH1cbn07XG5cbnZhciBuaWNFZGl0b3JTZWxlY3Q9YmtDbGFzcy5leHRlbmQoe2NvbnN0cnVjdDpmdW5jdGlvbihELEEsQyxCKXt0aGlzLm9wdGlvbnM9Qy5idXR0b25zW0FdO3RoaXMuZWxtPUQ7dGhpcy5uZT1CO3RoaXMubmFtZT1BO3RoaXMuc2VsT3B0aW9ucz1uZXcgQXJyYXkoKTt0aGlzLm1hcmdpbj1uZXcgYmtFbGVtZW50KFwiZGl2XCIpLnNldFN0eWxlKHtcImZsb2F0XCI6XCJsZWZ0XCIsbWFyZ2luOlwiMnB4IDFweCAwIDFweFwifSkuYXBwZW5kVG8odGhpcy5lbG0pO3RoaXMuY29udGFpbj1uZXcgYmtFbGVtZW50KFwiZGl2XCIpLnNldFN0eWxlKHt3aWR0aDpcIjkwcHhcIixoZWlnaHQ6XCIyMHB4XCIsY3Vyc29yOlwicG9pbnRlclwiLG92ZXJmbG93OlwiaGlkZGVuXCJ9KS5hZGRDbGFzcyhcInNlbGVjdENvbnRhaW5cIikuYWRkRXZlbnQoXCJjbGlja1wiLHRoaXMudG9nZ2xlLmNsb3N1cmUodGhpcykpLmFwcGVuZFRvKHRoaXMubWFyZ2luKTt0aGlzLml0ZW1zPW5ldyBia0VsZW1lbnQoXCJkaXZcIikuc2V0U3R5bGUoe292ZXJmbG93OlwiaGlkZGVuXCIsem9vbToxLGJvcmRlcjpcIjFweCBzb2xpZCAjY2NjXCIscGFkZGluZ0xlZnQ6XCIzcHhcIixiYWNrZ3JvdW5kQ29sb3I6XCIjZmZmXCJ9KS5hcHBlbmRUbyh0aGlzLmNvbnRhaW4pO3RoaXMuY29udHJvbD1uZXcgYmtFbGVtZW50KFwiZGl2XCIpLnNldFN0eWxlKHtvdmVyZmxvdzpcImhpZGRlblwiLFwiZmxvYXRcIjpcInJpZ2h0XCIsaGVpZ2h0OlwiMThweFwiLHdpZHRoOlwiMTZweFwifSkuYWRkQ2xhc3MoXCJzZWxlY3RDb250cm9sXCIpLnNldFN0eWxlKHRoaXMubmUuZ2V0SWNvbihcImFycm93XCIsQykpLmFwcGVuZFRvKHRoaXMuaXRlbXMpO3RoaXMudHh0PW5ldyBia0VsZW1lbnQoXCJkaXZcIikuc2V0U3R5bGUoe292ZXJmbG93OlwiaGlkZGVuXCIsXCJmbG9hdFwiOlwibGVmdFwiLHdpZHRoOlwiNjZweFwiLGhlaWdodDpcIjE0cHhcIixtYXJnaW5Ub3A6XCIxcHhcIixmb250RmFtaWx5Olwic2Fucy1zZXJpZlwiLHRleHRBbGlnbjpcImNlbnRlclwiLGZvbnRTaXplOlwiMTJweFwifSkuYWRkQ2xhc3MoXCJzZWxlY3RUeHRcIikuYXBwZW5kVG8odGhpcy5pdGVtcyk7aWYoIXdpbmRvdy5vcGVyYSl7dGhpcy5jb250YWluLm9ubW91c2Vkb3duPXRoaXMuY29udHJvbC5vbm1vdXNlZG93bj10aGlzLnR4dC5vbm1vdXNlZG93bj1ia0xpYi5jYW5jZWxFdmVudH10aGlzLm1hcmdpbi5ub1NlbGVjdCgpO3RoaXMubmUuYWRkRXZlbnQoXCJzZWxlY3RlZFwiLHRoaXMuZW5hYmxlLmNsb3N1cmUodGhpcykpLmFkZEV2ZW50KFwiYmx1clwiLHRoaXMuZGlzYWJsZS5jbG9zdXJlKHRoaXMpKTt0aGlzLmRpc2FibGUoKTt0aGlzLmluaXQoKX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuaXNEaXNhYmxlZD10cnVlO3RoaXMuY2xvc2UoKTt0aGlzLmNvbnRhaW4uc2V0U3R5bGUoe29wYWNpdHk6MC42fSl9LGVuYWJsZTpmdW5jdGlvbihBKXt0aGlzLmlzRGlzYWJsZWQ9ZmFsc2U7dGhpcy5jbG9zZSgpO3RoaXMuY29udGFpbi5zZXRTdHlsZSh7b3BhY2l0eToxfSl9LHNldERpc3BsYXk6ZnVuY3Rpb24oQSl7dGhpcy50eHQuc2V0Q29udGVudChBKX0sdG9nZ2xlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuaXNEaXNhYmxlZCl7KHRoaXMucGFuZSk/dGhpcy5jbG9zZSgpOnRoaXMub3BlbigpfX0sb3BlbjpmdW5jdGlvbigpe3RoaXMucGFuZT1uZXcgbmljRWRpdG9yUGFuZSh0aGlzLml0ZW1zLHRoaXMubmUse3dpZHRoOlwiODhweFwiLHBhZGRpbmc6XCIwcHhcIixib3JkZXJUb3A6MCxib3JkZXJMZWZ0OlwiMXB4IHNvbGlkICNjY2NcIixib3JkZXJSaWdodDpcIjFweCBzb2xpZCAjY2NjXCIsYm9yZGVyQm90dG9tOlwiMHB4XCIsYmFja2dyb3VuZENvbG9yOlwiI2ZmZlwifSk7Zm9yKHZhciBDPTA7Qzx0aGlzLnNlbE9wdGlvbnMubGVuZ3RoO0MrKyl7dmFyIEI9dGhpcy5zZWxPcHRpb25zW0NdO3ZhciBBPW5ldyBia0VsZW1lbnQoXCJkaXZcIikuc2V0U3R5bGUoe292ZXJmbG93OlwiaGlkZGVuXCIsYm9yZGVyQm90dG9tOlwiMXB4IHNvbGlkICNjY2NcIix3aWR0aDpcIjg4cHhcIix0ZXh0QWxpZ246XCJsZWZ0XCIsb3ZlcmZsb3c6XCJoaWRkZW5cIixjdXJzb3I6XCJwb2ludGVyXCJ9KTt2YXIgRD1uZXcgYmtFbGVtZW50KFwiZGl2XCIpLnNldFN0eWxlKHtwYWRkaW5nOlwiMHB4IDRweFwifSkuc2V0Q29udGVudChCWzFdKS5hcHBlbmRUbyhBKS5ub1NlbGVjdCgpO0QuYWRkRXZlbnQoXCJjbGlja1wiLHRoaXMudXBkYXRlLmNsb3N1cmUodGhpcyxCWzBdKSkuYWRkRXZlbnQoXCJtb3VzZW92ZXJcIix0aGlzLm92ZXIuY2xvc3VyZSh0aGlzLEQpKS5hZGRFdmVudChcIm1vdXNlb3V0XCIsdGhpcy5vdXQuY2xvc3VyZSh0aGlzLEQpKS5zZXRBdHRyaWJ1dGVzKFwiaWRcIixCWzBdKTt0aGlzLnBhbmUuYXBwZW5kKEEpO2lmKCF3aW5kb3cub3BlcmEpe0Qub25tb3VzZWRvd249YmtMaWIuY2FuY2VsRXZlbnR9fX0sY2xvc2U6ZnVuY3Rpb24oKXtpZih0aGlzLnBhbmUpe3RoaXMucGFuZT10aGlzLnBhbmUucmVtb3ZlKCl9fSxvdmVyOmZ1bmN0aW9uKEEpe0Euc2V0U3R5bGUoe2JhY2tncm91bmRDb2xvcjpcIiNjY2NcIn0pfSxvdXQ6ZnVuY3Rpb24oQSl7QS5zZXRTdHlsZSh7YmFja2dyb3VuZENvbG9yOlwiI2ZmZlwifSl9LGFkZDpmdW5jdGlvbihCLEEpe3RoaXMuc2VsT3B0aW9ucy5wdXNoKG5ldyBBcnJheShCLEEpKX0sdXBkYXRlOmZ1bmN0aW9uKEEpe3RoaXMubmUubmljQ29tbWFuZCh0aGlzLm9wdGlvbnMuY29tbWFuZCxBKTt0aGlzLmNsb3NlKCl9fSk7dmFyIG5pY0VkaXRvckZvbnRTaXplU2VsZWN0PW5pY0VkaXRvclNlbGVjdC5leHRlbmQoe3NlbDp7MTpcIjEmbmJzcDsoOHB0KVwiLDI6XCIyJm5ic3A7KDEwcHQpXCIsMzpcIjMmbmJzcDsoMTJwdClcIiw0OlwiNCZuYnNwOygxNHB0KVwiLDU6XCI1Jm5ic3A7KDE4cHQpXCIsNjpcIjYmbmJzcDsoMjRwdClcIn0saW5pdDpmdW5jdGlvbigpe3RoaXMuc2V0RGlzcGxheShcIkZvbnQmbmJzcDtTaXplLi4uXCIpO2ZvcihpdG0gaW4gdGhpcy5zZWwpe3RoaXMuYWRkKGl0bSwnPGZvbnQgc2l6ZT1cIicraXRtKydcIj4nK3RoaXMuc2VsW2l0bV0rXCI8L2ZvbnQ+XCIpfX19KTt2YXIgbmljRWRpdG9yRm9udEZhbWlseVNlbGVjdD1uaWNFZGl0b3JTZWxlY3QuZXh0ZW5kKHtzZWw6e2FyaWFsOlwiQXJpYWxcIixcImNvbWljIHNhbnMgbXNcIjpcIkNvbWljIFNhbnNcIixcImNvdXJpZXIgbmV3XCI6XCJDb3VyaWVyIE5ld1wiLGdlb3JnaWE6XCJHZW9yZ2lhXCIsaGVsdmV0aWNhOlwiSGVsdmV0aWNhXCIsaW1wYWN0OlwiSW1wYWN0XCIsXCJ0aW1lcyBuZXcgcm9tYW5cIjpcIlRpbWVzXCIsXCJ0cmVidWNoZXQgbXNcIjpcIlRyZWJ1Y2hldFwiLHZlcmRhbmE6XCJWZXJkYW5hXCJ9LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLnNldERpc3BsYXkoXCJGb250Jm5ic3A7RmFtaWx5Li4uXCIpO2ZvcihpdG0gaW4gdGhpcy5zZWwpe3RoaXMuYWRkKGl0bSwnPGZvbnQgZmFjZT1cIicraXRtKydcIj4nK3RoaXMuc2VsW2l0bV0rXCI8L2ZvbnQ+XCIpfX19KTt2YXIgbmljRWRpdG9yRm9udEZvcm1hdFNlbGVjdD1uaWNFZGl0b3JTZWxlY3QuZXh0ZW5kKHtzZWw6e3A6XCJQYXJhZ3JhcGhcIixwcmU6XCJQcmVcIixoNjpcIkhlYWRpbmcmbmJzcDs2XCIsaDU6XCJIZWFkaW5nJm5ic3A7NVwiLGg0OlwiSGVhZGluZyZuYnNwOzRcIixoMzpcIkhlYWRpbmcmbmJzcDszXCIsaDI6XCJIZWFkaW5nJm5ic3A7MlwiLGgxOlwiSGVhZGluZyZuYnNwOzFcIn0saW5pdDpmdW5jdGlvbigpe3RoaXMuc2V0RGlzcGxheShcIkZvbnQmbmJzcDtGb3JtYXQuLi5cIik7Zm9yKGl0bSBpbiB0aGlzLnNlbCl7dmFyIEE9aXRtLnRvVXBwZXJDYXNlKCk7dGhpcy5hZGQoXCI8XCIrQStcIj5cIixcIjxcIitpdG0rJyBzdHlsZT1cInBhZGRpbmc6IDBweDsgbWFyZ2luOiAwcHg7XCI+Jyt0aGlzLnNlbFtpdG1dK1wiPC9cIitBK1wiPlwiKX19fSk7bmljRWRpdG9ycy5yZWdpc3RlclBsdWdpbihuaWNQbHVnaW4sbmljU2VsZWN0T3B0aW9ucyk7XG5cblxudmFyIG5pY0xpbmtPcHRpb25zID0ge1xuXHRidXR0b25zIDoge1xuXHRcdCdsaW5rJyA6IHtuYW1lIDogJ0FkZCBMaW5rJywgdHlwZSA6ICduaWNMaW5rQnV0dG9uJywgdGFncyA6IFsnQSddfSxcblx0XHQndW5saW5rJyA6IHtuYW1lIDogJ1JlbW92ZSBMaW5rJywgIGNvbW1hbmQgOiAndW5saW5rJywgbm9BY3RpdmUgOiB0cnVlfVxuXHR9XG59O1xuXG52YXIgbmljTGlua0J1dHRvbj1uaWNFZGl0b3JBZHZhbmNlZEJ1dHRvbi5leHRlbmQoe2FkZFBhbmU6ZnVuY3Rpb24oKXt0aGlzLmxuPXRoaXMubmUuc2VsZWN0ZWRJbnN0YW5jZS5zZWxFbG0oKS5wYXJlbnRUYWcoXCJBXCIpO3RoaXMuYWRkRm9ybSh7XCJcIjp7dHlwZTpcInRpdGxlXCIsdHh0OlwiQWRkL0VkaXQgTGlua1wifSxocmVmOnt0eXBlOlwidGV4dFwiLHR4dDpcIlVSTFwiLHZhbHVlOlwiaHR0cDovL1wiLHN0eWxlOnt3aWR0aDpcIjE1MHB4XCJ9fSx0aXRsZTp7dHlwZTpcInRleHRcIix0eHQ6XCJUaXRsZVwifSx0YXJnZXQ6e3R5cGU6XCJzZWxlY3RcIix0eHQ6XCJPcGVuIEluXCIsb3B0aW9uczp7XCJcIjpcIkN1cnJlbnQgV2luZG93XCIsX2JsYW5rOlwiTmV3IFdpbmRvd1wifSxzdHlsZTp7d2lkdGg6XCIxMDBweFwifX19LHRoaXMubG4pfSxzdWJtaXQ6ZnVuY3Rpb24oQyl7dmFyIEE9dGhpcy5pbnB1dHMuaHJlZi52YWx1ZTtpZihBPT1cImh0dHA6Ly9cInx8QT09XCJcIil7YWxlcnQoXCJZb3UgbXVzdCBlbnRlciBhIFVSTCB0byBDcmVhdGUgYSBMaW5rXCIpO3JldHVybiBmYWxzZX10aGlzLnJlbW92ZVBhbmUoKTtpZighdGhpcy5sbil7dmFyIEI9XCJqYXZhc2NyaXB0Om5pY1RlbXAoKTtcIjt0aGlzLm5lLm5pY0NvbW1hbmQoXCJjcmVhdGVsaW5rXCIsQik7dGhpcy5sbj10aGlzLmZpbmRFbG0oXCJBXCIsXCJocmVmXCIsQil9aWYodGhpcy5sbil7dGhpcy5sbi5zZXRBdHRyaWJ1dGVzKHtocmVmOnRoaXMuaW5wdXRzLmhyZWYudmFsdWUsdGl0bGU6dGhpcy5pbnB1dHMudGl0bGUudmFsdWUsdGFyZ2V0OnRoaXMuaW5wdXRzLnRhcmdldC5vcHRpb25zW3RoaXMuaW5wdXRzLnRhcmdldC5zZWxlY3RlZEluZGV4XS52YWx1ZX0pfX19KTtuaWNFZGl0b3JzLnJlZ2lzdGVyUGx1Z2luKG5pY1BsdWdpbixuaWNMaW5rT3B0aW9ucyk7XG5cblxudmFyIG5pY0NvbG9yT3B0aW9ucyA9IHtcblx0YnV0dG9ucyA6IHtcblx0XHQnZm9yZWNvbG9yJyA6IHtuYW1lIDogX18oJ0NoYW5nZSBUZXh0IENvbG9yJyksIHR5cGUgOiAnbmljRWRpdG9yQ29sb3JCdXR0b24nLCBub0Nsb3NlIDogdHJ1ZX0sXG5cdFx0J2JnY29sb3InIDoge25hbWUgOiBfXygnQ2hhbmdlIEJhY2tncm91bmQgQ29sb3InKSwgdHlwZSA6ICduaWNFZGl0b3JCZ0NvbG9yQnV0dG9uJywgbm9DbG9zZSA6IHRydWV9XG5cdH1cbn07XG5cbnZhciBuaWNFZGl0b3JDb2xvckJ1dHRvbj1uaWNFZGl0b3JBZHZhbmNlZEJ1dHRvbi5leHRlbmQoe2FkZFBhbmU6ZnVuY3Rpb24oKXt2YXIgRD17MDpcIjAwXCIsMTpcIjMzXCIsMjpcIjY2XCIsMzpcIjk5XCIsNDpcIkNDXCIsNTpcIkZGXCJ9O3ZhciBIPW5ldyBia0VsZW1lbnQoXCJESVZcIikuc2V0U3R5bGUoe3dpZHRoOlwiMjcwcHhcIn0pO2Zvcih2YXIgQSBpbiBEKXtmb3IodmFyIEYgaW4gRCl7Zm9yKHZhciBFIGluIEQpe3ZhciBJPVwiI1wiK0RbQV0rRFtFXStEW0ZdO3ZhciBDPW5ldyBia0VsZW1lbnQoXCJESVZcIikuc2V0U3R5bGUoe2N1cnNvcjpcInBvaW50ZXJcIixoZWlnaHQ6XCIxNXB4XCIsXCJmbG9hdFwiOlwibGVmdFwifSkuYXBwZW5kVG8oSCk7dmFyIEc9bmV3IGJrRWxlbWVudChcIkRJVlwiKS5zZXRTdHlsZSh7Ym9yZGVyOlwiMnB4IHNvbGlkIFwiK0l9KS5hcHBlbmRUbyhDKTt2YXIgQj1uZXcgYmtFbGVtZW50KFwiRElWXCIpLnNldFN0eWxlKHtiYWNrZ3JvdW5kQ29sb3I6SSxvdmVyZmxvdzpcImhpZGRlblwiLHdpZHRoOlwiMTFweFwiLGhlaWdodDpcIjExcHhcIn0pLmFkZEV2ZW50KFwiY2xpY2tcIix0aGlzLmNvbG9yU2VsZWN0LmNsb3N1cmUodGhpcyxJKSkuYWRkRXZlbnQoXCJtb3VzZW92ZXJcIix0aGlzLm9uLmNsb3N1cmUodGhpcyxHKSkuYWRkRXZlbnQoXCJtb3VzZW91dFwiLHRoaXMub2ZmLmNsb3N1cmUodGhpcyxHLEkpKS5hcHBlbmRUbyhHKTtpZighd2luZG93Lm9wZXJhKXtDLm9ubW91c2Vkb3duPUIub25tb3VzZWRvd249YmtMaWIuY2FuY2VsRXZlbnR9fX19dGhpcy5wYW5lLmFwcGVuZChILm5vU2VsZWN0KCkpfSxjb2xvclNlbGVjdDpmdW5jdGlvbihBKXt0aGlzLm5lLm5pY0NvbW1hbmQoXCJmb3JlQ29sb3JcIixBKTt0aGlzLnJlbW92ZVBhbmUoKX0sb246ZnVuY3Rpb24oQSl7QS5zZXRTdHlsZSh7Ym9yZGVyOlwiMnB4IHNvbGlkICMwMDBcIn0pfSxvZmY6ZnVuY3Rpb24oQSxCKXtBLnNldFN0eWxlKHtib3JkZXI6XCIycHggc29saWQgXCIrQn0pfX0pO3ZhciBuaWNFZGl0b3JCZ0NvbG9yQnV0dG9uPW5pY0VkaXRvckNvbG9yQnV0dG9uLmV4dGVuZCh7Y29sb3JTZWxlY3Q6ZnVuY3Rpb24oQSl7dGhpcy5uZS5uaWNDb21tYW5kKFwiaGlsaXRlQ29sb3JcIixBKTt0aGlzLnJlbW92ZVBhbmUoKX19KTtuaWNFZGl0b3JzLnJlZ2lzdGVyUGx1Z2luKG5pY1BsdWdpbixuaWNDb2xvck9wdGlvbnMpO1xuXG5cbnZhciBuaWNJbWFnZU9wdGlvbnMgPSB7XG5cdGJ1dHRvbnMgOiB7XG5cdFx0J2ltYWdlJyA6IHtuYW1lIDogJ0FkZCBJbWFnZScsIHR5cGUgOiAnbmljSW1hZ2VCdXR0b24nLCB0YWdzIDogWydJTUcnXX1cblx0fVxuXHRcbn07XG5cbnZhciBuaWNJbWFnZUJ1dHRvbj1uaWNFZGl0b3JBZHZhbmNlZEJ1dHRvbi5leHRlbmQoe2FkZFBhbmU6ZnVuY3Rpb24oKXt0aGlzLmltPXRoaXMubmUuc2VsZWN0ZWRJbnN0YW5jZS5zZWxFbG0oKS5wYXJlbnRUYWcoXCJJTUdcIik7dGhpcy5hZGRGb3JtKHtcIlwiOnt0eXBlOlwidGl0bGVcIix0eHQ6XCJBZGQvRWRpdCBJbWFnZVwifSxzcmM6e3R5cGU6XCJ0ZXh0XCIsdHh0OlwiVVJMXCIsdmFsdWU6XCJodHRwOi8vXCIsc3R5bGU6e3dpZHRoOlwiMTUwcHhcIn19LGFsdDp7dHlwZTpcInRleHRcIix0eHQ6XCJBbHQgVGV4dFwiLHN0eWxlOnt3aWR0aDpcIjEwMHB4XCJ9fSxhbGlnbjp7dHlwZTpcInNlbGVjdFwiLHR4dDpcIkFsaWduXCIsb3B0aW9uczp7bm9uZTpcIkRlZmF1bHRcIixsZWZ0OlwiTGVmdFwiLHJpZ2h0OlwiUmlnaHRcIn19fSx0aGlzLmltKX0sc3VibWl0OmZ1bmN0aW9uKEIpe3ZhciBDPXRoaXMuaW5wdXRzLnNyYy52YWx1ZTtpZihDPT1cIlwifHxDPT1cImh0dHA6Ly9cIil7YWxlcnQoXCJZb3UgbXVzdCBlbnRlciBhIEltYWdlIFVSTCB0byBpbnNlcnRcIik7cmV0dXJuIGZhbHNlfXRoaXMucmVtb3ZlUGFuZSgpO2lmKCF0aGlzLmltKXt2YXIgQT1cImphdmFzY3JpcHQ6bmljSW1UZW1wKCk7XCI7dGhpcy5uZS5uaWNDb21tYW5kKFwiaW5zZXJ0SW1hZ2VcIixBKTt0aGlzLmltPXRoaXMuZmluZEVsbShcIklNR1wiLFwic3JjXCIsQSl9aWYodGhpcy5pbSl7dGhpcy5pbS5zZXRBdHRyaWJ1dGVzKHtzcmM6dGhpcy5pbnB1dHMuc3JjLnZhbHVlLGFsdDp0aGlzLmlucHV0cy5hbHQudmFsdWUsYWxpZ246dGhpcy5pbnB1dHMuYWxpZ24udmFsdWV9KX19fSk7bmljRWRpdG9ycy5yZWdpc3RlclBsdWdpbihuaWNQbHVnaW4sbmljSW1hZ2VPcHRpb25zKTtcblxuXG52YXIgbmljU2F2ZU9wdGlvbnMgPSB7XG5cdGJ1dHRvbnMgOiB7XG5cdFx0J3NhdmUnIDoge25hbWUgOiBfXygnU2F2ZSB0aGlzIGNvbnRlbnQnKSwgdHlwZSA6ICduaWNFZGl0b3JTYXZlQnV0dG9uJ31cblx0fVxufTtcblxudmFyIG5pY0VkaXRvclNhdmVCdXR0b249bmljRWRpdG9yQnV0dG9uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbigpe2lmKCF0aGlzLm5lLm9wdGlvbnMub25TYXZlKXt0aGlzLm1hcmdpbi5zZXRTdHlsZSh7ZGlzcGxheTpcIm5vbmVcIn0pfX0sbW91c2VDbGljazpmdW5jdGlvbigpe3ZhciBCPXRoaXMubmUub3B0aW9ucy5vblNhdmU7dmFyIEE9dGhpcy5uZS5zZWxlY3RlZEluc3RhbmNlO0IoQS5nZXRDb250ZW50KCksQS5lbG0uaWQsQSl9fSk7bmljRWRpdG9ycy5yZWdpc3RlclBsdWdpbihuaWNQbHVnaW4sbmljU2F2ZU9wdGlvbnMpO1xuXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./resources/js/nicEdit.js\n"); /***/ }), /***/ 1: /*!***************************************!*\ !*** multi ./resources/js/nicEdit.js ***! \***************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(/*! D:\Gabriel_Barros_de_Oliveira\Projetos\radar-php-mobiup\api\resources\js\nicEdit.js */"./resources/js/nicEdit.js"); /***/ }) /******/ });