PageSourceSearch

https://www.roadtonetzero.org.uk/js/vendor.min.js?v=1789995325

js roadtonetzero.org.uk collected 2026-10-07 00:52:36 UTC 1,466,148 bytes, 35,552 lines download raw bytes

1/*!
2 * jQuery JavaScript Library v3.6.0
3 * https://jquery.com/
4 *
5 * Includes Sizzle.js
6 * https://sizzlejs.com/
7 *
8 * Copyright OpenJS Foundation and other contributors
9 * Released under the MIT license
10 * https://jquery.org/license
11 *
12 * Date: 2021-03-02T17:08Z
13 */
14( function( global, factory ) {
15
16	"use strict";
vendor: 6,502 bytes, lines 16-262
16
17
18	if ( typeof module === "object" && typeof module.exports === "object" ) {
19
20		// For CommonJS and CommonJS-like environments where a proper `window`
21		// is present, execute the factory and get jQuery.
22		// For environments that do not have a `window` with a `document`
23		// (such as Node.js), expose a factory as module.exports.
24		// This accentuates the need for the creation of a real `window`.
25		// e.g. var jQuery = require("jquery")(window);
26		// See ticket #14549 for more info.
27		module.exports = global.document ?
28			factory( global, true ) :
29			function( w ) {
30				if ( !w.document ) {
31					throw new Error( "jQuery requires a window with a document" );
32				}
33				return factory( w );
34			};
35	} else {
36		factory( global );
37	}
38
39// Pass this if window is not defined yet
40} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
41
42// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
43// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
44// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
45// enough that all such attempts are guarded in a try block.
46"use strict";
47
48var arr = [];
49
50var getProto = Object.getPrototypeOf;
51
52var slice = arr.slice;
53
54var flat = arr.flat ? function( array ) {
55	return arr.flat.call( array );
56} : function( array ) {
57	return arr.concat.apply( [], array );
58};
59
60
61var push = arr.push;
62
63var indexOf = arr.indexOf;
64
65var class2type = {};
66
67var toString = class2type.toString;
68
69var hasOwn = class2type.hasOwnProperty;
70
71var fnToString = hasOwn.toString;
72
73var ObjectFunctionString = fnToString.call( Object );
74
75var support = {};
76
77var isFunction = function isFunction( obj ) {
78
79		// Support: Chrome <=57, Firefox <=52
80		// In some browsers, typeof returns "function" for HTML <object> elements
81		// (i.e., `typeof document.createElement( "object" ) === "function"`).
82		// We don't want to classify *any* DOM node as a function.
83		// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
84		// Plus for old WebKit, typeof returns "function" for HTML collections
85		// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
86		return typeof obj === "function" && typeof obj.nodeType !== "number" &&
87			typeof obj.item !== "function";
88	};
89
90
91var isWindow = function isWindow( obj ) {
92		return obj != null && obj === obj.window;
93	};
94
95
96var document = window.document;
97
98
99
100	var preservedScriptAttributes = {
101		type: true,
102		src: true,
103		nonce: true,
104		noModule: true
105	};
106
107	function DOMEval( code, node, doc ) {
108		doc = doc || document;
109
110		var i, val,
111			script = doc.createElement( "script" );
112
113		script.text = code;
114		if ( node ) {
115			for ( i in preservedScriptAttributes ) {
116
117				// Support: Firefox 64+, Edge 18+
118				// Some browsers don't support the "nonce" property on scripts.
119				// On the other hand, just using `getAttribute` is not enough as
120				// the `nonce` attribute is reset to an empty string whenever it
121				// becomes browsing-context connected.
122				// See https://github.com/whatwg/html/issues/2369
123				// See https://html.spec.whatwg.org/#nonce-attributes
124				// The `node.getAttribute` check was added for the sake of
125				// `jQuery.globalEval` so that it can fake a nonce-containing node
126				// via an object.
127				val = node[ i ] || node.getAttribute && node.getAttribute( i );
128				if ( val ) {
129					script.setAttribute( i, val );
130				}
131			}
132		}
133		doc.head.appendChild( script ).parentNode.removeChild( script );
134	}
135
136
137function toType( obj ) {
138	if ( obj == null ) {
139		return obj + "";
140	}
141
142	// Support: Android <=2.3 only (functionish RegExp)
143	return typeof obj === "object" || typeof obj === "function" ?
144		class2type[ toString.call( obj ) ] || "object" :
145		typeof obj;
146}
147/* global Symbol */
148// Defining this global in .eslintrc.json would create a danger of using the global
149// unguarded in another place, it seems safer to define global only for this module
150
151
152
153var
154	version = "3.6.0",
155
156	// Define a local copy of jQuery
157	jQuery = function( selector, context ) {
158
159		// The jQuery object is actually just the init constructor 'enhanced'
160		// Need init if jQuery is called (just allow error to be thrown if not included)
161		return new jQuery.fn.init( selector, context );
162	};
163
164jQuery.fn = jQuery.prototype = {
165
166	// The current version of jQuery being used
167	jquery: version,
168
169	constructor: jQuery,
170
171	// The default length of a jQuery object is 0
172	length: 0,
173
174	toArray: function() {
175		return slice.call( this );
176	},
177
178	// Get the Nth element in the matched element set OR
179	// Get the whole matched element set as a clean array
180	get: function( num ) {
181
182		// Return all the elements in a clean array
183		if ( num == null ) {
184			return slice.call( this );
185		}
186
187		// Return just the one element from the set
188		return num < 0 ? this[ num + this.length ] : this[ num ];
189	},
190
191	// Take an array of elements and push it onto the stack
192	// (returning the new matched element set)
193	pushStack: function( elems ) {
194
195		// Build a new jQuery matched element set
196		var ret = jQuery.merge( this.constructor(), elems );
197
198		// Add the old object onto the stack (as a reference)
199		ret.prevObject = this;
200
201		// Return the newly-formed element set
202		return ret;
203	},
204
205	// Execute a callback for every element in the matched set.
206	each: function( callback ) {
207		return jQuery.each( this, callback );
208	},
209
210	map: function( callback ) {
211		return this.pushStack( jQuery.map( this, function( elem, i ) {
212			return callback.call( elem, i, elem );
213		} ) );
214	},
215
216	slice: function() {
217		return this.pushStack( slice.apply( this, arguments ) );
218	},
219
220	first: function() {
221		return this.eq( 0 );
222	},
223
224	last: function() {
225		return this.eq( -1 );
226	},
227
228	even: function() {
229		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
230			return ( i + 1 ) % 2;
231		} ) );
232	},
233
234	odd: function() {
235		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
236			return i % 2;
237		} ) );
238	},
239
240	eq: function( i ) {
241		var len = this.length,
242			j = +i + ( i < 0 ? len : 0 );
243		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
244	},
245
246	end: function() {
247		return this.prevObject || this.constructor();
248	},
249
250	// For internal use only.
251	// Behaves like an Array's method, not like a jQuery method.
252	push: push,
253	sort: arr.sort,
254	splice: arr.splice
255};
256
257jQuery.extend = jQuery.fn.extend = function() {
258	var options, name, src, copy, copyIsArray, clone,
259		target = arguments[ 0 ] || {},
260		i = 1,
261		length = arguments.length,
262		deep = false;
vendor: 180,765 bytes, lines 263-6949
263
264	// Handle a deep copy situation
265	if ( typeof target === "boolean" ) {
266		deep = target;
267
268		// Skip the boolean and the target
269		target = arguments[ i ] || {};
270		i++;
271	}
272
273	// Handle case when target is a string or something (possible in deep copy)
274	if ( typeof target !== "object" && !isFunction( target ) ) {
275		target = {};
276	}
277
278	// Extend jQuery itself if only one argument is passed
279	if ( i === length ) {
280		target = this;
281		i--;
282	}
283
284	for ( ; i < length; i++ ) {
285
286		// Only deal with non-null/undefined values
287		if ( ( options = arguments[ i ] ) != null ) {
288
289			// Extend the base object
290			for ( name in options ) {
291				copy = options[ name ];
292
293				// Prevent Object.prototype pollution
294				// Prevent never-ending loop
295				if ( name === "__proto__" || target === copy ) {
296					continue;
297				}
298
299				// Recurse if we're merging plain objects or arrays
300				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
301					( copyIsArray = Array.isArray( copy ) ) ) ) {
302					src = target[ name ];
303
304					// Ensure proper type for the source value
305					if ( copyIsArray && !Array.isArray( src ) ) {
306						clone = [];
307					} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
308						clone = {};
309					} else {
310						clone = src;
311					}
312					copyIsArray = false;
313
314					// Never move original objects, clone them
315					target[ name ] = jQuery.extend( deep, clone, copy );
316
317				// Don't bring in undefined values
318				} else if ( copy !== undefined ) {
319					target[ name ] = copy;
320				}
321			}
322		}
323	}
324
325	// Return the modified object
326	return target;
327};
328
329jQuery.extend( {
330
331	// Unique for each copy of jQuery on the page
332	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
333
334	// Assume jQuery is ready without the ready module
335	isReady: true,
336
337	error: function( msg ) {
338		throw new Error( msg );
339	},
340
341	noop: function() {},
342
343	isPlainObject: function( obj ) {
344		var proto, Ctor;
345
346		// Detect obvious negatives
347		// Use toString instead of jQuery.type to catch host objects
348		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
349			return false;
350		}
351
352		proto = getProto( obj );
353
354		// Objects with no prototype (e.g., `Object.create( null )`) are plain
355		if ( !proto ) {
356			return true;
357		}
358
359		// Objects with prototype are plain iff they were constructed by a global Object function
360		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
361		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
362	},
363
364	isEmptyObject: function( obj ) {
365		var name;
366
367		for ( name in obj ) {
368			return false;
369		}
370		return true;
371	},
372
373	// Evaluates a script in a provided context; falls back to the global one
374	// if not specified.
375	globalEval: function( code, options, doc ) {
376		DOMEval( code, { nonce: options && options.nonce }, doc );
377	},
378
379	each: function( obj, callback ) {
380		var length, i = 0;
381
382		if ( isArrayLike( obj ) ) {
383			length = obj.length;
384			for ( ; i < length; i++ ) {
385				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
386					break;
387				}
388			}
389		} else {
390			for ( i in obj ) {
391				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
392					break;
393				}
394			}
395		}
396
397		return obj;
398	},
399
400	// results is for internal usage only
401	makeArray: function( arr, results ) {
402		var ret = results || [];
403
404		if ( arr != null ) {
405			if ( isArrayLike( Object( arr ) ) ) {
406				jQuery.merge( ret,
407					typeof arr === "string" ?
408						[ arr ] : arr
409				);
410			} else {
411				push.call( ret, arr );
412			}
413		}
414
415		return ret;
416	},
417
418	inArray: function( elem, arr, i ) {
419		return arr == null ? -1 : indexOf.call( arr, elem, i );
420	},
421
422	// Support: Android <=4.0 only, PhantomJS 1 only
423	// push.apply(_, arraylike) throws on ancient WebKit
424	merge: function( first, second ) {
425		var len = +second.length,
426			j = 0,
427			i = first.length;
428
429		for ( ; j < len; j++ ) {
430			first[ i++ ] = second[ j ];
431		}
432
433		first.length = i;
434
435		return first;
436	},
437
438	grep: function( elems, callback, invert ) {
439		var callbackInverse,
440			matches = [],
441			i = 0,
442			length = elems.length,
443			callbackExpect = !invert;
444
445		// Go through the array, only saving the items
446		// that pass the validator function
447		for ( ; i < length; i++ ) {
448			callbackInverse = !callback( elems[ i ], i );
449			if ( callbackInverse !== callbackExpect ) {
450				matches.push( elems[ i ] );
451			}
452		}
453
454		return matches;
455	},
456
457	// arg is for internal usage only
458	map: function( elems, callback, arg ) {
459		var length, value,
460			i = 0,
461			ret = [];
462
463		// Go through the array, translating each of the items to their new values
464		if ( isArrayLike( elems ) ) {
465			length = elems.length;
466			for ( ; i < length; i++ ) {
467				value = callback( elems[ i ], i, arg );
468
469				if ( value != null ) {
470					ret.push( value );
471				}
472			}
473
474		// Go through every key on the object,
475		} else {
476			for ( i in elems ) {
477				value = callback( elems[ i ], i, arg );
478
479				if ( value != null ) {
480					ret.push( value );
481				}
482			}
483		}
484
485		// Flatten any nested arrays
486		return flat( ret );
487	},
488
489	// A global GUID counter for objects
490	guid: 1,
491
492	// jQuery.support is not used in Core but other projects attach their
493	// properties to it so it needs to exist.
494	support: support
495} );
496
497if ( typeof Symbol === "function" ) {
498	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
499}
500
501// Populate the class2type map
502jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
503	function( _i, name ) {
504		class2type[ "[object " + name + "]" ] = name.toLowerCase();
505	} );
506
507function isArrayLike( obj ) {
508
509	// Support: real iOS 8.2 only (not reproducible in simulator)
510	// `in` check used to prevent JIT error (gh-2145)
511	// hasOwn isn't used here due to false negatives
512	// regarding Nodelist length in IE
513	var length = !!obj && "length" in obj && obj.length,
514		type = toType( obj );
515
516	if ( isFunction( obj ) || isWindow( obj ) ) {
517		return false;
518	}
519
520	return type === "array" || length === 0 ||
521		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
522}
523var Sizzle =
524/*!
525 * Sizzle CSS Selector Engine v2.3.6
526 * https://sizzlejs.com/
527 *
528 * Copyright JS Foundation and other contributors
529 * Released under the MIT license
530 * https://js.foundation/
531 *
532 * Date: 2021-02-16
533 */
534( function( window ) {
535var i,
536	support,
537	Expr,
538	getText,
539	isXML,
540	tokenize,
541	compile,
542	select,
543	outermostContext,
544	sortInput,
545	hasDuplicate,
546
547	// Local document vars
548	setDocument,
549	document,
550	docElem,
551	documentIsHTML,
552	rbuggyQSA,
553	rbuggyMatches,
554	matches,
555	contains,
556
557	// Instance-specific data
558	expando = "sizzle" + 1 * new Date(),
559	preferredDoc = window.document,
560	dirruns = 0,
561	done = 0,
562	classCache = createCache(),
563	tokenCache = createCache(),
564	compilerCache = createCache(),
565	nonnativeSelectorCache = createCache(),
566	sortOrder = function( a, b ) {
567		if ( a === b ) {
568			hasDuplicate = true;
569		}
570		return 0;
571	},
572
573	// Instance methods
574	hasOwn = ( {} ).hasOwnProperty,
575	arr = [],
576	pop = arr.pop,
577	pushNative = arr.push,
578	push = arr.push,
579	slice = arr.slice,
580
581	// Use a stripped-down indexOf as it's faster than native
582	// https://jsperf.com/thor-indexof-vs-for/5
583	indexOf = function( list, elem ) {
584		var i = 0,
585			len = list.length;
586		for ( ; i < len; i++ ) {
587			if ( list[ i ] === elem ) {
588				return i;
589			}
590		}
591		return -1;
592	},
593
594	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
595		"ismap|loop|multiple|open|readonly|required|scoped",
596
597	// Regular expressions
598
599	// http://www.w3.org/TR/css3-selectors/#whitespace
600	whitespace = "[\\x20\\t\\r\\n\\f]",
601
602	// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
603	identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
604		"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
605
606	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
607	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
608
609		// Operator (capture 2)
610		"*([*^$|!~]?=)" + whitespace +
611
612		// "Attribute values must be CSS identifiers [capture 5]
613		// or strings [capture 3 or capture 4]"
614		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
615		whitespace + "*\\]",
616
617	pseudos = ":(" + identifier + ")(?:\\((" +
618
619		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
620		// 1. quoted (capture 3; capture 4 or capture 5)
621		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
622
623		// 2. simple (capture 6)
624		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
625
626		// 3. anything else (capture 2)
627		".*" +
628		")\\)|)",
629
630	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
631	rwhitespace = new RegExp( whitespace + "+", "g" ),
632	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
633		whitespace + "+$", "g" ),
634
635	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
636	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
637		"*" ),
638	rdescend = new RegExp( whitespace + "|>" ),
639
640	rpseudo = new RegExp( pseudos ),
641	ridentifier = new RegExp( "^" + identifier + "$" ),
642
643	matchExpr = {
644		"ID": new RegExp( "^#(" + identifier + ")" ),
645		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
646		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
647		"ATTR": new RegExp( "^" + attributes ),
648		"PSEUDO": new RegExp( "^" + pseudos ),
649		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
650			whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
651			whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
652		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
653
654		// For use in libraries implementing .is()
655		// We use this for POS matching in `select`
656		"needsContext": new RegExp( "^" + whitespace +
657			"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
658			"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
659	},
660
661	rhtml = /HTML$/i,
662	rinputs = /^(?:input|select|textarea|button)$/i,
663	rheader = /^h\d$/i,
664
665	rnative = /^[^{]+\{\s*\[native \w/,
666
667	// Easily-parseable/retrievable ID or TAG or CLASS selectors
668	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
669
670	rsibling = /[+~]/,
671
672	// CSS escapes
673	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
674	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
675	funescape = function( escape, nonHex ) {
676		var high = "0x" + escape.slice( 1 ) - 0x10000;
677
678		return nonHex ?
679
680			// Strip the backslash prefix from a non-hex escape sequence
681			nonHex :
682
683			// Replace a hexadecimal escape sequence with the encoded Unicode code point
684			// Support: IE <=11+
685			// For values outside the Basic Multilingual Plane (BMP), manually construct a
686			// surrogate pair
687			high < 0 ?
688				String.fromCharCode( high + 0x10000 ) :
689				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
690	},
691
692	// CSS string/identifier serialization
693	// https://drafts.csswg.org/cssom/#common-serializing-idioms
694	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
695	fcssescape = function( ch, asCodePoint ) {
696		if ( asCodePoint ) {
697
698			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
699			if ( ch === "\0" ) {
700				return "\uFFFD";
701			}
702
703			// Control characters and (dependent upon position) numbers get escaped as code points
704			return ch.slice( 0, -1 ) + "\\" +
705				ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
706		}
707
708		// Other potentially-special ASCII characters get backslash-escaped
709		return "\\" + ch;
710	},
711
712	// Used for iframes
713	// See setDocument()
714	// Removing the function wrapper causes a "Permission Denied"
715	// error in IE
716	unloadHandler = function() {
717		setDocument();
718	},
719
720	inDisabledFieldset = addCombinator(
721		function( elem ) {
722			return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
723		},
724		{ dir: "parentNode", next: "legend" }
725	);
726
727// Optimize for push.apply( _, NodeList )
728try {
729	push.apply(
730		( arr = slice.call( preferredDoc.childNodes ) ),
731		preferredDoc.childNodes
732	);
733
734	// Support: Android<4.0
735	// Detect silently failing push.apply
736	// eslint-disable-next-line no-unused-expressions
737	arr[ preferredDoc.childNodes.length ].nodeType;
738} catch ( e ) {
739	push = { apply: arr.length ?
740
741		// Leverage slice if possible
742		function( target, els ) {
743			pushNative.apply( target, slice.call( els ) );
744		} :
745
746		// Support: IE<9
747		// Otherwise append directly
748		function( target, els ) {
749			var j = target.length,
750				i = 0;
751
752			// Can't trust NodeList.length
753			while ( ( target[ j++ ] = els[ i++ ] ) ) {}
754			target.length = j - 1;
755		}
756	};
757}
758
759function Sizzle( selector, context, results, seed ) {
760	var m, i, elem, nid, match, groups, newSelector,
761		newContext = context && context.ownerDocument,
762
763		// nodeType defaults to 9, since context defaults to document
764		nodeType = context ? context.nodeType : 9;
765
766	results = results || [];
767
768	// Return early from calls with invalid selector or context
769	if ( typeof selector !== "string" || !selector ||
770		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
771
772		return results;
773	}
774
775	// Try to shortcut find operations (as opposed to filters) in HTML documents
776	if ( !seed ) {
777		setDocument( context );
778		context = context || document;
779
780		if ( documentIsHTML ) {
781
782			// If the selector is sufficiently simple, try using a "get*By*" DOM method
783			// (excepting DocumentFragment context, where the methods don't exist)
784			if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
785
786				// ID selector
787				if ( ( m = match[ 1 ] ) ) {
788
789					// Document context
790					if ( nodeType === 9 ) {
791						if ( ( elem = context.getElementById( m ) ) ) {
792
793							// Support: IE, Opera, Webkit
794							// TODO: identify versions
795							// getElementById can match elements by name instead of ID
796							if ( elem.id === m ) {
797								results.push( elem );
798								return results;
799							}
800						} else {
801							return results;
802						}
803
804					// Element context
805					} else {
806
807						// Support: IE, Opera, Webkit
808						// TODO: identify versions
809						// getElementById can match elements by name instead of ID
810						if ( newContext && ( elem = newContext.getElementById( m ) ) &&
811							contains( context, elem ) &&
812							elem.id === m ) {
813
814							results.push( elem );
815							return results;
816						}
817					}
818
819				// Type selector
820				} else if ( match[ 2 ] ) {
821					push.apply( results, context.getElementsByTagName( selector ) );
822					return results;
823
824				// Class selector
825				} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
826					context.getElementsByClassName ) {
827
828					push.apply( results, context.getElementsByClassName( m ) );
829					return results;
830				}
831			}
832
833			// Take advantage of querySelectorAll
834			if ( support.qsa &&
835				!nonnativeSelectorCache[ selector + " " ] &&
836				( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
837
838				// Support: IE 8 only
839				// Exclude object elements
840				( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
841
842				newSelector = selector;
843				newContext = context;
844
845				// qSA considers elements outside a scoping root when evaluating child or
846				// descendant combinators, which is not what we want.
847				// In such cases, we work around the behavior by prefixing every selector in the
848				// list with an ID selector referencing the scope context.
849				// The technique has to be used as well when a leading combinator is used
850				// as such selectors are not recognized by querySelectorAll.
851				// Thanks to Andrew Dupont for this technique.
852				if ( nodeType === 1 &&
853					( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
854
855					// Expand context for sibling selectors
856					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
857						context;
858
859					// We can use :scope instead of the ID hack if the browser
860					// supports it & if we're not changing the context.
861					if ( newContext !== context || !support.scope ) {
862
863						// Capture the context ID, setting it first if necessary
864						if ( ( nid = context.getAttribute( "id" ) ) ) {
865							nid = nid.replace( rcssescape, fcssescape );
866						} else {
867							context.setAttribute( "id", ( nid = expando ) );
868						}
869					}
870
871					// Prefix every selector in the list
872					groups = tokenize( selector );
873					i = groups.length;
874					while ( i-- ) {
875						groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
876							toSelector( groups[ i ] );
877					}
878					newSelector = groups.join( "," );
879				}
880
881				try {
882					push.apply( results,
883						newContext.querySelectorAll( newSelector )
884					);
885					return results;
886				} catch ( qsaError ) {
887					nonnativeSelectorCache( selector, true );
888				} finally {
889					if ( nid === expando ) {
890						context.removeAttribute( "id" );
891					}
892				}
893			}
894		}
895	}
896
897	// All others
898	return select( selector.replace( rtrim, "$1" ), context, results, seed );
899}
900
901/**
902 * Create key-value caches of limited size
903 * @returns {function(string, object)} Returns the Object data after storing it on itself with
904 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
905 *	deleting the oldest entry
906 */
907function createCache() {
908	var keys = [];
909
910	function cache( key, value ) {
911
912		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
913		if ( keys.push( key + " " ) > Expr.cacheLength ) {
914
915			// Only keep the most recent entries
916			delete cache[ keys.shift() ];
917		}
918		return ( cache[ key + " " ] = value );
919	}
920	return cache;
921}
922
923/**
924 * Mark a function for special use by Sizzle
925 * @param {Function} fn The function to mark
926 */
927function markFunction( fn ) {
928	fn[ expando ] = true;
929	return fn;
930}
931
932/**
933 * Support testing using an element
934 * @param {Function} fn Passed the created element and returns a boolean result
935 */
936function assert( fn ) {
937	var el = document.createElement( "fieldset" );
938
939	try {
940		return !!fn( el );
941	} catch ( e ) {
942		return false;
943	} finally {
944
945		// Remove from its parent by default
946		if ( el.parentNode ) {
947			el.parentNode.removeChild( el );
948		}
949
950		// release memory in IE
951		el = null;
952	}
953}
954
955/**
956 * Adds the same handler for all of the specified attrs
957 * @param {String} attrs Pipe-separated list of attributes
958 * @param {Function} handler The method that will be applied
959 */
960function addHandle( attrs, handler ) {
961	var arr = attrs.split( "|" ),
962		i = arr.length;
963
964	while ( i-- ) {
965		Expr.attrHandle[ arr[ i ] ] = handler;
966	}
967}
968
969/**
970 * Checks document order of two siblings
971 * @param {Element} a
972 * @param {Element} b
973 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
974 */
975function siblingCheck( a, b ) {
976	var cur = b && a,
977		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
978			a.sourceIndex - b.sourceIndex;
979
980	// Use IE sourceIndex if available on both nodes
981	if ( diff ) {
982		return diff;
983	}
984
985	// Check if b follows a
986	if ( cur ) {
987		while ( ( cur = cur.nextSibling ) ) {
988			if ( cur === b ) {
989				return -1;
990			}
991		}
992	}
993
994	return a ? 1 : -1;
995}
996
997/**
998 * Returns a function to use in pseudos for input types
999 * @param {String} type
1000 */
1001function createInputPseudo( type ) {
1002	return function( elem ) {
1003		var name = elem.nodeName.toLowerCase();
1004		return name === "input" && elem.type === type;
1005	};
1006}
1007
1008/**
1009 * Returns a function to use in pseudos for buttons
1010 * @param {String} type
1011 */
1012function createButtonPseudo( type ) {
1013	return function( elem ) {
1014		var name = elem.nodeName.toLowerCase();
1015		return ( name === "input" || name === "button" ) && elem.type === type;
1016	};
1017}
1018
1019/**
1020 * Returns a function to use in pseudos for :enabled/:disabled
1021 * @param {Boolean} disabled true for :disabled; false for :enabled
1022 */
1023function createDisabledPseudo( disabled ) {
1024
1025	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
1026	return function( elem ) {
1027
1028		// Only certain elements can match :enabled or :disabled
1029		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
1030		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
1031		if ( "form" in elem ) {
1032
1033			// Check for inherited disabledness on relevant non-disabled elements:
1034			// * listed form-associated elements in a disabled fieldset
1035			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
1036			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
1037			// * option elements in a disabled optgroup
1038			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
1039			// All such elements have a "form" property.
1040			if ( elem.parentNode && elem.disabled === false ) {
1041
1042				// Option elements defer to a parent optgroup if present
1043				if ( "label" in elem ) {
1044					if ( "label" in elem.parentNode ) {
1045						return elem.parentNode.disabled === disabled;
1046					} else {
1047						return elem.disabled === disabled;
1048					}
1049				}
1050
1051				// Support: IE 6 - 11
1052				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
1053				return elem.isDisabled === disabled ||
1054
1055					// Where there is no isDisabled, check manually
1056					/* jshint -W018 */
1057					elem.isDisabled !== !disabled &&
1058					inDisabledFieldset( elem ) === disabled;
1059			}
1060
1061			return elem.disabled === disabled;
1062
1063		// Try to winnow out elements that can't be disabled before trusting the disabled property.
1064		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1065		// even exist on them, let alone have a boolean value.
1066		} else if ( "label" in elem ) {
1067			return elem.disabled === disabled;
1068		}
1069
1070		// Remaining elements are neither :enabled nor :disabled
1071		return false;
1072	};
1073}
1074
1075/**
1076 * Returns a function to use in pseudos for positionals
1077 * @param {Function} fn
1078 */
1079function createPositionalPseudo( fn ) {
1080	return markFunction( function( argument ) {
1081		argument = +argument;
1082		return markFunction( function( seed, matches ) {
1083			var j,
1084				matchIndexes = fn( [], seed.length, argument ),
1085				i = matchIndexes.length;
1086
1087			// Match elements found at the specified indexes
1088			while ( i-- ) {
1089				if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
1090					seed[ j ] = !( matches[ j ] = seed[ j ] );
1091				}
1092			}
1093		} );
1094	} );
1095}
1096
1097/**
1098 * Checks a node for validity as a Sizzle context
1099 * @param {Element|Object=} context
1100 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1101 */
1102function testContext( context ) {
1103	return context && typeof context.getElementsByTagName !== "undefined" && context;
1104}
1105
1106// Expose support vars for convenience
1107support = Sizzle.support = {};
1108
1109/**
1110 * Detects XML nodes
1111 * @param {Element|Object} elem An element or a document
1112 * @returns {Boolean} True iff elem is a non-HTML XML node
1113 */
1114isXML = Sizzle.isXML = function( elem ) {
1115	var namespace = elem && elem.namespaceURI,
1116		docElem = elem && ( elem.ownerDocument || elem ).documentElement;
1117
1118	// Support: IE <=8
1119	// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
1120	// https://bugs.jquery.com/ticket/4833
1121	return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
1122};
1123
1124/**
1125 * Sets document-related variables once based on the current document
1126 * @param {Element|Object} [doc] An element or document object to use to set the document
1127 * @returns {Object} Returns the current document
1128 */
1129setDocument = Sizzle.setDocument = function( node ) {
1130	var hasCompare, subWindow,
1131		doc = node ? node.ownerDocument || node : preferredDoc;
1132
1133	// Return early if doc is invalid or already selected
1134	// Support: IE 11+, Edge 17 - 18+
1135	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1136	// two documents; shallow comparisons work.
1137	// eslint-disable-next-line eqeqeq
1138	if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
1139		return document;
1140	}
1141
1142	// Update global variables
1143	document = doc;
1144	docElem = document.documentElement;
1145	documentIsHTML = !isXML( document );
1146
1147	// Support: IE 9 - 11+, Edge 12 - 18+
1148	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1149	// Support: IE 11+, Edge 17 - 18+
1150	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1151	// two documents; shallow comparisons work.
1152	// eslint-disable-next-line eqeqeq
1153	if ( preferredDoc != document &&
1154		( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
1155
1156		// Support: IE 11, Edge
1157		if ( subWindow.addEventListener ) {
1158			subWindow.addEventListener( "unload", unloadHandler, false );
1159
1160		// Support: IE 9 - 10 only
1161		} else if ( subWindow.attachEvent ) {
1162			subWindow.attachEvent( "onunload", unloadHandler );
1163		}
1164	}
1165
1166	// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
1167	// Safari 4 - 5 only, Opera <=11.6 - 12.x only
1168	// IE/Edge & older browsers don't support the :scope pseudo-class.
1169	// Support: Safari 6.0 only
1170	// Safari 6.0 supports :scope but it's an alias of :root there.
1171	support.scope = assert( function( el ) {
1172		docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
1173		return typeof el.querySelectorAll !== "undefined" &&
1174			!el.querySelectorAll( ":scope fieldset div" ).length;
1175	} );
1176
1177	/* Attributes
1178	---------------------------------------------------------------------- */
1179
1180	// Support: IE<8
1181	// Verify that getAttribute really returns attributes and not properties
1182	// (excepting IE8 booleans)
1183	support.attributes = assert( function( el ) {
1184		el.className = "i";
1185		return !el.getAttribute( "className" );
1186	} );
1187
1188	/* getElement(s)By*
1189	---------------------------------------------------------------------- */
1190
1191	// Check if getElementsByTagName("*") returns only elements
1192	support.getElementsByTagName = assert( function( el ) {
1193		el.appendChild( document.createComment( "" ) );
1194		return !el.getElementsByTagName( "*" ).length;
1195	} );
1196
1197	// Support: IE<9
1198	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
1199
1200	// Support: IE<10
1201	// Check if getElementById returns elements by name
1202	// The broken getElementById methods don't pick up programmatically-set names,
1203	// so use a roundabout getElementsByName test
1204	support.getById = assert( function( el ) {
1205		docElem.appendChild( el ).id = expando;
1206		return !document.getElementsByName || !document.getElementsByName( expando ).length;
1207	} );
1208
1209	// ID filter and find
1210	if ( support.getById ) {
1211		Expr.filter[ "ID" ] = function( id ) {
1212			var attrId = id.replace( runescape, funescape );
1213			return function( elem ) {
1214				return elem.getAttribute( "id" ) === attrId;
1215			};
1216		};
1217		Expr.find[ "ID" ] = function( id, context ) {
1218			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1219				var elem = context.getElementById( id );
1220				return elem ? [ elem ] : [];
1221			}
1222		};
1223	} else {
1224		Expr.filter[ "ID" ] =  function( id ) {
1225			var attrId = id.replace( runescape, funescape );
1226			return function( elem ) {
1227				var node = typeof elem.getAttributeNode !== "undefined" &&
1228					elem.getAttributeNode( "id" );
1229				return node && node.value === attrId;
1230			};
1231		};
1232
1233		// Support: IE 6 - 7 only
1234		// getElementById is not reliable as a find shortcut
1235		Expr.find[ "ID" ] = function( id, context ) {
1236			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1237				var node, i, elems,
1238					elem = context.getElementById( id );
1239
1240				if ( elem ) {
1241
1242					// Verify the id attribute
1243					node = elem.getAttributeNode( "id" );
1244					if ( node && node.value === id ) {
1245						return [ elem ];
1246					}
1247
1248					// Fall back on getElementsByName
1249					elems = context.getElementsByName( id );
1250					i = 0;
1251					while ( ( elem = elems[ i++ ] ) ) {
1252						node = elem.getAttributeNode( "id" );
1253						if ( node && node.value === id ) {
1254							return [ elem ];
1255						}
1256					}
1257				}
1258
1259				return [];
1260			}
1261		};
1262	}
1263
1264	// Tag
1265	Expr.find[ "TAG" ] = support.getElementsByTagName ?
1266		function( tag, context ) {
1267			if ( typeof context.getElementsByTagName !== "undefined" ) {
1268				return context.getElementsByTagName( tag );
1269
1270			// DocumentFragment nodes don't have gEBTN
1271			} else if ( support.qsa ) {
1272				return context.querySelectorAll( tag );
1273			}
1274		} :
1275
1276		function( tag, context ) {
1277			var elem,
1278				tmp = [],
1279				i = 0,
1280
1281				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1282				results = context.getElementsByTagName( tag );
1283
1284			// Filter out possible comments
1285			if ( tag === "*" ) {
1286				while ( ( elem = results[ i++ ] ) ) {
1287					if ( elem.nodeType === 1 ) {
1288						tmp.push( elem );
1289					}
1290				}
1291
1292				return tmp;
1293			}
1294			return results;
1295		};
1296
1297	// Class
1298	Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
1299		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1300			return context.getElementsByClassName( className );
1301		}
1302	};
1303
1304	/* QSA/matchesSelector
1305	---------------------------------------------------------------------- */
1306
1307	// QSA and matchesSelector support
1308
1309	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1310	rbuggyMatches = [];
1311
1312	// qSa(:focus) reports false when true (Chrome 21)
1313	// We allow this because of a bug in IE8/9 that throws an error
1314	// whenever `document.activeElement` is accessed on an iframe
1315	// So, we allow :focus to pass through QSA all the time to avoid the IE error
1316	// See https://bugs.jquery.com/ticket/13378
1317	rbuggyQSA = [];
1318
1319	if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
1320
1321		// Build QSA regex
1322		// Regex strategy adopted from Diego Perini
1323		assert( function( el ) {
1324
1325			var input;
1326
1327			// Select is set to empty string on purpose
1328			// This is to test IE's treatment of not explicitly
1329			// setting a boolean content attribute,
1330			// since its presence should be enough
1331			// https://bugs.jquery.com/ticket/12359
1332			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
1333				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
1334				"<option selected=''></option></select>";
1335
1336			// Support: IE8, Opera 11-12.16
1337			// Nothing should be selected when empty strings follow ^= or $= or *=
1338			// The test attribute must be unknown in Opera but "safe" for WinRT
1339			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1340			if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
1341				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1342			}
1343
1344			// Support: IE8
1345			// Boolean attributes and "value" are not treated correctly
1346			if ( !el.querySelectorAll( "[selected]" ).length ) {
1347				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1348			}
1349
1350			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1351			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1352				rbuggyQSA.push( "~=" );
1353			}
1354
1355			// Support: IE 11+, Edge 15 - 18+
1356			// IE 11/Edge don't find elements on a `[name='']` query in some cases.
1357			// Adding a temporary attribute to the document before the selection works
1358			// around the issue.
1359			// Interestingly, IE 10 & older don't seem to have the issue.
1360			input = document.createElement( "input" );
1361			input.setAttribute( "name", "" );
1362			el.appendChild( input );
1363			if ( !el.querySelectorAll( "[name='']" ).length ) {
1364				rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
1365					whitespace + "*(?:''|\"\")" );
1366			}
1367
1368			// Webkit/Opera - :checked should return selected option elements
1369			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1370			// IE8 throws error here and will not see later tests
1371			if ( !el.querySelectorAll( ":checked" ).length ) {
1372				rbuggyQSA.push( ":checked" );
1373			}
1374
1375			// Support: Safari 8+, iOS 8+
1376			// https://bugs.webkit.org/show_bug.cgi?id=136851
1377			// In-page `selector#id sibling-combinator selector` fails
1378			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1379				rbuggyQSA.push( ".#.+[+~]" );
1380			}
1381
1382			// Support: Firefox <=3.6 - 5 only
1383			// Old Firefox doesn't throw on a badly-escaped identifier.
1384			el.querySelectorAll( "\\\f" );
1385			rbuggyQSA.push( "[\\r\\n\\f]" );
1386		} );
1387
1388		assert( function( el ) {
1389			el.innerHTML = "<a href='' disabled='disabled'></a>" +
1390				"<select disabled='disabled'><option/></select>";
1391
1392			// Support: Windows 8 Native Apps
1393			// The type and name attributes are restricted during .innerHTML assignment
1394			var input = document.createElement( "input" );
1395			input.setAttribute( "type", "hidden" );
1396			el.appendChild( input ).setAttribute( "name", "D" );
1397
1398			// Support: IE8
1399			// Enforce case-sensitivity of name attribute
1400			if ( el.querySelectorAll( "[name=d]" ).length ) {
1401				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1402			}
1403
1404			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1405			// IE8 throws error here and will not see later tests
1406			if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
1407				rbuggyQSA.push( ":enabled", ":disabled" );
1408			}
1409
1410			// Support: IE9-11+
1411			// IE's :disabled selector does not pick up the children of disabled fieldsets
1412			docElem.appendChild( el ).disabled = true;
1413			if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
1414				rbuggyQSA.push( ":enabled", ":disabled" );
1415			}
1416
1417			// Support: Opera 10 - 11 only
1418			// Opera 10-11 does not throw on post-comma invalid pseudos
1419			el.querySelectorAll( "*,:x" );
1420			rbuggyQSA.push( ",.*:" );
1421		} );
1422	}
1423
1424	if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
1425		docElem.webkitMatchesSelector ||
1426		docElem.mozMatchesSelector ||
1427		docElem.oMatchesSelector ||
1428		docElem.msMatchesSelector ) ) ) ) {
1429
1430		assert( function( el ) {
1431
1432			// Check to see if it's possible to do matchesSelector
1433			// on a disconnected node (IE 9)
1434			support.disconnectedMatch = matches.call( el, "*" );
1435
1436			// This should fail with an exception
1437			// Gecko does not error, returns false instead
1438			matches.call( el, "[s!='']:x" );
1439			rbuggyMatches.push( "!=", pseudos );
1440		} );
1441	}
1442
1443	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
1444	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
1445
1446	/* Contains
1447	---------------------------------------------------------------------- */
1448	hasCompare = rnative.test( docElem.compareDocumentPosition );
1449
1450	// Element contains another
1451	// Purposefully self-exclusive
1452	// As in, an element does not contain itself
1453	contains = hasCompare || rnative.test( docElem.contains ) ?
1454		function( a, b ) {
1455			var adown = a.nodeType === 9 ? a.documentElement : a,
1456				bup = b && b.parentNode;
1457			return a === bup || !!( bup && bup.nodeType === 1 && (
1458				adown.contains ?
1459					adown.contains( bup ) :
1460					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1461			) );
1462		} :
1463		function( a, b ) {
1464			if ( b ) {
1465				while ( ( b = b.parentNode ) ) {
1466					if ( b === a ) {
1467						return true;
1468					}
1469				}
1470			}
1471			return false;
1472		};
1473
1474	/* Sorting
1475	---------------------------------------------------------------------- */
1476
1477	// Document order sorting
1478	sortOrder = hasCompare ?
1479	function( a, b ) {
1480
1481		// Flag for duplicate removal
1482		if ( a === b ) {
1483			hasDuplicate = true;
1484			return 0;
1485		}
1486
1487		// Sort on method existence if only one input has compareDocumentPosition
1488		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1489		if ( compare ) {
1490			return compare;
1491		}
1492
1493		// Calculate position if both inputs belong to the same document
1494		// Support: IE 11+, Edge 17 - 18+
1495		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1496		// two documents; shallow comparisons work.
1497		// eslint-disable-next-line eqeqeq
1498		compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
1499			a.compareDocumentPosition( b ) :
1500
1501			// Otherwise we know they are disconnected
1502			1;
1503
1504		// Disconnected nodes
1505		if ( compare & 1 ||
1506			( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
1507
1508			// Choose the first element that is related to our preferred document
1509			// Support: IE 11+, Edge 17 - 18+
1510			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1511			// two documents; shallow comparisons work.
1512			// eslint-disable-next-line eqeqeq
1513			if ( a == document || a.ownerDocument == preferredDoc &&
1514				contains( preferredDoc, a ) ) {
1515				return -1;
1516			}
1517
1518			// Support: IE 11+, Edge 17 - 18+
1519			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1520			// two documents; shallow comparisons work.
1521			// eslint-disable-next-line eqeqeq
1522			if ( b == document || b.ownerDocument == preferredDoc &&
1523				contains( preferredDoc, b ) ) {
1524				return 1;
1525			}
1526
1527			// Maintain original order
1528			return sortInput ?
1529				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1530				0;
1531		}
1532
1533		return compare & 4 ? -1 : 1;
1534	} :
1535	function( a, b ) {
1536
1537		// Exit early if the nodes are identical
1538		if ( a === b ) {
1539			hasDuplicate = true;
1540			return 0;
1541		}
1542
1543		var cur,
1544			i = 0,
1545			aup = a.parentNode,
1546			bup = b.parentNode,
1547			ap = [ a ],
1548			bp = [ b ];
1549
1550		// Parentless nodes are either documents or disconnected
1551		if ( !aup || !bup ) {
1552
1553			// Support: IE 11+, Edge 17 - 18+
1554			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1555			// two documents; shallow comparisons work.
1556			/* eslint-disable eqeqeq */
1557			return a == document ? -1 :
1558				b == document ? 1 :
1559				/* eslint-enable eqeqeq */
1560				aup ? -1 :
1561				bup ? 1 :
1562				sortInput ?
1563				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
1564				0;
1565
1566		// If the nodes are siblings, we can do a quick check
1567		} else if ( aup === bup ) {
1568			return siblingCheck( a, b );
1569		}
1570
1571		// Otherwise we need full lists of their ancestors for comparison
1572		cur = a;
1573		while ( ( cur = cur.parentNode ) ) {
1574			ap.unshift( cur );
1575		}
1576		cur = b;
1577		while ( ( cur = cur.parentNode ) ) {
1578			bp.unshift( cur );
1579		}
1580
1581		// Walk down the tree looking for a discrepancy
1582		while ( ap[ i ] === bp[ i ] ) {
1583			i++;
1584		}
1585
1586		return i ?
1587
1588			// Do a sibling check if the nodes have a common ancestor
1589			siblingCheck( ap[ i ], bp[ i ] ) :
1590
1591			// Otherwise nodes in our document sort first
1592			// Support: IE 11+, Edge 17 - 18+
1593			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1594			// two documents; shallow comparisons work.
1595			/* eslint-disable eqeqeq */
1596			ap[ i ] == preferredDoc ? -1 :
1597			bp[ i ] == preferredDoc ? 1 :
1598			/* eslint-enable eqeqeq */
1599			0;
1600	};
1601
1602	return document;
1603};
1604
1605Sizzle.matches = function( expr, elements ) {
1606	return Sizzle( expr, null, null, elements );
1607};
1608
1609Sizzle.matchesSelector = function( elem, expr ) {
1610	setDocument( elem );
1611
1612	if ( support.matchesSelector && documentIsHTML &&
1613		!nonnativeSelectorCache[ expr + " " ] &&
1614		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1615		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
1616
1617		try {
1618			var ret = matches.call( elem, expr );
1619
1620			// IE 9's matchesSelector returns false on disconnected nodes
1621			if ( ret || support.disconnectedMatch ||
1622
1623				// As well, disconnected nodes are said to be in a document
1624				// fragment in IE 9
1625				elem.document && elem.document.nodeType !== 11 ) {
1626				return ret;
1627			}
1628		} catch ( e ) {
1629			nonnativeSelectorCache( expr, true );
1630		}
1631	}
1632
1633	return Sizzle( expr, document, null, [ elem ] ).length > 0;
1634};
1635
1636Sizzle.contains = function( context, elem ) {
1637
1638	// Set document vars if needed
1639	// Support: IE 11+, Edge 17 - 18+
1640	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1641	// two documents; shallow comparisons work.
1642	// eslint-disable-next-line eqeqeq
1643	if ( ( context.ownerDocument || context ) != document ) {
1644		setDocument( context );
1645	}
1646	return contains( context, elem );
1647};
1648
1649Sizzle.attr = function( elem, name ) {
1650
1651	// Set document vars if needed
1652	// Support: IE 11+, Edge 17 - 18+
1653	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1654	// two documents; shallow comparisons work.
1655	// eslint-disable-next-line eqeqeq
1656	if ( ( elem.ownerDocument || elem ) != document ) {
1657		setDocument( elem );
1658	}
1659
1660	var fn = Expr.attrHandle[ name.toLowerCase() ],
1661
1662		// Don't get fooled by Object.prototype properties (jQuery #13807)
1663		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1664			fn( elem, name, !documentIsHTML ) :
1665			undefined;
1666
1667	return val !== undefined ?
1668		val :
1669		support.attributes || !documentIsHTML ?
1670			elem.getAttribute( name ) :
1671			( val = elem.getAttributeNode( name ) ) && val.specified ?
1672				val.value :
1673				null;
1674};
1675
1676Sizzle.escape = function( sel ) {
1677	return ( sel + "" ).replace( rcssescape, fcssescape );
1678};
1679
1680Sizzle.error = function( msg ) {
1681	throw new Error( "Syntax error, unrecognized expression: " + msg );
1682};
1683
1684/**
1685 * Document sorting and removing duplicates
1686 * @param {ArrayLike} results
1687 */
1688Sizzle.uniqueSort = function( results ) {
1689	var elem,
1690		duplicates = [],
1691		j = 0,
1692		i = 0;
1693
1694	// Unless we *know* we can detect duplicates, assume their presence
1695	hasDuplicate = !support.detectDuplicates;
1696	sortInput = !support.sortStable && results.slice( 0 );
1697	results.sort( sortOrder );
1698
1699	if ( hasDuplicate ) {
1700		while ( ( elem = results[ i++ ] ) ) {
1701			if ( elem === results[ i ] ) {
1702				j = duplicates.push( i );
1703			}
1704		}
1705		while ( j-- ) {
1706			results.splice( duplicates[ j ], 1 );
1707		}
1708	}
1709
1710	// Clear input after sorting to release objects
1711	// See https://github.com/jquery/sizzle/pull/225
1712	sortInput = null;
1713
1714	return results;
1715};
1716
1717/**
1718 * Utility function for retrieving the text value of an array of DOM nodes
1719 * @param {Array|Element} elem
1720 */
1721getText = Sizzle.getText = function( elem ) {
1722	var node,
1723		ret = "",
1724		i = 0,
1725		nodeType = elem.nodeType;
1726
1727	if ( !nodeType ) {
1728
1729		// If no nodeType, this is expected to be an array
1730		while ( ( node = elem[ i++ ] ) ) {
1731
1732			// Do not traverse comment nodes
1733			ret += getText( node );
1734		}
1735	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1736
1737		// Use textContent for elements
1738		// innerText usage removed for consistency of new lines (jQuery #11153)
1739		if ( typeof elem.textContent === "string" ) {
1740			return elem.textContent;
1741		} else {
1742
1743			// Traverse its children
1744			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1745				ret += getText( elem );
1746			}
1747		}
1748	} else if ( nodeType === 3 || nodeType === 4 ) {
1749		return elem.nodeValue;
1750	}
1751
1752	// Do not include comment or processing instruction nodes
1753
1754	return ret;
1755};
1756
1757Expr = Sizzle.selectors = {
1758
1759	// Can be adjusted by the user
1760	cacheLength: 50,
1761
1762	createPseudo: markFunction,
1763
1764	match: matchExpr,
1765
1766	attrHandle: {},
1767
1768	find: {},
1769
1770	relative: {
1771		">": { dir: "parentNode", first: true },
1772		" ": { dir: "parentNode" },
1773		"+": { dir: "previousSibling", first: true },
1774		"~": { dir: "previousSibling" }
1775	},
1776
1777	preFilter: {
1778		"ATTR": function( match ) {
1779			match[ 1 ] = match[ 1 ].replace( runescape, funescape );
1780
1781			// Move the given value to match[3] whether quoted or unquoted
1782			match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
1783				match[ 5 ] || "" ).replace( runescape, funescape );
1784
1785			if ( match[ 2 ] === "~=" ) {
1786				match[ 3 ] = " " + match[ 3 ] + " ";
1787			}
1788
1789			return match.slice( 0, 4 );
1790		},
1791
1792		"CHILD": function( match ) {
1793
1794			/* matches from matchExpr["CHILD"]
1795				1 type (only|nth|...)
1796				2 what (child|of-type)
1797				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1798				4 xn-component of xn+y argument ([+-]?\d*n|)
1799				5 sign of xn-component
1800				6 x of xn-component
1801				7 sign of y-component
1802				8 y of y-component
1803			*/
1804			match[ 1 ] = match[ 1 ].toLowerCase();
1805
1806			if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
1807
1808				// nth-* requires argument
1809				if ( !match[ 3 ] ) {
1810					Sizzle.error( match[ 0 ] );
1811				}
1812
1813				// numeric x and y parameters for Expr.filter.CHILD
1814				// remember that false/true cast respectively to 0/1
1815				match[ 4 ] = +( match[ 4 ] ?
1816					match[ 5 ] + ( match[ 6 ] || 1 ) :
1817					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
1818				match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
1819
1820				// other types prohibit arguments
1821			} else if ( match[ 3 ] ) {
1822				Sizzle.error( match[ 0 ] );
1823			}
1824
1825			return match;
1826		},
1827
1828		"PSEUDO": function( match ) {
1829			var excess,
1830				unquoted = !match[ 6 ] && match[ 2 ];
1831
1832			if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
1833				return null;
1834			}
1835
1836			// Accept quoted arguments as-is
1837			if ( match[ 3 ] ) {
1838				match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
1839
1840			// Strip excess characters from unquoted arguments
1841			} else if ( unquoted && rpseudo.test( unquoted ) &&
1842
1843				// Get excess from tokenize (recursively)
1844				( excess = tokenize( unquoted, true ) ) &&
1845
1846				// advance to the next closing parenthesis
1847				( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
1848
1849				// excess is a negative index
1850				match[ 0 ] = match[ 0 ].slice( 0, excess );
1851				match[ 2 ] = unquoted.slice( 0, excess );
1852			}
1853
1854			// Return only captures needed by the pseudo filter method (type and argument)
1855			return match.slice( 0, 3 );
1856		}
1857	},
1858
1859	filter: {
1860
1861		"TAG": function( nodeNameSelector ) {
1862			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1863			return nodeNameSelector === "*" ?
1864				function() {
1865					return true;
1866				} :
1867				function( elem ) {
1868					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1869				};
1870		},
1871
1872		"CLASS": function( className ) {
1873			var pattern = classCache[ className + " " ];
1874
1875			return pattern ||
1876				( pattern = new RegExp( "(^|" + whitespace +
1877					")" + className + "(" + whitespace + "|$)" ) ) && classCache(
1878						className, function( elem ) {
1879							return pattern.test(
1880								typeof elem.className === "string" && elem.className ||
1881								typeof elem.getAttribute !== "undefined" &&
1882									elem.getAttribute( "class" ) ||
1883								""
1884							);
1885				} );
1886		},
1887
1888		"ATTR": function( name, operator, check ) {
1889			return function( elem ) {
1890				var result = Sizzle.attr( elem, name );
1891
1892				if ( result == null ) {
1893					return operator === "!=";
1894				}
1895				if ( !operator ) {
1896					return true;
1897				}
1898
1899				result += "";
1900
1901				/* eslint-disable max-len */
1902
1903				return operator === "=" ? result === check :
1904					operator === "!=" ? result !== check :
1905					operator === "^=" ? check && result.indexOf( check ) === 0 :
1906					operator === "*=" ? check && result.indexOf( check ) > -1 :
1907					operator === "$=" ? check && result.slice( -check.length ) === check :
1908					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
1909					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1910					false;
1911				/* eslint-enable max-len */
1912
1913			};
1914		},
1915
1916		"CHILD": function( type, what, _argument, first, last ) {
1917			var simple = type.slice( 0, 3 ) !== "nth",
1918				forward = type.slice( -4 ) !== "last",
1919				ofType = what === "of-type";
1920
1921			return first === 1 && last === 0 ?
1922
1923				// Shortcut for :nth-*(n)
1924				function( elem ) {
1925					return !!elem.parentNode;
1926				} :
1927
1928				function( elem, _context, xml ) {
1929					var cache, uniqueCache, outerCache, node, nodeIndex, start,
1930						dir = simple !== forward ? "nextSibling" : "previousSibling",
1931						parent = elem.parentNode,
1932						name = ofType && elem.nodeName.toLowerCase(),
1933						useCache = !xml && !ofType,
1934						diff = false;
1935
1936					if ( parent ) {
1937
1938						// :(first|last|only)-(child|of-type)
1939						if ( simple ) {
1940							while ( dir ) {
1941								node = elem;
1942								while ( ( node = node[ dir ] ) ) {
1943									if ( ofType ?
1944										node.nodeName.toLowerCase() === name :
1945										node.nodeType === 1 ) {
1946
1947										return false;
1948									}
1949								}
1950
1951								// Reverse direction for :only-* (if we haven't yet done so)
1952								start = dir = type === "only" && !start && "nextSibling";
1953							}
1954							return true;
1955						}
1956
1957						start = [ forward ? parent.firstChild : parent.lastChild ];
1958
1959						// non-xml :nth-child(...) stores cache data on `parent`
1960						if ( forward && useCache ) {
1961
1962							// Seek `elem` from a previously-cached index
1963
1964							// ...in a gzip-friendly way
1965							node = parent;
1966							outerCache = node[ expando ] || ( node[ expando ] = {} );
1967
1968							// Support: IE <9 only
1969							// Defend against cloned attroperties (jQuery gh-1709)
1970							uniqueCache = outerCache[ node.uniqueID ] ||
1971								( outerCache[ node.uniqueID ] = {} );
1972
1973							cache = uniqueCache[ type ] || [];
1974							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1975							diff = nodeIndex && cache[ 2 ];
1976							node = nodeIndex && parent.childNodes[ nodeIndex ];
1977
1978							while ( ( node = ++nodeIndex && node && node[ dir ] ||
1979
1980								// Fallback to seeking `elem` from the start
1981								( diff = nodeIndex = 0 ) || start.pop() ) ) {
1982
1983								// When found, cache indexes on `parent` and break
1984								if ( node.nodeType === 1 && ++diff && node === elem ) {
1985									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
1986									break;
1987								}
1988							}
1989
1990						} else {
1991
1992							// Use previously-cached element index if available
1993							if ( useCache ) {
1994
1995								// ...in a gzip-friendly way
1996								node = elem;
1997								outerCache = node[ expando ] || ( node[ expando ] = {} );
1998
1999								// Support: IE <9 only
2000								// Defend against cloned attroperties (jQuery gh-1709)
2001								uniqueCache = outerCache[ node.uniqueID ] ||
2002									( outerCache[ node.uniqueID ] = {} );
2003
2004								cache = uniqueCache[ type ] || [];
2005								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
2006								diff = nodeIndex;
2007							}
2008
2009							// xml :nth-child(...)
2010							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
2011							if ( diff === false ) {
2012
2013								// Use the same loop as above to seek `elem` from the start
2014								while ( ( node = ++nodeIndex && node && node[ dir ] ||
2015									( diff = nodeIndex = 0 ) || start.pop() ) ) {
2016
2017									if ( ( ofType ?
2018										node.nodeName.toLowerCase() === name :
2019										node.nodeType === 1 ) &&
2020										++diff ) {
2021
2022										// Cache the index of each encountered element
2023										if ( useCache ) {
2024											outerCache = node[ expando ] ||
2025												( node[ expando ] = {} );
2026
2027											// Support: IE <9 only
2028											// Defend against cloned attroperties (jQuery gh-1709)
2029											uniqueCache = outerCache[ node.uniqueID ] ||
2030												( outerCache[ node.uniqueID ] = {} );
2031
2032											uniqueCache[ type ] = [ dirruns, diff ];
2033										}
2034
2035										if ( node === elem ) {
2036											break;
2037										}
2038									}
2039								}
2040							}
2041						}
2042
2043						// Incorporate the offset, then check against cycle size
2044						diff -= last;
2045						return diff === first || ( diff % first === 0 && diff / first >= 0 );
2046					}
2047				};
2048		},
2049
2050		"PSEUDO": function( pseudo, argument ) {
2051
2052			// pseudo-class names are case-insensitive
2053			// http://www.w3.org/TR/selectors/#pseudo-classes
2054			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
2055			// Remember that setFilters inherits from pseudos
2056			var args,
2057				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
2058					Sizzle.error( "unsupported pseudo: " + pseudo );
2059
2060			// The user may use createPseudo to indicate that
2061			// arguments are needed to create the filter function
2062			// just as Sizzle does
2063			if ( fn[ expando ] ) {
2064				return fn( argument );
2065			}
2066
2067			// But maintain support for old signatures
2068			if ( fn.length > 1 ) {
2069				args = [ pseudo, pseudo, "", argument ];
2070				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
2071					markFunction( function( seed, matches ) {
2072						var idx,
2073							matched = fn( seed, argument ),
2074							i = matched.length;
2075						while ( i-- ) {
2076							idx = indexOf( seed, matched[ i ] );
2077							seed[ idx ] = !( matches[ idx ] = matched[ i ] );
2078						}
2079					} ) :
2080					function( elem ) {
2081						return fn( elem, 0, args );
2082					};
2083			}
2084
2085			return fn;
2086		}
2087	},
2088
2089	pseudos: {
2090
2091		// Potentially complex pseudos
2092		"not": markFunction( function( selector ) {
2093
2094			// Trim the selector passed to compile
2095			// to avoid treating leading and trailing
2096			// spaces as combinators
2097			var input = [],
2098				results = [],
2099				matcher = compile( selector.replace( rtrim, "$1" ) );
2100
2101			return matcher[ expando ] ?
2102				markFunction( function( seed, matches, _context, xml ) {
2103					var elem,
2104						unmatched = matcher( seed, null, xml, [] ),
2105						i = seed.length;
2106
2107					// Match elements unmatched by `matcher`
2108					while ( i-- ) {
2109						if ( ( elem = unmatched[ i ] ) ) {
2110							seed[ i ] = !( matches[ i ] = elem );
2111						}
2112					}
2113				} ) :
2114				function( elem, _context, xml ) {
2115					input[ 0 ] = elem;
2116					matcher( input, null, xml, results );
2117
2118					// Don't keep the element (issue #299)
2119					input[ 0 ] = null;
2120					return !results.pop();
2121				};
2122		} ),
2123
2124		"has": markFunction( function( selector ) {
2125			return function( elem ) {
2126				return Sizzle( selector, elem ).length > 0;
2127			};
2128		} ),
2129
2130		"contains": markFunction( function( text ) {
2131			text = text.replace( runescape, funescape );
2132			return function( elem ) {
2133				return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
2134			};
2135		} ),
2136
2137		// "Whether an element is represented by a :lang() selector
2138		// is based solely on the element's language value
2139		// being equal to the identifier C,
2140		// or beginning with the identifier C immediately followed by "-".
2141		// The matching of C against the element's language value is performed case-insensitively.
2142		// The identifier C does not have to be a valid language name."
2143		// http://www.w3.org/TR/selectors/#lang-pseudo
2144		"lang": markFunction( function( lang ) {
2145
2146			// lang value must be a valid identifier
2147			if ( !ridentifier.test( lang || "" ) ) {
2148				Sizzle.error( "unsupported lang: " + lang );
2149			}
2150			lang = lang.replace( runescape, funescape ).toLowerCase();
2151			return function( elem ) {
2152				var elemLang;
2153				do {
2154					if ( ( elemLang = documentIsHTML ?
2155						elem.lang :
2156						elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
2157
2158						elemLang = elemLang.toLowerCase();
2159						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2160					}
2161				} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
2162				return false;
2163			};
2164		} ),
2165
2166		// Miscellaneous
2167		"target": function( elem ) {
2168			var hash = window.location && window.location.hash;
2169			return hash && hash.slice( 1 ) === elem.id;
2170		},
2171
2172		"root": function( elem ) {
2173			return elem === docElem;
2174		},
2175
2176		"focus": function( elem ) {
2177			return elem === document.activeElement &&
2178				( !document.hasFocus || document.hasFocus() ) &&
2179				!!( elem.type || elem.href || ~elem.tabIndex );
2180		},
2181
2182		// Boolean properties
2183		"enabled": createDisabledPseudo( false ),
2184		"disabled": createDisabledPseudo( true ),
2185
2186		"checked": function( elem ) {
2187
2188			// In CSS3, :checked should return both checked and selected elements
2189			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2190			var nodeName = elem.nodeName.toLowerCase();
2191			return ( nodeName === "input" && !!elem.checked ) ||
2192				( nodeName === "option" && !!elem.selected );
2193		},
2194
2195		"selected": function( elem ) {
2196
2197			// Accessing this property makes selected-by-default
2198			// options in Safari work properly
2199			if ( elem.parentNode ) {
2200				// eslint-disable-next-line no-unused-expressions
2201				elem.parentNode.selectedIndex;
2202			}
2203
2204			return elem.selected === true;
2205		},
2206
2207		// Contents
2208		"empty": function( elem ) {
2209
2210			// http://www.w3.org/TR/selectors/#empty-pseudo
2211			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2212			//   but not by others (comment: 8; processing instruction: 7; etc.)
2213			// nodeType < 6 works because attributes (2) do not appear as children
2214			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2215				if ( elem.nodeType < 6 ) {
2216					return false;
2217				}
2218			}
2219			return true;
2220		},
2221
2222		"parent": function( elem ) {
2223			return !Expr.pseudos[ "empty" ]( elem );
2224		},
2225
2226		// Element/input types
2227		"header": function( elem ) {
2228			return rheader.test( elem.nodeName );
2229		},
2230
2231		"input": function( elem ) {
2232			return rinputs.test( elem.nodeName );
2233		},
2234
2235		"button": function( elem ) {
2236			var name = elem.nodeName.toLowerCase();
2237			return name === "input" && elem.type === "button" || name === "button";
2238		},
2239
2240		"text": function( elem ) {
2241			var attr;
2242			return elem.nodeName.toLowerCase() === "input" &&
2243				elem.type === "text" &&
2244
2245				// Support: IE<8
2246				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2247				( ( attr = elem.getAttribute( "type" ) ) == null ||
2248					attr.toLowerCase() === "text" );
2249		},
2250
2251		// Position-in-collection
2252		"first": createPositionalPseudo( function() {
2253			return [ 0 ];
2254		} ),
2255
2256		"last": createPositionalPseudo( function( _matchIndexes, length ) {
2257			return [ length - 1 ];
2258		} ),
2259
2260		"eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
2261			return [ argument < 0 ? argument + length : argument ];
2262		} ),
2263
2264		"even": createPositionalPseudo( function( matchIndexes, length ) {
2265			var i = 0;
2266			for ( ; i < length; i += 2 ) {
2267				matchIndexes.push( i );
2268			}
2269			return matchIndexes;
2270		} ),
2271
2272		"odd": createPositionalPseudo( function( matchIndexes, length ) {
2273			var i = 1;
2274			for ( ; i < length; i += 2 ) {
2275				matchIndexes.push( i );
2276			}
2277			return matchIndexes;
2278		} ),
2279
2280		"lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
2281			var i = argument < 0 ?
2282				argument + length :
2283				argument > length ?
2284					length :
2285					argument;
2286			for ( ; --i >= 0; ) {
2287				matchIndexes.push( i );
2288			}
2289			return matchIndexes;
2290		} ),
2291
2292		"gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
2293			var i = argument < 0 ? argument + length : argument;
2294			for ( ; ++i < length; ) {
2295				matchIndexes.push( i );
2296			}
2297			return matchIndexes;
2298		} )
2299	}
2300};
2301
2302Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
2303
2304// Add button/input type pseudos
2305for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2306	Expr.pseudos[ i ] = createInputPseudo( i );
2307}
2308for ( i in { submit: true, reset: true } ) {
2309	Expr.pseudos[ i ] = createButtonPseudo( i );
2310}
2311
2312// Easy API for creating new setFilters
2313function setFilters() {}
2314setFilters.prototype = Expr.filters = Expr.pseudos;
2315Expr.setFilters = new setFilters();
2316
2317tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
2318	var matched, match, tokens, type,
2319		soFar, groups, preFilters,
2320		cached = tokenCache[ selector + " " ];
2321
2322	if ( cached ) {
2323		return parseOnly ? 0 : cached.slice( 0 );
2324	}
2325
2326	soFar = selector;
2327	groups = [];
2328	preFilters = Expr.preFilter;
2329
2330	while ( soFar ) {
2331
2332		// Comma and first run
2333		if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
2334			if ( match ) {
2335
2336				// Don't consume trailing commas as valid
2337				soFar = soFar.slice( match[ 0 ].length ) || soFar;
2338			}
2339			groups.push( ( tokens = [] ) );
2340		}
2341
2342		matched = false;
2343
2344		// Combinators
2345		if ( ( match = rcombinators.exec( soFar ) ) ) {
2346			matched = match.shift();
2347			tokens.push( {
2348				value: matched,
2349
2350				// Cast descendant combinators to space
2351				type: match[ 0 ].replace( rtrim, " " )
2352			} );
2353			soFar = soFar.slice( matched.length );
2354		}
2355
2356		// Filters
2357		for ( type in Expr.filter ) {
2358			if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
2359				( match = preFilters[ type ]( match ) ) ) ) {
2360				matched = match.shift();
2361				tokens.push( {
2362					value: matched,
2363					type: type,
2364					matches: match
2365				} );
2366				soFar = soFar.slice( matched.length );
2367			}
2368		}
2369
2370		if ( !matched ) {
2371			break;
2372		}
2373	}
2374
2375	// Return the length of the invalid excess
2376	// if we're just parsing
2377	// Otherwise, throw an error or return tokens
2378	return parseOnly ?
2379		soFar.length :
2380		soFar ?
2381			Sizzle.error( selector ) :
2382
2383			// Cache the tokens
2384			tokenCache( selector, groups ).slice( 0 );
2385};
2386
2387function toSelector( tokens ) {
2388	var i = 0,
2389		len = tokens.length,
2390		selector = "";
2391	for ( ; i < len; i++ ) {
2392		selector += tokens[ i ].value;
2393	}
2394	return selector;
2395}
2396
2397function addCombinator( matcher, combinator, base ) {
2398	var dir = combinator.dir,
2399		skip = combinator.next,
2400		key = skip || dir,
2401		checkNonElements = base && key === "parentNode",
2402		doneName = done++;
2403
2404	return combinator.first ?
2405
2406		// Check against closest ancestor/preceding element
2407		function( elem, context, xml ) {
2408			while ( ( elem = elem[ dir ] ) ) {
2409				if ( elem.nodeType === 1 || checkNonElements ) {
2410					return matcher( elem, context, xml );
2411				}
2412			}
2413			return false;
2414		} :
2415
2416		// Check against all ancestor/preceding elements
2417		function( elem, context, xml ) {
2418			var oldCache, uniqueCache, outerCache,
2419				newCache = [ dirruns, doneName ];
2420
2421			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2422			if ( xml ) {
2423				while ( ( elem = elem[ dir ] ) ) {
2424					if ( elem.nodeType === 1 || checkNonElements ) {
2425						if ( matcher( elem, context, xml ) ) {
2426							return true;
2427						}
2428					}
2429				}
2430			} else {
2431				while ( ( elem = elem[ dir ] ) ) {
2432					if ( elem.nodeType === 1 || checkNonElements ) {
2433						outerCache = elem[ expando ] || ( elem[ expando ] = {} );
2434
2435						// Support: IE <9 only
2436						// Defend against cloned attroperties (jQuery gh-1709)
2437						uniqueCache = outerCache[ elem.uniqueID ] ||
2438							( outerCache[ elem.uniqueID ] = {} );
2439
2440						if ( skip && skip === elem.nodeName.toLowerCase() ) {
2441							elem = elem[ dir ] || elem;
2442						} else if ( ( oldCache = uniqueCache[ key ] ) &&
2443							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2444
2445							// Assign to newCache so results back-propagate to previous elements
2446							return ( newCache[ 2 ] = oldCache[ 2 ] );
2447						} else {
2448
2449							// Reuse newcache so results back-propagate to previous elements
2450							uniqueCache[ key ] = newCache;
2451
2452							// A match means we're done; a fail means we have to keep checking
2453							if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
2454								return true;
2455							}
2456						}
2457					}
2458				}
2459			}
2460			return false;
2461		};
2462}
2463
2464function elementMatcher( matchers ) {
2465	return matchers.length > 1 ?
2466		function( elem, context, xml ) {
2467			var i = matchers.length;
2468			while ( i-- ) {
2469				if ( !matchers[ i ]( elem, context, xml ) ) {
2470					return false;
2471				}
2472			}
2473			return true;
2474		} :
2475		matchers[ 0 ];
2476}
2477
2478function multipleContexts( selector, contexts, results ) {
2479	var i = 0,
2480		len = contexts.length;
2481	for ( ; i < len; i++ ) {
2482		Sizzle( selector, contexts[ i ], results );
2483	}
2484	return results;
2485}
2486
2487function condense( unmatched, map, filter, context, xml ) {
2488	var elem,
2489		newUnmatched = [],
2490		i = 0,
2491		len = unmatched.length,
2492		mapped = map != null;
2493
2494	for ( ; i < len; i++ ) {
2495		if ( ( elem = unmatched[ i ] ) ) {
2496			if ( !filter || filter( elem, context, xml ) ) {
2497				newUnmatched.push( elem );
2498				if ( mapped ) {
2499					map.push( i );
2500				}
2501			}
2502		}
2503	}
2504
2505	return newUnmatched;
2506}
2507
2508function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2509	if ( postFilter && !postFilter[ expando ] ) {
2510		postFilter = setMatcher( postFilter );
2511	}
2512	if ( postFinder && !postFinder[ expando ] ) {
2513		postFinder = setMatcher( postFinder, postSelector );
2514	}
2515	return markFunction( function( seed, results, context, xml ) {
2516		var temp, i, elem,
2517			preMap = [],
2518			postMap = [],
2519			preexisting = results.length,
2520
2521			// Get initial elements from seed or context
2522			elems = seed || multipleContexts(
2523				selector || "*",
2524				context.nodeType ? [ context ] : context,
2525				[]
2526			),
2527
2528			// Prefilter to get matcher input, preserving a map for seed-results synchronization
2529			matcherIn = preFilter && ( seed || !selector ) ?
2530				condense( elems, preMap, preFilter, context, xml ) :
2531				elems,
2532
2533			matcherOut = matcher ?
2534
2535				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2536				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2537
2538					// ...intermediate processing is necessary
2539					[] :
2540
2541					// ...otherwise use results directly
2542					results :
2543				matcherIn;
2544
2545		// Find primary matches
2546		if ( matcher ) {
2547			matcher( matcherIn, matcherOut, context, xml );
2548		}
2549
2550		// Apply postFilter
2551		if ( postFilter ) {
2552			temp = condense( matcherOut, postMap );
2553			postFilter( temp, [], context, xml );
2554
2555			// Un-match failing elements by moving them back to matcherIn
2556			i = temp.length;
2557			while ( i-- ) {
2558				if ( ( elem = temp[ i ] ) ) {
2559					matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
2560				}
2561			}
2562		}
2563
2564		if ( seed ) {
2565			if ( postFinder || preFilter ) {
2566				if ( postFinder ) {
2567
2568					// Get the final matcherOut by condensing this intermediate into postFinder contexts
2569					temp = [];
2570					i = matcherOut.length;
2571					while ( i-- ) {
2572						if ( ( elem = matcherOut[ i ] ) ) {
2573
2574							// Restore matcherIn since elem is not yet a final match
2575							temp.push( ( matcherIn[ i ] = elem ) );
2576						}
2577					}
2578					postFinder( null, ( matcherOut = [] ), temp, xml );
2579				}
2580
2581				// Move matched elements from seed to results to keep them synchronized
2582				i = matcherOut.length;
2583				while ( i-- ) {
2584					if ( ( elem = matcherOut[ i ] ) &&
2585						( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
2586
2587						seed[ temp ] = !( results[ temp ] = elem );
2588					}
2589				}
2590			}
2591
2592		// Add elements to results, through postFinder if defined
2593		} else {
2594			matcherOut = condense(
2595				matcherOut === results ?
2596					matcherOut.splice( preexisting, matcherOut.length ) :
2597					matcherOut
2598			);
2599			if ( postFinder ) {
2600				postFinder( null, results, matcherOut, xml );
2601			} else {
2602				push.apply( results, matcherOut );
2603			}
2604		}
2605	} );
2606}
2607
2608function matcherFromTokens( tokens ) {
2609	var checkContext, matcher, j,
2610		len = tokens.length,
2611		leadingRelative = Expr.relative[ tokens[ 0 ].type ],
2612		implicitRelative = leadingRelative || Expr.relative[ " " ],
2613		i = leadingRelative ? 1 : 0,
2614
2615		// The foundational matcher ensures that elements are reachable from top-level context(s)
2616		matchContext = addCombinator( function( elem ) {
2617			return elem === checkContext;
2618		}, implicitRelative, true ),
2619		matchAnyContext = addCombinator( function( elem ) {
2620			return indexOf( checkContext, elem ) > -1;
2621		}, implicitRelative, true ),
2622		matchers = [ function( elem, context, xml ) {
2623			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2624				( checkContext = context ).nodeType ?
2625					matchContext( elem, context, xml ) :
2626					matchAnyContext( elem, context, xml ) );
2627
2628			// Avoid hanging onto element (issue #299)
2629			checkContext = null;
2630			return ret;
2631		} ];
2632
2633	for ( ; i < len; i++ ) {
2634		if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
2635			matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
2636		} else {
2637			matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
2638
2639			// Return special upon seeing a positional matcher
2640			if ( matcher[ expando ] ) {
2641
2642				// Find the next relative operator (if any) for proper handling
2643				j = ++i;
2644				for ( ; j < len; j++ ) {
2645					if ( Expr.relative[ tokens[ j ].type ] ) {
2646						break;
2647					}
2648				}
2649				return setMatcher(
2650					i > 1 && elementMatcher( matchers ),
2651					i > 1 && toSelector(
2652
2653					// If the preceding token was a descendant combinator, insert an implicit any-element `*`
2654					tokens
2655						.slice( 0, i - 1 )
2656						.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
2657					).replace( rtrim, "$1" ),
2658					matcher,
2659					i < j && matcherFromTokens( tokens.slice( i, j ) ),
2660					j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
2661					j < len && toSelector( tokens )
2662				);
2663			}
2664			matchers.push( matcher );
2665		}
2666	}
2667
2668	return elementMatcher( matchers );
2669}
2670
2671function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2672	var bySet = setMatchers.length > 0,
2673		byElement = elementMatchers.length > 0,
2674		superMatcher = function( seed, context, xml, results, outermost ) {
2675			var elem, j, matcher,
2676				matchedCount = 0,
2677				i = "0",
2678				unmatched = seed && [],
2679				setMatched = [],
2680				contextBackup = outermostContext,
2681
2682				// We must always have either seed elements or outermost context
2683				elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
2684
2685				// Use integer dirruns iff this is the outermost matcher
2686				dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
2687				len = elems.length;
2688
2689			if ( outermost ) {
2690
2691				// Support: IE 11+, Edge 17 - 18+
2692				// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2693				// two documents; shallow comparisons work.
2694				// eslint-disable-next-line eqeqeq
2695				outermostContext = context == document || context || outermost;
2696			}
2697
2698			// Add elements passing elementMatchers directly to results
2699			// Support: IE<9, Safari
2700			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2701			for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
2702				if ( byElement && elem ) {
2703					j = 0;
2704
2705					// Support: IE 11+, Edge 17 - 18+
2706					// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2707					// two documents; shallow comparisons work.
2708					// eslint-disable-next-line eqeqeq
2709					if ( !context && elem.ownerDocument != document ) {
2710						setDocument( elem );
2711						xml = !documentIsHTML;
2712					}
2713					while ( ( matcher = elementMatchers[ j++ ] ) ) {
2714						if ( matcher( elem, context || document, xml ) ) {
2715							results.push( elem );
2716							break;
2717						}
2718					}
2719					if ( outermost ) {
2720						dirruns = dirrunsUnique;
2721					}
2722				}
2723
2724				// Track unmatched elements for set filters
2725				if ( bySet ) {
2726
2727					// They will have gone through all possible matchers
2728					if ( ( elem = !matcher && elem ) ) {
2729						matchedCount--;
2730					}
2731
2732					// Lengthen the array for every element, matched or not
2733					if ( seed ) {
2734						unmatched.push( elem );
2735					}
2736				}
2737			}
2738
2739			// `i` is now the count of elements visited above, and adding it to `matchedCount`
2740			// makes the latter nonnegative.
2741			matchedCount += i;
2742
2743			// Apply set filters to unmatched elements
2744			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2745			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2746			// no element matchers and no seed.
2747			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2748			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
2749			// numerically zero.
2750			if ( bySet && i !== matchedCount ) {
2751				j = 0;
2752				while ( ( matcher = setMatchers[ j++ ] ) ) {
2753					matcher( unmatched, setMatched, context, xml );
2754				}
2755
2756				if ( seed ) {
2757
2758					// Reintegrate element matches to eliminate the need for sorting
2759					if ( matchedCount > 0 ) {
2760						while ( i-- ) {
2761							if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
2762								setMatched[ i ] = pop.call( results );
2763							}
2764						}
2765					}
2766
2767					// Discard index placeholder values to get only actual matches
2768					setMatched = condense( setMatched );
2769				}
2770
2771				// Add matches to results
2772				push.apply( results, setMatched );
2773
2774				// Seedless set matches succeeding multiple successful matchers stipulate sorting
2775				if ( outermost && !seed && setMatched.length > 0 &&
2776					( matchedCount + setMatchers.length ) > 1 ) {
2777
2778					Sizzle.uniqueSort( results );
2779				}
2780			}
2781
2782			// Override manipulation of globals by nested matchers
2783			if ( outermost ) {
2784				dirruns = dirrunsUnique;
2785				outermostContext = contextBackup;
2786			}
2787
2788			return unmatched;
2789		};
2790
2791	return bySet ?
2792		markFunction( superMatcher ) :
2793		superMatcher;
2794}
2795
2796compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
2797	var i,
2798		setMatchers = [],
2799		elementMatchers = [],
2800		cached = compilerCache[ selector + " " ];
2801
2802	if ( !cached ) {
2803
2804		// Generate a function of recursive functions that can be used to check each element
2805		if ( !match ) {
2806			match = tokenize( selector );
2807		}
2808		i = match.length;
2809		while ( i-- ) {
2810			cached = matcherFromTokens( match[ i ] );
2811			if ( cached[ expando ] ) {
2812				setMatchers.push( cached );
2813			} else {
2814				elementMatchers.push( cached );
2815			}
2816		}
2817
2818		// Cache the compiled function
2819		cached = compilerCache(
2820			selector,
2821			matcherFromGroupMatchers( elementMatchers, setMatchers )
2822		);
2823
2824		// Save selector and tokenization
2825		cached.selector = selector;
2826	}
2827	return cached;
2828};
2829
2830/**
2831 * A low-level selection function that works with Sizzle's compiled
2832 *  selector functions
2833 * @param {String|Function} selector A selector or a pre-compiled
2834 *  selector function built with Sizzle.compile
2835 * @param {Element} context
2836 * @param {Array} [results]
2837 * @param {Array} [seed] A set of elements to match against
2838 */
2839select = Sizzle.select = function( selector, context, results, seed ) {
2840	var i, tokens, token, type, find,
2841		compiled = typeof selector === "function" && selector,
2842		match = !seed && tokenize( ( selector = compiled.selector || selector ) );
2843
2844	results = results || [];
2845
2846	// Try to minimize operations if there is only one selector in the list and no seed
2847	// (the latter of which guarantees us context)
2848	if ( match.length === 1 ) {
2849
2850		// Reduce context if the leading compound selector is an ID
2851		tokens = match[ 0 ] = match[ 0 ].slice( 0 );
2852		if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
2853			context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
2854
2855			context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
2856				.replace( runescape, funescape ), context ) || [] )[ 0 ];
2857			if ( !context ) {
2858				return results;
2859
2860			// Precompiled matchers will still verify ancestry, so step up a level
2861			} else if ( compiled ) {
2862				context = context.parentNode;
2863			}
2864
2865			selector = selector.slice( tokens.shift().value.length );
2866		}
2867
2868		// Fetch a seed set for right-to-left matching
2869		i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
2870		while ( i-- ) {
2871			token = tokens[ i ];
2872
2873			// Abort if we hit a combinator
2874			if ( Expr.relative[ ( type = token.type ) ] ) {
2875				break;
2876			}
2877			if ( ( find = Expr.find[ type ] ) ) {
2878
2879				// Search, expanding context for leading sibling combinators
2880				if ( ( seed = find(
2881					token.matches[ 0 ].replace( runescape, funescape ),
2882					rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
2883						context
2884				) ) ) {
2885
2886					// If seed is empty or no tokens remain, we can return early
2887					tokens.splice( i, 1 );
2888					selector = seed.length && toSelector( tokens );
2889					if ( !selector ) {
2890						push.apply( results, seed );
2891						return results;
2892					}
2893
2894					break;
2895				}
2896			}
2897		}
2898	}
2899
2900	// Compile and execute a filtering function if one is not provided
2901	// Provide `match` to avoid retokenization if we modified the selector above
2902	( compiled || compile( selector, match ) )(
2903		seed,
2904		context,
2905		!documentIsHTML,
2906		results,
2907		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2908	);
2909	return results;
2910};
2911
2912// One-time assignments
2913
2914// Sort stability
2915support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
2916
2917// Support: Chrome 14-35+
2918// Always assume duplicates if they aren't passed to the comparison function
2919support.detectDuplicates = !!hasDuplicate;
2920
2921// Initialize against the default document
2922setDocument();
2923
2924// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2925// Detached nodes confoundingly follow *each other*
2926support.sortDetached = assert( function( el ) {
2927
2928	// Should return 1, but returns 4 (following)
2929	return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
2930} );
2931
2932// Support: IE<8
2933// Prevent attribute/property "interpolation"
2934// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2935if ( !assert( function( el ) {
2936	el.innerHTML = "<a href='#'></a>";
2937	return el.firstChild.getAttribute( "href" ) === "#";
2938} ) ) {
2939	addHandle( "type|href|height|width", function( elem, name, isXML ) {
2940		if ( !isXML ) {
2941			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2942		}
2943	} );
2944}
2945
2946// Support: IE<9
2947// Use defaultValue in place of getAttribute("value")
2948if ( !support.attributes || !assert( function( el ) {
2949	el.innerHTML = "<input/>";
2950	el.firstChild.setAttribute( "value", "" );
2951	return el.firstChild.getAttribute( "value" ) === "";
2952} ) ) {
2953	addHandle( "value", function( elem, _name, isXML ) {
2954		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2955			return elem.defaultValue;
2956		}
2957	} );
2958}
2959
2960// Support: IE<9
2961// Use getAttributeNode to fetch booleans when getAttribute lies
2962if ( !assert( function( el ) {
2963	return el.getAttribute( "disabled" ) == null;
2964} ) ) {
2965	addHandle( booleans, function( elem, name, isXML ) {
2966		var val;
2967		if ( !isXML ) {
2968			return elem[ name ] === true ? name.toLowerCase() :
2969				( val = elem.getAttributeNode( name ) ) && val.specified ?
2970					val.value :
2971					null;
2972		}
2973	} );
2974}
2975
2976return Sizzle;
2977
2978} )( window );
2979
2980
2981
2982jQuery.find = Sizzle;
2983jQuery.expr = Sizzle.selectors;
2984
2985// Deprecated
2986jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2987jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2988jQuery.text = Sizzle.getText;
2989jQuery.isXMLDoc = Sizzle.isXML;
2990jQuery.contains = Sizzle.contains;
2991jQuery.escapeSelector = Sizzle.escape;
2992
2993
2994
2995
2996var dir = function( elem, dir, until ) {
2997	var matched = [],
2998		truncate = until !== undefined;
2999
3000	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
3001		if ( elem.nodeType === 1 ) {
3002			if ( truncate && jQuery( elem ).is( until ) ) {
3003				break;
3004			}
3005			matched.push( elem );
3006		}
3007	}
3008	return matched;
3009};
3010
3011
3012var siblings = function( n, elem ) {
3013	var matched = [];
3014
3015	for ( ; n; n = n.nextSibling ) {
3016		if ( n.nodeType === 1 && n !== elem ) {
3017			matched.push( n );
3018		}
3019	}
3020
3021	return matched;
3022};
3023
3024
3025var rneedsContext = jQuery.expr.match.needsContext;
3026
3027
3028
3029function nodeName( elem, name ) {
3030
3031	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
3032
3033}
3034var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
3035
3036
3037
3038// Implement the identical functionality for filter and not
3039function winnow( elements, qualifier, not ) {
3040	if ( isFunction( qualifier ) ) {
3041		return jQuery.grep( elements, function( elem, i ) {
3042			return !!qualifier.call( elem, i, elem ) !== not;
3043		} );
3044	}
3045
3046	// Single element
3047	if ( qualifier.nodeType ) {
3048		return jQuery.grep( elements, function( elem ) {
3049			return ( elem === qualifier ) !== not;
3050		} );
3051	}
3052
3053	// Arraylike of elements (jQuery, arguments, Array)
3054	if ( typeof qualifier !== "string" ) {
3055		return jQuery.grep( elements, function( elem ) {
3056			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
3057		} );
3058	}
3059
3060	// Filtered directly for both simple and complex selectors
3061	return jQuery.filter( qualifier, elements, not );
3062}
3063
3064jQuery.filter = function( expr, elems, not ) {
3065	var elem = elems[ 0 ];
3066
3067	if ( not ) {
3068		expr = ":not(" + expr + ")";
3069	}
3070
3071	if ( elems.length === 1 && elem.nodeType === 1 ) {
3072		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
3073	}
3074
3075	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
3076		return elem.nodeType === 1;
3077	} ) );
3078};
3079
3080jQuery.fn.extend( {
3081	find: function( selector ) {
3082		var i, ret,
3083			len = this.length,
3084			self = this;
3085
3086		if ( typeof selector !== "string" ) {
3087			return this.pushStack( jQuery( selector ).filter( function() {
3088				for ( i = 0; i < len; i++ ) {
3089					if ( jQuery.contains( self[ i ], this ) ) {
3090						return true;
3091					}
3092				}
3093			} ) );
3094		}
3095
3096		ret = this.pushStack( [] );
3097
3098		for ( i = 0; i < len; i++ ) {
3099			jQuery.find( selector, self[ i ], ret );
3100		}
3101
3102		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
3103	},
3104	filter: function( selector ) {
3105		return this.pushStack( winnow( this, selector || [], false ) );
3106	},
3107	not: function( selector ) {
3108		return this.pushStack( winnow( this, selector || [], true ) );
3109	},
3110	is: function( selector ) {
3111		return !!winnow(
3112			this,
3113
3114			// If this is a positional/relative selector, check membership in the returned set
3115			// so $("p:first").is("p:last") won't return true for a doc with two "p".
3116			typeof selector === "string" && rneedsContext.test( selector ) ?
3117				jQuery( selector ) :
3118				selector || [],
3119			false
3120		).length;
3121	}
3122} );
3123
3124
3125// Initialize a jQuery object
3126
3127
3128// A central reference to the root jQuery(document)
3129var rootjQuery,
3130
3131	// A simple way to check for HTML strings
3132	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
3133	// Strict HTML recognition (#11290: must start with <)
3134	// Shortcut simple #id case for speed
3135	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
3136
3137	init = jQuery.fn.init = function( selector, context, root ) {
3138		var match, elem;
3139
3140		// HANDLE: $(""), $(null), $(undefined), $(false)
3141		if ( !selector ) {
3142			return this;
3143		}
3144
3145		// Method init() accepts an alternate rootjQuery
3146		// so migrate can support jQuery.sub (gh-2101)
3147		root = root || rootjQuery;
3148
3149		// Handle HTML strings
3150		if ( typeof selector === "string" ) {
3151			if ( selector[ 0 ] === "<" &&
3152				selector[ selector.length - 1 ] === ">" &&
3153				selector.length >= 3 ) {
3154
3155				// Assume that strings that start and end with <> are HTML and skip the regex check
3156				match = [ null, selector, null ];
3157
3158			} else {
3159				match = rquickExpr.exec( selector );
3160			}
3161
3162			// Match html or make sure no context is specified for #id
3163			if ( match && ( match[ 1 ] || !context ) ) {
3164
3165				// HANDLE: $(html) -> $(array)
3166				if ( match[ 1 ] ) {
3167					context = context instanceof jQuery ? context[ 0 ] : context;
3168
3169					// Option to run scripts is true for back-compat
3170					// Intentionally let the error be thrown if parseHTML is not present
3171					jQuery.merge( this, jQuery.parseHTML(
3172						match[ 1 ],
3173						context && context.nodeType ? context.ownerDocument || context : document,
3174						true
3175					) );
3176
3177					// HANDLE: $(html, props)
3178					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
3179						for ( match in context ) {
3180
3181							// Properties of context are called as methods if possible
3182							if ( isFunction( this[ match ] ) ) {
3183								this[ match ]( context[ match ] );
3184
3185							// ...and otherwise set as attributes
3186							} else {
3187								this.attr( match, context[ match ] );
3188							}
3189						}
3190					}
3191
3192					return this;
3193
3194				// HANDLE: $(#id)
3195				} else {
3196					elem = document.getElementById( match[ 2 ] );
3197
3198					if ( elem ) {
3199
3200						// Inject the element directly into the jQuery object
3201						this[ 0 ] = elem;
3202						this.length = 1;
3203					}
3204					return this;
3205				}
3206
3207			// HANDLE: $(expr, $(...))
3208			} else if ( !context || context.jquery ) {
3209				return ( context || root ).find( selector );
3210
3211			// HANDLE: $(expr, context)
3212			// (which is just equivalent to: $(context).find(expr)
3213			} else {
3214				return this.constructor( context ).find( selector );
3215			}
3216
3217		// HANDLE: $(DOMElement)
3218		} else if ( selector.nodeType ) {
3219			this[ 0 ] = selector;
3220			this.length = 1;
3221			return this;
3222
3223		// HANDLE: $(function)
3224		// Shortcut for document ready
3225		} else if ( isFunction( selector ) ) {
3226			return root.ready !== undefined ?
3227				root.ready( selector ) :
3228
3229				// Execute immediately if ready is not present
3230				selector( jQuery );
3231		}
3232
3233		return jQuery.makeArray( selector, this );
3234	};
3235
3236// Give the init function the jQuery prototype for later instantiation
3237init.prototype = jQuery.fn;
3238
3239// Initialize central reference
3240rootjQuery = jQuery( document );
3241
3242
3243var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3244
3245	// Methods guaranteed to produce a unique set when starting from a unique set
3246	guaranteedUnique = {
3247		children: true,
3248		contents: true,
3249		next: true,
3250		prev: true
3251	};
3252
3253jQuery.fn.extend( {
3254	has: function( target ) {
3255		var targets = jQuery( target, this ),
3256			l = targets.length;
3257
3258		return this.filter( function() {
3259			var i = 0;
3260			for ( ; i < l; i++ ) {
3261				if ( jQuery.contains( this, targets[ i ] ) ) {
3262					return true;
3263				}
3264			}
3265		} );
3266	},
3267
3268	closest: function( selectors, context ) {
3269		var cur,
3270			i = 0,
3271			l = this.length,
3272			matched = [],
3273			targets = typeof selectors !== "string" && jQuery( selectors );
3274
3275		// Positional selectors never match, since there's no _selection_ context
3276		if ( !rneedsContext.test( selectors ) ) {
3277			for ( ; i < l; i++ ) {
3278				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3279
3280					// Always skip document fragments
3281					if ( cur.nodeType < 11 && ( targets ?
3282						targets.index( cur ) > -1 :
3283
3284						// Don't pass non-elements to Sizzle
3285						cur.nodeType === 1 &&
3286							jQuery.find.matchesSelector( cur, selectors ) ) ) {
3287
3288						matched.push( cur );
3289						break;
3290					}
3291				}
3292			}
3293		}
3294
3295		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3296	},
3297
3298	// Determine the position of an element within the set
3299	index: function( elem ) {
3300
3301		// No argument, return index in parent
3302		if ( !elem ) {
3303			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3304		}
3305
3306		// Index in selector
3307		if ( typeof elem === "string" ) {
3308			return indexOf.call( jQuery( elem ), this[ 0 ] );
3309		}
3310
3311		// Locate the position of the desired element
3312		return indexOf.call( this,
3313
3314			// If it receives a jQuery object, the first element is used
3315			elem.jquery ? elem[ 0 ] : elem
3316		);
3317	},
3318
3319	add: function( selector, context ) {
3320		return this.pushStack(
3321			jQuery.uniqueSort(
3322				jQuery.merge( this.get(), jQuery( selector, context ) )
3323			)
3324		);
3325	},
3326
3327	addBack: function( selector ) {
3328		return this.add( selector == null ?
3329			this.prevObject : this.prevObject.filter( selector )
3330		);
3331	}
3332} );
3333
3334function sibling( cur, dir ) {
3335	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3336	return cur;
3337}
3338
3339jQuery.each( {
3340	parent: function( elem ) {
3341		var parent = elem.parentNode;
3342		return parent && parent.nodeType !== 11 ? parent : null;
3343	},
3344	parents: function( elem ) {
3345		return dir( elem, "parentNode" );
3346	},
3347	parentsUntil: function( elem, _i, until ) {
3348		return dir( elem, "parentNode", until );
3349	},
3350	next: function( elem ) {
3351		return sibling( elem, "nextSibling" );
3352	},
3353	prev: function( elem ) {
3354		return sibling( elem, "previousSibling" );
3355	},
3356	nextAll: function( elem ) {
3357		return dir( elem, "nextSibling" );
3358	},
3359	prevAll: function( elem ) {
3360		return dir( elem, "previousSibling" );
3361	},
3362	nextUntil: function( elem, _i, until ) {
3363		return dir( elem, "nextSibling", until );
3364	},
3365	prevUntil: function( elem, _i, until ) {
3366		return dir( elem, "previousSibling", until );
3367	},
3368	siblings: function( elem ) {
3369		return siblings( ( elem.parentNode || {} ).firstChild, elem );
3370	},
3371	children: function( elem ) {
3372		return siblings( elem.firstChild );
3373	},
3374	contents: function( elem ) {
3375		if ( elem.contentDocument != null &&
3376
3377			// Support: IE 11+
3378			// <object> elements with no `data` attribute has an object
3379			// `contentDocument` with a `null` prototype.
3380			getProto( elem.contentDocument ) ) {
3381
3382			return elem.contentDocument;
3383		}
3384
3385		// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3386		// Treat the template element as a regular one in browsers that
3387		// don't support it.
3388		if ( nodeName( elem, "template" ) ) {
3389			elem = elem.content || elem;
3390		}
3391
3392		return jQuery.merge( [], elem.childNodes );
3393	}
3394}, function( name, fn ) {
3395	jQuery.fn[ name ] = function( until, selector ) {
3396		var matched = jQuery.map( this, fn, until );
3397
3398		if ( name.slice( -5 ) !== "Until" ) {
3399			selector = until;
3400		}
3401
3402		if ( selector && typeof selector === "string" ) {
3403			matched = jQuery.filter( selector, matched );
3404		}
3405
3406		if ( this.length > 1 ) {
3407
3408			// Remove duplicates
3409			if ( !guaranteedUnique[ name ] ) {
3410				jQuery.uniqueSort( matched );
3411			}
3412
3413			// Reverse order for parents* and prev-derivatives
3414			if ( rparentsprev.test( name ) ) {
3415				matched.reverse();
3416			}
3417		}
3418
3419		return this.pushStack( matched );
3420	};
3421} );
3422var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3423
3424
3425
3426// Convert String-formatted options into Object-formatted ones
3427function createOptions( options ) {
3428	var object = {};
3429	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3430		object[ flag ] = true;
3431	} );
3432	return object;
3433}
3434
3435/*
3436 * Create a callback list using the following parameters:
3437 *
3438 *	options: an optional list of space-separated options that will change how
3439 *			the callback list behaves or a more traditional option object
3440 *
3441 * By default a callback list will act like an event callback list and can be
3442 * "fired" multiple times.
3443 *
3444 * Possible options:
3445 *
3446 *	once:			will ensure the callback list can only be fired once (like a Deferred)
3447 *
3448 *	memory:			will keep track of previous values and will call any callback added
3449 *					after the list has been fired right away with the latest "memorized"
3450 *					values (like a Deferred)
3451 *
3452 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
3453 *
3454 *	stopOnFalse:	interrupt callings when a callback returns false
3455 *
3456 */
3457jQuery.Callbacks = function( options ) {
3458
3459	// Convert options from String-formatted to Object-formatted if needed
3460	// (we check in cache first)
3461	options = typeof options === "string" ?
3462		createOptions( options ) :
3463		jQuery.extend( {}, options );
3464
3465	var // Flag to know if list is currently firing
3466		firing,
3467
3468		// Last fire value for non-forgettable lists
3469		memory,
3470
3471		// Flag to know if list was already fired
3472		fired,
3473
3474		// Flag to prevent firing
3475		locked,
3476
3477		// Actual callback list
3478		list = [],
3479
3480		// Queue of execution data for repeatable lists
3481		queue = [],
3482
3483		// Index of currently firing callback (modified by add/remove as needed)
3484		firingIndex = -1,
3485
3486		// Fire callbacks
3487		fire = function() {
3488
3489			// Enforce single-firing
3490			locked = locked || options.once;
3491
3492			// Execute callbacks for all pending executions,
3493			// respecting firingIndex overrides and runtime changes
3494			fired = firing = true;
3495			for ( ; queue.length; firingIndex = -1 ) {
3496				memory = queue.shift();
3497				while ( ++firingIndex < list.length ) {
3498
3499					// Run callback and check for early termination
3500					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3501						options.stopOnFalse ) {
3502
3503						// Jump to end and forget the data so .add doesn't re-fire
3504						firingIndex = list.length;
3505						memory = false;
3506					}
3507				}
3508			}
3509
3510			// Forget the data if we're done with it
3511			if ( !options.memory ) {
3512				memory = false;
3513			}
3514
3515			firing = false;
3516
3517			// Clean up if we're done firing for good
3518			if ( locked ) {
3519
3520				// Keep an empty list if we have data for future add calls
3521				if ( memory ) {
3522					list = [];
3523
3524				// Otherwise, this object is spent
3525				} else {
3526					list = "";
3527				}
3528			}
3529		},
3530
3531		// Actual Callbacks object
3532		self = {
3533
3534			// Add a callback or a collection of callbacks to the list
3535			add: function() {
3536				if ( list ) {
3537
3538					// If we have memory from a past run, we should fire after adding
3539					if ( memory && !firing ) {
3540						firingIndex = list.length - 1;
3541						queue.push( memory );
3542					}
3543
3544					( function add( args ) {
3545						jQuery.each( args, function( _, arg ) {
3546							if ( isFunction( arg ) ) {
3547								if ( !options.unique || !self.has( arg ) ) {
3548									list.push( arg );
3549								}
3550							} else if ( arg && arg.length && toType( arg ) !== "string" ) {
3551
3552								// Inspect recursively
3553								add( arg );
3554							}
3555						} );
3556					} )( arguments );
3557
3558					if ( memory && !firing ) {
3559						fire();
3560					}
3561				}
3562				return this;
3563			},
3564
3565			// Remove a callback from the list
3566			remove: function() {
3567				jQuery.each( arguments, function( _, arg ) {
3568					var index;
3569					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3570						list.splice( index, 1 );
3571
3572						// Handle firing indexes
3573						if ( index <= firingIndex ) {
3574							firingIndex--;
3575						}
3576					}
3577				} );
3578				return this;
3579			},
3580
3581			// Check if a given callback is in the list.
3582			// If no argument is given, return whether or not list has callbacks attached.
3583			has: function( fn ) {
3584				return fn ?
3585					jQuery.inArray( fn, list ) > -1 :
3586					list.length > 0;
3587			},
3588
3589			// Remove all callbacks from the list
3590			empty: function() {
3591				if ( list ) {
3592					list = [];
3593				}
3594				return this;
3595			},
3596
3597			// Disable .fire and .add
3598			// Abort any current/pending executions
3599			// Clear all callbacks and values
3600			disable: function() {
3601				locked = queue = [];
3602				list = memory = "";
3603				return this;
3604			},
3605			disabled: function() {
3606				return !list;
3607			},
3608
3609			// Disable .fire
3610			// Also disable .add unless we have memory (since it would have no effect)
3611			// Abort any pending executions
3612			lock: function() {
3613				locked = queue = [];
3614				if ( !memory && !firing ) {
3615					list = memory = "";
3616				}
3617				return this;
3618			},
3619			locked: function() {
3620				return !!locked;
3621			},
3622
3623			// Call all callbacks with the given context and arguments
3624			fireWith: function( context, args ) {
3625				if ( !locked ) {
3626					args = args || [];
3627					args = [ context, args.slice ? args.slice() : args ];
3628					queue.push( args );
3629					if ( !firing ) {
3630						fire();
3631					}
3632				}
3633				return this;
3634			},
3635
3636			// Call all the callbacks with the given arguments
3637			fire: function() {
3638				self.fireWith( this, arguments );
3639				return this;
3640			},
3641
3642			// To know if the callbacks have already been called at least once
3643			fired: function() {
3644				return !!fired;
3645			}
3646		};
3647
3648	return self;
3649};
3650
3651
3652function Identity( v ) {
3653	return v;
3654}
3655function Thrower( ex ) {
3656	throw ex;
3657}
3658
3659function adoptValue( value, resolve, reject, noValue ) {
3660	var method;
3661
3662	try {
3663
3664		// Check for promise aspect first to privilege synchronous behavior
3665		if ( value && isFunction( ( method = value.promise ) ) ) {
3666			method.call( value ).done( resolve ).fail( reject );
3667
3668		// Other thenables
3669		} else if ( value && isFunction( ( method = value.then ) ) ) {
3670			method.call( value, resolve, reject );
3671
3672		// Other non-thenables
3673		} else {
3674
3675			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3676			// * false: [ value ].slice( 0 ) => resolve( value )
3677			// * true: [ value ].slice( 1 ) => resolve()
3678			resolve.apply( undefined, [ value ].slice( noValue ) );
3679		}
3680
3681	// For Promises/A+, convert exceptions into rejections
3682	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3683	// Deferred#then to conditionally suppress rejection.
3684	} catch ( value ) {
3685
3686		// Support: Android 4.0 only
3687		// Strict mode functions invoked without .call/.apply get global-object context
3688		reject.apply( undefined, [ value ] );
3689	}
3690}
3691
3692jQuery.extend( {
3693
3694	Deferred: function( func ) {
3695		var tuples = [
3696
3697				// action, add listener, callbacks,
3698				// ... .then handlers, argument index, [final state]
3699				[ "notify", "progress", jQuery.Callbacks( "memory" ),
3700					jQuery.Callbacks( "memory" ), 2 ],
3701				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
3702					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3703				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
3704					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3705			],
3706			state = "pending",
3707			promise = {
3708				state: function() {
3709					return state;
3710				},
3711				always: function() {
3712					deferred.done( arguments ).fail( arguments );
3713					return this;
3714				},
3715				"catch": function( fn ) {
3716					return promise.then( null, fn );
3717				},
3718
3719				// Keep pipe for back-compat
3720				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3721					var fns = arguments;
3722
3723					return jQuery.Deferred( function( newDefer ) {
3724						jQuery.each( tuples, function( _i, tuple ) {
3725
3726							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
3727							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3728
3729							// deferred.progress(function() { bind to newDefer or newDefer.notify })
3730							// deferred.done(function() { bind to newDefer or newDefer.resolve })
3731							// deferred.fail(function() { bind to newDefer or newDefer.reject })
3732							deferred[ tuple[ 1 ] ]( function() {
3733								var returned = fn && fn.apply( this, arguments );
3734								if ( returned && isFunction( returned.promise ) ) {
3735									returned.promise()
3736										.progress( newDefer.notify )
3737										.done( newDefer.resolve )
3738										.fail( newDefer.reject );
3739								} else {
3740									newDefer[ tuple[ 0 ] + "With" ](
3741										this,
3742										fn ? [ returned ] : arguments
3743									);
3744								}
3745							} );
3746						} );
3747						fns = null;
3748					} ).promise();
3749				},
3750				then: function( onFulfilled, onRejected, onProgress ) {
3751					var maxDepth = 0;
3752					function resolve( depth, deferred, handler, special ) {
3753						return function() {
3754							var that = this,
3755								args = arguments,
3756								mightThrow = function() {
3757									var returned, then;
3758
3759									// Support: Promises/A+ section 2.3.3.3.3
3760									// https://promisesaplus.com/#point-59
3761									// Ignore double-resolution attempts
3762									if ( depth < maxDepth ) {
3763										return;
3764									}
3765
3766									returned = handler.apply( that, args );
3767
3768									// Support: Promises/A+ section 2.3.1
3769									// https://promisesaplus.com/#point-48
3770									if ( returned === deferred.promise() ) {
3771										throw new TypeError( "Thenable self-resolution" );
3772									}
3773
3774									// Support: Promises/A+ sections 2.3.3.1, 3.5
3775									// https://promisesaplus.com/#point-54
3776									// https://promisesaplus.com/#point-75
3777									// Retrieve `then` only once
3778									then = returned &&
3779
3780										// Support: Promises/A+ section 2.3.4
3781										// https://promisesaplus.com/#point-64
3782										// Only check objects and functions for thenability
3783										( typeof returned === "object" ||
3784											typeof returned === "function" ) &&
3785										returned.then;
3786
3787									// Handle a returned thenable
3788									if ( isFunction( then ) ) {
3789
3790										// Special processors (notify) just wait for resolution
3791										if ( special ) {
3792											then.call(
3793												returned,
3794												resolve( maxDepth, deferred, Identity, special ),
3795												resolve( maxDepth, deferred, Thrower, special )
3796											);
3797
3798										// Normal processors (resolve) also hook into progress
3799										} else {
3800
3801											// ...and disregard older resolution values
3802											maxDepth++;
3803
3804											then.call(
3805												returned,
3806												resolve( maxDepth, deferred, Identity, special ),
3807												resolve( maxDepth, deferred, Thrower, special ),
3808												resolve( maxDepth, deferred, Identity,
3809													deferred.notifyWith )
3810											);
3811										}
3812
3813									// Handle all other returned values
3814									} else {
3815
3816										// Only substitute handlers pass on context
3817										// and multiple values (non-spec behavior)
3818										if ( handler !== Identity ) {
3819											that = undefined;
3820											args = [ returned ];
3821										}
3822
3823										// Process the value(s)
3824										// Default process is resolve
3825										( special || deferred.resolveWith )( that, args );
3826									}
3827								},
3828
3829								// Only normal processors (resolve) catch and reject exceptions
3830								process = special ?
3831									mightThrow :
3832									function() {
3833										try {
3834											mightThrow();
3835										} catch ( e ) {
3836
3837											if ( jQuery.Deferred.exceptionHook ) {
3838												jQuery.Deferred.exceptionHook( e,
3839													process.stackTrace );
3840											}
3841
3842											// Support: Promises/A+ section 2.3.3.3.4.1
3843											// https://promisesaplus.com/#point-61
3844											// Ignore post-resolution exceptions
3845											if ( depth + 1 >= maxDepth ) {
3846
3847												// Only substitute handlers pass on context
3848												// and multiple values (non-spec behavior)
3849												if ( handler !== Thrower ) {
3850													that = undefined;
3851													args = [ e ];
3852												}
3853
3854												deferred.rejectWith( that, args );
3855											}
3856										}
3857									};
3858
3859							// Support: Promises/A+ section 2.3.3.3.1
3860							// https://promisesaplus.com/#point-57
3861							// Re-resolve promises immediately to dodge false rejection from
3862							// subsequent errors
3863							if ( depth ) {
3864								process();
3865							} else {
3866
3867								// Call an optional hook to record the stack, in case of exception
3868								// since it's otherwise lost when execution goes async
3869								if ( jQuery.Deferred.getStackHook ) {
3870									process.stackTrace = jQuery.Deferred.getStackHook();
3871								}
3872								window.setTimeout( process );
3873							}
3874						};
3875					}
3876
3877					return jQuery.Deferred( function( newDefer ) {
3878
3879						// progress_handlers.add( ... )
3880						tuples[ 0 ][ 3 ].add(
3881							resolve(
3882								0,
3883								newDefer,
3884								isFunction( onProgress ) ?
3885									onProgress :
3886									Identity,
3887								newDefer.notifyWith
3888							)
3889						);
3890
3891						// fulfilled_handlers.add( ... )
3892						tuples[ 1 ][ 3 ].add(
3893							resolve(
3894								0,
3895								newDefer,
3896								isFunction( onFulfilled ) ?
3897									onFulfilled :
3898									Identity
3899							)
3900						);
3901
3902						// rejected_handlers.add( ... )
3903						tuples[ 2 ][ 3 ].add(
3904							resolve(
3905								0,
3906								newDefer,
3907								isFunction( onRejected ) ?
3908									onRejected :
3909									Thrower
3910							)
3911						);
3912					} ).promise();
3913				},
3914
3915				// Get a promise for this deferred
3916				// If obj is provided, the promise aspect is added to the object
3917				promise: function( obj ) {
3918					return obj != null ? jQuery.extend( obj, promise ) : promise;
3919				}
3920			},
3921			deferred = {};
3922
3923		// Add list-specific methods
3924		jQuery.each( tuples, function( i, tuple ) {
3925			var list = tuple[ 2 ],
3926				stateString = tuple[ 5 ];
3927
3928			// promise.progress = list.add
3929			// promise.done = list.add
3930			// promise.fail = list.add
3931			promise[ tuple[ 1 ] ] = list.add;
3932
3933			// Handle state
3934			if ( stateString ) {
3935				list.add(
3936					function() {
3937
3938						// state = "resolved" (i.e., fulfilled)
3939						// state = "rejected"
3940						state = stateString;
3941					},
3942
3943					// rejected_callbacks.disable
3944					// fulfilled_callbacks.disable
3945					tuples[ 3 - i ][ 2 ].disable,
3946
3947					// rejected_handlers.disable
3948					// fulfilled_handlers.disable
3949					tuples[ 3 - i ][ 3 ].disable,
3950
3951					// progress_callbacks.lock
3952					tuples[ 0 ][ 2 ].lock,
3953
3954					// progress_handlers.lock
3955					tuples[ 0 ][ 3 ].lock
3956				);
3957			}
3958
3959			// progress_handlers.fire
3960			// fulfilled_handlers.fire
3961			// rejected_handlers.fire
3962			list.add( tuple[ 3 ].fire );
3963
3964			// deferred.notify = function() { deferred.notifyWith(...) }
3965			// deferred.resolve = function() { deferred.resolveWith(...) }
3966			// deferred.reject = function() { deferred.rejectWith(...) }
3967			deferred[ tuple[ 0 ] ] = function() {
3968				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3969				return this;
3970			};
3971
3972			// deferred.notifyWith = list.fireWith
3973			// deferred.resolveWith = list.fireWith
3974			// deferred.rejectWith = list.fireWith
3975			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3976		} );
3977
3978		// Make the deferred a promise
3979		promise.promise( deferred );
3980
3981		// Call given func if any
3982		if ( func ) {
3983			func.call( deferred, deferred );
3984		}
3985
3986		// All done!
3987		return deferred;
3988	},
3989
3990	// Deferred helper
3991	when: function( singleValue ) {
3992		var
3993
3994			// count of uncompleted subordinates
3995			remaining = arguments.length,
3996
3997			// count of unprocessed arguments
3998			i = remaining,
3999
4000			// subordinate fulfillment data
4001			resolveContexts = Array( i ),
4002			resolveValues = slice.call( arguments ),
4003
4004			// the primary Deferred
4005			primary = jQuery.Deferred(),
4006
4007			// subordinate callback factory
4008			updateFunc = function( i ) {
4009				return function( value ) {
4010					resolveContexts[ i ] = this;
4011					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
4012					if ( !( --remaining ) ) {
4013						primary.resolveWith( resolveContexts, resolveValues );
4014					}
4015				};
4016			};
4017
4018		// Single- and empty arguments are adopted like Promise.resolve
4019		if ( remaining <= 1 ) {
4020			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
4021				!remaining );
4022
4023			// Use .then() to unwrap secondary thenables (cf. gh-3000)
4024			if ( primary.state() === "pending" ||
4025				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
4026
4027				return primary.then();
4028			}
4029		}
4030
4031		// Multiple arguments are aggregated like Promise.all array elements
4032		while ( i-- ) {
4033			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
4034		}
4035
4036		return primary.promise();
4037	}
4038} );
4039
4040
4041// These usually indicate a programmer mistake during development,
4042// warn about them ASAP rather than swallowing them by default.
4043var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
4044
4045jQuery.Deferred.exceptionHook = function( error, stack ) {
4046
4047	// Support: IE 8 - 9 only
4048	// Console exists when dev tools are open, which can happen at any time
4049	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
4050		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
4051	}
4052};
4053
4054
4055
4056
4057jQuery.readyException = function( error ) {
4058	window.setTimeout( function() {
4059		throw error;
4060	} );
4061};
4062
4063
4064
4065
4066// The deferred used on DOM ready
4067var readyList = jQuery.Deferred();
4068
4069jQuery.fn.ready = function( fn ) {
4070
4071	readyList
4072		.then( fn )
4073
4074		// Wrap jQuery.readyException in a function so that the lookup
4075		// happens at the time of error handling instead of callback
4076		// registration.
4077		.catch( function( error ) {
4078			jQuery.readyException( error );
4079		} );
4080
4081	return this;
4082};
4083
4084jQuery.extend( {
4085
4086	// Is the DOM ready to be used? Set to true once it occurs.
4087	isReady: false,
4088
4089	// A counter to track how many items to wait for before
4090	// the ready event fires. See #6781
4091	readyWait: 1,
4092
4093	// Handle when the DOM is ready
4094	ready: function( wait ) {
4095
4096		// Abort if there are pending holds or we're already ready
4097		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
4098			return;
4099		}
4100
4101		// Remember that the DOM is ready
4102		jQuery.isReady = true;
4103
4104		// If a normal DOM Ready event fired, decrement, and wait if need be
4105		if ( wait !== true && --jQuery.readyWait > 0 ) {
4106			return;
4107		}
4108
4109		// If there are functions bound, to execute
4110		readyList.resolveWith( document, [ jQuery ] );
4111	}
4112} );
4113
4114jQuery.ready.then = readyList.then;
4115
4116// The ready event handler and self cleanup method
4117function completed() {
4118	document.removeEventListener( "DOMContentLoaded", completed );
4119	window.removeEventListener( "load", completed );
4120	jQuery.ready();
4121}
4122
4123// Catch cases where $(document).ready() is called
4124// after the browser event has already occurred.
4125// Support: IE <=9 - 10 only
4126// Older IE sometimes signals "interactive" too soon
4127if ( document.readyState === "complete" ||
4128	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
4129
4130	// Handle it asynchronously to allow scripts the opportunity to delay ready
4131	window.setTimeout( jQuery.ready );
4132
4133} else {
4134
4135	// Use the handy event callback
4136	document.addEventListener( "DOMContentLoaded", completed );
4137
4138	// A fallback to window.onload, that will always work
4139	window.addEventListener( "load", completed );
4140}
4141
4142
4143
4144
4145// Multifunctional method to get and set values of a collection
4146// The value/s can optionally be executed if it's a function
4147var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
4148	var i = 0,
4149		len = elems.length,
4150		bulk = key == null;
4151
4152	// Sets many values
4153	if ( toType( key ) === "object" ) {
4154		chainable = true;
4155		for ( i in key ) {
4156			access( elems, fn, i, key[ i ], true, emptyGet, raw );
4157		}
4158
4159	// Sets one value
4160	} else if ( value !== undefined ) {
4161		chainable = true;
4162
4163		if ( !isFunction( value ) ) {
4164			raw = true;
4165		}
4166
4167		if ( bulk ) {
4168
4169			// Bulk operations run against the entire set
4170			if ( raw ) {
4171				fn.call( elems, value );
4172				fn = null;
4173
4174			// ...except when executing function values
4175			} else {
4176				bulk = fn;
4177				fn = function( elem, _key, value ) {
4178					return bulk.call( jQuery( elem ), value );
4179				};
4180			}
4181		}
4182
4183		if ( fn ) {
4184			for ( ; i < len; i++ ) {
4185				fn(
4186					elems[ i ], key, raw ?
4187						value :
4188						value.call( elems[ i ], i, fn( elems[ i ], key ) )
4189				);
4190			}
4191		}
4192	}
4193
4194	if ( chainable ) {
4195		return elems;
4196	}
4197
4198	// Gets
4199	if ( bulk ) {
4200		return fn.call( elems );
4201	}
4202
4203	return len ? fn( elems[ 0 ], key ) : emptyGet;
4204};
4205
4206
4207// Matches dashed string for camelizing
4208var rmsPrefix = /^-ms-/,
4209	rdashAlpha = /-([a-z])/g;
4210
4211// Used by camelCase as callback to replace()
4212function fcamelCase( _all, letter ) {
4213	return letter.toUpperCase();
4214}
4215
4216// Convert dashed to camelCase; used by the css and data modules
4217// Support: IE <=9 - 11, Edge 12 - 15
4218// Microsoft forgot to hump their vendor prefix (#9572)
4219function camelCase( string ) {
4220	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4221}
4222var acceptData = function( owner ) {
4223
4224	// Accepts only:
4225	//  - Node
4226	//    - Node.ELEMENT_NODE
4227	//    - Node.DOCUMENT_NODE
4228	//  - Object
4229	//    - Any
4230	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4231};
4232
4233
4234
4235
4236function Data() {
4237	this.expando = jQuery.expando + Data.uid++;
4238}
4239
4240Data.uid = 1;
4241
4242Data.prototype = {
4243
4244	cache: function( owner ) {
4245
4246		// Check if the owner object already has a cache
4247		var value = owner[ this.expando ];
4248
4249		// If not, create one
4250		if ( !value ) {
4251			value = {};
4252
4253			// We can accept data for non-element nodes in modern browsers,
4254			// but we should not, see #8335.
4255			// Always return an empty object.
4256			if ( acceptData( owner ) ) {
4257
4258				// If it is a node unlikely to be stringify-ed or looped over
4259				// use plain assignment
4260				if ( owner.nodeType ) {
4261					owner[ this.expando ] = value;
4262
4263				// Otherwise secure it in a non-enumerable property
4264				// configurable must be true to allow the property to be
4265				// deleted when data is removed
4266				} else {
4267					Object.defineProperty( owner, this.expando, {
4268						value: value,
4269						configurable: true
4270					} );
4271				}
4272			}
4273		}
4274
4275		return value;
4276	},
4277	set: function( owner, data, value ) {
4278		var prop,
4279			cache = this.cache( owner );
4280
4281		// Handle: [ owner, key, value ] args
4282		// Always use camelCase key (gh-2257)
4283		if ( typeof data === "string" ) {
4284			cache[ camelCase( data ) ] = value;
4285
4286		// Handle: [ owner, { properties } ] args
4287		} else {
4288
4289			// Copy the properties one-by-one to the cache object
4290			for ( prop in data ) {
4291				cache[ camelCase( prop ) ] = data[ prop ];
4292			}
4293		}
4294		return cache;
4295	},
4296	get: function( owner, key ) {
4297		return key === undefined ?
4298			this.cache( owner ) :
4299
4300			// Always use camelCase key (gh-2257)
4301			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4302	},
4303	access: function( owner, key, value ) {
4304
4305		// In cases where either:
4306		//
4307		//   1. No key was specified
4308		//   2. A string key was specified, but no value provided
4309		//
4310		// Take the "read" path and allow the get method to determine
4311		// which value to return, respectively either:
4312		//
4313		//   1. The entire cache object
4314		//   2. The data stored at the key
4315		//
4316		if ( key === undefined ||
4317				( ( key && typeof key === "string" ) && value === undefined ) ) {
4318
4319			return this.get( owner, key );
4320		}
4321
4322		// When the key is not a string, or both a key and value
4323		// are specified, set or extend (existing objects) with either:
4324		//
4325		//   1. An object of properties
4326		//   2. A key and value
4327		//
4328		this.set( owner, key, value );
4329
4330		// Since the "set" path can have two possible entry points
4331		// return the expected data based on which path was taken[*]
4332		return value !== undefined ? value : key;
4333	},
4334	remove: function( owner, key ) {
4335		var i,
4336			cache = owner[ this.expando ];
4337
4338		if ( cache === undefined ) {
4339			return;
4340		}
4341
4342		if ( key !== undefined ) {
4343
4344			// Support array or space separated string of keys
4345			if ( Array.isArray( key ) ) {
4346
4347				// If key is an array of keys...
4348				// We always set camelCase keys, so remove that.
4349				key = key.map( camelCase );
4350			} else {
4351				key = camelCase( key );
4352
4353				// If a key with the spaces exists, use it.
4354				// Otherwise, create an array by matching non-whitespace
4355				key = key in cache ?
4356					[ key ] :
4357					( key.match( rnothtmlwhite ) || [] );
4358			}
4359
4360			i = key.length;
4361
4362			while ( i-- ) {
4363				delete cache[ key[ i ] ];
4364			}
4365		}
4366
4367		// Remove the expando if there's no more data
4368		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4369
4370			// Support: Chrome <=35 - 45
4371			// Webkit & Blink performance suffers when deleting properties
4372			// from DOM nodes, so set to undefined instead
4373			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4374			if ( owner.nodeType ) {
4375				owner[ this.expando ] = undefined;
4376			} else {
4377				delete owner[ this.expando ];
4378			}
4379		}
4380	},
4381	hasData: function( owner ) {
4382		var cache = owner[ this.expando ];
4383		return cache !== undefined && !jQuery.isEmptyObject( cache );
4384	}
4385};
4386var dataPriv = new Data();
4387
4388var dataUser = new Data();
4389
4390
4391
4392//	Implementation Summary
4393//
4394//	1. Enforce API surface and semantic compatibility with 1.9.x branch
4395//	2. Improve the module's maintainability by reducing the storage
4396//		paths to a single mechanism.
4397//	3. Use the same single mechanism to support "private" and "user" data.
4398//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4399//	5. Avoid exposing implementation details on user objects (eg. expando properties)
4400//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
4401
4402var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4403	rmultiDash = /[A-Z]/g;
4404
4405function getData( data ) {
4406	if ( data === "true" ) {
4407		return true;
4408	}
4409
4410	if ( data === "false" ) {
4411		return false;
4412	}
4413
4414	if ( data === "null" ) {
4415		return null;
4416	}
4417
4418	// Only convert to a number if it doesn't change the string
4419	if ( data === +data + "" ) {
4420		return +data;
4421	}
4422
4423	if ( rbrace.test( data ) ) {
4424		return JSON.parse( data );
4425	}
4426
4427	return data;
4428}
4429
4430function dataAttr( elem, key, data ) {
4431	var name;
4432
4433	// If nothing was found internally, try to fetch any
4434	// data from the HTML5 data-* attribute
4435	if ( data === undefined && elem.nodeType === 1 ) {
4436		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4437		data = elem.getAttribute( name );
4438
4439		if ( typeof data === "string" ) {
4440			try {
4441				data = getData( data );
4442			} catch ( e ) {}
4443
4444			// Make sure we set the data so it isn't changed later
4445			dataUser.set( elem, key, data );
4446		} else {
4447			data = undefined;
4448		}
4449	}
4450	return data;
4451}
4452
4453jQuery.extend( {
4454	hasData: function( elem ) {
4455		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4456	},
4457
4458	data: function( elem, name, data ) {
4459		return dataUser.access( elem, name, data );
4460	},
4461
4462	removeData: function( elem, name ) {
4463		dataUser.remove( elem, name );
4464	},
4465
4466	// TODO: Now that all calls to _data and _removeData have been replaced
4467	// with direct calls to dataPriv methods, these can be deprecated.
4468	_data: function( elem, name, data ) {
4469		return dataPriv.access( elem, name, data );
4470	},
4471
4472	_removeData: function( elem, name ) {
4473		dataPriv.remove( elem, name );
4474	}
4475} );
4476
4477jQuery.fn.extend( {
4478	data: function( key, value ) {
4479		var i, name, data,
4480			elem = this[ 0 ],
4481			attrs = elem && elem.attributes;
4482
4483		// Gets all values
4484		if ( key === undefined ) {
4485			if ( this.length ) {
4486				data = dataUser.get( elem );
4487
4488				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4489					i = attrs.length;
4490					while ( i-- ) {
4491
4492						// Support: IE 11 only
4493						// The attrs elements can be null (#14894)
4494						if ( attrs[ i ] ) {
4495							name = attrs[ i ].name;
4496							if ( name.indexOf( "data-" ) === 0 ) {
4497								name = camelCase( name.slice( 5 ) );
4498								dataAttr( elem, name, data[ name ] );
4499							}
4500						}
4501					}
4502					dataPriv.set( elem, "hasDataAttrs", true );
4503				}
4504			}
4505
4506			return data;
4507		}
4508
4509		// Sets multiple values
4510		if ( typeof key === "object" ) {
4511			return this.each( function() {
4512				dataUser.set( this, key );
4513			} );
4514		}
4515
4516		return access( this, function( value ) {
4517			var data;
4518
4519			// The calling jQuery object (element matches) is not empty
4520			// (and therefore has an element appears at this[ 0 ]) and the
4521			// `value` parameter was not undefined. An empty jQuery object
4522			// will result in `undefined` for elem = this[ 0 ] which will
4523			// throw an exception if an attempt to read a data cache is made.
4524			if ( elem && value === undefined ) {
4525
4526				// Attempt to get data from the cache
4527				// The key will always be camelCased in Data
4528				data = dataUser.get( elem, key );
4529				if ( data !== undefined ) {
4530					return data;
4531				}
4532
4533				// Attempt to "discover" the data in
4534				// HTML5 custom data-* attrs
4535				data = dataAttr( elem, key );
4536				if ( data !== undefined ) {
4537					return data;
4538				}
4539
4540				// We tried really hard, but the data doesn't exist.
4541				return;
4542			}
4543
4544			// Set the data...
4545			this.each( function() {
4546
4547				// We always store the camelCased key
4548				dataUser.set( this, key, value );
4549			} );
4550		}, null, value, arguments.length > 1, null, true );
4551	},
4552
4553	removeData: function( key ) {
4554		return this.each( function() {
4555			dataUser.remove( this, key );
4556		} );
4557	}
4558} );
4559
4560
4561jQuery.extend( {
4562	queue: function( elem, type, data ) {
4563		var queue;
4564
4565		if ( elem ) {
4566			type = ( type || "fx" ) + "queue";
4567			queue = dataPriv.get( elem, type );
4568
4569			// Speed up dequeue by getting out quickly if this is just a lookup
4570			if ( data ) {
4571				if ( !queue || Array.isArray( data ) ) {
4572					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4573				} else {
4574					queue.push( data );
4575				}
4576			}
4577			return queue || [];
4578		}
4579	},
4580
4581	dequeue: function( elem, type ) {
4582		type = type || "fx";
4583
4584		var queue = jQuery.queue( elem, type ),
4585			startLength = queue.length,
4586			fn = queue.shift(),
4587			hooks = jQuery._queueHooks( elem, type ),
4588			next = function() {
4589				jQuery.dequeue( elem, type );
4590			};
4591
4592		// If the fx queue is dequeued, always remove the progress sentinel
4593		if ( fn === "inprogress" ) {
4594			fn = queue.shift();
4595			startLength--;
4596		}
4597
4598		if ( fn ) {
4599
4600			// Add a progress sentinel to prevent the fx queue from being
4601			// automatically dequeued
4602			if ( type === "fx" ) {
4603				queue.unshift( "inprogress" );
4604			}
4605
4606			// Clear up the last queue stop function
4607			delete hooks.stop;
4608			fn.call( elem, next, hooks );
4609		}
4610
4611		if ( !startLength && hooks ) {
4612			hooks.empty.fire();
4613		}
4614	},
4615
4616	// Not public - generate a queueHooks object, or return the current one
4617	_queueHooks: function( elem, type ) {
4618		var key = type + "queueHooks";
4619		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4620			empty: jQuery.Callbacks( "once memory" ).add( function() {
4621				dataPriv.remove( elem, [ type + "queue", key ] );
4622			} )
4623		} );
4624	}
4625} );
4626
4627jQuery.fn.extend( {
4628	queue: function( type, data ) {
4629		var setter = 2;
4630
4631		if ( typeof type !== "string" ) {
4632			data = type;
4633			type = "fx";
4634			setter--;
4635		}
4636
4637		if ( arguments.length < setter ) {
4638			return jQuery.queue( this[ 0 ], type );
4639		}
4640
4641		return data === undefined ?
4642			this :
4643			this.each( function() {
4644				var queue = jQuery.queue( this, type, data );
4645
4646				// Ensure a hooks for this queue
4647				jQuery._queueHooks( this, type );
4648
4649				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4650					jQuery.dequeue( this, type );
4651				}
4652			} );
4653	},
4654	dequeue: function( type ) {
4655		return this.each( function() {
4656			jQuery.dequeue( this, type );
4657		} );
4658	},
4659	clearQueue: function( type ) {
4660		return this.queue( type || "fx", [] );
4661	},
4662
4663	// Get a promise resolved when queues of a certain type
4664	// are emptied (fx is the type by default)
4665	promise: function( type, obj ) {
4666		var tmp,
4667			count = 1,
4668			defer = jQuery.Deferred(),
4669			elements = this,
4670			i = this.length,
4671			resolve = function() {
4672				if ( !( --count ) ) {
4673					defer.resolveWith( elements, [ elements ] );
4674				}
4675			};
4676
4677		if ( typeof type !== "string" ) {
4678			obj = type;
4679			type = undefined;
4680		}
4681		type = type || "fx";
4682
4683		while ( i-- ) {
4684			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4685			if ( tmp && tmp.empty ) {
4686				count++;
4687				tmp.empty.add( resolve );
4688			}
4689		}
4690		resolve();
4691		return defer.promise( obj );
4692	}
4693} );
4694var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4695
4696var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4697
4698
4699var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4700
4701var documentElement = document.documentElement;
4702
4703
4704
4705	var isAttached = function( elem ) {
4706			return jQuery.contains( elem.ownerDocument, elem );
4707		},
4708		composed = { composed: true };
4709
4710	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4711	// Check attachment across shadow DOM boundaries when possible (gh-3504)
4712	// Support: iOS 10.0-10.2 only
4713	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4714	// leading to errors. We need to check for `getRootNode`.
4715	if ( documentElement.getRootNode ) {
4716		isAttached = function( elem ) {
4717			return jQuery.contains( elem.ownerDocument, elem ) ||
4718				elem.getRootNode( composed ) === elem.ownerDocument;
4719		};
4720	}
4721var isHiddenWithinTree = function( elem, el ) {
4722
4723		// isHiddenWithinTree might be called from jQuery#filter function;
4724		// in that case, element will be second argument
4725		elem = el || elem;
4726
4727		// Inline style trumps all
4728		return elem.style.display === "none" ||
4729			elem.style.display === "" &&
4730
4731			// Otherwise, check computed style
4732			// Support: Firefox <=43 - 45
4733			// Disconnected elements can have computed display: none, so first confirm that elem is
4734			// in the document.
4735			isAttached( elem ) &&
4736
4737			jQuery.css( elem, "display" ) === "none";
4738	};
4739
4740
4741
4742function adjustCSS( elem, prop, valueParts, tween ) {
4743	var adjusted, scale,
4744		maxIterations = 20,
4745		currentValue = tween ?
4746			function() {
4747				return tween.cur();
4748			} :
4749			function() {
4750				return jQuery.css( elem, prop, "" );
4751			},
4752		initial = currentValue(),
4753		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4754
4755		// Starting value computation is required for potential unit mismatches
4756		initialInUnit = elem.nodeType &&
4757			( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4758			rcssNum.exec( jQuery.css( elem, prop ) );
4759
4760	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4761
4762		// Support: Firefox <=54
4763		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4764		initial = initial / 2;
4765
4766		// Trust units reported by jQuery.css
4767		unit = unit || initialInUnit[ 3 ];
4768
4769		// Iteratively approximate from a nonzero starting point
4770		initialInUnit = +initial || 1;
4771
4772		while ( maxIterations-- ) {
4773
4774			// Evaluate and update our best guess (doubling guesses that zero out).
4775			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4776			jQuery.style( elem, prop, initialInUnit + unit );
4777			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4778				maxIterations = 0;
4779			}
4780			initialInUnit = initialInUnit / scale;
4781
4782		}
4783
4784		initialInUnit = initialInUnit * 2;
4785		jQuery.style( elem, prop, initialInUnit + unit );
4786
4787		// Make sure we update the tween properties later on
4788		valueParts = valueParts || [];
4789	}
4790
4791	if ( valueParts ) {
4792		initialInUnit = +initialInUnit || +initial || 0;
4793
4794		// Apply relative offset (+=/-=) if specified
4795		adjusted = valueParts[ 1 ] ?
4796			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4797			+valueParts[ 2 ];
4798		if ( tween ) {
4799			tween.unit = unit;
4800			tween.start = initialInUnit;
4801			tween.end = adjusted;
4802		}
4803	}
4804	return adjusted;
4805}
4806
4807
4808var defaultDisplayMap = {};
4809
4810function getDefaultDisplay( elem ) {
4811	var temp,
4812		doc = elem.ownerDocument,
4813		nodeName = elem.nodeName,
4814		display = defaultDisplayMap[ nodeName ];
4815
4816	if ( display ) {
4817		return display;
4818	}
4819
4820	temp = doc.body.appendChild( doc.createElement( nodeName ) );
4821	display = jQuery.css( temp, "display" );
4822
4823	temp.parentNode.removeChild( temp );
4824
4825	if ( display === "none" ) {
4826		display = "block";
4827	}
4828	defaultDisplayMap[ nodeName ] = display;
4829
4830	return display;
4831}
4832
4833function showHide( elements, show ) {
4834	var display, elem,
4835		values = [],
4836		index = 0,
4837		length = elements.length;
4838
4839	// Determine new display value for elements that need to change
4840	for ( ; index < length; index++ ) {
4841		elem = elements[ index ];
4842		if ( !elem.style ) {
4843			continue;
4844		}
4845
4846		display = elem.style.display;
4847		if ( show ) {
4848
4849			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4850			// check is required in this first loop unless we have a nonempty display value (either
4851			// inline or about-to-be-restored)
4852			if ( display === "none" ) {
4853				values[ index ] = dataPriv.get( elem, "display" ) || null;
4854				if ( !values[ index ] ) {
4855					elem.style.display = "";
4856				}
4857			}
4858			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4859				values[ index ] = getDefaultDisplay( elem );
4860			}
4861		} else {
4862			if ( display !== "none" ) {
4863				values[ index ] = "none";
4864
4865				// Remember what we're overwriting
4866				dataPriv.set( elem, "display", display );
4867			}
4868		}
4869	}
4870
4871	// Set the display of the elements in a second loop to avoid constant reflow
4872	for ( index = 0; index < length; index++ ) {
4873		if ( values[ index ] != null ) {
4874			elements[ index ].style.display = values[ index ];
4875		}
4876	}
4877
4878	return elements;
4879}
4880
4881jQuery.fn.extend( {
4882	show: function() {
4883		return showHide( this, true );
4884	},
4885	hide: function() {
4886		return showHide( this );
4887	},
4888	toggle: function( state ) {
4889		if ( typeof state === "boolean" ) {
4890			return state ? this.show() : this.hide();
4891		}
4892
4893		return this.each( function() {
4894			if ( isHiddenWithinTree( this ) ) {
4895				jQuery( this ).show();
4896			} else {
4897				jQuery( this ).hide();
4898			}
4899		} );
4900	}
4901} );
4902var rcheckableType = ( /^(?:checkbox|radio)$/i );
4903
4904var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4905
4906var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4907
4908
4909
4910( function() {
4911	var fragment = document.createDocumentFragment(),
4912		div = fragment.appendChild( document.createElement( "div" ) ),
4913		input = document.createElement( "input" );
4914
4915	// Support: Android 4.0 - 4.3 only
4916	// Check state lost if the name is set (#11217)
4917	// Support: Windows Web Apps (WWA)
4918	// `name` and `type` must use .setAttribute for WWA (#14901)
4919	input.setAttribute( "type", "radio" );
4920	input.setAttribute( "checked", "checked" );
4921	input.setAttribute( "name", "t" );
4922
4923	div.appendChild( input );
4924
4925	// Support: Android <=4.1 only
4926	// Older WebKit doesn't clone checked state correctly in fragments
4927	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4928
4929	// Support: IE <=11 only
4930	// Make sure textarea (and checkbox) defaultValue is properly cloned
4931	div.innerHTML = "<textarea>x</textarea>";
4932	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4933
4934	// Support: IE <=9 only
4935	// IE <=9 replaces <option> tags with their contents when inserted outside of
4936	// the select element.
4937	div.innerHTML = "<option></option>";
4938	support.option = !!div.lastChild;
4939} )();
4940
4941
4942// We have to close these tags to support XHTML (#13200)
4943var wrapMap = {
4944
4945	// XHTML parsers do not magically insert elements in the
4946	// same way that tag soup parsers do. So we cannot shorten
4947	// this by omitting <tbody> or other required elements.
4948	thead: [ 1, "<table>", "</table>" ],
4949	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4950	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4951	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4952
4953	_default: [ 0, "", "" ]
4954};
4955
4956wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4957wrapMap.th = wrapMap.td;
4958
4959// Support: IE <=9 only
4960if ( !support.option ) {
4961	wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
4962}
4963
4964
4965function getAll( context, tag ) {
4966
4967	// Support: IE <=9 - 11 only
4968	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
4969	var ret;
4970
4971	if ( typeof context.getElementsByTagName !== "undefined" ) {
4972		ret = context.getElementsByTagName( tag || "*" );
4973
4974	} else if ( typeof context.querySelectorAll !== "undefined" ) {
4975		ret = context.querySelectorAll( tag || "*" );
4976
4977	} else {
4978		ret = [];
4979	}
4980
4981	if ( tag === undefined || tag && nodeName( context, tag ) ) {
4982		return jQuery.merge( [ context ], ret );
4983	}
4984
4985	return ret;
4986}
4987
4988
4989// Mark scripts as having already been evaluated
4990function setGlobalEval( elems, refElements ) {
4991	var i = 0,
4992		l = elems.length;
4993
4994	for ( ; i < l; i++ ) {
4995		dataPriv.set(
4996			elems[ i ],
4997			"globalEval",
4998			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
4999		);
5000	}
5001}
5002
5003
5004var rhtml = /<|&#?\w+;/;
5005
5006function buildFragment( elems, context, scripts, selection, ignored ) {
5007	var elem, tmp, tag, wrap, attached, j,
5008		fragment = context.createDocumentFragment(),
5009		nodes = [],
5010		i = 0,
5011		l = elems.length;
5012
5013	for ( ; i < l; i++ ) {
5014		elem = elems[ i ];
5015
5016		if ( elem || elem === 0 ) {
5017
5018			// Add nodes directly
5019			if ( toType( elem ) === "object" ) {
5020
5021				// Support: Android <=4.0 only, PhantomJS 1 only
5022				// push.apply(_, arraylike) throws on ancient WebKit
5023				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
5024
5025			// Convert non-html into a text node
5026			} else if ( !rhtml.test( elem ) ) {
5027				nodes.push( context.createTextNode( elem ) );
5028
5029			// Convert html into DOM nodes
5030			} else {
5031				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
5032
5033				// Deserialize a standard representation
5034				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
5035				wrap = wrapMap[ tag ] || wrapMap._default;
5036				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
5037
5038				// Descend through wrappers to the right content
5039				j = wrap[ 0 ];
5040				while ( j-- ) {
5041					tmp = tmp.lastChild;
5042				}
5043
5044				// Support: Android <=4.0 only, PhantomJS 1 only
5045				// push.apply(_, arraylike) throws on ancient WebKit
5046				jQuery.merge( nodes, tmp.childNodes );
5047
5048				// Remember the top-level container
5049				tmp = fragment.firstChild;
5050
5051				// Ensure the created nodes are orphaned (#12392)
5052				tmp.textContent = "";
5053			}
5054		}
5055	}
5056
5057	// Remove wrapper from fragment
5058	fragment.textContent = "";
5059
5060	i = 0;
5061	while ( ( elem = nodes[ i++ ] ) ) {
5062
5063		// Skip elements already in the context collection (trac-4087)
5064		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
5065			if ( ignored ) {
5066				ignored.push( elem );
5067			}
5068			continue;
5069		}
5070
5071		attached = isAttached( elem );
5072
5073		// Append to fragment
5074		tmp = getAll( fragment.appendChild( elem ), "script" );
5075
5076		// Preserve script evaluation history
5077		if ( attached ) {
5078			setGlobalEval( tmp );
5079		}
5080
5081		// Capture executables
5082		if ( scripts ) {
5083			j = 0;
5084			while ( ( elem = tmp[ j++ ] ) ) {
5085				if ( rscriptType.test( elem.type || "" ) ) {
5086					scripts.push( elem );
5087				}
5088			}
5089		}
5090	}
5091
5092	return fragment;
5093}
5094
5095
5096var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
5097
5098function returnTrue() {
5099	return true;
5100}
5101
5102function returnFalse() {
5103	return false;
5104}
5105
5106// Support: IE <=9 - 11+
5107// focus() and blur() are asynchronous, except when they are no-op.
5108// So expect focus to be synchronous when the element is already active,
5109// and blur to be synchronous when the element is not already active.
5110// (focus and blur are always synchronous in other supported browsers,
5111// this just defines when we can count on it).
5112function expectSync( elem, type ) {
5113	return ( elem === safeActiveElement() ) === ( type === "focus" );
5114}
5115
5116// Support: IE <=9 only
5117// Accessing document.activeElement can throw unexpectedly
5118// https://bugs.jquery.com/ticket/13393
5119function safeActiveElement() {
5120	try {
5121		return document.activeElement;
5122	} catch ( err ) { }
5123}
5124
5125function on( elem, types, selector, data, fn, one ) {
5126	var origFn, type;
5127
5128	// Types can be a map of types/handlers
5129	if ( typeof types === "object" ) {
5130
5131		// ( types-Object, selector, data )
5132		if ( typeof selector !== "string" ) {
5133
5134			// ( types-Object, data )
5135			data = data || selector;
5136			selector = undefined;
5137		}
5138		for ( type in types ) {
5139			on( elem, type, selector, data, types[ type ], one );
5140		}
5141		return elem;
5142	}
5143
5144	if ( data == null && fn == null ) {
5145
5146		// ( types, fn )
5147		fn = selector;
5148		data = selector = undefined;
5149	} else if ( fn == null ) {
5150		if ( typeof selector === "string" ) {
5151
5152			// ( types, selector, fn )
5153			fn = data;
5154			data = undefined;
5155		} else {
5156
5157			// ( types, data, fn )
5158			fn = data;
5159			data = selector;
5160			selector = undefined;
5161		}
5162	}
5163	if ( fn === false ) {
5164		fn = returnFalse;
5165	} else if ( !fn ) {
5166		return elem;
5167	}
5168
5169	if ( one === 1 ) {
5170		origFn = fn;
5171		fn = function( event ) {
5172
5173			// Can use an empty set, since event contains the info
5174			jQuery().off( event );
5175			return origFn.apply( this, arguments );
5176		};
5177
5178		// Use same guid so caller can remove using origFn
5179		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
5180	}
5181	return elem.each( function() {
5182		jQuery.event.add( this, types, fn, data, selector );
5183	} );
5184}
5185
5186/*
5187 * Helper functions for managing events -- not part of the public interface.
5188 * Props to Dean Edwards' addEvent library for many of the ideas.
5189 */
5190jQuery.event = {
5191
5192	global: {},
5193
5194	add: function( elem, types, handler, data, selector ) {
5195
5196		var handleObjIn, eventHandle, tmp,
5197			events, t, handleObj,
5198			special, handlers, type, namespaces, origType,
5199			elemData = dataPriv.get( elem );
5200
5201		// Only attach events to objects that accept data
5202		if ( !acceptData( elem ) ) {
5203			return;
5204		}
5205
5206		// Caller can pass in an object of custom data in lieu of the handler
5207		if ( handler.handler ) {
5208			handleObjIn = handler;
5209			handler = handleObjIn.handler;
5210			selector = handleObjIn.selector;
5211		}
5212
5213		// Ensure that invalid selectors throw exceptions at attach time
5214		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
5215		if ( selector ) {
5216			jQuery.find.matchesSelector( documentElement, selector );
5217		}
5218
5219		// Make sure that the handler has a unique ID, used to find/remove it later
5220		if ( !handler.guid ) {
5221			handler.guid = jQuery.guid++;
5222		}
5223
5224		// Init the element's event structure and main handler, if this is the first
5225		if ( !( events = elemData.events ) ) {
5226			events = elemData.events = Object.create( null );
5227		}
5228		if ( !( eventHandle = elemData.handle ) ) {
5229			eventHandle = elemData.handle = function( e ) {
5230
5231				// Discard the second event of a jQuery.event.trigger() and
5232				// when an event is called after a page has unloaded
5233				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
5234					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
5235			};
5236		}
5237
5238		// Handle multiple events separated by a space
5239		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5240		t = types.length;
5241		while ( t-- ) {
5242			tmp = rtypenamespace.exec( types[ t ] ) || [];
5243			type = origType = tmp[ 1 ];
5244			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5245
5246			// There *must* be a type, no attaching namespace-only handlers
5247			if ( !type ) {
5248				continue;
5249			}
5250
5251			// If event changes its type, use the special event handlers for the changed type
5252			special = jQuery.event.special[ type ] || {};
5253
5254			// If selector defined, determine special event api type, otherwise given type
5255			type = ( selector ? special.delegateType : special.bindType ) || type;
5256
5257			// Update special based on newly reset type
5258			special = jQuery.event.special[ type ] || {};
5259
5260			// handleObj is passed to all event handlers
5261			handleObj = jQuery.extend( {
5262				type: type,
5263				origType: origType,
5264				data: data,
5265				handler: handler,
5266				guid: handler.guid,
5267				selector: selector,
5268				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
5269				namespace: namespaces.join( "." )
5270			}, handleObjIn );
5271
5272			// Init the event handler queue if we're the first
5273			if ( !( handlers = events[ type ] ) ) {
5274				handlers = events[ type ] = [];
5275				handlers.delegateCount = 0;
5276
5277				// Only use addEventListener if the special events handler returns false
5278				if ( !special.setup ||
5279					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
5280
5281					if ( elem.addEventListener ) {
5282						elem.addEventListener( type, eventHandle );
5283					}
5284				}
5285			}
5286
5287			if ( special.add ) {
5288				special.add.call( elem, handleObj );
5289
5290				if ( !handleObj.handler.guid ) {
5291					handleObj.handler.guid = handler.guid;
5292				}
5293			}
5294
5295			// Add to the element's handler list, delegates in front
5296			if ( selector ) {
5297				handlers.splice( handlers.delegateCount++, 0, handleObj );
5298			} else {
5299				handlers.push( handleObj );
5300			}
5301
5302			// Keep track of which events have ever been used, for event optimization
5303			jQuery.event.global[ type ] = true;
5304		}
5305
5306	},
5307
5308	// Detach an event or set of events from an element
5309	remove: function( elem, types, handler, selector, mappedTypes ) {
5310
5311		var j, origCount, tmp,
5312			events, t, handleObj,
5313			special, handlers, type, namespaces, origType,
5314			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
5315
5316		if ( !elemData || !( events = elemData.events ) ) {
5317			return;
5318		}
5319
5320		// Once for each type.namespace in types; type may be omitted
5321		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5322		t = types.length;
5323		while ( t-- ) {
5324			tmp = rtypenamespace.exec( types[ t ] ) || [];
5325			type = origType = tmp[ 1 ];
5326			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5327
5328			// Unbind all events (on this namespace, if provided) for the element
5329			if ( !type ) {
5330				for ( type in events ) {
5331					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
5332				}
5333				continue;
5334			}
5335
5336			special = jQuery.event.special[ type ] || {};
5337			type = ( selector ? special.delegateType : special.bindType ) || type;
5338			handlers = events[ type ] || [];
5339			tmp = tmp[ 2 ] &&
5340				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
5341
5342			// Remove matching events
5343			origCount = j = handlers.length;
5344			while ( j-- ) {
5345				handleObj = handlers[ j ];
5346
5347				if ( ( mappedTypes || origType === handleObj.origType ) &&
5348					( !handler || handler.guid === handleObj.guid ) &&
5349					( !tmp || tmp.test( handleObj.namespace ) ) &&
5350					( !selector || selector === handleObj.selector ||
5351						selector === "**" && handleObj.selector ) ) {
5352					handlers.splice( j, 1 );
5353
5354					if ( handleObj.selector ) {
5355						handlers.delegateCount--;
5356					}
5357					if ( special.remove ) {
5358						special.remove.call( elem, handleObj );
5359					}
5360				}
5361			}
5362
5363			// Remove generic event handler if we removed something and no more handlers exist
5364			// (avoids potential for endless recursion during removal of special event handlers)
5365			if ( origCount && !handlers.length ) {
5366				if ( !special.teardown ||
5367					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
5368
5369					jQuery.removeEvent( elem, type, elemData.handle );
5370				}
5371
5372				delete events[ type ];
5373			}
5374		}
5375
5376		// Remove data and the expando if it's no longer used
5377		if ( jQuery.isEmptyObject( events ) ) {
5378			dataPriv.remove( elem, "handle events" );
5379		}
5380	},
5381
5382	dispatch: function( nativeEvent ) {
5383
5384		var i, j, ret, matched, handleObj, handlerQueue,
5385			args = new Array( arguments.length ),
5386
5387			// Make a writable jQuery.Event from the native event object
5388			event = jQuery.event.fix( nativeEvent ),
5389
5390			handlers = (
5391				dataPriv.get( this, "events" ) || Object.create( null )
5392			)[ event.type ] || [],
5393			special = jQuery.event.special[ event.type ] || {};
5394
5395		// Use the fix-ed jQuery.Event rather than the (read-only) native event
5396		args[ 0 ] = event;
5397
5398		for ( i = 1; i < arguments.length; i++ ) {
5399			args[ i ] = arguments[ i ];
5400		}
5401
5402		event.delegateTarget = this;
5403
5404		// Call the preDispatch hook for the mapped type, and let it bail if desired
5405		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
5406			return;
5407		}
5408
5409		// Determine handlers
5410		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
5411
5412		// Run delegates first; they may want to stop propagation beneath us
5413		i = 0;
5414		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
5415			event.currentTarget = matched.elem;
5416
5417			j = 0;
5418			while ( ( handleObj = matched.handlers[ j++ ] ) &&
5419				!event.isImmediatePropagationStopped() ) {
5420
5421				// If the event is namespaced, then each handler is only invoked if it is
5422				// specially universal or its namespaces are a superset of the event's.
5423				if ( !event.rnamespace || handleObj.namespace === false ||
5424					event.rnamespace.test( handleObj.namespace ) ) {
5425
5426					event.handleObj = handleObj;
5427					event.data = handleObj.data;
5428
5429					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
5430						handleObj.handler ).apply( matched.elem, args );
5431
5432					if ( ret !== undefined ) {
5433						if ( ( event.result = ret ) === false ) {
5434							event.preventDefault();
5435							event.stopPropagation();
5436						}
5437					}
5438				}
5439			}
5440		}
5441
5442		// Call the postDispatch hook for the mapped type
5443		if ( special.postDispatch ) {
5444			special.postDispatch.call( this, event );
5445		}
5446
5447		return event.result;
5448	},
5449
5450	handlers: function( event, handlers ) {
5451		var i, handleObj, sel, matchedHandlers, matchedSelectors,
5452			handlerQueue = [],
5453			delegateCount = handlers.delegateCount,
5454			cur = event.target;
5455
5456		// Find delegate handlers
5457		if ( delegateCount &&
5458
5459			// Support: IE <=9
5460			// Black-hole SVG <use> instance trees (trac-13180)
5461			cur.nodeType &&
5462
5463			// Support: Firefox <=42
5464			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
5465			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
5466			// Support: IE 11 only
5467			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
5468			!( event.type === "click" && event.button >= 1 ) ) {
5469
5470			for ( ; cur !== this; cur = cur.parentNode || this ) {
5471
5472				// Don't check non-elements (#13208)
5473				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
5474				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
5475					matchedHandlers = [];
5476					matchedSelectors = {};
5477					for ( i = 0; i < delegateCount; i++ ) {
5478						handleObj = handlers[ i ];
5479
5480						// Don't conflict with Object.prototype properties (#13203)
5481						sel = handleObj.selector + " ";
5482
5483						if ( matchedSelectors[ sel ] === undefined ) {
5484							matchedSelectors[ sel ] = handleObj.needsContext ?
5485								jQuery( sel, this ).index( cur ) > -1 :
5486								jQuery.find( sel, this, null, [ cur ] ).length;
5487						}
5488						if ( matchedSelectors[ sel ] ) {
5489							matchedHandlers.push( handleObj );
5490						}
5491					}
5492					if ( matchedHandlers.length ) {
5493						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
5494					}
5495				}
5496			}
5497		}
5498
5499		// Add the remaining (directly-bound) handlers
5500		cur = this;
5501		if ( delegateCount < handlers.length ) {
5502			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
5503		}
5504
5505		return handlerQueue;
5506	},
5507
5508	addProp: function( name, hook ) {
5509		Object.defineProperty( jQuery.Event.prototype, name, {
5510			enumerable: true,
5511			configurable: true,
5512
5513			get: isFunction( hook ) ?
5514				function() {
5515					if ( this.originalEvent ) {
5516						return hook( this.originalEvent );
5517					}
5518				} :
5519				function() {
5520					if ( this.originalEvent ) {
5521						return this.originalEvent[ name ];
5522					}
5523				},
5524
5525			set: function( value ) {
5526				Object.defineProperty( this, name, {
5527					enumerable: true,
5528					configurable: true,
5529					writable: true,
5530					value: value
5531				} );
5532			}
5533		} );
5534	},
5535
5536	fix: function( originalEvent ) {
5537		return originalEvent[ jQuery.expando ] ?
5538			originalEvent :
5539			new jQuery.Event( originalEvent );
5540	},
5541
5542	special: {
5543		load: {
5544
5545			// Prevent triggered image.load events from bubbling to window.load
5546			noBubble: true
5547		},
5548		click: {
5549
5550			// Utilize native event to ensure correct state for checkable inputs
5551			setup: function( data ) {
5552
5553				// For mutual compressibility with _default, replace `this` access with a local var.
5554				// `|| data` is dead code meant only to preserve the variable through minification.
5555				var el = this || data;
5556
5557				// Claim the first handler
5558				if ( rcheckableType.test( el.type ) &&
5559					el.click && nodeName( el, "input" ) ) {
5560
5561					// dataPriv.set( el, "click", ... )
5562					leverageNative( el, "click", returnTrue );
5563				}
5564
5565				// Return false to allow normal processing in the caller
5566				return false;
5567			},
5568			trigger: function( data ) {
5569
5570				// For mutual compressibility with _default, replace `this` access with a local var.
5571				// `|| data` is dead code meant only to preserve the variable through minification.
5572				var el = this || data;
5573
5574				// Force setup before triggering a click
5575				if ( rcheckableType.test( el.type ) &&
5576					el.click && nodeName( el, "input" ) ) {
5577
5578					leverageNative( el, "click" );
5579				}
5580
5581				// Return non-false to allow normal event-path propagation
5582				return true;
5583			},
5584
5585			// For cross-browser consistency, suppress native .click() on links
5586			// Also prevent it if we're currently inside a leveraged native-event stack
5587			_default: function( event ) {
5588				var target = event.target;
5589				return rcheckableType.test( target.type ) &&
5590					target.click && nodeName( target, "input" ) &&
5591					dataPriv.get( target, "click" ) ||
5592					nodeName( target, "a" );
5593			}
5594		},
5595
5596		beforeunload: {
5597			postDispatch: function( event ) {
5598
5599				// Support: Firefox 20+
5600				// Firefox doesn't alert if the returnValue field is not set.
5601				if ( event.result !== undefined && event.originalEvent ) {
5602					event.originalEvent.returnValue = event.result;
5603				}
5604			}
5605		}
5606	}
5607};
5608
5609// Ensure the presence of an event listener that handles manually-triggered
5610// synthetic events by interrupting progress until reinvoked in response to
5611// *native* events that it fires directly, ensuring that state changes have
5612// already occurred before other listeners are invoked.
5613function leverageNative( el, type, expectSync ) {
5614
5615	// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
5616	if ( !expectSync ) {
5617		if ( dataPriv.get( el, type ) === undefined ) {
5618			jQuery.event.add( el, type, returnTrue );
5619		}
5620		return;
5621	}
5622
5623	// Register the controller as a special universal handler for all event namespaces
5624	dataPriv.set( el, type, false );
5625	jQuery.event.add( el, type, {
5626		namespace: false,
5627		handler: function( event ) {
5628			var notAsync, result,
5629				saved = dataPriv.get( this, type );
5630
5631			if ( ( event.isTrigger & 1 ) && this[ type ] ) {
5632
5633				// Interrupt processing of the outer synthetic .trigger()ed event
5634				// Saved data should be false in such cases, but might be a leftover capture object
5635				// from an async native handler (gh-4350)
5636				if ( !saved.length ) {
5637
5638					// Store arguments for use when handling the inner native event
5639					// There will always be at least one argument (an event object), so this array
5640					// will not be confused with a leftover capture object.
5641					saved = slice.call( arguments );
5642					dataPriv.set( this, type, saved );
5643
5644					// Trigger the native event and capture its result
5645					// Support: IE <=9 - 11+
5646					// focus() and blur() are asynchronous
5647					notAsync = expectSync( this, type );
5648					this[ type ]();
5649					result = dataPriv.get( this, type );
5650					if ( saved !== result || notAsync ) {
5651						dataPriv.set( this, type, false );
5652					} else {
5653						result = {};
5654					}
5655					if ( saved !== result ) {
5656
5657						// Cancel the outer synthetic event
5658						event.stopImmediatePropagation();
5659						event.preventDefault();
5660
5661						// Support: Chrome 86+
5662						// In Chrome, if an element having a focusout handler is blurred by
5663						// clicking outside of it, it invokes the handler synchronously. If
5664						// that handler calls `.remove()` on the element, the data is cleared,
5665						// leaving `result` undefined. We need to guard against this.
5666						return result && result.value;
5667					}
5668
5669				// If this is an inner synthetic event for an event with a bubbling surrogate
5670				// (focus or blur), assume that the surrogate already propagated from triggering the
5671				// native event and prevent that from happening again here.
5672				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
5673				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
5674				// less bad than duplication.
5675				} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
5676					event.stopPropagation();
5677				}
5678
5679			// If this is a native event triggered above, everything is now in order
5680			// Fire an inner synthetic event with the original arguments
5681			} else if ( saved.length ) {
5682
5683				// ...and capture the result
5684				dataPriv.set( this, type, {
5685					value: jQuery.event.trigger(
5686
5687						// Support: IE <=9 - 11+
5688						// Extend with the prototype to reset the above stopImmediatePropagation()
5689						jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
5690						saved.slice( 1 ),
5691						this
5692					)
5693				} );
5694
5695				// Abort handling of the native event
5696				event.stopImmediatePropagation();
5697			}
5698		}
5699	} );
5700}
5701
5702jQuery.removeEvent = function( elem, type, handle ) {
5703
5704	// This "if" is needed for plain objects
5705	if ( elem.removeEventListener ) {
5706		elem.removeEventListener( type, handle );
5707	}
5708};
5709
5710jQuery.Event = function( src, props ) {
5711
5712	// Allow instantiation without the 'new' keyword
5713	if ( !( this instanceof jQuery.Event ) ) {
5714		return new jQuery.Event( src, props );
5715	}
5716
5717	// Event object
5718	if ( src && src.type ) {
5719		this.originalEvent = src;
5720		this.type = src.type;
5721
5722		// Events bubbling up the document may have been marked as prevented
5723		// by a handler lower down the tree; reflect the correct value.
5724		this.isDefaultPrevented = src.defaultPrevented ||
5725				src.defaultPrevented === undefined &&
5726
5727				// Support: Android <=2.3 only
5728				src.returnValue === false ?
5729			returnTrue :
5730			returnFalse;
5731
5732		// Create target properties
5733		// Support: Safari <=6 - 7 only
5734		// Target should not be a text node (#504, #13143)
5735		this.target = ( src.target && src.target.nodeType === 3 ) ?
5736			src.target.parentNode :
5737			src.target;
5738
5739		this.currentTarget = src.currentTarget;
5740		this.relatedTarget = src.relatedTarget;
5741
5742	// Event type
5743	} else {
5744		this.type = src;
5745	}
5746
5747	// Put explicitly provided properties onto the event object
5748	if ( props ) {
5749		jQuery.extend( this, props );
5750	}
5751
5752	// Create a timestamp if incoming event doesn't have one
5753	this.timeStamp = src && src.timeStamp || Date.now();
5754
5755	// Mark it as fixed
5756	this[ jQuery.expando ] = true;
5757};
5758
5759// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
5760// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
5761jQuery.Event.prototype = {
5762	constructor: jQuery.Event,
5763	isDefaultPrevented: returnFalse,
5764	isPropagationStopped: returnFalse,
5765	isImmediatePropagationStopped: returnFalse,
5766	isSimulated: false,
5767
5768	preventDefault: function() {
5769		var e = this.originalEvent;
5770
5771		this.isDefaultPrevented = returnTrue;
5772
5773		if ( e && !this.isSimulated ) {
5774			e.preventDefault();
5775		}
5776	},
5777	stopPropagation: function() {
5778		var e = this.originalEvent;
5779
5780		this.isPropagationStopped = returnTrue;
5781
5782		if ( e && !this.isSimulated ) {
5783			e.stopPropagation();
5784		}
5785	},
5786	stopImmediatePropagation: function() {
5787		var e = this.originalEvent;
5788
5789		this.isImmediatePropagationStopped = returnTrue;
5790
5791		if ( e && !this.isSimulated ) {
5792			e.stopImmediatePropagation();
5793		}
5794
5795		this.stopPropagation();
5796	}
5797};
5798
5799// Includes all common event props including KeyEvent and MouseEvent specific props
5800jQuery.each( {
5801	altKey: true,
5802	bubbles: true,
5803	cancelable: true,
5804	changedTouches: true,
5805	ctrlKey: true,
5806	detail: true,
5807	eventPhase: true,
5808	metaKey: true,
5809	pageX: true,
5810	pageY: true,
5811	shiftKey: true,
5812	view: true,
5813	"char": true,
5814	code: true,
5815	charCode: true,
5816	key: true,
5817	keyCode: true,
5818	button: true,
5819	buttons: true,
5820	clientX: true,
5821	clientY: true,
5822	offsetX: true,
5823	offsetY: true,
5824	pointerId: true,
5825	pointerType: true,
5826	screenX: true,
5827	screenY: true,
5828	targetTouches: true,
5829	toElement: true,
5830	touches: true,
5831	which: true
5832}, jQuery.event.addProp );
5833
5834jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
5835	jQuery.event.special[ type ] = {
5836
5837		// Utilize native event if possible so blur/focus sequence is correct
5838		setup: function() {
5839
5840			// Claim the first handler
5841			// dataPriv.set( this, "focus", ... )
5842			// dataPriv.set( this, "blur", ... )
5843			leverageNative( this, type, expectSync );
5844
5845			// Return false to allow normal processing in the caller
5846			return false;
5847		},
5848		trigger: function() {
5849
5850			// Force setup before trigger
5851			leverageNative( this, type );
5852
5853			// Return non-false to allow normal event-path propagation
5854			return true;
5855		},
5856
5857		// Suppress native focus or blur as it's already being fired
5858		// in leverageNative.
5859		_default: function() {
5860			return true;
5861		},
5862
5863		delegateType: delegateType
5864	};
5865} );
5866
5867// Create mouseenter/leave events using mouseover/out and event-time checks
5868// so that event delegation works in jQuery.
5869// Do the same for pointerenter/pointerleave and pointerover/pointerout
5870//
5871// Support: Safari 7 only
5872// Safari sends mouseenter too often; see:
5873// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
5874// for the description of the bug (it existed in older Chrome versions as well).
5875jQuery.each( {
5876	mouseenter: "mouseover",
5877	mouseleave: "mouseout",
5878	pointerenter: "pointerover",
5879	pointerleave: "pointerout"
5880}, function( orig, fix ) {
5881	jQuery.event.special[ orig ] = {
5882		delegateType: fix,
5883		bindType: fix,
5884
5885		handle: function( event ) {
5886			var ret,
5887				target = this,
5888				related = event.relatedTarget,
5889				handleObj = event.handleObj;
5890
5891			// For mouseenter/leave call the handler if related is outside the target.
5892			// NB: No relatedTarget if the mouse left/entered the browser window
5893			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
5894				event.type = handleObj.origType;
5895				ret = handleObj.handler.apply( this, arguments );
5896				event.type = fix;
5897			}
5898			return ret;
5899		}
5900	};
5901} );
5902
5903jQuery.fn.extend( {
5904
5905	on: function( types, selector, data, fn ) {
5906		return on( this, types, selector, data, fn );
5907	},
5908	one: function( types, selector, data, fn ) {
5909		return on( this, types, selector, data, fn, 1 );
5910	},
5911	off: function( types, selector, fn ) {
5912		var handleObj, type;
5913		if ( types && types.preventDefault && types.handleObj ) {
5914
5915			// ( event )  dispatched jQuery.Event
5916			handleObj = types.handleObj;
5917			jQuery( types.delegateTarget ).off(
5918				handleObj.namespace ?
5919					handleObj.origType + "." + handleObj.namespace :
5920					handleObj.origType,
5921				handleObj.selector,
5922				handleObj.handler
5923			);
5924			return this;
5925		}
5926		if ( typeof types === "object" ) {
5927
5928			// ( types-object [, selector] )
5929			for ( type in types ) {
5930				this.off( type, selector, types[ type ] );
5931			}
5932			return this;
5933		}
5934		if ( selector === false || typeof selector === "function" ) {
5935
5936			// ( types [, fn] )
5937			fn = selector;
5938			selector = undefined;
5939		}
5940		if ( fn === false ) {
5941			fn = returnFalse;
5942		}
5943		return this.each( function() {
5944			jQuery.event.remove( this, types, fn, selector );
5945		} );
5946	}
5947} );
5948
5949
5950var
5951
5952	// Support: IE <=10 - 11, Edge 12 - 13 only
5953	// In IE/Edge using regex groups here causes severe slowdowns.
5954	// See https://connect.microsoft.com/IE/feedback/details/1736512/
5955	rnoInnerhtml = /<script|<style|<link/i,
5956
5957	// checked="checked" or checked
5958	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5959	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
5960
5961// Prefer a tbody over its parent table for containing new rows
5962function manipulationTarget( elem, content ) {
5963	if ( nodeName( elem, "table" ) &&
5964		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
5965
5966		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
5967	}
5968
5969	return elem;
5970}
5971
5972// Replace/restore the type attribute of script elements for safe DOM manipulation
5973function disableScript( elem ) {
5974	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
5975	return elem;
5976}
5977function restoreScript( elem ) {
5978	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
5979		elem.type = elem.type.slice( 5 );
5980	} else {
5981		elem.removeAttribute( "type" );
5982	}
5983
5984	return elem;
5985}
5986
5987function cloneCopyEvent( src, dest ) {
5988	var i, l, type, pdataOld, udataOld, udataCur, events;
5989
5990	if ( dest.nodeType !== 1 ) {
5991		return;
5992	}
5993
5994	// 1. Copy private data: events, handlers, etc.
5995	if ( dataPriv.hasData( src ) ) {
5996		pdataOld = dataPriv.get( src );
5997		events = pdataOld.events;
5998
5999		if ( events ) {
6000			dataPriv.remove( dest, "handle events" );
6001
6002			for ( type in events ) {
6003				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
6004					jQuery.event.add( dest, type, events[ type ][ i ] );
6005				}
6006			}
6007		}
6008	}
6009
6010	// 2. Copy user data
6011	if ( dataUser.hasData( src ) ) {
6012		udataOld = dataUser.access( src );
6013		udataCur = jQuery.extend( {}, udataOld );
6014
6015		dataUser.set( dest, udataCur );
6016	}
6017}
6018
6019// Fix IE bugs, see support tests
6020function fixInput( src, dest ) {
6021	var nodeName = dest.nodeName.toLowerCase();
6022
6023	// Fails to persist the checked state of a cloned checkbox or radio button.
6024	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
6025		dest.checked = src.checked;
6026
6027	// Fails to return the selected option to the default selected state when cloning options
6028	} else if ( nodeName === "input" || nodeName === "textarea" ) {
6029		dest.defaultValue = src.defaultValue;
6030	}
6031}
6032
6033function domManip( collection, args, callback, ignored ) {
6034
6035	// Flatten any nested arrays
6036	args = flat( args );
6037
6038	var fragment, first, scripts, hasScripts, node, doc,
6039		i = 0,
6040		l = collection.length,
6041		iNoClone = l - 1,
6042		value = args[ 0 ],
6043		valueIsFunction = isFunction( value );
6044
6045	// We can't cloneNode fragments that contain checked, in WebKit
6046	if ( valueIsFunction ||
6047			( l > 1 && typeof value === "string" &&
6048				!support.checkClone && rchecked.test( value ) ) ) {
6049		return collection.each( function( index ) {
6050			var self = collection.eq( index );
6051			if ( valueIsFunction ) {
6052				args[ 0 ] = value.call( this, index, self.html() );
6053			}
6054			domManip( self, args, callback, ignored );
6055		} );
6056	}
6057
6058	if ( l ) {
6059		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
6060		first = fragment.firstChild;
6061
6062		if ( fragment.childNodes.length === 1 ) {
6063			fragment = first;
6064		}
6065
6066		// Require either new content or an interest in ignored elements to invoke the callback
6067		if ( first || ignored ) {
6068			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
6069			hasScripts = scripts.length;
6070
6071			// Use the original fragment for the last item
6072			// instead of the first because it can end up
6073			// being emptied incorrectly in certain situations (#8070).
6074			for ( ; i < l; i++ ) {
6075				node = fragment;
6076
6077				if ( i !== iNoClone ) {
6078					node = jQuery.clone( node, true, true );
6079
6080					// Keep references to cloned scripts for later restoration
6081					if ( hasScripts ) {
6082
6083						// Support: Android <=4.0 only, PhantomJS 1 only
6084						// push.apply(_, arraylike) throws on ancient WebKit
6085						jQuery.merge( scripts, getAll( node, "script" ) );
6086					}
6087				}
6088
6089				callback.call( collection[ i ], node, i );
6090			}
6091
6092			if ( hasScripts ) {
6093				doc = scripts[ scripts.length - 1 ].ownerDocument;
6094
6095				// Reenable scripts
6096				jQuery.map( scripts, restoreScript );
6097
6098				// Evaluate executable scripts on first document insertion
6099				for ( i = 0; i < hasScripts; i++ ) {
6100					node = scripts[ i ];
6101					if ( rscriptType.test( node.type || "" ) &&
6102						!dataPriv.access( node, "globalEval" ) &&
6103						jQuery.contains( doc, node ) ) {
6104
6105						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {
6106
6107							// Optional AJAX dependency, but won't run scripts if not present
6108							if ( jQuery._evalUrl && !node.noModule ) {
6109								jQuery._evalUrl( node.src, {
6110									nonce: node.nonce || node.getAttribute( "nonce" )
6111								}, doc );
6112							}
6113						} else {
6114							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
6115						}
6116					}
6117				}
6118			}
6119		}
6120	}
6121
6122	return collection;
6123}
6124
6125function remove( elem, selector, keepData ) {
6126	var node,
6127		nodes = selector ? jQuery.filter( selector, elem ) : elem,
6128		i = 0;
6129
6130	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
6131		if ( !keepData && node.nodeType === 1 ) {
6132			jQuery.cleanData( getAll( node ) );
6133		}
6134
6135		if ( node.parentNode ) {
6136			if ( keepData && isAttached( node ) ) {
6137				setGlobalEval( getAll( node, "script" ) );
6138			}
6139			node.parentNode.removeChild( node );
6140		}
6141	}
6142
6143	return elem;
6144}
6145
6146jQuery.extend( {
6147	htmlPrefilter: function( html ) {
6148		return html;
6149	},
6150
6151	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
6152		var i, l, srcElements, destElements,
6153			clone = elem.cloneNode( true ),
6154			inPage = isAttached( elem );
6155
6156		// Fix IE cloning issues
6157		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
6158				!jQuery.isXMLDoc( elem ) ) {
6159
6160			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
6161			destElements = getAll( clone );
6162			srcElements = getAll( elem );
6163
6164			for ( i = 0, l = srcElements.length; i < l; i++ ) {
6165				fixInput( srcElements[ i ], destElements[ i ] );
6166			}
6167		}
6168
6169		// Copy the events from the original to the clone
6170		if ( dataAndEvents ) {
6171			if ( deepDataAndEvents ) {
6172				srcElements = srcElements || getAll( elem );
6173				destElements = destElements || getAll( clone );
6174
6175				for ( i = 0, l = srcElements.length; i < l; i++ ) {
6176					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
6177				}
6178			} else {
6179				cloneCopyEvent( elem, clone );
6180			}
6181		}
6182
6183		// Preserve script evaluation history
6184		destElements = getAll( clone, "script" );
6185		if ( destElements.length > 0 ) {
6186			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
6187		}
6188
6189		// Return the cloned set
6190		return clone;
6191	},
6192
6193	cleanData: function( elems ) {
6194		var data, elem, type,
6195			special = jQuery.event.special,
6196			i = 0;
6197
6198		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
6199			if ( acceptData( elem ) ) {
6200				if ( ( data = elem[ dataPriv.expando ] ) ) {
6201					if ( data.events ) {
6202						for ( type in data.events ) {
6203							if ( special[ type ] ) {
6204								jQuery.event.remove( elem, type );
6205
6206							// This is a shortcut to avoid jQuery.event.remove's overhead
6207							} else {
6208								jQuery.removeEvent( elem, type, data.handle );
6209							}
6210						}
6211					}
6212
6213					// Support: Chrome <=35 - 45+
6214					// Assign undefined instead of using delete, see Data#remove
6215					elem[ dataPriv.expando ] = undefined;
6216				}
6217				if ( elem[ dataUser.expando ] ) {
6218
6219					// Support: Chrome <=35 - 45+
6220					// Assign undefined instead of using delete, see Data#remove
6221					elem[ dataUser.expando ] = undefined;
6222				}
6223			}
6224		}
6225	}
6226} );
6227
6228jQuery.fn.extend( {
6229	detach: function( selector ) {
6230		return remove( this, selector, true );
6231	},
6232
6233	remove: function( selector ) {
6234		return remove( this, selector );
6235	},
6236
6237	text: function( value ) {
6238		return access( this, function( value ) {
6239			return value === undefined ?
6240				jQuery.text( this ) :
6241				this.empty().each( function() {
6242					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6243						this.textContent = value;
6244					}
6245				} );
6246		}, null, value, arguments.length );
6247	},
6248
6249	append: function() {
6250		return domManip( this, arguments, function( elem ) {
6251			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6252				var target = manipulationTarget( this, elem );
6253				target.appendChild( elem );
6254			}
6255		} );
6256	},
6257
6258	prepend: function() {
6259		return domManip( this, arguments, function( elem ) {
6260			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6261				var target = manipulationTarget( this, elem );
6262				target.insertBefore( elem, target.firstChild );
6263			}
6264		} );
6265	},
6266
6267	before: function() {
6268		return domManip( this, arguments, function( elem ) {
6269			if ( this.parentNode ) {
6270				this.parentNode.insertBefore( elem, this );
6271			}
6272		} );
6273	},
6274
6275	after: function() {
6276		return domManip( this, arguments, function( elem ) {
6277			if ( this.parentNode ) {
6278				this.parentNode.insertBefore( elem, this.nextSibling );
6279			}
6280		} );
6281	},
6282
6283	empty: function() {
6284		var elem,
6285			i = 0;
6286
6287		for ( ; ( elem = this[ i ] ) != null; i++ ) {
6288			if ( elem.nodeType === 1 ) {
6289
6290				// Prevent memory leaks
6291				jQuery.cleanData( getAll( elem, false ) );
6292
6293				// Remove any remaining nodes
6294				elem.textContent = "";
6295			}
6296		}
6297
6298		return this;
6299	},
6300
6301	clone: function( dataAndEvents, deepDataAndEvents ) {
6302		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
6303		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
6304
6305		return this.map( function() {
6306			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
6307		} );
6308	},
6309
6310	html: function( value ) {
6311		return access( this, function( value ) {
6312			var elem = this[ 0 ] || {},
6313				i = 0,
6314				l = this.length;
6315
6316			if ( value === undefined && elem.nodeType === 1 ) {
6317				return elem.innerHTML;
6318			}
6319
6320			// See if we can take a shortcut and just use innerHTML
6321			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
6322				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
6323
6324				value = jQuery.htmlPrefilter( value );
6325
6326				try {
6327					for ( ; i < l; i++ ) {
6328						elem = this[ i ] || {};
6329
6330						// Remove element nodes and prevent memory leaks
6331						if ( elem.nodeType === 1 ) {
6332							jQuery.cleanData( getAll( elem, false ) );
6333							elem.innerHTML = value;
6334						}
6335					}
6336
6337					elem = 0;
6338
6339				// If using innerHTML throws an exception, use the fallback method
6340				} catch ( e ) {}
6341			}
6342
6343			if ( elem ) {
6344				this.empty().append( value );
6345			}
6346		}, null, value, arguments.length );
6347	},
6348
6349	replaceWith: function() {
6350		var ignored = [];
6351
6352		// Make the changes, replacing each non-ignored context element with the new content
6353		return domManip( this, arguments, function( elem ) {
6354			var parent = this.parentNode;
6355
6356			if ( jQuery.inArray( this, ignored ) < 0 ) {
6357				jQuery.cleanData( getAll( this ) );
6358				if ( parent ) {
6359					parent.replaceChild( elem, this );
6360				}
6361			}
6362
6363		// Force callback invocation
6364		}, ignored );
6365	}
6366} );
6367
6368jQuery.each( {
6369	appendTo: "append",
6370	prependTo: "prepend",
6371	insertBefore: "before",
6372	insertAfter: "after",
6373	replaceAll: "replaceWith"
6374}, function( name, original ) {
6375	jQuery.fn[ name ] = function( selector ) {
6376		var elems,
6377			ret = [],
6378			insert = jQuery( selector ),
6379			last = insert.length - 1,
6380			i = 0;
6381
6382		for ( ; i <= last; i++ ) {
6383			elems = i === last ? this : this.clone( true );
6384			jQuery( insert[ i ] )[ original ]( elems );
6385
6386			// Support: Android <=4.0 only, PhantomJS 1 only
6387			// .get() because push.apply(_, arraylike) throws on ancient WebKit
6388			push.apply( ret, elems.get() );
6389		}
6390
6391		return this.pushStack( ret );
6392	};
6393} );
6394var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
6395
6396var getStyles = function( elem ) {
6397
6398		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
6399		// IE throws on elements created in popups
6400		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6401		var view = elem.ownerDocument.defaultView;
6402
6403		if ( !view || !view.opener ) {
6404			view = window;
6405		}
6406
6407		return view.getComputedStyle( elem );
6408	};
6409
6410var swap = function( elem, options, callback ) {
6411	var ret, name,
6412		old = {};
6413
6414	// Remember the old values, and insert the new ones
6415	for ( name in options ) {
6416		old[ name ] = elem.style[ name ];
6417		elem.style[ name ] = options[ name ];
6418	}
6419
6420	ret = callback.call( elem );
6421
6422	// Revert the old values
6423	for ( name in options ) {
6424		elem.style[ name ] = old[ name ];
6425	}
6426
6427	return ret;
6428};
6429
6430
6431var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
6432
6433
6434
6435( function() {
6436
6437	// Executing both pixelPosition & boxSizingReliable tests require only one layout
6438	// so they're executed at the same time to save the second computation.
6439	function computeStyleTests() {
6440
6441		// This is a singleton, we need to execute it only once
6442		if ( !div ) {
6443			return;
6444		}
6445
6446		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
6447			"margin-top:1px;padding:0;border:0";
6448		div.style.cssText =
6449			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
6450			"margin:auto;border:1px;padding:1px;" +
6451			"width:60%;top:1%";
6452		documentElement.appendChild( container ).appendChild( div );
6453
6454		var divStyle = window.getComputedStyle( div );
6455		pixelPositionVal = divStyle.top !== "1%";
6456
6457		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
6458		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
6459
6460		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
6461		// Some styles come back with percentage values, even though they shouldn't
6462		div.style.right = "60%";
6463		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
6464
6465		// Support: IE 9 - 11 only
6466		// Detect misreporting of content dimensions for box-sizing:border-box elements
6467		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
6468
6469		// Support: IE 9 only
6470		// Detect overflow:scroll screwiness (gh-3699)
6471		// Support: Chrome <=64
6472		// Don't get tricked when zoom affects offsetWidth (gh-4029)
6473		div.style.position = "absolute";
6474		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
6475
6476		documentElement.removeChild( container );
6477
6478		// Nullify the div so it wouldn't be stored in the memory and
6479		// it will also be a sign that checks already performed
6480		div = null;
6481	}
6482
6483	function roundPixelMeasures( measure ) {
6484		return Math.round( parseFloat( measure ) );
6485	}
6486
6487	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
6488		reliableTrDimensionsVal, reliableMarginLeftVal,
6489		container = document.createElement( "div" ),
6490		div = document.createElement( "div" );
6491
6492	// Finish early in limited (non-browser) environments
6493	if ( !div.style ) {
6494		return;
6495	}
6496
6497	// Support: IE <=9 - 11 only
6498	// Style of cloned element affects source element cloned (#8908)
6499	div.style.backgroundClip = "content-box";
6500	div.cloneNode( true ).style.backgroundClip = "";
6501	support.clearCloneStyle = div.style.backgroundClip === "content-box";
6502
6503	jQuery.extend( support, {
6504		boxSizingReliable: function() {
6505			computeStyleTests();
6506			return boxSizingReliableVal;
6507		},
6508		pixelBoxStyles: function() {
6509			computeStyleTests();
6510			return pixelBoxStylesVal;
6511		},
6512		pixelPosition: function() {
6513			computeStyleTests();
6514			return pixelPositionVal;
6515		},
6516		reliableMarginLeft: function() {
6517			computeStyleTests();
6518			return reliableMarginLeftVal;
6519		},
6520		scrollboxSize: function() {
6521			computeStyleTests();
6522			return scrollboxSizeVal;
6523		},
6524
6525		// Support: IE 9 - 11+, Edge 15 - 18+
6526		// IE/Edge misreport `getComputedStyle` of table rows with width/height
6527		// set in CSS while `offset*` properties report correct values.
6528		// Behavior in IE 9 is more subtle than in newer versions & it passes
6529		// some versions of this test; make sure not to make it pass there!
6530		//
6531		// Support: Firefox 70+
6532		// Only Firefox includes border widths
6533		// in computed dimensions. (gh-4529)
6534		reliableTrDimensions: function() {
6535			var table, tr, trChild, trStyle;
6536			if ( reliableTrDimensionsVal == null ) {
6537				table = document.createElement( "table" );
6538				tr = document.createElement( "tr" );
6539				trChild = document.createElement( "div" );
6540
6541				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
6542				tr.style.cssText = "border:1px solid";
6543
6544				// Support: Chrome 86+
6545				// Height set through cssText does not get applied.
6546				// Computed height then comes back as 0.
6547				tr.style.height = "1px";
6548				trChild.style.height = "9px";
6549
6550				// Support: Android 8 Chrome 86+
6551				// In our bodyBackground.html iframe,
6552				// display for all div elements is set to "inline",
6553				// which causes a problem only in Android 8 Chrome 86.
6554				// Ensuring the div is display: block
6555				// gets around this issue.
6556				trChild.style.display = "block";
6557
6558				documentElement
6559					.appendChild( table )
6560					.appendChild( tr )
6561					.appendChild( trChild );
6562
6563				trStyle = window.getComputedStyle( tr );
6564				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
6565					parseInt( trStyle.borderTopWidth, 10 ) +
6566					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
6567
6568				documentElement.removeChild( table );
6569			}
6570			return reliableTrDimensionsVal;
6571		}
6572	} );
6573} )();
6574
6575
6576function curCSS( elem, name, computed ) {
6577	var width, minWidth, maxWidth, ret,
6578
6579		// Support: Firefox 51+
6580		// Retrieving style before computed somehow
6581		// fixes an issue with getting wrong values
6582		// on detached elements
6583		style = elem.style;
6584
6585	computed = computed || getStyles( elem );
6586
6587	// getPropertyValue is needed for:
6588	//   .css('filter') (IE 9 only, #12537)
6589	//   .css('--customProperty) (#3144)
6590	if ( computed ) {
6591		ret = computed.getPropertyValue( name ) || computed[ name ];
6592
6593		if ( ret === "" && !isAttached( elem ) ) {
6594			ret = jQuery.style( elem, name );
6595		}
6596
6597		// A tribute to the "awesome hack by Dean Edwards"
6598		// Android Browser returns percentage for some values,
6599		// but width seems to be reliably pixels.
6600		// This is against the CSSOM draft spec:
6601		// https://drafts.csswg.org/cssom/#resolved-values
6602		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
6603
6604			// Remember the original values
6605			width = style.width;
6606			minWidth = style.minWidth;
6607			maxWidth = style.maxWidth;
6608
6609			// Put in the new values to get a computed value out
6610			style.minWidth = style.maxWidth = style.width = ret;
6611			ret = computed.width;
6612
6613			// Revert the changed values
6614			style.width = width;
6615			style.minWidth = minWidth;
6616			style.maxWidth = maxWidth;
6617		}
6618	}
6619
6620	return ret !== undefined ?
6621
6622		// Support: IE <=9 - 11 only
6623		// IE returns zIndex value as an integer.
6624		ret + "" :
6625		ret;
6626}
6627
6628
6629function addGetHookIf( conditionFn, hookFn ) {
6630
6631	// Define the hook, we'll check on the first run if it's really needed.
6632	return {
6633		get: function() {
6634			if ( conditionFn() ) {
6635
6636				// Hook not needed (or it's not possible to use it due
6637				// to missing dependency), remove it.
6638				delete this.get;
6639				return;
6640			}
6641
6642			// Hook needed; redefine it so that the support test is not executed again.
6643			return ( this.get = hookFn ).apply( this, arguments );
6644		}
6645	};
6646}
6647
6648
6649var cssPrefixes = [ "Webkit", "Moz", "ms" ],
6650	emptyStyle = document.createElement( "div" ).style,
6651	vendorProps = {};
6652
6653// Return a vendor-prefixed property or undefined
6654function vendorPropName( name ) {
6655
6656	// Check for vendor prefixed names
6657	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
6658		i = cssPrefixes.length;
6659
6660	while ( i-- ) {
6661		name = cssPrefixes[ i ] + capName;
6662		if ( name in emptyStyle ) {
6663			return name;
6664		}
6665	}
6666}
6667
6668// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
6669function finalPropName( name ) {
6670	var final = jQuery.cssProps[ name ] || vendorProps[ name ];
6671
6672	if ( final ) {
6673		return final;
6674	}
6675	if ( name in emptyStyle ) {
6676		return name;
6677	}
6678	return vendorProps[ name ] = vendorPropName( name ) || name;
6679}
6680
6681
6682var
6683
6684	// Swappable if display is none or starts with table
6685	// except "table", "table-cell", or "table-caption"
6686	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6687	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6688	rcustomProp = /^--/,
6689	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6690	cssNormalTransform = {
6691		letterSpacing: "0",
6692		fontWeight: "400"
6693	};
6694
6695function setPositiveNumber( _elem, value, subtract ) {
6696
6697	// Any relative (+/-) values have already been
6698	// normalized at this point
6699	var matches = rcssNum.exec( value );
6700	return matches ?
6701
6702		// Guard against undefined "subtract", e.g., when used as in cssHooks
6703		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
6704		value;
6705}
6706
6707function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
6708	var i = dimension === "width" ? 1 : 0,
6709		extra = 0,
6710		delta = 0;
6711
6712	// Adjustment may not be necessary
6713	if ( box === ( isBorderBox ? "border" : "content" ) ) {
6714		return 0;
6715	}
6716
6717	for ( ; i < 4; i += 2 ) {
6718
6719		// Both box models exclude margin
6720		if ( box === "margin" ) {
6721			delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
6722		}
6723
6724		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
6725		if ( !isBorderBox ) {
6726
6727			// Add padding
6728			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6729
6730			// For "border" or "margin", add border
6731			if ( box !== "padding" ) {
6732				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6733
6734			// But still keep track of it otherwise
6735			} else {
6736				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6737			}
6738
6739		// If we get here with a border-box (content + padding + border), we're seeking "content" or
6740		// "padding" or "margin"
6741		} else {
6742
6743			// For "content", subtract padding
6744			if ( box === "content" ) {
6745				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6746			}
6747
6748			// For "content" or "padding", subtract border
6749			if ( box !== "margin" ) {
6750				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6751			}
6752		}
6753	}
6754
6755	// Account for positive content-box scroll gutter when requested by providing computedVal
6756	if ( !isBorderBox && computedVal >= 0 ) {
6757
6758		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
6759		// Assuming integer scroll gutter, subtract the rest and round down
6760		delta += Math.max( 0, Math.ceil(
6761			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6762			computedVal -
6763			delta -
6764			extra -
6765			0.5
6766
6767		// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
6768		// Use an explicit zero to avoid NaN (gh-3964)
6769		) ) || 0;
6770	}
6771
6772	return delta;
6773}
6774
6775function getWidthOrHeight( elem, dimension, extra ) {
6776
6777	// Start with computed style
6778	var styles = getStyles( elem ),
6779
6780		// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
6781		// Fake content-box until we know it's needed to know the true value.
6782		boxSizingNeeded = !support.boxSizingReliable() || extra,
6783		isBorderBox = boxSizingNeeded &&
6784			jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6785		valueIsBorderBox = isBorderBox,
6786
6787		val = curCSS( elem, dimension, styles ),
6788		offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
6789
6790	// Support: Firefox <=54
6791	// Return a confounding non-pixel value or feign ignorance, as appropriate.
6792	if ( rnumnonpx.test( val ) ) {
6793		if ( !extra ) {
6794			return val;
6795		}
6796		val = "auto";
6797	}
6798
6799
6800	// Support: IE 9 - 11 only
6801	// Use offsetWidth/offsetHeight for when box sizing is unreliable.
6802	// In those cases, the computed value can be trusted to be border-box.
6803	if ( ( !support.boxSizingReliable() && isBorderBox ||
6804
6805		// Support: IE 10 - 11+, Edge 15 - 18+
6806		// IE/Edge misreport `getComputedStyle` of table rows with width/height
6807		// set in CSS while `offset*` properties report correct values.
6808		// Interestingly, in some cases IE 9 doesn't suffer from this issue.
6809		!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
6810
6811		// Fall back to offsetWidth/offsetHeight when value is "auto"
6812		// This happens for inline elements with no explicit setting (gh-3571)
6813		val === "auto" ||
6814
6815		// Support: Android <=4.1 - 4.3 only
6816		// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
6817		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
6818
6819		// Make sure the element is visible & connected
6820		elem.getClientRects().length ) {
6821
6822		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
6823
6824		// Where available, offsetWidth/offsetHeight approximate border box dimensions.
6825		// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
6826		// retrieved value as a content box dimension.
6827		valueIsBorderBox = offsetProp in elem;
6828		if ( valueIsBorderBox ) {
6829			val = elem[ offsetProp ];
6830		}
6831	}
6832
6833	// Normalize "" and auto
6834	val = parseFloat( val ) || 0;
6835
6836	// Adjust for the element's box model
6837	return ( val +
6838		boxModelAdjustment(
6839			elem,
6840			dimension,
6841			extra || ( isBorderBox ? "border" : "content" ),
6842			valueIsBorderBox,
6843			styles,
6844
6845			// Provide the current computed size to request scroll gutter calculation (gh-3589)
6846			val
6847		)
6848	) + "px";
6849}
6850
6851jQuery.extend( {
6852
6853	// Add in style property hooks for overriding the default
6854	// behavior of getting and setting a style property
6855	cssHooks: {
6856		opacity: {
6857			get: function( elem, computed ) {
6858				if ( computed ) {
6859
6860					// We should always get a number back from opacity
6861					var ret = curCSS( elem, "opacity" );
6862					return ret === "" ? "1" : ret;
6863				}
6864			}
6865		}
6866	},
6867
6868	// Don't automatically add "px" to these possibly-unitless properties
6869	cssNumber: {
6870		"animationIterationCount": true,
6871		"columnCount": true,
6872		"fillOpacity": true,
6873		"flexGrow": true,
6874		"flexShrink": true,
6875		"fontWeight": true,
6876		"gridArea": true,
6877		"gridColumn": true,
6878		"gridColumnEnd": true,
6879		"gridColumnStart": true,
6880		"gridRow": true,
6881		"gridRowEnd": true,
6882		"gridRowStart": true,
6883		"lineHeight": true,
6884		"opacity": true,
6885		"order": true,
6886		"orphans": true,
6887		"widows": true,
6888		"zIndex": true,
6889		"zoom": true
6890	},
6891
6892	// Add in properties whose names you wish to fix before
6893	// setting or getting the value
6894	cssProps: {},
6895
6896	// Get and set the style property on a DOM Node
6897	style: function( elem, name, value, extra ) {
6898
6899		// Don't set styles on text and comment nodes
6900		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
6901			return;
6902		}
6903
6904		// Make sure that we're working with the right name
6905		var ret, type, hooks,
6906			origName = camelCase( name ),
6907			isCustomProp = rcustomProp.test( name ),
6908			style = elem.style;
6909
6910		// Make sure that we're working with the right name. We don't
6911		// want to query the value if it is a CSS custom property
6912		// since they are user-defined.
6913		if ( !isCustomProp ) {
6914			name = finalPropName( origName );
6915		}
6916
6917		// Gets hook for the prefixed version, then unprefixed version
6918		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6919
6920		// Check if we're setting a value
6921		if ( value !== undefined ) {
6922			type = typeof value;
6923
6924			// Convert "+=" or "-=" to relative numbers (#7345)
6925			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
6926				value = adjustCSS( elem, name, ret );
6927
6928				// Fixes bug #9237
6929				type = "number";
6930			}
6931
6932			// Make sure that null and NaN values aren't set (#7116)
6933			if ( value == null || value !== value ) {
6934				return;
6935			}
6936
6937			// If a number was passed in, add the unit (except for certain CSS properties)
6938			// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
6939			// "px" to a few hardcoded values.
6940			if ( type === "number" && !isCustomProp ) {
6941				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
6942			}
6943
6944			// background-* props affect original clone's values
6945			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
6946				style[ name ] = "inherit";
6947			}
6948
6949			// If a hook was provided, use that value, otherwise just set the specified value
vendor: 25,692 bytes, lines 6950-7946
6950			if ( !hooks || !( "set" in hooks ) ||
6951				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
6952
6953				if ( isCustomProp ) {
6954					style.setProperty( name, value );
6955				} else {
6956					style[ name ] = value;
6957				}
6958			}
6959
6960		} else {
6961
6962			// If a hook was provided get the non-computed value from there
6963			if ( hooks && "get" in hooks &&
6964				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
6965
6966				return ret;
6967			}
6968
6969			// Otherwise just get the value from the style object
6970			return style[ name ];
6971		}
6972	},
6973
6974	css: function( elem, name, extra, styles ) {
6975		var val, num, hooks,
6976			origName = camelCase( name ),
6977			isCustomProp = rcustomProp.test( name );
6978
6979		// Make sure that we're working with the right name. We don't
6980		// want to modify the value if it is a CSS custom property
6981		// since they are user-defined.
6982		if ( !isCustomProp ) {
6983			name = finalPropName( origName );
6984		}
6985
6986		// Try prefixed name followed by the unprefixed name
6987		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6988
6989		// If a hook was provided get the computed value from there
6990		if ( hooks && "get" in hooks ) {
6991			val = hooks.get( elem, true, extra );
6992		}
6993
6994		// Otherwise, if a way to get the computed value exists, use that
6995		if ( val === undefined ) {
6996			val = curCSS( elem, name, styles );
6997		}
6998
6999		// Convert "normal" to computed value
7000		if ( val === "normal" && name in cssNormalTransform ) {
7001			val = cssNormalTransform[ name ];
7002		}
7003
7004		// Make numeric if forced or a qualifier was provided and val looks numeric
7005		if ( extra === "" || extra ) {
7006			num = parseFloat( val );
7007			return extra === true || isFinite( num ) ? num || 0 : val;
7008		}
7009
7010		return val;
7011	}
7012} );
7013
7014jQuery.each( [ "height", "width" ], function( _i, dimension ) {
7015	jQuery.cssHooks[ dimension ] = {
7016		get: function( elem, computed, extra ) {
7017			if ( computed ) {
7018
7019				// Certain elements can have dimension info if we invisibly show them
7020				// but it must have a current display style that would benefit
7021				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
7022
7023					// Support: Safari 8+
7024					// Table columns in Safari have non-zero offsetWidth & zero
7025					// getBoundingClientRect().width unless display is changed.
7026					// Support: IE <=11 only
7027					// Running getBoundingClientRect on a disconnected node
7028					// in IE throws an error.
7029					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
7030					swap( elem, cssShow, function() {
7031						return getWidthOrHeight( elem, dimension, extra );
7032					} ) :
7033					getWidthOrHeight( elem, dimension, extra );
7034			}
7035		},
7036
7037		set: function( elem, value, extra ) {
7038			var matches,
7039				styles = getStyles( elem ),
7040
7041				// Only read styles.position if the test has a chance to fail
7042				// to avoid forcing a reflow.
7043				scrollboxSizeBuggy = !support.scrollboxSize() &&
7044					styles.position === "absolute",
7045
7046				// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
7047				boxSizingNeeded = scrollboxSizeBuggy || extra,
7048				isBorderBox = boxSizingNeeded &&
7049					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
7050				subtract = extra ?
7051					boxModelAdjustment(
7052						elem,
7053						dimension,
7054						extra,
7055						isBorderBox,
7056						styles
7057					) :
7058					0;
7059
7060			// Account for unreliable border-box dimensions by comparing offset* to computed and
7061			// faking a content-box to get border and padding (gh-3699)
7062			if ( isBorderBox && scrollboxSizeBuggy ) {
7063				subtract -= Math.ceil(
7064					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
7065					parseFloat( styles[ dimension ] ) -
7066					boxModelAdjustment( elem, dimension, "border", false, styles ) -
7067					0.5
7068				);
7069			}
7070
7071			// Convert to pixels if value adjustment is needed
7072			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
7073				( matches[ 3 ] || "px" ) !== "px" ) {
7074
7075				elem.style[ dimension ] = value;
7076				value = jQuery.css( elem, dimension );
7077			}
7078
7079			return setPositiveNumber( elem, value, subtract );
7080		}
7081	};
7082} );
7083
7084jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
7085	function( elem, computed ) {
7086		if ( computed ) {
7087			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
7088				elem.getBoundingClientRect().left -
7089					swap( elem, { marginLeft: 0 }, function() {
7090						return elem.getBoundingClientRect().left;
7091					} )
7092			) + "px";
7093		}
7094	}
7095);
7096
7097// These hooks are used by animate to expand properties
7098jQuery.each( {
7099	margin: "",
7100	padding: "",
7101	border: "Width"
7102}, function( prefix, suffix ) {
7103	jQuery.cssHooks[ prefix + suffix ] = {
7104		expand: function( value ) {
7105			var i = 0,
7106				expanded = {},
7107
7108				// Assumes a single number if not a string
7109				parts = typeof value === "string" ? value.split( " " ) : [ value ];
7110
7111			for ( ; i < 4; i++ ) {
7112				expanded[ prefix + cssExpand[ i ] + suffix ] =
7113					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
7114			}
7115
7116			return expanded;
7117		}
7118	};
7119
7120	if ( prefix !== "margin" ) {
7121		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
7122	}
7123} );
7124
7125jQuery.fn.extend( {
7126	css: function( name, value ) {
7127		return access( this, function( elem, name, value ) {
7128			var styles, len,
7129				map = {},
7130				i = 0;
7131
7132			if ( Array.isArray( name ) ) {
7133				styles = getStyles( elem );
7134				len = name.length;
7135
7136				for ( ; i < len; i++ ) {
7137					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
7138				}
7139
7140				return map;
7141			}
7142
7143			return value !== undefined ?
7144				jQuery.style( elem, name, value ) :
7145				jQuery.css( elem, name );
7146		}, name, value, arguments.length > 1 );
7147	}
7148} );
7149
7150
7151function Tween( elem, options, prop, end, easing ) {
7152	return new Tween.prototype.init( elem, options, prop, end, easing );
7153}
7154jQuery.Tween = Tween;
7155
7156Tween.prototype = {
7157	constructor: Tween,
7158	init: function( elem, options, prop, end, easing, unit ) {
7159		this.elem = elem;
7160		this.prop = prop;
7161		this.easing = easing || jQuery.easing._default;
7162		this.options = options;
7163		this.start = this.now = this.cur();
7164		this.end = end;
7165		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
7166	},
7167	cur: function() {
7168		var hooks = Tween.propHooks[ this.prop ];
7169
7170		return hooks && hooks.get ?
7171			hooks.get( this ) :
7172			Tween.propHooks._default.get( this );
7173	},
7174	run: function( percent ) {
7175		var eased,
7176			hooks = Tween.propHooks[ this.prop ];
7177
7178		if ( this.options.duration ) {
7179			this.pos = eased = jQuery.easing[ this.easing ](
7180				percent, this.options.duration * percent, 0, 1, this.options.duration
7181			);
7182		} else {
7183			this.pos = eased = percent;
7184		}
7185		this.now = ( this.end - this.start ) * eased + this.start;
7186
7187		if ( this.options.step ) {
7188			this.options.step.call( this.elem, this.now, this );
7189		}
7190
7191		if ( hooks && hooks.set ) {
7192			hooks.set( this );
7193		} else {
7194			Tween.propHooks._default.set( this );
7195		}
7196		return this;
7197	}
7198};
7199
7200Tween.prototype.init.prototype = Tween.prototype;
7201
7202Tween.propHooks = {
7203	_default: {
7204		get: function( tween ) {
7205			var result;
7206
7207			// Use a property on the element directly when it is not a DOM element,
7208			// or when there is no matching style property that exists.
7209			if ( tween.elem.nodeType !== 1 ||
7210				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
7211				return tween.elem[ tween.prop ];
7212			}
7213
7214			// Passing an empty string as a 3rd parameter to .css will automatically
7215			// attempt a parseFloat and fallback to a string if the parse fails.
7216			// Simple values such as "10px" are parsed to Float;
7217			// complex values such as "rotate(1rad)" are returned as-is.
7218			result = jQuery.css( tween.elem, tween.prop, "" );
7219
7220			// Empty strings, null, undefined and "auto" are converted to 0.
7221			return !result || result === "auto" ? 0 : result;
7222		},
7223		set: function( tween ) {
7224
7225			// Use step hook for back compat.
7226			// Use cssHook if its there.
7227			// Use .style if available and use plain properties where available.
7228			if ( jQuery.fx.step[ tween.prop ] ) {
7229				jQuery.fx.step[ tween.prop ]( tween );
7230			} else if ( tween.elem.nodeType === 1 && (
7231				jQuery.cssHooks[ tween.prop ] ||
7232					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
7233				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
7234			} else {
7235				tween.elem[ tween.prop ] = tween.now;
7236			}
7237		}
7238	}
7239};
7240
7241// Support: IE <=9 only
7242// Panic based approach to setting things on disconnected nodes
7243Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
7244	set: function( tween ) {
7245		if ( tween.elem.nodeType && tween.elem.parentNode ) {
7246			tween.elem[ tween.prop ] = tween.now;
7247		}
7248	}
7249};
7250
7251jQuery.easing = {
7252	linear: function( p ) {
7253		return p;
7254	},
7255	swing: function( p ) {
7256		return 0.5 - Math.cos( p * Math.PI ) / 2;
7257	},
7258	_default: "swing"
7259};
7260
7261jQuery.fx = Tween.prototype.init;
7262
7263// Back compat <1.8 extension point
7264jQuery.fx.step = {};
7265
7266
7267
7268
7269var
7270	fxNow, inProgress,
7271	rfxtypes = /^(?:toggle|show|hide)$/,
7272	rrun = /queueHooks$/;
7273
7274function schedule() {
7275	if ( inProgress ) {
7276		if ( document.hidden === false && window.requestAnimationFrame ) {
7277			window.requestAnimationFrame( schedule );
7278		} else {
7279			window.setTimeout( schedule, jQuery.fx.interval );
7280		}
7281
7282		jQuery.fx.tick();
7283	}
7284}
7285
7286// Animations created synchronously will run synchronously
7287function createFxNow() {
7288	window.setTimeout( function() {
7289		fxNow = undefined;
7290	} );
7291	return ( fxNow = Date.now() );
7292}
7293
7294// Generate parameters to create a standard animation
7295function genFx( type, includeWidth ) {
7296	var which,
7297		i = 0,
7298		attrs = { height: type };
7299
7300	// If we include width, step value is 1 to do all cssExpand values,
7301	// otherwise step value is 2 to skip over Left and Right
7302	includeWidth = includeWidth ? 1 : 0;
7303	for ( ; i < 4; i += 2 - includeWidth ) {
7304		which = cssExpand[ i ];
7305		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
7306	}
7307
7308	if ( includeWidth ) {
7309		attrs.opacity = attrs.width = type;
7310	}
7311
7312	return attrs;
7313}
7314
7315function createTween( value, prop, animation ) {
7316	var tween,
7317		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
7318		index = 0,
7319		length = collection.length;
7320	for ( ; index < length; index++ ) {
7321		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
7322
7323			// We're done with this property
7324			return tween;
7325		}
7326	}
7327}
7328
7329function defaultPrefilter( elem, props, opts ) {
7330	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
7331		isBox = "width" in props || "height" in props,
7332		anim = this,
7333		orig = {},
7334		style = elem.style,
7335		hidden = elem.nodeType && isHiddenWithinTree( elem ),
7336		dataShow = dataPriv.get( elem, "fxshow" );
7337
7338	// Queue-skipping animations hijack the fx hooks
7339	if ( !opts.queue ) {
7340		hooks = jQuery._queueHooks( elem, "fx" );
7341		if ( hooks.unqueued == null ) {
7342			hooks.unqueued = 0;
7343			oldfire = hooks.empty.fire;
7344			hooks.empty.fire = function() {
7345				if ( !hooks.unqueued ) {
7346					oldfire();
7347				}
7348			};
7349		}
7350		hooks.unqueued++;
7351
7352		anim.always( function() {
7353
7354			// Ensure the complete handler is called before this completes
7355			anim.always( function() {
7356				hooks.unqueued--;
7357				if ( !jQuery.queue( elem, "fx" ).length ) {
7358					hooks.empty.fire();
7359				}
7360			} );
7361		} );
7362	}
7363
7364	// Detect show/hide animations
7365	for ( prop in props ) {
7366		value = props[ prop ];
7367		if ( rfxtypes.test( value ) ) {
7368			delete props[ prop ];
7369			toggle = toggle || value === "toggle";
7370			if ( value === ( hidden ? "hide" : "show" ) ) {
7371
7372				// Pretend to be hidden if this is a "show" and
7373				// there is still data from a stopped show/hide
7374				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
7375					hidden = true;
7376
7377				// Ignore all other no-op show/hide data
7378				} else {
7379					continue;
7380				}
7381			}
7382			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
7383		}
7384	}
7385
7386	// Bail out if this is a no-op like .hide().hide()
7387	propTween = !jQuery.isEmptyObject( props );
7388	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
7389		return;
7390	}
7391
7392	// Restrict "overflow" and "display" styles during box animations
7393	if ( isBox && elem.nodeType === 1 ) {
7394
7395		// Support: IE <=9 - 11, Edge 12 - 15
7396		// Record all 3 overflow attributes because IE does not infer the shorthand
7397		// from identically-valued overflowX and overflowY and Edge just mirrors
7398		// the overflowX value there.
7399		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
7400
7401		// Identify a display type, preferring old show/hide data over the CSS cascade
7402		restoreDisplay = dataShow && dataShow.display;
7403		if ( restoreDisplay == null ) {
7404			restoreDisplay = dataPriv.get( elem, "display" );
7405		}
7406		display = jQuery.css( elem, "display" );
7407		if ( display === "none" ) {
7408			if ( restoreDisplay ) {
7409				display = restoreDisplay;
7410			} else {
7411
7412				// Get nonempty value(s) by temporarily forcing visibility
7413				showHide( [ elem ], true );
7414				restoreDisplay = elem.style.display || restoreDisplay;
7415				display = jQuery.css( elem, "display" );
7416				showHide( [ elem ] );
7417			}
7418		}
7419
7420		// Animate inline elements as inline-block
7421		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
7422			if ( jQuery.css( elem, "float" ) === "none" ) {
7423
7424				// Restore the original display value at the end of pure show/hide animations
7425				if ( !propTween ) {
7426					anim.done( function() {
7427						style.display = restoreDisplay;
7428					} );
7429					if ( restoreDisplay == null ) {
7430						display = style.display;
7431						restoreDisplay = display === "none" ? "" : display;
7432					}
7433				}
7434				style.display = "inline-block";
7435			}
7436		}
7437	}
7438
7439	if ( opts.overflow ) {
7440		style.overflow = "hidden";
7441		anim.always( function() {
7442			style.overflow = opts.overflow[ 0 ];
7443			style.overflowX = opts.overflow[ 1 ];
7444			style.overflowY = opts.overflow[ 2 ];
7445		} );
7446	}
7447
7448	// Implement show/hide animations
7449	propTween = false;
7450	for ( prop in orig ) {
7451
7452		// General show/hide setup for this element animation
7453		if ( !propTween ) {
7454			if ( dataShow ) {
7455				if ( "hidden" in dataShow ) {
7456					hidden = dataShow.hidden;
7457				}
7458			} else {
7459				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
7460			}
7461
7462			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
7463			if ( toggle ) {
7464				dataShow.hidden = !hidden;
7465			}
7466
7467			// Show elements before animating them
7468			if ( hidden ) {
7469				showHide( [ elem ], true );
7470			}
7471
7472			/* eslint-disable no-loop-func */
7473
7474			anim.done( function() {
7475
7476				/* eslint-enable no-loop-func */
7477
7478				// The final step of a "hide" animation is actually hiding the element
7479				if ( !hidden ) {
7480					showHide( [ elem ] );
7481				}
7482				dataPriv.remove( elem, "fxshow" );
7483				for ( prop in orig ) {
7484					jQuery.style( elem, prop, orig[ prop ] );
7485				}
7486			} );
7487		}
7488
7489		// Per-property setup
7490		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
7491		if ( !( prop in dataShow ) ) {
7492			dataShow[ prop ] = propTween.start;
7493			if ( hidden ) {
7494				propTween.end = propTween.start;
7495				propTween.start = 0;
7496			}
7497		}
7498	}
7499}
7500
7501function propFilter( props, specialEasing ) {
7502	var index, name, easing, value, hooks;
7503
7504	// camelCase, specialEasing and expand cssHook pass
7505	for ( index in props ) {
7506		name = camelCase( index );
7507		easing = specialEasing[ name ];
7508		value = props[ index ];
7509		if ( Array.isArray( value ) ) {
7510			easing = value[ 1 ];
7511			value = props[ index ] = value[ 0 ];
7512		}
7513
7514		if ( index !== name ) {
7515			props[ name ] = value;
7516			delete props[ index ];
7517		}
7518
7519		hooks = jQuery.cssHooks[ name ];
7520		if ( hooks && "expand" in hooks ) {
7521			value = hooks.expand( value );
7522			delete props[ name ];
7523
7524			// Not quite $.extend, this won't overwrite existing keys.
7525			// Reusing 'index' because we have the correct "name"
7526			for ( index in value ) {
7527				if ( !( index in props ) ) {
7528					props[ index ] = value[ index ];
7529					specialEasing[ index ] = easing;
7530				}
7531			}
7532		} else {
7533			specialEasing[ name ] = easing;
7534		}
7535	}
7536}
7537
7538function Animation( elem, properties, options ) {
7539	var result,
7540		stopped,
7541		index = 0,
7542		length = Animation.prefilters.length,
7543		deferred = jQuery.Deferred().always( function() {
7544
7545			// Don't match elem in the :animated selector
7546			delete tick.elem;
7547		} ),
7548		tick = function() {
7549			if ( stopped ) {
7550				return false;
7551			}
7552			var currentTime = fxNow || createFxNow(),
7553				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
7554
7555				// Support: Android 2.3 only
7556				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
7557				temp = remaining / animation.duration || 0,
7558				percent = 1 - temp,
7559				index = 0,
7560				length = animation.tweens.length;
7561
7562			for ( ; index < length; index++ ) {
7563				animation.tweens[ index ].run( percent );
7564			}
7565
7566			deferred.notifyWith( elem, [ animation, percent, remaining ] );
7567
7568			// If there's more to do, yield
7569			if ( percent < 1 && length ) {
7570				return remaining;
7571			}
7572
7573			// If this was an empty animation, synthesize a final progress notification
7574			if ( !length ) {
7575				deferred.notifyWith( elem, [ animation, 1, 0 ] );
7576			}
7577
7578			// Resolve the animation and report its conclusion
7579			deferred.resolveWith( elem, [ animation ] );
7580			return false;
7581		},
7582		animation = deferred.promise( {
7583			elem: elem,
7584			props: jQuery.extend( {}, properties ),
7585			opts: jQuery.extend( true, {
7586				specialEasing: {},
7587				easing: jQuery.easing._default
7588			}, options ),
7589			originalProperties: properties,
7590			originalOptions: options,
7591			startTime: fxNow || createFxNow(),
7592			duration: options.duration,
7593			tweens: [],
7594			createTween: function( prop, end ) {
7595				var tween = jQuery.Tween( elem, animation.opts, prop, end,
7596					animation.opts.specialEasing[ prop ] || animation.opts.easing );
7597				animation.tweens.push( tween );
7598				return tween;
7599			},
7600			stop: function( gotoEnd ) {
7601				var index = 0,
7602
7603					// If we are going to the end, we want to run all the tweens
7604					// otherwise we skip this part
7605					length = gotoEnd ? animation.tweens.length : 0;
7606				if ( stopped ) {
7607					return this;
7608				}
7609				stopped = true;
7610				for ( ; index < length; index++ ) {
7611					animation.tweens[ index ].run( 1 );
7612				}
7613
7614				// Resolve when we played the last frame; otherwise, reject
7615				if ( gotoEnd ) {
7616					deferred.notifyWith( elem, [ animation, 1, 0 ] );
7617					deferred.resolveWith( elem, [ animation, gotoEnd ] );
7618				} else {
7619					deferred.rejectWith( elem, [ animation, gotoEnd ] );
7620				}
7621				return this;
7622			}
7623		} ),
7624		props = animation.props;
7625
7626	propFilter( props, animation.opts.specialEasing );
7627
7628	for ( ; index < length; index++ ) {
7629		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
7630		if ( result ) {
7631			if ( isFunction( result.stop ) ) {
7632				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
7633					result.stop.bind( result );
7634			}
7635			return result;
7636		}
7637	}
7638
7639	jQuery.map( props, createTween, animation );
7640
7641	if ( isFunction( animation.opts.start ) ) {
7642		animation.opts.start.call( elem, animation );
7643	}
7644
7645	// Attach callbacks from options
7646	animation
7647		.progress( animation.opts.progress )
7648		.done( animation.opts.done, animation.opts.complete )
7649		.fail( animation.opts.fail )
7650		.always( animation.opts.always );
7651
7652	jQuery.fx.timer(
7653		jQuery.extend( tick, {
7654			elem: elem,
7655			anim: animation,
7656			queue: animation.opts.queue
7657		} )
7658	);
7659
7660	return animation;
7661}
7662
7663jQuery.Animation = jQuery.extend( Animation, {
7664
7665	tweeners: {
7666		"*": [ function( prop, value ) {
7667			var tween = this.createTween( prop, value );
7668			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
7669			return tween;
7670		} ]
7671	},
7672
7673	tweener: function( props, callback ) {
7674		if ( isFunction( props ) ) {
7675			callback = props;
7676			props = [ "*" ];
7677		} else {
7678			props = props.match( rnothtmlwhite );
7679		}
7680
7681		var prop,
7682			index = 0,
7683			length = props.length;
7684
7685		for ( ; index < length; index++ ) {
7686			prop = props[ index ];
7687			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
7688			Animation.tweeners[ prop ].unshift( callback );
7689		}
7690	},
7691
7692	prefilters: [ defaultPrefilter ],
7693
7694	prefilter: function( callback, prepend ) {
7695		if ( prepend ) {
7696			Animation.prefilters.unshift( callback );
7697		} else {
7698			Animation.prefilters.push( callback );
7699		}
7700	}
7701} );
7702
7703jQuery.speed = function( speed, easing, fn ) {
7704	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
7705		complete: fn || !fn && easing ||
7706			isFunction( speed ) && speed,
7707		duration: speed,
7708		easing: fn && easing || easing && !isFunction( easing ) && easing
7709	};
7710
7711	// Go to the end state if fx are off
7712	if ( jQuery.fx.off ) {
7713		opt.duration = 0;
7714
7715	} else {
7716		if ( typeof opt.duration !== "number" ) {
7717			if ( opt.duration in jQuery.fx.speeds ) {
7718				opt.duration = jQuery.fx.speeds[ opt.duration ];
7719
7720			} else {
7721				opt.duration = jQuery.fx.speeds._default;
7722			}
7723		}
7724	}
7725
7726	// Normalize opt.queue - true/undefined/null -> "fx"
7727	if ( opt.queue == null || opt.queue === true ) {
7728		opt.queue = "fx";
7729	}
7730
7731	// Queueing
7732	opt.old = opt.complete;
7733
7734	opt.complete = function() {
7735		if ( isFunction( opt.old ) ) {
7736			opt.old.call( this );
7737		}
7738
7739		if ( opt.queue ) {
7740			jQuery.dequeue( this, opt.queue );
7741		}
7742	};
7743
7744	return opt;
7745};
7746
7747jQuery.fn.extend( {
7748	fadeTo: function( speed, to, easing, callback ) {
7749
7750		// Show any hidden elements after setting opacity to 0
7751		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
7752
7753			// Animate to the value specified
7754			.end().animate( { opacity: to }, speed, easing, callback );
7755	},
7756	animate: function( prop, speed, easing, callback ) {
7757		var empty = jQuery.isEmptyObject( prop ),
7758			optall = jQuery.speed( speed, easing, callback ),
7759			doAnimation = function() {
7760
7761				// Operate on a copy of prop so per-property easing won't be lost
7762				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
7763
7764				// Empty animations, or finishing resolves immediately
7765				if ( empty || dataPriv.get( this, "finish" ) ) {
7766					anim.stop( true );
7767				}
7768			};
7769
7770		doAnimation.finish = doAnimation;
7771
7772		return empty || optall.queue === false ?
7773			this.each( doAnimation ) :
7774			this.queue( optall.queue, doAnimation );
7775	},
7776	stop: function( type, clearQueue, gotoEnd ) {
7777		var stopQueue = function( hooks ) {
7778			var stop = hooks.stop;
7779			delete hooks.stop;
7780			stop( gotoEnd );
7781		};
7782
7783		if ( typeof type !== "string" ) {
7784			gotoEnd = clearQueue;
7785			clearQueue = type;
7786			type = undefined;
7787		}
7788		if ( clearQueue ) {
7789			this.queue( type || "fx", [] );
7790		}
7791
7792		return this.each( function() {
7793			var dequeue = true,
7794				index = type != null && type + "queueHooks",
7795				timers = jQuery.timers,
7796				data = dataPriv.get( this );
7797
7798			if ( index ) {
7799				if ( data[ index ] && data[ index ].stop ) {
7800					stopQueue( data[ index ] );
7801				}
7802			} else {
7803				for ( index in data ) {
7804					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
7805						stopQueue( data[ index ] );
7806					}
7807				}
7808			}
7809
7810			for ( index = timers.length; index--; ) {
7811				if ( timers[ index ].elem === this &&
7812					( type == null || timers[ index ].queue === type ) ) {
7813
7814					timers[ index ].anim.stop( gotoEnd );
7815					dequeue = false;
7816					timers.splice( index, 1 );
7817				}
7818			}
7819
7820			// Start the next in the queue if the last step wasn't forced.
7821			// Timers currently will call their complete callbacks, which
7822			// will dequeue but only if they were gotoEnd.
7823			if ( dequeue || !gotoEnd ) {
7824				jQuery.dequeue( this, type );
7825			}
7826		} );
7827	},
7828	finish: function( type ) {
7829		if ( type !== false ) {
7830			type = type || "fx";
7831		}
7832		return this.each( function() {
7833			var index,
7834				data = dataPriv.get( this ),
7835				queue = data[ type + "queue" ],
7836				hooks = data[ type + "queueHooks" ],
7837				timers = jQuery.timers,
7838				length = queue ? queue.length : 0;
7839
7840			// Enable finishing flag on private data
7841			data.finish = true;
7842
7843			// Empty the queue first
7844			jQuery.queue( this, type, [] );
7845
7846			if ( hooks && hooks.stop ) {
7847				hooks.stop.call( this, true );
7848			}
7849
7850			// Look for any active animations, and finish them
7851			for ( index = timers.length; index--; ) {
7852				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
7853					timers[ index ].anim.stop( true );
7854					timers.splice( index, 1 );
7855				}
7856			}
7857
7858			// Look for any animations in the old queue and finish them
7859			for ( index = 0; index < length; index++ ) {
7860				if ( queue[ index ] && queue[ index ].finish ) {
7861					queue[ index ].finish.call( this );
7862				}
7863			}
7864
7865			// Turn off finishing flag
7866			delete data.finish;
7867		} );
7868	}
7869} );
7870
7871jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
7872	var cssFn = jQuery.fn[ name ];
7873	jQuery.fn[ name ] = function( speed, easing, callback ) {
7874		return speed == null || typeof speed === "boolean" ?
7875			cssFn.apply( this, arguments ) :
7876			this.animate( genFx( name, true ), speed, easing, callback );
7877	};
7878} );
7879
7880// Generate shortcuts for custom animations
7881jQuery.each( {
7882	slideDown: genFx( "show" ),
7883	slideUp: genFx( "hide" ),
7884	slideToggle: genFx( "toggle" ),
7885	fadeIn: { opacity: "show" },
7886	fadeOut: { opacity: "hide" },
7887	fadeToggle: { opacity: "toggle" }
7888}, function( name, props ) {
7889	jQuery.fn[ name ] = function( speed, easing, callback ) {
7890		return this.animate( props, speed, easing, callback );
7891	};
7892} );
7893
7894jQuery.timers = [];
7895jQuery.fx.tick = function() {
7896	var timer,
7897		i = 0,
7898		timers = jQuery.timers;
7899
7900	fxNow = Date.now();
7901
7902	for ( ; i < timers.length; i++ ) {
7903		timer = timers[ i ];
7904
7905		// Run the timer and safely remove it when done (allowing for external removal)
7906		if ( !timer() && timers[ i ] === timer ) {
7907			timers.splice( i--, 1 );
7908		}
7909	}
7910
7911	if ( !timers.length ) {
7912		jQuery.fx.stop();
7913	}
7914	fxNow = undefined;
7915};
7916
7917jQuery.fx.timer = function( timer ) {
7918	jQuery.timers.push( timer );
7919	jQuery.fx.start();
7920};
7921
7922jQuery.fx.interval = 13;
7923jQuery.fx.start = function() {
7924	if ( inProgress ) {
7925		return;
7926	}
7927
7928	inProgress = true;
7929	schedule();
7930};
7931
7932jQuery.fx.stop = function() {
7933	inProgress = null;
7934};
7935
7936jQuery.fx.speeds = {
7937	slow: 600,
7938	fast: 200,
7939
7940	// Default speed
7941	_default: 400
7942};
7943
7944
7945// Based off of the plugin by Clint Helfers, with permission.
7946// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
vendor: 21,001 bytes, lines 7947-8815
7947jQuery.fn.delay = function( time, type ) {
7948	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
7949	type = type || "fx";
7950
7951	return this.queue( type, function( next, hooks ) {
7952		var timeout = window.setTimeout( next, time );
7953		hooks.stop = function() {
7954			window.clearTimeout( timeout );
7955		};
7956	} );
7957};
7958
7959
7960( function() {
7961	var input = document.createElement( "input" ),
7962		select = document.createElement( "select" ),
7963		opt = select.appendChild( document.createElement( "option" ) );
7964
7965	input.type = "checkbox";
7966
7967	// Support: Android <=4.3 only
7968	// Default value for a checkbox should be "on"
7969	support.checkOn = input.value !== "";
7970
7971	// Support: IE <=11 only
7972	// Must access selectedIndex to make default options select
7973	support.optSelected = opt.selected;
7974
7975	// Support: IE <=11 only
7976	// An input loses its value after becoming a radio
7977	input = document.createElement( "input" );
7978	input.value = "t";
7979	input.type = "radio";
7980	support.radioValue = input.value === "t";
7981} )();
7982
7983
7984var boolHook,
7985	attrHandle = jQuery.expr.attrHandle;
7986
7987jQuery.fn.extend( {
7988	attr: function( name, value ) {
7989		return access( this, jQuery.attr, name, value, arguments.length > 1 );
7990	},
7991
7992	removeAttr: function( name ) {
7993		return this.each( function() {
7994			jQuery.removeAttr( this, name );
7995		} );
7996	}
7997} );
7998
7999jQuery.extend( {
8000	attr: function( elem, name, value ) {
8001		var ret, hooks,
8002			nType = elem.nodeType;
8003
8004		// Don't get/set attributes on text, comment and attribute nodes
8005		if ( nType === 3 || nType === 8 || nType === 2 ) {
8006			return;
8007		}
8008
8009		// Fallback to prop when attributes are not supported
8010		if ( typeof elem.getAttribute === "undefined" ) {
8011			return jQuery.prop( elem, name, value );
8012		}
8013
8014		// Attribute hooks are determined by the lowercase version
8015		// Grab necessary hook if one is defined
8016		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
8017			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
8018				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
8019		}
8020
8021		if ( value !== undefined ) {
8022			if ( value === null ) {
8023				jQuery.removeAttr( elem, name );
8024				return;
8025			}
8026
8027			if ( hooks && "set" in hooks &&
8028				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
8029				return ret;
8030			}
8031
8032			elem.setAttribute( name, value + "" );
8033			return value;
8034		}
8035
8036		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
8037			return ret;
8038		}
8039
8040		ret = jQuery.find.attr( elem, name );
8041
8042		// Non-existent attributes return null, we normalize to undefined
8043		return ret == null ? undefined : ret;
8044	},
8045
8046	attrHooks: {
8047		type: {
8048			set: function( elem, value ) {
8049				if ( !support.radioValue && value === "radio" &&
8050					nodeName( elem, "input" ) ) {
8051					var val = elem.value;
8052					elem.setAttribute( "type", value );
8053					if ( val ) {
8054						elem.value = val;
8055					}
8056					return value;
8057				}
8058			}
8059		}
8060	},
8061
8062	removeAttr: function( elem, value ) {
8063		var name,
8064			i = 0,
8065
8066			// Attribute names can contain non-HTML whitespace characters
8067			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
8068			attrNames = value && value.match( rnothtmlwhite );
8069
8070		if ( attrNames && elem.nodeType === 1 ) {
8071			while ( ( name = attrNames[ i++ ] ) ) {
8072				elem.removeAttribute( name );
8073			}
8074		}
8075	}
8076} );
8077
8078// Hooks for boolean attributes
8079boolHook = {
8080	set: function( elem, value, name ) {
8081		if ( value === false ) {
8082
8083			// Remove boolean attributes when set to false
8084			jQuery.removeAttr( elem, name );
8085		} else {
8086			elem.setAttribute( name, name );
8087		}
8088		return name;
8089	}
8090};
8091
8092jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
8093	var getter = attrHandle[ name ] || jQuery.find.attr;
8094
8095	attrHandle[ name ] = function( elem, name, isXML ) {
8096		var ret, handle,
8097			lowercaseName = name.toLowerCase();
8098
8099		if ( !isXML ) {
8100
8101			// Avoid an infinite loop by temporarily removing this function from the getter
8102			handle = attrHandle[ lowercaseName ];
8103			attrHandle[ lowercaseName ] = ret;
8104			ret = getter( elem, name, isXML ) != null ?
8105				lowercaseName :
8106				null;
8107			attrHandle[ lowercaseName ] = handle;
8108		}
8109		return ret;
8110	};
8111} );
8112
8113
8114
8115
8116var rfocusable = /^(?:input|select|textarea|button)$/i,
8117	rclickable = /^(?:a|area)$/i;
8118
8119jQuery.fn.extend( {
8120	prop: function( name, value ) {
8121		return access( this, jQuery.prop, name, value, arguments.length > 1 );
8122	},
8123
8124	removeProp: function( name ) {
8125		return this.each( function() {
8126			delete this[ jQuery.propFix[ name ] || name ];
8127		} );
8128	}
8129} );
8130
8131jQuery.extend( {
8132	prop: function( elem, name, value ) {
8133		var ret, hooks,
8134			nType = elem.nodeType;
8135
8136		// Don't get/set properties on text, comment and attribute nodes
8137		if ( nType === 3 || nType === 8 || nType === 2 ) {
8138			return;
8139		}
8140
8141		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
8142
8143			// Fix name and attach hooks
8144			name = jQuery.propFix[ name ] || name;
8145			hooks = jQuery.propHooks[ name ];
8146		}
8147
8148		if ( value !== undefined ) {
8149			if ( hooks && "set" in hooks &&
8150				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
8151				return ret;
8152			}
8153
8154			return ( elem[ name ] = value );
8155		}
8156
8157		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
8158			return ret;
8159		}
8160
8161		return elem[ name ];
8162	},
8163
8164	propHooks: {
8165		tabIndex: {
8166			get: function( elem ) {
8167
8168				// Support: IE <=9 - 11 only
8169				// elem.tabIndex doesn't always return the
8170				// correct value when it hasn't been explicitly set
8171				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
8172				// Use proper attribute retrieval(#12072)
8173				var tabindex = jQuery.find.attr( elem, "tabindex" );
8174
8175				if ( tabindex ) {
8176					return parseInt( tabindex, 10 );
8177				}
8178
8179				if (
8180					rfocusable.test( elem.nodeName ) ||
8181					rclickable.test( elem.nodeName ) &&
8182					elem.href
8183				) {
8184					return 0;
8185				}
8186
8187				return -1;
8188			}
8189		}
8190	},
8191
8192	propFix: {
8193		"for": "htmlFor",
8194		"class": "className"
8195	}
8196} );
8197
8198// Support: IE <=11 only
8199// Accessing the selectedIndex property
8200// forces the browser to respect setting selected
8201// on the option
8202// The getter ensures a default option is selected
8203// when in an optgroup
8204// eslint rule "no-unused-expressions" is disabled for this code
8205// since it considers such accessions noop
8206if ( !support.optSelected ) {
8207	jQuery.propHooks.selected = {
8208		get: function( elem ) {
8209
8210			/* eslint no-unused-expressions: "off" */
8211
8212			var parent = elem.parentNode;
8213			if ( parent && parent.parentNode ) {
8214				parent.parentNode.selectedIndex;
8215			}
8216			return null;
8217		},
8218		set: function( elem ) {
8219
8220			/* eslint no-unused-expressions: "off" */
8221
8222			var parent = elem.parentNode;
8223			if ( parent ) {
8224				parent.selectedIndex;
8225
8226				if ( parent.parentNode ) {
8227					parent.parentNode.selectedIndex;
8228				}
8229			}
8230		}
8231	};
8232}
8233
8234jQuery.each( [
8235	"tabIndex",
8236	"readOnly",
8237	"maxLength",
8238	"cellSpacing",
8239	"cellPadding",
8240	"rowSpan",
8241	"colSpan",
8242	"useMap",
8243	"frameBorder",
8244	"contentEditable"
8245], function() {
8246	jQuery.propFix[ this.toLowerCase() ] = this;
8247} );
8248
8249
8250
8251
8252	// Strip and collapse whitespace according to HTML spec
8253	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
8254	function stripAndCollapse( value ) {
8255		var tokens = value.match( rnothtmlwhite ) || [];
8256		return tokens.join( " " );
8257	}
8258
8259
8260function getClass( elem ) {
8261	return elem.getAttribute && elem.getAttribute( "class" ) || "";
8262}
8263
8264function classesToArray( value ) {
8265	if ( Array.isArray( value ) ) {
8266		return value;
8267	}
8268	if ( typeof value === "string" ) {
8269		return value.match( rnothtmlwhite ) || [];
8270	}
8271	return [];
8272}
8273
8274jQuery.fn.extend( {
8275	addClass: function( value ) {
8276		var classes, elem, cur, curValue, clazz, j, finalValue,
8277			i = 0;
8278
8279		if ( isFunction( value ) ) {
8280			return this.each( function( j ) {
8281				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
8282			} );
8283		}
8284
8285		classes = classesToArray( value );
8286
8287		if ( classes.length ) {
8288			while ( ( elem = this[ i++ ] ) ) {
8289				curValue = getClass( elem );
8290				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8291
8292				if ( cur ) {
8293					j = 0;
8294					while ( ( clazz = classes[ j++ ] ) ) {
8295						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
8296							cur += clazz + " ";
8297						}
8298					}
8299
8300					// Only assign if different to avoid unneeded rendering.
8301					finalValue = stripAndCollapse( cur );
8302					if ( curValue !== finalValue ) {
8303						elem.setAttribute( "class", finalValue );
8304					}
8305				}
8306			}
8307		}
8308
8309		return this;
8310	},
8311
8312	removeClass: function( value ) {
8313		var classes, elem, cur, curValue, clazz, j, finalValue,
8314			i = 0;
8315
8316		if ( isFunction( value ) ) {
8317			return this.each( function( j ) {
8318				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
8319			} );
8320		}
8321
8322		if ( !arguments.length ) {
8323			return this.attr( "class", "" );
8324		}
8325
8326		classes = classesToArray( value );
8327
8328		if ( classes.length ) {
8329			while ( ( elem = this[ i++ ] ) ) {
8330				curValue = getClass( elem );
8331
8332				// This expression is here for better compressibility (see addClass)
8333				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8334
8335				if ( cur ) {
8336					j = 0;
8337					while ( ( clazz = classes[ j++ ] ) ) {
8338
8339						// Remove *all* instances
8340						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
8341							cur = cur.replace( " " + clazz + " ", " " );
8342						}
8343					}
8344
8345					// Only assign if different to avoid unneeded rendering.
8346					finalValue = stripAndCollapse( cur );
8347					if ( curValue !== finalValue ) {
8348						elem.setAttribute( "class", finalValue );
8349					}
8350				}
8351			}
8352		}
8353
8354		return this;
8355	},
8356
8357	toggleClass: function( value, stateVal ) {
8358		var type = typeof value,
8359			isValidValue = type === "string" || Array.isArray( value );
8360
8361		if ( typeof stateVal === "boolean" && isValidValue ) {
8362			return stateVal ? this.addClass( value ) : this.removeClass( value );
8363		}
8364
8365		if ( isFunction( value ) ) {
8366			return this.each( function( i ) {
8367				jQuery( this ).toggleClass(
8368					value.call( this, i, getClass( this ), stateVal ),
8369					stateVal
8370				);
8371			} );
8372		}
8373
8374		return this.each( function() {
8375			var className, i, self, classNames;
8376
8377			if ( isValidValue ) {
8378
8379				// Toggle individual class names
8380				i = 0;
8381				self = jQuery( this );
8382				classNames = classesToArray( value );
8383
8384				while ( ( className = classNames[ i++ ] ) ) {
8385
8386					// Check each className given, space separated list
8387					if ( self.hasClass( className ) ) {
8388						self.removeClass( className );
8389					} else {
8390						self.addClass( className );
8391					}
8392				}
8393
8394			// Toggle whole class name
8395			} else if ( value === undefined || type === "boolean" ) {
8396				className = getClass( this );
8397				if ( className ) {
8398
8399					// Store className if set
8400					dataPriv.set( this, "__className__", className );
8401				}
8402
8403				// If the element has a class name or if we're passed `false`,
8404				// then remove the whole classname (if there was one, the above saved it).
8405				// Otherwise bring back whatever was previously saved (if anything),
8406				// falling back to the empty string if nothing was stored.
8407				if ( this.setAttribute ) {
8408					this.setAttribute( "class",
8409						className || value === false ?
8410							"" :
8411							dataPriv.get( this, "__className__" ) || ""
8412					);
8413				}
8414			}
8415		} );
8416	},
8417
8418	hasClass: function( selector ) {
8419		var className, elem,
8420			i = 0;
8421
8422		className = " " + selector + " ";
8423		while ( ( elem = this[ i++ ] ) ) {
8424			if ( elem.nodeType === 1 &&
8425				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
8426				return true;
8427			}
8428		}
8429
8430		return false;
8431	}
8432} );
8433
8434
8435
8436
8437var rreturn = /\r/g;
8438
8439jQuery.fn.extend( {
8440	val: function( value ) {
8441		var hooks, ret, valueIsFunction,
8442			elem = this[ 0 ];
8443
8444		if ( !arguments.length ) {
8445			if ( elem ) {
8446				hooks = jQuery.valHooks[ elem.type ] ||
8447					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
8448
8449				if ( hooks &&
8450					"get" in hooks &&
8451					( ret = hooks.get( elem, "value" ) ) !== undefined
8452				) {
8453					return ret;
8454				}
8455
8456				ret = elem.value;
8457
8458				// Handle most common string cases
8459				if ( typeof ret === "string" ) {
8460					return ret.replace( rreturn, "" );
8461				}
8462
8463				// Handle cases where value is null/undef or number
8464				return ret == null ? "" : ret;
8465			}
8466
8467			return;
8468		}
8469
8470		valueIsFunction = isFunction( value );
8471
8472		return this.each( function( i ) {
8473			var val;
8474
8475			if ( this.nodeType !== 1 ) {
8476				return;
8477			}
8478
8479			if ( valueIsFunction ) {
8480				val = value.call( this, i, jQuery( this ).val() );
8481			} else {
8482				val = value;
8483			}
8484
8485			// Treat null/undefined as ""; convert numbers to string
8486			if ( val == null ) {
8487				val = "";
8488
8489			} else if ( typeof val === "number" ) {
8490				val += "";
8491
8492			} else if ( Array.isArray( val ) ) {
8493				val = jQuery.map( val, function( value ) {
8494					return value == null ? "" : value + "";
8495				} );
8496			}
8497
8498			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
8499
8500			// If set returns undefined, fall back to normal setting
8501			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
8502				this.value = val;
8503			}
8504		} );
8505	}
8506} );
8507
8508jQuery.extend( {
8509	valHooks: {
8510		option: {
8511			get: function( elem ) {
8512
8513				var val = jQuery.find.attr( elem, "value" );
8514				return val != null ?
8515					val :
8516
8517					// Support: IE <=10 - 11 only
8518					// option.text throws exceptions (#14686, #14858)
8519					// Strip and collapse whitespace
8520					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
8521					stripAndCollapse( jQuery.text( elem ) );
8522			}
8523		},
8524		select: {
8525			get: function( elem ) {
8526				var value, option, i,
8527					options = elem.options,
8528					index = elem.selectedIndex,
8529					one = elem.type === "select-one",
8530					values = one ? null : [],
8531					max = one ? index + 1 : options.length;
8532
8533				if ( index < 0 ) {
8534					i = max;
8535
8536				} else {
8537					i = one ? index : 0;
8538				}
8539
8540				// Loop through all the selected options
8541				for ( ; i < max; i++ ) {
8542					option = options[ i ];
8543
8544					// Support: IE <=9 only
8545					// IE8-9 doesn't update selected after form reset (#2551)
8546					if ( ( option.selected || i === index ) &&
8547
8548							// Don't return options that are disabled or in a disabled optgroup
8549							!option.disabled &&
8550							( !option.parentNode.disabled ||
8551								!nodeName( option.parentNode, "optgroup" ) ) ) {
8552
8553						// Get the specific value for the option
8554						value = jQuery( option ).val();
8555
8556						// We don't need an array for one selects
8557						if ( one ) {
8558							return value;
8559						}
8560
8561						// Multi-Selects return an array
8562						values.push( value );
8563					}
8564				}
8565
8566				return values;
8567			},
8568
8569			set: function( elem, value ) {
8570				var optionSet, option,
8571					options = elem.options,
8572					values = jQuery.makeArray( value ),
8573					i = options.length;
8574
8575				while ( i-- ) {
8576					option = options[ i ];
8577
8578					/* eslint-disable no-cond-assign */
8579
8580					if ( option.selected =
8581						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
8582					) {
8583						optionSet = true;
8584					}
8585
8586					/* eslint-enable no-cond-assign */
8587				}
8588
8589				// Force browsers to behave consistently when non-matching value is set
8590				if ( !optionSet ) {
8591					elem.selectedIndex = -1;
8592				}
8593				return values;
8594			}
8595		}
8596	}
8597} );
8598
8599// Radios and checkboxes getter/setter
8600jQuery.each( [ "radio", "checkbox" ], function() {
8601	jQuery.valHooks[ this ] = {
8602		set: function( elem, value ) {
8603			if ( Array.isArray( value ) ) {
8604				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
8605			}
8606		}
8607	};
8608	if ( !support.checkOn ) {
8609		jQuery.valHooks[ this ].get = function( elem ) {
8610			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
8611		};
8612	}
8613} );
8614
8615
8616
8617
8618// Return jQuery for attributes-only inclusion
8619
8620
8621support.focusin = "onfocusin" in window;
8622
8623
8624var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
8625	stopPropagationCallback = function( e ) {
8626		e.stopPropagation();
8627	};
8628
8629jQuery.extend( jQuery.event, {
8630
8631	trigger: function( event, data, elem, onlyHandlers ) {
8632
8633		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
8634			eventPath = [ elem || document ],
8635			type = hasOwn.call( event, "type" ) ? event.type : event,
8636			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
8637
8638		cur = lastElement = tmp = elem = elem || document;
8639
8640		// Don't do events on text and comment nodes
8641		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
8642			return;
8643		}
8644
8645		// focus/blur morphs to focusin/out; ensure we're not firing them right now
8646		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
8647			return;
8648		}
8649
8650		if ( type.indexOf( "." ) > -1 ) {
8651
8652			// Namespaced trigger; create a regexp to match event type in handle()
8653			namespaces = type.split( "." );
8654			type = namespaces.shift();
8655			namespaces.sort();
8656		}
8657		ontype = type.indexOf( ":" ) < 0 && "on" + type;
8658
8659		// Caller can pass in a jQuery.Event object, Object, or just an event type string
8660		event = event[ jQuery.expando ] ?
8661			event :
8662			new jQuery.Event( type, typeof event === "object" && event );
8663
8664		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
8665		event.isTrigger = onlyHandlers ? 2 : 3;
8666		event.namespace = namespaces.join( "." );
8667		event.rnamespace = event.namespace ?
8668			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
8669			null;
8670
8671		// Clean up the event in case it is being reused
8672		event.result = undefined;
8673		if ( !event.target ) {
8674			event.target = elem;
8675		}
8676
8677		// Clone any incoming data and prepend the event, creating the handler arg list
8678		data = data == null ?
8679			[ event ] :
8680			jQuery.makeArray( data, [ event ] );
8681
8682		// Allow special events to draw outside the lines
8683		special = jQuery.event.special[ type ] || {};
8684		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
8685			return;
8686		}
8687
8688		// Determine event propagation path in advance, per W3C events spec (#9951)
8689		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
8690		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
8691
8692			bubbleType = special.delegateType || type;
8693			if ( !rfocusMorph.test( bubbleType + type ) ) {
8694				cur = cur.parentNode;
8695			}
8696			for ( ; cur; cur = cur.parentNode ) {
8697				eventPath.push( cur );
8698				tmp = cur;
8699			}
8700
8701			// Only add window if we got to document (e.g., not plain obj or detached DOM)
8702			if ( tmp === ( elem.ownerDocument || document ) ) {
8703				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
8704			}
8705		}
8706
8707		// Fire handlers on the event path
8708		i = 0;
8709		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
8710			lastElement = cur;
8711			event.type = i > 1 ?
8712				bubbleType :
8713				special.bindType || type;
8714
8715			// jQuery handler
8716			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
8717				dataPriv.get( cur, "handle" );
8718			if ( handle ) {
8719				handle.apply( cur, data );
8720			}
8721
8722			// Native handler
8723			handle = ontype && cur[ ontype ];
8724			if ( handle && handle.apply && acceptData( cur ) ) {
8725				event.result = handle.apply( cur, data );
8726				if ( event.result === false ) {
8727					event.preventDefault();
8728				}
8729			}
8730		}
8731		event.type = type;
8732
8733		// If nobody prevented the default action, do it now
8734		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
8735
8736			if ( ( !special._default ||
8737				special._default.apply( eventPath.pop(), data ) === false ) &&
8738				acceptData( elem ) ) {
8739
8740				// Call a native DOM method on the target with the same name as the event.
8741				// Don't do default actions on window, that's where global variables be (#6170)
8742				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
8743
8744					// Don't re-trigger an onFOO event when we call its FOO() method
8745					tmp = elem[ ontype ];
8746
8747					if ( tmp ) {
8748						elem[ ontype ] = null;
8749					}
8750
8751					// Prevent re-triggering of the same event, since we already bubbled it above
8752					jQuery.event.triggered = type;
8753
8754					if ( event.isPropagationStopped() ) {
8755						lastElement.addEventListener( type, stopPropagationCallback );
8756					}
8757
8758					elem[ type ]();
8759
8760					if ( event.isPropagationStopped() ) {
8761						lastElement.removeEventListener( type, stopPropagationCallback );
8762					}
8763
8764					jQuery.event.triggered = undefined;
8765
8766					if ( tmp ) {
8767						elem[ ontype ] = tmp;
8768					}
8769				}
8770			}
8771		}
8772
8773		return event.result;
8774	},
8775
8776	// Piggyback on a donor event to simulate a different one
8777	// Used only for `focus(in | out)` events
8778	simulate: function( type, elem, event ) {
8779		var e = jQuery.extend(
8780			new jQuery.Event(),
8781			event,
8782			{
8783				type: type,
8784				isSimulated: true
8785			}
8786		);
8787
8788		jQuery.event.trigger( e, null, elem );
8789	}
8790
8791} );
8792
8793jQuery.fn.extend( {
8794
8795	trigger: function( type, data ) {
8796		return this.each( function() {
8797			jQuery.event.trigger( type, data, this );
8798		} );
8799	},
8800	triggerHandler: function( type, data ) {
8801		var elem = this[ 0 ];
8802		if ( elem ) {
8803			return jQuery.event.trigger( type, data, elem, true );
8804		}
8805	}
8806} );
8807
8808
8809// Support: Firefox <=44
8810// Firefox doesn't have focus(in | out) events
8811// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
8812//
8813// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
8814// focus(in | out) events fire after focus & blur events,
8815// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
vendor: 54,284 bytes, lines 8816-10878
8816// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
8817if ( !support.focusin ) {
8818	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
8819
8820		// Attach a single capturing handler on the document while someone wants focusin/focusout
8821		var handler = function( event ) {
8822			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
8823		};
8824
8825		jQuery.event.special[ fix ] = {
8826			setup: function() {
8827
8828				// Handle: regular nodes (via `this.ownerDocument`), window
8829				// (via `this.document`) & document (via `this`).
8830				var doc = this.ownerDocument || this.document || this,
8831					attaches = dataPriv.access( doc, fix );
8832
8833				if ( !attaches ) {
8834					doc.addEventListener( orig, handler, true );
8835				}
8836				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
8837			},
8838			teardown: function() {
8839				var doc = this.ownerDocument || this.document || this,
8840					attaches = dataPriv.access( doc, fix ) - 1;
8841
8842				if ( !attaches ) {
8843					doc.removeEventListener( orig, handler, true );
8844					dataPriv.remove( doc, fix );
8845
8846				} else {
8847					dataPriv.access( doc, fix, attaches );
8848				}
8849			}
8850		};
8851	} );
8852}
8853var location = window.location;
8854
8855var nonce = { guid: Date.now() };
8856
8857var rquery = ( /\?/ );
8858
8859
8860
8861// Cross-browser xml parsing
8862jQuery.parseXML = function( data ) {
8863	var xml, parserErrorElem;
8864	if ( !data || typeof data !== "string" ) {
8865		return null;
8866	}
8867
8868	// Support: IE 9 - 11 only
8869	// IE throws on parseFromString with invalid input.
8870	try {
8871		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
8872	} catch ( e ) {}
8873
8874	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
8875	if ( !xml || parserErrorElem ) {
8876		jQuery.error( "Invalid XML: " + (
8877			parserErrorElem ?
8878				jQuery.map( parserErrorElem.childNodes, function( el ) {
8879					return el.textContent;
8880				} ).join( "\n" ) :
8881				data
8882		) );
8883	}
8884	return xml;
8885};
8886
8887
8888var
8889	rbracket = /\[\]$/,
8890	rCRLF = /\r?\n/g,
8891	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
8892	rsubmittable = /^(?:input|select|textarea|keygen)/i;
8893
8894function buildParams( prefix, obj, traditional, add ) {
8895	var name;
8896
8897	if ( Array.isArray( obj ) ) {
8898
8899		// Serialize array item.
8900		jQuery.each( obj, function( i, v ) {
8901			if ( traditional || rbracket.test( prefix ) ) {
8902
8903				// Treat each array item as a scalar.
8904				add( prefix, v );
8905
8906			} else {
8907
8908				// Item is non-scalar (array or object), encode its numeric index.
8909				buildParams(
8910					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
8911					v,
8912					traditional,
8913					add
8914				);
8915			}
8916		} );
8917
8918	} else if ( !traditional && toType( obj ) === "object" ) {
8919
8920		// Serialize object item.
8921		for ( name in obj ) {
8922			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
8923		}
8924
8925	} else {
8926
8927		// Serialize scalar item.
8928		add( prefix, obj );
8929	}
8930}
8931
8932// Serialize an array of form elements or a set of
8933// key/values into a query string
8934jQuery.param = function( a, traditional ) {
8935	var prefix,
8936		s = [],
8937		add = function( key, valueOrFunction ) {
8938
8939			// If value is a function, invoke it and use its return value
8940			var value = isFunction( valueOrFunction ) ?
8941				valueOrFunction() :
8942				valueOrFunction;
8943
8944			s[ s.length ] = encodeURIComponent( key ) + "=" +
8945				encodeURIComponent( value == null ? "" : value );
8946		};
8947
8948	if ( a == null ) {
8949		return "";
8950	}
8951
8952	// If an array was passed in, assume that it is an array of form elements.
8953	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
8954
8955		// Serialize the form elements
8956		jQuery.each( a, function() {
8957			add( this.name, this.value );
8958		} );
8959
8960	} else {
8961
8962		// If traditional, encode the "old" way (the way 1.3.2 or older
8963		// did it), otherwise encode params recursively.
8964		for ( prefix in a ) {
8965			buildParams( prefix, a[ prefix ], traditional, add );
8966		}
8967	}
8968
8969	// Return the resulting serialization
8970	return s.join( "&" );
8971};
8972
8973jQuery.fn.extend( {
8974	serialize: function() {
8975		return jQuery.param( this.serializeArray() );
8976	},
8977	serializeArray: function() {
8978		return this.map( function() {
8979
8980			// Can add propHook for "elements" to filter or add form elements
8981			var elements = jQuery.prop( this, "elements" );
8982			return elements ? jQuery.makeArray( elements ) : this;
8983		} ).filter( function() {
8984			var type = this.type;
8985
8986			// Use .is( ":disabled" ) so that fieldset[disabled] works
8987			return this.name && !jQuery( this ).is( ":disabled" ) &&
8988				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
8989				( this.checked || !rcheckableType.test( type ) );
8990		} ).map( function( _i, elem ) {
8991			var val = jQuery( this ).val();
8992
8993			if ( val == null ) {
8994				return null;
8995			}
8996
8997			if ( Array.isArray( val ) ) {
8998				return jQuery.map( val, function( val ) {
8999					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
9000				} );
9001			}
9002
9003			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
9004		} ).get();
9005	}
9006} );
9007
9008
9009var
9010	r20 = /%20/g,
9011	rhash = /#.*$/,
9012	rantiCache = /([?&])_=[^&]*/,
9013	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
9014
9015	// #7653, #8125, #8152: local protocol detection
9016	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
9017	rnoContent = /^(?:GET|HEAD)$/,
9018	rprotocol = /^\/\//,
9019
9020	/* Prefilters
9021	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
9022	 * 2) These are called:
9023	 *    - BEFORE asking for a transport
9024	 *    - AFTER param serialization (s.data is a string if s.processData is true)
9025	 * 3) key is the dataType
9026	 * 4) the catchall symbol "*" can be used
9027	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
9028	 */
9029	prefilters = {},
9030
9031	/* Transports bindings
9032	 * 1) key is the dataType
9033	 * 2) the catchall symbol "*" can be used
9034	 * 3) selection will start with transport dataType and THEN go to "*" if needed
9035	 */
9036	transports = {},
9037
9038	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
9039	allTypes = "*/".concat( "*" ),
9040
9041	// Anchor tag for parsing the document origin
9042	originAnchor = document.createElement( "a" );
9043
9044originAnchor.href = location.href;
9045
9046// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
9047function addToPrefiltersOrTransports( structure ) {
9048
9049	// dataTypeExpression is optional and defaults to "*"
9050	return function( dataTypeExpression, func ) {
9051
9052		if ( typeof dataTypeExpression !== "string" ) {
9053			func = dataTypeExpression;
9054			dataTypeExpression = "*";
9055		}
9056
9057		var dataType,
9058			i = 0,
9059			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
9060
9061		if ( isFunction( func ) ) {
9062
9063			// For each dataType in the dataTypeExpression
9064			while ( ( dataType = dataTypes[ i++ ] ) ) {
9065
9066				// Prepend if requested
9067				if ( dataType[ 0 ] === "+" ) {
9068					dataType = dataType.slice( 1 ) || "*";
9069					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
9070
9071				// Otherwise append
9072				} else {
9073					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
9074				}
9075			}
9076		}
9077	};
9078}
9079
9080// Base inspection function for prefilters and transports
9081function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
9082
9083	var inspected = {},
9084		seekingTransport = ( structure === transports );
9085
9086	function inspect( dataType ) {
9087		var selected;
9088		inspected[ dataType ] = true;
9089		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
9090			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
9091			if ( typeof dataTypeOrTransport === "string" &&
9092				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
9093
9094				options.dataTypes.unshift( dataTypeOrTransport );
9095				inspect( dataTypeOrTransport );
9096				return false;
9097			} else if ( seekingTransport ) {
9098				return !( selected = dataTypeOrTransport );
9099			}
9100		} );
9101		return selected;
9102	}
9103
9104	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
9105}
9106
9107// A special extend for ajax options
9108// that takes "flat" options (not to be deep extended)
9109// Fixes #9887
9110function ajaxExtend( target, src ) {
9111	var key, deep,
9112		flatOptions = jQuery.ajaxSettings.flatOptions || {};
9113
9114	for ( key in src ) {
9115		if ( src[ key ] !== undefined ) {
9116			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
9117		}
9118	}
9119	if ( deep ) {
9120		jQuery.extend( true, target, deep );
9121	}
9122
9123	return target;
9124}
9125
9126/* Handles responses to an ajax request:
9127 * - finds the right dataType (mediates between content-type and expected dataType)
9128 * - returns the corresponding response
9129 */
9130function ajaxHandleResponses( s, jqXHR, responses ) {
9131
9132	var ct, type, finalDataType, firstDataType,
9133		contents = s.contents,
9134		dataTypes = s.dataTypes;
9135
9136	// Remove auto dataType and get content-type in the process
9137	while ( dataTypes[ 0 ] === "*" ) {
9138		dataTypes.shift();
9139		if ( ct === undefined ) {
9140			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
9141		}
9142	}
9143
9144	// Check if we're dealing with a known content-type
9145	if ( ct ) {
9146		for ( type in contents ) {
9147			if ( contents[ type ] && contents[ type ].test( ct ) ) {
9148				dataTypes.unshift( type );
9149				break;
9150			}
9151		}
9152	}
9153
9154	// Check to see if we have a response for the expected dataType
9155	if ( dataTypes[ 0 ] in responses ) {
9156		finalDataType = dataTypes[ 0 ];
9157	} else {
9158
9159		// Try convertible dataTypes
9160		for ( type in responses ) {
9161			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
9162				finalDataType = type;
9163				break;
9164			}
9165			if ( !firstDataType ) {
9166				firstDataType = type;
9167			}
9168		}
9169
9170		// Or just use first one
9171		finalDataType = finalDataType || firstDataType;
9172	}
9173
9174	// If we found a dataType
9175	// We add the dataType to the list if needed
9176	// and return the corresponding response
9177	if ( finalDataType ) {
9178		if ( finalDataType !== dataTypes[ 0 ] ) {
9179			dataTypes.unshift( finalDataType );
9180		}
9181		return responses[ finalDataType ];
9182	}
9183}
9184
9185/* Chain conversions given the request and the original response
9186 * Also sets the responseXXX fields on the jqXHR instance
9187 */
9188function ajaxConvert( s, response, jqXHR, isSuccess ) {
9189	var conv2, current, conv, tmp, prev,
9190		converters = {},
9191
9192		// Work with a copy of dataTypes in case we need to modify it for conversion
9193		dataTypes = s.dataTypes.slice();
9194
9195	// Create converters map with lowercased keys
9196	if ( dataTypes[ 1 ] ) {
9197		for ( conv in s.converters ) {
9198			converters[ conv.toLowerCase() ] = s.converters[ conv ];
9199		}
9200	}
9201
9202	current = dataTypes.shift();
9203
9204	// Convert to each sequential dataType
9205	while ( current ) {
9206
9207		if ( s.responseFields[ current ] ) {
9208			jqXHR[ s.responseFields[ current ] ] = response;
9209		}
9210
9211		// Apply the dataFilter if provided
9212		if ( !prev && isSuccess && s.dataFilter ) {
9213			response = s.dataFilter( response, s.dataType );
9214		}
9215
9216		prev = current;
9217		current = dataTypes.shift();
9218
9219		if ( current ) {
9220
9221			// There's only work to do if current dataType is non-auto
9222			if ( current === "*" ) {
9223
9224				current = prev;
9225
9226			// Convert response if prev dataType is non-auto and differs from current
9227			} else if ( prev !== "*" && prev !== current ) {
9228
9229				// Seek a direct converter
9230				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
9231
9232				// If none found, seek a pair
9233				if ( !conv ) {
9234					for ( conv2 in converters ) {
9235
9236						// If conv2 outputs current
9237						tmp = conv2.split( " " );
9238						if ( tmp[ 1 ] === current ) {
9239
9240							// If prev can be converted to accepted input
9241							conv = converters[ prev + " " + tmp[ 0 ] ] ||
9242								converters[ "* " + tmp[ 0 ] ];
9243							if ( conv ) {
9244
9245								// Condense equivalence converters
9246								if ( conv === true ) {
9247									conv = converters[ conv2 ];
9248
9249								// Otherwise, insert the intermediate dataType
9250								} else if ( converters[ conv2 ] !== true ) {
9251									current = tmp[ 0 ];
9252									dataTypes.unshift( tmp[ 1 ] );
9253								}
9254								break;
9255							}
9256						}
9257					}
9258				}
9259
9260				// Apply converter (if not an equivalence)
9261				if ( conv !== true ) {
9262
9263					// Unless errors are allowed to bubble, catch and return them
9264					if ( conv && s.throws ) {
9265						response = conv( response );
9266					} else {
9267						try {
9268							response = conv( response );
9269						} catch ( e ) {
9270							return {
9271								state: "parsererror",
9272								error: conv ? e : "No conversion from " + prev + " to " + current
9273							};
9274						}
9275					}
9276				}
9277			}
9278		}
9279	}
9280
9281	return { state: "success", data: response };
9282}
9283
9284jQuery.extend( {
9285
9286	// Counter for holding the number of active queries
9287	active: 0,
9288
9289	// Last-Modified header cache for next request
9290	lastModified: {},
9291	etag: {},
9292
9293	ajaxSettings: {
9294		url: location.href,
9295		type: "GET",
9296		isLocal: rlocalProtocol.test( location.protocol ),
9297		global: true,
9298		processData: true,
9299		async: true,
9300		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
9301
9302		/*
9303		timeout: 0,
9304		data: null,
9305		dataType: null,
9306		username: null,
9307		password: null,
9308		cache: null,
9309		throws: false,
9310		traditional: false,
9311		headers: {},
9312		*/
9313
9314		accepts: {
9315			"*": allTypes,
9316			text: "text/plain",
9317			html: "text/html",
9318			xml: "application/xml, text/xml",
9319			json: "application/json, text/javascript"
9320		},
9321
9322		contents: {
9323			xml: /\bxml\b/,
9324			html: /\bhtml/,
9325			json: /\bjson\b/
9326		},
9327
9328		responseFields: {
9329			xml: "responseXML",
9330			text: "responseText",
9331			json: "responseJSON"
9332		},
9333
9334		// Data converters
9335		// Keys separate source (or catchall "*") and destination types with a single space
9336		converters: {
9337
9338			// Convert anything to text
9339			"* text": String,
9340
9341			// Text to html (true = no transformation)
9342			"text html": true,
9343
9344			// Evaluate text as a json expression
9345			"text json": JSON.parse,
9346
9347			// Parse text as xml
9348			"text xml": jQuery.parseXML
9349		},
9350
9351		// For options that shouldn't be deep extended:
9352		// you can add your own custom options here if
9353		// and when you create one that shouldn't be
9354		// deep extended (see ajaxExtend)
9355		flatOptions: {
9356			url: true,
9357			context: true
9358		}
9359	},
9360
9361	// Creates a full fledged settings object into target
9362	// with both ajaxSettings and settings fields.
9363	// If target is omitted, writes into ajaxSettings.
9364	ajaxSetup: function( target, settings ) {
9365		return settings ?
9366
9367			// Building a settings object
9368			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
9369
9370			// Extending ajaxSettings
9371			ajaxExtend( jQuery.ajaxSettings, target );
9372	},
9373
9374	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
9375	ajaxTransport: addToPrefiltersOrTransports( transports ),
9376
9377	// Main method
9378	ajax: function( url, options ) {
9379
9380		// If url is an object, simulate pre-1.5 signature
9381		if ( typeof url === "object" ) {
9382			options = url;
9383			url = undefined;
9384		}
9385
9386		// Force options to be an object
9387		options = options || {};
9388
9389		var transport,
9390
9391			// URL without anti-cache param
9392			cacheURL,
9393
9394			// Response headers
9395			responseHeadersString,
9396			responseHeaders,
9397
9398			// timeout handle
9399			timeoutTimer,
9400
9401			// Url cleanup var
9402			urlAnchor,
9403
9404			// Request state (becomes false upon send and true upon completion)
9405			completed,
9406
9407			// To know if global events are to be dispatched
9408			fireGlobals,
9409
9410			// Loop variable
9411			i,
9412
9413			// uncached part of the url
9414			uncached,
9415
9416			// Create the final options object
9417			s = jQuery.ajaxSetup( {}, options ),
9418
9419			// Callbacks context
9420			callbackContext = s.context || s,
9421
9422			// Context for global events is callbackContext if it is a DOM node or jQuery collection
9423			globalEventContext = s.context &&
9424				( callbackContext.nodeType || callbackContext.jquery ) ?
9425				jQuery( callbackContext ) :
9426				jQuery.event,
9427
9428			// Deferreds
9429			deferred = jQuery.Deferred(),
9430			completeDeferred = jQuery.Callbacks( "once memory" ),
9431
9432			// Status-dependent callbacks
9433			statusCode = s.statusCode || {},
9434
9435			// Headers (they are sent all at once)
9436			requestHeaders = {},
9437			requestHeadersNames = {},
9438
9439			// Default abort message
9440			strAbort = "canceled",
9441
9442			// Fake xhr
9443			jqXHR = {
9444				readyState: 0,
9445
9446				// Builds headers hashtable if needed
9447				getResponseHeader: function( key ) {
9448					var match;
9449					if ( completed ) {
9450						if ( !responseHeaders ) {
9451							responseHeaders = {};
9452							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
9453								responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
9454									( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
9455										.concat( match[ 2 ] );
9456							}
9457						}
9458						match = responseHeaders[ key.toLowerCase() + " " ];
9459					}
9460					return match == null ? null : match.join( ", " );
9461				},
9462
9463				// Raw string
9464				getAllResponseHeaders: function() {
9465					return completed ? responseHeadersString : null;
9466				},
9467
9468				// Caches the header
9469				setRequestHeader: function( name, value ) {
9470					if ( completed == null ) {
9471						name = requestHeadersNames[ name.toLowerCase() ] =
9472							requestHeadersNames[ name.toLowerCase() ] || name;
9473						requestHeaders[ name ] = value;
9474					}
9475					return this;
9476				},
9477
9478				// Overrides response content-type header
9479				overrideMimeType: function( type ) {
9480					if ( completed == null ) {
9481						s.mimeType = type;
9482					}
9483					return this;
9484				},
9485
9486				// Status-dependent callbacks
9487				statusCode: function( map ) {
9488					var code;
9489					if ( map ) {
9490						if ( completed ) {
9491
9492							// Execute the appropriate callbacks
9493							jqXHR.always( map[ jqXHR.status ] );
9494						} else {
9495
9496							// Lazy-add the new callbacks in a way that preserves old ones
9497							for ( code in map ) {
9498								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
9499							}
9500						}
9501					}
9502					return this;
9503				},
9504
9505				// Cancel the request
9506				abort: function( statusText ) {
9507					var finalText = statusText || strAbort;
9508					if ( transport ) {
9509						transport.abort( finalText );
9510					}
9511					done( 0, finalText );
9512					return this;
9513				}
9514			};
9515
9516		// Attach deferreds
9517		deferred.promise( jqXHR );
9518
9519		// Add protocol if not provided (prefilters might expect it)
9520		// Handle falsy url in the settings object (#10093: consistency with old signature)
9521		// We also use the url parameter if available
9522		s.url = ( ( url || s.url || location.href ) + "" )
9523			.replace( rprotocol, location.protocol + "//" );
9524
9525		// Alias method option to type as per ticket #12004
9526		s.type = options.method || options.type || s.method || s.type;
9527
9528		// Extract dataTypes list
9529		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
9530
9531		// A cross-domain request is in order when the origin doesn't match the current origin.
9532		if ( s.crossDomain == null ) {
9533			urlAnchor = document.createElement( "a" );
9534
9535			// Support: IE <=8 - 11, Edge 12 - 15
9536			// IE throws exception on accessing the href property if url is malformed,
9537			// e.g. http://example.com:80x/
9538			try {
9539				urlAnchor.href = s.url;
9540
9541				// Support: IE <=8 - 11 only
9542				// Anchor's host property isn't correctly set when s.url is relative
9543				urlAnchor.href = urlAnchor.href;
9544				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
9545					urlAnchor.protocol + "//" + urlAnchor.host;
9546			} catch ( e ) {
9547
9548				// If there is an error parsing the URL, assume it is crossDomain,
9549				// it can be rejected by the transport if it is invalid
9550				s.crossDomain = true;
9551			}
9552		}
9553
9554		// Convert data if not already a string
9555		if ( s.data && s.processData && typeof s.data !== "string" ) {
9556			s.data = jQuery.param( s.data, s.traditional );
9557		}
9558
9559		// Apply prefilters
9560		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
9561
9562		// If request was aborted inside a prefilter, stop there
9563		if ( completed ) {
9564			return jqXHR;
9565		}
9566
9567		// We can fire global events as of now if asked to
9568		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
9569		fireGlobals = jQuery.event && s.global;
9570
9571		// Watch for a new set of requests
9572		if ( fireGlobals && jQuery.active++ === 0 ) {
9573			jQuery.event.trigger( "ajaxStart" );
9574		}
9575
9576		// Uppercase the type
9577		s.type = s.type.toUpperCase();
9578
9579		// Determine if request has content
9580		s.hasContent = !rnoContent.test( s.type );
9581
9582		// Save the URL in case we're toying with the If-Modified-Since
9583		// and/or If-None-Match header later on
9584		// Remove hash to simplify url manipulation
9585		cacheURL = s.url.replace( rhash, "" );
9586
9587		// More options handling for requests with no content
9588		if ( !s.hasContent ) {
9589
9590			// Remember the hash so we can put it back
9591			uncached = s.url.slice( cacheURL.length );
9592
9593			// If data is available and should be processed, append data to url
9594			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
9595				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
9596
9597				// #9682: remove data so that it's not used in an eventual retry
9598				delete s.data;
9599			}
9600
9601			// Add or update anti-cache param if needed
9602			if ( s.cache === false ) {
9603				cacheURL = cacheURL.replace( rantiCache, "$1" );
9604				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
9605					uncached;
9606			}
9607
9608			// Put hash and anti-cache on the URL that will be requested (gh-1732)
9609			s.url = cacheURL + uncached;
9610
9611		// Change '%20' to '+' if this is encoded form body content (gh-2658)
9612		} else if ( s.data && s.processData &&
9613			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
9614			s.data = s.data.replace( r20, "+" );
9615		}
9616
9617		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9618		if ( s.ifModified ) {
9619			if ( jQuery.lastModified[ cacheURL ] ) {
9620				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
9621			}
9622			if ( jQuery.etag[ cacheURL ] ) {
9623				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
9624			}
9625		}
9626
9627		// Set the correct header, if data is being sent
9628		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
9629			jqXHR.setRequestHeader( "Content-Type", s.contentType );
9630		}
9631
9632		// Set the Accepts header for the server, depending on the dataType
9633		jqXHR.setRequestHeader(
9634			"Accept",
9635			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
9636				s.accepts[ s.dataTypes[ 0 ] ] +
9637					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
9638				s.accepts[ "*" ]
9639		);
9640
9641		// Check for headers option
9642		for ( i in s.headers ) {
9643			jqXHR.setRequestHeader( i, s.headers[ i ] );
9644		}
9645
9646		// Allow custom headers/mimetypes and early abort
9647		if ( s.beforeSend &&
9648			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
9649
9650			// Abort if not done already and return
9651			return jqXHR.abort();
9652		}
9653
9654		// Aborting is no longer a cancellation
9655		strAbort = "abort";
9656
9657		// Install callbacks on deferreds
9658		completeDeferred.add( s.complete );
9659		jqXHR.done( s.success );
9660		jqXHR.fail( s.error );
9661
9662		// Get transport
9663		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
9664
9665		// If no transport, we auto-abort
9666		if ( !transport ) {
9667			done( -1, "No Transport" );
9668		} else {
9669			jqXHR.readyState = 1;
9670
9671			// Send global event
9672			if ( fireGlobals ) {
9673				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
9674			}
9675
9676			// If request was aborted inside ajaxSend, stop there
9677			if ( completed ) {
9678				return jqXHR;
9679			}
9680
9681			// Timeout
9682			if ( s.async && s.timeout > 0 ) {
9683				timeoutTimer = window.setTimeout( function() {
9684					jqXHR.abort( "timeout" );
9685				}, s.timeout );
9686			}
9687
9688			try {
9689				completed = false;
9690				transport.send( requestHeaders, done );
9691			} catch ( e ) {
9692
9693				// Rethrow post-completion exceptions
9694				if ( completed ) {
9695					throw e;
9696				}
9697
9698				// Propagate others as results
9699				done( -1, e );
9700			}
9701		}
9702
9703		// Callback for when everything is done
9704		function done( status, nativeStatusText, responses, headers ) {
9705			var isSuccess, success, error, response, modified,
9706				statusText = nativeStatusText;
9707
9708			// Ignore repeat invocations
9709			if ( completed ) {
9710				return;
9711			}
9712
9713			completed = true;
9714
9715			// Clear timeout if it exists
9716			if ( timeoutTimer ) {
9717				window.clearTimeout( timeoutTimer );
9718			}
9719
9720			// Dereference transport for early garbage collection
9721			// (no matter how long the jqXHR object will be used)
9722			transport = undefined;
9723
9724			// Cache response headers
9725			responseHeadersString = headers || "";
9726
9727			// Set readyState
9728			jqXHR.readyState = status > 0 ? 4 : 0;
9729
9730			// Determine if successful
9731			isSuccess = status >= 200 && status < 300 || status === 304;
9732
9733			// Get response data
9734			if ( responses ) {
9735				response = ajaxHandleResponses( s, jqXHR, responses );
9736			}
9737
9738			// Use a noop converter for missing script but not if jsonp
9739			if ( !isSuccess &&
9740				jQuery.inArray( "script", s.dataTypes ) > -1 &&
9741				jQuery.inArray( "json", s.dataTypes ) < 0 ) {
9742				s.converters[ "text script" ] = function() {};
9743			}
9744
9745			// Convert no matter what (that way responseXXX fields are always set)
9746			response = ajaxConvert( s, response, jqXHR, isSuccess );
9747
9748			// If successful, handle type chaining
9749			if ( isSuccess ) {
9750
9751				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9752				if ( s.ifModified ) {
9753					modified = jqXHR.getResponseHeader( "Last-Modified" );
9754					if ( modified ) {
9755						jQuery.lastModified[ cacheURL ] = modified;
9756					}
9757					modified = jqXHR.getResponseHeader( "etag" );
9758					if ( modified ) {
9759						jQuery.etag[ cacheURL ] = modified;
9760					}
9761				}
9762
9763				// if no content
9764				if ( status === 204 || s.type === "HEAD" ) {
9765					statusText = "nocontent";
9766
9767				// if not modified
9768				} else if ( status === 304 ) {
9769					statusText = "notmodified";
9770
9771				// If we have data, let's convert it
9772				} else {
9773					statusText = response.state;
9774					success = response.data;
9775					error = response.error;
9776					isSuccess = !error;
9777				}
9778			} else {
9779
9780				// Extract error from statusText and normalize for non-aborts
9781				error = statusText;
9782				if ( status || !statusText ) {
9783					statusText = "error";
9784					if ( status < 0 ) {
9785						status = 0;
9786					}
9787				}
9788			}
9789
9790			// Set data for the fake xhr object
9791			jqXHR.status = status;
9792			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
9793
9794			// Success/Error
9795			if ( isSuccess ) {
9796				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
9797			} else {
9798				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
9799			}
9800
9801			// Status-dependent callbacks
9802			jqXHR.statusCode( statusCode );
9803			statusCode = undefined;
9804
9805			if ( fireGlobals ) {
9806				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
9807					[ jqXHR, s, isSuccess ? success : error ] );
9808			}
9809
9810			// Complete
9811			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
9812
9813			if ( fireGlobals ) {
9814				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
9815
9816				// Handle the global AJAX counter
9817				if ( !( --jQuery.active ) ) {
9818					jQuery.event.trigger( "ajaxStop" );
9819				}
9820			}
9821		}
9822
9823		return jqXHR;
9824	},
9825
9826	getJSON: function( url, data, callback ) {
9827		return jQuery.get( url, data, callback, "json" );
9828	},
9829
9830	getScript: function( url, callback ) {
9831		return jQuery.get( url, undefined, callback, "script" );
9832	}
9833} );
9834
9835jQuery.each( [ "get", "post" ], function( _i, method ) {
9836	jQuery[ method ] = function( url, data, callback, type ) {
9837
9838		// Shift arguments if data argument was omitted
9839		if ( isFunction( data ) ) {
9840			type = type || callback;
9841			callback = data;
9842			data = undefined;
9843		}
9844
9845		// The url can be an options object (which then must have .url)
9846		return jQuery.ajax( jQuery.extend( {
9847			url: url,
9848			type: method,
9849			dataType: type,
9850			data: data,
9851			success: callback
9852		}, jQuery.isPlainObject( url ) && url ) );
9853	};
9854} );
9855
9856jQuery.ajaxPrefilter( function( s ) {
9857	var i;
9858	for ( i in s.headers ) {
9859		if ( i.toLowerCase() === "content-type" ) {
9860			s.contentType = s.headers[ i ] || "";
9861		}
9862	}
9863} );
9864
9865
9866jQuery._evalUrl = function( url, options, doc ) {
9867	return jQuery.ajax( {
9868		url: url,
9869
9870		// Make this explicit, since user can override this through ajaxSetup (#11264)
9871		type: "GET",
9872		dataType: "script",
9873		cache: true,
9874		async: false,
9875		global: false,
9876
9877		// Only evaluate the response if it is successful (gh-4126)
9878		// dataFilter is not invoked for failure responses, so using it instead
9879		// of the default converter is kludgy but it works.
9880		converters: {
9881			"text script": function() {}
9882		},
9883		dataFilter: function( response ) {
9884			jQuery.globalEval( response, options, doc );
9885		}
9886	} );
9887};
9888
9889
9890jQuery.fn.extend( {
9891	wrapAll: function( html ) {
9892		var wrap;
9893
9894		if ( this[ 0 ] ) {
9895			if ( isFunction( html ) ) {
9896				html = html.call( this[ 0 ] );
9897			}
9898
9899			// The elements to wrap the target around
9900			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
9901
9902			if ( this[ 0 ].parentNode ) {
9903				wrap.insertBefore( this[ 0 ] );
9904			}
9905
9906			wrap.map( function() {
9907				var elem = this;
9908
9909				while ( elem.firstElementChild ) {
9910					elem = elem.firstElementChild;
9911				}
9912
9913				return elem;
9914			} ).append( this );
9915		}
9916
9917		return this;
9918	},
9919
9920	wrapInner: function( html ) {
9921		if ( isFunction( html ) ) {
9922			return this.each( function( i ) {
9923				jQuery( this ).wrapInner( html.call( this, i ) );
9924			} );
9925		}
9926
9927		return this.each( function() {
9928			var self = jQuery( this ),
9929				contents = self.contents();
9930
9931			if ( contents.length ) {
9932				contents.wrapAll( html );
9933
9934			} else {
9935				self.append( html );
9936			}
9937		} );
9938	},
9939
9940	wrap: function( html ) {
9941		var htmlIsFunction = isFunction( html );
9942
9943		return this.each( function( i ) {
9944			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
9945		} );
9946	},
9947
9948	unwrap: function( selector ) {
9949		this.parent( selector ).not( "body" ).each( function() {
9950			jQuery( this ).replaceWith( this.childNodes );
9951		} );
9952		return this;
9953	}
9954} );
9955
9956
9957jQuery.expr.pseudos.hidden = function( elem ) {
9958	return !jQuery.expr.pseudos.visible( elem );
9959};
9960jQuery.expr.pseudos.visible = function( elem ) {
9961	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
9962};
9963
9964
9965
9966
9967jQuery.ajaxSettings.xhr = function() {
9968	try {
9969		return new window.XMLHttpRequest();
9970	} catch ( e ) {}
9971};
9972
9973var xhrSuccessStatus = {
9974
9975		// File protocol always yields status code 0, assume 200
9976		0: 200,
9977
9978		// Support: IE <=9 only
9979		// #1450: sometimes IE returns 1223 when it should be 204
9980		1223: 204
9981	},
9982	xhrSupported = jQuery.ajaxSettings.xhr();
9983
9984support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
9985support.ajax = xhrSupported = !!xhrSupported;
9986
9987jQuery.ajaxTransport( function( options ) {
9988	var callback, errorCallback;
9989
9990	// Cross domain only allowed if supported through XMLHttpRequest
9991	if ( support.cors || xhrSupported && !options.crossDomain ) {
9992		return {
9993			send: function( headers, complete ) {
9994				var i,
9995					xhr = options.xhr();
9996
9997				xhr.open(
9998					options.type,
9999					options.url,
10000					options.async,
10001					options.username,
10002					options.password
10003				);
10004
10005				// Apply custom fields if provided
10006				if ( options.xhrFields ) {
10007					for ( i in options.xhrFields ) {
10008						xhr[ i ] = options.xhrFields[ i ];
10009					}
10010				}
10011
10012				// Override mime type if needed
10013				if ( options.mimeType && xhr.overrideMimeType ) {
10014					xhr.overrideMimeType( options.mimeType );
10015				}
10016
10017				// X-Requested-With header
10018				// For cross-domain requests, seeing as conditions for a preflight are
10019				// akin to a jigsaw puzzle, we simply never set it to be sure.
10020				// (it can always be set on a per-request basis or even using ajaxSetup)
10021				// For same-domain requests, won't change header if already provided.
10022				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
10023					headers[ "X-Requested-With" ] = "XMLHttpRequest";
10024				}
10025
10026				// Set headers
10027				for ( i in headers ) {
10028					xhr.setRequestHeader( i, headers[ i ] );
10029				}
10030
10031				// Callback
10032				callback = function( type ) {
10033					return function() {
10034						if ( callback ) {
10035							callback = errorCallback = xhr.onload =
10036								xhr.onerror = xhr.onabort = xhr.ontimeout =
10037									xhr.onreadystatechange = null;
10038
10039							if ( type === "abort" ) {
10040								xhr.abort();
10041							} else if ( type === "error" ) {
10042
10043								// Support: IE <=9 only
10044								// On a manual native abort, IE9 throws
10045								// errors on any property access that is not readyState
10046								if ( typeof xhr.status !== "number" ) {
10047									complete( 0, "error" );
10048								} else {
10049									complete(
10050
10051										// File: protocol always yields status 0; see #8605, #14207
10052										xhr.status,
10053										xhr.statusText
10054									);
10055								}
10056							} else {
10057								complete(
10058									xhrSuccessStatus[ xhr.status ] || xhr.status,
10059									xhr.statusText,
10060
10061									// Support: IE <=9 only
10062									// IE9 has no XHR2 but throws on binary (trac-11426)
10063									// For XHR2 non-text, let the caller handle it (gh-2498)
10064									( xhr.responseType || "text" ) !== "text"  ||
10065									typeof xhr.responseText !== "string" ?
10066										{ binary: xhr.response } :
10067										{ text: xhr.responseText },
10068									xhr.getAllResponseHeaders()
10069								);
10070							}
10071						}
10072					};
10073				};
10074
10075				// Listen to events
10076				xhr.onload = callback();
10077				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
10078
10079				// Support: IE 9 only
10080				// Use onreadystatechange to replace onabort
10081				// to handle uncaught aborts
10082				if ( xhr.onabort !== undefined ) {
10083					xhr.onabort = errorCallback;
10084				} else {
10085					xhr.onreadystatechange = function() {
10086
10087						// Check readyState before timeout as it changes
10088						if ( xhr.readyState === 4 ) {
10089
10090							// Allow onerror to be called first,
10091							// but that will not handle a native abort
10092							// Also, save errorCallback to a variable
10093							// as xhr.onerror cannot be accessed
10094							window.setTimeout( function() {
10095								if ( callback ) {
10096									errorCallback();
10097								}
10098							} );
10099						}
10100					};
10101				}
10102
10103				// Create the abort callback
10104				callback = callback( "abort" );
10105
10106				try {
10107
10108					// Do send the request (this may raise an exception)
10109					xhr.send( options.hasContent && options.data || null );
10110				} catch ( e ) {
10111
10112					// #14683: Only rethrow if this hasn't been notified as an error yet
10113					if ( callback ) {
10114						throw e;
10115					}
10116				}
10117			},
10118
10119			abort: function() {
10120				if ( callback ) {
10121					callback();
10122				}
10123			}
10124		};
10125	}
10126} );
10127
10128
10129
10130
10131// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
10132jQuery.ajaxPrefilter( function( s ) {
10133	if ( s.crossDomain ) {
10134		s.contents.script = false;
10135	}
10136} );
10137
10138// Install script dataType
10139jQuery.ajaxSetup( {
10140	accepts: {
10141		script: "text/javascript, application/javascript, " +
10142			"application/ecmascript, application/x-ecmascript"
10143	},
10144	contents: {
10145		script: /\b(?:java|ecma)script\b/
10146	},
10147	converters: {
10148		"text script": function( text ) {
10149			jQuery.globalEval( text );
10150			return text;
10151		}
10152	}
10153} );
10154
10155// Handle cache's special case and crossDomain
10156jQuery.ajaxPrefilter( "script", function( s ) {
10157	if ( s.cache === undefined ) {
10158		s.cache = false;
10159	}
10160	if ( s.crossDomain ) {
10161		s.type = "GET";
10162	}
10163} );
10164
10165// Bind script tag hack transport
10166jQuery.ajaxTransport( "script", function( s ) {
10167
10168	// This transport only deals with cross domain or forced-by-attrs requests
10169	if ( s.crossDomain || s.scriptAttrs ) {
10170		var script, callback;
10171		return {
10172			send: function( _, complete ) {
10173				script = jQuery( "<script>" )
10174					.attr( s.scriptAttrs || {} )
10175					.prop( { charset: s.scriptCharset, src: s.url } )
10176					.on( "load error", callback = function( evt ) {
10177						script.remove();
10178						callback = null;
10179						if ( evt ) {
10180							complete( evt.type === "error" ? 404 : 200, evt.type );
10181						}
10182					} );
10183
10184				// Use native DOM manipulation to avoid our domManip AJAX trickery
10185				document.head.appendChild( script[ 0 ] );
10186			},
10187			abort: function() {
10188				if ( callback ) {
10189					callback();
10190				}
10191			}
10192		};
10193	}
10194} );
10195
10196
10197
10198
10199var oldCallbacks = [],
10200	rjsonp = /(=)\?(?=&|$)|\?\?/;
10201
10202// Default jsonp settings
10203jQuery.ajaxSetup( {
10204	jsonp: "callback",
10205	jsonpCallback: function() {
10206		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
10207		this[ callback ] = true;
10208		return callback;
10209	}
10210} );
10211
10212// Detect, normalize options and install callbacks for jsonp requests
10213jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
10214
10215	var callbackName, overwritten, responseContainer,
10216		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
10217			"url" :
10218			typeof s.data === "string" &&
10219				( s.contentType || "" )
10220					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
10221				rjsonp.test( s.data ) && "data"
10222		);
10223
10224	// Handle iff the expected data type is "jsonp" or we have a parameter to set
10225	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
10226
10227		// Get callback name, remembering preexisting value associated with it
10228		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
10229			s.jsonpCallback() :
10230			s.jsonpCallback;
10231
10232		// Insert callback into url or form data
10233		if ( jsonProp ) {
10234			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
10235		} else if ( s.jsonp !== false ) {
10236			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
10237		}
10238
10239		// Use data converter to retrieve json after script execution
10240		s.converters[ "script json" ] = function() {
10241			if ( !responseContainer ) {
10242				jQuery.error( callbackName + " was not called" );
10243			}
10244			return responseContainer[ 0 ];
10245		};
10246
10247		// Force json dataType
10248		s.dataTypes[ 0 ] = "json";
10249
10250		// Install callback
10251		overwritten = window[ callbackName ];
10252		window[ callbackName ] = function() {
10253			responseContainer = arguments;
10254		};
10255
10256		// Clean-up function (fires after converters)
10257		jqXHR.always( function() {
10258
10259			// If previous value didn't exist - remove it
10260			if ( overwritten === undefined ) {
10261				jQuery( window ).removeProp( callbackName );
10262
10263			// Otherwise restore preexisting value
10264			} else {
10265				window[ callbackName ] = overwritten;
10266			}
10267
10268			// Save back as free
10269			if ( s[ callbackName ] ) {
10270
10271				// Make sure that re-using the options doesn't screw things around
10272				s.jsonpCallback = originalSettings.jsonpCallback;
10273
10274				// Save the callback name for future use
10275				oldCallbacks.push( callbackName );
10276			}
10277
10278			// Call if it was a function and we have a response
10279			if ( responseContainer && isFunction( overwritten ) ) {
10280				overwritten( responseContainer[ 0 ] );
10281			}
10282
10283			responseContainer = overwritten = undefined;
10284		} );
10285
10286		// Delegate to script
10287		return "script";
10288	}
10289} );
10290
10291
10292
10293
10294// Support: Safari 8 only
10295// In Safari 8 documents created via document.implementation.createHTMLDocument
10296// collapse sibling forms: the second one becomes a child of the first one.
10297// Because of that, this security measure has to be disabled in Safari 8.
10298// https://bugs.webkit.org/show_bug.cgi?id=137337
10299support.createHTMLDocument = ( function() {
10300	var body = document.implementation.createHTMLDocument( "" ).body;
10301	body.innerHTML = "<form></form><form></form>";
10302	return body.childNodes.length === 2;
10303} )();
10304
10305
10306// Argument "data" should be string of html
10307// context (optional): If specified, the fragment will be created in this context,
10308// defaults to document
10309// keepScripts (optional): If true, will include scripts passed in the html string
10310jQuery.parseHTML = function( data, context, keepScripts ) {
10311	if ( typeof data !== "string" ) {
10312		return [];
10313	}
10314	if ( typeof context === "boolean" ) {
10315		keepScripts = context;
10316		context = false;
10317	}
10318
10319	var base, parsed, scripts;
10320
10321	if ( !context ) {
10322
10323		// Stop scripts or inline event handlers from being executed immediately
10324		// by using document.implementation
10325		if ( support.createHTMLDocument ) {
10326			context = document.implementation.createHTMLDocument( "" );
10327
10328			// Set the base href for the created document
10329			// so any parsed elements with URLs
10330			// are based on the document's URL (gh-2965)
10331			base = context.createElement( "base" );
10332			base.href = document.location.href;
10333			context.head.appendChild( base );
10334		} else {
10335			context = document;
10336		}
10337	}
10338
10339	parsed = rsingleTag.exec( data );
10340	scripts = !keepScripts && [];
10341
10342	// Single tag
10343	if ( parsed ) {
10344		return [ context.createElement( parsed[ 1 ] ) ];
10345	}
10346
10347	parsed = buildFragment( [ data ], context, scripts );
10348
10349	if ( scripts && scripts.length ) {
10350		jQuery( scripts ).remove();
10351	}
10352
10353	return jQuery.merge( [], parsed.childNodes );
10354};
10355
10356
10357/**
10358 * Load a url into a page
10359 */
10360jQuery.fn.load = function( url, params, callback ) {
10361	var selector, type, response,
10362		self = this,
10363		off = url.indexOf( " " );
10364
10365	if ( off > -1 ) {
10366		selector = stripAndCollapse( url.slice( off ) );
10367		url = url.slice( 0, off );
10368	}
10369
10370	// If it's a function
10371	if ( isFunction( params ) ) {
10372
10373		// We assume that it's the callback
10374		callback = params;
10375		params = undefined;
10376
10377	// Otherwise, build a param string
10378	} else if ( params && typeof params === "object" ) {
10379		type = "POST";
10380	}
10381
10382	// If we have elements to modify, make the request
10383	if ( self.length > 0 ) {
10384		jQuery.ajax( {
10385			url: url,
10386
10387			// If "type" variable is undefined, then "GET" method will be used.
10388			// Make value of this field explicit since
10389			// user can override it through ajaxSetup method
10390			type: type || "GET",
10391			dataType: "html",
10392			data: params
10393		} ).done( function( responseText ) {
10394
10395			// Save response for use in complete callback
10396			response = arguments;
10397
10398			self.html( selector ?
10399
10400				// If a selector was specified, locate the right elements in a dummy div
10401				// Exclude scripts to avoid IE 'Permission Denied' errors
10402				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
10403
10404				// Otherwise use the full result
10405				responseText );
10406
10407		// If the request succeeds, this function gets "data", "status", "jqXHR"
10408		// but they are ignored because response was set above.
10409		// If it fails, this function gets "jqXHR", "status", "error"
10410		} ).always( callback && function( jqXHR, status ) {
10411			self.each( function() {
10412				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
10413			} );
10414		} );
10415	}
10416
10417	return this;
10418};
10419
10420
10421
10422
10423jQuery.expr.pseudos.animated = function( elem ) {
10424	return jQuery.grep( jQuery.timers, function( fn ) {
10425		return elem === fn.elem;
10426	} ).length;
10427};
10428
10429
10430
10431
10432jQuery.offset = {
10433	setOffset: function( elem, options, i ) {
10434		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
10435			position = jQuery.css( elem, "position" ),
10436			curElem = jQuery( elem ),
10437			props = {};
10438
10439		// Set position first, in-case top/left are set even on static elem
10440		if ( position === "static" ) {
10441			elem.style.position = "relative";
10442		}
10443
10444		curOffset = curElem.offset();
10445		curCSSTop = jQuery.css( elem, "top" );
10446		curCSSLeft = jQuery.css( elem, "left" );
10447		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
10448			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
10449
10450		// Need to be able to calculate position if either
10451		// top or left is auto and position is either absolute or fixed
10452		if ( calculatePosition ) {
10453			curPosition = curElem.position();
10454			curTop = curPosition.top;
10455			curLeft = curPosition.left;
10456
10457		} else {
10458			curTop = parseFloat( curCSSTop ) || 0;
10459			curLeft = parseFloat( curCSSLeft ) || 0;
10460		}
10461
10462		if ( isFunction( options ) ) {
10463
10464			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
10465			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
10466		}
10467
10468		if ( options.top != null ) {
10469			props.top = ( options.top - curOffset.top ) + curTop;
10470		}
10471		if ( options.left != null ) {
10472			props.left = ( options.left - curOffset.left ) + curLeft;
10473		}
10474
10475		if ( "using" in options ) {
10476			options.using.call( elem, props );
10477
10478		} else {
10479			curElem.css( props );
10480		}
10481	}
10482};
10483
10484jQuery.fn.extend( {
10485
10486	// offset() relates an element's border box to the document origin
10487	offset: function( options ) {
10488
10489		// Preserve chaining for setter
10490		if ( arguments.length ) {
10491			return options === undefined ?
10492				this :
10493				this.each( function( i ) {
10494					jQuery.offset.setOffset( this, options, i );
10495				} );
10496		}
10497
10498		var rect, win,
10499			elem = this[ 0 ];
10500
10501		if ( !elem ) {
10502			return;
10503		}
10504
10505		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
10506		// Support: IE <=11 only
10507		// Running getBoundingClientRect on a
10508		// disconnected node in IE throws an error
10509		if ( !elem.getClientRects().length ) {
10510			return { top: 0, left: 0 };
10511		}
10512
10513		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
10514		rect = elem.getBoundingClientRect();
10515		win = elem.ownerDocument.defaultView;
10516		return {
10517			top: rect.top + win.pageYOffset,
10518			left: rect.left + win.pageXOffset
10519		};
10520	},
10521
10522	// position() relates an element's margin box to its offset parent's padding box
10523	// This corresponds to the behavior of CSS absolute positioning
10524	position: function() {
10525		if ( !this[ 0 ] ) {
10526			return;
10527		}
10528
10529		var offsetParent, offset, doc,
10530			elem = this[ 0 ],
10531			parentOffset = { top: 0, left: 0 };
10532
10533		// position:fixed elements are offset from the viewport, which itself always has zero offset
10534		if ( jQuery.css( elem, "position" ) === "fixed" ) {
10535
10536			// Assume position:fixed implies availability of getBoundingClientRect
10537			offset = elem.getBoundingClientRect();
10538
10539		} else {
10540			offset = this.offset();
10541
10542			// Account for the *real* offset parent, which can be the document or its root element
10543			// when a statically positioned element is identified
10544			doc = elem.ownerDocument;
10545			offsetParent = elem.offsetParent || doc.documentElement;
10546			while ( offsetParent &&
10547				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
10548				jQuery.css( offsetParent, "position" ) === "static" ) {
10549
10550				offsetParent = offsetParent.parentNode;
10551			}
10552			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
10553
10554				// Incorporate borders into its offset, since they are outside its content origin
10555				parentOffset = jQuery( offsetParent ).offset();
10556				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
10557				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
10558			}
10559		}
10560
10561		// Subtract parent offsets and element margins
10562		return {
10563			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
10564			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
10565		};
10566	},
10567
10568	// This method will return documentElement in the following cases:
10569	// 1) For the element inside the iframe without offsetParent, this method will return
10570	//    documentElement of the parent window
10571	// 2) For the hidden or detached element
10572	// 3) For body or html element, i.e. in case of the html node - it will return itself
10573	//
10574	// but those exceptions were never presented as a real life use-cases
10575	// and might be considered as more preferable results.
10576	//
10577	// This logic, however, is not guaranteed and can change at any point in the future
10578	offsetParent: function() {
10579		return this.map( function() {
10580			var offsetParent = this.offsetParent;
10581
10582			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
10583				offsetParent = offsetParent.offsetParent;
10584			}
10585
10586			return offsetParent || documentElement;
10587		} );
10588	}
10589} );
10590
10591// Create scrollLeft and scrollTop methods
10592jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
10593	var top = "pageYOffset" === prop;
10594
10595	jQuery.fn[ method ] = function( val ) {
10596		return access( this, function( elem, method, val ) {
10597
10598			// Coalesce documents and windows
10599			var win;
10600			if ( isWindow( elem ) ) {
10601				win = elem;
10602			} else if ( elem.nodeType === 9 ) {
10603				win = elem.defaultView;
10604			}
10605
10606			if ( val === undefined ) {
10607				return win ? win[ prop ] : elem[ method ];
10608			}
10609
10610			if ( win ) {
10611				win.scrollTo(
10612					!top ? val : win.pageXOffset,
10613					top ? val : win.pageYOffset
10614				);
10615
10616			} else {
10617				elem[ method ] = val;
10618			}
10619		}, method, val, arguments.length );
10620	};
10621} );
10622
10623// Support: Safari <=7 - 9.1, Chrome <=37 - 49
10624// Add the top/left cssHooks using jQuery.fn.position
10625// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
10626// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
10627// getComputedStyle returns percent when specified for top/left/bottom/right;
10628// rather than make the css module depend on the offset module, just check for it here
10629jQuery.each( [ "top", "left" ], function( _i, prop ) {
10630	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
10631		function( elem, computed ) {
10632			if ( computed ) {
10633				computed = curCSS( elem, prop );
10634
10635				// If curCSS returns percentage, fallback to offset
10636				return rnumnonpx.test( computed ) ?
10637					jQuery( elem ).position()[ prop ] + "px" :
10638					computed;
10639			}
10640		}
10641	);
10642} );
10643
10644
10645// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
10646jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
10647	jQuery.each( {
10648		padding: "inner" + name,
10649		content: type,
10650		"": "outer" + name
10651	}, function( defaultExtra, funcName ) {
10652
10653		// Margin is only for outerHeight, outerWidth
10654		jQuery.fn[ funcName ] = function( margin, value ) {
10655			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
10656				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
10657
10658			return access( this, function( elem, type, value ) {
10659				var doc;
10660
10661				if ( isWindow( elem ) ) {
10662
10663					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
10664					return funcName.indexOf( "outer" ) === 0 ?
10665						elem[ "inner" + name ] :
10666						elem.document.documentElement[ "client" + name ];
10667				}
10668
10669				// Get document width or height
10670				if ( elem.nodeType === 9 ) {
10671					doc = elem.documentElement;
10672
10673					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
10674					// whichever is greatest
10675					return Math.max(
10676						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
10677						elem.body[ "offset" + name ], doc[ "offset" + name ],
10678						doc[ "client" + name ]
10679					);
10680				}
10681
10682				return value === undefined ?
10683
10684					// Get width or height on the element, requesting but not forcing parseFloat
10685					jQuery.css( elem, type, extra ) :
10686
10687					// Set width or height on the element
10688					jQuery.style( elem, type, value, extra );
10689			}, type, chainable ? margin : undefined, chainable );
10690		};
10691	} );
10692} );
10693
10694
10695jQuery.each( [
10696	"ajaxStart",
10697	"ajaxStop",
10698	"ajaxComplete",
10699	"ajaxError",
10700	"ajaxSuccess",
10701	"ajaxSend"
10702], function( _i, type ) {
10703	jQuery.fn[ type ] = function( fn ) {
10704		return this.on( type, fn );
10705	};
10706} );
10707
10708
10709
10710
10711jQuery.fn.extend( {
10712
10713	bind: function( types, data, fn ) {
10714		return this.on( types, null, data, fn );
10715	},
10716	unbind: function( types, fn ) {
10717		return this.off( types, null, fn );
10718	},
10719
10720	delegate: function( selector, types, data, fn ) {
10721		return this.on( types, selector, data, fn );
10722	},
10723	undelegate: function( selector, types, fn ) {
10724
10725		// ( namespace ) or ( selector, types [, fn] )
10726		return arguments.length === 1 ?
10727			this.off( selector, "**" ) :
10728			this.off( types, selector || "**", fn );
10729	},
10730
10731	hover: function( fnOver, fnOut ) {
10732		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
10733	}
10734} );
10735
10736jQuery.each(
10737	( "blur focus focusin focusout resize scroll click dblclick " +
10738	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
10739	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
10740	function( _i, name ) {
10741
10742		// Handle event binding
10743		jQuery.fn[ name ] = function( data, fn ) {
10744			return arguments.length > 0 ?
10745				this.on( name, null, data, fn ) :
10746				this.trigger( name );
10747		};
10748	}
10749);
10750
10751
10752
10753
10754// Support: Android <=4.0 only
10755// Make sure we trim BOM and NBSP
10756var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
10757
10758// Bind a function to a context, optionally partially applying any
10759// arguments.
10760// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
10761// However, it is not slated for removal any time soon
10762jQuery.proxy = function( fn, context ) {
10763	var tmp, args, proxy;
10764
10765	if ( typeof context === "string" ) {
10766		tmp = fn[ context ];
10767		context = fn;
10768		fn = tmp;
10769	}
10770
10771	// Quick check to determine if target is callable, in the spec
10772	// this throws a TypeError, but we will just return undefined.
10773	if ( !isFunction( fn ) ) {
10774		return undefined;
10775	}
10776
10777	// Simulated bind
10778	args = slice.call( arguments, 2 );
10779	proxy = function() {
10780		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
10781	};
10782
10783	// Set the guid of unique handler to the same of original handler, so it can be removed
10784	proxy.guid = fn.guid = fn.guid || jQuery.guid++;
10785
10786	return proxy;
10787};
10788
10789jQuery.holdReady = function( hold ) {
10790	if ( hold ) {
10791		jQuery.readyWait++;
10792	} else {
10793		jQuery.ready( true );
10794	}
10795};
10796jQuery.isArray = Array.isArray;
10797jQuery.parseJSON = JSON.parse;
10798jQuery.nodeName = nodeName;
10799jQuery.isFunction = isFunction;
10800jQuery.isWindow = isWindow;
10801jQuery.camelCase = camelCase;
10802jQuery.type = toType;
10803
10804jQuery.now = Date.now;
10805
10806jQuery.isNumeric = function( obj ) {
10807
10808	// As of jQuery 3.0, isNumeric is limited to
10809	// strings and numbers (primitives or objects)
10810	// that can be coerced to finite numbers (gh-2662)
10811	var type = jQuery.type( obj );
10812	return ( type === "number" || type === "string" ) &&
10813
10814		// parseFloat NaNs numeric-cast false positives ("")
10815		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
10816		// subtraction forces infinities to NaN
10817		!isNaN( obj - parseFloat( obj ) );
10818};
10819
10820jQuery.trim = function( text ) {
10821	return text == null ?
10822		"" :
10823		( text + "" ).replace( rtrim, "" );
10824};
10825
10826
10827
10828// Register as a named AMD module, since jQuery can be concatenated with other
10829// files that may use define, but not via a proper concatenation script that
10830// understands anonymous AMD modules. A named AMD is safest and most robust
10831// way to register. Lowercase jquery is used because AMD module names are
10832// derived from file names, and jQuery is normally delivered in a lowercase
10833// file name. Do this after creating the global so that if an AMD module wants
10834// to call noConflict to hide this version of jQuery, it will work.
10835
10836// Note that for maximum portability, libraries that are not jQuery should
10837// declare themselves as anonymous modules, and avoid setting a global if an
10838// AMD loader is present. jQuery is a special case. For more information, see
10839// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
10840
10841if ( typeof define === "function" && define.amd ) {
10842	define( "jquery", [], function() {
10843		return jQuery;
10844	} );
10845}
10846
10847
10848
10849
10850var
10851
10852	// Map over jQuery in case of overwrite
10853	_jQuery = window.jQuery,
10854
10855	// Map over the $ in case of overwrite
10856	_$ = window.$;
10857
10858jQuery.noConflict = function( deep ) {
10859	if ( window.$ === jQuery ) {
10860		window.$ = _$;
10861	}
10862
10863	if ( deep && window.jQuery === jQuery ) {
10864		window.jQuery = _jQuery;
10865	}
10866
10867	return jQuery;
10868};
10869
10870// Expose jQuery and $ identifiers, even in AMD
10871// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
10872// and CommonJS for browser emulators (#13566)
10873if ( typeof noGlobal === "undefined" ) {
10874	window.jQuery = window.$ = jQuery;
10875}
10876
10877
10878
10879
10880return jQuery;
10881} );
10882
vendor: 31,678 bytes, lines 10883-11754
10883/*!
10884 * jQuery & Zepto Lazy - v1.7.10
10885 * http://jquery.eisbehr.de/lazy/
10886 *
10887 * Copyright 2012 - 2018, Daniel 'Eisbehr' Kern
10888 *
10889 * Dual licensed under the MIT and GPL-2.0 licenses:
10890 * http://www.opensource.org/licenses/mit-license.php
10891 * http://www.gnu.org/licenses/gpl-2.0.html
10892 *
10893 * $("img.lazy").lazy();
10894 */
10895
10896;(function(window, undefined) {
10897    "use strict";
10898
10899    // noinspection JSUnresolvedVariable
10900    /**
10901     * library instance - here and not in construct to be shorter in minimization
10902     * @return void
10903     */
10904    var $ = window.jQuery || window.Zepto,
10905
10906    /**
10907     * unique plugin instance id counter
10908     * @type {number}
10909     */
10910    lazyInstanceId = 0,
10911
10912    /**
10913     * helper to register window load for jQuery 3
10914     * @type {boolean}
10915     */    
10916    windowLoaded = false;
10917
10918    /**
10919     * make lazy available to jquery - and make it a bit more case-insensitive :)
10920     * @access public
10921     * @type {function}
10922     * @param {object} settings
10923     * @return {LazyPlugin}
10924     */
10925    $.fn.Lazy = $.fn.lazy = function(settings) {
10926        return new LazyPlugin(this, settings);
10927    };
10928
10929    /**
10930     * helper to add plugins to lazy prototype configuration
10931     * @access public
10932     * @type {function}
10933     * @param {string|Array} names
10934     * @param {string|Array|function} [elements]
10935     * @param {function} loader
10936     * @return void
10937     */
10938    $.Lazy = $.lazy = function(names, elements, loader) {
10939        // make second parameter optional
10940        if ($.isFunction(elements)) {
10941            loader = elements;
10942            elements = [];
10943        }
10944
10945        // exit here if parameter is not a callable function
10946        if (!$.isFunction(loader)) {
10947            return;
10948        }
10949
10950        // make parameters an array of names to be sure
10951        names = $.isArray(names) ? names : [names];
10952        elements = $.isArray(elements) ? elements : [elements];
10953
10954        var config = LazyPlugin.prototype.config,
10955            forced = config._f || (config._f = {});
10956
10957        // add the loader plugin for every name
10958        for (var i = 0, l = names.length; i < l; i++) {
10959            if (config[names[i]] === undefined || $.isFunction(config[names[i]])) {
10960                config[names[i]] = loader;
10961            }
10962        }
10963
10964        // add forced elements loader
10965        for (var c = 0, a = elements.length; c < a; c++) {
10966            forced[elements[c]] = names[0];
10967        }
10968    };
10969
10970    /**
10971     * contains all logic and the whole element handling
10972     * is packed in a private function outside class to reduce memory usage, because it will not be created on every plugin instance
10973     * @access private
10974     * @type {function}
10975     * @param {LazyPlugin} instance
10976     * @param {object} config
10977     * @param {object|Array} items
10978     * @param {object} events
10979     * @param {string} namespace
10980     * @return void
10981     */
10982    function _executeLazy(instance, config, items, events, namespace) {
10983        /**
10984         * a helper to trigger the 'onFinishedAll' callback after all other events
10985         * @access private
10986         * @type {number}
10987         */
10988        var _awaitingAfterLoad = 0,
10989
10990        /**
10991         * visible content width
10992         * @access private
10993         * @type {number}
10994         */
10995        _actualWidth = -1,
10996
10997        /**
10998         * visible content height
10999         * @access private
11000         * @type {number}
11001         */
11002        _actualHeight = -1,
11003
11004        /**
11005         * determine possibly detected high pixel density
11006         * @access private
11007         * @type {boolean}
11008         */
11009        _isRetinaDisplay = false, 
11010
11011        /**
11012         * dictionary entry for better minimization
11013         * @access private
11014         * @type {string}
11015         */
11016        _afterLoad = 'afterLoad',
11017
11018        /**
11019         * dictionary entry for better minimization
11020         * @access private
11021         * @type {string}
11022         */
11023        _load = 'load',
11024
11025        /**
11026         * dictionary entry for better minimization
11027         * @access private
11028         * @type {string}
11029         */
11030        _error = 'error',
11031
11032        /**
11033         * dictionary entry for better minimization
11034         * @access private
11035         * @type {string}
11036         */
11037        _img = 'img',
11038
11039        /**
11040         * dictionary entry for better minimization
11041         * @access private
11042         * @type {string}
11043         */
11044        _src = 'src',
11045
11046        /**
11047         * dictionary entry for better minimization
11048         * @access private
11049         * @type {string}
11050         */
11051        _srcset = 'srcset',
11052
11053        /**
11054         * dictionary entry for better minimization
11055         * @access private
11056         * @type {string}
11057         */
11058        _sizes = 'sizes',
11059
11060        /**
11061         * dictionary entry for better minimization
11062         * @access private
11063         * @type {string}
11064         */
11065        _backgroundImage = 'background-image';
11066
11067        /**
11068         * initialize plugin
11069         * bind loading to events or set delay time to load all items at once
11070         * @access private
11071         * @return void
11072         */
11073        function _initialize() {
11074            // detect actual device pixel ratio
11075            // noinspection JSUnresolvedVariable
11076            _isRetinaDisplay = window.devicePixelRatio > 1;
11077
11078            // prepare all initial items
11079            items = _prepareItems(items);
11080
11081            // if delay time is set load all items at once after delay time
11082            if (config.delay >= 0) {
11083                setTimeout(function() {
11084                    _lazyLoadItems(true);
11085                }, config.delay);
11086            }
11087
11088            // if no delay is set or combine usage is active bind events
11089            if (config.delay < 0 || config.combined) {
11090                // create unique event function
11091                events.e = _throttle(config.throttle, function(event) {
11092                    // reset detected window size on resize event
11093                    if (event.type === 'resize') {
11094                        _actualWidth = _actualHeight = -1;
11095                    }
11096
11097                    // execute 'lazy magic'
11098                    _lazyLoadItems(event.all);
11099                });
11100
11101                // create function to add new items to instance
11102                events.a = function(additionalItems) {
11103                    additionalItems = _prepareItems(additionalItems);
11104                    items.push.apply(items, additionalItems);
11105                };
11106
11107                // create function to get all instance items left
11108                events.g = function() {
11109                    // filter loaded items before return in case internal filter was not running until now
11110                    return (items = $(items).filter(function() {
11111                        return !$(this).data(config.loadedName);
11112                    }));
11113                };
11114
11115                // create function to force loading elements
11116                events.f = function(forcedItems) {
11117                    for (var i = 0; i < forcedItems.length; i++) {
11118                        // only handle item if available in current instance
11119                        // use a compare function, because Zepto can't handle object parameter for filter
11120                        // var item = items.filter(forcedItems[i]);
11121                        /* jshint loopfunc: true */
11122                        var item = items.filter(function() {
11123                            return this === forcedItems[i];
11124                        });
11125
11126                        if (item.length) {
11127                            _lazyLoadItems(false, item);   
11128                        }
11129                    }
11130                };
11131
11132                // load initial items
11133                _lazyLoadItems();
11134
11135                // bind lazy load functions to scroll and resize event
11136                // noinspection JSUnresolvedVariable
11137                $(config.appendScroll).on('scroll.' + namespace + ' resize.' + namespace, events.e);
11138            }
11139        }
11140
11141        /**
11142         * prepare items before handle them
11143         * @access private
11144         * @param {Array|object|jQuery} items
11145         * @return {Array|object|jQuery}
11146         */
11147        function _prepareItems(items) {
11148            // fetch used configurations before loops
11149            var defaultImage = config.defaultImage,
11150                placeholder = config.placeholder,
11151                imageBase = config.imageBase,
11152                srcsetAttribute = config.srcsetAttribute,
11153                loaderAttribute = config.loaderAttribute,
11154                forcedTags = config._f || {};
11155
11156            // filter items and only add those who not handled yet and got needed attributes available
11157            items = $(items).filter(function() {
11158                var element = $(this),
11159                    tag = _getElementTagName(this);
11160
11161                return !element.data(config.handledName) && 
11162                       (element.attr(config.attribute) || element.attr(srcsetAttribute) || element.attr(loaderAttribute) || forcedTags[tag] !== undefined);
11163            })
11164
11165            // append plugin instance to all elements
11166            .data('plugin_' + config.name, instance);
11167
11168            for (var i = 0, l = items.length; i < l; i++) {
11169                var element = $(items[i]),
11170                    tag = _getElementTagName(items[i]),
11171                    elementImageBase = element.attr(config.imageBaseAttribute) || imageBase;
11172
11173                // generate and update source set if an image base is set
11174                if (tag === _img && elementImageBase && element.attr(srcsetAttribute)) {
11175                    element.attr(srcsetAttribute, _getCorrectedSrcSet(element.attr(srcsetAttribute), elementImageBase));
11176                }
11177
11178                // add loader to forced element types
11179                if (forcedTags[tag] !== undefined && !element.attr(loaderAttribute)) {
11180                    element.attr(loaderAttribute, forcedTags[tag]);
11181                }
11182
11183                // set default image on every element without source
11184                if (tag === _img && defaultImage && !element.attr(_src)) {
11185                    element.attr(_src, defaultImage);
11186                }
11187
11188                // set placeholder on every element without background image
11189                else if (tag !== _img && placeholder && (!element.css(_backgroundImage) || element.css(_backgroundImage) === 'none')) {
11190                    element.css(_backgroundImage, "url('" + placeholder + "')");
11191                }
11192            }
11193
11194            return items;
11195        }
11196
11197        /**
11198         * the 'lazy magic' - check all items
11199         * @access private
11200         * @param {boolean} [allItems]
11201         * @param {object} [forced]
11202         * @return void
11203         */
11204        function _lazyLoadItems(allItems, forced) {
11205            // skip if no items where left
11206            if (!items.length) {
11207                // destroy instance if option is enabled
11208                if (config.autoDestroy) {
11209                    // noinspection JSUnresolvedFunction
11210                    instance.destroy();
11211                }
11212
11213                return;
11214            }
11215
11216            var elements = forced || items,
11217                loadTriggered = false,
11218                imageBase = config.imageBase || '',
11219                srcsetAttribute = config.srcsetAttribute,
11220                handledName = config.handledName;
11221
11222            // loop all available items
11223            for (var i = 0; i < elements.length; i++) {
11224                // item is at least in loadable area
11225                if (allItems || forced || _isInLoadableArea(elements[i])) {
11226                    var element = $(elements[i]),
11227                        tag = _getElementTagName(elements[i]),
11228                        attribute = element.attr(config.attribute),
11229                        elementImageBase = element.attr(config.imageBaseAttribute) || imageBase,
11230                        customLoader = element.attr(config.loaderAttribute);
11231
11232                        // is not already handled 
11233                    if (!element.data(handledName) &&
11234                        // and is visible or visibility doesn't matter
11235                        (!config.visibleOnly || element.is(':visible')) && (
11236                        // and image source or source set attribute is available
11237                        (attribute || element.attr(srcsetAttribute)) && (
11238                            // and is image tag where attribute is not equal source or source set
11239                            (tag === _img && (elementImageBase + attribute !== element.attr(_src) || element.attr(srcsetAttribute) !== element.attr(_srcset))) ||
11240                            // or is non image tag where attribute is not equal background
11241                            (tag !== _img && elementImageBase + attribute !== element.css(_backgroundImage))
11242                        ) ||
11243                        // or custom loader is available
11244                        customLoader))
11245                    {
11246                        // mark element always as handled as this point to prevent double handling
11247                        loadTriggered = true;
11248                        element.data(handledName, true);
11249
11250                        // load item
11251                        _handleItem(element, tag, elementImageBase, customLoader);
11252                    }
11253                }
11254            }
11255
11256            // when something was loaded remove them from remaining items
11257            if (loadTriggered) {
11258                items = $(items).filter(function() {
11259                    return !$(this).data(handledName);
11260                });
11261            }
11262        }
11263
11264        /**
11265         * load the given element the lazy way
11266         * @access private
11267         * @param {object} element
11268         * @param {string} tag
11269         * @param {string} imageBase
11270         * @param {function} [customLoader]
11271         * @return void
11272         */
11273        function _handleItem(element, tag, imageBase, customLoader) {
11274            // increment count of items waiting for after load
11275            ++_awaitingAfterLoad;
11276
11277            // extended error callback for correct 'onFinishedAll' handling
11278            var errorCallback = function() {
11279                _triggerCallback('onError', element);
11280                _reduceAwaiting();
11281
11282                // prevent further callback calls
11283                errorCallback = $.noop;
11284            };
11285
11286            // trigger function before loading image
11287            _triggerCallback('beforeLoad', element);
11288
11289            // fetch all double used data here for better code minimization
11290            var srcAttribute = config.attribute,
11291                srcsetAttribute = config.srcsetAttribute,
11292                sizesAttribute = config.sizesAttribute,
11293                retinaAttribute = config.retinaAttribute,
11294                removeAttribute = config.removeAttribute,
11295                loadedName = config.loadedName,
11296                elementRetina = element.attr(retinaAttribute);
11297
11298            // handle custom loader
11299            if (customLoader) {
11300                // on load callback
11301                var loadCallback = function() {
11302                    // remove attribute from element
11303                    if (removeAttribute) {
11304                        element.removeAttr(config.loaderAttribute);
11305                    }
11306
11307                    // mark element as loaded
11308                    element.data(loadedName, true);
11309
11310                    // call after load event
11311                    _triggerCallback(_afterLoad, element);
11312
11313                    // remove item from waiting queue and possibly trigger finished event
11314                    // it's needed to be asynchronous to run after filter was in _lazyLoadItems
11315                    setTimeout(_reduceAwaiting, 1);
11316
11317                    // prevent further callback calls
11318                    loadCallback = $.noop;
11319                };
11320
11321                // bind error event to trigger callback and reduce waiting amount
11322                element.off(_error).one(_error, errorCallback)
11323
11324                // bind after load callback to element
11325                .one(_load, loadCallback);
11326
11327                // trigger custom loader and handle response
11328                if (!_triggerCallback(customLoader, element, function(response) {
11329                    if(response) {
11330                        element.off(_load);
11331                        loadCallback();
11332                    }
11333                    else {
11334                        element.off(_error);
11335                        errorCallback();
11336                    }
11337                })) {
11338                    element.trigger(_error);
11339                }
11340            }
11341
11342            // handle images
11343            else {
11344                // create image object
11345                var imageObj = $(new Image());
11346
11347                // bind error event to trigger callback and reduce waiting amount
11348                imageObj.one(_error, errorCallback)
11349
11350                // bind after load callback to image
11351                .one(_load, function() {
11352                    // remove element from view
11353                    element.hide();
11354
11355                    // set image back to element
11356                    // do it as single 'attr' calls, to be sure 'src' is set after 'srcset'
11357                    if (tag === _img) {
11358                        element.attr(_sizes, imageObj.attr(_sizes))
11359                               .attr(_srcset, imageObj.attr(_srcset))
11360                               .attr(_src, imageObj.attr(_src));
11361                    }
11362                    else {
11363                        element.css(_backgroundImage, "url('" + imageObj.attr(_src) + "')");
11364                    }
11365
11366                    // bring it back with some effect!
11367                    element[config.effect](config.effectTime);
11368
11369                    // remove attribute from element
11370                    if (removeAttribute) {
11371                        element.removeAttr(srcAttribute + ' ' + srcsetAttribute + ' ' + retinaAttribute + ' ' + config.imageBaseAttribute);
11372
11373                        // only remove 'sizes' attribute, if it was a custom one
11374                        if (sizesAttribute !== _sizes) {
11375                            element.removeAttr(sizesAttribute);
11376                        }
11377                    }
11378
11379                    // mark element as loaded
11380                    element.data(loadedName, true);
11381
11382                    // call after load event
11383                    _triggerCallback(_afterLoad, element);
11384
11385                    // cleanup image object
11386                    imageObj.remove();
11387
11388                    // remove item from waiting queue and possibly trigger finished event
11389                    _reduceAwaiting();
11390                });
11391
11392                // set sources
11393                // do it as single 'attr' calls, to be sure 'src' is set after 'srcset'
11394                var imageSrc = (_isRetinaDisplay && elementRetina ? elementRetina : element.attr(srcAttribute)) || '';
11395                imageObj.attr(_sizes, element.attr(sizesAttribute))
11396                        .attr(_srcset, element.attr(srcsetAttribute))
11397                        .attr(_src, imageSrc ? imageBase + imageSrc : null);
11398
11399                // call after load even on cached image
11400                imageObj.complete && imageObj.trigger(_load); // jshint ignore : line
11401            }
11402        }
11403
11404        /**
11405         * check if the given element is inside the current viewport or threshold
11406         * @access private
11407         * @param {object} element
11408         * @return {boolean}
11409         */
11410        function _isInLoadableArea(element) {
11411            var elementBound = element.getBoundingClientRect(),
11412                direction    = config.scrollDirection,
11413                threshold    = config.threshold,
11414                vertical     = // check if element is in loadable area from top
11415                               ((_getActualHeight() + threshold) > elementBound.top) &&
11416                               // check if element is even in loadable are from bottom
11417                               (-threshold < elementBound.bottom),
11418                horizontal   = // check if element is in loadable area from left
11419                               ((_getActualWidth() + threshold) > elementBound.left) &&
11420                               // check if element is even in loadable area from right
11421                               (-threshold < elementBound.right);
11422
11423            if (direction === 'vertical') {
11424                return vertical;
11425            }
11426            else if (direction === 'horizontal') {
11427                return horizontal;
11428            }
11429
11430            return vertical && horizontal;
11431        }
11432
11433        /**
11434         * receive the current viewed width of the browser
11435         * @access private
11436         * @return {number}
11437         */
11438        function _getActualWidth() {
11439            return _actualWidth >= 0 ? _actualWidth : (_actualWidth = $(window).width());
11440        }
11441
11442        /**
11443         * receive the current viewed height of the browser
11444         * @access private
11445         * @return {number}
11446         */
11447        function _getActualHeight() {
11448            return _actualHeight >= 0 ? _actualHeight : (_actualHeight = $(window).height());
11449        }
11450
11451        /**
11452         * get lowercase tag name of an element
11453         * @access private
11454         * @param {object} element
11455         * @returns {string}
11456         */
11457        function _getElementTagName(element) {
11458            return element.tagName.toLowerCase();
11459        }
11460
11461        /**
11462         * prepend image base to all srcset entries
11463         * @access private
11464         * @param {string} srcset
11465         * @param {string} imageBase
11466         * @returns {string}
11467         */
11468        function _getCorrectedSrcSet(srcset, imageBase) {
11469            if (imageBase) {
11470                // trim, remove unnecessary spaces and split entries
11471                var entries = srcset.split(',');
11472                srcset = '';
11473
11474                for (var i = 0, l = entries.length; i < l; i++) {
11475                    srcset += imageBase + entries[i].trim() + (i !== l - 1 ? ',' : '');
11476                }
11477            }
11478
11479            return srcset;
11480        }
11481
11482        /**
11483         * helper function to throttle down event triggering
11484         * @access private
11485         * @param {number} delay
11486         * @param {function} callback
11487         * @return {function}
11488         */
11489        function _throttle(delay, callback) {
11490            var timeout,
11491                lastExecute = 0;
11492
11493            return function(event, ignoreThrottle) {
11494                var elapsed = +new Date() - lastExecute;
11495
11496                function run() {
11497                    lastExecute = +new Date();
11498                    // noinspection JSUnresolvedFunction
11499                    callback.call(instance, event);
11500                }
11501
11502                timeout && clearTimeout(timeout); // jshint ignore : line
11503
11504                if (elapsed > delay || !config.enableThrottle || ignoreThrottle) {
11505                    run();
11506                }
11507                else {
11508                    timeout = setTimeout(run, delay - elapsed);
11509                }
11510            };
11511        }
11512
11513        /**
11514         * reduce count of awaiting elements to 'afterLoad' event and fire 'onFinishedAll' if reached zero
11515         * @access private
11516         * @return void
11517         */
11518        function _reduceAwaiting() {
11519            --_awaitingAfterLoad;
11520
11521            // if no items were left trigger finished event
11522            if (!items.length && !_awaitingAfterLoad) {
11523                _triggerCallback('onFinishedAll');
11524            }
11525        }
11526
11527        /**
11528         * single implementation to handle callbacks, pass element and set 'this' to current instance
11529         * @access private
11530         * @param {string|function} callback
11531         * @param {object} [element]
11532         * @param {*} [args]
11533         * @return {boolean}
11534         */
11535        function _triggerCallback(callback, element, args) {
11536            if ((callback = config[callback])) {
11537                // jQuery's internal '$(arguments).slice(1)' are causing problems at least on old iPads
11538                // below is shorthand of 'Array.prototype.slice.call(arguments, 1)'
11539                callback.apply(instance, [].slice.call(arguments, 1));
11540                return true;
11541            }
11542
11543            return false;
11544        }
11545
11546        // if event driven or window is already loaded don't wait for page loading
11547        if (config.bind === 'event' || windowLoaded) {
11548            _initialize();
11549        }
11550
11551        // otherwise load initial items and start lazy after page load
11552        else {
11553            // noinspection JSUnresolvedVariable
11554            $(window).on(_load + '.' + namespace, _initialize);
11555        }  
11556    }
11557
11558    /**
11559     * lazy plugin class constructor
11560     * @constructor
11561     * @access private
11562     * @param {object} elements
11563     * @param {object} settings
11564     * @return {object|LazyPlugin}
11565     */
11566    function LazyPlugin(elements, settings) {
11567        /**
11568         * this lazy plugin instance
11569         * @access private
11570         * @type {object|LazyPlugin|LazyPlugin.prototype}
11571         */
11572        var _instance = this,
11573
11574        /**
11575         * this lazy plugin instance configuration
11576         * @access private
11577         * @type {object}
11578         */
11579        _config = $.extend({}, _instance.config, settings),
11580
11581        /**
11582         * instance generated event executed on container scroll or resize
11583         * packed in an object to be referenceable and short named because properties will not be minified
11584         * @access private
11585         * @type {object}
11586         */
11587        _events = {},
11588
11589        /**
11590         * unique namespace for instance related events
11591         * @access private
11592         * @type {string}
11593         */
11594        _namespace = _config.name + '-' + (++lazyInstanceId);
11595
11596        // noinspection JSUndefinedPropertyAssignment
11597        /**
11598         * wrapper to get or set an entry from plugin instance configuration
11599         * much smaller on minify as direct access
11600         * @access public
11601         * @type {function}
11602         * @param {string} entryName
11603         * @param {*} [value]
11604         * @return {LazyPlugin|*}
11605         */
11606        _instance.config = function(entryName, value) {
11607            if (value === undefined) {
11608                return _config[entryName];
11609            }
11610
11611            _config[entryName] = value;
11612            return _instance;
11613        };
11614
11615        // noinspection JSUndefinedPropertyAssignment
11616        /**
11617         * add additional items to current instance
11618         * @access public
11619         * @param {Array|object|string} items
11620         * @return {LazyPlugin}
11621         */
11622        _instance.addItems = function(items) {
11623            _events.a && _events.a($.type(items) === 'string' ? $(items) : items); // jshint ignore : line
11624            return _instance;
11625        };
11626
11627        // noinspection JSUndefinedPropertyAssignment
11628        /**
11629         * get all left items of this instance
11630         * @access public
11631         * @returns {object}
11632         */
11633        _instance.getItems = function() {
11634            return _events.g ? _events.g() : {};
11635        };
11636
11637        // noinspection JSUndefinedPropertyAssignment
11638        /**
11639         * force lazy to load all items in loadable area right now
11640         * by default without throttle
11641         * @access public
11642         * @type {function}
11643         * @param {boolean} [useThrottle]
11644         * @return {LazyPlugin}
11645         */
11646        _instance.update = function(useThrottle) {
11647            _events.e && _events.e({}, !useThrottle); // jshint ignore : line
11648            return _instance;
11649        };
11650
11651        // noinspection JSUndefinedPropertyAssignment
11652        /**
11653         * force element(s) to load directly, ignoring the viewport
11654         * @access public
11655         * @param {Array|object|string} items
11656         * @return {LazyPlugin}
11657         */
11658        _instance.force = function(items) {
11659            _events.f && _events.f($.type(items) === 'string' ? $(items) : items); // jshint ignore : line
11660            return _instance;
11661        };
11662
11663        // noinspection JSUndefinedPropertyAssignment
11664        /**
11665         * force lazy to load all available items right now
11666         * this call ignores throttling
11667         * @access public
11668         * @type {function}
11669         * @return {LazyPlugin}
11670         */
11671        _instance.loadAll = function() {
11672            _events.e && _events.e({all: true}, true); // jshint ignore : line
11673            return _instance;
11674        };
11675
11676        // noinspection JSUndefinedPropertyAssignment
11677        /**
11678         * destroy this plugin instance
11679         * @access public
11680         * @type {function}
11681         * @return undefined
11682         */
11683        _instance.destroy = function() {
11684            // unbind instance generated events
11685            // noinspection JSUnresolvedFunction, JSUnresolvedVariable
11686            $(_config.appendScroll).off('.' + _namespace, _events.e);
11687            // noinspection JSUnresolvedVariable
11688            $(window).off('.' + _namespace);
11689
11690            // clear events
11691            _events = {};
11692
11693            return undefined;
11694        };
11695
11696        // start using lazy and return all elements to be chainable or instance for further use
11697        // noinspection JSUnresolvedVariable
11698        _executeLazy(_instance, _config, elements, _events, _namespace);
11699        return _config.chainable ? elements : _instance;
11700    }
11701
11702    /**
11703     * settings and configuration data
11704     * @access public
11705     * @type {object|*}
11706     */
11707    LazyPlugin.prototype.config = {
11708        // general
11709        name               : 'lazy',
11710        chainable          : true,
11711        autoDestroy        : true,
11712        bind               : 'load',
11713        threshold          : 500,
11714        visibleOnly        : false,
11715        appendScroll       : window,
11716        scrollDirection    : 'both',
11717        imageBase          : null,
11718        defaultImage       : 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',
11719        placeholder        : null,
11720        delay              : -1,
11721        combined           : false,
11722
11723        // attributes
11724        attribute          : 'data-src',
11725        srcsetAttribute    : 'data-srcset',
11726        sizesAttribute     : 'data-sizes',
11727        retinaAttribute    : 'data-retina',
11728        loaderAttribute    : 'data-loader',
11729        imageBaseAttribute : 'data-imagebase',
11730        removeAttribute    : true,
11731        handledName        : 'handled',
11732        loadedName         : 'loaded',
11733
11734        // effect
11735        effect             : 'show',
11736        effectTime         : 0,
11737
11738        // throttle
11739        enableThrottle     : true,
11740        throttle           : 250,
11741
11742        // callbacks
11743        beforeLoad         : undefined,
11744        afterLoad          : undefined,
11745        onError            : undefined,
11746        onFinishedAll      : undefined
11747    };
11748
11749    // register window load event globally to prevent not loading elements
11750    // since jQuery 3.X ready state is fully async and may be executed after 'load' 
11751    $(window).on('load', function() {
11752        windowLoaded = true;
11753    });
11754})(window);
vendor: 16,411 bytes, lines 11754-12325
11754
11755function loadResource(filename, fileType, callback) {
11756    var fileRef = null;
11757
11758    if (fileType === "js") { //if filename is a external JavaScript file
11759        fileRef = document.createElement('script');
11760        fileRef.setAttribute("type","text/javascript");
11761        fileRef.setAttribute("src", filename);
11762    }
11763    else if (fileType === "css") { //if filename is an external CSS file
11764        fileRef = document.createElement("link");
11765        fileRef.setAttribute("rel", "stylesheet");
11766        fileRef.setAttribute("type", "text/css");
11767        fileRef.setAttribute("href", filename);
11768    }
11769
11770    if (typeof fileRef === "undefined" || fileRef === null) {
11771        return
11772    }
11773
11774    if (callback) {
11775        fileRef.addEventListener('load', callback);
11776    }
11777
11778    document.getElementsByTagName("head")[0].appendChild(fileRef);
11779}
11780/**
11781 * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).
11782 * @version v5.2.10
11783 * @link https://github.com/ten1seven/what-input
11784 * @license MIT
11785 */
11786(function webpackUniversalModuleDefinition(root, factory) {
11787	if(typeof exports === 'object' && typeof module === 'object')
11788		module.exports = factory();
11789	else if(typeof define === 'function' && define.amd)
11790		define("whatInput", [], factory);
11791	else if(typeof exports === 'object')
11792		exports["whatInput"] = factory();
11793	else
11794		root["whatInput"] = factory();
11795})(this, function() {
11796return /******/ (function(modules) { // webpackBootstrap
11797/******/ 	// The module cache
11798/******/ 	var installedModules = {};
11799
11800/******/ 	// The require function
11801/******/ 	function __webpack_require__(moduleId) {
11802
11803/******/ 		// Check if module is in cache
11804/******/ 		if(installedModules[moduleId])
11805/******/ 			return installedModules[moduleId].exports;
11806
11807/******/ 		// Create a new module (and put it into the cache)
11808/******/ 		var module = installedModules[moduleId] = {
11809/******/ 			exports: {},
11810/******/ 			id: moduleId,
11811/******/ 			loaded: false
11812/******/ 		};
11813
11814/******/ 		// Execute the module function
11815/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
11816
11817/******/ 		// Flag the module as loaded
11818/******/ 		module.loaded = true;
11819
11820/******/ 		// Return the exports of the module
11821/******/ 		return module.exports;
11822/******/ 	}
11823
11824
11825/******/ 	// expose the modules object (__webpack_modules__)
11826/******/ 	__webpack_require__.m = modules;
11827
11828/******/ 	// expose the module cache
11829/******/ 	__webpack_require__.c = installedModules;
11830
11831/******/ 	// __webpack_public_path__
11832/******/ 	__webpack_require__.p = "";
11833
11834/******/ 	// Load entry module and return exports
11835/******/ 	return __webpack_require__(0);
11836/******/ })
11837/************************************************************************/
11838/******/ ([
11839/* 0 */
11840/***/ (function(module, exports) {
11841
11842	'use strict';
11843
11844	module.exports = function () {
11845	  /*
11846	   * bail out if there is no document or window
11847	   * (i.e. in a node/non-DOM environment)
11848	   *
11849	   * Return a stubbed API instead
11850	   */
11851	  if (typeof document === 'undefined' || typeof window === 'undefined') {
11852	    return {
11853	      // always return "initial" because no interaction will ever be detected
11854	      ask: function ask() {
11855	        return 'initial';
11856	      },
11857
11858	      // always return null
11859	      element: function element() {
11860	        return null;
11861	      },
11862
11863	      // no-op
11864	      ignoreKeys: function ignoreKeys() {},
11865
11866	      // no-op
11867	      specificKeys: function specificKeys() {},
11868
11869	      // no-op
11870	      registerOnChange: function registerOnChange() {},
11871
11872	      // no-op
11873	      unRegisterOnChange: function unRegisterOnChange() {}
11874	    };
11875	  }
11876
11877	  /*
11878	   * variables
11879	   */
11880
11881	  // cache document.documentElement
11882	  var docElem = document.documentElement;
11883
11884	  // currently focused dom element
11885	  var currentElement = null;
11886
11887	  // last used input type
11888	  var currentInput = 'initial';
11889
11890	  // last used input intent
11891	  var currentIntent = currentInput;
11892
11893	  // UNIX timestamp of current event
11894	  var currentTimestamp = Date.now();
11895
11896	  // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`
11897	  var shouldPersist = 'false';
11898
11899	  // form input types
11900	  var formInputs = ['button', 'input', 'select', 'textarea'];
11901
11902	  // empty array for holding callback functions
11903	  var functionList = [];
11904
11905	  // list of modifier keys commonly used with the mouse and
11906	  // can be safely ignored to prevent false keyboard detection
11907	  var ignoreMap = [16, // shift
11908	  17, // control
11909	  18, // alt
11910	  91, // Windows key / left Apple cmd
11911	  93 // Windows menu / right Apple cmd
11912	  ];
11913
11914	  var specificMap = [];
11915
11916	  // mapping of events to input types
11917	  var inputMap = {
11918	    keydown: 'keyboard',
11919	    keyup: 'keyboard',
11920	    mousedown: 'mouse',
11921	    mousemove: 'mouse',
11922	    MSPointerDown: 'pointer',
11923	    MSPointerMove: 'pointer',
11924	    pointerdown: 'pointer',
11925	    pointermove: 'pointer',
11926	    touchstart: 'touch',
11927	    touchend: 'touch'
11928
11929	    // boolean: true if the page is being scrolled
11930	  };var isScrolling = false;
11931
11932	  // store current mouse position
11933	  var mousePos = {
11934	    x: null,
11935	    y: null
11936
11937	    // map of IE 10 pointer events
11938	  };var pointerMap = {
11939	    2: 'touch',
11940	    3: 'touch', // treat pen like touch
11941	    4: 'mouse'
11942
11943	    // check support for passive event listeners
11944	  };var supportsPassive = false;
11945
11946	  try {
11947	    var opts = Object.defineProperty({}, 'passive', {
11948	      get: function get() {
11949	        supportsPassive = true;
11950	      }
11951	    });
11952
11953	    window.addEventListener('test', null, opts);
11954	  } catch (e) {}
11955	  // fail silently
11956
11957
11958	  /*
11959	   * set up
11960	   */
11961
11962	  var setUp = function setUp() {
11963	    // add correct mouse wheel event mapping to `inputMap`
11964	    inputMap[detectWheel()] = 'mouse';
11965
11966	    addListeners();
11967	  };
11968
11969	  /*
11970	   * events
11971	   */
11972
11973	  var addListeners = function addListeners() {
11974	    // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding
11975	    // can only demonstrate potential, but not actual, interaction
11976	    // and are treated separately
11977	    var options = supportsPassive ? { passive: true } : false;
11978
11979	    document.addEventListener('DOMContentLoaded', setPersist);
11980
11981	    // pointer events (mouse, pen, touch)
11982	    if (window.PointerEvent) {
11983	      window.addEventListener('pointerdown', setInput);
11984	      window.addEventListener('pointermove', setIntent);
11985	    } else if (window.MSPointerEvent) {
11986	      window.addEventListener('MSPointerDown', setInput);
11987	      window.addEventListener('MSPointerMove', setIntent);
11988	    } else {
11989	      // mouse events
11990	      window.addEventListener('mousedown', setInput);
11991	      window.addEventListener('mousemove', setIntent);
11992
11993	      // touch events
11994	      if ('ontouchstart' in window) {
11995	        window.addEventListener('touchstart', setInput, options);
11996	        window.addEventListener('touchend', setInput);
11997	      }
11998	    }
11999
12000	    // mouse wheel
12001	    window.addEventListener(detectWheel(), setIntent, options);
12002
12003	    // keyboard events
12004	    window.addEventListener('keydown', setInput);
12005	    window.addEventListener('keyup', setInput);
12006
12007	    // focus events
12008	    window.addEventListener('focusin', setElement);
12009	    window.addEventListener('focusout', clearElement);
12010	  };
12011
12012	  // checks if input persistence should happen and
12013	  // get saved state from session storage if true (defaults to `false`)
12014	  var setPersist = function setPersist() {
12015	    shouldPersist = !(docElem.getAttribute('data-whatpersist') || document.body.getAttribute('data-whatpersist') === 'false');
12016
12017	    if (shouldPersist) {
12018	      // check for session variables and use if available
12019	      try {
12020	        if (window.sessionStorage.getItem('what-input')) {
12021	          currentInput = window.sessionStorage.getItem('what-input');
12022	        }
12023
12024	        if (window.sessionStorage.getItem('what-intent')) {
12025	          currentIntent = window.sessionStorage.getItem('what-intent');
12026	        }
12027	      } catch (e) {
12028	        // fail silently
12029	      }
12030	    }
12031
12032	    // always run these so at least `initial` state is set
12033	    doUpdate('input');
12034	    doUpdate('intent');
12035	  };
12036
12037	  // checks conditions before updating new input
12038	  var setInput = function setInput(event) {
12039	    var eventKey = event.which;
12040	    var value = inputMap[event.type];
12041
12042	    if (value === 'pointer') {
12043	      value = pointerType(event);
12044	    }
12045
12046	    var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;
12047
12048	    var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;
12049
12050	    var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';
12051
12052	    // prevent touch detection from being overridden by event execution order
12053	    if (validateTouch(value)) {
12054	      shouldUpdate = false;
12055	    }
12056
12057	    if (shouldUpdate && currentInput !== value) {
12058	      currentInput = value;
12059
12060	      persistInput('input', currentInput);
12061	      doUpdate('input');
12062	    }
12063
12064	    if (shouldUpdate && currentIntent !== value) {
12065	      // preserve intent for keyboard interaction with form fields
12066	      var activeElem = document.activeElement;
12067	      var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));
12068
12069	      if (notFormInput) {
12070	        currentIntent = value;
12071
12072	        persistInput('intent', currentIntent);
12073	        doUpdate('intent');
12074	      }
12075	    }
12076	  };
12077
12078	  // updates the doc and `inputTypes` array with new input
12079	  var doUpdate = function doUpdate(which) {
12080	    docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);
12081
12082	    fireFunctions(which);
12083	  };
12084
12085	  // updates input intent for `mousemove` and `pointermove`
12086	  var setIntent = function setIntent(event) {
12087	    var value = inputMap[event.type];
12088
12089	    if (value === 'pointer') {
12090	      value = pointerType(event);
12091	    }
12092
12093	    // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove
12094	    detectScrolling(event);
12095
12096	    // only execute if scrolling isn't happening
12097	    if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {
12098	      currentIntent = value;
12099
12100	      persistInput('intent', currentIntent);
12101	      doUpdate('intent');
12102	    }
12103	  };
12104
12105	  var setElement = function setElement(event) {
12106	    if (!event.target.nodeName) {
12107	      // If nodeName is undefined, clear the element
12108	      // This can happen if click inside an <svg> element.
12109	      clearElement();
12110	      return;
12111	    }
12112
12113	    currentElement = event.target.nodeName.toLowerCase();
12114	    docElem.setAttribute('data-whatelement', currentElement);
12115
12116	    if (event.target.classList && event.target.classList.length) {
12117	      docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));
12118	    }
12119	  };
12120
12121	  var clearElement = function clearElement() {
12122	    currentElement = null;
12123
12124	    docElem.removeAttribute('data-whatelement');
12125	    docElem.removeAttribute('data-whatclasses');
12126	  };
12127
12128	  var persistInput = function persistInput(which, value) {
12129	    if (shouldPersist) {
12130	      try {
12131	        window.sessionStorage.setItem('what-' + which, value);
12132	      } catch (e) {
12133	        // fail silently
12134	      }
12135	    }
12136	  };
12137
12138	  /*
12139	   * utilities
12140	   */
12141
12142	  var pointerType = function pointerType(event) {
12143	    if (typeof event.pointerType === 'number') {
12144	      return pointerMap[event.pointerType];
12145	    } else {
12146	      // treat pen like touch
12147	      return event.pointerType === 'pen' ? 'touch' : event.pointerType;
12148	    }
12149	  };
12150
12151	  // prevent touch detection from being overridden by event execution order
12152	  var validateTouch = function validateTouch(value) {
12153	    var timestamp = Date.now();
12154
12155	    var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;
12156
12157	    currentTimestamp = timestamp;
12158
12159	    return touchIsValid;
12160	  };
12161
12162	  // detect version of mouse wheel event to use
12163	  // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event
12164	  var detectWheel = function detectWheel() {
12165	    var wheelType = null;
12166
12167	    // Modern browsers support "wheel"
12168	    if ('onwheel' in document.createElement('div')) {
12169	      wheelType = 'wheel';
12170	    } else {
12171	      // Webkit and IE support at least "mousewheel"
12172	      // or assume that remaining browsers are older Firefox
12173	      wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';
12174	    }
12175
12176	    return wheelType;
12177	  };
12178
12179	  // runs callback functions
12180	  var fireFunctions = function fireFunctions(type) {
12181	    for (var i = 0, len = functionList.length; i < len; i++) {
12182	      if (functionList[i].type === type) {
12183	        functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);
12184	      }
12185	    }
12186	  };
12187
12188	  // finds matching element in an object
12189	  var objPos = function objPos(match) {
12190	    for (var i = 0, len = functionList.length; i < len; i++) {
12191	      if (functionList[i].fn === match) {
12192	        return i;
12193	      }
12194	    }
12195	  };
12196
12197	  var detectScrolling = function detectScrolling(event) {
12198	    if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {
12199	      isScrolling = false;
12200
12201	      mousePos.x = event.screenX;
12202	      mousePos.y = event.screenY;
12203	    } else {
12204	      isScrolling = true;
12205	    }
12206	  };
12207
12208	  // manual version of `closest()`
12209	  var checkClosest = function checkClosest(elem, tag) {
12210	    var ElementPrototype = window.Element.prototype;
12211
12212	    if (!ElementPrototype.matches) {
12213	      ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;
12214	    }
12215
12216	    if (!ElementPrototype.closest) {
12217	      do {
12218	        if (elem.matches(tag)) {
12219	          return elem;
12220	        }
12221
12222	        elem = elem.parentElement || elem.parentNode;
12223	      } while (elem !== null && elem.nodeType === 1);
12224
12225	      return null;
12226	    } else {
12227	      return elem.closest(tag);
12228	    }
12229	  };
12230
12231	  /*
12232	   * init
12233	   */
12234
12235	  // don't start script unless browser cuts the mustard
12236	  // (also passes if polyfills are used)
12237	  if ('addEventListener' in window && Array.prototype.indexOf) {
12238	    setUp();
12239	  }
12240
12241	  /*
12242	   * api
12243	   */
12244
12245	  return {
12246	    // returns string: the current input type
12247	    // opt: 'intent'|'input'
12248	    // 'input' (default): returns the same value as the `data-whatinput` attribute
12249	    // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`
12250	    ask: function ask(opt) {
12251	      return opt === 'intent' ? currentIntent : currentInput;
12252	    },
12253
12254	    // returns string: the currently focused element or null
12255	    element: function element() {
12256	      return currentElement;
12257	    },
12258
12259	    // overwrites ignored keys with provided array
12260	    ignoreKeys: function ignoreKeys(arr) {
12261	      ignoreMap = arr;
12262	    },
12263
12264	    // overwrites specific char keys to update on
12265	    specificKeys: function specificKeys(arr) {
12266	      specificMap = arr;
12267	    },
12268
12269	    // attach functions to input and intent "events"
12270	    // funct: function to fire on change
12271	    // eventType: 'input'|'intent'
12272	    registerOnChange: function registerOnChange(fn, eventType) {
12273	      functionList.push({
12274	        fn: fn,
12275	        type: eventType || 'input'
12276	      });
12277	    },
12278
12279	    unRegisterOnChange: function unRegisterOnChange(fn) {
12280	      var position = objPos(fn);
12281
12282	      if (position || position === 0) {
12283	        functionList.splice(position, 1);
12284	      }
12285	    },
12286
12287	    clearStorage: function clearStorage() {
12288	      window.sessionStorage.clear();
12289	    }
12290	  };
12291	}();
12292
12293/***/ })
12294/******/ ])
12295});
12296;
12297/*
12298     _ _      _       _
12299 ___| (_) ___| | __  (_)___
12300/ __| | |/ __| |/ /  | / __|
12301\__ \ | | (__|   < _ | \__ \
12302|___/_|_|\___|_|\_(_)/ |___/
12303                   |__/
12304
12305 Version: 1.8.1
12306  Author: Ken Wheeler
12307 Website: http://kenwheeler.github.io
12308    Docs: http://kenwheeler.github.io/slick
12309    Repo: http://github.com/kenwheeler/slick
12310  Issues: http://github.com/kenwheeler/slick/issues
12311
12312 */
12313/* global window, document, define, jQuery, setInterval, clearInterval */
12314;(function(factory) {
12315    'use strict';
12316    if (typeof define === 'function' && define.amd) {
12317        define(['jquery'], factory);
12318    } else if (typeof exports !== 'undefined') {
12319        module.exports = factory(require('jquery'));
12320    } else {
12321        factory(jQuery);
12322    }
12323
12324}(function($) {
12325    'use strict';
vendor: 31,932 bytes, lines 12325-13388
12325
12326    var Slick = window.Slick || {};
12327
12328    Slick = (function() {
12329
12330        var instanceUid = 0;
12331
12332        function Slick(element, settings) {
12333
12334            var _ = this, dataSettings;
12335
12336            _.defaults = {
12337                accessibility: true,
12338                adaptiveHeight: false,
12339                appendArrows: $(element),
12340                appendDots: $(element),
12341                arrows: true,
12342                asNavFor: null,
12343                prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',
12344                nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>',
12345                autoplay: false,
12346                autoplaySpeed: 3000,
12347                centerMode: false,
12348                centerPadding: '50px',
12349                cssEase: 'ease',
12350                customPaging: function(slider, i) {
12351                    return $('<button type="button" />').text(i + 1);
12352                },
12353                dots: false,
12354                dotsClass: 'slick-dots',
12355                draggable: true,
12356                easing: 'linear',
12357                edgeFriction: 0.35,
12358                fade: false,
12359                focusOnSelect: false,
12360                focusOnChange: false,
12361                infinite: true,
12362                initialSlide: 0,
12363                lazyLoad: 'ondemand',
12364                mobileFirst: false,
12365                pauseOnHover: true,
12366                pauseOnFocus: true,
12367                pauseOnDotsHover: false,
12368                respondTo: 'window',
12369                responsive: null,
12370                rows: 1,
12371                rtl: false,
12372                slide: '',
12373                slidesPerRow: 1,
12374                slidesToShow: 1,
12375                slidesToScroll: 1,
12376                speed: 500,
12377                swipe: true,
12378                swipeToSlide: false,
12379                touchMove: true,
12380                touchThreshold: 5,
12381                useCSS: true,
12382                useTransform: true,
12383                variableWidth: false,
12384                vertical: false,
12385                verticalSwiping: false,
12386                waitForAnimate: true,
12387                zIndex: 1000
12388            };
12389
12390            _.initials = {
12391                animating: false,
12392                dragging: false,
12393                autoPlayTimer: null,
12394                currentDirection: 0,
12395                currentLeft: null,
12396                currentSlide: 0,
12397                direction: 1,
12398                $dots: null,
12399                listWidth: null,
12400                listHeight: null,
12401                loadIndex: 0,
12402                $nextArrow: null,
12403                $prevArrow: null,
12404                scrolling: false,
12405                slideCount: null,
12406                slideWidth: null,
12407                $slideTrack: null,
12408                $slides: null,
12409                sliding: false,
12410                slideOffset: 0,
12411                swipeLeft: null,
12412                swiping: false,
12413                $list: null,
12414                touchObject: {},
12415                transformsEnabled: false,
12416                unslicked: false
12417            };
12418
12419            $.extend(_, _.initials);
12420
12421            _.activeBreakpoint = null;
12422            _.animType = null;
12423            _.animProp = null;
12424            _.breakpoints = [];
12425            _.breakpointSettings = [];
12426            _.cssTransitions = false;
12427            _.focussed = false;
12428            _.interrupted = false;
12429            _.hidden = 'hidden';
12430            _.paused = true;
12431            _.positionProp = null;
12432            _.respondTo = null;
12433            _.rowCount = 1;
12434            _.shouldClick = true;
12435            _.$slider = $(element);
12436            _.$slidesCache = null;
12437            _.transformType = null;
12438            _.transitionType = null;
12439            _.visibilityChange = 'visibilitychange';
12440            _.windowWidth = 0;
12441            _.windowTimer = null;
12442
12443            dataSettings = $(element).data('slick') || {};
12444
12445            _.options = $.extend({}, _.defaults, settings, dataSettings);
12446
12447            _.currentSlide = _.options.initialSlide;
12448
12449            _.originalSettings = _.options;
12450
12451            if (typeof document.mozHidden !== 'undefined') {
12452                _.hidden = 'mozHidden';
12453                _.visibilityChange = 'mozvisibilitychange';
12454            } else if (typeof document.webkitHidden !== 'undefined') {
12455                _.hidden = 'webkitHidden';
12456                _.visibilityChange = 'webkitvisibilitychange';
12457            }
12458
12459            _.autoPlay = $.proxy(_.autoPlay, _);
12460            _.autoPlayClear = $.proxy(_.autoPlayClear, _);
12461            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);
12462            _.changeSlide = $.proxy(_.changeSlide, _);
12463            _.clickHandler = $.proxy(_.clickHandler, _);
12464            _.selectHandler = $.proxy(_.selectHandler, _);
12465            _.setPosition = $.proxy(_.setPosition, _);
12466            _.swipeHandler = $.proxy(_.swipeHandler, _);
12467            _.dragHandler = $.proxy(_.dragHandler, _);
12468            _.keyHandler = $.proxy(_.keyHandler, _);
12469
12470            _.instanceUid = instanceUid++;
12471
12472            // A simple way to check for HTML strings
12473            // Strict HTML recognition (must start with <)
12474            // Extracted from jQuery v1.11 source
12475            _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/;
12476
12477
12478            _.registerBreakpoints();
12479            _.init(true);
12480
12481        }
12482
12483        return Slick;
12484
12485    }());
12486
12487    Slick.prototype.activateADA = function() {
12488        var _ = this;
12489
12490        _.$slideTrack.find('.slick-active').attr({
12491            'aria-hidden': 'false'
12492        }).find('a, input, button, select').attr({
12493            'tabindex': '0'
12494        });
12495
12496    };
12497
12498    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {
12499
12500        var _ = this;
12501
12502        if (typeof(index) === 'boolean') {
12503            addBefore = index;
12504            index = null;
12505        } else if (index < 0 || (index >= _.slideCount)) {
12506            return false;
12507        }
12508
12509        _.unload();
12510
12511        if (typeof(index) === 'number') {
12512            if (index === 0 && _.$slides.length === 0) {
12513                $(markup).appendTo(_.$slideTrack);
12514            } else if (addBefore) {
12515                $(markup).insertBefore(_.$slides.eq(index));
12516            } else {
12517                $(markup).insertAfter(_.$slides.eq(index));
12518            }
12519        } else {
12520            if (addBefore === true) {
12521                $(markup).prependTo(_.$slideTrack);
12522            } else {
12523                $(markup).appendTo(_.$slideTrack);
12524            }
12525        }
12526
12527        _.$slides = _.$slideTrack.children(this.options.slide);
12528
12529        _.$slideTrack.children(this.options.slide).detach();
12530
12531        _.$slideTrack.append(_.$slides);
12532
12533        _.$slides.each(function(index, element) {
12534            $(element).attr('data-slick-index', index);
12535        });
12536
12537        _.$slidesCache = _.$slides;
12538
12539        _.reinit();
12540
12541    };
12542
12543    Slick.prototype.animateHeight = function() {
12544        var _ = this;
12545        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
12546            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
12547            _.$list.animate({
12548                height: targetHeight
12549            }, _.options.speed);
12550        }
12551    };
12552
12553    Slick.prototype.animateSlide = function(targetLeft, callback) {
12554
12555        var animProps = {},
12556            _ = this;
12557
12558        _.animateHeight();
12559
12560        if (_.options.rtl === true && _.options.vertical === false) {
12561            targetLeft = -targetLeft;
12562        }
12563        if (_.transformsEnabled === false) {
12564            if (_.options.vertical === false) {
12565                _.$slideTrack.animate({
12566                    left: targetLeft
12567                }, _.options.speed, _.options.easing, callback);
12568            } else {
12569                _.$slideTrack.animate({
12570                    top: targetLeft
12571                }, _.options.speed, _.options.easing, callback);
12572            }
12573
12574        } else {
12575
12576            if (_.cssTransitions === false) {
12577                if (_.options.rtl === true) {
12578                    _.currentLeft = -(_.currentLeft);
12579                }
12580                $({
12581                    animStart: _.currentLeft
12582                }).animate({
12583                    animStart: targetLeft
12584                }, {
12585                    duration: _.options.speed,
12586                    easing: _.options.easing,
12587                    step: function(now) {
12588                        now = Math.ceil(now);
12589                        if (_.options.vertical === false) {
12590                            animProps[_.animType] = 'translate(' +
12591                                now + 'px, 0px)';
12592                            _.$slideTrack.css(animProps);
12593                        } else {
12594                            animProps[_.animType] = 'translate(0px,' +
12595                                now + 'px)';
12596                            _.$slideTrack.css(animProps);
12597                        }
12598                    },
12599                    complete: function() {
12600                        if (callback) {
12601                            callback.call();
12602                        }
12603                    }
12604                });
12605
12606            } else {
12607
12608                _.applyTransition();
12609                targetLeft = Math.ceil(targetLeft);
12610
12611                if (_.options.vertical === false) {
12612                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';
12613                } else {
12614                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';
12615                }
12616                _.$slideTrack.css(animProps);
12617
12618                if (callback) {
12619                    setTimeout(function() {
12620
12621                        _.disableTransition();
12622
12623                        callback.call();
12624                    }, _.options.speed);
12625                }
12626
12627            }
12628
12629        }
12630
12631    };
12632
12633    Slick.prototype.getNavTarget = function() {
12634
12635        var _ = this,
12636            asNavFor = _.options.asNavFor;
12637
12638        if ( asNavFor && asNavFor !== null ) {
12639            asNavFor = $(asNavFor).not(_.$slider);
12640        }
12641
12642        return asNavFor;
12643
12644    };
12645
12646    Slick.prototype.asNavFor = function(index) {
12647
12648        var _ = this,
12649            asNavFor = _.getNavTarget();
12650
12651        if ( asNavFor !== null && typeof asNavFor === 'object' ) {
12652            asNavFor.each(function() {
12653                var target = $(this).slick('getSlick');
12654                if(!target.unslicked) {
12655                    target.slideHandler(index, true);
12656                }
12657            });
12658        }
12659
12660    };
12661
12662    Slick.prototype.applyTransition = function(slide) {
12663
12664        var _ = this,
12665            transition = {};
12666
12667        if (_.options.fade === false) {
12668            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;
12669        } else {
12670            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;
12671        }
12672
12673        if (_.options.fade === false) {
12674            _.$slideTrack.css(transition);
12675        } else {
12676            _.$slides.eq(slide).css(transition);
12677        }
12678
12679    };
12680
12681    Slick.prototype.autoPlay = function() {
12682
12683        var _ = this;
12684
12685        _.autoPlayClear();
12686
12687        if ( _.slideCount > _.options.slidesToShow ) {
12688            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );
12689        }
12690
12691    };
12692
12693    Slick.prototype.autoPlayClear = function() {
12694
12695        var _ = this;
12696
12697        if (_.autoPlayTimer) {
12698            clearInterval(_.autoPlayTimer);
12699        }
12700
12701    };
12702
12703    Slick.prototype.autoPlayIterator = function() {
12704
12705        var _ = this,
12706            slideTo = _.currentSlide + _.options.slidesToScroll;
12707
12708        if ( !_.paused && !_.interrupted && !_.focussed ) {
12709
12710            if ( _.options.infinite === false ) {
12711
12712                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {
12713                    _.direction = 0;
12714                }
12715
12716                else if ( _.direction === 0 ) {
12717
12718                    slideTo = _.currentSlide - _.options.slidesToScroll;
12719
12720                    if ( _.currentSlide - 1 === 0 ) {
12721                        _.direction = 1;
12722                    }
12723
12724                }
12725
12726            }
12727
12728            _.slideHandler( slideTo );
12729
12730        }
12731
12732    };
12733
12734    Slick.prototype.buildArrows = function() {
12735
12736        var _ = this;
12737
12738        if (_.options.arrows === true ) {
12739
12740            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');
12741            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');
12742
12743            if( _.slideCount > _.options.slidesToShow ) {
12744
12745                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
12746                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');
12747
12748                if (_.htmlExpr.test(_.options.prevArrow)) {
12749                    _.$prevArrow.prependTo(_.options.appendArrows);
12750                }
12751
12752                if (_.htmlExpr.test(_.options.nextArrow)) {
12753                    _.$nextArrow.appendTo(_.options.appendArrows);
12754                }
12755
12756                if (_.options.infinite !== true) {
12757                    _.$prevArrow
12758                        .addClass('slick-disabled')
12759                        .attr('aria-disabled', 'true');
12760                }
12761
12762            } else {
12763
12764                _.$prevArrow.add( _.$nextArrow )
12765
12766                    .addClass('slick-hidden')
12767                    .attr({
12768                        'aria-disabled': 'true',
12769                        'tabindex': '-1'
12770                    });
12771
12772            }
12773
12774        }
12775
12776    };
12777
12778    Slick.prototype.buildDots = function() {
12779
12780        var _ = this,
12781            i, dot;
12782
12783        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
12784
12785            _.$slider.addClass('slick-dotted');
12786
12787            dot = $('<ul />').addClass(_.options.dotsClass);
12788
12789            for (i = 0; i <= _.getDotCount(); i += 1) {
12790                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));
12791            }
12792
12793            _.$dots = dot.appendTo(_.options.appendDots);
12794
12795            _.$dots.find('li').first().addClass('slick-active');
12796
12797        }
12798
12799    };
12800
12801    Slick.prototype.buildOut = function() {
12802
12803        var _ = this;
12804
12805        _.$slides =
12806            _.$slider
12807                .children( _.options.slide + ':not(.slick-cloned)')
12808                .addClass('slick-slide');
12809
12810        _.slideCount = _.$slides.length;
12811
12812        _.$slides.each(function(index, element) {
12813            $(element)
12814                .attr('data-slick-index', index)
12815                .data('originalStyling', $(element).attr('style') || '');
12816        });
12817
12818        _.$slider.addClass('slick-slider');
12819
12820        _.$slideTrack = (_.slideCount === 0) ?
12821            $('<div class="slick-track"/>').appendTo(_.$slider) :
12822            _.$slides.wrapAll('<div class="slick-track"/>').parent();
12823
12824        _.$list = _.$slideTrack.wrap(
12825            '<div class="slick-list"/>').parent();
12826        _.$slideTrack.css('opacity', 0);
12827
12828        if (_.options.centerMode === true || _.options.swipeToSlide === true) {
12829            _.options.slidesToScroll = 1;
12830        }
12831
12832        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');
12833
12834        _.setupInfinite();
12835
12836        _.buildArrows();
12837
12838        _.buildDots();
12839
12840        _.updateDots();
12841
12842
12843        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
12844
12845        if (_.options.draggable === true) {
12846            _.$list.addClass('draggable');
12847        }
12848
12849    };
12850
12851    Slick.prototype.buildRows = function() {
12852
12853        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;
12854
12855        newSlides = document.createDocumentFragment();
12856        originalSlides = _.$slider.children();
12857
12858        if(_.options.rows > 0) {
12859
12860            slidesPerSection = _.options.slidesPerRow * _.options.rows;
12861            numOfSlides = Math.ceil(
12862                originalSlides.length / slidesPerSection
12863            );
12864
12865            for(a = 0; a < numOfSlides; a++){
12866                var slide = document.createElement('div');
12867                for(b = 0; b < _.options.rows; b++) {
12868                    var row = document.createElement('div');
12869                    for(c = 0; c < _.options.slidesPerRow; c++) {
12870                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));
12871                        if (originalSlides.get(target)) {
12872                            row.appendChild(originalSlides.get(target));
12873                        }
12874                    }
12875                    slide.appendChild(row);
12876                }
12877                newSlides.appendChild(slide);
12878            }
12879
12880            _.$slider.empty().append(newSlides);
12881            _.$slider.children().children().children()
12882                .css({
12883                    'width':(100 / _.options.slidesPerRow) + '%',
12884                    'display': 'inline-block'
12885                });
12886
12887        }
12888
12889    };
12890
12891    Slick.prototype.checkResponsive = function(initial, forceUpdate) {
12892
12893        var _ = this,
12894            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;
12895        var sliderWidth = _.$slider.width();
12896        var windowWidth = window.innerWidth || $(window).width();
12897
12898        if (_.respondTo === 'window') {
12899            respondToWidth = windowWidth;
12900        } else if (_.respondTo === 'slider') {
12901            respondToWidth = sliderWidth;
12902        } else if (_.respondTo === 'min') {
12903            respondToWidth = Math.min(windowWidth, sliderWidth);
12904        }
12905
12906        if ( _.options.responsive &&
12907            _.options.responsive.length &&
12908            _.options.responsive !== null) {
12909
12910            targetBreakpoint = null;
12911
12912            for (breakpoint in _.breakpoints) {
12913                if (_.breakpoints.hasOwnProperty(breakpoint)) {
12914                    if (_.originalSettings.mobileFirst === false) {
12915                        if (respondToWidth < _.breakpoints[breakpoint]) {
12916                            targetBreakpoint = _.breakpoints[breakpoint];
12917                        }
12918                    } else {
12919                        if (respondToWidth > _.breakpoints[breakpoint]) {
12920                            targetBreakpoint = _.breakpoints[breakpoint];
12921                        }
12922                    }
12923                }
12924            }
12925
12926            if (targetBreakpoint !== null) {
12927                if (_.activeBreakpoint !== null) {
12928                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {
12929                        _.activeBreakpoint =
12930                            targetBreakpoint;
12931                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
12932                            _.unslick(targetBreakpoint);
12933                        } else {
12934                            _.options = $.extend({}, _.originalSettings,
12935                                _.breakpointSettings[
12936                                    targetBreakpoint]);
12937                            if (initial === true) {
12938                                _.currentSlide = _.options.initialSlide;
12939                            }
12940                            _.refresh(initial);
12941                        }
12942                        triggerBreakpoint = targetBreakpoint;
12943                    }
12944                } else {
12945                    _.activeBreakpoint = targetBreakpoint;
12946                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {
12947                        _.unslick(targetBreakpoint);
12948                    } else {
12949                        _.options = $.extend({}, _.originalSettings,
12950                            _.breakpointSettings[
12951                                targetBreakpoint]);
12952                        if (initial === true) {
12953                            _.currentSlide = _.options.initialSlide;
12954                        }
12955                        _.refresh(initial);
12956                    }
12957                    triggerBreakpoint = targetBreakpoint;
12958                }
12959            } else {
12960                if (_.activeBreakpoint !== null) {
12961                    _.activeBreakpoint = null;
12962                    _.options = _.originalSettings;
12963                    if (initial === true) {
12964                        _.currentSlide = _.options.initialSlide;
12965                    }
12966                    _.refresh(initial);
12967                    triggerBreakpoint = targetBreakpoint;
12968                }
12969            }
12970
12971            // only trigger breakpoints during an actual break. not on initialize.
12972            if( !initial && triggerBreakpoint !== false ) {
12973                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);
12974            }
12975        }
12976
12977    };
12978
12979    Slick.prototype.changeSlide = function(event, dontAnimate) {
12980
12981        var _ = this,
12982            $target = $(event.currentTarget),
12983            indexOffset, slideOffset, unevenOffset;
12984
12985        // If target is a link, prevent default action.
12986        if($target.is('a')) {
12987            event.preventDefault();
12988        }
12989
12990        // If target is not the <li> element (ie: a child), find the <li>.
12991        if(!$target.is('li')) {
12992            $target = $target.closest('li');
12993        }
12994
12995        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);
12996        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;
12997
12998        switch (event.data.message) {
12999
13000            case 'previous':
13001                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;
13002                if (_.slideCount > _.options.slidesToShow) {
13003                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);
13004                }
13005                break;
13006
13007            case 'next':
13008                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;
13009                if (_.slideCount > _.options.slidesToShow) {
13010                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);
13011                }
13012                break;
13013
13014            case 'index':
13015                var index = event.data.index === 0 ? 0 :
13016                    event.data.index || $target.index() * _.options.slidesToScroll;
13017
13018                _.slideHandler(_.checkNavigable(index), false, dontAnimate);
13019                $target.children().trigger('focus');
13020                break;
13021
13022            default:
13023                return;
13024        }
13025
13026    };
13027
13028    Slick.prototype.checkNavigable = function(index) {
13029
13030        var _ = this,
13031            navigables, prevNavigable;
13032
13033        navigables = _.getNavigableIndexes();
13034        prevNavigable = 0;
13035        if (index > navigables[navigables.length - 1]) {
13036            index = navigables[navigables.length - 1];
13037        } else {
13038            for (var n in navigables) {
13039                if (index < navigables[n]) {
13040                    index = prevNavigable;
13041                    break;
13042                }
13043                prevNavigable = navigables[n];
13044            }
13045        }
13046
13047        return index;
13048    };
13049
13050    Slick.prototype.cleanUpEvents = function() {
13051
13052        var _ = this;
13053
13054        if (_.options.dots && _.$dots !== null) {
13055
13056            $('li', _.$dots)
13057                .off('click.slick', _.changeSlide)
13058                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))
13059                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));
13060
13061            if (_.options.accessibility === true) {
13062                _.$dots.off('keydown.slick', _.keyHandler);
13063            }
13064        }
13065
13066        _.$slider.off('focus.slick blur.slick');
13067
13068        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
13069            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);
13070            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);
13071
13072            if (_.options.accessibility === true) {
13073                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);
13074                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);
13075            }
13076        }
13077
13078        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);
13079        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);
13080        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);
13081        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);
13082
13083        _.$list.off('click.slick', _.clickHandler);
13084
13085        $(document).off(_.visibilityChange, _.visibility);
13086
13087        _.cleanUpSlideEvents();
13088
13089        if (_.options.accessibility === true) {
13090            _.$list.off('keydown.slick', _.keyHandler);
13091        }
13092
13093        if (_.options.focusOnSelect === true) {
13094            $(_.$slideTrack).children().off('click.slick', _.selectHandler);
13095        }
13096
13097        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);
13098
13099        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);
13100
13101        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);
13102
13103        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);
13104
13105    };
13106
13107    Slick.prototype.cleanUpSlideEvents = function() {
13108
13109        var _ = this;
13110
13111        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));
13112        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));
13113
13114    };
13115
13116    Slick.prototype.cleanUpRows = function() {
13117
13118        var _ = this, originalSlides;
13119
13120        if(_.options.rows > 0) {
13121            originalSlides = _.$slides.children().children();
13122            originalSlides.removeAttr('style');
13123            _.$slider.empty().append(originalSlides);
13124        }
13125
13126    };
13127
13128    Slick.prototype.clickHandler = function(event) {
13129
13130        var _ = this;
13131
13132        if (_.shouldClick === false) {
13133            event.stopImmediatePropagation();
13134            event.stopPropagation();
13135            event.preventDefault();
13136        }
13137
13138    };
13139
13140    Slick.prototype.destroy = function(refresh) {
13141
13142        var _ = this;
13143
13144        _.autoPlayClear();
13145
13146        _.touchObject = {};
13147
13148        _.cleanUpEvents();
13149
13150        $('.slick-cloned', _.$slider).detach();
13151
13152        if (_.$dots) {
13153            _.$dots.remove();
13154        }
13155
13156        if ( _.$prevArrow && _.$prevArrow.length ) {
13157
13158            _.$prevArrow
13159                .removeClass('slick-disabled slick-arrow slick-hidden')
13160                .removeAttr('aria-hidden aria-disabled tabindex')
13161                .css('display','');
13162
13163            if ( _.htmlExpr.test( _.options.prevArrow )) {
13164                _.$prevArrow.remove();
13165            }
13166        }
13167
13168        if ( _.$nextArrow && _.$nextArrow.length ) {
13169
13170            _.$nextArrow
13171                .removeClass('slick-disabled slick-arrow slick-hidden')
13172                .removeAttr('aria-hidden aria-disabled tabindex')
13173                .css('display','');
13174
13175            if ( _.htmlExpr.test( _.options.nextArrow )) {
13176                _.$nextArrow.remove();
13177            }
13178        }
13179
13180
13181        if (_.$slides) {
13182
13183            _.$slides
13184                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')
13185                .removeAttr('aria-hidden')
13186                .removeAttr('data-slick-index')
13187                .each(function(){
13188                    $(this).attr('style', $(this).data('originalStyling'));
13189                });
13190
13191            _.$slideTrack.children(this.options.slide).detach();
13192
13193            _.$slideTrack.detach();
13194
13195            _.$list.detach();
13196
13197            _.$slider.append(_.$slides);
13198        }
13199
13200        _.cleanUpRows();
13201
13202        _.$slider.removeClass('slick-slider');
13203        _.$slider.removeClass('slick-initialized');
13204        _.$slider.removeClass('slick-dotted');
13205
13206        _.unslicked = true;
13207
13208        if(!refresh) {
13209            _.$slider.trigger('destroy', [_]);
13210        }
13211
13212    };
13213
13214    Slick.prototype.disableTransition = function(slide) {
13215
13216        var _ = this,
13217            transition = {};
13218
13219        transition[_.transitionType] = '';
13220
13221        if (_.options.fade === false) {
13222            _.$slideTrack.css(transition);
13223        } else {
13224            _.$slides.eq(slide).css(transition);
13225        }
13226
13227    };
13228
13229    Slick.prototype.fadeSlide = function(slideIndex, callback) {
13230
13231        var _ = this;
13232
13233        if (_.cssTransitions === false) {
13234
13235            _.$slides.eq(slideIndex).css({
13236                zIndex: _.options.zIndex
13237            });
13238
13239            _.$slides.eq(slideIndex).animate({
13240                opacity: 1
13241            }, _.options.speed, _.options.easing, callback);
13242
13243        } else {
13244
13245            _.applyTransition(slideIndex);
13246
13247            _.$slides.eq(slideIndex).css({
13248                opacity: 1,
13249                zIndex: _.options.zIndex
13250            });
13251
13252            if (callback) {
13253                setTimeout(function() {
13254
13255                    _.disableTransition(slideIndex);
13256
13257                    callback.call();
13258                }, _.options.speed);
13259            }
13260
13261        }
13262
13263    };
13264
13265    Slick.prototype.fadeSlideOut = function(slideIndex) {
13266
13267        var _ = this;
13268
13269        if (_.cssTransitions === false) {
13270
13271            _.$slides.eq(slideIndex).animate({
13272                opacity: 0,
13273                zIndex: _.options.zIndex - 2
13274            }, _.options.speed, _.options.easing);
13275
13276        } else {
13277
13278            _.applyTransition(slideIndex);
13279
13280            _.$slides.eq(slideIndex).css({
13281                opacity: 0,
13282                zIndex: _.options.zIndex - 2
13283            });
13284
13285        }
13286
13287    };
13288
13289    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {
13290
13291        var _ = this;
13292
13293        if (filter !== null) {
13294
13295            _.$slidesCache = _.$slides;
13296
13297            _.unload();
13298
13299            _.$slideTrack.children(this.options.slide).detach();
13300
13301            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);
13302
13303            _.reinit();
13304
13305        }
13306
13307    };
13308
13309    Slick.prototype.focusHandler = function() {
13310
13311        var _ = this;
13312
13313        _.$slider
13314            .off('focus.slick blur.slick')
13315            .on('focus.slick blur.slick', '*', function(event) {
13316
13317            event.stopImmediatePropagation();
13318            var $sf = $(this);
13319
13320            setTimeout(function() {
13321
13322                if( _.options.pauseOnFocus ) {
13323                    _.focussed = $sf.is(':focus');
13324                    _.autoPlay();
13325                }
13326
13327            }, 0);
13328
13329        });
13330    };
13331
13332    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {
13333
13334        var _ = this;
13335        return _.currentSlide;
13336
13337    };
13338
13339    Slick.prototype.getDotCount = function() {
13340
13341        var _ = this;
13342
13343        var breakPoint = 0;
13344        var counter = 0;
13345        var pagerQty = 0;
13346
13347        if (_.options.infinite === true) {
13348            if (_.slideCount <= _.options.slidesToShow) {
13349                 ++pagerQty;
13350            } else {
13351                while (breakPoint < _.slideCount) {
13352                    ++pagerQty;
13353                    breakPoint = counter + _.options.slidesToScroll;
13354                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
13355                }
13356            }
13357        } else if (_.options.centerMode === true) {
13358            pagerQty = _.slideCount;
13359        } else if(!_.options.asNavFor) {
13360            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);
13361        }else {
13362            while (breakPoint < _.slideCount) {
13363                ++pagerQty;
13364                breakPoint = counter + _.options.slidesToScroll;
13365                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
13366            }
13367        }
13368
13369        return pagerQty - 1;
13370
13371    };
13372
13373    Slick.prototype.getLeft = function(slideIndex) {
13374
13375        var _ = this,
13376            targetLeft,
13377            verticalHeight,
13378            verticalOffset = 0,
13379            targetSlide,
13380            coef;
13381
13382        _.slideOffset = 0;
13383        verticalHeight = _.$slides.first().outerHeight(true);
13384
13385        if (_.options.infinite === true) {
13386            if (_.slideCount > _.options.slidesToShow) {
13387                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;
13388                coef = -1
13388
13389
13390                if (_.options.vertical === true && _.options.centerMode === true) {
13391                    if (_.options.slidesToShow === 2) {
13392                        coef = -1.5;
13393                    } else if (_.options.slidesToShow === 1) {
13394                        coef = -2
vendor: 47,517 bytes, lines 13394-14997
13394
13395                    }
13396                }
13397                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;
13398            }
13399            if (_.slideCount % _.options.slidesToScroll !== 0) {
13400                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {
13401                    if (slideIndex > _.slideCount) {
13402                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;
13403                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;
13404                    } else {
13405                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;
13406                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;
13407                    }
13408                }
13409            }
13410        } else {
13411            if (slideIndex + _.options.slidesToShow > _.slideCount) {
13412                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;
13413                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;
13414            }
13415        }
13416
13417        if (_.slideCount <= _.options.slidesToShow) {
13418            _.slideOffset = 0;
13419            verticalOffset = 0;
13420        }
13421
13422        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {
13423            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);
13424        } else if (_.options.centerMode === true && _.options.infinite === true) {
13425            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;
13426        } else if (_.options.centerMode === true) {
13427            _.slideOffset = 0;
13428            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);
13429        }
13430
13431        if (_.options.vertical === false) {
13432            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;
13433        } else {
13434            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;
13435        }
13436
13437        if (_.options.variableWidth === true) {
13438
13439            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
13440                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
13441            } else {
13442                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);
13443            }
13444
13445            if (_.options.rtl === true) {
13446                if (targetSlide[0]) {
13447                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
13448                } else {
13449                    targetLeft =  0;
13450                }
13451            } else {
13452                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
13453            }
13454
13455            if (_.options.centerMode === true) {
13456                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {
13457                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);
13458                } else {
13459                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);
13460                }
13461
13462                if (_.options.rtl === true) {
13463                    if (targetSlide[0]) {
13464                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;
13465                    } else {
13466                        targetLeft =  0;
13467                    }
13468                } else {
13469                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;
13470                }
13471
13472                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;
13473            }
13474        }
13475
13476        return targetLeft;
13477
13478    };
13479
13480    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {
13481
13482        var _ = this;
13483
13484        return _.options[option];
13485
13486    };
13487
13488    Slick.prototype.getNavigableIndexes = function() {
13489
13490        var _ = this,
13491            breakPoint = 0,
13492            counter = 0,
13493            indexes = [],
13494            max;
13495
13496        if (_.options.infinite === false) {
13497            max = _.slideCount;
13498        } else {
13499            breakPoint = _.options.slidesToScroll * -1;
13500            counter = _.options.slidesToScroll * -1;
13501            max = _.slideCount * 2;
13502        }
13503
13504        while (breakPoint < max) {
13505            indexes.push(breakPoint);
13506            breakPoint = counter + _.options.slidesToScroll;
13507            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;
13508        }
13509
13510        return indexes;
13511
13512    };
13513
13514    Slick.prototype.getSlick = function() {
13515
13516        return this;
13517
13518    };
13519
13520    Slick.prototype.getSlideCount = function() {
13521
13522        var _ = this,
13523            slidesTraversed, swipedSlide, centerOffset;
13524
13525        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;
13526
13527        if (_.options.swipeToSlide === true) {
13528            _.$slideTrack.find('.slick-slide').each(function(index, slide) {
13529                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {
13530                    swipedSlide = slide;
13531                    return false;
13532                }
13533            });
13534
13535            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;
13536
13537            return slidesTraversed;
13538
13539        } else {
13540            return _.options.slidesToScroll;
13541        }
13542
13543    };
13544
13545    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {
13546
13547        var _ = this;
13548
13549        _.changeSlide({
13550            data: {
13551                message: 'index',
13552                index: parseInt(slide)
13553            }
13554        }, dontAnimate);
13555
13556    };
13557
13558    Slick.prototype.init = function(creation) {
13559
13560        var _ = this;
13561
13562        if (!$(_.$slider).hasClass('slick-initialized')) {
13563
13564            $(_.$slider).addClass('slick-initialized');
13565
13566            _.buildRows();
13567            _.buildOut();
13568            _.setProps();
13569            _.startLoad();
13570            _.loadSlider();
13571            _.initializeEvents();
13572            _.updateArrows();
13573            _.updateDots();
13574            _.checkResponsive(true);
13575            _.focusHandler();
13576
13577        }
13578
13579        if (creation) {
13580            _.$slider.trigger('init', [_]);
13581        }
13582
13583        if (_.options.accessibility === true) {
13584            _.initADA();
13585        }
13586
13587        if ( _.options.autoplay ) {
13588
13589            _.paused = false;
13590            _.autoPlay();
13591
13592        }
13593
13594    };
13595
13596    Slick.prototype.initADA = function() {
13597        var _ = this,
13598                numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),
13599                tabControlIndexes = _.getNavigableIndexes().filter(function(val) {
13600                    return (val >= 0) && (val < _.slideCount);
13601                });
13602
13603        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({
13604            'aria-hidden': 'true',
13605            'tabindex': '-1'
13606        }).find('a, input, button, select').attr({
13607            'tabindex': '-1'
13608        });
13609
13610        if (_.$dots !== null) {
13611            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {
13612                var slideControlIndex = tabControlIndexes.indexOf(i);
13613
13614                $(this).attr({
13615                    'role': 'tabpanel',
13616                    'id': 'slick-slide' + _.instanceUid + i,
13617                    'tabindex': -1
13618                });
13619
13620                if (slideControlIndex !== -1) {
13621                   var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex
13622                   if ($('#' + ariaButtonControl).length) {
13623                     $(this).attr({
13624                         'aria-describedby': ariaButtonControl
13625                     });
13626                   }
13627                }
13628            });
13629
13630            _.$dots.attr('role', 'tablist').find('li').each(function(i) {
13631                var mappedSlideIndex = tabControlIndexes[i];
13632
13633                $(this).attr({
13634                    'role': 'presentation'
13635                });
13636
13637                $(this).find('button').first().attr({
13638                    'role': 'tab',
13639                    'id': 'slick-slide-control' + _.instanceUid + i,
13640                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,
13641                    'aria-label': (i + 1) + ' of ' + numDotGroups,
13642                    'aria-selected': null,
13643                    'tabindex': '-1'
13644                });
13645
13646            }).eq(_.currentSlide).find('button').attr({
13647                'aria-selected': 'true',
13648                'tabindex': '0'
13649            }).end();
13650        }
13651
13652        for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {
13653          if (_.options.focusOnChange) {
13654            _.$slides.eq(i).attr({'tabindex': '0'});
13655          } else {
13656            _.$slides.eq(i).removeAttr('tabindex');
13657          }
13658        }
13659
13660        _.activateADA();
13661
13662    };
13663
13664    Slick.prototype.initArrowEvents = function() {
13665
13666        var _ = this;
13667
13668        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
13669            _.$prevArrow
13670               .off('click.slick')
13671               .on('click.slick', {
13672                    message: 'previous'
13673               }, _.changeSlide);
13674            _.$nextArrow
13675               .off('click.slick')
13676               .on('click.slick', {
13677                    message: 'next'
13678               }, _.changeSlide);
13679
13680            if (_.options.accessibility === true) {
13681                _.$prevArrow.on('keydown.slick', _.keyHandler);
13682                _.$nextArrow.on('keydown.slick', _.keyHandler);
13683            }
13684        }
13685
13686    };
13687
13688    Slick.prototype.initDotEvents = function() {
13689
13690        var _ = this;
13691
13692        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
13693            $('li', _.$dots).on('click.slick', {
13694                message: 'index'
13695            }, _.changeSlide);
13696
13697            if (_.options.accessibility === true) {
13698                _.$dots.on('keydown.slick', _.keyHandler);
13699            }
13700        }
13701
13702        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {
13703
13704            $('li', _.$dots)
13705                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))
13706                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));
13707
13708        }
13709
13710    };
13711
13712    Slick.prototype.initSlideEvents = function() {
13713
13714        var _ = this;
13715
13716        if ( _.options.pauseOnHover ) {
13717
13718            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));
13719            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));
13720
13721        }
13722
13723    };
13724
13725    Slick.prototype.initializeEvents = function() {
13726
13727        var _ = this;
13728
13729        _.initArrowEvents();
13730
13731        _.initDotEvents();
13732        _.initSlideEvents();
13733
13734        _.$list.on('touchstart.slick mousedown.slick', {
13735            action: 'start'
13736        }, _.swipeHandler);
13737        _.$list.on('touchmove.slick mousemove.slick', {
13738            action: 'move'
13739        }, _.swipeHandler);
13740        _.$list.on('touchend.slick mouseup.slick', {
13741            action: 'end'
13742        }, _.swipeHandler);
13743        _.$list.on('touchcancel.slick mouseleave.slick', {
13744            action: 'end'
13745        }, _.swipeHandler);
13746
13747        _.$list.on('click.slick', _.clickHandler);
13748
13749        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));
13750
13751        if (_.options.accessibility === true) {
13752            _.$list.on('keydown.slick', _.keyHandler);
13753        }
13754
13755        if (_.options.focusOnSelect === true) {
13756            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
13757        }
13758
13759        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));
13760
13761        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));
13762
13763        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);
13764
13765        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);
13766        $(_.setPosition);
13767
13768    };
13769
13770    Slick.prototype.initUI = function() {
13771
13772        var _ = this;
13773
13774        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
13775
13776            _.$prevArrow.show();
13777            _.$nextArrow.show();
13778
13779        }
13780
13781        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
13782
13783            _.$dots.show();
13784
13785        }
13786
13787    };
13788
13789    Slick.prototype.keyHandler = function(event) {
13790
13791        var _ = this;
13792         //Dont slide if the cursor is inside the form fields and arrow keys are pressed
13793        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {
13794            if (event.keyCode === 37 && _.options.accessibility === true) {
13795                _.changeSlide({
13796                    data: {
13797                        message: _.options.rtl === true ? 'next' :  'previous'
13798                    }
13799                });
13800            } else if (event.keyCode === 39 && _.options.accessibility === true) {
13801                _.changeSlide({
13802                    data: {
13803                        message: _.options.rtl === true ? 'previous' : 'next'
13804                    }
13805                });
13806            }
13807        }
13808
13809    };
13810
13811    Slick.prototype.lazyLoad = function() {
13812
13813        var _ = this,
13814            loadRange, cloneRange, rangeStart, rangeEnd;
13815
13816        function loadImages(imagesScope) {
13817
13818            $('img[data-lazy]', imagesScope).each(function() {
13819
13820                var image = $(this),
13821                    imageSource = $(this).attr('data-lazy'),
13822                    imageSrcSet = $(this).attr('data-srcset'),
13823                    imageSizes  = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),
13824                    imageToLoad = document.createElement('img');
13825
13826                imageToLoad.onload = function() {
13827
13828                    image
13829                        .animate({ opacity: 0 }, 100, function() {
13830
13831                            if (imageSrcSet) {
13832                                image
13833                                    .attr('srcset', imageSrcSet );
13834
13835                                if (imageSizes) {
13836                                    image
13837                                        .attr('sizes', imageSizes );
13838                                }
13839                            }
13840
13841                            image
13842                                .attr('src', imageSource)
13843                                .animate({ opacity: 1 }, 200, function() {
13844                                    image
13845                                        .removeAttr('data-lazy data-srcset data-sizes')
13846                                        .removeClass('slick-loading');
13847                                });
13848                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);
13849                        });
13850
13851                };
13852
13853                imageToLoad.onerror = function() {
13854
13855                    image
13856                        .removeAttr( 'data-lazy' )
13857                        .removeClass( 'slick-loading' )
13858                        .addClass( 'slick-lazyload-error' );
13859
13860                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
13861
13862                };
13863
13864                imageToLoad.src = imageSource;
13865
13866            });
13867
13868        }
13869
13870        if (_.options.centerMode === true) {
13871            if (_.options.infinite === true) {
13872                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);
13873                rangeEnd = rangeStart + _.options.slidesToShow + 2;
13874            } else {
13875                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));
13876                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;
13877            }
13878        } else {
13879            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;
13880            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);
13881            if (_.options.fade === true) {
13882                if (rangeStart > 0) rangeStart--;
13883                if (rangeEnd <= _.slideCount) rangeEnd++;
13884            }
13885        }
13886
13887        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);
13888
13889        if (_.options.lazyLoad === 'anticipated') {
13890            var prevSlide = rangeStart - 1,
13891                nextSlide = rangeEnd,
13892                $slides = _.$slider.find('.slick-slide');
13893
13894            for (var i = 0; i < _.options.slidesToScroll; i++) {
13895                if (prevSlide < 0) prevSlide = _.slideCount - 1;
13896                loadRange = loadRange.add($slides.eq(prevSlide));
13897                loadRange = loadRange.add($slides.eq(nextSlide));
13898                prevSlide--;
13899                nextSlide++;
13900            }
13901        }
13902
13903        loadImages(loadRange);
13904
13905        if (_.slideCount <= _.options.slidesToShow) {
13906            cloneRange = _.$slider.find('.slick-slide');
13907            loadImages(cloneRange);
13908        } else
13909        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {
13910            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);
13911            loadImages(cloneRange);
13912        } else if (_.currentSlide === 0) {
13913            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);
13914            loadImages(cloneRange);
13915        }
13916
13917    };
13918
13919    Slick.prototype.loadSlider = function() {
13920
13921        var _ = this;
13922
13923        _.setPosition();
13924
13925        _.$slideTrack.css({
13926            opacity: 1
13927        });
13928
13929        _.$slider.removeClass('slick-loading');
13930
13931        _.initUI();
13932
13933        if (_.options.lazyLoad === 'progressive') {
13934            _.progressiveLazyLoad();
13935        }
13936
13937    };
13938
13939    Slick.prototype.next = Slick.prototype.slickNext = function() {
13940
13941        var _ = this;
13942
13943        _.changeSlide({
13944            data: {
13945                message: 'next'
13946            }
13947        });
13948
13949    };
13950
13951    Slick.prototype.orientationChange = function() {
13952
13953        var _ = this;
13954
13955        _.checkResponsive();
13956        _.setPosition();
13957
13958    };
13959
13960    Slick.prototype.pause = Slick.prototype.slickPause = function() {
13961
13962        var _ = this;
13963
13964        _.autoPlayClear();
13965        _.paused = true;
13966
13967    };
13968
13969    Slick.prototype.play = Slick.prototype.slickPlay = function() {
13970
13971        var _ = this;
13972
13973        _.autoPlay();
13974        _.options.autoplay = true;
13975        _.paused = false;
13976        _.focussed = false;
13977        _.interrupted = false;
13978
13979    };
13980
13981    Slick.prototype.postSlide = function(index) {
13982
13983        var _ = this;
13984
13985        if( !_.unslicked ) {
13986
13987            _.$slider.trigger('afterChange', [_, index]);
13988
13989            _.animating = false;
13990
13991            if (_.slideCount > _.options.slidesToShow) {
13992                _.setPosition();
13993            }
13994
13995            _.swipeLeft = null;
13996
13997            if ( _.options.autoplay ) {
13998                _.autoPlay();
13999            }
14000
14001            if (_.options.accessibility === true) {
14002                _.initADA();
14003
14004                if (_.options.focusOnChange) {
14005                    var $currentSlide = $(_.$slides.get(_.currentSlide));
14006                    $currentSlide.attr('tabindex', 0).focus();
14007                }
14008            }
14009
14010        }
14011
14012    };
14013
14014    Slick.prototype.prev = Slick.prototype.slickPrev = function() {
14015
14016        var _ = this;
14017
14018        _.changeSlide({
14019            data: {
14020                message: 'previous'
14021            }
14022        });
14023
14024    };
14025
14026    Slick.prototype.preventDefault = function(event) {
14027
14028        event.preventDefault();
14029
14030    };
14031
14032    Slick.prototype.progressiveLazyLoad = function( tryCount ) {
14033
14034        tryCount = tryCount || 1;
14035
14036        var _ = this,
14037            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),
14038            image,
14039            imageSource,
14040            imageSrcSet,
14041            imageSizes,
14042            imageToLoad;
14043
14044        if ( $imgsToLoad.length ) {
14045
14046            image = $imgsToLoad.first();
14047            imageSource = image.attr('data-lazy');
14048            imageSrcSet = image.attr('data-srcset');
14049            imageSizes  = image.attr('data-sizes') || _.$slider.attr('data-sizes');
14050            imageToLoad = document.createElement('img');
14051
14052            imageToLoad.onload = function() {
14053
14054                if (imageSrcSet) {
14055                    image
14056                        .attr('srcset', imageSrcSet );
14057
14058                    if (imageSizes) {
14059                        image
14060                            .attr('sizes', imageSizes );
14061                    }
14062                }
14063
14064                image
14065                    .attr( 'src', imageSource )
14066                    .removeAttr('data-lazy data-srcset data-sizes')
14067                    .removeClass('slick-loading');
14068
14069                if ( _.options.adaptiveHeight === true ) {
14070                    _.setPosition();
14071                }
14072
14073                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);
14074                _.progressiveLazyLoad();
14075
14076            };
14077
14078            imageToLoad.onerror = function() {
14079
14080                if ( tryCount < 3 ) {
14081
14082                    /**
14083                     * try to load the image 3 times,
14084                     * leave a slight delay so we don't get
14085                     * servers blocking the request.
14086                     */
14087                    setTimeout( function() {
14088                        _.progressiveLazyLoad( tryCount + 1 );
14089                    }, 500 );
14090
14091                } else {
14092
14093                    image
14094                        .removeAttr( 'data-lazy' )
14095                        .removeClass( 'slick-loading' )
14096                        .addClass( 'slick-lazyload-error' );
14097
14098                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);
14099
14100                    _.progressiveLazyLoad();
14101
14102                }
14103
14104            };
14105
14106            imageToLoad.src = imageSource;
14107
14108        } else {
14109
14110            _.$slider.trigger('allImagesLoaded', [ _ ]);
14111
14112        }
14113
14114    };
14115
14116    Slick.prototype.refresh = function( initializing ) {
14117
14118        var _ = this, currentSlide, lastVisibleIndex;
14119
14120        lastVisibleIndex = _.slideCount - _.options.slidesToShow;
14121
14122        // in non-infinite sliders, we don't want to go past the
14123        // last visible index.
14124        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {
14125            _.currentSlide = lastVisibleIndex;
14126        }
14127
14128        // if less slides than to show, go to start.
14129        if ( _.slideCount <= _.options.slidesToShow ) {
14130            _.currentSlide = 0;
14131
14132        }
14133
14134        currentSlide = _.currentSlide;
14135
14136        _.destroy(true);
14137
14138        $.extend(_, _.initials, { currentSlide: currentSlide });
14139
14140        _.init();
14141
14142        if( !initializing ) {
14143
14144            _.changeSlide({
14145                data: {
14146                    message: 'index',
14147                    index: currentSlide
14148                }
14149            }, false);
14150
14151        }
14152
14153    };
14154
14155    Slick.prototype.registerBreakpoints = function() {
14156
14157        var _ = this, breakpoint, currentBreakpoint, l,
14158            responsiveSettings = _.options.responsive || null;
14159
14160        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {
14161
14162            _.respondTo = _.options.respondTo || 'window';
14163
14164            for ( breakpoint in responsiveSettings ) {
14165
14166                l = _.breakpoints.length-1;
14167
14168                if (responsiveSettings.hasOwnProperty(breakpoint)) {
14169                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;
14170
14171                    // loop through the breakpoints and cut out any existing
14172                    // ones with the same breakpoint number, we don't want dupes.
14173                    while( l >= 0 ) {
14174                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {
14175                            _.breakpoints.splice(l,1);
14176                        }
14177                        l--;
14178                    }
14179
14180                    _.breakpoints.push(currentBreakpoint);
14181                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;
14182
14183                }
14184
14185            }
14186
14187            _.breakpoints.sort(function(a, b) {
14188                return ( _.options.mobileFirst ) ? a-b : b-a;
14189            });
14190
14191        }
14192
14193    };
14194
14195    Slick.prototype.reinit = function() {
14196
14197        var _ = this;
14198
14199        _.$slides =
14200            _.$slideTrack
14201                .children(_.options.slide)
14202                .addClass('slick-slide');
14203
14204        _.slideCount = _.$slides.length;
14205
14206        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {
14207            _.currentSlide = _.currentSlide - _.options.slidesToScroll;
14208        }
14209
14210        if (_.slideCount <= _.options.slidesToShow) {
14211            _.currentSlide = 0;
14212        }
14213
14214        _.registerBreakpoints();
14215
14216        _.setProps();
14217        _.setupInfinite();
14218        _.buildArrows();
14219        _.updateArrows();
14220        _.initArrowEvents();
14221        _.buildDots();
14222        _.updateDots();
14223        _.initDotEvents();
14224        _.cleanUpSlideEvents();
14225        _.initSlideEvents();
14226
14227        _.checkResponsive(false, true);
14228
14229        if (_.options.focusOnSelect === true) {
14230            $(_.$slideTrack).children().on('click.slick', _.selectHandler);
14231        }
14232
14233        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);
14234
14235        _.setPosition();
14236        _.focusHandler();
14237
14238        _.paused = !_.options.autoplay;
14239        _.autoPlay();
14240
14241        _.$slider.trigger('reInit', [_]);
14242
14243    };
14244
14245    Slick.prototype.resize = function() {
14246
14247        var _ = this;
14248
14249        if ($(window).width() !== _.windowWidth) {
14250            clearTimeout(_.windowDelay);
14251            _.windowDelay = window.setTimeout(function() {
14252                _.windowWidth = $(window).width();
14253                _.checkResponsive();
14254                if( !_.unslicked ) { _.setPosition(); }
14255            }, 50);
14256        }
14257    };
14258
14259    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {
14260
14261        var _ = this;
14262
14263        if (typeof(index) === 'boolean') {
14264            removeBefore = index;
14265            index = removeBefore === true ? 0 : _.slideCount - 1;
14266        } else {
14267            index = removeBefore === true ? --index : index;
14268        }
14269
14270        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {
14271            return false;
14272        }
14273
14274        _.unload();
14275
14276        if (removeAll === true) {
14277            _.$slideTrack.children().remove();
14278        } else {
14279            _.$slideTrack.children(this.options.slide).eq(index).remove();
14280        }
14281
14282        _.$slides = _.$slideTrack.children(this.options.slide);
14283
14284        _.$slideTrack.children(this.options.slide).detach();
14285
14286        _.$slideTrack.append(_.$slides);
14287
14288        _.$slidesCache = _.$slides;
14289
14290        _.reinit();
14291
14292    };
14293
14294    Slick.prototype.setCSS = function(position) {
14295
14296        var _ = this,
14297            positionProps = {},
14298            x, y;
14299
14300        if (_.options.rtl === true) {
14301            position = -position;
14302        }
14303        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';
14304        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';
14305
14306        positionProps[_.positionProp] = position;
14307
14308        if (_.transformsEnabled === false) {
14309            _.$slideTrack.css(positionProps);
14310        } else {
14311            positionProps = {};
14312            if (_.cssTransitions === false) {
14313                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';
14314                _.$slideTrack.css(positionProps);
14315            } else {
14316                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';
14317                _.$slideTrack.css(positionProps);
14318            }
14319        }
14320
14321    };
14322
14323    Slick.prototype.setDimensions = function() {
14324
14325        var _ = this;
14326
14327        if (_.options.vertical === false) {
14328            if (_.options.centerMode === true) {
14329                _.$list.css({
14330                    padding: ('0px ' + _.options.centerPadding)
14331                });
14332            }
14333        } else {
14334            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);
14335            if (_.options.centerMode === true) {
14336                _.$list.css({
14337                    padding: (_.options.centerPadding + ' 0px')
14338                });
14339            }
14340        }
14341
14342        _.listWidth = _.$list.width();
14343        _.listHeight = _.$list.height();
14344
14345
14346        if (_.options.vertical === false && _.options.variableWidth === false) {
14347            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);
14348            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));
14349
14350        } else if (_.options.variableWidth === true) {
14351            _.$slideTrack.width(5000 * _.slideCount);
14352        } else {
14353            _.slideWidth = Math.ceil(_.listWidth);
14354            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));
14355        }
14356
14357        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();
14358        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);
14359
14360    };
14361
14362    Slick.prototype.setFade = function() {
14363
14364        var _ = this,
14365            targetLeft;
14366
14367        _.$slides.each(function(index, element) {
14368            targetLeft = (_.slideWidth * index) * -1;
14369            if (_.options.rtl === true) {
14370                $(element).css({
14371                    position: 'relative',
14372                    right: targetLeft,
14373                    top: 0,
14374                    zIndex: _.options.zIndex - 2,
14375                    opacity: 0
14376                });
14377            } else {
14378                $(element).css({
14379                    position: 'relative',
14380                    left: targetLeft,
14381                    top: 0,
14382                    zIndex: _.options.zIndex - 2,
14383                    opacity: 0
14384                });
14385            }
14386        });
14387
14388        _.$slides.eq(_.currentSlide).css({
14389            zIndex: _.options.zIndex - 1,
14390            opacity: 1
14391        });
14392
14393    };
14394
14395    Slick.prototype.setHeight = function() {
14396
14397        var _ = this;
14398
14399        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {
14400            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);
14401            _.$list.css('height', targetHeight);
14402        }
14403
14404    };
14405
14406    Slick.prototype.setOption =
14407    Slick.prototype.slickSetOption = function() {
14408
14409        /**
14410         * accepts arguments in format of:
14411         *
14412         *  - for changing a single option's value:
14413         *     .slick("setOption", option, value, refresh )
14414         *
14415         *  - for changing a set of responsive options:
14416         *     .slick("setOption", 'responsive', [{}, ...], refresh )
14417         *
14418         *  - for updating multiple values at once (not responsive)
14419         *     .slick("setOption", { 'option': value, ... }, refresh )
14420         */
14421
14422        var _ = this, l, item, option, value, refresh = false, type;
14423
14424        if( $.type( arguments[0] ) === 'object' ) {
14425
14426            option =  arguments[0];
14427            refresh = arguments[1];
14428            type = 'multiple';
14429
14430        } else if ( $.type( arguments[0] ) === 'string' ) {
14431
14432            option =  arguments[0];
14433            value = arguments[1];
14434            refresh = arguments[2];
14435
14436            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {
14437
14438                type = 'responsive';
14439
14440            } else if ( typeof arguments[1] !== 'undefined' ) {
14441
14442                type = 'single';
14443
14444            }
14445
14446        }
14447
14448        if ( type === 'single' ) {
14449
14450            _.options[option] = value;
14451
14452
14453        } else if ( type === 'multiple' ) {
14454
14455            $.each( option , function( opt, val ) {
14456
14457                _.options[opt] = val;
14458
14459            });
14460
14461
14462        } else if ( type === 'responsive' ) {
14463
14464            for ( item in value ) {
14465
14466                if( $.type( _.options.responsive ) !== 'array' ) {
14467
14468                    _.options.responsive = [ value[item] ];
14469
14470                } else {
14471
14472                    l = _.options.responsive.length-1;
14473
14474                    // loop through the responsive object and splice out duplicates.
14475                    while( l >= 0 ) {
14476
14477                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {
14478
14479                            _.options.responsive.splice(l,1);
14480
14481                        }
14482
14483                        l--;
14484
14485                    }
14486
14487                    _.options.responsive.push( value[item] );
14488
14489                }
14490
14491            }
14492
14493        }
14494
14495        if ( refresh ) {
14496
14497            _.unload();
14498            _.reinit();
14499
14500        }
14501
14502    };
14503
14504    Slick.prototype.setPosition = function() {
14505
14506        var _ = this;
14507
14508        _.setDimensions();
14509
14510        _.setHeight();
14511
14512        if (_.options.fade === false) {
14513            _.setCSS(_.getLeft(_.currentSlide));
14514        } else {
14515            _.setFade();
14516        }
14517
14518        _.$slider.trigger('setPosition', [_]);
14519
14520    };
14521
14522    Slick.prototype.setProps = function() {
14523
14524        var _ = this,
14525            bodyStyle = document.body.style;
14526
14527        _.positionProp = _.options.vertical === true ? 'top' : 'left';
14528
14529        if (_.positionProp === 'top') {
14530            _.$slider.addClass('slick-vertical');
14531        } else {
14532            _.$slider.removeClass('slick-vertical');
14533        }
14534
14535        if (bodyStyle.WebkitTransition !== undefined ||
14536            bodyStyle.MozTransition !== undefined ||
14537            bodyStyle.msTransition !== undefined) {
14538            if (_.options.useCSS === true) {
14539                _.cssTransitions = true;
14540            }
14541        }
14542
14543        if ( _.options.fade ) {
14544            if ( typeof _.options.zIndex === 'number' ) {
14545                if( _.options.zIndex < 3 ) {
14546                    _.options.zIndex = 3;
14547                }
14548            } else {
14549                _.options.zIndex = _.defaults.zIndex;
14550            }
14551        }
14552
14553        if (bodyStyle.OTransform !== undefined) {
14554            _.animType = 'OTransform';
14555            _.transformType = '-o-transform';
14556            _.transitionType = 'OTransition';
14557            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
14558        }
14559        if (bodyStyle.MozTransform !== undefined) {
14560            _.animType = 'MozTransform';
14561            _.transformType = '-moz-transform';
14562            _.transitionType = 'MozTransition';
14563            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;
14564        }
14565        if (bodyStyle.webkitTransform !== undefined) {
14566            _.animType = 'webkitTransform';
14567            _.transformType = '-webkit-transform';
14568            _.transitionType = 'webkitTransition';
14569            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;
14570        }
14571        if (bodyStyle.msTransform !== undefined) {
14572            _.animType = 'msTransform';
14573            _.transformType = '-ms-transform';
14574            _.transitionType = 'msTransition';
14575            if (bodyStyle.msTransform === undefined) _.animType = false;
14576        }
14577        if (bodyStyle.transform !== undefined && _.animType !== false) {
14578            _.animType = 'transform';
14579            _.transformType = 'transform';
14580            _.transitionType = 'transition';
14581        }
14582        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);
14583    };
14584
14585
14586    Slick.prototype.setSlideClasses = function(index) {
14587
14588        var _ = this,
14589            centerOffset, allSlides, indexOffset, remainder;
14590
14591        allSlides = _.$slider
14592            .find('.slick-slide')
14593            .removeClass('slick-active slick-center slick-current')
14594            .attr('aria-hidden', 'true');
14595
14596        _.$slides
14597            .eq(index)
14598            .addClass('slick-current');
14599
14600        if (_.options.centerMode === true) {
14601
14602            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;
14603
14604            centerOffset = Math.floor(_.options.slidesToShow / 2);
14605
14606            if (_.options.infinite === true) {
14607
14608                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {
14609                    _.$slides
14610                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)
14611                        .addClass('slick-active')
14612                        .attr('aria-hidden', 'false');
14613
14614                } else {
14615
14616                    indexOffset = _.options.slidesToShow + index;
14617                    allSlides
14618                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)
14619                        .addClass('slick-active')
14620                        .attr('aria-hidden', 'false');
14621
14622                }
14623
14624                if (index === 0) {
14625
14626                    allSlides
14627                        .eq(allSlides.length - 1 - _.options.slidesToShow)
14628                        .addClass('slick-center');
14629
14630                } else if (index === _.slideCount - 1) {
14631
14632                    allSlides
14633                        .eq(_.options.slidesToShow)
14634                        .addClass('slick-center');
14635
14636                }
14637
14638            }
14639
14640            _.$slides
14641                .eq(index)
14642                .addClass('slick-center');
14643
14644        } else {
14645
14646            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {
14647
14648                _.$slides
14649                    .slice(index, index + _.options.slidesToShow)
14650                    .addClass('slick-active')
14651                    .attr('aria-hidden', 'false');
14652
14653            } else if (allSlides.length <= _.options.slidesToShow) {
14654
14655                allSlides
14656                    .addClass('slick-active')
14657                    .attr('aria-hidden', 'false');
14658
14659            } else {
14660
14661                remainder = _.slideCount % _.options.slidesToShow;
14662                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;
14663
14664                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {
14665
14666                    allSlides
14667                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)
14668                        .addClass('slick-active')
14669                        .attr('aria-hidden', 'false');
14670
14671                } else {
14672
14673                    allSlides
14674                        .slice(indexOffset, indexOffset + _.options.slidesToShow)
14675                        .addClass('slick-active')
14676                        .attr('aria-hidden', 'false');
14677
14678                }
14679
14680            }
14681
14682        }
14683
14684        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {
14685            _.lazyLoad();
14686        }
14687    };
14688
14689    Slick.prototype.setupInfinite = function() {
14690
14691        var _ = this,
14692            i, slideIndex, infiniteCount;
14693
14694        if (_.options.fade === true) {
14695            _.options.centerMode = false;
14696        }
14697
14698        if (_.options.infinite === true && _.options.fade === false) {
14699
14700            slideIndex = null;
14701
14702            if (_.slideCount > _.options.slidesToShow) {
14703
14704                if (_.options.centerMode === true) {
14705                    infiniteCount = _.options.slidesToShow + 1;
14706                } else {
14707                    infiniteCount = _.options.slidesToShow;
14708                }
14709
14710                for (i = _.slideCount; i > (_.slideCount -
14711                        infiniteCount); i -= 1) {
14712                    slideIndex = i - 1;
14713                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
14714                        .attr('data-slick-index', slideIndex - _.slideCount)
14715                        .prependTo(_.$slideTrack).addClass('slick-cloned');
14716                }
14717                for (i = 0; i < infiniteCount  + _.slideCount; i += 1) {
14718                    slideIndex = i;
14719                    $(_.$slides[slideIndex]).clone(true).attr('id', '')
14720                        .attr('data-slick-index', slideIndex + _.slideCount)
14721                        .appendTo(_.$slideTrack).addClass('slick-cloned');
14722                }
14723                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {
14724                    $(this).attr('id', '');
14725                });
14726
14727            }
14728
14729        }
14730
14731    };
14732
14733    Slick.prototype.interrupt = function( toggle ) {
14734
14735        var _ = this;
14736
14737        if( !toggle ) {
14738            _.autoPlay();
14739        }
14740        _.interrupted = toggle;
14741
14742    };
14743
14744    Slick.prototype.selectHandler = function(event) {
14745
14746        var _ = this;
14747
14748        var targetElement =
14749            $(event.target).is('.slick-slide') ?
14750                $(event.target) :
14751                $(event.target).parents('.slick-slide');
14752
14753        var index = parseInt(targetElement.attr('data-slick-index'));
14754
14755        if (!index) index = 0;
14756
14757        if (_.slideCount <= _.options.slidesToShow) {
14758
14759            _.slideHandler(index, false, true);
14760            return;
14761
14762        }
14763
14764        _.slideHandler(index);
14765
14766    };
14767
14768    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {
14769
14770        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,
14771            _ = this, navTarget;
14772
14773        sync = sync || false;
14774
14775        if (_.animating === true && _.options.waitForAnimate === true) {
14776            return;
14777        }
14778
14779        if (_.options.fade === true && _.currentSlide === index) {
14780            return;
14781        }
14782
14783        if (sync === false) {
14784            _.asNavFor(index);
14785        }
14786
14787        targetSlide = index;
14788        targetLeft = _.getLeft(targetSlide);
14789        slideLeft = _.getLeft(_.currentSlide);
14790
14791        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;
14792
14793        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {
14794            if (_.options.fade === false) {
14795                targetSlide = _.currentSlide;
14796                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
14797                    _.animateSlide(slideLeft, function() {
14798                        _.postSlide(targetSlide);
14799                    });
14800                } else {
14801                    _.postSlide(targetSlide);
14802                }
14803            }
14804            return;
14805        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {
14806            if (_.options.fade === false) {
14807                targetSlide = _.currentSlide;
14808                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
14809                    _.animateSlide(slideLeft, function() {
14810                        _.postSlide(targetSlide);
14811                    });
14812                } else {
14813                    _.postSlide(targetSlide);
14814                }
14815            }
14816            return;
14817        }
14818
14819        if ( _.options.autoplay ) {
14820            clearInterval(_.autoPlayTimer);
14821        }
14822
14823        if (targetSlide < 0) {
14824            if (_.slideCount % _.options.slidesToScroll !== 0) {
14825                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);
14826            } else {
14827                animSlide = _.slideCount + targetSlide;
14828            }
14829        } else if (targetSlide >= _.slideCount) {
14830            if (_.slideCount % _.options.slidesToScroll !== 0) {
14831                animSlide = 0;
14832            } else {
14833                animSlide = targetSlide - _.slideCount;
14834            }
14835        } else {
14836            animSlide = targetSlide;
14837        }
14838
14839        _.animating = true;
14840
14841        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);
14842
14843        oldSlide = _.currentSlide;
14844        _.currentSlide = animSlide;
14845
14846        _.setSlideClasses(_.currentSlide);
14847
14848        if ( _.options.asNavFor ) {
14849
14850            navTarget = _.getNavTarget();
14851            navTarget = navTarget.slick('getSlick');
14852
14853            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {
14854                navTarget.setSlideClasses(_.currentSlide);
14855            }
14856
14857        }
14858
14859        _.updateDots();
14860        _.updateArrows();
14861
14862        if (_.options.fade === true) {
14863            if (dontAnimate !== true) {
14864
14865                _.fadeSlideOut(oldSlide);
14866
14867                _.fadeSlide(animSlide, function() {
14868                    _.postSlide(animSlide);
14869                });
14870
14871            } else {
14872                _.postSlide(animSlide);
14873            }
14874            _.animateHeight();
14875            return;
14876        }
14877
14878        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {
14879            _.animateSlide(targetLeft, function() {
14880                _.postSlide(animSlide);
14881            });
14882        } else {
14883            _.postSlide(animSlide);
14884        }
14885
14886    };
14887
14888    Slick.prototype.startLoad = function() {
14889
14890        var _ = this;
14891
14892        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {
14893
14894            _.$prevArrow.hide();
14895            _.$nextArrow.hide();
14896
14897        }
14898
14899        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {
14900
14901            _.$dots.hide();
14902
14903        }
14904
14905        _.$slider.addClass('slick-loading');
14906
14907    };
14908
14909    Slick.prototype.swipeDirection = function() {
14910
14911        var xDist, yDist, r, swipeAngle, _ = this;
14912
14913        xDist = _.touchObject.startX - _.touchObject.curX;
14914        yDist = _.touchObject.startY - _.touchObject.curY;
14915        r = Math.atan2(yDist, xDist);
14916
14917        swipeAngle = Math.round(r * 180 / Math.PI);
14918        if (swipeAngle < 0) {
14919            swipeAngle = 360 - Math.abs(swipeAngle);
14920        }
14921
14922        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {
14923            return (_.options.rtl === false ? 'left' : 'right');
14924        }
14925        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {
14926            return (_.options.rtl === false ? 'left' : 'right');
14927        }
14928        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {
14929            return (_.options.rtl === false ? 'right' : 'left');
14930        }
14931        if (_.options.verticalSwiping === true) {
14932            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {
14933                return 'down';
14934            } else {
14935                return 'up';
14936            }
14937        }
14938
14939        return 'vertical';
14940
14941    };
14942
14943    Slick.prototype.swipeEnd = function(event) {
14944
14945        var _ = this,
14946            slideCount,
14947            direction;
14948
14949        _.dragging = false;
14950        _.swiping = false;
14951
14952        if (_.scrolling) {
14953            _.scrolling = false;
14954            return false;
14955        }
14956
14957        _.interrupted = false;
14958        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;
14959
14960        if ( _.touchObject.curX === undefined ) {
14961            return false;
14962        }
14963
14964        if ( _.touchObject.edgeHit === true ) {
14965            _.$slider.trigger('edge', [_, _.swipeDirection() ]);
14966        }
14967
14968        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {
14969
14970            direction = _.swipeDirection();
14971
14972            switch ( direction ) {
14973
14974                case 'left':
14975                case 'down':
14976
14977                    slideCount =
14978                        _.options.swipeToSlide ?
14979                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :
14980                            _.currentSlide + _.getSlideCount();
14981
14982                    _.currentDirection = 0;
14983
14984                    break;
14985
14986                case 'right':
14987                case 'up':
14988
14989                    slideCount =
14990                        _.options.swipeToSlide ?
14991                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :
14992                            _.currentSlide - _.getSlideCount();
14993
14994                    _.currentDirection = 1;
14995
14996                    break;
14997
vendor: 9,805 bytes, lines 14998-15340
14998                default:
14999
15000
15001            }
15002
15003            if( direction != 'vertical' ) {
15004
15005                _.slideHandler( slideCount );
15006                _.touchObject = {};
15007                _.$slider.trigger('swipe', [_, direction ]);
15008
15009            }
15010
15011        } else {
15012
15013            if ( _.touchObject.startX !== _.touchObject.curX ) {
15014
15015                _.slideHandler( _.currentSlide );
15016                _.touchObject = {};
15017
15018            }
15019
15020        }
15021
15022    };
15023
15024    Slick.prototype.swipeHandler = function(event) {
15025
15026        var _ = this;
15027
15028        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {
15029            return;
15030        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {
15031            return;
15032        }
15033
15034        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?
15035            event.originalEvent.touches.length : 1;
15036
15037        _.touchObject.minSwipe = _.listWidth / _.options
15038            .touchThreshold;
15039
15040        if (_.options.verticalSwiping === true) {
15041            _.touchObject.minSwipe = _.listHeight / _.options
15042                .touchThreshold;
15043        }
15044
15045        switch (event.data.action) {
15046
15047            case 'start':
15048                _.swipeStart(event);
15049                break;
15050
15051            case 'move':
15052                _.swipeMove(event);
15053                break;
15054
15055            case 'end':
15056                _.swipeEnd(event);
15057                break;
15058
15059        }
15060
15061    };
15062
15063    Slick.prototype.swipeMove = function(event) {
15064
15065        var _ = this,
15066            edgeWasHit = false,
15067            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;
15068
15069        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;
15070
15071        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {
15072            return false;
15073        }
15074
15075        curLeft = _.getLeft(_.currentSlide);
15076
15077        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;
15078        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;
15079
15080        _.touchObject.swipeLength = Math.round(Math.sqrt(
15081            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));
15082
15083        verticalSwipeLength = Math.round(Math.sqrt(
15084            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));
15085
15086        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {
15087            _.scrolling = true;
15088            return false;
15089        }
15090
15091        if (_.options.verticalSwiping === true) {
15092            _.touchObject.swipeLength = verticalSwipeLength;
15093        }
15094
15095        swipeDirection = _.swipeDirection();
15096
15097        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {
15098            _.swiping = true;
15099            event.preventDefault();
15100        }
15101
15102        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);
15103        if (_.options.verticalSwiping === true) {
15104            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;
15105        }
15106
15107
15108        swipeLength = _.touchObject.swipeLength;
15109
15110        _.touchObject.edgeHit = false;
15111
15112        if (_.options.infinite === false) {
15113            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {
15114                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;
15115                _.touchObject.edgeHit = true;
15116            }
15117        }
15118
15119        if (_.options.vertical === false) {
15120            _.swipeLeft = curLeft + swipeLength * positionOffset;
15121        } else {
15122            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;
15123        }
15124        if (_.options.verticalSwiping === true) {
15125            _.swipeLeft = curLeft + swipeLength * positionOffset;
15126        }
15127
15128        if (_.options.fade === true || _.options.touchMove === false) {
15129            return false;
15130        }
15131
15132        if (_.animating === true) {
15133            _.swipeLeft = null;
15134            return false;
15135        }
15136
15137        _.setCSS(_.swipeLeft);
15138
15139    };
15140
15141    Slick.prototype.swipeStart = function(event) {
15142
15143        var _ = this,
15144            touches;
15145
15146        _.interrupted = true;
15147
15148        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {
15149            _.touchObject = {};
15150            return false;
15151        }
15152
15153        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {
15154            touches = event.originalEvent.touches[0];
15155        }
15156
15157        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;
15158        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;
15159
15160        _.dragging = true;
15161
15162    };
15163
15164    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {
15165
15166        var _ = this;
15167
15168        if (_.$slidesCache !== null) {
15169
15170            _.unload();
15171
15172            _.$slideTrack.children(this.options.slide).detach();
15173
15174            _.$slidesCache.appendTo(_.$slideTrack);
15175
15176            _.reinit();
15177
15178        }
15179
15180    };
15181
15182    Slick.prototype.unload = function() {
15183
15184        var _ = this;
15185
15186        $('.slick-cloned', _.$slider).remove();
15187
15188        if (_.$dots) {
15189            _.$dots.remove();
15190        }
15191
15192        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {
15193            _.$prevArrow.remove();
15194        }
15195
15196        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {
15197            _.$nextArrow.remove();
15198        }
15199
15200        _.$slides
15201            .removeClass('slick-slide slick-active slick-visible slick-current')
15202            .attr('aria-hidden', 'true')
15203            .css('width', '');
15204
15205    };
15206
15207    Slick.prototype.unslick = function(fromBreakpoint) {
15208
15209        var _ = this;
15210        _.$slider.trigger('unslick', [_, fromBreakpoint]);
15211        _.destroy();
15212
15213    };
15214
15215    Slick.prototype.updateArrows = function() {
15216
15217        var _ = this,
15218            centerOffset;
15219
15220        centerOffset = Math.floor(_.options.slidesToShow / 2);
15221
15222        if ( _.options.arrows === true &&
15223            _.slideCount > _.options.slidesToShow &&
15224            !_.options.infinite ) {
15225
15226            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
15227            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
15228
15229            if (_.currentSlide === 0) {
15230
15231                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
15232                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
15233
15234            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {
15235
15236                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
15237                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
15238
15239            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {
15240
15241                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');
15242                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');
15243
15244            }
15245
15246        }
15247
15248    };
15249
15250    Slick.prototype.updateDots = function() {
15251
15252        var _ = this;
15253
15254        if (_.$dots !== null) {
15255
15256            _.$dots
15257                .find('li')
15258                    .removeClass('slick-active')
15259                    .end();
15260
15261            _.$dots
15262                .find('li')
15263                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))
15264                .addClass('slick-active');
15265
15266        }
15267
15268    };
15269
15270    Slick.prototype.visibility = function() {
15271
15272        var _ = this;
15273
15274        if ( _.options.autoplay ) {
15275
15276            if ( document[_.hidden] ) {
15277
15278                _.interrupted = true;
15279
15280            } else {
15281
15282                _.interrupted = false;
15283
15284            }
15285
15286        }
15287
15288    };
15289
15290    $.fn.slick = function() {
15291        var _ = this,
15292            opt = arguments[0],
15293            args = Array.prototype.slice.call(arguments, 1),
15294            l = _.length,
15295            i,
15296            ret;
15297        for (i = 0; i < l; i++) {
15298            if (typeof opt == 'object' || typeof opt == 'undefined')
15299                _[i].slick = new Slick(_[i], opt);
15300            else
15301                ret = _[i].slick[opt].apply(_[i].slick, args);
15302            if (typeof ret != 'undefined') return ret;
15303        }
15304        return _;
15305    };
15306
15307}));
15308
15309(function webpackUniversalModuleDefinition(root, factory) {
15310	if(typeof exports === 'object' && typeof module === 'object')
15311		module.exports = factory(require("jquery"));
15312	else if(typeof define === 'function' && define.amd)
15313		define(["jquery"], factory);
15314	else if(typeof exports === 'object')
15315		exports["foundation.core"] = factory(require("jquery"));
15316	else
15317		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.core"] = factory(root["jQuery"]);
15318})(window, function(__WEBPACK_EXTERNAL_MODULE_jquery__) {
15319return /******/ (function(modules) { // webpackBootstrap
15320/******/ 	// The module cache
15321/******/ 	var installedModules = {};
15322/******/
15323/******/ 	// The require function
15324/******/ 	function __webpack_require__(moduleId) {
15325/******/
15326/******/ 		// Check if module is in cache
15327/******/ 		if(installedModules[moduleId]) {
15328/******/ 			return installedModules[moduleId].exports;
15329/******/ 		}
15330/******/ 		// Create a new module (and put it into the cache)
15331/******/ 		var module = installedModules[moduleId] = {
15332/******/ 			i: moduleId,
15333/******/ 			l: false,
15334/******/ 			exports: {}
15335/******/ 		};
15336/******/
15337/******/ 		// Execute the module function
15338/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
15339/******/
15340/******/ 		// Flag the module as loaded
vendor: 2,822 bytes, lines 15341-15406
15341/******/ 		module.l = true;
15342/******/
15343/******/ 		// Return the exports of the module
15344/******/ 		return module.exports;
15345/******/ 	}
15346/******/
15347/******/
15348/******/ 	// expose the modules object (__webpack_modules__)
15349/******/ 	__webpack_require__.m = modules;
15350/******/
15351/******/ 	// expose the module cache
15352/******/ 	__webpack_require__.c = installedModules;
15353/******/
15354/******/ 	// define getter function for harmony exports
15355/******/ 	__webpack_require__.d = function(exports, name, getter) {
15356/******/ 		if(!__webpack_require__.o(exports, name)) {
15357/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
15358/******/ 		}
15359/******/ 	};
15360/******/
15361/******/ 	// define __esModule on exports
15362/******/ 	__webpack_require__.r = function(exports) {
15363/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
15364/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
15365/******/ 		}
15366/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
15367/******/ 	};
15368/******/
15369/******/ 	// create a fake namespace object
15370/******/ 	// mode & 1: value is a module id, require it
15371/******/ 	// mode & 2: merge all properties of value into the ns
15372/******/ 	// mode & 4: return value when already ns object
15373/******/ 	// mode & 8|1: behave like require
15374/******/ 	__webpack_require__.t = function(value, mode) {
15375/******/ 		if(mode & 1) value = __webpack_require__(value);
15376/******/ 		if(mode & 8) return value;
15377/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
15378/******/ 		var ns = Object.create(null);
15379/******/ 		__webpack_require__.r(ns);
15380/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
15381/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
15382/******/ 		return ns;
15383/******/ 	};
15384/******/
15385/******/ 	// getDefaultExport function for compatibility with non-harmony modules
15386/******/ 	__webpack_require__.n = function(module) {
15387/******/ 		var getter = module && module.__esModule ?
15388/******/ 			function getDefault() { return module['default']; } :
15389/******/ 			function getModuleExports() { return module; };
15390/******/ 		__webpack_require__.d(getter, 'a', getter);
15391/******/ 		return getter;
15392/******/ 	};
15393/******/
15394/******/ 	// Object.prototype.hasOwnProperty.call
15395/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
15396/******/
15397/******/ 	// __webpack_public_path__
15398/******/ 	__webpack_require__.p = "";
15399/******/
15400/******/
15401/******/ 	// Load entry module and return exports
15402/******/ 	return __webpack_require__(__webpack_require__.s = 0);
15403/******/ })
15404/************************************************************************/
15405/******/ ({
15406
15407/***/ "./js/entries/plugins/foundation.core.js":
15408/*!***********************************************!*\
15409  !*** ./js/entries/plugins/foundation.core.js ***!
15410  \***********************************************/
15411/*! exports provided: Foundation, Plugin, rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear */
15412/***/ (function(module, __webpack_exports__, __webpack_require__) {
15413
15414"use strict";
15415__webpack_require__.r(__webpack_exports__);
15416/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
15417/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
15418/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.core */ "./js/foundation.core.js");
15419/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"]; });
15420
15421/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../foundation.core.plugin */ "./js/foundation.core.plugin.js");
15422/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../foundation.core.utils */ "./js/foundation.core.utils.js");
15423/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Plugin", function() { return _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]; });
15424
15425/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "rtl", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["rtl"]; });
15426
15427/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GetYoDigits", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"]; });
15428
15429/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RegExpEscape", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["RegExpEscape"]; });
15430
15431/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transitionend", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"]; });
15432
15433/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onLoad", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["onLoad"]; });
15434
15435/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreMousedisappear", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["ignoreMousedisappear"]; });
15436
15437// --- Foundation Core API ---
15438// Initialize Foundation and add some utilities to its public API for backward compatibility.
15439// Please note that every utility do not have to be added to the core API.
15440
15441
15442
15443
15444_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].addToJquery(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); // Every plugin depends on plugin now, we can include that on the core for the
15445// script inclusion path.
15446
15447_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].Plugin = _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]; // These are now separated out, but historically were a part of this module,
15448// and since this is here for backwards compatibility we include them in
15449// this entry.
15450
15451_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].rtl = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["rtl"];
15452_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].GetYoDigits = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"];
15453_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].transitionend = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"];
15454_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].RegExpEscape = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["RegExpEscape"];
15455_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].onLoad = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["onLoad"];
15456window.Foundation = _foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"]; // --- Foundation Core exports ---
15457// Export "Plugin" and all core utilities, since the `foundation.core` entry plays the role of
15458// all core source files.
15459
15460
15461
15462
15463
15464/***/ }),
15465
vendor: 10,742 bytes, lines 15466-15740
15466/***/ "./js/foundation.core.js":
15467/*!*******************************!*\
15468  !*** ./js/foundation.core.js ***!
15469  \*******************************/
15470/*! exports provided: Foundation */
15471/***/ (function(module, __webpack_exports__, __webpack_require__) {
15472
15473"use strict";
15474__webpack_require__.r(__webpack_exports__);
15475/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return Foundation; });
15476/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
15477/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
15478/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
15479/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
15480
15481
15482function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15483
15484
15485
15486
15487var FOUNDATION_VERSION = '6.6.3'; // Global Foundation object
15488// This is attached to the window, or used as a module for AMD/Browserify
15489
15490var Foundation = {
15491  version: FOUNDATION_VERSION,
15492
15493  /**
15494   * Stores initialized plugins.
15495   */
15496  _plugins: {},
15497
15498  /**
15499   * Stores generated unique ids for plugin instances
15500   */
15501  _uuids: [],
15502
15503  /**
15504   * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.
15505   * @param {Object} plugin - The constructor of the plugin.
15506   */
15507  plugin: function plugin(_plugin, name) {
15508    // Object key to use when adding to global Foundation object
15509    // Examples: Foundation.Reveal, Foundation.OffCanvas
15510    var className = name || functionName(_plugin); // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin
15511    // Examples: data-reveal, data-off-canvas
15512
15513    var attrName = hyphenate(className); // Add to the Foundation object and the plugins list (for reflowing)
15514
15515    this._plugins[attrName] = this[className] = _plugin;
15516  },
15517
15518  /**
15519   * @function
15520   * Populates the _uuids array with pointers to each individual plugin instance.
15521   * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.
15522   * Also fires the initialization event for each plugin, consolidating repetitive code.
15523   * @param {Object} plugin - an instance of a plugin, usually `this` in context.
15524   * @param {String} name - the name of the plugin, passed as a camelCased string.
15525   * @fires Plugin#init
15526   */
15527  registerPlugin: function registerPlugin(plugin, name) {
15528    var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();
15529    plugin.uuid = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, pluginName);
15530
15531    if (!plugin.$element.attr("data-".concat(pluginName))) {
15532      plugin.$element.attr("data-".concat(pluginName), plugin.uuid);
15533    }
15534
15535    if (!plugin.$element.data('zfPlugin')) {
15536      plugin.$element.data('zfPlugin', plugin);
15537    }
15538    /**
15539     * Fires when the plugin has initialized.
15540     * @event Plugin#init
15541     */
15542
15543
15544    plugin.$element.trigger("init.zf.".concat(pluginName));
15545
15546    this._uuids.push(plugin.uuid);
15547
15548    return;
15549  },
15550
15551  /**
15552   * @function
15553   * Removes the plugins uuid from the _uuids array.
15554   * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.
15555   * Also fires the destroyed event for the plugin, consolidating repetitive code.
15556   * @param {Object} plugin - an instance of a plugin, usually `this` in context.
15557   * @fires Plugin#destroyed
15558   */
15559  unregisterPlugin: function unregisterPlugin(plugin) {
15560    var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));
15561
15562    this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);
15563
15564    plugin.$element.removeAttr("data-".concat(pluginName)).removeData('zfPlugin')
15565    /**
15566     * Fires when the plugin has been destroyed.
15567     * @event Plugin#destroyed
15568     */
15569    .trigger("destroyed.zf.".concat(pluginName));
15570
15571    for (var prop in plugin) {
15572      plugin[prop] = null; //clean up script to prep for garbage collection.
15573    }
15574
15575    return;
15576  },
15577
15578  /**
15579   * @function
15580   * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.
15581   * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`
15582   * @default If no argument is passed, reflow all currently active plugins.
15583   */
15584  reInit: function reInit(plugins) {
15585    var isJQ = plugins instanceof jquery__WEBPACK_IMPORTED_MODULE_0___default.a;
15586
15587    try {
15588      if (isJQ) {
15589        plugins.each(function () {
15590          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('zfPlugin')._init();
15591        });
15592      } else {
15593        var type = _typeof(plugins),
15594            _this = this,
15595            fns = {
15596          'object': function object(plgs) {
15597            plgs.forEach(function (p) {
15598              p = hyphenate(p);
15599              jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-' + p + ']').foundation('_init');
15600            });
15601          },
15602          'string': function string() {
15603            plugins = hyphenate(plugins);
15604            jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-' + plugins + ']').foundation('_init');
15605          },
15606          'undefined': function undefined() {
15607            this['object'](Object.keys(_this._plugins));
15608          }
15609        };
15610
15611        fns[type](plugins);
15612      }
15613    } catch (err) {
15614      console.error(err);
15615    } finally {
15616      return plugins;
15617    }
15618  },
15619
15620  /**
15621   * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.
15622   * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.
15623   * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.
15624   */
15625  reflow: function reflow(elem, plugins) {
15626    // If plugins is undefined, just grab everything
15627    if (typeof plugins === 'undefined') {
15628      plugins = Object.keys(this._plugins);
15629    } // If plugins is a string, convert it to an array with one item
15630    else if (typeof plugins === 'string') {
15631        plugins = [plugins];
15632      }
15633
15634    var _this = this; // Iterate through each plugin
15635
15636
15637    jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(plugins, function (i, name) {
15638      // Get the current plugin
15639      var plugin = _this._plugins[name]; // Localize the search to all elements inside elem, as well as elem itself, unless elem === document
15640
15641      var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem).find('[data-' + name + ']').addBack('[data-' + name + ']').filter(function () {
15642        return typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data("zfPlugin") === 'undefined';
15643      }); // For each plugin found, initialize it
15644
15645      $elem.each(function () {
15646        var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
15647            opts = {
15648          reflow: true
15649        };
15650
15651        if ($el.attr('data-options')) {
15652          $el.attr('data-options').split(';').forEach(function (option, _index) {
15653            var opt = option.split(':').map(function (el) {
15654              return el.trim();
15655            });
15656            if (opt[0]) opts[opt[0]] = parseValue(opt[1]);
15657          });
15658        }
15659
15660        try {
15661          $el.data('zfPlugin', new plugin(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), opts));
15662        } catch (er) {
15663          console.error(er);
15664        } finally {
15665          return;
15666        }
15667      });
15668    });
15669  },
15670  getFnName: functionName,
15671  addToJquery: function addToJquery($) {
15672    // TODO: consider not making this a jQuery function
15673    // TODO: need way to reflow vs. re-initialize
15674
15675    /**
15676     * The Foundation jQuery method.
15677     * @param {String|Array} method - An action to perform on the current jQuery object.
15678     */
15679    var foundation = function foundation(method) {
15680      var type = _typeof(method),
15681          $noJS = $('.no-js');
15682
15683      if ($noJS.length) {
15684        $noJS.removeClass('no-js');
15685      }
15686
15687      if (type === 'undefined') {
15688        //needs to initialize the Foundation object, or an individual plugin.
15689        _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"]._init();
15690
15691        Foundation.reflow(this);
15692      } else if (type === 'string') {
15693        //an individual method to invoke on a plugin or group of plugins
15694        var args = Array.prototype.slice.call(arguments, 1); //collect all the arguments, if necessary
15695
15696        var plugClass = this.data('zfPlugin'); //determine the class of plugin
15697
15698        if (typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined') {
15699          //make sure both the class and method exist
15700          if (this.length === 1) {
15701            //if there's only one, call it directly.
15702            plugClass[method].apply(plugClass, args);
15703          } else {
15704            this.each(function (i, el) {
15705              //otherwise loop through the jQuery collection and invoke the method on each
15706              plugClass[method].apply($(el).data('zfPlugin'), args);
15707            });
15708          }
15709        } else {
15710          //error for no class or no method
15711          throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.');
15712        }
15713      } else {
15714        //error for invalid argument type
15715        throw new TypeError("We're sorry, ".concat(type, " is not a valid parameter. You must use a string representing the method you wish to invoke."));
15716      }
15717
15718      return this;
15719    };
15720
15721    $.fn.foundation = foundation;
15722    return $;
15723  }
15724};
15725Foundation.util = {
15726  /**
15727   * Function for applying a debounce effect to a function call.
15728   * @function
15729   * @param {Function} func - Function to be called at end of timeout.
15730   * @param {Number} delay - Time in ms to delay the call of `func`.
15731   * @returns function
15732   */
15733  throttle: function throttle(func, delay) {
15734    var timer = null;
15735    return function () {
15736      var context = this,
15737          args = arguments;
15738
15739      if (timer === null) {
15740        timer = setTimeout(function () {
vendor: 2,942 bytes, lines 15741-15842
15741          func.apply(context, args);
15742          timer = null;
15743        }, delay);
15744      }
15745    };
15746  }
15747};
15748window.Foundation = Foundation; // Polyfill for requestAnimationFrame
15749
15750(function () {
15751  if (!Date.now || !window.Date.now) window.Date.now = Date.now = function () {
15752    return new Date().getTime();
15753  };
15754  var vendors = ['webkit', 'moz'];
15755
15756  for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {
15757    var vp = vendors[i];
15758    window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];
15759    window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];
15760  }
15761
15762  if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {
15763    var lastTime = 0;
15764
15765    window.requestAnimationFrame = function (callback) {
15766      var now = Date.now();
15767      var nextTime = Math.max(lastTime + 16, now);
15768      return setTimeout(function () {
15769        callback(lastTime = nextTime);
15770      }, nextTime - now);
15771    };
15772
15773    window.cancelAnimationFrame = clearTimeout;
15774  }
15775  /**
15776   * Polyfill for performance.now, required by rAF
15777   */
15778
15779
15780  if (!window.performance || !window.performance.now) {
15781    window.performance = {
15782      start: Date.now(),
15783      now: function now() {
15784        return Date.now() - this.start;
15785      }
15786    };
15787  }
15788})();
15789
15790if (!Function.prototype.bind) {
15791  Function.prototype.bind = function (oThis) {
15792    if (typeof this !== 'function') {
15793      // closest thing possible to the ECMAScript 5
15794      // internal IsCallable function
15795      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
15796    }
15797
15798    var aArgs = Array.prototype.slice.call(arguments, 1),
15799        fToBind = this,
15800        fNOP = function fNOP() {},
15801        fBound = function fBound() {
15802      return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments)));
15803    };
15804
15805    if (this.prototype) {
15806      // native functions don't have a prototype
15807      fNOP.prototype = this.prototype;
15808    }
15809
15810    fBound.prototype = new fNOP();
15811    return fBound;
15812  };
15813} // Polyfill to get the name of a function in IE9
15814
15815
15816function functionName(fn) {
15817  if (typeof Function.prototype.name === 'undefined') {
15818    var funcNameRegex = /function\s([^(]{1,})\(/;
15819    var results = funcNameRegex.exec(fn.toString());
15820    return results && results.length > 1 ? results[1].trim() : "";
15821  } else if (typeof fn.prototype === 'undefined') {
15822    return fn.constructor.name;
15823  } else {
15824    return fn.prototype.constructor.name;
15825  }
15826}
15827
15828function parseValue(str) {
15829  if ('true' === str) return true;else if ('false' === str) return false;else if (!isNaN(str * 1)) return parseFloat(str);
15830  return str;
15831} // Convert PascalCase to kebab-case
15832// Thank you: http://stackoverflow.com/a/8955580
15833
15834
15835function hyphenate(str) {
15836  return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
15837}
15838
15839
15840
15841/***/ }),
15842
15843/***/ "./js/foundation.core.plugin.js":
15844/*!**************************************!*\
15845  !*** ./js/foundation.core.plugin.js ***!
15846  \**************************************/
15847/*! exports provided: Plugin */
15848/***/ (function(module, __webpack_exports__, __webpack_require__) {
15849
15850"use strict";
15851__webpack_require__.r(__webpack_exports__);
15852/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Plugin", function() { return Plugin; });
15853/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
15854/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
15855/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js");
15856
15857
15858function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15859
15860function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
15861
15862function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
15863
15864
15865 // Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST
15866// {function} _setup (replaces previous constructor),
15867// {function} _destroy (replaces previous destroy)
15868
15869var Plugin =
15870/*#__PURE__*/
15871function () {
15872  function Plugin(element, options) {
15873    _classCallCheck(this, Plugin);
15874
15875    this._setup(element, options);
15876
15877    var pluginName = getPluginName(this);
15878    this.uuid = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, pluginName);
15879
15880    if (!this.$element.attr("data-".concat(pluginName))) {
15881      this.$element.attr("data-".concat(pluginName), this.uuid);
15882    }
15883
15884    if (!this.$element.data('zfPlugin')) {
15885      this.$element.data('zfPlugin', this);
15886    }
15887    /**
15888     * Fires when the plugin has initialized.
15889     * @event Plugin#init
15890     */
15891
15892
15893    this.$element.trigger("init.zf.".concat(pluginName));
15894  }
15895
15896  _createClass(Plugin, [{
15897    key: "destroy",
15898    value: function destroy() {
15899      this._destroy();
15900
15901      var pluginName = getPluginName(this);
15902      this.$element.removeAttr("data-".concat(pluginName)).removeData('zfPlugin')
15903      /**
15904       * Fires when the plugin has been destroyed.
15905       * @event Plugin#destroyed
15906       */
15907      .trigger("destroyed.zf.".concat(pluginName));
15908
15909      for (var prop in this) {
15910        this[prop] = null; //clean up script to prep for garbage collection.
15911      }
15912    }
15913  }]);
15914
15915  return Plugin;
15916}(); // Convert PascalCase to kebab-case
15917// Thank you: http://stackoverflow.com/a/8955580
15918
15919
15920function hyphenate(str) {
15921  return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
15922}
15923
15924function getPluginName(obj) {
15925  return hyphenate(obj.className);
15926}
15927
15928
15929
15930/***/ }),
15931
vendor: 5,122 bytes, lines 15932-16065
15932/***/ "./js/foundation.core.utils.js":
15933/*!*************************************!*\
15934  !*** ./js/foundation.core.utils.js ***!
15935  \*************************************/
15936/*! exports provided: rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear */
15937/***/ (function(module, __webpack_exports__, __webpack_require__) {
15938
15939"use strict";
15940__webpack_require__.r(__webpack_exports__);
15941/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rtl", function() { return rtl; });
15942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GetYoDigits", function() { return GetYoDigits; });
15943/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RegExpEscape", function() { return RegExpEscape; });
15944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transitionend", function() { return transitionend; });
15945/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onLoad", function() { return onLoad; });
15946/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreMousedisappear", function() { return ignoreMousedisappear; });
15947/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
15948/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
15949
15950
15951 // Core Foundation Utilities, utilized in a number of places.
15952
15953/**
15954 * Returns a boolean for RTL support
15955 */
15956
15957function rtl() {
15958  return jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').attr('dir') === 'rtl';
15959}
15960/**
15961 * returns a random base-36 uid with namespacing
15962 * @function
15963 * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.
15964 * @param {String} namespace - name of plugin to be incorporated in uid, optional.
15965 * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.
15966 * @returns {String} - unique id
15967 */
15968
15969
15970function GetYoDigits() {
15971  var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 6;
15972  var namespace = arguments.length > 1 ? arguments[1] : undefined;
15973  var str = '';
15974  var chars = '0123456789abcdefghijklmnopqrstuvwxyz';
15975  var charsLength = chars.length;
15976
15977  for (var i = 0; i < length; i++) {
15978    str += chars[Math.floor(Math.random() * charsLength)];
15979  }
15980
15981  return namespace ? "".concat(str, "-").concat(namespace) : str;
15982}
15983/**
15984 * Escape a string so it can be used as a regexp pattern
15985 * @function
15986 * @see https://stackoverflow.com/a/9310752/4317384
15987 *
15988 * @param {String} str - string to escape.
15989 * @returns {String} - escaped string
15990 */
15991
15992
15993function RegExpEscape(str) {
15994  return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
15995}
15996
15997function transitionend($elem) {
15998  var transitions = {
15999    'transition': 'transitionend',
16000    'WebkitTransition': 'webkitTransitionEnd',
16001    'MozTransition': 'transitionend',
16002    'OTransition': 'otransitionend'
16003  };
16004  var elem = document.createElement('div'),
16005      end;
16006
16007  for (var transition in transitions) {
16008    if (typeof elem.style[transition] !== 'undefined') {
16009      end = transitions[transition];
16010    }
16011  }
16012
16013  if (end) {
16014    return end;
16015  } else {
16016    setTimeout(function () {
16017      $elem.triggerHandler('transitionend', [$elem]);
16018    }, 1);
16019    return 'transitionend';
16020  }
16021}
16022/**
16023 * Return an event type to listen for window load.
16024 *
16025 * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.
16026 * If `handler` is passed, attach it to the event on `$elem`.
16027 * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.
16028 * @function
16029 *
16030 * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.
16031 * @param {Function} [] handler - function to attach to the event.
16032 * @returns {String} - event type that should or will be triggered.
16033 */
16034
16035
16036function onLoad($elem, handler) {
16037  var didLoad = document.readyState === 'complete';
16038  var eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';
16039
16040  var cb = function cb() {
16041    return $elem.triggerHandler(eventType);
16042  };
16043
16044  if ($elem) {
16045    if (handler) $elem.one(eventType, handler);
16046    if (didLoad) setTimeout(cb);else jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).one('load', cb);
16047  }
16048
16049  return eventType;
16050}
16051/**
16052 * Retuns an handler for the `mouseleave` that ignore disappeared mouses.
16053 *
16054 * If the mouse "disappeared" from the document (like when going on a browser UI element, See https://git.io/zf-11410),
16055 * the event is ignored.
16056 * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window
16057 *   (like by switching to an other window with [Alt]+[Tab]).
16058 * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document
16059 *   outside of the element it left.
16060 *
16061 * @function
16062 *
16063 * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.
16064 * @param {Object} [] options - object of options:
16065 * - {Boolean}
16065 [false] ignoreLeaveWindow - also ignore when the user switched windows.
16066 * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.
16067 * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.
16068 */
16069
16070
16071function ignoreMousedisappear(handler) {
16072  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
16073      _ref$ignoreLeaveWindo = _ref.ignoreLeaveWindow,
16074      ignoreLeaveWindow = _ref$ignoreLeaveWindo === void 0 ? false : _ref$ignoreLeaveWindo,
16075      _ref$ignoreReappear = _ref.ignoreReappear,
16076      ignoreReappear = _ref$ignoreReappear === void 0 ? false : _ref$ignoreReappear;
16077
16078  return function leaveEventHandler(eLeave) {
16079    for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
16080      rest[_key - 1] = arguments[_key];
16081    }
16082
16083    var callback = handler.bind.apply(handler, [this, eLeave].concat(rest)); // The mouse left: call the given callback if the mouse entered elsewhere
16084
16085    if (eLeave.relatedTarget !== null) {
16086      return callback();
16087    } // Otherwise, check if the mouse actually left the window.
16088    // In firefox if the user switched between windows, the window sill have the focus by the time
16089    // the event is triggered. We have to debounce the event to test this case.
16090
16091
16092    setTimeout(function leaveEventDebouncer() {
16093      if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {
16094        return callback();
16095      } // Otherwise, wait for the mouse to reeapear outside of the element,
16096
16097
16098      if (!ignoreReappear) {
16099        jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).one('mouseenter', function reenterEventHandler(eReenter) {
16100          if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(eLeave.currentTarget).has(eReenter.target).length) {
16101            // Fill where the mouse finally entered.
16102            eLeave.relatedTarget = eReenter.target;
16103            callback();
16104          }
16105        });
16106      }
16107    }, 0);
16108  };
16109}
16110
16111
16112
16113/***/ }),
16114
16115/***/ "./js/foundation.util.mediaQuery.js":
16116/*!******************************************!*\
16117  !*** ./js/foundation.util.mediaQuery.js ***!
16118  \******************************************/
16119/*! exports provided: MediaQuery */
16120/***/ (function(module, __webpack_exports__, __webpack_require__) {
16121
16122"use strict";
16123__webpack_require__.r(__webpack_exports__);
16124/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MediaQuery", function() { return MediaQuery; });
16125/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
16126/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
16127
16128
16129function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16130
16131function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
16132
16133function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
16134
16135function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
16136
16137function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16138
16139 // Default set of media queries
16140
16141var defaultQueries = {
16142  'default': 'only screen',
16143  landscape: 'only screen and (orientation: landscape)',
16144  portrait: 'only screen and (orientation: portrait)',
16145  retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)'
16146}; // matchMedia() polyfill - Test a CSS media type/query in JS.
16147// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license
16148
16149/* eslint-disable */
16150
16151window.matchMedia || (window.matchMedia = function () {
16152  "use strict"; // For browsers that support matchMedium api such as IE 9 and webkit
16153
16154  var styleMedia = window.styleMedia || window.media; // For those that don't support matchMedium
16155
16156  if (!styleMedia) {
16157    var style = document.createElement('style'),
16158        script = document.getElementsByTagName('script')[0],
16159        info = null;
16160    style.type = 'text/css';
16161    style.id = 'matchmediajs-test';
16162
16163    if (!script) {
16164      document.head.appendChild(style);
16165    } else {
16166      script.parentNode.insertBefore(style, script);
16167    } // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
16168
16169
16170    info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle;
16171    styleMedia = {
16172      matchMedium: function matchMedium(media) {
16173        var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
16174
16175        if (style.styleSheet) {
16176          style.styleSheet.cssText = text;
16177        } else {
16178          style.textContent = text;
16179        } // Test if media query is true or false
16180
16181
16182        return info.width === '1px';
16183      }
16184    };
16185  }
16186
16187  return function (media) {
16188    return {
16189      matches: styleMedia.matchMedium(media || 'all'),
16190      media: media || 'all'
16191    };
16192  };
16193}());
16194/* eslint-enable */
16195
16196var MediaQuery = {
16197  queries: [],
16198  current: '',
16199
16200  /**
16201   * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.
16202   * @function
16203   * @private
16204   */
16205  _init: function _init() {
16206    // make sure the initialization is only done once when calling _init() several times
16207    if (this.isInitialized === true) {
16208      return;
16209    } else {
16210      this.isInitialized = true;
16211    }
16212
16213    var self = this;
16214    var $meta = jquery__WEBPACK_IMPORTED_MODULE_0___default()('meta.foundation-mq');
16215
16216    if (!$meta.length) {
16217      jquery__WEBPACK_IMPORTED_MODULE_0___default()('<meta class="foundation-mq">').appendTo(document.head);
16218    }
16219
16220    var extractedStyles = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.foundation-mq').css('font-family');
16221    var namedQueries;
16222    namedQueries = parseStyleToObject(extractedStyles);
16223    self.queries = []; // reset
16224
vendor: 4,471 bytes, lines 16225-16373
16225    for (var key in namedQueries) {
16226      if (namedQueries.hasOwnProperty(key)) {
16227        self.queries.push({
16228          name: key,
16229          value: "only screen and (min-width: ".concat(namedQueries[key], ")")
16230        });
16231      }
16232    }
16233
16234    this.current = this._getCurrentSize();
16235
16236    this._watcher();
16237  },
16238
16239  /**
16240   * Reinitializes the media query helper.
16241   * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.
16242   * @function
16243   * @private
16244   */
16245  _reInit: function _reInit() {
16246    this.isInitialized = false;
16247
16248    this._init();
16249  },
16250
16251  /**
16252   * Checks if the screen is at least as wide as a breakpoint.
16253   * @function
16254   * @param {String} size - Name of the breakpoint to check.
16255   * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.
16256   */
16257  atLeast: function atLeast(size) {
16258    var query = this.get(size);
16259
16260    if (query) {
16261      return window.matchMedia(query).matches;
16262    }
16263
16264    return false;
16265  },
16266
16267  /**
16268   * Checks if the screen is within the given breakpoint.
16269   * If smaller than the breakpoint of larger than its upper limit it returns false.
16270   * @function
16271   * @param {String} size - Name of the breakpoint to check.
16272   * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.
16273   */
16274  only: function only(size) {
16275    return size === this._getCurrentSize();
16276  },
16277
16278  /**
16279   * Checks if the screen is within a breakpoint or smaller.
16280   * @function
16281   * @param {String} size - Name of the breakpoint to check.
16282   * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.
16283   */
16284  upTo: function upTo(size) {
16285    var nextSize = this.next(size); // If the next breakpoint does not match, the screen is smaller than
16286    // the upper limit of this breakpoint.
16287
16288    if (nextSize) {
16289      return !this.atLeast(nextSize);
16290    } // If there is no next breakpoint, the "size" breakpoint does not have
16291    // an upper limit and the screen will always be within it or smaller.
16292
16293
16294    return true;
16295  },
16296
16297  /**
16298   * Checks if the screen matches to a breakpoint.
16299   * @function
16300   * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.
16301   * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.
16302   */
16303  is: function is(size) {
16304    var parts = size.trim().split(' ').filter(function (p) {
16305      return !!p.length;
16306    });
16307
16308    var _parts = _slicedToArray(parts, 2),
16309        bpSize = _parts[0],
16310        _parts$ = _parts[1],
16311        bpModifier = _parts$ === void 0 ? '' : _parts$; // Only the breakpont
16312
16313
16314    if (bpModifier === 'only') {
16315      return this.only(bpSize);
16316    } // At least the breakpoint (included)
16317
16318
16319    if (!bpModifier || bpModifier === 'up') {
16320      return this.atLeast(bpSize);
16321    } // Up to the breakpoint (included)
16322
16323
16324    if (bpModifier === 'down') {
16325      return this.upTo(bpSize);
16326    }
16327
16328    throw new Error("\n      Invalid breakpoint passed to MediaQuery.is().\n      Expected a breakpoint name formatted like \"<size> <modifier>\", got \"".concat(size, "\".\n    "));
16329  },
16330
16331  /**
16332   * Gets the media query of a breakpoint.
16333   * @function
16334   * @param {String} size - Name of the breakpoint to get.
16335   * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.
16336   */
16337  get: function get(size) {
16338    for (var i in this.queries) {
16339      if (this.queries.hasOwnProperty(i)) {
16340        var query = this.queries[i];
16341        if (size === query.name) return query.value;
16342      }
16343    }
16344
16345    return null;
16346  },
16347
16348  /**
16349   * Get the breakpoint following the given breakpoint.
16350   * @function
16351   * @param {String} size - Name of the breakpoint.
16352   * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.
16353   */
16354  next: function next(size) {
16355    var _this = this;
16356
16357    var queryIndex = this.queries.findIndex(function (q) {
16358      return _this._getQueryName(q) === size;
16359    });
16360
16361    if (queryIndex === -1) {
16362      throw new Error("\n        Unknown breakpoint \"".concat(size, "\" passed to MediaQuery.next().\n        Ensure it is present in your Sass \"$breakpoints\" setting.\n      "));
16363    }
16364
16365    var nextQuery = this.queries[queryIndex + 1];
16366    return nextQuery ? nextQuery.name : null;
16367  },
16368
16369  /**
16370   * Returns the name of the breakpoint related to the given value.
16371   * @function
16372   * @private
16373   * @param {String|Object}
vendor: 5,039 bytes, lines 16373-16520
16373 value - Breakpoint name or query object.
16374   * @returns {String} Name of the breakpoint.
16375   */
16376  _getQueryName: function _getQueryName(value) {
16377    if (typeof value === 'string') return value;
16378    if (_typeof(value) === 'object') return value.name;
16379    throw new TypeError("\n      Invalid value passed to MediaQuery._getQueryName().\n      Expected a breakpoint name (String) or a breakpoint query (Object), got \"".concat(value, "\" (").concat(_typeof(value), ")\n    "));
16380  },
16381
16382  /**
16383   * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).
16384   * @function
16385   * @private
16386   * @returns {String} Name of the current breakpoint.
16387   */
16388  _getCurrentSize: function _getCurrentSize() {
16389    var matched;
16390
16391    for (var i = 0; i < this.queries.length; i++) {
16392      var query = this.queries[i];
16393
16394      if (window.matchMedia(query.value).matches) {
16395        matched = query;
16396      }
16397    }
16398
16399    return matched && this._getQueryName(matched);
16400  },
16401
16402  /**
16403   * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.
16404   * @function
16405   * @private
16406   */
16407  _watcher: function _watcher() {
16408    var _this2 = this;
16409
16410    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', function () {
16411      var newSize = _this2._getCurrentSize(),
16412          currentSize = _this2.current;
16413
16414      if (newSize !== currentSize) {
16415        // Change the current media query
16416        _this2.current = newSize; // Broadcast the media query change on the window
16417
16418        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);
16419      }
16420    });
16421  }
16422}; // Thank you: https://github.com/sindresorhus/query-string
16423
16424function parseStyleToObject(str) {
16425  var styleObject = {};
16426
16427  if (typeof str !== 'string') {
16428    return styleObject;
16429  }
16430
16431  str = str.trim().slice(1, -1); // browsers re-quote string style values
16432
16433  if (!str) {
16434    return styleObject;
16435  }
16436
16437  styleObject = str.split('&').reduce(function (ret, param) {
16438    var parts = param.replace(/\+/g, ' ').split('=');
16439    var key = parts[0];
16440    var val = parts[1];
16441    key = decodeURIComponent(key); // missing `=` should be `null`:
16442    // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
16443
16444    val = typeof val === 'undefined' ? null : decodeURIComponent(val);
16445
16446    if (!ret.hasOwnProperty(key)) {
16447      ret[key] = val;
16448    } else if (Array.isArray(ret[key])) {
16449      ret[key].push(val);
16450    } else {
16451      ret[key] = [ret[key], val];
16452    }
16453
16454    return ret;
16455  }, {});
16456  return styleObject;
16457}
16458
16459
16460
16461/***/ }),
16462
16463/***/ 0:
16464/*!*****************************************************!*\
16465  !*** multi ./js/entries/plugins/foundation.core.js ***!
16466  \*****************************************************/
16467/*! no static exports found */
16468/***/ (function(module, exports, __webpack_require__) {
16469
16470module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.core.js */"./js/entries/plugins/foundation.core.js");
16471
16472
16473/***/ }),
16474
16475/***/ "jquery":
16476/*!********************************************************************************************!*\
16477  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
16478  \********************************************************************************************/
16479/*! no static exports found */
16480/***/ (function(module, exports) {
16481
16482module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
16483
16484/***/ })
16485
16486/******/ });
16487});
16488//# sourceMappingURL=foundation.core.js.map
16489(function webpackUniversalModuleDefinition(root, factory) {
16490	if(typeof exports === 'object' && typeof module === 'object')
16491		module.exports = factory(require("./foundation.core"));
16492	else if(typeof define === 'function' && define.amd)
16493		define(["./foundation.core"], factory);
16494	else if(typeof exports === 'object')
16495		exports["foundation.util.box"] = factory(require("./foundation.core"));
16496	else
16497		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.box"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"]);
16498})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__) {
16499return /******/ (function(modules) { // webpackBootstrap
16500/******/ 	// The module cache
16501/******/ 	var installedModules = {};
16502/******/
16503/******/ 	// The require function
16504/******/ 	function __webpack_require__(moduleId) {
16505/******/
16506/******/ 		// Check if module is in cache
16507/******/ 		if(installedModules[moduleId]) {
16508/******/ 			return installedModules[moduleId].exports;
16509/******/ 		}
16510/******/ 		// Create a new module (and put it into the cache)
16511/******/ 		var module = installedModules[moduleId] = {
16512/******/ 			i: moduleId,
16513/******/ 			l: false,
16514/******/ 			exports: {}
16515/******/ 		};
16516/******/
16517/******/ 		// Execute the module function
16518/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
16519/******/
16520/******/ 		// Flag the module as loaded
vendor: 3,489 bytes, lines 16521-16597
16521/******/ 		module.l = true;
16522/******/
16523/******/ 		// Return the exports of the module
16524/******/ 		return module.exports;
16525/******/ 	}
16526/******/
16527/******/
16528/******/ 	// expose the modules object (__webpack_modules__)
16529/******/ 	__webpack_require__.m = modules;
16530/******/
16531/******/ 	// expose the module cache
16532/******/ 	__webpack_require__.c = installedModules;
16533/******/
16534/******/ 	// define getter function for harmony exports
16535/******/ 	__webpack_require__.d = function(exports, name, getter) {
16536/******/ 		if(!__webpack_require__.o(exports, name)) {
16537/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
16538/******/ 		}
16539/******/ 	};
16540/******/
16541/******/ 	// define __esModule on exports
16542/******/ 	__webpack_require__.r = function(exports) {
16543/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
16544/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16545/******/ 		}
16546/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
16547/******/ 	};
16548/******/
16549/******/ 	// create a fake namespace object
16550/******/ 	// mode & 1: value is a module id, require it
16551/******/ 	// mode & 2: merge all properties of value into the ns
16552/******/ 	// mode & 4: return value when already ns object
16553/******/ 	// mode & 8|1: behave like require
16554/******/ 	__webpack_require__.t = function(value, mode) {
16555/******/ 		if(mode & 1) value = __webpack_require__(value);
16556/******/ 		if(mode & 8) return value;
16557/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
16558/******/ 		var ns = Object.create(null);
16559/******/ 		__webpack_require__.r(ns);
16560/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
16561/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
16562/******/ 		return ns;
16563/******/ 	};
16564/******/
16565/******/ 	// getDefaultExport function for compatibility with non-harmony modules
16566/******/ 	__webpack_require__.n = function(module) {
16567/******/ 		var getter = module && module.__esModule ?
16568/******/ 			function getDefault() { return module['default']; } :
16569/******/ 			function getModuleExports() { return module; };
16570/******/ 		__webpack_require__.d(getter, 'a', getter);
16571/******/ 		return getter;
16572/******/ 	};
16573/******/
16574/******/ 	// Object.prototype.hasOwnProperty.call
16575/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
16576/******/
16577/******/ 	// __webpack_public_path__
16578/******/ 	__webpack_require__.p = "";
16579/******/
16580/******/
16581/******/ 	// Load entry module and return exports
16582/******/ 	return __webpack_require__(__webpack_require__.s = 21);
16583/******/ })
16584/************************************************************************/
16585/******/ ({
16586
16587/***/ "./foundation.core":
16588/*!****************************************************************************************************************************************************************!*\
16589  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
16590  \****************************************************************************************************************************************************************/
16591/*! no static exports found */
16592/***/ (function(module, exports) {
16593
16594module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
16595
16596/***/ }),
16597
16598/***/ "./js/entries/plugins/foundation.util.box.js":
16599/*!***************************************************!*\
16600  !*** ./js/entries/plugins/foundation.util.box.js ***!
16601  \***************************************************/
16602/*! exports provided: Foundation, Box */
16603/***/ (function(module, __webpack_exports__, __webpack_require__) {
16604
16605"use strict";
16606__webpack_require__.r(__webpack_exports__);
16607/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
16608/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
16609/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
16610
16611/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.box */ "./js/foundation.util.box.js");
16612/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return _foundation_util_box__WEBPACK_IMPORTED_MODULE_1__["Box"]; });
16613
16614
16615
16616_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Box = _foundation_util_box__WEBPACK_IMPORTED_MODULE_1__["Box"];
16617
16618
16619/***/ }),
16620
vendor: 4,941 bytes, lines 16621-16752
16621/***/ "./js/foundation.util.box.js":
16622/*!***********************************!*\
16623  !*** ./js/foundation.util.box.js ***!
16624  \***********************************/
16625/*! exports provided: Box */
16626/***/ (function(module, __webpack_exports__, __webpack_require__) {
16627
16628"use strict";
16629__webpack_require__.r(__webpack_exports__);
16630/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return Box; });
16631
16632
16633var Box = {
16634  ImNotTouchingYou: ImNotTouchingYou,
16635  OverlapArea: OverlapArea,
16636  GetDimensions: GetDimensions,
16637  GetExplicitOffsets: GetExplicitOffsets
16638  /**
16639   * Compares the dimensions of an element to a container and determines collision events with container.
16640   * @function
16641   * @param {jQuery} element - jQuery object to test for collisions.
16642   * @param {jQuery} parent - jQuery object to use as bounding container.
16643   * @param {Boolean} lrOnly - set to true to check left and right values only.
16644   * @param {Boolean} tbOnly - set to true to check top and bottom values only.
16645   * @default if no parent object passed, detects collisions with `window`.
16646   * @returns {Boolean} - true if collision free, false if a collision in any direction.
16647   */
16648
16649};
16650
16651function ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {
16652  return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;
16653}
16654
16655function OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {
16656  var eleDims = GetDimensions(element),
16657      topOver,
16658      bottomOver,
16659      leftOver,
16660      rightOver;
16661
16662  if (parent) {
16663    var parDims = GetDimensions(parent);
16664    bottomOver = parDims.height + parDims.offset.top - (eleDims.offset.top + eleDims.height);
16665    topOver = eleDims.offset.top - parDims.offset.top;
16666    leftOver = eleDims.offset.left - parDims.offset.left;
16667    rightOver = parDims.width + parDims.offset.left - (eleDims.offset.left + eleDims.width);
16668  } else {
16669    bottomOver = eleDims.windowDims.height + eleDims.windowDims.offset.top - (eleDims.offset.top + eleDims.height);
16670    topOver = eleDims.offset.top - eleDims.windowDims.offset.top;
16671    leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;
16672    rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);
16673  }
16674
16675  bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);
16676  topOver = Math.min(topOver, 0);
16677  leftOver = Math.min(leftOver, 0);
16678  rightOver = Math.min(rightOver, 0);
16679
16680  if (lrOnly) {
16681    return leftOver + rightOver;
16682  }
16683
16684  if (tbOnly) {
16685    return topOver + bottomOver;
16686  } // use sum of squares b/c we care about overlap area.
16687
16688
16689  return Math.sqrt(topOver * topOver + bottomOver * bottomOver + leftOver * leftOver + rightOver * rightOver);
16690}
16691/**
16692 * Uses native methods to return an object of dimension values.
16693 * @function
16694 * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.
16695 * @returns {Object} - nested object of integer pixel values
16696 * TODO - if element is window, return only those values.
16697 */
16698
16699
16700function GetDimensions(elem) {
16701  elem = elem.length ? elem[0] : elem;
16702
16703  if (elem === window || elem === document) {
16704    throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");
16705  }
16706
16707  var rect = elem.getBoundingClientRect(),
16708      parRect = elem.parentNode.getBoundingClientRect(),
16709      winRect = document.body.getBoundingClientRect(),
16710      winY = window.pageYOffset,
16711      winX = window.pageXOffset;
16712  return {
16713    width: rect.width,
16714    height: rect.height,
16715    offset: {
16716      top: rect.top + winY,
16717      left: rect.left + winX
16718    },
16719    parentDims: {
16720      width: parRect.width,
16721      height: parRect.height,
16722      offset: {
16723        top: parRect.top + winY,
16724        left: parRect.left + winX
16725      }
16726    },
16727    windowDims: {
16728      width: winRect.width,
16729      height: winRect.height,
16730      offset: {
16731        top: winY,
16732        left: winX
16733      }
16734    }
16735  };
16736}
16737/**
16738 * Returns an object of top and left integer pixel values for dynamically rendered elements,
16739 * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where
16740 * you don't know alignment, but generally from
16741 * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.
16742 * @function
16743 * @param {jQuery} element - jQuery object for the element being positioned.
16744 * @param {jQuery} anchor - jQuery object for the element's anchor point.
16745 * @param {String} position - a string relating to the desired position of the element, relative to it's anchor
16746 * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.
16747 * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.
16748 * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.
16749 * TODO alter/rewrite to work with `em` values as well/instead of pixels
16750 */
16751
16752
16753function GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {
16754  var $eleDims = GetDimensions(element),
16755      $anchorDims = anchor ? GetDimensions(anchor) : null;
16756  var topVal, leftVal;
16757
16758  if ($anchorDims !== null) {
16759    // set position related attribute
16760    switch (position) {
16761      case 'top':
16762        topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);
16763        break;
16764
16765      case 'bottom':
16766        topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;
16767        break;
16768
16769      case 'left':
16770        leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);
16771        break;
16772
16773      case 'right':
16774        leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;
16775        break;
16776    } // set alignment related attribute
16777
16778
16779    switch (position) {
16780      case 'top':
16781      case 'bottom':
16782        switch (alignment) {
16783          case 'left':
16784            leftVal = $anchorDims.offset.left + hOffset;
16785            break;
16786
16787          case 'right':
16788            leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;
16789            break;
16790
16791          case 'center':
16792            leftVal = isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2 + hOffset;
16793            break;
16794        }
16795
16796        break;
16797
16798      case 'right':
16799      case 'left':
16800        switch (alignment) {
16801          case 'bottom':
16802            topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;
16803            break;
16804
16805          case 'top':
16806            topVal = $anchorDims.offset.top + vOffset;
16807            break;
16808
16809          case 'center':
16810            topVal = $anchorDims.offset.top + vOffset + $anchorDims.height / 2 - $eleDims.height / 2;
16811            break;
16812        }
16813
16814        break;
16815    }
16816  }
16817
16818  return {
16819    top: topVal,
16820    left: leftVal
16821  };
16822}
16823
16824
16825
16826/***/ }),
16827
16828/***/ 21:
16829/*!*********************************************************!*\
16830  !*** multi ./js/entries/plugins/foundation.util.box.js ***!
16831  \*********************************************************/
16832/*! no static exports found */
16833/***/ (function(module, exports, __webpack_require__) {
16834
16835module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.box.js */"./js/entries/plugins/foundation.util.box.js");
16836
16837
16838/***/ })
16839
16840/******/ });
16841});
16842//# sourceMappingURL=foundation.util.box.js.map
16843(function webpackUniversalModuleDefinition(root, factory) {
16844	if(typeof exports === 'object' && typeof module === 'object')
16845		module.exports = factory(require("./foundation.core"), require("jquery"));
16846	else if(typeof define === 'function' && define.amd)
16847		define(["./foundation.core", "jquery"], factory);
16848	else if(typeof exports === 'object')
16849		exports["foundation.util.imageLoader"] = factory(require("./foundation.core"), require("jquery"));
16850	else
16851		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.imageLoader"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
16852})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
16853return /******/ (function(modules) { // webpackBootstrap
16854/******/ 	// The module cache
16855/******/ 	var installedModules = {};
16856/******/
16857/******/ 	// The require function
16858/******/ 	function __webpack_require__(moduleId) {
16859/******/
16860/******/ 		// Check if module is in cache
16861/******/ 		if(installedModules[moduleId]) {
16862/******/ 			return installedModules[moduleId].exports;
16863/******/ 		}
16864/******/ 		// Create a new module (and put it into the cache)
16865/******/ 		var module = installedModules[moduleId] = {
16866/******/ 			i: moduleId,
16867/******/ 			l: false,
16868/******/ 			exports: {}
16869/******/ 		};
16870/******/
16871/******/ 		// Execute the module function
16872/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
16873/******/
16874/******/ 		// Flag the module as loaded
16875/******/ 		module.l = true;
16876/******/
16877/******/ 		// Return the exports of the module
16878/******/ 		return module.exports;
16879/******/ 	}
16880/******/
16881/******/
16882/******/ 	// expose the modules object (__webpack_modules__)
16883/******/ 	__webpack_require__.m = modules;
16884/******/
16885/******/ 	// expose the module cache
16886/******/ 	__webpack_require__.c = installedModules;
16887/******/
16888/******/ 	// define getter function for harmony exports
16889/******/ 	__webpack_require__.d = function(exports, name, getter) {
16890/******/ 		if(!__webpack_require__.o(exports, name)) {
16891/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
16892/******/ 		}
16893/******/ 	};
16894/******/
16895/******/ 	// define __esModule on exports
16896/******/ 	__webpack_require__.r = function(exports) {
16897/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
16898/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
16899/******/ 		}
16900/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
16901/******/ 	};
16902/******/
16903/******/ 	// create a fake namespace object
16904/******/ 	// mode & 1: value is a module id, require it
16905/******/ 	// mode & 2: merge all properties of value into the ns
16906/******/ 	// mode & 4: return value when already ns object
16907/******/ 	// mode & 8|1: behave like require
16908/******/ 	__webpack_require__.t = function(value, mode) {
16909/******/ 		if(mode & 1) value = __webpack_require__(value);
16910/******/ 		if(mode & 8) return value;
16911/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 1,969 bytes, lines 16911-16951
16911dule) return value;
16912/******/ 		var ns = Object.create(null);
16913/******/ 		__webpack_require__.r(ns);
16914/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
16915/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
16916/******/ 		return ns;
16917/******/ 	};
16918/******/
16919/******/ 	// getDefaultExport function for compatibility with non-harmony modules
16920/******/ 	__webpack_require__.n = function(module) {
16921/******/ 		var getter = module && module.__esModule ?
16922/******/ 			function getDefault() { return module['default']; } :
16923/******/ 			function getModuleExports() { return module; };
16924/******/ 		__webpack_require__.d(getter, 'a', getter);
16925/******/ 		return getter;
16926/******/ 	};
16927/******/
16928/******/ 	// Object.prototype.hasOwnProperty.call
16929/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
16930/******/
16931/******/ 	// __webpack_public_path__
16932/******/ 	__webpack_require__.p = "";
16933/******/
16934/******/
16935/******/ 	// Load entry module and return exports
16936/******/ 	return __webpack_require__(__webpack_require__.s = 22);
16937/******/ })
16938/************************************************************************/
16939/******/ ({
16940
16941/***/ "./foundation.core":
16942/*!****************************************************************************************************************************************************************!*\
16943  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
16944  \****************************************************************************************************************************************************************/
16945/*! no static exports found */
16946/***/ (function(module, exports) {
16947
16948module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
16949
16950/***/ }),
16951
16952/***/ "./js/entries/plugins/foundation.util.imageLoader.js":
16953/*!***********************************************************!*\
16954  !*** ./js/entries/plugins/foundation.util.imageLoader.js ***!
16955  \***********************************************************/
16956/*! exports provided: Foundation, onImagesLoaded */
16957/***/ (function(module, __webpack_exports__, __webpack_require__) {
16958
16959"use strict";
16960__webpack_require__.r(__webpack_exports__);
16961/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
16962/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
16963/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
16964
16965/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.imageLoader */ "./js/foundation.util.imageLoader.js");
16966/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onImagesLoaded", function() { return _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_1__["onImagesLoaded"]; });
16967
16968
16969
16970_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].onImagesLoaded = _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_1__["onImagesLoaded"];
16971
16972
16973/***/ }),
16974
16975/***/ "./js/foundation.util.imageLoader.js":
16976/*!*******************************************!*\
16977  !*** ./js/foundation.util.imageLoader.js ***!
16978  \*******************************************/
16979/*! exports provided: onImagesLoaded */
16980/***/ (function(module, __webpack_exports__, __webpack_require__) {
16981
16982"use strict";
16983__webpack_require__.r(__webpack_exports__);
16984/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onImagesLoaded", function() { return onImagesLoaded; });
16985/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
16986/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
16987
16988
16989
16990/**
16991 * Runs a callback function when images are fully loaded.
16992 * @param {Object} images - Image(s) to check if loaded.
16993 * @param {Func} callback - Function to execute when image is fully loaded.
16994 */
16995
16996function onImagesLoaded(images, callback) {
16997  var self = this,
16998      unloaded = images.length;
16999
17000  if (unloaded === 0) {
17001    callback();
17002  }
17003
17004  images.each(function () {
17005    // Check if image is loaded
17006    if (this.complete && typeof this.naturalWidth !== 'undefined') {
17007      singleImageLoaded();
17008    } else {
17009      // If the above check failed, simulate loading on detached element.
17010      var image = new Image(); // Still count image as loaded if it finalizes with an error.
17011
17012      var events = "load.zf.images error.zf.images";
17013      jquery__WEBPACK_IMPORTED_MODULE_0___default()(image).one(events, function me(event) {
17014        // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.
17015        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).off(events, me);
17016        singleImageLoaded();
17017      });
17018      image.src = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('src');
17019    }
17020  });
17021
17022  function singleImageLoaded() {
17023    unloaded--;
17024
17025    if (unloaded === 0) {
17026      callback();
17027    }
17028  }
17029}
17030
17031
17032
17033/***/ }),
17034
17035/***/ 22:
17036/*!*****************************************************************!*\
17037  !*** multi ./js/entries/plugins/foundation.util.imageLoader.js ***!
17038  \*****************************************************************/
17039/*! no static exports found */
17040/***/ (function(module, exports, __webpack_require__) {
17041
17042module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.imageLoader.js */"./js/entries/plugins/foundation.util.imageLoader.js");
17043
17044
17045/***/ }),
17046
17047/***/ "jquery":
17048/*!********************************************************************************************!*\
17049  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
17050  \********************************************************************************************/
17051/*! no static exports found */
17052/***/ (function(module, exports) {
17053
17054module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
17055
17056/***/ })
17057
17058/******/ });
17059});
17060//# sourceMappingURL=foundation.util.imageLoader.js.map
17061(function webpackUniversalModuleDefinition(root, factory) {
17062	if(typeof exports === 'object' && typeof module === 'object')
17063		module.exports = factory(require("./foundation.core"), require("jquery"));
17064	else if(typeof define === 'function' && define.amd)
17065		define(["./foundation.core", "jquery"], factory);
17066	else if(typeof exports === 'object')
17067		exports["foundation.util.keyboard"] = factory(require("./foundation.core"), require("jquery"));
17068	else
17069		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
17070})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
17071return /******/ (function(modules) { // webpackBootstrap
17072/******/ 	// The module cache
17073/******/ 	var installedModules = {};
17074/******/
17075/******/ 	// The require function
17076/******/ 	function __webpack_require__(moduleId) {
17077/******/
17078/******/ 		// Check if module is in cache
17079/******/ 		if(installedModules[moduleId]) {
17080/******/ 			return installedModules[moduleId].exports;
17081/******/ 		}
17082/******/ 		// Create a new module (and put it into the cache)
17083/******/ 		var module = installedModules[moduleId] = {
17084/******/ 			i: moduleId,
17085/******/ 			l: false,
17086/******/ 			exports: {}
17087/******/ 		};
17088/******/
17089/******/ 		// Execute the module function
17090/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
17091/******/
17092/******/ 		// Flag the module as loaded
vendor: 3,489 bytes, lines 17093-17169
17093/******/ 		module.l = true;
17094/******/
17095/******/ 		// Return the exports of the module
17096/******/ 		return module.exports;
17097/******/ 	}
17098/******/
17099/******/
17100/******/ 	// expose the modules object (__webpack_modules__)
17101/******/ 	__webpack_require__.m = modules;
17102/******/
17103/******/ 	// expose the module cache
17104/******/ 	__webpack_require__.c = installedModules;
17105/******/
17106/******/ 	// define getter function for harmony exports
17107/******/ 	__webpack_require__.d = function(exports, name, getter) {
17108/******/ 		if(!__webpack_require__.o(exports, name)) {
17109/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
17110/******/ 		}
17111/******/ 	};
17112/******/
17113/******/ 	// define __esModule on exports
17114/******/ 	__webpack_require__.r = function(exports) {
17115/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
17116/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
17117/******/ 		}
17118/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
17119/******/ 	};
17120/******/
17121/******/ 	// create a fake namespace object
17122/******/ 	// mode & 1: value is a module id, require it
17123/******/ 	// mode & 2: merge all properties of value into the ns
17124/******/ 	// mode & 4: return value when already ns object
17125/******/ 	// mode & 8|1: behave like require
17126/******/ 	__webpack_require__.t = function(value, mode) {
17127/******/ 		if(mode & 1) value = __webpack_require__(value);
17128/******/ 		if(mode & 8) return value;
17129/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
17130/******/ 		var ns = Object.create(null);
17131/******/ 		__webpack_require__.r(ns);
17132/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
17133/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
17134/******/ 		return ns;
17135/******/ 	};
17136/******/
17137/******/ 	// getDefaultExport function for compatibility with non-harmony modules
17138/******/ 	__webpack_require__.n = function(module) {
17139/******/ 		var getter = module && module.__esModule ?
17140/******/ 			function getDefault() { return module['default']; } :
17141/******/ 			function getModuleExports() { return module; };
17142/******/ 		__webpack_require__.d(getter, 'a', getter);
17143/******/ 		return getter;
17144/******/ 	};
17145/******/
17146/******/ 	// Object.prototype.hasOwnProperty.call
17147/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
17148/******/
17149/******/ 	// __webpack_public_path__
17150/******/ 	__webpack_require__.p = "";
17151/******/
17152/******/
17153/******/ 	// Load entry module and return exports
17154/******/ 	return __webpack_require__(__webpack_require__.s = 23);
17155/******/ })
17156/************************************************************************/
17157/******/ ({
17158
17159/***/ "./foundation.core":
17160/*!****************************************************************************************************************************************************************!*\
17161  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
17162  \****************************************************************************************************************************************************************/
17163/*! no static exports found */
17164/***/ (function(module, exports) {
17165
17166module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
17167
17168/***/ }),
17169
17170/***/ "./js/entries/plugins/foundation.util.keyboard.js":
17171/*!********************************************************!*\
17172  !*** ./js/entries/plugins/foundation.util.keyboard.js ***!
17173  \********************************************************/
17174/*! exports provided: Foundation, Keyboard */
17175/***/ (function(module, __webpack_exports__, __webpack_require__) {
17176
17177"use strict";
17178__webpack_require__.r(__webpack_exports__);
17179/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
17180/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
17181/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
17182
17183/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.keyboard */ "./js/foundation.util.keyboard.js");
17184/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Keyboard", function() { return _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"]; });
17185
17186
17187
17188_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Keyboard = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"];
17189
17190
17191/***/ }),
17192
vendor: 4,173 bytes, lines 17193-17290
17193/***/ "./js/foundation.util.keyboard.js":
17194/*!****************************************!*\
17195  !*** ./js/foundation.util.keyboard.js ***!
17196  \****************************************/
17197/*! exports provided: Keyboard */
17198/***/ (function(module, __webpack_exports__, __webpack_require__) {
17199
17200"use strict";
17201__webpack_require__.r(__webpack_exports__);
17202/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Keyboard", function() { return Keyboard; });
17203/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
17204/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
17205/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
17206/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
17207/*******************************************
17208 *                                         *
17209 * This util was created by Marius Olbertz *
17210 * Please thank Marius on GitHub /owlbertz *
17211 * or the web http://www.mariusolbertz.de/ *
17212 *                                         *
17213 ******************************************/
17214
17215
17216
17217
17218var keyCodes = {
17219  9: 'TAB',
17220  13: 'ENTER',
17221  27: 'ESCAPE',
17222  32: 'SPACE',
17223  35: 'END',
17224  36: 'HOME',
17225  37: 'ARROW_LEFT',
17226  38: 'ARROW_UP',
17227  39: 'ARROW_RIGHT',
17228  40: 'ARROW_DOWN'
17229};
17230var commands = {}; // Functions pulled out to be referenceable from internals
17231
17232function findFocusable($element) {
17233  if (!$element) {
17234    return false;
17235  }
17236
17237  return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function () {
17238    if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':visible') || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('tabindex') < 0) {
17239      return false;
17240    } //only have visible elements and those that have a tabindex greater or equal 0
17241
17242
17243    return true;
17244  });
17245}
17246
17247function parseKey(event) {
17248  var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase(); // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events
17249
17250  key = key.replace(/\W+/, '');
17251  if (event.shiftKey) key = "SHIFT_".concat(key);
17252  if (event.ctrlKey) key = "CTRL_".concat(key);
17253  if (event.altKey) key = "ALT_".concat(key); // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)
17254
17255  key = key.replace(/_$/, '');
17256  return key;
17257}
17258
17259var Keyboard = {
17260  keys: getKeyCodes(keyCodes),
17261
17262  /**
17263   * Parses the (keyboard) event and returns a String that represents its key
17264   * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
17265   * @param {Event} event - the event generated by the event handler
17266   * @return String key - String that represents the key pressed
17267   */
17268  parseKey: parseKey,
17269
17270  /**
17271   * Handles the given (keyboard) event
17272   * @param {Event} event - the event generated by the event handler
17273   * @param {String} component - Foundation component's name, e.g. Slider or Reveal
17274   * @param {Objects} functions - collection of functions that are to be executed
17275   */
17276  handleKey: function handleKey(event, component, functions) {
17277    var commandList = commands[component],
17278        keyCode = this.parseKey(event),
17279        cmds,
17280        command,
17281        fn;
17282    if (!commandList) return console.warn('Component not defined!'); // Ignore the event if it was already handled
17283
17284    if (event.zfIsKeyHandled === true) return; // This component does not differentiate between ltr and rtl
17285
17286    if (typeof commandList.ltr === 'undefined') {
17287      cmds = commandList; // use plain list
17288    } else {
17289      // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa
17290      if (Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["rtl"])()) cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, commandList.ltr, commandList.rtl);
vendor: 5,072 bytes, lines 17290-17433
17290else cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, commandList.rtl, commandList.ltr);
17291    }
17292
17293    command = cmds[keyCode];
17294    fn = functions[command]; // Execute the handler if found
17295
17296    if (fn && typeof fn === 'function') {
17297      var returnValue = fn.apply(); // Mark the event as "handled" to prevent future handlings
17298
17299      event.zfIsKeyHandled = true; // Execute function when event was handled
17300
17301      if (functions.handled || typeof functions.handled === 'function') {
17302        functions.handled(returnValue);
17303      }
17304    } else {
17305      // Execute function when event was not handled
17306      if (functions.unhandled || typeof functions.unhandled === 'function') {
17307        functions.unhandled();
17308      }
17309    }
17310  },
17311
17312  /**
17313   * Finds all focusable elements within the given `$element`
17314   * @param {jQuery} $element - jQuery object to search within
17315   * @return {jQuery} $focusable - all focusable elements within `$element`
17316   */
17317  findFocusable: findFocusable,
17318
17319  /**
17320   * Returns the component name name
17321   * @param {Object} component - Foundation component, e.g. Slider or Reveal
17322   * @return String componentName
17323   */
17324  register: function register(componentName, cmds) {
17325    commands[componentName] = cmds;
17326  },
17327  // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?
17328  //
17329
17330  /**
17331   * Traps the focus in the given element.
17332   * @param  {jQuery} $element  jQuery object to trap the foucs into.
17333   */
17334  trapFocus: function trapFocus($element) {
17335    var $focusable = findFocusable($element),
17336        $firstFocusable = $focusable.eq(0),
17337        $lastFocusable = $focusable.eq(-1);
17338    $element.on('keydown.zf.trapfocus', function (event) {
17339      if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {
17340        event.preventDefault();
17341        $firstFocusable.focus();
17342      } else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {
17343        event.preventDefault();
17344        $lastFocusable.focus();
17345      }
17346    });
17347  },
17348
17349  /**
17350   * Releases the trapped focus from the given element.
17351   * @param  {jQuery} $element  jQuery object to release the focus for.
17352   */
17353  releaseFocus: function releaseFocus($element) {
17354    $element.off('keydown.zf.trapfocus');
17355  }
17356};
17357/*
17358 * Constants for easier comparing.
17359 * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE
17360 */
17361
17362function getKeyCodes(kcs) {
17363  var k = {};
17364
17365  for (var kc in kcs) {
17366    k[kcs[kc]] = kcs[kc];
17367  }
17368
17369  return k;
17370}
17371
17372
17373
17374/***/ }),
17375
17376/***/ 23:
17377/*!**************************************************************!*\
17378  !*** multi ./js/entries/plugins/foundation.util.keyboard.js ***!
17379  \**************************************************************/
17380/*! no static exports found */
17381/***/ (function(module, exports, __webpack_require__) {
17382
17383module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.keyboard.js */"./js/entries/plugins/foundation.util.keyboard.js");
17384
17385
17386/***/ }),
17387
17388/***/ "jquery":
17389/*!********************************************************************************************!*\
17390  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
17391  \********************************************************************************************/
17392/*! no static exports found */
17393/***/ (function(module, exports) {
17394
17395module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
17396
17397/***/ })
17398
17399/******/ });
17400});
17401//# sourceMappingURL=foundation.util.keyboard.js.map
17402(function webpackUniversalModuleDefinition(root, factory) {
17403	if(typeof exports === 'object' && typeof module === 'object')
17404		module.exports = factory(require("./foundation.core"), require("jquery"));
17405	else if(typeof define === 'function' && define.amd)
17406		define(["./foundation.core", "jquery"], factory);
17407	else if(typeof exports === 'object')
17408		exports["foundation.util.mediaQuery"] = factory(require("./foundation.core"), require("jquery"));
17409	else
17410		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
17411})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
17412return /******/ (function(modules) { // webpackBootstrap
17413/******/ 	// The module cache
17414/******/ 	var installedModules = {};
17415/******/
17416/******/ 	// The require function
17417/******/ 	function __webpack_require__(moduleId) {
17418/******/
17419/******/ 		// Check if module is in cache
17420/******/ 		if(installedModules[moduleId]) {
17421/******/ 			return installedModules[moduleId].exports;
17422/******/ 		}
17423/******/ 		// Create a new module (and put it into the cache)
17424/******/ 		var module = installedModules[moduleId] = {
17425/******/ 			i: moduleId,
17426/******/ 			l: false,
17427/******/ 			exports: {}
17428/******/ 		};
17429/******/
17430/******/ 		// Execute the module function
17431/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
17432/******/
17433/******/ 		// Flag the module as loaded
vendor: 3,489 bytes, lines 17434-17510
17434/******/ 		module.l = true;
17435/******/
17436/******/ 		// Return the exports of the module
17437/******/ 		return module.exports;
17438/******/ 	}
17439/******/
17440/******/
17441/******/ 	// expose the modules object (__webpack_modules__)
17442/******/ 	__webpack_require__.m = modules;
17443/******/
17444/******/ 	// expose the module cache
17445/******/ 	__webpack_require__.c = installedModules;
17446/******/
17447/******/ 	// define getter function for harmony exports
17448/******/ 	__webpack_require__.d = function(exports, name, getter) {
17449/******/ 		if(!__webpack_require__.o(exports, name)) {
17450/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
17451/******/ 		}
17452/******/ 	};
17453/******/
17454/******/ 	// define __esModule on exports
17455/******/ 	__webpack_require__.r = function(exports) {
17456/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
17457/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
17458/******/ 		}
17459/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
17460/******/ 	};
17461/******/
17462/******/ 	// create a fake namespace object
17463/******/ 	// mode & 1: value is a module id, require it
17464/******/ 	// mode & 2: merge all properties of value into the ns
17465/******/ 	// mode & 4: return value when already ns object
17466/******/ 	// mode & 8|1: behave like require
17467/******/ 	__webpack_require__.t = function(value, mode) {
17468/******/ 		if(mode & 1) value = __webpack_require__(value);
17469/******/ 		if(mode & 8) return value;
17470/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
17471/******/ 		var ns = Object.create(null);
17472/******/ 		__webpack_require__.r(ns);
17473/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
17474/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
17475/******/ 		return ns;
17476/******/ 	};
17477/******/
17478/******/ 	// getDefaultExport function for compatibility with non-harmony modules
17479/******/ 	__webpack_require__.n = function(module) {
17480/******/ 		var getter = module && module.__esModule ?
17481/******/ 			function getDefault() { return module['default']; } :
17482/******/ 			function getModuleExports() { return module; };
17483/******/ 		__webpack_require__.d(getter, 'a', getter);
17484/******/ 		return getter;
17485/******/ 	};
17486/******/
17487/******/ 	// Object.prototype.hasOwnProperty.call
17488/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
17489/******/
17490/******/ 	// __webpack_public_path__
17491/******/ 	__webpack_require__.p = "";
17492/******/
17493/******/
17494/******/ 	// Load entry module and return exports
17495/******/ 	return __webpack_require__(__webpack_require__.s = 24);
17496/******/ })
17497/************************************************************************/
17498/******/ ({
17499
17500/***/ "./foundation.core":
17501/*!****************************************************************************************************************************************************************!*\
17502  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
17503  \****************************************************************************************************************************************************************/
17504/*! no static exports found */
17505/***/ (function(module, exports) {
17506
17507module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
17508
17509/***/ }),
17510
17511/***/ "./js/entries/plugins/foundation.util.mediaQuery.js":
17512/*!**********************************************************!*\
17513  !*** ./js/entries/plugins/foundation.util.mediaQuery.js ***!
17514  \**********************************************************/
17515/*! exports provided: Foundation, MediaQuery */
17516/***/ (function(module, __webpack_exports__, __webpack_require__) {
17517
17518"use strict";
17519__webpack_require__.r(__webpack_exports__);
17520/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
17521/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
17522/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
17523
17524/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js");
17525/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MediaQuery", function() { return _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]; });
17526
17527
17528
17529_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].MediaQuery = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"];
17530
17531_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].MediaQuery._init();
17532
17533
17534
17535/***/ }),
17536
17537/***/ "./js/foundation.util.mediaQuery.js":
17538/*!******************************************!*\
17539  !*** ./js/foundation.util.mediaQuery.js ***!
17540  \******************************************/
17541/*! exports provided: MediaQuery */
17542/***/ (function(module, __webpack_exports__, __webpack_require__) {
17543
17544"use strict";
17545__webpack_require__.r(__webpack_exports__);
17546/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MediaQuery", function() { return MediaQuery; });
17547/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
17548/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
17549
17550
17551function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17552
17553function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
17554
17555function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
17556
17557function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
17558
17559function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17560
17561 // Default set of media queries
17562
17563var defaultQueries = {
17564  'default': 'only screen',
17565  landscape: 'only screen and (orientation: landscape)',
17566  portrait: 'only screen and (orientation: portrait)',
17567  retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)'
17568}; // matchMedia() polyfill - Test a CSS media type/query in JS.
17569// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license
17570
17571/* eslint-disable */
17572
17573window.matchMedia || (window.matchMedia = function () {
17574  "use strict"; // For browsers that support matchMedium api such as IE 9 and webkit
17575
17576  var styleMedia = window.styleMedia || window.media; // For those that don't support matchMedium
17577
17578  if (!styleMedia) {
17579    var style = document.createElement('style'),
17580        script = document.getElementsByTagName('script')[0],
17581        info = null;
17582    style.type = 'text/css';
17583    style.id = 'matchmediajs-test';
17584
17585    if (!script) {
17586      document.head.appendChild(style);
17587    } else {
17588      script.parentNode.insertBefore(style, script);
17589    } // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers
17590
17591
17592    info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle;
17593    styleMedia = {
17594      matchMedium: function matchMedium(media) {
17595        var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers
17596
17597        if (style.styleSheet) {
17598          style.styleSheet.cssText = text;
17599        } else {
17600          style.textContent = text;
17601        } // Test if media query is true or false
17602
17603
17604        return info.width === '1px';
17605      }
17606    };
17607  }
17608
17609  return function (media) {
17610    return {
17611      matches: styleMedia.matchMedium(media || 'all'),
17612      media: media || 'all'
17613    };
17614  };
17615}());
17616/* eslint-enable */
17617
17618var MediaQuery = {
17619  queries: [],
17620  current: '',
17621
17622  /**
17623   * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.
17624   * @function
17625   * @private
17626   */
17627  _init: function _init() {
17628    // make sure the initialization is only done once when calling _init() several times
17629    if (this.isInitialized === true) {
17630      return;
17631    } else {
17632      this.isInitialized = true;
17633    }
17634
17635    var self = this;
17636    var $meta = jquery__WEBPACK_IMPORTED_MODULE_0___default()('meta.foundation-mq');
17637
17638    if (!$meta.length) {
17639      jquery__WEBPACK_IMPORTED_MODULE_0___default()('<meta class="foundation-mq">').appendTo(document.head);
17640    }
17641
17642    var extractedStyles = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.foundation-mq').css('font-family');
17643    var namedQueries;
17644    namedQueries = parseStyleToObject(extractedStyles);
17645    self.queries = []; // reset
17646
vendor: 4,471 bytes, lines 17647-17795
17647    for (var key in namedQueries) {
17648      if (namedQueries.hasOwnProperty(key)) {
17649        self.queries.push({
17650          name: key,
17651          value: "only screen and (min-width: ".concat(namedQueries[key], ")")
17652        });
17653      }
17654    }
17655
17656    this.current = this._getCurrentSize();
17657
17658    this._watcher();
17659  },
17660
17661  /**
17662   * Reinitializes the media query helper.
17663   * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.
17664   * @function
17665   * @private
17666   */
17667  _reInit: function _reInit() {
17668    this.isInitialized = false;
17669
17670    this._init();
17671  },
17672
17673  /**
17674   * Checks if the screen is at least as wide as a breakpoint.
17675   * @function
17676   * @param {String} size - Name of the breakpoint to check.
17677   * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.
17678   */
17679  atLeast: function atLeast(size) {
17680    var query = this.get(size);
17681
17682    if (query) {
17683      return window.matchMedia(query).matches;
17684    }
17685
17686    return false;
17687  },
17688
17689  /**
17690   * Checks if the screen is within the given breakpoint.
17691   * If smaller than the breakpoint of larger than its upper limit it returns false.
17692   * @function
17693   * @param {String} size - Name of the breakpoint to check.
17694   * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.
17695   */
17696  only: function only(size) {
17697    return size === this._getCurrentSize();
17698  },
17699
17700  /**
17701   * Checks if the screen is within a breakpoint or smaller.
17702   * @function
17703   * @param {String} size - Name of the breakpoint to check.
17704   * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.
17705   */
17706  upTo: function upTo(size) {
17707    var nextSize = this.next(size); // If the next breakpoint does not match, the screen is smaller than
17708    // the upper limit of this breakpoint.
17709
17710    if (nextSize) {
17711      return !this.atLeast(nextSize);
17712    } // If there is no next breakpoint, the "size" breakpoint does not have
17713    // an upper limit and the screen will always be within it or smaller.
17714
17715
17716    return true;
17717  },
17718
17719  /**
17720   * Checks if the screen matches to a breakpoint.
17721   * @function
17722   * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.
17723   * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.
17724   */
17725  is: function is(size) {
17726    var parts = size.trim().split(' ').filter(function (p) {
17727      return !!p.length;
17728    });
17729
17730    var _parts = _slicedToArray(parts, 2),
17731        bpSize = _parts[0],
17732        _parts$ = _parts[1],
17733        bpModifier = _parts$ === void 0 ? '' : _parts$; // Only the breakpont
17734
17735
17736    if (bpModifier === 'only') {
17737      return this.only(bpSize);
17738    } // At least the breakpoint (included)
17739
17740
17741    if (!bpModifier || bpModifier === 'up') {
17742      return this.atLeast(bpSize);
17743    } // Up to the breakpoint (included)
17744
17745
17746    if (bpModifier === 'down') {
17747      return this.upTo(bpSize);
17748    }
17749
17750    throw new Error("\n      Invalid breakpoint passed to MediaQuery.is().\n      Expected a breakpoint name formatted like \"<size> <modifier>\", got \"".concat(size, "\".\n    "));
17751  },
17752
17753  /**
17754   * Gets the media query of a breakpoint.
17755   * @function
17756   * @param {String} size - Name of the breakpoint to get.
17757   * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.
17758   */
17759  get: function get(size) {
17760    for (var i in this.queries) {
17761      if (this.queries.hasOwnProperty(i)) {
17762        var query = this.queries[i];
17763        if (size === query.name) return query.value;
17764      }
17765    }
17766
17767    return null;
17768  },
17769
17770  /**
17771   * Get the breakpoint following the given breakpoint.
17772   * @function
17773   * @param {String} size - Name of the breakpoint.
17774   * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.
17775   */
17776  next: function next(size) {
17777    var _this = this;
17778
17779    var queryIndex = this.queries.findIndex(function (q) {
17780      return _this._getQueryName(q) === size;
17781    });
17782
17783    if (queryIndex === -1) {
17784      throw new Error("\n        Unknown breakpoint \"".concat(size, "\" passed to MediaQuery.next().\n        Ensure it is present in your Sass \"$breakpoints\" setting.\n      "));
17785    }
17786
17787    var nextQuery = this.queries[queryIndex + 1];
17788    return nextQuery ? nextQuery.name : null;
17789  },
17790
17791  /**
17792   * Returns the name of the breakpoint related to the given value.
17793   * @function
17794   * @private
17795   * @param {String|Object}
vendor: 5,212 bytes, lines 17795-17942
17795 value - Breakpoint name or query object.
17796   * @returns {String} Name of the breakpoint.
17797   */
17798  _getQueryName: function _getQueryName(value) {
17799    if (typeof value === 'string') return value;
17800    if (_typeof(value) === 'object') return value.name;
17801    throw new TypeError("\n      Invalid value passed to MediaQuery._getQueryName().\n      Expected a breakpoint name (String) or a breakpoint query (Object), got \"".concat(value, "\" (").concat(_typeof(value), ")\n    "));
17802  },
17803
17804  /**
17805   * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).
17806   * @function
17807   * @private
17808   * @returns {String} Name of the current breakpoint.
17809   */
17810  _getCurrentSize: function _getCurrentSize() {
17811    var matched;
17812
17813    for (var i = 0; i < this.queries.length; i++) {
17814      var query = this.queries[i];
17815
17816      if (window.matchMedia(query.value).matches) {
17817        matched = query;
17818      }
17819    }
17820
17821    return matched && this._getQueryName(matched);
17822  },
17823
17824  /**
17825   * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.
17826   * @function
17827   * @private
17828   */
17829  _watcher: function _watcher() {
17830    var _this2 = this;
17831
17832    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', function () {
17833      var newSize = _this2._getCurrentSize(),
17834          currentSize = _this2.current;
17835
17836      if (newSize !== currentSize) {
17837        // Change the current media query
17838        _this2.current = newSize; // Broadcast the media query change on the window
17839
17840        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);
17841      }
17842    });
17843  }
17844}; // Thank you: https://github.com/sindresorhus/query-string
17845
17846function parseStyleToObject(str) {
17847  var styleObject = {};
17848
17849  if (typeof str !== 'string') {
17850    return styleObject;
17851  }
17852
17853  str = str.trim().slice(1, -1); // browsers re-quote string style values
17854
17855  if (!str) {
17856    return styleObject;
17857  }
17858
17859  styleObject = str.split('&').reduce(function (ret, param) {
17860    var parts = param.replace(/\+/g, ' ').split('=');
17861    var key = parts[0];
17862    var val = parts[1];
17863    key = decodeURIComponent(key); // missing `=` should be `null`:
17864    // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
17865
17866    val = typeof val === 'undefined' ? null : decodeURIComponent(val);
17867
17868    if (!ret.hasOwnProperty(key)) {
17869      ret[key] = val;
17870    } else if (Array.isArray(ret[key])) {
17871      ret[key].push(val);
17872    } else {
17873      ret[key] = [ret[key], val];
17874    }
17875
17876    return ret;
17877  }, {});
17878  return styleObject;
17879}
17880
17881
17882
17883/***/ }),
17884
17885/***/ 24:
17886/*!****************************************************************!*\
17887  !*** multi ./js/entries/plugins/foundation.util.mediaQuery.js ***!
17888  \****************************************************************/
17889/*! no static exports found */
17890/***/ (function(module, exports, __webpack_require__) {
17891
17892module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.mediaQuery.js */"./js/entries/plugins/foundation.util.mediaQuery.js");
17893
17894
17895/***/ }),
17896
17897/***/ "jquery":
17898/*!********************************************************************************************!*\
17899  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
17900  \********************************************************************************************/
17901/*! no static exports found */
17902/***/ (function(module, exports) {
17903
17904module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
17905
17906/***/ })
17907
17908/******/ });
17909});
17910//# sourceMappingURL=foundation.util.mediaQuery.js.map
17911(function webpackUniversalModuleDefinition(root, factory) {
17912	if(typeof exports === 'object' && typeof module === 'object')
17913		module.exports = factory(require("./foundation.core"), require("jquery"));
17914	else if(typeof define === 'function' && define.amd)
17915		define(["./foundation.core", "jquery"], factory);
17916	else if(typeof exports === 'object')
17917		exports["foundation.util.motion"] = factory(require("./foundation.core"), require("jquery"));
17918	else
17919		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
17920})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
17921return /******/ (function(modules) { // webpackBootstrap
17922/******/ 	// The module cache
17923/******/ 	var installedModules = {};
17924/******/
17925/******/ 	// The require function
17926/******/ 	function __webpack_require__(moduleId) {
17927/******/
17928/******/ 		// Check if module is in cache
17929/******/ 		if(installedModules[moduleId]) {
17930/******/ 			return installedModules[moduleId].exports;
17931/******/ 		}
17932/******/ 		// Create a new module (and put it into the cache)
17933/******/ 		var module = installedModules[moduleId] = {
17934/******/ 			i: moduleId,
17935/******/ 			l: false,
17936/******/ 			exports: {}
17937/******/ 		};
17938/******/
17939/******/ 		// Execute the module function
17940/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
17941/******/
17942/******/ 		// Flag the module as loaded
vendor: 3,489 bytes, lines 17943-18019
17943/******/ 		module.l = true;
17944/******/
17945/******/ 		// Return the exports of the module
17946/******/ 		return module.exports;
17947/******/ 	}
17948/******/
17949/******/
17950/******/ 	// expose the modules object (__webpack_modules__)
17951/******/ 	__webpack_require__.m = modules;
17952/******/
17953/******/ 	// expose the module cache
17954/******/ 	__webpack_require__.c = installedModules;
17955/******/
17956/******/ 	// define getter function for harmony exports
17957/******/ 	__webpack_require__.d = function(exports, name, getter) {
17958/******/ 		if(!__webpack_require__.o(exports, name)) {
17959/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
17960/******/ 		}
17961/******/ 	};
17962/******/
17963/******/ 	// define __esModule on exports
17964/******/ 	__webpack_require__.r = function(exports) {
17965/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
17966/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
17967/******/ 		}
17968/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
17969/******/ 	};
17970/******/
17971/******/ 	// create a fake namespace object
17972/******/ 	// mode & 1: value is a module id, require it
17973/******/ 	// mode & 2: merge all properties of value into the ns
17974/******/ 	// mode & 4: return value when already ns object
17975/******/ 	// mode & 8|1: behave like require
17976/******/ 	__webpack_require__.t = function(value, mode) {
17977/******/ 		if(mode & 1) value = __webpack_require__(value);
17978/******/ 		if(mode & 8) return value;
17979/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
17980/******/ 		var ns = Object.create(null);
17981/******/ 		__webpack_require__.r(ns);
17982/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
17983/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
17984/******/ 		return ns;
17985/******/ 	};
17986/******/
17987/******/ 	// getDefaultExport function for compatibility with non-harmony modules
17988/******/ 	__webpack_require__.n = function(module) {
17989/******/ 		var getter = module && module.__esModule ?
17990/******/ 			function getDefault() { return module['default']; } :
17991/******/ 			function getModuleExports() { return module; };
17992/******/ 		__webpack_require__.d(getter, 'a', getter);
17993/******/ 		return getter;
17994/******/ 	};
17995/******/
17996/******/ 	// Object.prototype.hasOwnProperty.call
17997/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
17998/******/
17999/******/ 	// __webpack_public_path__
18000/******/ 	__webpack_require__.p = "";
18001/******/
18002/******/
18003/******/ 	// Load entry module and return exports
18004/******/ 	return __webpack_require__(__webpack_require__.s = 25);
18005/******/ })
18006/************************************************************************/
18007/******/ ({
18008
18009/***/ "./foundation.core":
18010/*!****************************************************************************************************************************************************************!*\
18011  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
18012  \****************************************************************************************************************************************************************/
18013/*! no static exports found */
18014/***/ (function(module, exports) {
18015
18016module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
18017
18018/***/ }),
18019
18020/***/ "./js/entries/plugins/foundation.util.motion.js":
18021/*!******************************************************!*\
18022  !*** ./js/entries/plugins/foundation.util.motion.js ***!
18023  \******************************************************/
18024/*! exports provided: Foundation, Motion, Move */
18025/***/ (function(module, __webpack_exports__, __webpack_require__) {
18026
18027"use strict";
18028__webpack_require__.r(__webpack_exports__);
18029/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
18030/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
18031/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
18032
18033/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.motion */ "./js/foundation.util.motion.js");
18034/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Motion", function() { return _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"]; });
18035
18036/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Move", function() { return _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Move"]; });
18037
18038
18039
18040_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Motion = _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"];
18041_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Move = _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Move"];
18042
18043
18044/***/ }),
18045
vendor: 4,802 bytes, lines 18046-18175
18046/***/ "./js/foundation.util.motion.js":
18047/*!**************************************!*\
18048  !*** ./js/foundation.util.motion.js ***!
18049  \**************************************/
18050/*! exports provided: Move, Motion */
18051/***/ (function(module, __webpack_exports__, __webpack_require__) {
18052
18053"use strict";
18054__webpack_require__.r(__webpack_exports__);
18055/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Move", function() { return Move; });
18056/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Motion", function() { return Motion; });
18057/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
18058/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
18059/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
18060/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
18061
18062
18063
18064
18065/**
18066 * Motion module.
18067 * @module foundation.motion
18068 */
18069
18070var initClasses = ['mui-enter', 'mui-leave'];
18071var activeClasses = ['mui-enter-active', 'mui-leave-active'];
18072var Motion = {
18073  animateIn: function animateIn(element, animation, cb) {
18074    animate(true, element, animation, cb);
18075  },
18076  animateOut: function animateOut(element, animation, cb) {
18077    animate(false, element, animation, cb);
18078  }
18079};
18080
18081function Move(duration, elem, fn) {
18082  var anim,
18083      prog,
18084      start = null; // console.log('called');
18085
18086  if (duration === 0) {
18087    fn.apply(elem);
18088    elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
18089    return;
18090  }
18091
18092  function move(ts) {
18093    if (!start) start = ts; // console.log(start, ts);
18094
18095    prog = ts - start;
18096    fn.apply(elem);
18097
18098    if (prog < duration) {
18099      anim = window.requestAnimationFrame(move, elem);
18100    } else {
18101      window.cancelAnimationFrame(anim);
18102      elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);
18103    }
18104  }
18105
18106  anim = window.requestAnimationFrame(move);
18107}
18108/**
18109 * Animates an element in or out using a CSS transition class.
18110 * @function
18111 * @private
18112 * @param {Boolean} isIn - Defines if the animation is in or out.
18113 * @param {Object} element - jQuery or HTML object to animate.
18114 * @param {String} animation - CSS class to use.
18115 * @param {Function} cb - Callback to run when animation is finished.
18116 */
18117
18118
18119function animate(isIn, element, animation, cb) {
18120  element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).eq(0);
18121  if (!element.length) return;
18122  var initClass = isIn ? initClasses[0] : initClasses[1];
18123  var activeClass = isIn ? activeClasses[0] : activeClasses[1]; // Set up the animation
18124
18125  reset();
18126  element.addClass(animation).css('transition', 'none');
18127  requestAnimationFrame(function () {
18128    element.addClass(initClass);
18129    if (isIn) element.show();
18130  }); // Start the animation
18131
18132  requestAnimationFrame(function () {
18133    // will trigger the browser to synchronously calculate the style and layout
18134    // also called reflow or layout thrashing
18135    // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a
18136    element[0].offsetWidth;
18137    element.css('transition', '').addClass(activeClass);
18138  }); // Clean up the animation when it finishes
18139
18140  element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(element), finish); // Hides the element (for out animations), resets the element, and runs a callback
18141
18142  function finish() {
18143    if (!isIn) element.hide();
18144    reset();
18145    if (cb) cb.apply(element);
18146  } // Resets transitions and removes motion-specific classes
18147
18148
18149  function reset() {
18150    element[0].style.transitionDuration = 0;
18151    element.removeClass("".concat(initClass, " ").concat(activeClass, " ").concat(animation));
18152  }
18153}
18154
18155
18156
18157/***/ }),
18158
18159/***/ 25:
18160/*!************************************************************!*\
18161  !*** multi ./js/entries/plugins/foundation.util.motion.js ***!
18162  \************************************************************/
18163/*! no static exports found */
18164/***/ (function(module, exports, __webpack_require__) {
18165
18166module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.motion.js */"./js/entries/plugins/foundation.util.motion.js");
18167
18168
18169/***/ }),
18170
18171/***/ "jquery":
18172/*!********************************************************************************************!*\
18173  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
18174  \********************************************************************************************/
18175/*! no static exports found */
vendor: 5,082 bytes, lines 18176-18287
18176/***/ (function(module, exports) {
18177
18178module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
18179
18180/***/ })
18181
18182/******/ });
18183});
18184//# sourceMappingURL=foundation.util.motion.js.map
18185(function webpackUniversalModuleDefinition(root, factory) {
18186	if(typeof exports === 'object' && typeof module === 'object')
18187		module.exports = factory(require("./foundation.core"), require("jquery"));
18188	else if(typeof define === 'function' && define.amd)
18189		define(["./foundation.core", "jquery"], factory);
18190	else if(typeof exports === 'object')
18191		exports["foundation.util.nest"] = factory(require("./foundation.core"), require("jquery"));
18192	else
18193		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.nest"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
18194})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
18195return /******/ (function(modules) { // webpackBootstrap
18196/******/ 	// The module cache
18197/******/ 	var installedModules = {};
18198/******/
18199/******/ 	// The require function
18200/******/ 	function __webpack_require__(moduleId) {
18201/******/
18202/******/ 		// Check if module is in cache
18203/******/ 		if(installedModules[moduleId]) {
18204/******/ 			return installedModules[moduleId].exports;
18205/******/ 		}
18206/******/ 		// Create a new module (and put it into the cache)
18207/******/ 		var module = installedModules[moduleId] = {
18208/******/ 			i: moduleId,
18209/******/ 			l: false,
18210/******/ 			exports: {}
18211/******/ 		};
18212/******/
18213/******/ 		// Execute the module function
18214/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
18215/******/
18216/******/ 		// Flag the module as loaded
18217/******/ 		module.l = true;
18218/******/
18219/******/ 		// Return the exports of the module
18220/******/ 		return module.exports;
18221/******/ 	}
18222/******/
18223/******/
18224/******/ 	// expose the modules object (__webpack_modules__)
18225/******/ 	__webpack_require__.m = modules;
18226/******/
18227/******/ 	// expose the module cache
18228/******/ 	__webpack_require__.c = installedModules;
18229/******/
18230/******/ 	// define getter function for harmony exports
18231/******/ 	__webpack_require__.d = function(exports, name, getter) {
18232/******/ 		if(!__webpack_require__.o(exports, name)) {
18233/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
18234/******/ 		}
18235/******/ 	};
18236/******/
18237/******/ 	// define __esModule on exports
18238/******/ 	__webpack_require__.r = function(exports) {
18239/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
18240/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
18241/******/ 		}
18242/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
18243/******/ 	};
18244/******/
18245/******/ 	// create a fake namespace object
18246/******/ 	// mode & 1: value is a module id, require it
18247/******/ 	// mode & 2: merge all properties of value into the ns
18248/******/ 	// mode & 4: return value when already ns object
18249/******/ 	// mode & 8|1: behave like require
18250/******/ 	__webpack_require__.t = function(value, mode) {
18251/******/ 		if(mode & 1) value = __webpack_require__(value);
18252/******/ 		if(mode & 8) return value;
18253/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
18254/******/ 		var ns = Object.create(null);
18255/******/ 		__webpack_require__.r(ns);
18256/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
18257/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
18258/******/ 		return ns;
18259/******/ 	};
18260/******/
18261/******/ 	// getDefaultExport function for compatibility with non-harmony modules
18262/******/ 	__webpack_require__.n = function(module) {
18263/******/ 		var getter = module && module.__esModule ?
18264/******/ 			function getDefault() { return module['default']; } :
18265/******/ 			function getModuleExports() { return module; };
18266/******/ 		__webpack_require__.d(getter, 'a', getter);
18267/******/ 		return getter;
18268/******/ 	};
18269/******/
18270/******/ 	// Object.prototype.hasOwnProperty.call
18271/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
18272/******/
18273/******/ 	// __webpack_public_path__
18274/******/ 	__webpack_require__.p = "";
18275/******/
18276/******/
18277/******/ 	// Load entry module and return exports
18278/******/ 	return __webpack_require__(__webpack_require__.s = 26);
18279/******/ })
18280/************************************************************************/
18281/******/ ({
18282
18283/***/ "./foundation.core":
18284/*!****************************************************************************************************************************************************************!*\
18285  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
18286  \****************************************************************************************************************************************************************/
18287/*! no static exports found */
18288/***/ (function(module, exports) {
18289
18290module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
18291
18292/***/ }),
18293
18294/***/ "./js/entries/plugins/foundation.util.nest.js":
18295/*!****************************************************!*\
18296  !*** ./js/entries/plugins/foundation.util.nest.js ***!
18297  \****************************************************/
18298/*! exports provided: Foundation, Nest */
18299/***/ (function(module, __webpack_exports__, __webpack_require__) {
18300
18301"use strict";
18302__webpack_require__.r(__webpack_exports__);
18303/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
18304/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
18305/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
18306
18307/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.nest */ "./js/foundation.util.nest.js");
18308/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Nest", function() { return _foundation_util_nest__WEBPACK_IMPORTED_MODULE_1__["Nest"]; });
18309
18310
18311
18312_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Nest = _foundation_util_nest__WEBPACK_IMPORTED_MODULE_1__["Nest"];
18313
18314
18315/***/ }),
18316
vendor: 5,413 bytes, lines 18317-18456
18317/***/ "./js/foundation.util.nest.js":
18318/*!************************************!*\
18319  !*** ./js/foundation.util.nest.js ***!
18320  \************************************/
18321/*! exports provided: Nest */
18322/***/ (function(module, __webpack_exports__, __webpack_require__) {
18323
18324"use strict";
18325__webpack_require__.r(__webpack_exports__);
18326/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Nest", function() { return Nest; });
18327/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
18328/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
18329
18330
18331
18332var Nest = {
18333  Feather: function Feather(menu) {
18334    var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'zf';
18335    menu.attr('role', 'menubar');
18336    menu.find('a').attr({
18337      'role': 'menuitem'
18338    });
18339    var items = menu.find('li').attr({
18340      'role': 'none'
18341    }),
18342        subMenuClass = "is-".concat(type, "-submenu"),
18343        subItemClass = "".concat(subMenuClass, "-item"),
18344        hasSubClass = "is-".concat(type, "-submenu-parent"),
18345        applyAria = type !== 'accordion'; // Accordions handle their own ARIA attriutes.
18346
18347    items.each(function () {
18348      var $item = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
18349          $sub = $item.children('ul');
18350
18351      if ($sub.length) {
18352        $item.addClass(hasSubClass);
18353
18354        if (applyAria) {
18355          $item.attr({
18356            'aria-haspopup': true,
18357            'aria-label': $item.children('a:first').text()
18358          }); // Note:  Drilldowns behave differently in how they hide, and so need
18359          // additional attributes.  We should look if this possibly over-generalized
18360          // utility (Nest) is appropriate when we rework menus in 6.4
18361
18362          if (type === 'drilldown') {
18363            $item.attr({
18364              'aria-expanded': false
18365            });
18366          }
18367        }
18368
18369        $sub.addClass("submenu ".concat(subMenuClass)).attr({
18370          'data-submenu': '',
18371          'role': 'menubar'
18372        });
18373
18374        if (type === 'drilldown') {
18375          $sub.attr({
18376            'aria-hidden': true
18377          });
18378        }
18379      }
18380
18381      if ($item.parent('[data-submenu]').length) {
18382        $item.addClass("is-submenu-item ".concat(subItemClass));
18383      }
18384    });
18385    return;
18386  },
18387  Burn: function Burn(menu, type) {
18388    var //items = menu.find('li'),
18389    subMenuClass = "is-".concat(type, "-submenu"),
18390        subItemClass = "".concat(subMenuClass, "-item"),
18391        hasSubClass = "is-".concat(type, "-submenu-parent");
18392    menu.find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li').removeClass("".concat(subMenuClass, " ").concat(subItemClass, " ").concat(hasSubClass, " is-submenu-item submenu is-active")).removeAttr('data-submenu').css('display', '');
18393  }
18394};
18395
18396
18397/***/ }),
18398
18399/***/ 26:
18400/*!**********************************************************!*\
18401  !*** multi ./js/entries/plugins/foundation.util.nest.js ***!
18402  \**********************************************************/
18403/*! no static exports found */
18404/***/ (function(module, exports, __webpack_require__) {
18405
18406module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.nest.js */"./js/entries/plugins/foundation.util.nest.js");
18407
18408
18409/***/ }),
18410
18411/***/ "jquery":
18412/*!********************************************************************************************!*\
18413  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
18414  \********************************************************************************************/
18415/*! no static exports found */
18416/***/ (function(module, exports) {
18417
18418module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
18419
18420/***/ })
18421
18422/******/ });
18423});
18424//# sourceMappingURL=foundation.util.nest.js.map
18425(function webpackUniversalModuleDefinition(root, factory) {
18426	if(typeof exports === 'object' && typeof module === 'object')
18427		module.exports = factory(require("./foundation.core"), require("jquery"));
18428	else if(typeof define === 'function' && define.amd)
18429		define(["./foundation.core", "jquery"], factory);
18430	else if(typeof exports === 'object')
18431		exports["foundation.util.timer"] = factory(require("./foundation.core"), require("jquery"));
18432	else
18433		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.timer"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
18434})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
18435return /******/ (function(modules) { // webpackBootstrap
18436/******/ 	// The module cache
18437/******/ 	var installedModules = {};
18438/******/
18439/******/ 	// The require function
18440/******/ 	function __webpack_require__(moduleId) {
18441/******/
18442/******/ 		// Check if module is in cache
18443/******/ 		if(installedModules[moduleId]) {
18444/******/ 			return installedModules[moduleId].exports;
18445/******/ 		}
18446/******/ 		// Create a new module (and put it into the cache)
18447/******/ 		var module = installedModules[moduleId] = {
18448/******/ 			i: moduleId,
18449/******/ 			l: false,
18450/******/ 			exports: {}
18451/******/ 		};
18452/******/
18453/******/ 		// Execute the module function
18454/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
18455/******/
18456/******/ 		// Flag the module as loaded
vendor: 3,489 bytes, lines 18457-18533
18457/******/ 		module.l = true;
18458/******/
18459/******/ 		// Return the exports of the module
18460/******/ 		return module.exports;
18461/******/ 	}
18462/******/
18463/******/
18464/******/ 	// expose the modules object (__webpack_modules__)
18465/******/ 	__webpack_require__.m = modules;
18466/******/
18467/******/ 	// expose the module cache
18468/******/ 	__webpack_require__.c = installedModules;
18469/******/
18470/******/ 	// define getter function for harmony exports
18471/******/ 	__webpack_require__.d = function(exports, name, getter) {
18472/******/ 		if(!__webpack_require__.o(exports, name)) {
18473/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
18474/******/ 		}
18475/******/ 	};
18476/******/
18477/******/ 	// define __esModule on exports
18478/******/ 	__webpack_require__.r = function(exports) {
18479/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
18480/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
18481/******/ 		}
18482/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
18483/******/ 	};
18484/******/
18485/******/ 	// create a fake namespace object
18486/******/ 	// mode & 1: value is a module id, require it
18487/******/ 	// mode & 2: merge all properties of value into the ns
18488/******/ 	// mode & 4: return value when already ns object
18489/******/ 	// mode & 8|1: behave like require
18490/******/ 	__webpack_require__.t = function(value, mode) {
18491/******/ 		if(mode & 1) value = __webpack_require__(value);
18492/******/ 		if(mode & 8) return value;
18493/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
18494/******/ 		var ns = Object.create(null);
18495/******/ 		__webpack_require__.r(ns);
18496/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
18497/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
18498/******/ 		return ns;
18499/******/ 	};
18500/******/
18501/******/ 	// getDefaultExport function for compatibility with non-harmony modules
18502/******/ 	__webpack_require__.n = function(module) {
18503/******/ 		var getter = module && module.__esModule ?
18504/******/ 			function getDefault() { return module['default']; } :
18505/******/ 			function getModuleExports() { return module; };
18506/******/ 		__webpack_require__.d(getter, 'a', getter);
18507/******/ 		return getter;
18508/******/ 	};
18509/******/
18510/******/ 	// Object.prototype.hasOwnProperty.call
18511/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
18512/******/
18513/******/ 	// __webpack_public_path__
18514/******/ 	__webpack_require__.p = "";
18515/******/
18516/******/
18517/******/ 	// Load entry module and return exports
18518/******/ 	return __webpack_require__(__webpack_require__.s = 27);
18519/******/ })
18520/************************************************************************/
18521/******/ ({
18522
18523/***/ "./foundation.core":
18524/*!****************************************************************************************************************************************************************!*\
18525  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
18526  \****************************************************************************************************************************************************************/
18527/*! no static exports found */
18528/***/ (function(module, exports) {
18529
18530module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
18531
18532/***/ }),
18533
18534/***/ "./js/entries/plugins/foundation.util.timer.js":
18535/*!*****************************************************!*\
18536  !*** ./js/entries/plugins/foundation.util.timer.js ***!
18537  \*****************************************************/
18538/*! exports provided: Foundation, Timer */
18539/***/ (function(module, __webpack_exports__, __webpack_require__) {
18540
18541"use strict";
18542__webpack_require__.r(__webpack_exports__);
18543/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
18544/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
18545/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
18546
18547/* harmony import */ var _foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.timer */ "./js/foundation.util.timer.js");
18548/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return _foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__["Timer"]; });
18549
18550
18551
18552_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Timer = _foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__["Timer"];
18553
18554
18555/***/ }),
18556
18557/***/ "./js/foundation.util.timer.js":
18558/*!*************************************!*\
18559  !*** ./js/foundation.util.timer.js ***!
18560  \*************************************/
18561/*! exports provided: Timer */
18562/***/ (function(module, __webpack_exports__, __webpack_require__) {
18563
18564"use strict";
18565__webpack_require__.r(__webpack_exports__);
18566/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return Timer; });
18567/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
18568/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
18569
18570
18571
18572
18573function Timer(elem, options, cb) {
18574  var _this = this,
18575      duration = options.duration,
18576      //options is an object for easily adding features later.
18577  nameSpace = Object.keys(elem.data())[0] || 'timer',
18578      remain = -1,
18579      start,
18580      timer;
18581
18582  this.isPaused = false;
18583
18584  this.restart = function () {
18585    remain = -1;
18586    clearTimeout(timer);
18587    this.start();
18588  };
18589
18590  this.start = function () {
18591    this.isPaused = false; // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
18592
18593    clearTimeout(timer);
18594    remain = remain <= 0 ? duration : remain;
18595    elem.data('paused', false);
18596    start = Date.now();
18597    timer = setTimeout(function () {
18598      if (options.infinite) {
18599        _this.restart(); //rerun the timer.
18600
18601      }
18602
18603      if (cb && typeof cb === 'function') {
18604        cb();
18605      }
18606    }, remain);
18607    elem.trigger("timerstart.zf.".concat(nameSpace));
18608  };
18609
18610  this.pause = function () {
18611    this.isPaused = true; //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.
18612
18613    clearTimeout(timer);
18614    elem.data('paused', true);
18615    var end = Date.now();
18616    remain = remain - (end - start);
18617    elem.trigger("timerpaused.zf.".concat(nameSpace));
18618  };
18619}
18620
18621
18622
18623/***/ }),
18624
18625/***/ 27:
18626/*!***********************************************************!*\
18627  !*** multi ./js/entries/plugins/foundation.util.timer.js ***!
18628  \***********************************************************/
18629/*! no static exports found */
18630/***/ (function(module, exports, __webpack_require__) {
18631
18632module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.timer.js */"./js/entries/plugins/foundation.util.timer.js");
18633
18634
18635/***/ }),
18636
18637/***/ "jquery":
18638/*!********************************************************************************************!*\
18639  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
18640  \********************************************************************************************/
18641/*! no static exports found */
18642/***/ (function(module, exports) {
18643
18644module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
18645
18646/***/ })
18647
18648/******/ });
18649});
18650//# sourceMappingURL=foundation.util.timer.js.map
18651(function webpackUniversalModuleDefinition(root, factory) {
18652	if(typeof exports === 'object' && typeof module === 'object')
18653		module.exports = factory(require("./foundation.core"), require("jquery"));
18654	else if(typeof define === 'function' && define.amd)
18655		define(["./foundation.core", "jquery"], factory);
18656	else if(typeof exports === 'object')
18657		exports["foundation.util.touch"] = factory(require("./foundation.core"), require("jquery"));
18658	else
18659		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.touch"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
18660})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
18661return /******/ (function(modules) { // webpackBootstrap
18662/******/ 	// The module cache
18663/******/ 	var installedModules = {};
18664/******/
18665/******/ 	// The require function
18666/******/ 	function __webpack_require__(moduleId) {
18667/******/
18668/******/ 		// Check if module is in cache
18669/******/ 		if(installedModules[moduleId]) {
18670/******/ 			return installedModules[moduleId].exports;
18671/******/ 		}
18672/******/ 		// Create a new module (and put it into the cache)
18673/******/ 		var module = installedModules[moduleId] = {
18674/******/ 			i: moduleId,
18675/******/ 			l: false,
18676/******/ 			exports: {}
18677/******/ 		};
18678/******/
18679/******/ 		// Execute the module function
18680/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
18681/******/
18682/******/ 		// Flag the module as loaded
vendor: 3,489 bytes, lines 18683-18759
18683/******/ 		module.l = true;
18684/******/
18685/******/ 		// Return the exports of the module
18686/******/ 		return module.exports;
18687/******/ 	}
18688/******/
18689/******/
18690/******/ 	// expose the modules object (__webpack_modules__)
18691/******/ 	__webpack_require__.m = modules;
18692/******/
18693/******/ 	// expose the module cache
18694/******/ 	__webpack_require__.c = installedModules;
18695/******/
18696/******/ 	// define getter function for harmony exports
18697/******/ 	__webpack_require__.d = function(exports, name, getter) {
18698/******/ 		if(!__webpack_require__.o(exports, name)) {
18699/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
18700/******/ 		}
18701/******/ 	};
18702/******/
18703/******/ 	// define __esModule on exports
18704/******/ 	__webpack_require__.r = function(exports) {
18705/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
18706/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
18707/******/ 		}
18708/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
18709/******/ 	};
18710/******/
18711/******/ 	// create a fake namespace object
18712/******/ 	// mode & 1: value is a module id, require it
18713/******/ 	// mode & 2: merge all properties of value into the ns
18714/******/ 	// mode & 4: return value when already ns object
18715/******/ 	// mode & 8|1: behave like require
18716/******/ 	__webpack_require__.t = function(value, mode) {
18717/******/ 		if(mode & 1) value = __webpack_require__(value);
18718/******/ 		if(mode & 8) return value;
18719/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
18720/******/ 		var ns = Object.create(null);
18721/******/ 		__webpack_require__.r(ns);
18722/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
18723/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
18724/******/ 		return ns;
18725/******/ 	};
18726/******/
18727/******/ 	// getDefaultExport function for compatibility with non-harmony modules
18728/******/ 	__webpack_require__.n = function(module) {
18729/******/ 		var getter = module && module.__esModule ?
18730/******/ 			function getDefault() { return module['default']; } :
18731/******/ 			function getModuleExports() { return module; };
18732/******/ 		__webpack_require__.d(getter, 'a', getter);
18733/******/ 		return getter;
18734/******/ 	};
18735/******/
18736/******/ 	// Object.prototype.hasOwnProperty.call
18737/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
18738/******/
18739/******/ 	// __webpack_public_path__
18740/******/ 	__webpack_require__.p = "";
18741/******/
18742/******/
18743/******/ 	// Load entry module and return exports
18744/******/ 	return __webpack_require__(__webpack_require__.s = 28);
18745/******/ })
18746/************************************************************************/
18747/******/ ({
18748
18749/***/ "./foundation.core":
18750/*!****************************************************************************************************************************************************************!*\
18751  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
18752  \****************************************************************************************************************************************************************/
18753/*! no static exports found */
18754/***/ (function(module, exports) {
18755
18756module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
18757
18758/***/ }),
18759
18760/***/ "./js/entries/plugins/foundation.util.touch.js":
18761/*!*****************************************************!*\
18762  !*** ./js/entries/plugins/foundation.util.touch.js ***!
18763  \*****************************************************/
18764/*! exports provided: Foundation, Touch */
18765/***/ (function(module, __webpack_exports__, __webpack_require__) {
18766
18767"use strict";
18768__webpack_require__.r(__webpack_exports__);
18769/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
18770/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
18771/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.touch */ "./js/foundation.util.touch.js");
18772/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Touch", function() { return _foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__["Touch"]; });
18773
18774/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
18775/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_2__);
18776/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_2__["Foundation"]; });
18777
18778
18779
18780_foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
18781window.Foundation.Touch = _foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__["Touch"];
18782
18783
18784
18785/***/ }),
18786
18787/***/ "./js/foundation.util.touch.js":
18788/*!*************************************!*\
18789  !*** ./js/foundation.util.touch.js ***!
18790  \*************************************/
18791/*! exports provided: Touch */
18792/***/ (function(module, __webpack_exports__, __webpack_require__) {
18793
18794"use strict";
18795__webpack_require__.r(__webpack_exports__);
18796/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Touch", function() { return Touch; });
18797/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
18798/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
18799function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
18800
18801function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
18802
18803function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
18804
18805//**************************************************
18806//**Work inspired by multiple jquery swipe plugins**
18807//**Done by Yohai Ararat ***************************
18808//**************************************************
18809
18810var Touch = {};
18811var startPosX,
18812    startPosY,
18813    startTime,
18814    elapsedTime,
18815    startEvent,
18816    isMoving = false,
18817    didMoved = false;
18818
18819function onTouchEnd(e) {
18820  this.removeEventListener('touchmove', onTouchMove);
18821  this.removeEventListener('touchend', onTouchEnd); // If the touch did not move, consider it as a "tap"
18822
18823  if (!didMoved) {
18824    var tapEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event('tap', startEvent || e);
18825    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger(tapEvent);
18826  }
18827
18828  startEvent = null;
18829  isMoving = false;
18830  didMoved = false;
18831}
18832
18833function onTouchMove(e) {
18834  if (jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.preventDefault) {
18835    e.preventDefault();
18836  }
18837
18838  if (isMoving) {
18839    var x = e.touches[0].pageX;
18840    var y = e.touches[0].pageY;
18841    var dx = startPosX - x;
18842    var dy = startPosY - y;
18843    var dir;
18844    didMoved = true;
18845    elapsedTime = new Date().getTime() - startTime;
18846
18847    if (Math.abs(dx) >= jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.moveThreshold && elapsedTime <= jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.timeThreshold) {
18848      dir = dx > 0 ? 'left' : 'right';
18849    } // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {
18850    //   dir = dy > 0 ? 'down' : 'up';
18851    // }
18852
18853
18854    if (dir) {
18855      e.preventDefault();
18856      onTouchEnd.apply(this, arguments);
18857      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event('swipe', Object.assign({}, e)), dir).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event("swipe".concat(dir), Object.assign({}, e)));
18858    }
18859  }
18860}
18861
18862function onTouchStart(e) {
18863  if (e.touches.length == 1) {
18864    startPosX = e.touches[0].pageX;
18865    startPosY = e.touches[0].pageY;
18866    startEvent = e;
18867    isMoving = true;
18868    didMoved = false;
18869    startTime = new Date().getTime();
18870    this.addEventListener('touchmove', onTouchMove, false);
18871    this.addEventListener('touchend', onTouchEnd, false);
18872  }
18873}
18874
18875function init() {
18876  this.addEventListener && this.addEventListener('touchstart', onTouchStart, false);
18877}
18878
18879function teardown() {
18880  this.removeEventListener('touchstart', onTouchStart);
18881}
18882
18883var SpotSwipe =
18884/*#__PURE__*/
18885function () {
18886  function SpotSwipe($) {
18887    _classCallCheck(this, SpotSwipe);
18888
18889    this.version = '1.0.0';
18890    this.enabled = 'ontouchstart' in document.documentElement;
18891    this.preventDefault = false;
18892    this.moveThreshold = 75;
18893    this.timeThreshold = 200;
18894    this.$ = $;
18895
18896    this._init();
18897  }
18898
18899  _createClass(SpotSwipe, [{
18900    key: "_init",
18901    value: function _init() {
18902      var $ = this.$;
18903      $.event.special.swipe = {
18904        setup: init
18905      };
18906      $.event.special.tap = {
18907        setup: init
18908      };
18909      $.each(['left', 'up', 'down', 'right'], function () {
18910        $.event.special["swipe".concat(this)] = {
18911          setup: function setup() {
18912            $(this).on('swipe', $.noop);
18913          }
18914        };
18915      });
18916    }
18917  }]);
18918
18919  return SpotSwipe;
18920}();
18921/****************************************************
18922 * As far as I can tell, both setupSpotSwipe and    *
18923 * setupTouchHandler should be idempotent,          *
18924 * because they directly replace functions &        *
18925 * values, and do not add event handlers directly.  *
18926 ****************************************************/
18927
18928
18929Touch.setupSpotSwipe = function ($) {
18930  $.spotSwipe = new SpotSwipe($);
18931};
18932/****************************************************
18933 * Method for adding pseudo drag events to elements *
18934 ***************************************************/
18935
18936
18937Touch.setupTouchHandler = function ($) {
18938  $.fn.addTouch = function () {
18939    this.each(function (i, el) {
18940      $(el).bind('touchstart touchmove touchend touchcancel', function (event) {
18941        //we pass the original event object because the jQuery event
18942        //object is normalized to w3c specs and does not provide the TouchList
18943        handleTouch(event);
18944      });
18945    });
18946
18947    var handleTouch = function handleTouch(event) {
18948      var touches = event.changedTouches,
18949          first = touches[0],
18950          eventTypes = {
18951        touchstart: 'mousedown',
18952        touchmove: 'mousemove',
18953        touchend: 'mouseup'
18954      },
18955          type = eventTypes[event.type],
18956          simulatedEvent;
18957
18958      if ('MouseEvent' in window && typeof window.MouseEvent === 'function') {
18959        simulatedEvent = new window.MouseEvent(type, {
18960          'bubbles': true,
18961          'cancelable': true,
18962          'screenX': first.screenX,
18963          'screenY': first.screenY,
18964          'clientX': first.clientX,
18965          'clientY': first.clientY
18966        });
18967      } else {
18968        simulatedEvent = document.createEvent('MouseEvent');
18969        simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0
18970        /*left*/
18971        , null);
18972      }
18973
18974      first.target.dispatchEvent(simulatedEvent);
18975    };
18976  };
18977};
18978
18979Touch.init = function ($) {
18980  if (typeof $.spotSwipe === 'undefined') {
18981    Touch.setupSpotSwipe($);
18982    Touch.setupTouchHandler($);
18983  }
18984};
18985
18986
18987
18988/***/ }),
18989
18990/***/ 28:
18991/*!***********************************************************!*\
18992  !*** multi ./js/entries/plugins/foundation.util.touch.js ***!
18993  \***********************************************************/
18994/*! no static exports found */
18995/***/ (function(module, exports, __webpack_require__) {
18996
18997module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.touch.js */"./js/entries/plugins/foundation.util.touch.js");
18998
18999
19000/***/ }),
19001
19002/***/ "jquery":
19003/*!********************************************************************************************!*\
19004  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
19005  \********************************************************************************************/
19006/*! no static exports found */
19007/***/ (function(module, exports) {
19008
19009module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
19010
19011/***/ })
19012
19013/******/ });
19014});
19015//# sourceMappingURL=foundation.util.touch.js.map
19016(function webpackUniversalModuleDefinition(root, factory) {
19017	if(typeof exports === 'object' && typeof module === 'object')
19018		module.exports = factory(require("./foundation.core"), require("./foundation.util.motion"), require("jquery"));
19019	else if(typeof define === 'function' && define.amd)
19020		define(["./foundation.core", "./foundation.util.motion", "jquery"], factory);
19021	else if(typeof exports === 'object')
19022		exports["foundation.util.triggers"] = factory(require("./foundation.core"), require("./foundation.util.motion"), require("jquery"));
19023	else
19024		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.triggers"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]);
19025})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
19026return /******/ (function(modules) { // webpackBootstrap
19027/******/ 	// The module cache
19028/******/ 	var installedModules = {};
19029/******/
19030/******/ 	// The require function
19031/******/ 	function __webpack_require__(moduleId) {
19032/******/
19033/******/ 		// Check if module is in cache
19034/******/ 		if(installedModules[moduleId]) {
19035/******/ 			return installedModules[moduleId].exports;
19036/******/ 		}
19037/******/ 		// Create a new module (and put it into the cache)
19038/******/ 		var module = installedModules[moduleId] = {
19039/******/ 			i: moduleId,
19040/******/ 			l: false,
19041/******/ 			exports: {}
19042/******/ 		};
19043/******/
19044/******/ 		// Execute the module function
19045/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
19046/******/
19047/******/ 		// Flag the module as loaded
vendor: 4,135 bytes, lines 19048-19129
19048/******/ 		module.l = true;
19049/******/
19050/******/ 		// Return the exports of the module
19051/******/ 		return module.exports;
19052/******/ 	}
19053/******/
19054/******/
19055/******/ 	// expose the modules object (__webpack_modules__)
19056/******/ 	__webpack_require__.m = modules;
19057/******/
19058/******/ 	// expose the module cache
19059/******/ 	__webpack_require__.c = installedModules;
19060/******/
19061/******/ 	// define getter function for harmony exports
19062/******/ 	__webpack_require__.d = function(exports, name, getter) {
19063/******/ 		if(!__webpack_require__.o(exports, name)) {
19064/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
19065/******/ 		}
19066/******/ 	};
19067/******/
19068/******/ 	// define __esModule on exports
19069/******/ 	__webpack_require__.r = function(exports) {
19070/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
19071/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
19072/******/ 		}
19073/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
19074/******/ 	};
19075/******/
19076/******/ 	// create a fake namespace object
19077/******/ 	// mode & 1: value is a module id, require it
19078/******/ 	// mode & 2: merge all properties of value into the ns
19079/******/ 	// mode & 4: return value when already ns object
19080/******/ 	// mode & 8|1: behave like require
19081/******/ 	__webpack_require__.t = function(value, mode) {
19082/******/ 		if(mode & 1) value = __webpack_require__(value);
19083/******/ 		if(mode & 8) return value;
19084/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
19085/******/ 		var ns = Object.create(null);
19086/******/ 		__webpack_require__.r(ns);
19087/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
19088/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
19089/******/ 		return ns;
19090/******/ 	};
19091/******/
19092/******/ 	// getDefaultExport function for compatibility with non-harmony modules
19093/******/ 	__webpack_require__.n = function(module) {
19094/******/ 		var getter = module && module.__esModule ?
19095/******/ 			function getDefault() { return module['default']; } :
19096/******/ 			function getModuleExports() { return module; };
19097/******/ 		__webpack_require__.d(getter, 'a', getter);
19098/******/ 		return getter;
19099/******/ 	};
19100/******/
19101/******/ 	// Object.prototype.hasOwnProperty.call
19102/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
19103/******/
19104/******/ 	// __webpack_public_path__
19105/******/ 	__webpack_require__.p = "";
19106/******/
19107/******/
19108/******/ 	// Load entry module and return exports
19109/******/ 	return __webpack_require__(__webpack_require__.s = 29);
19110/******/ })
19111/************************************************************************/
19112/******/ ({
19113
19114/***/ "./foundation.core":
19115/*!****************************************************************************************************************************************************************!*\
19116  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
19117  \****************************************************************************************************************************************************************/
19118/*! no static exports found */
19119/***/ (function(module, exports) {
19120
19121module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
19122
19123/***/ }),
19124
19125/***/ "./foundation.util.motion":
19126/*!********************************************************************************************************************************************************************************************!*\
19127  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***!
19128  \********************************************************************************************************************************************************************************************/
19129/*! no static exports found */
19130/***/ (function(module, exports) {
19131
19132module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;
19133
19134/***/ }),
19135
19136/***/ "./js/entries/plugins/foundation.util.triggers.js":
19137/*!********************************************************!*\
19138  !*** ./js/entries/plugins/foundation.util.triggers.js ***!
19139  \********************************************************/
19140/*! exports provided: Foundation, Triggers */
19141/***/ (function(module, __webpack_exports__, __webpack_require__) {
19142
19143"use strict";
19144__webpack_require__.r(__webpack_exports__);
19145/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
19146/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
19147/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
19148
19149/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ "jquery");
19150/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);
19151/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../foundation.util.triggers */ "./js/foundation.util.triggers.js");
19152/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_2__["Triggers"]; });
19153
19154
19155
19156
19157_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_2__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_1___default.a, _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]);
19158
19159
19160/***/ }),
19161
vendor: 13,007 bytes, lines 19162-19476
19162/***/ "./js/foundation.util.triggers.js":
19163/*!****************************************!*\
19164  !*** ./js/foundation.util.triggers.js ***!
19165  \****************************************/
19166/*! exports provided: Triggers */
19167/***/ (function(module, __webpack_exports__, __webpack_require__) {
19168
19169"use strict";
19170__webpack_require__.r(__webpack_exports__);
19171/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; });
19172/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
19173/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
19174/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
19175/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
19176/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
19177/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);
19178
19179
19180function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
19181
19182
19183
19184
19185
19186var MutationObserver = function () {
19187  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
19188
19189  for (var i = 0; i < prefixes.length; i++) {
19190    if ("".concat(prefixes[i], "MutationObserver") in window) {
19191      return window["".concat(prefixes[i], "MutationObserver")];
19192    }
19193  }
19194
19195  return false;
19196}();
19197
19198var triggers = function triggers(el, type) {
19199  el.data(type).split(' ').forEach(function (id) {
19200    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]);
19201  });
19202};
19203
19204var Triggers = {
19205  Listeners: {
19206    Basic: {},
19207    Global: {}
19208  },
19209  Initializers: {}
19210};
19211Triggers.Listeners.Basic = {
19212  openListener: function openListener() {
19213    triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open');
19214  },
19215  closeListener: function closeListener() {
19216    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close');
19217
19218    if (id) {
19219      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close');
19220    } else {
19221      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger');
19222    }
19223  },
19224  toggleListener: function toggleListener() {
19225    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
19226
19227    if (id) {
19228      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
19229    } else {
19230      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger');
19231    }
19232  },
19233  closeableListener: function closeableListener(e) {
19234    var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833
19235
19236    e.stopPropagation();
19237
19238    if (animation !== '') {
19239      _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () {
19240        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf');
19241      });
19242    } else {
19243      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf');
19244    }
19245  },
19246  toggleFocusListener: function toggleFocusListener() {
19247    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus');
19248    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]);
19249  }
19250}; // Elements with [data-open] will reveal a plugin that supports it when clicked.
19251
19252Triggers.Initializers.addOpenListener = function ($elem) {
19253  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
19254  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
19255}; // Elements with [data-close] will close a plugin that supports it when clicked.
19256// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
19257
19258
19259Triggers.Initializers.addCloseListener = function ($elem) {
19260  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
19261  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
19262}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
19263
19264
19265Triggers.Initializers.addToggleListener = function ($elem) {
19266  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
19267  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
19268}; // Elements with [data-closable] will respond to close.zf.trigger events.
19269
19270
19271Triggers.Initializers.addCloseableListener = function ($elem) {
19272  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
19273  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
19274}; // Elements with [data-toggle-focus] will respond to coming in and out of focus
19275
19276
19277Triggers.Initializers.addToggleFocusListener = function ($elem) {
19278  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
19279  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
19280}; // More Global/complex listeners and triggers
19281
19282
19283Triggers.Listeners.Global = {
19284  resizeListener: function resizeListener($nodes) {
19285    if (!MutationObserver) {
19286      //fallback for IE 9
19287      $nodes.each(function () {
19288        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger');
19289      });
19290    } //trigger all listening elements and signal a resize event
19291
19292
19293    $nodes.attr('data-events', "resize");
19294  },
19295  scrollListener: function scrollListener($nodes) {
19296    if (!MutationObserver) {
19297      //fallback for IE 9
19298      $nodes.each(function () {
19299        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger');
19300      });
19301    } //trigger all listening elements and signal a scroll event
19302
19303
19304    $nodes.attr('data-events', "scroll");
19305  },
19306  closeMeListener: function closeMeListener(e, pluginId) {
19307    var plugin = e.namespace.split('.')[0];
19308    var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]"));
19309    plugins.each(function () {
19310      var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
19311
19312      _this.triggerHandler('close.zf.trigger', [_this]);
19313    });
19314  } // Global, parses whole document.
19315
19316};
19317
19318Triggers.Initializers.addClosemeListener = function (pluginName) {
19319  var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'),
19320      plugNames = ['dropdown', 'tooltip', 'reveal'];
19321
19322  if (pluginName) {
19323    if (typeof pluginName === 'string') {
19324      plugNames.push(pluginName);
19325    } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') {
19326      plugNames = plugNames.concat(pluginName);
19327    } else {
19328      console.error('Plugin names must be strings');
19329    }
19330  }
19331
19332  if (yetiBoxes.length) {
19333    var listeners = plugNames.map(function (name) {
19334      return "closeme.zf.".concat(name);
19335    }).join(' ');
19336    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
19337  }
19338};
19339
19340function debounceGlobalListener(debounce, trigger, listener) {
19341  var timer,
19342      args = Array.prototype.slice.call(arguments, 3);
19343  jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) {
19344    if (timer) {
19345      clearTimeout(timer);
19346    }
19347
19348    timer = setTimeout(function () {
19349      listener.apply(null, args);
19350    }, debounce || 10); //default time to emit scroll event
19351  });
19352}
19353
19354Triggers.Initializers.addResizeListener = function (debounce) {
19355  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]');
19356
19357  if ($nodes.length) {
19358    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
19359  }
19360};
19361
19362Triggers.Initializers.addScrollListener = function (debounce) {
19363  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]');
19364
19365  if ($nodes.length) {
19366    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
19367  }
19368};
19369
19370Triggers.Initializers.addMutationEventsListener = function ($elem) {
19371  if (!MutationObserver) {
19372    return false;
19373  }
19374
19375  var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback
19376
19377  var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
19378    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type
19379
19380    switch (mutationRecordsList[0].type) {
19381      case "attributes":
19382        if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
19383          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
19384        }
19385
19386        if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
19387          $target.triggerHandler('resizeme.zf.trigger', [$target]);
19388        }
19389
19390        if (mutationRecordsList[0].attributeName === "style") {
19391          $target.closest("[data-mutate]").attr("data-events", "mutate");
19392          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
19393        }
19394
19395        break;
19396
19397      case "childList":
19398        $target.closest("[data-mutate]").attr("data-events", "mutate");
19399        $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
19400        break;
19401
19402      default:
19403        return false;
19404      //nothing
19405    }
19406  };
19407
19408  if ($nodes.length) {
19409    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
19410    for (var i = 0; i <= $nodes.length - 1; i++) {
19411      var elementObserver = new MutationObserver(listeningElementsMutation);
19412      elementObserver.observe($nodes[i], {
19413        attributes: true,
19414        childList: true,
19415        characterData: false,
19416        subtree: true,
19417        attributeFilter: ["data-events", "style"]
19418      });
19419    }
19420  }
19421};
19422
19423Triggers.Initializers.addSimpleListeners = function () {
19424  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
19425  Triggers.Initializers.addOpenListener($document);
19426  Triggers.Initializers.addCloseListener($document);
19427  Triggers.Initializers.addToggleListener($document);
19428  Triggers.Initializers.addCloseableListener($document);
19429  Triggers.Initializers.addToggleFocusListener($document);
19430};
19431
19432Triggers.Initializers.addGlobalListeners = function () {
19433  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
19434  Triggers.Initializers.addMutationEventsListener($document);
19435  Triggers.Initializers.addResizeListener();
19436  Triggers.Initializers.addScrollListener();
19437  Triggers.Initializers.addClosemeListener();
19438};
19439
19440Triggers.init = function ($, Foundation) {
19441  Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () {
19442    if ($.triggersInitialized !== true) {
19443      Triggers.Initializers.addSimpleListeners();
19444      Triggers.Initializers.addGlobalListeners();
19445      $.triggersInitialized = true;
19446    }
19447  });
19448
19449  if (Foundation) {
19450    Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now.
19451
19452    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
19453  }
19454};
19455
19456
19457
19458/***/ }),
19459
19460/***/ 29:
19461/*!**************************************************************!*\
19462  !*** multi ./js/entries/plugins/foundation.util.triggers.js ***!
19463  \**************************************************************/
19464/*! no static exports found */
19465/***/ (function(module, exports, __webpack_require__) {
19466
19467module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.triggers.js */"./js/entries/plugins/foundation.util.triggers.js");
19468
19469
19470/***/ }),
19471
19472/***/ "jquery":
19473/*!********************************************************************************************!*\
19474  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
19475  \********************************************************************************************/
19476/*! no static exports found */
vendor: 5,075 bytes, lines 19477-19588
19477/***/ (function(module, exports) {
19478
19479module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
19480
19481/***/ })
19482
19483/******/ });
19484});
19485//# sourceMappingURL=foundation.util.triggers.js.map
19486(function webpackUniversalModuleDefinition(root, factory) {
19487	if(typeof exports === 'object' && typeof module === 'object')
19488		module.exports = factory(require("./foundation.core"), require("jquery"));
19489	else if(typeof define === 'function' && define.amd)
19490		define(["./foundation.core", "jquery"], factory);
19491	else if(typeof exports === 'object')
19492		exports["foundation.abide"] = factory(require("./foundation.core"), require("jquery"));
19493	else
19494		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.abide"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
19495})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
19496return /******/ (function(modules) { // webpackBootstrap
19497/******/ 	// The module cache
19498/******/ 	var installedModules = {};
19499/******/
19500/******/ 	// The require function
19501/******/ 	function __webpack_require__(moduleId) {
19502/******/
19503/******/ 		// Check if module is in cache
19504/******/ 		if(installedModules[moduleId]) {
19505/******/ 			return installedModules[moduleId].exports;
19506/******/ 		}
19507/******/ 		// Create a new module (and put it into the cache)
19508/******/ 		var module = installedModules[moduleId] = {
19509/******/ 			i: moduleId,
19510/******/ 			l: false,
19511/******/ 			exports: {}
19512/******/ 		};
19513/******/
19514/******/ 		// Execute the module function
19515/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
19516/******/
19517/******/ 		// Flag the module as loaded
19518/******/ 		module.l = true;
19519/******/
19520/******/ 		// Return the exports of the module
19521/******/ 		return module.exports;
19522/******/ 	}
19523/******/
19524/******/
19525/******/ 	// expose the modules object (__webpack_modules__)
19526/******/ 	__webpack_require__.m = modules;
19527/******/
19528/******/ 	// expose the module cache
19529/******/ 	__webpack_require__.c = installedModules;
19530/******/
19531/******/ 	// define getter function for harmony exports
19532/******/ 	__webpack_require__.d = function(exports, name, getter) {
19533/******/ 		if(!__webpack_require__.o(exports, name)) {
19534/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
19535/******/ 		}
19536/******/ 	};
19537/******/
19538/******/ 	// define __esModule on exports
19539/******/ 	__webpack_require__.r = function(exports) {
19540/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
19541/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
19542/******/ 		}
19543/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
19544/******/ 	};
19545/******/
19546/******/ 	// create a fake namespace object
19547/******/ 	// mode & 1: value is a module id, require it
19548/******/ 	// mode & 2: merge all properties of value into the ns
19549/******/ 	// mode & 4: return value when already ns object
19550/******/ 	// mode & 8|1: behave like require
19551/******/ 	__webpack_require__.t = function(value, mode) {
19552/******/ 		if(mode & 1) value = __webpack_require__(value);
19553/******/ 		if(mode & 8) return value;
19554/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
19555/******/ 		var ns = Object.create(null);
19556/******/ 		__webpack_require__.r(ns);
19557/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
19558/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
19559/******/ 		return ns;
19560/******/ 	};
19561/******/
19562/******/ 	// getDefaultExport function for compatibility with non-harmony modules
19563/******/ 	__webpack_require__.n = function(module) {
19564/******/ 		var getter = module && module.__esModule ?
19565/******/ 			function getDefault() { return module['default']; } :
19566/******/ 			function getModuleExports() { return module; };
19567/******/ 		__webpack_require__.d(getter, 'a', getter);
19568/******/ 		return getter;
19569/******/ 	};
19570/******/
19571/******/ 	// Object.prototype.hasOwnProperty.call
19572/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
19573/******/
19574/******/ 	// __webpack_public_path__
19575/******/ 	__webpack_require__.p = "";
19576/******/
19577/******/
19578/******/ 	// Load entry module and return exports
19579/******/ 	return __webpack_require__(__webpack_require__.s = 0);
19580/******/ })
19581/************************************************************************/
19582/******/ ({
19583
19584/***/ "./foundation.core":
19585/*!****************************************************************************************************************************************************************!*\
19586  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
19587  \****************************************************************************************************************************************************************/
19588/*! no static exports found */
19589/***/ (function(module, exports) {
19590
19591module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
19592
19593/***/ }),
19594
19595/***/ "./js/entries/plugins/foundation.abide.js":
19596/*!************************************************!*\
19597  !*** ./js/entries/plugins/foundation.abide.js ***!
19598  \************************************************/
19599/*! exports provided: Foundation, Abide */
19600/***/ (function(module, __webpack_exports__, __webpack_require__) {
19601
19602"use strict";
19603__webpack_require__.r(__webpack_exports__);
19604/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
19605/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
19606/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
19607
19608/* harmony import */ var _foundation_abide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.abide */ "./js/foundation.abide.js");
19609/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Abide", function() { return _foundation_abide__WEBPACK_IMPORTED_MODULE_1__["Abide"]; });
19610
19611
19612
19613_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_abide__WEBPACK_IMPORTED_MODULE_1__["Abide"], 'Abide');
19614
19615
19616/***/ }),
19617
vendor: 4,463 bytes, lines 19618-19702
19618/***/ "./js/foundation.abide.js":
19619/*!********************************!*\
19620  !*** ./js/foundation.abide.js ***!
19621  \********************************/
19622/*! exports provided: Abide */
19623/***/ (function(module, __webpack_exports__, __webpack_require__) {
19624
19625"use strict";
19626__webpack_require__.r(__webpack_exports__);
19627/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Abide", function() { return Abide; });
19628/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
19629/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
19630/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
19631/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__);
19632
19633
19634function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
19635
19636function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
19637
19638function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
19639
19640function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
19641
19642function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
19643
19644function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
19645
19646function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
19647
19648function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
19649
19650function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19651
19652
19653
19654
19655/**
19656 * Abide module.
19657 * @module foundation.abide
19658 */
19659
19660var Abide =
19661/*#__PURE__*/
19662function (_Plugin) {
19663  _inherits(Abide, _Plugin);
19664
19665  function Abide() {
19666    _classCallCheck(this, Abide);
19667
19668    return _possibleConstructorReturn(this, _getPrototypeOf(Abide).apply(this, arguments));
19669  }
19670
19671  _createClass(Abide, [{
19672    key: "_setup",
19673
19674    /**
19675     * Creates a new instance of Abide.
19676     * @class
19677     * @name Abide
19678     * @fires Abide#init
19679     * @param {Object} element - jQuery object to add the trigger to.
19680     * @param {Object} options - Overrides to the default plugin settings.
19681     */
19682    value: function _setup(element) {
19683      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
19684      this.$element = element;
19685      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(true, {}, Abide.defaults, this.$element.data(), options);
19686      this.isEnabled = true;
19687      this.formnovalidate = null;
19688      this.className = 'Abide'; // ie9 back compat
19689
19690      this._init();
19691    }
19692    /**
19693     * Initializes the Abide plugin and calls functions to get Abide functioning on load.
19694     * @private
19695     */
19696
19697  }, {
19698    key: "_init",
19699    value: function _init() {
19700      var _this2 = this;
19701
19702      this.$inputs = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.merge
vendor: 29,412 bytes, lines 19702-20548
19702( // Consider as input to validate:
19703      this.$element.find('input').not('[type="submit"]'), // * all input fields expect submit
19704      this.$element.find('textarea, select') // * all textareas and select fields
19705      );
19706      this.$submits = this.$element.find('[type="submit"]');
19707      var $globalErrors = this.$element.find('[data-abide-error]'); // Add a11y attributes to all fields
19708
19709      if (this.options.a11yAttributes) {
19710        this.$inputs.each(function (i, input) {
19711          return _this2.addA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(input));
19712        });
19713        $globalErrors.each(function (i, error) {
19714          return _this2.addGlobalErrorA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(error));
19715        });
19716      }
19717
19718      this._events();
19719    }
19720    /**
19721     * Initializes events for Abide.
19722     * @private
19723     */
19724
19725  }, {
19726    key: "_events",
19727    value: function _events() {
19728      var _this3 = this;
19729
19730      this.$element.off('.abide').on('reset.zf.abide', function () {
19731        _this3.resetForm();
19732      }).on('submit.zf.abide', function () {
19733        return _this3.validateForm();
19734      });
19735      this.$submits.off('click.zf.abide keydown.zf.abide').on('click.zf.abide keydown.zf.abide', function (e) {
19736        if (!e.key || e.key === ' ' || e.key === 'Enter') {
19737          e.preventDefault();
19738          _this3.formnovalidate = e.target.getAttribute('formnovalidate') !== null;
19739
19740          _this3.$element.submit();
19741        }
19742      });
19743
19744      if (this.options.validateOn === 'fieldChange') {
19745        this.$inputs.off('change.zf.abide').on('change.zf.abide', function (e) {
19746          _this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));
19747        });
19748      }
19749
19750      if (this.options.liveValidate) {
19751        this.$inputs.off('input.zf.abide').on('input.zf.abide', function (e) {
19752          _this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));
19753        });
19754      }
19755
19756      if (this.options.validateOnBlur) {
19757        this.$inputs.off('blur.zf.abide').on('blur.zf.abide', function (e) {
19758          _this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target));
19759        });
19760      }
19761    }
19762    /**
19763     * Calls necessary functions to update Abide upon DOM change
19764     * @private
19765     */
19766
19767  }, {
19768    key: "_reflow",
19769    value: function _reflow() {
19770      this._init();
19771    }
19772    /**
19773     * Checks whether the submitted form should be validated or not, consodering formnovalidate and isEnabled
19774     * @returns {Boolean}
19775     * @private
19776     */
19777
19778  }, {
19779    key: "_validationIsDisabled",
19780    value: function _validationIsDisabled() {
19781      if (this.isEnabled === false) {
19782        // whole validation disabled
19783        return true;
19784      } else if (typeof this.formnovalidate === 'boolean') {
19785        // triggered by $submit
19786        return this.formnovalidate;
19787      } // triggered by Enter in non-submit input
19788
19789
19790      return this.$submits.length ? this.$submits[0].getAttribute('formnovalidate') !== null : false;
19791    }
19792    /**
19793     * Enables the whole validation
19794     */
19795
19796  }, {
19797    key: "enableValidation",
19798    value: function enableValidation() {
19799      this.isEnabled = true;
19800    }
19801    /**
19802     * Disables the whole validation
19803     */
19804
19805  }, {
19806    key: "disableValidation",
19807    value: function disableValidation() {
19808      this.isEnabled = false;
19809    }
19810    /**
19811     * Checks whether or not a form element has the required attribute and if it's checked or not
19812     * @param {Object} element - jQuery object to check for required attribute
19813     * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
19814     */
19815
19816  }, {
19817    key: "requiredCheck",
19818    value: function requiredCheck($el) {
19819      if (!$el.attr('required')) return true;
19820      var isGood = true;
19821
19822      switch ($el[0].type) {
19823        case 'checkbox':
19824          isGood = $el[0].checked;
19825          break;
19826
19827        case 'select':
19828        case 'select-one':
19829        case 'select-multiple':
19830          var opt = $el.find('option:selected');
19831          if (!opt.length || !opt.val()) isGood = false;
19832          break;
19833
19834        default:
19835          if (!$el.val() || !$el.val().length) isGood = false;
19836      }
19837
19838      return isGood;
19839    }
19840    /**
19841     * Get:
19842     * - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order:
19843     *   1. The element's direct sibling('s).
19844     *   2. The element's parent's children.
19845     * - Element(s) with the attribute `[data-form-error-for]` set with the element's id.
19846     *
19847     * This allows for multiple form errors per input, though if none are found, no form errors will be shown.
19848     *
19849     * @param {Object} $el - jQuery object to use as reference to find the form error selector.
19850     * @param {String[]} [failedValidators] - List of failed validators.
19851     * @returns {Object} jQuery object with the selector.
19852     */
19853
19854  }, {
19855    key: "findFormError",
19856    value: function findFormError($el, failedValidators) {
19857      var _this4 = this;
19858
19859      var id = $el.length ? $el[0].id : '';
19860      var $error = $el.siblings(this.options.formErrorSelector);
19861
19862      if (!$error.length) {
19863        $error = $el.parent().find(this.options.formErrorSelector);
19864      }
19865
19866      if (id) {
19867        $error = $error.add(this.$element.find("[data-form-error-for=\"".concat(id, "\"]")));
19868      }
19869
19870      if (!!failedValidators) {
19871        $error = $error.not('[data-form-error-on]');
19872        failedValidators.forEach(function (v) {
19873          $error = $error.add($el.siblings("[data-form-error-on=\"".concat(v, "\"]")));
19874          $error = $error.add(_this4.$element.find("[data-form-error-for=\"".concat(id, "\"][data-form-error-on=\"").concat(v, "\"]")));
19875        });
19876      }
19877
19878      return $error;
19879    }
19880    /**
19881     * Get the first element in this order:
19882     * 2. The <label> with the attribute `[for="someInputId"]`
19883     * 3. The `.closest()` <label>
19884     *
19885     * @param {Object} $el - jQuery object to check for required attribute
19886     * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
19887     */
19888
19889  }, {
19890    key: "findLabel",
19891    value: function findLabel($el) {
19892      var id = $el[0].id;
19893      var $label = this.$element.find("label[for=\"".concat(id, "\"]"));
19894
19895      if (!$label.length) {
19896        return $el.closest('label');
19897      }
19898
19899      return $label;
19900    }
19901    /**
19902     * Get the set of labels associated with a set of radio els in this order
19903     * 2. The <label> with the attribute `[for="someInputId"]`
19904     * 3. The `.closest()` <label>
19905     *
19906     * @param {Object} $el - jQuery object to check for required attribute
19907     * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
19908     */
19909
19910  }, {
19911    key: "findRadioLabels",
19912    value: function findRadioLabels($els) {
19913      var _this5 = this;
19914
19915      var labels = $els.map(function (i, el) {
19916        var id = el.id;
19917
19918        var $label = _this5.$element.find("label[for=\"".concat(id, "\"]"));
19919
19920        if (!$label.length) {
19921          $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).closest('label');
19922        }
19923
19924        return $label[0];
19925      });
19926      return jquery__WEBPACK_IMPORTED_MODULE_0___default()(labels);
19927    }
19928    /**
19929     * Get the set of labels associated with a set of checkbox els in this order
19930     * 2. The <label> with the attribute `[for="someInputId"]`
19931     * 3. The `.closest()` <label>
19932     *
19933     * @param {Object} $el - jQuery object to check for required attribute
19934     * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty
19935     */
19936
19937  }, {
19938    key: "findCheckboxLabels",
19939    value: function findCheckboxLabels($els) {
19940      var _this6 = this;
19941
19942      var labels = $els.map(function (i, el) {
19943        var id = el.id;
19944
19945        var $label = _this6.$element.find("label[for=\"".concat(id, "\"]"));
19946
19947        if (!$label.length) {
19948          $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).closest('label');
19949        }
19950
19951        return $label[0];
19952      });
19953      return jquery__WEBPACK_IMPORTED_MODULE_0___default()(labels);
19954    }
19955    /**
19956     * Adds the CSS error class as specified by the Abide settings to the label, input, and the form
19957     * @param {Object} $el - jQuery object to add the class to
19958     * @param {String[]} [failedValidators] - List of failed validators.
19959     */
19960
19961  }, {
19962    key: "addErrorClasses",
19963    value: function addErrorClasses($el, failedValidators) {
19964      var $label = this.findLabel($el);
19965      var $formError = this.findFormError($el, failedValidators);
19966
19967      if ($label.length) {
19968        $label.addClass(this.options.labelErrorClass);
19969      }
19970
19971      if ($formError.length) {
19972        $formError.addClass(this.options.formErrorClass);
19973      }
19974
19975      $el.addClass(this.options.inputErrorClass).attr({
19976        'data-invalid': '',
19977        'aria-invalid': true
19978      });
19979    }
19980    /**
19981     * Adds [for] and [role=alert] attributes to all form error targetting $el,
19982     * and [aria-describedby] attribute to $el toward the first form error.
19983     * @param {Object} $el - jQuery object
19984     */
19985
19986  }, {
19987    key: "addA11yAttributes",
19988    value: function addA11yAttributes($el) {
19989      var $errors = this.findFormError($el);
19990      var $labels = $errors.filter('label');
19991      var $error = $errors.first();
19992      if (!$errors.length) return; // Set [aria-describedby] on the input toward the first form error if it is not set
19993
19994      if (typeof $el.attr('aria-describedby') === 'undefined') {
19995        // Get the first error ID or create one
19996        var errorId = $error.attr('id');
19997
19998        if (typeof errorId === 'undefined') {
19999          errorId = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'abide-error');
20000          $error.attr('id', errorId);
20001        }
20002
20003        $el.attr('aria-describedby', errorId);
20004      }
20005
20006      if ($labels.filter('[for]').length < $labels.length) {
20007        // Get the input ID or create one
20008        var elemId = $el.attr('id');
20009
20010        if (typeof elemId === 'undefined') {
20011          elemId = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'abide-input');
20012          $el.attr('id', elemId);
20013        } // For each label targeting $el, set [for] if it is not set.
20014
20015
20016        $labels.each(function (i, label) {
20017          var $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(label);
20018          if (typeof $label.attr('for') === 'undefined') $label.attr('for', elemId);
20019        });
20020      } // For each error targeting $el, set [role=alert] if it is not set.
20021
20022
20023      $errors.each(function (i, label) {
20024        var $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(label);
20025        if (typeof $label.attr('role') === 'undefined') $label.attr('role', 'alert');
20026      }).end();
20027    }
20028    /**
20029     * Adds [aria-live] attribute to the given global form error $el.
20030     * @param {Object} $el - jQuery object to add the attribute to
20031     */
20032
20033  }, {
20034    key: "addGlobalErrorA11yAttributes",
20035    value: function addGlobalErrorA11yAttributes($el) {
20036      if (typeof $el.attr('aria-live') === 'undefined') $el.attr('aria-live', this.options.a11yErrorLevel);
20037    }
20038    /**
20039     * Remove CSS error classes etc from an entire radio button group
20040     * @param {String} groupName - A string that specifies the name of a radio button group
20041     *
20042     */
20043
20044  }, {
20045    key: "removeRadioErrorClasses",
20046    value: function removeRadioErrorClasses(groupName) {
20047      var $els = this.$element.find(":radio[name=\"".concat(groupName, "\"]"));
20048      var $labels = this.findRadioLabels($els);
20049      var $formErrors = this.findFormError($els);
20050
20051      if ($labels.length) {
20052        $labels.removeClass(this.options.labelErrorClass);
20053      }
20054
20055      if ($formErrors.length) {
20056        $formErrors.removeClass(this.options.formErrorClass);
20057      }
20058
20059      $els.removeClass(this.options.inputErrorClass).attr({
20060        'data-invalid': null,
20061        'aria-invalid': null
20062      });
20063    }
20064    /**
20065     * Remove CSS error classes etc from an entire checkbox group
20066     * @param {String} groupName - A string that specifies the name of a checkbox group
20067     *
20068     */
20069
20070  }, {
20071    key: "removeCheckboxErrorClasses",
20072    value: function removeCheckboxErrorClasses(groupName) {
20073      var $els = this.$element.find(":checkbox[name=\"".concat(groupName, "\"]"));
20074      var $labels = this.findCheckboxLabels($els);
20075      var $formErrors = this.findFormError($els);
20076
20077      if ($labels.length) {
20078        $labels.removeClass(this.options.labelErrorClass);
20079      }
20080
20081      if ($formErrors.length) {
20082        $formErrors.removeClass(this.options.formErrorClass);
20083      }
20084
20085      $els.removeClass(this.options.inputErrorClass).attr({
20086        'data-invalid': null,
20087        'aria-invalid': null
20088      });
20089    }
20090    /**
20091     * Removes CSS error class as specified by the Abide settings from the label, input, and the form
20092     * @param {Object} $el - jQuery object to remove the class from
20093     */
20094
20095  }, {
20096    key: "removeErrorClasses",
20097    value: function removeErrorClasses($el) {
20098      // radios need to clear all of the els
20099      if ($el[0].type == 'radio') {
20100        return this.removeRadioErrorClasses($el.attr('name'));
20101      } // checkboxes need to clear all of the els
20102      else if ($el[0].type == 'checkbox') {
20103          return this.removeCheckboxErrorClasses($el.attr('name'));
20104        }
20105
20106      var $label = this.findLabel($el);
20107      var $formError = this.findFormError($el);
20108
20109      if ($label.length) {
20110        $label.removeClass(this.options.labelErrorClass);
20111      }
20112
20113      if ($formError.length) {
20114        $formError.removeClass(this.options.formErrorClass);
20115      }
20116
20117      $el.removeClass(this.options.inputErrorClass).attr({
20118        'data-invalid': null,
20119        'aria-invalid': null
20120      });
20121    }
20122    /**
20123     * Goes through a form to find inputs and proceeds to validate them in ways specific to their type.
20124     * Ignores inputs with data-abide-ignore, type="hidden" or disabled attributes set
20125     * @fires Abide#invalid
20126     * @fires Abide#valid
20127     * @param {Object} element - jQuery object to validate, should be an HTML input
20128     * @returns {Boolean} goodToGo - If the input is valid or not.
20129     */
20130
20131  }, {
20132    key: "validateInput",
20133    value: function validateInput($el) {
20134      var _this7 = this;
20135
20136      var clearRequire = this.requiredCheck($el),
20137          validator = $el.attr('data-validator'),
20138          failedValidators = [],
20139          manageErrorClasses = true; // skip validation if disabled
20140
20141      if (this._validationIsDisabled()) {
20142        return true;
20143      } // don't validate ignored inputs or hidden inputs or disabled inputs
20144
20145
20146      if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]') || $el.is('[disabled]')) {
20147        return true;
20148      }
20149
20150      switch ($el[0].type) {
20151        case 'radio':
20152          this.validateRadio($el.attr('name')) || failedValidators.push('required');
20153          break;
20154
20155        case 'checkbox':
20156          this.validateCheckbox($el.attr('name')) || failedValidators.push('required'); // validateCheckbox() adds/removes error classes
20157
20158          manageErrorClasses = false;
20159          break;
20160
20161        case 'select':
20162        case 'select-one':
20163        case 'select-multiple':
20164          clearRequire || failedValidators.push('required');
20165          break;
20166
20167        default:
20168          clearRequire || failedValidators.push('required');
20169          this.validateText($el) || failedValidators.push('pattern');
20170      }
20171
20172      if (validator) {
20173        var required = $el.attr('required') ? true : false;
20174        validator.split(' ').forEach(function (v) {
20175          _this7.options.validators[v]($el, required, $el.parent()) || failedValidators.push(v);
20176        });
20177      }
20178
20179      if ($el.attr('data-equalto')) {
20180        this.options.validators.equalTo($el) || failedValidators.push('equalTo');
20181      }
20182
20183      var goodToGo = failedValidators.length === 0;
20184      var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide';
20185
20186      if (goodToGo) {
20187        // Re-validate inputs that depend on this one with equalto
20188        var dependentElements = this.$element.find("[data-equalto=\"".concat($el.attr('id'), "\"]"));
20189
20190        if (dependentElements.length) {
20191          var _this = this;
20192
20193          dependentElements.each(function () {
20194            if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val()) {
20195              _this.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
20196            }
20197          });
20198        }
20199      }
20200
20201      if (manageErrorClasses) {
20202        this.removeErrorClasses($el);
20203
20204        if (!goodToGo) {
20205          this.addErrorClasses($el, failedValidators);
20206        }
20207      }
20208      /**
20209       * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide`
20210       * Trigger includes the DOM element of the input.
20211       * @event Abide#valid
20212       * @event Abide#invalid
20213       */
20214
20215
20216      $el.trigger(message, [$el]);
20217      return goodToGo;
20218    }
20219    /**
20220     * Goes through a form and if there are any invalid inputs, it will display the form error element
20221     * @returns {Boolean} noError - true if no errors were detected...
20222     * @fires Abide#formvalid
20223     * @fires Abide#forminvalid
20224     */
20225
20226  }, {
20227    key: "validateForm",
20228    value: function validateForm() {
20229      var _this8 = this;
20230
20231      var acc = [];
20232
20233      var _this = this;
20234
20235      var checkboxGroupName; // Remember first form submission to prevent specific checkbox validation (more than one required) until form got initially submitted
20236
20237      if (!this.initialized) {
20238        this.initialized = true;
20239      } // skip validation if disabled
20240
20241
20242      if (this._validationIsDisabled()) {
20243        this.formnovalidate = null;
20244        return true;
20245      }
20246
20247      this.$inputs.each(function () {
20248        // Only use one checkbox per group since validateCheckbox() iterates over all associated checkboxes
20249        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)[0].type === 'checkbox') {
20250          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('name') === checkboxGroupName) return true;
20251          checkboxGroupName = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('name');
20252        }
20253
20254        acc.push(_this.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)));
20255      });
20256      var noError = acc.indexOf(false) === -1;
20257      this.$element.find('[data-abide-error]').each(function (i, elem) {
20258        var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem); // Ensure a11y attributes are set
20259
20260        if (_this8.options.a11yAttributes) _this8.addGlobalErrorA11yAttributes($elem); // Show or hide the error
20261
20262        $elem.css('display', noError ? 'none' : 'block');
20263      });
20264      /**
20265       * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`.
20266       * Trigger includes the element of the form.
20267       * @event Abide#formvalid
20268       * @event Abide#forminvalid
20269       */
20270
20271      this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]);
20272      return noError;
20273    }
20274    /**
20275     * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true.
20276     * @param {Object} $el - jQuery object to validate, should be a text input HTML element
20277     * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns
20278     * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified
20279     */
20280
20281  }, {
20282    key: "validateText",
20283    value: function validateText($el, pattern) {
20284      // A pattern can be passed to this function, or it will be infered from the input's "pattern" attribute, or it's "type" attribute
20285      pattern = pattern || $el.attr('data-pattern') || $el.attr('pattern') || $el.attr('type');
20286      var inputText = $el.val();
20287      var valid = true;
20288
20289      if (inputText.length) {
20290        // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp
20291        if (this.options.patterns.hasOwnProperty(pattern)) {
20292          valid = this.options.patterns[pattern].test(inputText);
20293        } // If the pattern name isn't also the type attribute of the field, then test it as a regexp
20294        else if (pattern !== $el.attr('type')) {
20295            valid = new RegExp(pattern).test(inputText);
20296          }
20297      }
20298
20299      return valid;
20300    }
20301    /**
20302     * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group.
20303     * @param {String} groupName - A string that specifies the name of a radio button group
20304     * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required)
20305     */
20306
20307  }, {
20308    key: "validateRadio",
20309    value: function validateRadio(groupName) {
20310      // If at least one radio in the group has the `required` attribute, the group is considered required
20311      // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice
20312      var $group = this.$element.find(":radio[name=\"".concat(groupName, "\"]"));
20313      var valid = false,
20314          required = false; // For the group to be required, at least one radio needs to be required
20315
20316      $group.each(function (i, e) {
20317        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('required')) {
20318          required = true;
20319        }
20320      });
20321      if (!required) valid = true;
20322
20323      if (!valid) {
20324        // For the group to be valid, at least one radio needs to be checked
20325        $group.each(function (i, e) {
20326          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).prop('checked')) {
20327            valid = true;
20328          }
20329        });
20330      }
20331
20332      return valid;
20333    }
20334    /**
20335     * Determines whether or a not a checkbox input is valid based on whether or not it is required and checked. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all checkboxes in its group.
20336     * @param {String} groupName - A string that specifies the name of a checkbox group
20337     * @returns {Boolean} Boolean value depends on whether or not at least one checkbox input has been checked (if it's required)
20338     */
20339
20340  }, {
20341    key: "validateCheckbox",
20342    value: function validateCheckbox(groupName) {
20343      var _this9 = this;
20344
20345      // If at least one checkbox in the group has the `required` attribute, the group is considered required
20346      // Per W3C spec, all checkboxes in a group should have `required`, but we're being nice
20347      var $group = this.$element.find(":checkbox[name=\"".concat(groupName, "\"]"));
20348      var valid = false,
20349          required = false,
20350          minRequired = 1,
20351          checked = 0; // For the group to be required, at least one checkbox needs to be required
20352
20353      $group.each(function (i, e) {
20354        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('required')) {
20355          required = true;
20356        }
20357      });
20358      if (!required) valid = true;
20359
20360      if (!valid) {
20361        // Count checked checkboxes within the group
20362        // Use data-min-required if available (default: 1)
20363        $group.each(function (i, e) {
20364          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).prop('checked')) {
20365            checked++;
20366          }
20367
20368          if (typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('data-min-required') !== 'undefined') {
20369            minRequired = parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('data-min-required'));
20370          }
20371        }); // For the group to be valid, the minRequired amount of checkboxes have to be checked
20372
20373        if (checked >= minRequired) {
20374          valid = true;
20375        }
20376      } // Skip validation if more than 1 checkbox have to be checked AND if the form hasn't got submitted yet (otherwise it will already show an error during the first fill in)
20377
20378
20379      if (this.initialized !== true && minRequired > 1) {
20380        return true;
20381      } // Refresh error class for all input
20382
20383
20384      $group.each(function (i, e) {
20385        if (!valid) {
20386          _this9.addErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e), ['required']);
20387        } else {
20388          _this9.removeErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e));
20389        }
20390      });
20391      return valid;
20392    }
20393    /**
20394     * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed.
20395     * @param {Object} $el - jQuery input element.
20396     * @param {String} validators - a string of function names matching functions in the Abide.options.validators object.
20397     * @param {Boolean} required - self explanatory?
20398     * @returns {Boolean} - true if validations passed.
20399     */
20400
20401  }, {
20402    key: "matchValidation",
20403    value: function matchValidation($el, validators, required) {
20404      var _this10 = this;
20405
20406      required = required ? true : false;
20407      var clear = validators.split(' ').map(function (v) {
20408        return _this10.options.validators[v]($el, required, $el.parent());
20409      });
20410      return clear.indexOf(false) === -1;
20411    }
20412    /**
20413     * Resets form inputs and styles
20414     * @fires Abide#formreset
20415     */
20416
20417  }, {
20418    key: "resetForm",
20419    value: function resetForm() {
20420      var $form = this.$element,
20421          opts = this.options;
20422      jquery__WEBPACK_IMPORTED_MODULE_0___default()(".".concat(opts.labelErrorClass), $form).not('small').removeClass(opts.labelErrorClass);
20423      jquery__WEBPACK_IMPORTED_MODULE_0___default()(".".concat(opts.inputErrorClass), $form).not('small').removeClass(opts.inputErrorClass);
20424      jquery__WEBPACK_IMPORTED_MODULE_0___default()("".concat(opts.formErrorSelector, ".").concat(opts.formErrorClass)).removeClass(opts.formErrorClass);
20425      $form.find('[data-abide-error]').css('display', 'none');
20426      jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').attr({
20427        'data-invalid': null,
20428        'aria-invalid': null
20429      });
20430      jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input:radio', $form).not('[data-abide-ignore]').prop('checked', false).attr({
20431        'data-invalid': null,
20432        'aria-invalid': null
20433      });
20434      jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked', false).attr({
20435        'data-invalid': null,
20436        'aria-invalid': null
20437      });
20438      /**
20439       * Fires when the form has been reset.
20440       * @event Abide#formreset
20441       */
20442
20443      $form.trigger('formreset.zf.abide', [$form]);
20444    }
20445    /**
20446     * Destroys an instance of Abide.
20447     * Removes error styles and classes from elements, without resetting their values.
20448     */
20449
20450  }, {
20451    key: "_destroy",
20452    value: function _destroy() {
20453      var _this = this;
20454
20455      this.$element.off('.abide').find('[data-abide-error]').css('display', 'none');
20456      this.$inputs.off('.abide').each(function () {
20457        _this.removeErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
20458      });
20459      this.$submits.off('.abide');
20460    }
20461  }]);
20462
20463  return Abide;
20464}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
20465/**
20466 * Default settings for plugin
20467 */
20468
20469
20470Abide.defaults = {
20471  /**
20472   * The default event to validate inputs. Checkboxes and radios validate immediately.
20473   * Remove or change this value for manual validation.
20474   * @option
20475   * @type {?string}
20476   * @default 'fieldChange'
20477   */
20478  validateOn: 'fieldChange',
20479
20480  /**
20481   * Class to be applied to input labels on failed validation.
20482   * @option
20483   * @type {string}
20484   * @default 'is-invalid-label'
20485   */
20486  labelErrorClass: 'is-invalid-label',
20487
20488  /**
20489   * Class to be applied to inputs on failed validation.
20490   * @option
20491   * @type {string}
20492   * @default 'is-invalid-input'
20493   */
20494  inputErrorClass: 'is-invalid-input',
20495
20496  /**
20497   * Class selector to use to target Form Errors for show/hide.
20498   * @option
20499   * @type {string}
20500   * @default '.form-error'
20501   */
20502  formErrorSelector: '.form-error',
20503
20504  /**
20505   * Class added to Form Errors on failed validation.
20506   * @option
20507   * @type {string}
20508   * @default 'is-visible'
20509   */
20510  formErrorClass: 'is-visible',
20511
20512  /**
20513   * If true, automatically insert when possible:
20514   * - `[aria-describedby]` on fields
20515   * - `[role=alert]` on form errors and `[for]` on form error labels
20516   * - `[aria-live]` on global errors `[data-abide-error]` (see option `a11yErrorLevel`).
20517   * @option
20518   * @type {boolean}
20519   * @default true
20520   */
20521  a11yAttributes: true,
20522
20523  /**
20524   * [aria-live] attribute value to be applied on global errors `[data-abide-error]`.
20525   * Options are: 'assertive', 'polite' and 'off'/null
20526   * @option
20527   * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions
20528   * @type {string}
20529   * @default 'assertive'
20530   */
20531  a11yErrorLevel: 'assertive',
20532
20533  /**
20534   * Set to true to validate text inputs on any value change.
20535   * @option
20536   * @type {boolean}
20537   * @default false
20538   */
20539  liveValidate: false,
20540
20541  /**
20542   * Set to true to validate inputs on blur.
20543   * @option
20544   * @type {boolean}
20545   * @default false
20546   */
20547  validateOnBlur: false,
20548  patterns: {
20549    alpha: /^[a-zA-Z]+$/,
20550    alpha_numeric: /^[a-zA-Z0-9]+$/,
20551    integer: /^[-+]?\d+$/,
20552    number: /^[-+]?\d*(?:[\.\,]\d+)?$/,
20553    // amex, visa, diners
20554    card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,
20555    cvv: /^([0-9]){3,4}$/,
20556    // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
20557    email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
20558    // From CommonRegexJS (@talyssonoc)
20559    // https://github.com/talyssonoc/CommonRegexJS/blob/e2901b9f57222bc14069dc8f0598d5f412555411/lib/commonregex.js#L76
20560    // For more restrictive URL Regexs, see https://mathiasbynens.be/demo/url-regex.
20561    url: /^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,
20562    // abc.de
20563    domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,
20564    datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,
20565    // YYYY-MM-DD
20566    date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,
20567    // HH:MM:SS
20568    time: /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,
20569    dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,
20570    // MM/DD/YYYY
20571    month_day_year: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,
20572    // DD/MM/YYYY
20573    day_month_year: /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,
20574    // #FFF or #FFFFFF
20575    color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,
20576    // Domain || URL
20577    website: {
20578      test: function test(text) {
20579        return Abide.defaults.patterns['domain'].test(text) || Abide.defaults.patterns['url'].test(text);
20580      }
20581    }
20582  },
20583
20584  /**
20585   * Optional validation functions to be used. `equalTo` being the only default included function.
20586   * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments:
20587   * el : The jQuery element to validate.
20588   * required : Boolean value of the required attribute be present or not.
20589   * parent : The direct parent of the input.
20590   * @option
20591   */
20592  validators: {
20593    equalTo: function equalTo(el, required, parent) {
20594      return jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(el.attr('data-equalto'))).val() === el.val();
20595    }
20596  }
20597};
20598
20599
20600/***/ }),
20601
20602/***/ 0:
20603/*!******************************************************!*\
20604  !*** multi ./js/entries/plugins/foundation.abide.js ***!
20605  \******************************************************/
20606/*! no static exports found */
20607/***/ (function(module, exports, __webpack_require__) {
20608
20609module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.abide.js */"./js/entries/plugins/foundation.abide.js");
20610
20611
20612/***/ }),
20613
20614/***/ "jquery":
20615/*!********************************************************************************************!*\
20616  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
20617  \********************************************************************************************/
20618/*! no static exports found */
20619/***/ (function(module, exports) {
20620
20621module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
20622
20623/***/ })
20624
20625/******/ });
20626});
20627//# sourceMappingURL=foundation.abide.js.map
20628(function webpackUniversalModuleDefinition(root, factory) {
20629	if(typeof exports === 'object' && typeof module === 'object')
20630		module.exports = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("jquery"));
20631	else if(typeof define === 'function' && define.amd)
20632		define(["./foundation.core", "./foundation.util.keyboard", "jquery"], factory);
20633	else if(typeof exports === 'object')
20634		exports["foundation.accordion"] = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("jquery"));
20635	else
20636		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.accordion"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["jQuery"]);
20637})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
20638return /******/ (function(modules) { // webpackBootstrap
20639/******/ 	// The module cache
20640/******/ 	var installedModules = {};
20641/******/
20642/******/ 	// The require function
20643/******/ 	function __webpack_require__(moduleId) {
20644/******/
20645/******/ 		// Check if module is in cache
20646/******/ 		if(installedModules[moduleId]) {
20647/******/ 			return installedModules[moduleId].exports;
20648/******/ 		}
20649/******/ 		// Create a new module (and put it into the cache)
20650/******/ 		var module = installedModules[moduleId] = {
20651/******/ 			i: moduleId,
20652/******/ 			l: false,
20653/******/ 			exports: {}
20654/******/ 		};
20655/******/
20656/******/ 		// Execute the module function
20657/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
20658/******/
20659/******/ 		// Flag the module as loaded
vendor: 4,160 bytes, lines 20660-20741
20660/******/ 		module.l = true;
20661/******/
20662/******/ 		// Return the exports of the module
20663/******/ 		return module.exports;
20664/******/ 	}
20665/******/
20666/******/
20667/******/ 	// expose the modules object (__webpack_modules__)
20668/******/ 	__webpack_require__.m = modules;
20669/******/
20670/******/ 	// expose the module cache
20671/******/ 	__webpack_require__.c = installedModules;
20672/******/
20673/******/ 	// define getter function for harmony exports
20674/******/ 	__webpack_require__.d = function(exports, name, getter) {
20675/******/ 		if(!__webpack_require__.o(exports, name)) {
20676/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
20677/******/ 		}
20678/******/ 	};
20679/******/
20680/******/ 	// define __esModule on exports
20681/******/ 	__webpack_require__.r = function(exports) {
20682/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
20683/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
20684/******/ 		}
20685/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
20686/******/ 	};
20687/******/
20688/******/ 	// create a fake namespace object
20689/******/ 	// mode & 1: value is a module id, require it
20690/******/ 	// mode & 2: merge all properties of value into the ns
20691/******/ 	// mode & 4: return value when already ns object
20692/******/ 	// mode & 8|1: behave like require
20693/******/ 	__webpack_require__.t = function(value, mode) {
20694/******/ 		if(mode & 1) value = __webpack_require__(value);
20695/******/ 		if(mode & 8) return value;
20696/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
20697/******/ 		var ns = Object.create(null);
20698/******/ 		__webpack_require__.r(ns);
20699/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
20700/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
20701/******/ 		return ns;
20702/******/ 	};
20703/******/
20704/******/ 	// getDefaultExport function for compatibility with non-harmony modules
20705/******/ 	__webpack_require__.n = function(module) {
20706/******/ 		var getter = module && module.__esModule ?
20707/******/ 			function getDefault() { return module['default']; } :
20708/******/ 			function getModuleExports() { return module; };
20709/******/ 		__webpack_require__.d(getter, 'a', getter);
20710/******/ 		return getter;
20711/******/ 	};
20712/******/
20713/******/ 	// Object.prototype.hasOwnProperty.call
20714/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
20715/******/
20716/******/ 	// __webpack_public_path__
20717/******/ 	__webpack_require__.p = "";
20718/******/
20719/******/
20720/******/ 	// Load entry module and return exports
20721/******/ 	return __webpack_require__(__webpack_require__.s = 1);
20722/******/ })
20723/************************************************************************/
20724/******/ ({
20725
20726/***/ "./foundation.core":
20727/*!****************************************************************************************************************************************************************!*\
20728  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
20729  \****************************************************************************************************************************************************************/
20730/*! no static exports found */
20731/***/ (function(module, exports) {
20732
20733module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
20734
20735/***/ }),
20736
20737/***/ "./foundation.util.keyboard":
20738/*!****************************************************************************************************************************************************************************************************!*\
20739  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***!
20740  \****************************************************************************************************************************************************************************************************/
20741/*! no static exports found */
20742/***/ (function(module, exports) {
20743
20744module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;
20745
20746/***/ }),
20747
20748/***/ "./js/entries/plugins/foundation.accordion.js":
20749/*!****************************************************!*\
20750  !*** ./js/entries/plugins/foundation.accordion.js ***!
20751  \****************************************************/
20752/*! exports provided: Foundation, Accordion */
20753/***/ (function(module, __webpack_exports__, __webpack_require__) {
20754
20755"use strict";
20756__webpack_require__.r(__webpack_exports__);
20757/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
20758/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
20759/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
20760
20761/* harmony import */ var _foundation_accordion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.accordion */ "./js/foundation.accordion.js");
20762/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Accordion", function() { return _foundation_accordion__WEBPACK_IMPORTED_MODULE_1__["Accordion"]; });
20763
20764
20765
20766_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_accordion__WEBPACK_IMPORTED_MODULE_1__["Accordion"], 'Accordion');
20767
20768
20769/***/ }),
20770
20771/***/ "./js/foundation.accordion.js":
20772/*!************************************!*\
20773  !*** ./js/foundation.accordion.js ***!
20774  \************************************/
20775/*! exports provided: Accordion */
20776/***/ (function(module, __webpack_exports__, __webpack_require__) {
20777
20778"use strict";
20779__webpack_require__.r(__webpack_exports__);
20780/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Accordion", function() { return Accordion; });
20781/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
20782/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
20783/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
20784/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__);
20785/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard");
20786/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__);
20787
20788
20789function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
20790
20791function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
20792
20793function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
20794
20795function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
20796
20797function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
20798
20799function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
20800
20801function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
20802
20803function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
20804
20805function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
20806
20807
20808
20809
20810
20811/**
20812 * Accordion module.
20813 * @module foundation.accordion
20814 * @requires foundation.util.keyboard
20815 */
20816
20817var Accordion =
20818/*#__PURE__*/
20819function (_Plugin) {
20820  _inherits(Accordion, _Plugin);
20821
20822  function Accordion() {
20823    _classCallCheck(this, Accordion);
20824
20825    return _possibleConstructorReturn(this, _getPrototypeOf(Accordion).apply(this, arguments));
20826  }
20827
20828  _createClass(Accordion, [{
20829    key: "_setup",
20830
20831    /**
20832     * Creates a new instance of an accordion.
20833     * @class
20834     * @name Accordion
20835     * @fires Accordion#init
20836     * @param {jQuery} element - jQuery object to make into an accordion.
20837     * @param {Object} options - a plain object with settings to override the default options.
20838     */
20839    value: function _setup(element, options) {
20840      this.$element = element;
20841      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Accordion.defaults, this.$element.data(), options);
20842      this.className = 'Accordion'; // ie9 back compat
20843
20844      this._init();
20845
20846      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('Accordion', {
20847        'ENTER': 'toggle',
20848        'SPACE': 'toggle',
20849        'ARROW_DOWN': 'next',
20850        'ARROW_UP': 'previous'
20851      });
20852    }
20853    /**
20854     * Initializes the accordion by animating the preset active pane(s).
20855     * @private
20856     */
20857
20858  }, {
20859    key: "_init",
20860    value: function _init() {
20861      var _this2 = this;
20862
20863      this._isInitializing = true;
20864      this.$element.attr('role', 'tablist');
20865      this.$tabs = this.$element.children('[data-accordion-item]');
20866      this.$tabs.attr({
20867        'role': 'presentation'
20868      });
20869      this.$tabs.each(function (idx, el) {
20870        var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el),
20871            $content = $el.children('[data-tab-content]'),
20872            id = $content[0].id || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'accordion'),
20873            linkId = el.id ? "".concat(el.id, "-label") : "".concat(id, "-label");
20874        $el.find('a:first').attr({
20875          'aria-controls': id,
20876          'role': 'tab',
20877          'id': linkId,
20878          'aria-expanded': false,
20879          'aria-selected': false
20880        });
20881        $content.attr({
20882          'role': 'tabpanel',
20883          'aria-labelledby': linkId,
20884          'aria-hidden': true,
20885          'id': id
20886        });
20887      });
20888      var $initActive = this.$element.find('.is-active').children('[data-tab-content]');
20889
20890      if ($initActive.length) {
20891        // Save up the initial hash to return to it later when going back in history
20892        this._initialAnchor = $initActive.prev('a').attr('href');
20893
20894        this._openSingleTab($initActive);
20895      }
20896
20897      this._checkDeepLink = function () {
20898        var anchor = window.location.hash;
20899
20900        if (!anchor.length) {
20901          // If we are still initializing and there is no anchor, then there is nothing to do
20902          if (_this2._isInitializing) return; // Otherwise, move to the initial anchor
20903
20904          if (_this2._initialAnchor) anchor = _this2._initialAnchor;
20905        }
20906
20907        var $anchor = anchor && jquery__WEBPACK_IMPORTED_MODULE_0___default()(anchor);
20908
20909        var $link = anchor && _this2.$element.find("[href$=\"".concat(anchor, "\"]"));
vendor: 4,548 bytes, lines 20909-21053
20909 // Whether the anchor element that has been found is part of this element
20910
20911
20912        var isOwnAnchor = !!($anchor.length && $link.length);
20913
20914        if (isOwnAnchor) {
20915          // If there is an anchor for the hash, open it (if not already active)
20916          if ($anchor && $link && $link.length) {
20917            if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {
20918              _this2._openSingleTab($anchor);
20919            }
20920          } // Otherwise, close everything
20921          else {
20922              _this2._closeAllTabs();
20923            } // Roll up a little to show the titles
20924
20925
20926          if (_this2.options.deepLinkSmudge) {
20927            Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
20928              var offset = _this2.$element.offset();
20929
20930              jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
20931                scrollTop: offset.top - _this2.options.deepLinkSmudgeOffset
20932              }, _this2.options.deepLinkSmudgeDelay);
20933            });
20934          }
20935          /**
20936           * Fires when the plugin has deeplinked at pageload
20937           * @event Accordion#deeplink
20938           */
20939
20940
20941          _this2.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);
20942        }
20943      }; //use browser to open a tab, if it exists in this tabset
20944
20945
20946      if (this.options.deepLink) {
20947        this._checkDeepLink();
20948      }
20949
20950      this._events();
20951
20952      this._isInitializing = false;
20953    }
20954    /**
20955     * Adds event handlers for items within the accordion.
20956     * @private
20957     */
20958
20959  }, {
20960    key: "_events",
20961    value: function _events() {
20962      var _this = this;
20963
20964      this.$tabs.each(function () {
20965        var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
20966        var $tabContent = $elem.children('[data-tab-content]');
20967
20968        if ($tabContent.length) {
20969          $elem.children('a').off('click.zf.accordion keydown.zf.accordion').on('click.zf.accordion', function (e) {
20970            e.preventDefault();
20971
20972            _this.toggle($tabContent);
20973          }).on('keydown.zf.accordion', function (e) {
20974            _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'Accordion', {
20975              toggle: function toggle() {
20976                _this.toggle($tabContent);
20977              },
20978              next: function next() {
20979                var $a = $elem.next().find('a').focus();
20980
20981                if (!_this.options.multiExpand) {
20982                  $a.trigger('click.zf.accordion');
20983                }
20984              },
20985              previous: function previous() {
20986                var $a = $elem.prev().find('a').focus();
20987
20988                if (!_this.options.multiExpand) {
20989                  $a.trigger('click.zf.accordion');
20990                }
20991              },
20992              handled: function handled() {
20993                e.preventDefault();
20994              }
20995            });
20996          });
20997        }
20998      });
20999
21000      if (this.options.deepLink) {
21001        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._checkDeepLink);
21002      }
21003    }
21004    /**
21005     * Toggles the selected content pane's open/close state.
21006     * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).
21007     * @function
21008     */
21009
21010  }, {
21011    key: "toggle",
21012    value: function toggle($target) {
21013      if ($target.closest('[data-accordion]').is('[disabled]')) {
21014        console.info('Cannot toggle an accordion that is disabled.');
21015        return;
21016      }
21017
21018      if ($target.parent().hasClass('is-active')) {
21019        this.up($target);
21020      } else {
21021        this.down($target);
21022      } //either replace or update browser history
21023
21024
21025      if (this.options.deepLink) {
21026        var anchor = $target.prev('a').attr('href');
21027
21028        if (this.options.updateHistory) {
21029          history.pushState({}, '', anchor);
21030        } else {
21031          history.replaceState({}, '', anchor);
21032        }
21033      }
21034    }
21035    /**
21036     * Opens the accordion tab defined by `$target`.
21037     * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).
21038     * @fires Accordion#down
21039     * @function
21040     */
21041
21042  }, {
21043    key: "down",
21044    value: function down($target) {
21045      if ($target.closest('[data-accordion]').is('[disabled]')) {
21046        console.info('Cannot call down on an accordion that is disabled.');
21047        return;
21048      }
21049
21050      if (this.options.multiExpand) this._openTab($target);else this._openSingleTab($target);
21051    }
21052    /**
21053     * Closes the tab defined by `$target`.
21054     * It may be ignored if the Accordion options don't allow it.
21055     *
21056     * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).
21057     * @fires Accordion#up
21058     * @function
21059     */
21060
21061  }, {
21062    key: "up",
21063    value: function up($target) {
21064      if (this.$element.is('[disabled]')) {
21065        console.info('Cannot call up on an accordion that is disabled.');
21066        return;
21067      } // Don't close the item if it is already closed
21068
21069
21070      var $targetItem = $target.parent();
21071      if (!$targetItem.hasClass('is-active')) return; // Don't close the item if there is no other active item (unless with `allowAllClosed`)
21072
21073      var $othersItems = $targetItem.siblings();
21074      if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;
21075
21076      this._closeTab($target);
21077    }
21078    /**
21079     * Make the tab defined by `$target` the only opened tab, closing all others tabs.
21080     * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).
21081     * @function
21082     * @private
21083     */
21084
21085  }, {
21086    key: "_openSingleTab",
21087    value: function _openSingleTab($target) {
21088      // Close all the others active tabs.
21089      var $activeContents = this.$element.children('.is-active').children('[data-tab-content]');
21090
21091      if ($activeContents.length) {
21092        this._closeTab($activeContents.not($target));
21093      } // Then open the target.
21094
21095
21096      this._openTab($target);
21097    }
21098    /**
21099     * Opens the tab defined by `$target`.
21100     * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).
21101     * @fires Accordion#down
21102     * @function
21103     * @private
21104     */
21105
21106  }, {
21107    key: "_openTab",
21108    value: function _openTab($target) {
21109      var _this3 = this;
21110
21111      var $targetItem = $target.parent();
21112      var targetContentId = $target.attr('aria-labelledby');
21113      $target.attr('aria-hidden', false);
21114      $targetItem.addClass('is-active');
21115      jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetContentId)).attr({
21116        'aria-expanded': true,
21117        'aria-selected': true
21118      });
21119      $target.finish().slideDown(this.options.slideSpeed, function () {
21120        /**
21121         * Fires when the tab is done opening.
21122         * @event Accordion#down
21123         */
21124        _this3.$element.trigger('down.zf.accordion', [$target]);
21125      });
21126    }
21127    /**
21128     * Closes the tab defined by `$target`.
21129     * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).
21130     * @fires Accordion#up
21131     * @function
21132     * @private
21133     */
21134
21135  }, {
21136    key: "_closeTab",
21137    value: function _closeTab($target) {
21138      var _this4 = this;
21139
21140      var $targetItem = $target.parent();
21141      var targetContentId = $target.attr('aria-labelledby');
21142      $target.attr('aria-hidden', true);
21143      $targetItem.removeClass('is-active');
21144      jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetContentId)).attr({
21145        'aria-expanded': false,
21146        'aria-selected': false
21147      });
21148      $target.finish().slideUp(this.options.slideSpeed, function () {
21149        /**
21150         * Fires when the tab is done collapsing up.
21151         * @event Accordion#up
21152         */
21153        _this4.$element.trigger('up.zf.accordion', [$target]);
21154      });
21155    }
21156    /**
21157     * Closes all active tabs
21158     * @fires Accordion#up
21159     * @function
21160     * @private
21161     */
21162
21163  }, {
21164    key: "_closeAllTabs",
21165    value: function _closeAllTabs() {
21166      var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');
21167
21168      if ($activeTabs.length) {
21169        this._closeTab($activeTabs);
21170      }
21171    }
21172    /**
21173     * Destroys an instance of an accordion.
21174     * @fires Accordion#destroyed
21175     * @function
21176     */
21177
21178  }, {
21179    key: "_destroy",
21180    value: function _destroy() {
21181      this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');
21182      this.$element.find('a').off('.zf.accordion');
21183
21184      if (this.options.deepLink) {
21185        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._checkDeepLink);
21186      }
21187    }
21188  }]);
21189
21190  return Accordion;
21191}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
21192
21193Accordion.defaults = {
21194  /**
21195   * Amount of time to animate the opening of an accordion pane.
21196   * @option
21197   * @type {number}
21198   * @default 250
21199   */
21200  slideSpeed: 250,
21201
21202  /**
21203   * Allow the accordion to have multiple open panes.
21204   * @option
21205   * @type {boolean}
21206   * @default false
21207   */
21208  multiExpand: false,
21209
21210  /**
21211   * Allow the accordion to close all panes.
21212   * @option
21213   * @type {boolean}
21214   * @default false
21215   */
vendor: 5,556 bytes, lines 21216-21357
21216  allowAllClosed: false,
21217
21218  /**
21219   * Link the location hash to the open pane.
21220   * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.
21221   * @option
21222   * @type {boolean}
21223   * @default false
21224   */
21225  deepLink: false,
21226
21227  /**
21228   * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible
21229   * @option
21230   * @type {boolean}
21231   * @default false
21232   */
21233  deepLinkSmudge: false,
21234
21235  /**
21236   * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment
21237   * @option
21238   * @type {number}
21239   * @default 300
21240   */
21241  deepLinkSmudgeDelay: 300,
21242
21243  /**
21244   * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page
21245   * @option
21246   * @type {number}
21247   * @default 0
21248   */
21249  deepLinkSmudgeOffset: 0,
21250
21251  /**
21252   * If `deepLink` is enabled, update the browser history with the open accordion
21253   * @option
21254   * @type {boolean}
21255   * @default false
21256   */
21257  updateHistory: false
21258};
21259
21260
21261/***/ }),
21262
21263/***/ 1:
21264/*!**********************************************************!*\
21265  !*** multi ./js/entries/plugins/foundation.accordion.js ***!
21266  \**********************************************************/
21267/*! no static exports found */
21268/***/ (function(module, exports, __webpack_require__) {
21269
21270module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.accordion.js */"./js/entries/plugins/foundation.accordion.js");
21271
21272
21273/***/ }),
21274
21275/***/ "jquery":
21276/*!********************************************************************************************!*\
21277  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
21278  \********************************************************************************************/
21279/*! no static exports found */
21280/***/ (function(module, exports) {
21281
21282module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
21283
21284/***/ })
21285
21286/******/ });
21287});
21288//# sourceMappingURL=foundation.accordion.js.map
21289(function webpackUniversalModuleDefinition(root, factory) {
21290	if(typeof exports === 'object' && typeof module === 'object')
21291		module.exports = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("jquery"));
21292	else if(typeof define === 'function' && define.amd)
21293		define(["./foundation.core", "./foundation.util.keyboard", "./foundation.util.nest", "jquery"], factory);
21294	else if(typeof exports === 'object')
21295		exports["foundation.accordionMenu"] = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("jquery"));
21296	else
21297		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.accordionMenu"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.nest"], root["jQuery"]);
21298})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
21299return /******/ (function(modules) { // webpackBootstrap
21300/******/ 	// The module cache
21301/******/ 	var installedModules = {};
21302/******/
21303/******/ 	// The require function
21304/******/ 	function __webpack_require__(moduleId) {
21305/******/
21306/******/ 		// Check if module is in cache
21307/******/ 		if(installedModules[moduleId]) {
21308/******/ 			return installedModules[moduleId].exports;
21309/******/ 		}
21310/******/ 		// Create a new module (and put it into the cache)
21311/******/ 		var module = installedModules[moduleId] = {
21312/******/ 			i: moduleId,
21313/******/ 			l: false,
21314/******/ 			exports: {}
21315/******/ 		};
21316/******/
21317/******/ 		// Execute the module function
21318/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21319/******/
21320/******/ 		// Flag the module as loaded
21321/******/ 		module.l = true;
21322/******/
21323/******/ 		// Return the exports of the module
21324/******/ 		return module.exports;
21325/******/ 	}
21326/******/
21327/******/
21328/******/ 	// expose the modules object (__webpack_modules__)
21329/******/ 	__webpack_require__.m = modules;
21330/******/
21331/******/ 	// expose the module cache
21332/******/ 	__webpack_require__.c = installedModules;
21333/******/
21334/******/ 	// define getter function for harmony exports
21335/******/ 	__webpack_require__.d = function(exports, name, getter) {
21336/******/ 		if(!__webpack_require__.o(exports, name)) {
21337/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
21338/******/ 		}
21339/******/ 	};
21340/******/
21341/******/ 	// define __esModule on exports
21342/******/ 	__webpack_require__.r = function(exports) {
21343/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
21344/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
21345/******/ 		}
21346/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
21347/******/ 	};
21348/******/
21349/******/ 	// create a fake namespace object
21350/******/ 	// mode & 1: value is a module id, require it
21351/******/ 	// mode & 2: merge all properties of value into the ns
21352/******/ 	// mode & 4: return value when already ns object
21353/******/ 	// mode & 8|1: behave like require
21354/******/ 	__webpack_require__.t = function(value, mode) {
21355/******/ 		if(mode & 1) value = __webpack_require__(value);
21356/******/ 		if(mode & 8) return value;
21357/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 3,496 bytes, lines 21357-21419
21357dule) return value;
21358/******/ 		var ns = Object.create(null);
21359/******/ 		__webpack_require__.r(ns);
21360/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
21361/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
21362/******/ 		return ns;
21363/******/ 	};
21364/******/
21365/******/ 	// getDefaultExport function for compatibility with non-harmony modules
21366/******/ 	__webpack_require__.n = function(module) {
21367/******/ 		var getter = module && module.__esModule ?
21368/******/ 			function getDefault() { return module['default']; } :
21369/******/ 			function getModuleExports() { return module; };
21370/******/ 		__webpack_require__.d(getter, 'a', getter);
21371/******/ 		return getter;
21372/******/ 	};
21373/******/
21374/******/ 	// Object.prototype.hasOwnProperty.call
21375/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
21376/******/
21377/******/ 	// __webpack_public_path__
21378/******/ 	__webpack_require__.p = "";
21379/******/
21380/******/
21381/******/ 	// Load entry module and return exports
21382/******/ 	return __webpack_require__(__webpack_require__.s = 2);
21383/******/ })
21384/************************************************************************/
21385/******/ ({
21386
21387/***/ "./foundation.core":
21388/*!****************************************************************************************************************************************************************!*\
21389  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
21390  \****************************************************************************************************************************************************************/
21391/*! no static exports found */
21392/***/ (function(module, exports) {
21393
21394module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
21395
21396/***/ }),
21397
21398/***/ "./foundation.util.keyboard":
21399/*!****************************************************************************************************************************************************************************************************!*\
21400  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***!
21401  \****************************************************************************************************************************************************************************************************/
21402/*! no static exports found */
21403/***/ (function(module, exports) {
21404
21405module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;
21406
21407/***/ }),
21408
21409/***/ "./foundation.util.nest":
21410/*!************************************************************************************************************************************************************************************!*\
21411  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.nest"],"amd":"./foundation.util.nest","commonjs":"./foundation.util.nest","commonjs2":"./foundation.util.nest"} ***!
21412  \************************************************************************************************************************************************************************************/
21413/*! no static exports found */
21414/***/ (function(module, exports) {
21415
21416module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__;
21417
21418/***/ }),
21419
21420/***/ "./js/entries/plugins/foundation.accordionMenu.js":
21421/*!********************************************************!*\
21422  !*** ./js/entries/plugins/foundation.accordionMenu.js ***!
21423  \********************************************************/
21424/*! exports provided: Foundation, AccordionMenu */
21425/***/ (function(module, __webpack_exports__, __webpack_require__) {
21426
21427"use strict";
21428__webpack_require__.r(__webpack_exports__);
21429/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
21430/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
21431/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
21432
21433/* harmony import */ var _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.accordionMenu */ "./js/foundation.accordionMenu.js");
21434/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AccordionMenu", function() { return _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_1__["AccordionMenu"]; });
21435
21436
21437
21438_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_1__["AccordionMenu"], 'AccordionMenu');
21439
21440
21441/***/ }),
21442
21443/***/ "./js/foundation.accordionMenu.js":
21444/*!****************************************!*\
21445  !*** ./js/foundation.accordionMenu.js ***!
21446  \****************************************/
21447/*! exports provided: AccordionMenu */
21448/***/ (function(module, __webpack_exports__, __webpack_require__) {
21449
21450"use strict";
21451__webpack_require__.r(__webpack_exports__);
21452/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AccordionMenu", function() { return AccordionMenu; });
21453/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
21454/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
21455/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard");
21456/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__);
21457/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.nest */ "./foundation.util.nest");
21458/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__);
21459/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
21460/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__);
21461
21462
21463function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
21464
21465function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
21466
21467function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
21468
21469function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
21470
21471function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
21472
21473function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
21474
21475function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
21476
21477function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
21478
21479function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
21480
21481
21482
21483
21484
21485
21486/**
21487 * AccordionMenu module.
21488 * @module foundation.accordionMenu
21489 * @requires foundation.util.keyboard
21490 * @requires foundation.util.nest
21491 */
21492
21493var AccordionMenu =
21494/*#__PURE__*/
21495function (_Plugin) {
21496  _inherits(AccordionMenu, _Plugin);
21497
21498  function AccordionMenu() {
21499    _classCallCheck(this, AccordionMenu);
21500
21501    return _possibleConstructorReturn(this, _getPrototypeOf(AccordionMenu).apply(this, arguments));
21502  }
21503
21504  _createClass(AccordionMenu, [{
21505    key: "_setup",
21506
21507    /**
21508     * Creates a new instance of an accordion menu.
21509     * @class
21510     * @name AccordionMenu
21511     * @fires AccordionMenu#init
21512     * @param {jQuery} element - jQuery object to make into an accordion menu.
21513     * @param {Object} options - Overrides to the default plugin settings.
21514     */
21515    value: function _setup(element, options) {
21516      this.$element = element;
21517      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, AccordionMenu.defaults, this.$element.data(), options);
21518      this.className = 'AccordionMenu'; // ie9 back compat
21519
21520      this._init();
21521
21522      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('AccordionMenu', {
21523        'ENTER': 'toggle',
21524        'SPACE': 'toggle',
21525        'ARROW_RIGHT': 'open',
21526        'ARROW_UP': 'up',
21527        'ARROW_DOWN': 'down',
21528        'ARROW_LEFT': 'close',
21529        'ESCAPE': 'closeAll'
21530      });
21531    }
21532    /**
21533     * Initializes the accordion menu by hiding all nested menus.
21534     * @private
21535     */
21536
21537  }, {
21538    key: "_init",
21539    value: function _init() {
21540      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Feather(this.$element, 'accordion');
21541
21542      var _this = this;
21543
21544      this.$element.find('[data-submenu]').not('.is-active').slideUp(0); //.find('a').css('padding-left', '1rem');
21545
21546      this.$element.attr({
21547        'role': 'tree',
vendor: 5,379 bytes, lines 21548-21678
21548        'aria-multiselectable': this.options.multiOpen
21549      });
21550      this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');
21551      this.$menuLinks.each(function () {
21552        var linkId = this.id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'acc-menu-link'),
21553            $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
21554            $sub = $elem.children('[data-submenu]'),
21555            subId = $sub[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'acc-menu'),
21556            isActive = $sub.hasClass('is-active');
21557
21558        if (_this.options.parentLink) {
21559          var $anchor = $elem.children('a');
21560          $anchor.clone().prependTo($sub).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-accordion-submenu-item"></li>');
21561        }
21562
21563        if (_this.options.submenuToggle) {
21564          $elem.addClass('has-submenu-toggle');
21565          $elem.children('a').after('<button id="' + linkId + '" class="submenu-toggle" aria-controls="' + subId + '" aria-expanded="' + isActive + '" title="' + _this.options.submenuToggleText + '"><span class="submenu-toggle-text">' + _this.options.submenuToggleText + '</span></button>');
21566        } else {
21567          $elem.attr({
21568            'aria-controls': subId,
21569            'aria-expanded': isActive,
21570            'id': linkId
21571          });
21572        }
21573
21574        $sub.attr({
21575          'aria-labelledby': linkId,
21576          'aria-hidden': !isActive,
21577          'role': 'group',
21578          'id': subId
21579        });
21580      });
21581      this.$element.find('li').attr({
21582        'role': 'treeitem'
21583      });
21584      var initPanes = this.$element.find('.is-active');
21585
21586      if (initPanes.length) {
21587        initPanes.each(function () {
21588          _this.down(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
21589        });
21590      }
21591
21592      this._events();
21593    }
21594    /**
21595     * Adds event handlers for items within the menu.
21596     * @private
21597     */
21598
21599  }, {
21600    key: "_events",
21601    value: function _events() {
21602      var _this = this;
21603
21604      this.$element.find('li').each(function () {
21605        var $submenu = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]');
21606
21607        if ($submenu.length) {
21608          if (_this.options.submenuToggle) {
21609            jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) {
21610              _this.toggle($submenu);
21611            });
21612          } else {
21613            jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) {
21614              e.preventDefault();
21615
21616              _this.toggle($submenu);
21617            });
21618          }
21619        }
21620      }).on('keydown.zf.accordionMenu', function (e) {
21621        var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
21622            $elements = $element.parent('ul').children('li'),
21623            $prevElement,
21624            $nextElement,
21625            $target = $element.children('[data-submenu]');
21626        $elements.each(function (i) {
21627          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
21628            $prevElement = $elements.eq(Math.max(0, i - 1)).find('a').first();
21629            $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)).find('a').first();
21630
21631            if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]:visible').length) {
21632              // has open sub menu
21633              $nextElement = $element.find('li:first-child').find('a').first();
21634            }
21635
21636            if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':first-child')) {
21637              // is first element of sub menu
21638              $prevElement = $element.parents('li').first().find('a').first();
21639            } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) {
21640              // if previous element has open sub menu
21641              $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();
21642            }
21643
21644            if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':last-child')) {
21645              // is last element of sub menu
21646              $nextElement = $element.parents('li').first().next('li').find('a').first();
21647            }
21648
21649            return;
21650          }
21651        });
21652        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'AccordionMenu', {
21653          open: function open() {
21654            if ($target.is(':hidden')) {
21655              _this.down($target);
21656
21657              $target.find('li').first().find('a').first().focus();
21658            }
21659          },
21660          close: function close() {
21661            if ($target.length && !$target.is(':hidden')) {
21662              // close active sub of this item
21663              _this.up($target);
21664            } else if ($element.parent('[data-submenu]').length) {
21665              // close currently open sub
21666              _this.up($element.parent('[data-submenu]'));
21667
21668              $element.parents('li').first().find('a').first().focus();
21669            }
21670          },
21671          up: function up() {
21672            $prevElement.focus();
21673            return true;
21674          },
21675          down: function down() {
21676            $nextElement.focus();
21677            return true;
21678          },
vendor: 4,450 bytes, lines 21679-21834
21679          toggle: function toggle() {
21680            if (_this.options.submenuToggle) {
21681              return false;
21682            }
21683
21684            if ($element.children('[data-submenu]').length) {
21685              _this.toggle($element.children('[data-submenu]'));
21686
21687              return true;
21688            }
21689          },
21690          closeAll: function closeAll() {
21691            _this.hideAll();
21692          },
21693          handled: function handled(preventDefault) {
21694            if (preventDefault) {
21695              e.preventDefault();
21696            }
21697          }
21698        });
21699      }); //.attr('tabindex', 0);
21700    }
21701    /**
21702     * Closes all panes of the menu.
21703     * @function
21704     */
21705
21706  }, {
21707    key: "hideAll",
21708    value: function hideAll() {
21709      this.up(this.$element.find('[data-submenu]'));
21710    }
21711    /**
21712     * Opens all panes of the menu.
21713     * @function
21714     */
21715
21716  }, {
21717    key: "showAll",
21718    value: function showAll() {
21719      this.down(this.$element.find('[data-submenu]'));
21720    }
21721    /**
21722     * Toggles the open/close state of a submenu.
21723     * @function
21724     * @param {jQuery} $target - the submenu to toggle
21725     */
21726
21727  }, {
21728    key: "toggle",
21729    value: function toggle($target) {
21730      if (!$target.is(':animated')) {
21731        if (!$target.is(':hidden')) {
21732          this.up($target);
21733        } else {
21734          this.down($target);
21735        }
21736      }
21737    }
21738    /**
21739     * Opens the sub-menu defined by `$target`.
21740     * @param {jQuery} $target - Sub-menu to open.
21741     * @fires AccordionMenu#down
21742     */
21743
21744  }, {
21745    key: "down",
21746    value: function down($target) {
21747      var _this2 = this;
21748
21749      // If having multiple submenus active is disabled, close all the submenus
21750      // that are not parents or children of the targeted submenu.
21751      if (!this.options.multiOpen) {
21752        // The "branch" of the targetted submenu, from the component root to
21753        // the active submenus nested in it.
21754        var $targetBranch = $target.parentsUntil(this.$element).add($target).add($target.find('.is-active')); // All the active submenus that are not in the branch.
21755
21756        var $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);
21757        this.up($othersActiveSubmenus);
21758      }
21759
21760      $target.addClass('is-active').attr({
21761        'aria-hidden': false
21762      });
21763
21764      if (this.options.submenuToggle) {
21765        $target.prev('.submenu-toggle').attr({
21766          'aria-expanded': true
21767        });
21768      } else {
21769        $target.parent('.is-accordion-submenu-parent').attr({
21770          'aria-expanded': true
21771        });
21772      }
21773
21774      $target.slideDown(this.options.slideSpeed, function () {
21775        /**
21776         * Fires when the menu is done opening.
21777         * @event AccordionMenu#down
21778         */
21779        _this2.$element.trigger('down.zf.accordionMenu', [$target]);
21780      });
21781    }
21782    /**
21783     * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.
21784     * @param {jQuery} $target - Sub-menu to close.
21785     * @fires AccordionMenu#up
21786     */
21787
21788  }, {
21789    key: "up",
21790    value: function up($target) {
21791      var _this3 = this;
21792
21793      var $submenus = $target.find('[data-submenu]');
21794      var $allmenus = $target.add($submenus);
21795      $submenus.slideUp(0);
21796      $allmenus.removeClass('is-active').attr('aria-hidden', true);
21797
21798      if (this.options.submenuToggle) {
21799        $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);
21800      } else {
21801        $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);
21802      }
21803
21804      $target.slideUp(this.options.slideSpeed, function () {
21805        /**
21806         * Fires when the menu is done collapsing up.
21807         * @event AccordionMenu#up
21808         */
21809        _this3.$element.trigger('up.zf.accordionMenu', [$target]);
21810      });
21811    }
21812    /**
21813     * Destroys an instance of accordion menu.
21814     * @fires AccordionMenu#destroyed
21815     */
21816
21817  }, {
21818    key: "_destroy",
21819    value: function _destroy() {
21820      this.$element.find('[data-submenu]').slideDown(0).css('display', '');
21821      this.$element.find('a').off('click.zf.accordionMenu');
21822      this.$element.find('[data-is-parent-link]').detach();
21823
21824      if (this.options.submenuToggle) {
21825        this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');
21826        this.$element.find('.submenu-toggle').remove();
21827      }
21828
21829      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Burn(this.$element, 'accordion');
21830    }
21831  }]);
21832
21833  return AccordionMenu;
21834}
vendor: 5,543 bytes, lines 21834-21973
21834(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
21835
21836AccordionMenu.defaults = {
21837  /**
21838   * Adds the parent link to the submenu.
21839   * @option
21840   * @type {boolean}
21841   * @default false
21842   */
21843  parentLink: false,
21844
21845  /**
21846   * Amount of time to animate the opening of a submenu in ms.
21847   * @option
21848   * @type {number}
21849   * @default 250
21850   */
21851  slideSpeed: 250,
21852
21853  /**
21854   * Adds a separate submenu toggle button. This allows the parent item to have a link.
21855   * @option
21856   * @example true
21857   */
21858  submenuToggle: false,
21859
21860  /**
21861   * The text used for the submenu toggle if enabled. This is used for screen readers only.
21862   * @option
21863   * @example true
21864   */
21865  submenuToggleText: 'Toggle menu',
21866
21867  /**
21868   * Allow the menu to have multiple open panes.
21869   * @option
21870   * @type {boolean}
21871   * @default true
21872   */
21873  multiOpen: true
21874};
21875
21876
21877/***/ }),
21878
21879/***/ 2:
21880/*!**************************************************************!*\
21881  !*** multi ./js/entries/plugins/foundation.accordionMenu.js ***!
21882  \**************************************************************/
21883/*! no static exports found */
21884/***/ (function(module, exports, __webpack_require__) {
21885
21886module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.accordionMenu.js */"./js/entries/plugins/foundation.accordionMenu.js");
21887
21888
21889/***/ }),
21890
21891/***/ "jquery":
21892/*!********************************************************************************************!*\
21893  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
21894  \********************************************************************************************/
21895/*! no static exports found */
21896/***/ (function(module, exports) {
21897
21898module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
21899
21900/***/ })
21901
21902/******/ });
21903});
21904//# sourceMappingURL=foundation.accordionMenu.js.map
21905(function webpackUniversalModuleDefinition(root, factory) {
21906	if(typeof exports === 'object' && typeof module === 'object')
21907		module.exports = factory(require("./foundation.core"), require("./foundation.util.box"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("jquery"));
21908	else if(typeof define === 'function' && define.amd)
21909		define(["./foundation.core", "./foundation.util.box", "./foundation.util.keyboard", "./foundation.util.nest", "jquery"], factory);
21910	else if(typeof exports === 'object')
21911		exports["foundation.drilldown"] = factory(require("./foundation.core"), require("./foundation.util.box"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("jquery"));
21912	else
21913		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.drilldown"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.box"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.nest"], root["jQuery"]);
21914})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_box__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
21915return /******/ (function(modules) { // webpackBootstrap
21916/******/ 	// The module cache
21917/******/ 	var installedModules = {};
21918/******/
21919/******/ 	// The require function
21920/******/ 	function __webpack_require__(moduleId) {
21921/******/
21922/******/ 		// Check if module is in cache
21923/******/ 		if(installedModules[moduleId]) {
21924/******/ 			return installedModules[moduleId].exports;
21925/******/ 		}
21926/******/ 		// Create a new module (and put it into the cache)
21927/******/ 		var module = installedModules[moduleId] = {
21928/******/ 			i: moduleId,
21929/******/ 			l: false,
21930/******/ 			exports: {}
21931/******/ 		};
21932/******/
21933/******/ 		// Execute the module function
21934/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21935/******/
21936/******/ 		// Flag the module as loaded
21937/******/ 		module.l = true;
21938/******/
21939/******/ 		// Return the exports of the module
21940/******/ 		return module.exports;
21941/******/ 	}
21942/******/
21943/******/
21944/******/ 	// expose the modules object (__webpack_modules__)
21945/******/ 	__webpack_require__.m = modules;
21946/******/
21947/******/ 	// expose the module cache
21948/******/ 	__webpack_require__.c = installedModules;
21949/******/
21950/******/ 	// define getter function for harmony exports
21951/******/ 	__webpack_require__.d = function(exports, name, getter) {
21952/******/ 		if(!__webpack_require__.o(exports, name)) {
21953/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
21954/******/ 		}
21955/******/ 	};
21956/******/
21957/******/ 	// define __esModule on exports
21958/******/ 	__webpack_require__.r = function(exports) {
21959/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
21960/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
21961/******/ 		}
21962/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
21963/******/ 	};
21964/******/
21965/******/ 	// create a fake namespace object
21966/******/ 	// mode & 1: value is a module id, require it
21967/******/ 	// mode & 2: merge all properties of value into the ns
21968/******/ 	// mode & 4: return value when already ns object
21969/******/ 	// mode & 8|1: behave like require
21970/******/ 	__webpack_require__.t = function(value, mode) {
21971/******/ 		if(mode & 1) value = __webpack_require__(value);
21972/******/ 		if(mode & 8) return value;
21973/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 4,102 bytes, lines 21973-22040
21973dule) return value;
21974/******/ 		var ns = Object.create(null);
21975/******/ 		__webpack_require__.r(ns);
21976/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
21977/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
21978/******/ 		return ns;
21979/******/ 	};
21980/******/
21981/******/ 	// getDefaultExport function for compatibility with non-harmony modules
21982/******/ 	__webpack_require__.n = function(module) {
21983/******/ 		var getter = module && module.__esModule ?
21984/******/ 			function getDefault() { return module['default']; } :
21985/******/ 			function getModuleExports() { return module; };
21986/******/ 		__webpack_require__.d(getter, 'a', getter);
21987/******/ 		return getter;
21988/******/ 	};
21989/******/
21990/******/ 	// Object.prototype.hasOwnProperty.call
21991/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
21992/******/
21993/******/ 	// __webpack_public_path__
21994/******/ 	__webpack_require__.p = "";
21995/******/
21996/******/
21997/******/ 	// Load entry module and return exports
21998/******/ 	return __webpack_require__(__webpack_require__.s = 3);
21999/******/ })
22000/************************************************************************/
22001/******/ ({
22002
22003/***/ "./foundation.core":
22004/*!****************************************************************************************************************************************************************!*\
22005  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
22006  \****************************************************************************************************************************************************************/
22007/*! no static exports found */
22008/***/ (function(module, exports) {
22009
22010module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
22011
22012/***/ }),
22013
22014/***/ "./foundation.util.box":
22015/*!********************************************************************************************************************************************************************************!*\
22016  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.box"],"amd":"./foundation.util.box","commonjs":"./foundation.util.box","commonjs2":"./foundation.util.box"} ***!
22017  \********************************************************************************************************************************************************************************/
22018/*! no static exports found */
22019/***/ (function(module, exports) {
22020
22021module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_box__;
22022
22023/***/ }),
22024
22025/***/ "./foundation.util.keyboard":
22026/*!****************************************************************************************************************************************************************************************************!*\
22027  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***!
22028  \****************************************************************************************************************************************************************************************************/
22029/*! no static exports found */
22030/***/ (function(module, exports) {
22031
22032module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;
22033
22034/***/ }),
22035
22036/***/ "./foundation.util.nest":
22037/*!************************************************************************************************************************************************************************************!*\
22038  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.nest"],"amd":"./foundation.util.nest","commonjs":"./foundation.util.nest","commonjs2":"./foundation.util.nest"} ***!
22039  \************************************************************************************************************************************************************************************/
22040/*! no static exports found */
22041/***/ (function(module, exports) {
22042
22043module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__;
22044
22045/***/ }),
22046
22047/***/ "./js/entries/plugins/foundation.drilldown.js":
22048/*!****************************************************!*\
22049  !*** ./js/entries/plugins/foundation.drilldown.js ***!
22050  \****************************************************/
22051/*! exports provided: Foundation, Drilldown */
22052/***/ (function(module, __webpack_exports__, __webpack_require__) {
22053
22054"use strict";
22055__webpack_require__.r(__webpack_exports__);
22056/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
22057/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
22058/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
22059
22060/* harmony import */ var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.drilldown */ "./js/foundation.drilldown.js");
22061/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Drilldown", function() { return _foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__["Drilldown"]; });
22062
22063
22064
22065_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__["Drilldown"], 'Drilldown');
22066
22067
22068/***/ }),
22069
vendor: 5,350 bytes, lines 22070-22154
22070/***/ "./js/foundation.drilldown.js":
22071/*!************************************!*\
22072  !*** ./js/foundation.drilldown.js ***!
22073  \************************************/
22074/*! exports provided: Drilldown */
22075/***/ (function(module, __webpack_exports__, __webpack_require__) {
22076
22077"use strict";
22078__webpack_require__.r(__webpack_exports__);
22079/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Drilldown", function() { return Drilldown; });
22080/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
22081/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
22082/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard");
22083/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__);
22084/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.nest */ "./foundation.util.nest");
22085/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__);
22086/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
22087/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__);
22088/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.box */ "./foundation.util.box");
22089/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_box__WEBPACK_IMPORTED_MODULE_4__);
22090
22091
22092function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
22093
22094function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
22095
22096function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
22097
22098function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
22099
22100function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
22101
22102function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
22103
22104function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
22105
22106function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
22107
22108function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
22109
22110
22111
22112
22113
22114
22115
22116/**
22117 * Drilldown module.
22118 * @module foundation.drilldown
22119 * @requires foundation.util.keyboard
22120 * @requires foundation.util.nest
22121 * @requires foundation.util.box
22122 */
22123
22124var Drilldown =
22125/*#__PURE__*/
22126function (_Plugin) {
22127  _inherits(Drilldown, _Plugin);
22128
22129  function Drilldown() {
22130    _classCallCheck(this, Drilldown);
22131
22132    return _possibleConstructorReturn(this, _getPrototypeOf(Drilldown).apply(this, arguments));
22133  }
22134
22135  _createClass(Drilldown, [{
22136    key: "_setup",
22137
22138    /**
22139     * Creates a new instance of a drilldown menu.
22140     * @class
22141     * @name Drilldown
22142     * @param {jQuery} element - jQuery object to make into an accordion menu.
22143     * @param {Object} options - Overrides to the default plugin settings.
22144     */
22145    value: function _setup(element, options) {
22146      this.$element = element;
22147      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Drilldown.defaults, this.$element.data(), options);
22148      this.className = 'Drilldown'; // ie9 back compat
22149
22150      this._init();
22151
22152      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Drilldown', {
22153        'ENTER': 'open',
22154        'SPACE': 'open',
vendor: 9,467 bytes, lines 22155-22418
22155        'ARROW_RIGHT': 'next',
22156        'ARROW_UP': 'up',
22157        'ARROW_DOWN': 'down',
22158        'ARROW_LEFT': 'previous',
22159        'ESCAPE': 'close',
22160        'TAB': 'down',
22161        'SHIFT_TAB': 'up'
22162      });
22163    }
22164    /**
22165     * Initializes the drilldown by creating jQuery collections of elements
22166     * @private
22167     */
22168
22169  }, {
22170    key: "_init",
22171    value: function _init() {
22172      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Feather(this.$element, 'drilldown');
22173
22174      if (this.options.autoApplyClass) {
22175        this.$element.addClass('drilldown');
22176      }
22177
22178      this.$element.attr({
22179        'role': 'tree',
22180        'aria-multiselectable': false
22181      });
22182      this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');
22183      this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');
22184      this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'treeitem').find('a'); // Set the main menu as current by default (unless a submenu is selected)
22185      // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu
22186
22187      this.$currentMenu = this.$element;
22188      this.$element.attr('data-mutate', this.$element.attr('data-drilldown') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'drilldown'));
22189
22190      this._prepareMenu();
22191
22192      this._registerEvents();
22193
22194      this._keyboardEvents();
22195    }
22196    /**
22197     * prepares drilldown menu by setting attributes to links and elements
22198     * sets a min height to prevent content jumping
22199     * wraps the element if not already wrapped
22200     * @private
22201     * @function
22202     */
22203
22204  }, {
22205    key: "_prepareMenu",
22206    value: function _prepareMenu() {
22207      var _this = this; // if(!this.options.holdOpen){
22208      //   this._menuLinkEvents();
22209      // }
22210
22211
22212      this.$submenuAnchors.each(function () {
22213        var $link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
22214        var $sub = $link.parent();
22215
22216        if (_this.options.parentLink) {
22217          $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="none"></li>');
22218        }
22219
22220        $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);
22221        $link.children('[data-submenu]').attr({
22222          'aria-hidden': true,
22223          'tabindex': 0,
22224          'role': 'group'
22225        });
22226
22227        _this._events($link);
22228      });
22229      this.$submenus.each(function () {
22230        var $menu = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
22231            $back = $menu.find('.js-drilldown-back');
22232
22233        if (!$back.length) {
22234          switch (_this.options.backButtonPosition) {
22235            case "bottom":
22236              $menu.append(_this.options.backButton);
22237              break;
22238
22239            case "top":
22240              $menu.prepend(_this.options.backButton);
22241              break;
22242
22243            default:
22244              console.error("Unsupported backButtonPosition value '" + _this.options.backButtonPosition + "'");
22245          }
22246        }
22247
22248        _this._back($menu);
22249      });
22250      this.$submenus.addClass('invisible');
22251
22252      if (!this.options.autoHeight) {
22253        this.$submenus.addClass('drilldown-submenu-cover-previous');
22254      } // create a wrapper on element if it doesn't exist.
22255
22256
22257      if (!this.$element.parent().hasClass('is-drilldown')) {
22258        this.$wrapper = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.wrapper).addClass('is-drilldown');
22259        if (this.options.animateHeight) this.$wrapper.addClass('animate-height');
22260        this.$element.wrap(this.$wrapper);
22261      } // set wrapper
22262
22263
22264      this.$wrapper = this.$element.parent();
22265      this.$wrapper.css(this._getMaxDims());
22266    }
22267  }, {
22268    key: "_resize",
22269    value: function _resize() {
22270      this.$wrapper.css({
22271        'max-width': 'none',
22272        'min-height': 'none'
22273      }); // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths
22274
22275      this.$wrapper.css(this._getMaxDims());
22276    }
22277    /**
22278     * Adds event handlers to elements in the menu.
22279     * @function
22280     * @private
22281     * @param {jQuery} $elem - the current menu item to add handlers to.
22282     */
22283
22284  }, {
22285    key: "_events",
22286    value: function _events($elem) {
22287      var _this = this;
22288
22289      $elem.off('click.zf.drilldown').on('click.zf.drilldown', function (e) {
22290        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')) {
22291          e.preventDefault();
22292        } // if(e.target !== e.currentTarget.firstElementChild){
22293        //   return false;
22294        // }
22295
22296
22297        _this._show($elem.parent('li'));
22298
22299        if (_this.options.closeOnClick) {
22300          var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body');
22301          $body.off('.zf.drilldown').on('click.zf.drilldown', function (e) {
22302            if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target)) {
22303              return;
22304            }
22305
22306            e.preventDefault();
22307
22308            _this._hideAll();
22309
22310            $body.off('.zf.drilldown');
22311          });
22312        }
22313      });
22314    }
22315    /**
22316     * Adds event handlers to the menu element.
22317     * @function
22318     * @private
22319     */
22320
22321  }, {
22322    key: "_registerEvents",
22323    value: function _registerEvents() {
22324      if (this.options.scrollTop) {
22325        this._bindHandler = this._scrollTop.bind(this);
22326        this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown', this._bindHandler);
22327      }
22328
22329      this.$element.on('mutateme.zf.trigger', this._resize.bind(this));
22330    }
22331    /**
22332     * Scroll to Top of Element or data-scroll-top-element
22333     * @function
22334     * @fires Drilldown#scrollme
22335     */
22336
22337  }, {
22338    key: "_scrollTop",
22339    value: function _scrollTop() {
22340      var _this = this;
22341
22342      var $scrollTopElement = _this.options.scrollTopElement != '' ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this.options.scrollTopElement) : _this.$element,
22343          scrollPos = parseInt($scrollTopElement.offset().top + _this.options.scrollTopOffset, 10);
22344      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({
22345        scrollTop: scrollPos
22346      }, _this.options.animationDuration, _this.options.animationEasing, function () {
22347        /**
22348          * Fires after the menu has scrolled
22349          * @event Drilldown#scrollme
22350          */
22351        if (this === jquery__WEBPACK_IMPORTED_MODULE_0___default()('html')[0]) _this.$element.trigger('scrollme.zf.drilldown');
22352      });
22353    }
22354    /**
22355     * Adds keydown event listener to `li`'s in the menu.
22356     * @private
22357     */
22358
22359  }, {
22360    key: "_keyboardEvents",
22361    value: function _keyboardEvents() {
22362      var _this = this;
22363
22364      this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function (e) {
22365        var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
22366            $elements = $element.parent('li').parent('ul').children('li').children('a'),
22367            $prevElement,
22368            $nextElement;
22369        $elements.each(function (i) {
22370          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
22371            $prevElement = $elements.eq(Math.max(0, i - 1));
22372            $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1));
22373            return;
22374          }
22375        });
22376        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Drilldown', {
22377          next: function next() {
22378            if ($element.is(_this.$submenuAnchors)) {
22379              _this._show($element.parent('li'));
22380
22381              $element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () {
22382                $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();
22383              });
22384              return true;
22385            }
22386          },
22387          previous: function previous() {
22388            _this._hide($element.parent('li').parent('ul'));
22389
22390            $element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () {
22391              setTimeout(function () {
22392                $element.parent('li').parent('ul').parent('li').children('a').first().focus();
22393              }, 1);
22394            });
22395            return true;
22396          },
22397          up: function up() {
22398            $prevElement.focus(); // Don't tap focus on first element in root ul
22399
22400            return !$element.is(_this.$element.find('> li:first-child > a'));
22401          },
22402          down: function down() {
22403            $nextElement.focus(); // Don't tap focus on last element in root ul
22404
22405            return !$element.is(_this.$element.find('> li:last-child > a'));
22406          },
22407          close: function close() {
22408            // Don't close on element in root ul
22409            if (!$element.is(_this.$element.find('> li > a'))) {
22410              _this._hide($element.parent().parent());
22411
22412              $element.parent().parent().siblings('a').focus();
22413            }
22414          },
22415          open: function open() {
22416            if (_this.options.parentLink && $element.attr('href')) {
22417              // Link with href
22418              return false;
vendor: 4,589 bytes, lines 22419-22564
22419            } else if (!$element.is(_this.$menuItems)) {
22420              // not menu item means back button
22421              _this._hide($element.parent('li').parent('ul'));
22422
22423              $element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () {
22424                setTimeout(function () {
22425                  $element.parent('li').parent('ul').parent('li').children('a').first().focus();
22426                }, 1);
22427              });
22428              return true;
22429            } else if ($element.is(_this.$submenuAnchors)) {
22430              // Sub menu item
22431              _this._show($element.parent('li'));
22432
22433              $element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () {
22434                $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();
22435              });
22436              return true;
22437            }
22438          },
22439          handled: function handled(preventDefault) {
22440            if (preventDefault) {
22441              e.preventDefault();
22442            }
22443          }
22444        });
22445      }); // end keyboardAccess
22446    }
22447    /**
22448     * Closes all open elements, and returns to root menu.
22449     * @function
22450     * @fires Drilldown#close
22451     * @fires Drilldown#closed
22452     */
22453
22454  }, {
22455    key: "_hideAll",
22456    value: function _hideAll() {
22457      var _this2 = this;
22458
22459      var $elem = this.$element.find('.is-drilldown-submenu.is-active');
22460      $elem.addClass('is-closing');
22461
22462      if (this.options.autoHeight) {
22463        var calcHeight = $elem.parent().closest('ul').data('calcHeight');
22464        this.$wrapper.css({
22465          height: calcHeight
22466        });
22467      }
22468      /**
22469       * Fires when the menu is closing.
22470       * @event Drilldown#close
22471       */
22472
22473
22474      this.$element.trigger('close.zf.drilldown');
22475      $elem.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($elem), function () {
22476        $elem.removeClass('is-active is-closing');
22477        /**
22478         * Fires when the menu is fully closed.
22479         * @event Drilldown#closed
22480         */
22481
22482        _this2.$element.trigger('closed.zf.drilldown');
22483      });
22484    }
22485    /**
22486     * Adds event listener for each `back` button, and closes open menus.
22487     * @function
22488     * @fires Drilldown#back
22489     * @param {jQuery} $elem - the current sub-menu to add `back` event.
22490     */
22491
22492  }, {
22493    key: "_back",
22494    value: function _back($elem) {
22495      var _this = this;
22496
22497      $elem.off('click.zf.drilldown');
22498      $elem.children('.js-drilldown-back').on('click.zf.drilldown', function (e) {
22499        // console.log('mouseup on back');
22500        _this._hide($elem); // If there is a parent submenu, call show
22501
22502
22503        var parentSubMenu = $elem.parent('li').parent('ul').parent('li');
22504
22505        if (parentSubMenu.length) {
22506          _this._show(parentSubMenu);
22507        }
22508      });
22509    }
22510    /**
22511     * Adds event listener to menu items w/o submenus to close open menus on click.
22512     * @function
22513     * @private
22514     */
22515
22516  }, {
22517    key: "_menuLinkEvents",
22518    value: function _menuLinkEvents() {
22519      var _this = this;
22520
22521      this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown', function (e) {
22522        setTimeout(function () {
22523          _this._hideAll();
22524        }, 0);
22525      });
22526    }
22527    /**
22528     * Sets the CSS classes for submenu to show it.
22529     * @function
22530     * @private
22531     * @param {jQuery} $elem - the target submenu (`ul` tag)
22532     * @param {boolean} trigger - trigger drilldown event
22533     */
22534
22535  }, {
22536    key: "_setShowSubMenuClasses",
22537    value: function _setShowSubMenuClasses($elem, trigger) {
22538      $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);
22539      $elem.parent('li').attr('aria-expanded', true);
22540
22541      if (trigger === true) {
22542        this.$element.trigger('open.zf.drilldown', [$elem]);
22543      }
22544    }
22545    /**
22546     * Sets the CSS classes for submenu to hide it.
22547     * @function
22548     * @private
22549     * @param {jQuery} $elem - the target submenu (`ul` tag)
22550     * @param {boolean} trigger - trigger drilldown event
22551     */
22552
22553  }, {
22554    key: "_setHideSubMenuClasses",
22555    value: function _setHideSubMenuClasses($elem, trigger) {
22556      $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);
22557      $elem.parent('li').attr('aria-expanded', false);
22558
22559      if (trigger === true) {
22560        $elem.trigger('hide.zf.drilldown', [$elem]);
22561      }
22562    }
22563    /**
22564     * Opens a specific drilldown (sub)menu no matter which (sub)menu in 
vendor: 6,468 bytes, lines 22564-22733
22564it is currently visible.
22565     * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.
22566     * @function
22567     * @fires Drilldown#open
22568     * @param {jQuery} $elem - the target (sub)menu (`ul` tag)
22569     * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused
22570     */
22571
22572  }, {
22573    key: "_showMenu",
22574    value: function _showMenu($elem, autoFocus) {
22575      var _this = this; // Reset drilldown
22576
22577
22578      var $expandedSubmenus = this.$element.find('li[aria-expanded="true"] > ul[data-submenu]');
22579      $expandedSubmenus.each(function (index) {
22580        _this._setHideSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
22581      }); // Save the menu as the currently displayed one.
22582
22583      this.$currentMenu = $elem; // If target menu is root, focus first link & exit
22584
22585      if ($elem.is('[data-drilldown]')) {
22586        if (autoFocus === true) $elem.find('li[role="treeitem"] > a').first().focus();
22587        if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));
22588        return;
22589      } // Find all submenus on way to root incl. the element itself
22590
22591
22592      var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]'); // Open target menu and all submenus on its way to root
22593
22594      $submenus.each(function (index) {
22595        // Update height of first child (target menu) if autoHeight option true
22596        if (index === 0 && _this.options.autoHeight) {
22597          _this.$wrapper.css('height', jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight'));
22598        }
22599
22600        var isLastChild = index == $submenus.length - 1; // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link
22601        // Last child makes sure the event gets always triggered even if going through several menus
22602
22603        if (isLastChild === true) {
22604          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)), function () {
22605            if (autoFocus === true) {
22606              $elem.find('li[role="treeitem"] > a').first().focus();
22607            }
22608          });
22609        }
22610
22611        _this._setShowSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), isLastChild);
22612      });
22613    }
22614    /**
22615     * Opens a submenu.
22616     * @function
22617     * @fires Drilldown#open
22618     * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.
22619     */
22620
22621  }, {
22622    key: "_show",
22623    value: function _show($elem) {
22624      var $submenu = $elem.children('[data-submenu]');
22625      $elem.attr('aria-expanded', true);
22626      this.$currentMenu = $submenu;
22627      $submenu.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);
22628
22629      if (this.options.autoHeight) {
22630        this.$wrapper.css({
22631          height: $submenu.data('calcHeight')
22632        });
22633      }
22634      /**
22635       * Fires when the submenu has opened.
22636       * @event Drilldown#open
22637       */
22638
22639
22640      this.$element.trigger('open.zf.drilldown', [$elem]);
22641    }
22642    /**
22643     * Hides a submenu
22644     * @function
22645     * @fires Drilldown#hide
22646     * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.
22647     */
22648
22649  }, {
22650    key: "_hide",
22651    value: function _hide($elem) {
22652      if (this.options.autoHeight) this.$wrapper.css({
22653        height: $elem.parent().closest('ul').data('calcHeight')
22654      });
22655
22656      var _this = this;
22657
22658      $elem.parent('li').attr('aria-expanded', false);
22659      $elem.attr('aria-hidden', true);
22660      $elem.addClass('is-closing').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($elem), function () {
22661        $elem.removeClass('is-active is-closing');
22662        $elem.blur().addClass('invisible');
22663      });
22664      /**
22665       * Fires when the submenu has closed.
22666       * @event Drilldown#hide
22667       */
22668
22669      $elem.trigger('hide.zf.drilldown', [$elem]);
22670    }
22671    /**
22672     * Iterates through the nested menus to calculate the min-height, and max-width for the menu.
22673     * Prevents content jumping.
22674     * @function
22675     * @private
22676     */
22677
22678  }, {
22679    key: "_getMaxDims",
22680    value: function _getMaxDims() {
22681      var maxHeight = 0,
22682          result = {},
22683          _this = this; // Recalculate menu heights and total max height
22684
22685
22686      this.$submenus.add(this.$element).each(function () {
22687        var numOfElems = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('li').length;
22688        var height = _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__["Box"].GetDimensions(this).height;
22689        maxHeight = height > maxHeight ? height : maxHeight;
22690
22691        if (_this.options.autoHeight) {
22692          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight', height);
22693        }
22694      });
22695      if (this.options.autoHeight) result['height'] = this.$currentMenu.data('calcHeight');else result['min-height'] = "".concat(maxHeight, "px");
22696      result['max-width'] = "".concat(this.$element[0].getBoundingClientRect().width, "px");
22697      return result;
22698    }
22699    /**
22700     * Destroys the Drilldown Menu
22701     * @function
22702     */
22703
22704  }, {
22705    key: "_destroy",
22706    value: function _destroy() {
22707      if (this.options.scrollTop) this.$element.off('.zf.drilldown', this._bindHandler);
22708
22709      this._hideAll();
22710
22711      this.$element.off('mutateme.zf.trigger');
22712      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Burn(this.$element, 'drilldown');
22713      this.$element.unwrap().find('.js-drilldown-back, .is-submenu-parent-item').remove().end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');
22714      this.$submenuAnchors.each(function () {
22715        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).off('.zf.drilldown');
22716      });
22717      this.$element.find('[data-is-parent-link]').detach();
22718      this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');
22719      this.$element.find('a').each(function () {
22720        var $link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
22721        $link.removeAttr('tabindex');
22722
22723        if ($link.data('savedHref')) {
22724          $link.attr('href', $link.data('savedHref')).removeData('savedHref');
22725        } else {
22726          return;
22727        }
22728      });
22729    }
22730  }]);
22731
22732  return Drilldown;
22733}
22733(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
22734
22735Drilldown.defaults = {
22736  /**
22737   * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are
22738   * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.
22739   * @option
22740   * @type {boolean}
22741   * @default true
22742   */
22743  autoApplyClass: true,
22744
22745  /**
22746   * Markup used for JS generated back button. Prepended  or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\`) if copy and pasting.
22747   * @option
22748   * @type {string}
22749   * @default '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>'
22750   */
22751  backButton: '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>',
22752
22753  /**
22754   * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.
22755   * @option
22756   * @type {string}
22757   * @default top
22758   */
22759  backButtonPosition: 'top',
22760
22761  /**
22762   * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\`) if copy and pasting.
22763   * @option
22764   * @type {string}
22765   * @default '<div></div>'
22766   */
22767  wrapper: '<div></div>',
22768
22769  /**
22770   * Adds the parent link to the submenu.
22771   * @option
22772   * @type {boolean}
22773   * @default false
22774   */
22775  parentLink: false,
22776
22777  /**
22778   * Allow the menu to return to root list on body click.
22779   * @option
22780   * @type {boolean}
22781   * @default false
22782   */
22783  closeOnClick: false,
22784
22785  /**
22786   * Allow the menu to auto adjust height.
22787   * @option
22788   * @type {boolean}
22789   * @default false
22790   */
22791  autoHeight: false,
22792
22793  /**
22794   * Animate the auto adjust height.
22795   * @option
22796   * @type {boolean}
22797   * @default false
22798   */
22799  animateHeight: false,
22800
22801  /**
22802   * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button
22803   * @option
22804   * @type {boolean}
22805   * @default false
22806   */
22807  scrollTop: false,
22808
22809  /**
22810   * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken
22811   * @option
22812   * @type {string}
22813   * @default ''
22814   */
22815  scrollTopElement: '',
22816
22817  /**
22818   * ScrollTop offset
22819   * @option
22820   * @type {number}
22821   * @default 0
22822   */
22823  scrollTopOffset: 0,
22824
22825  /**
22826   * Scroll animation duration
22827   * @option
22828   * @type {number}
22829   * @default 500
22830   */
22831  animationDuration: 500,
22832
22833  /**
22834   * Scroll animation easing. Can be `'swing'` or `'linear'`.
22835   * @option
22836   * @type {string}
22837   * @see {@link https://api.jquery.com/animate|JQuery animate}
22838   * @default 'swing'
22839   */
22840  animationEasing: 'swing' // holdOpen: false
22841
22842};
22843
22844
22845/***/ }),
22846
22847/***/ 3:
22848/*!**********************************************************!*\
22849  !*** multi ./js/entries/plugins/foundation.drilldown.js ***!
22850  \**********************************************************/
22851/*! no static exports found */
22852/***/ (function(module, exports, __webpack_require__) {
22853
22854module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.drilldown.js */"./js/entries/plugins/foundation.drilldown.js");
22855
22856
22857/***/ }),
22858
22859/***/ "jquery":
22860/*!********************************************************************************************!*\
22861  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
22862  \********************************************************************************************/
22863/*! no static exports found */
22864/***/ (function(module, exports) {
22865
22866module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
22867
22868/***/ })
22869
22870/******/ });
22871});
22872//# sourceMappingURL=foundation.drilldown.js.map
22873(function webpackUniversalModuleDefinition(root, factory) {
22874	if(typeof exports === 'object' && typeof module === 'object')
22875		module.exports = factory(require("./foundation.util.keyboard"), require("./foundation.core"), require("jquery"), require("./foundation.util.box"), require("./foundation.util.motion"), require("./foundation.util.touch"));
22876	else if(typeof define === 'function' && define.amd)
22877		define(["./foundation.util.keyboard", "./foundation.core", "jquery", "./foundation.util.box", "./foundation.util.motion", "./foundation.util.touch"], factory);
22878	else if(typeof exports === 'object')
vendor: 5,158 bytes, lines 22879-22975
22879		exports["foundation.dropdown"] = factory(require("./foundation.util.keyboard"), require("./foundation.core"), require("jquery"), require("./foundation.util.box"), require("./foundation.util.motion"), require("./foundation.util.touch"));
22880	else
22881		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.dropdown"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.box"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.touch"]);
22882})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_box__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__) {
22883return /******/ (function(modules) { // webpackBootstrap
22884/******/ 	// The module cache
22885/******/ 	var installedModules = {};
22886/******/
22887/******/ 	// The require function
22888/******/ 	function __webpack_require__(moduleId) {
22889/******/
22890/******/ 		// Check if module is in cache
22891/******/ 		if(installedModules[moduleId]) {
22892/******/ 			return installedModules[moduleId].exports;
22893/******/ 		}
22894/******/ 		// Create a new module (and put it into the cache)
22895/******/ 		var module = installedModules[moduleId] = {
22896/******/ 			i: moduleId,
22897/******/ 			l: false,
22898/******/ 			exports: {}
22899/******/ 		};
22900/******/
22901/******/ 		// Execute the module function
22902/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22903/******/
22904/******/ 		// Flag the module as loaded
22905/******/ 		module.l = true;
22906/******/
22907/******/ 		// Return the exports of the module
22908/******/ 		return module.exports;
22909/******/ 	}
22910/******/
22911/******/
22912/******/ 	// expose the modules object (__webpack_modules__)
22913/******/ 	__webpack_require__.m = modules;
22914/******/
22915/******/ 	// expose the module cache
22916/******/ 	__webpack_require__.c = installedModules;
22917/******/
22918/******/ 	// define getter function for harmony exports
22919/******/ 	__webpack_require__.d = function(exports, name, getter) {
22920/******/ 		if(!__webpack_require__.o(exports, name)) {
22921/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
22922/******/ 		}
22923/******/ 	};
22924/******/
22925/******/ 	// define __esModule on exports
22926/******/ 	__webpack_require__.r = function(exports) {
22927/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
22928/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
22929/******/ 		}
22930/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
22931/******/ 	};
22932/******/
22933/******/ 	// create a fake namespace object
22934/******/ 	// mode & 1: value is a module id, require it
22935/******/ 	// mode & 2: merge all properties of value into the ns
22936/******/ 	// mode & 4: return value when already ns object
22937/******/ 	// mode & 8|1: behave like require
22938/******/ 	__webpack_require__.t = function(value, mode) {
22939/******/ 		if(mode & 1) value = __webpack_require__(value);
22940/******/ 		if(mode & 8) return value;
22941/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
22942/******/ 		var ns = Object.create(null);
22943/******/ 		__webpack_require__.r(ns);
22944/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
22945/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
22946/******/ 		return ns;
22947/******/ 	};
22948/******/
22949/******/ 	// getDefaultExport function for compatibility with non-harmony modules
22950/******/ 	__webpack_require__.n = function(module) {
22951/******/ 		var getter = module && module.__esModule ?
22952/******/ 			function getDefault() { return module['default']; } :
22953/******/ 			function getModuleExports() { return module; };
22954/******/ 		__webpack_require__.d(getter, 'a', getter);
22955/******/ 		return getter;
22956/******/ 	};
22957/******/
22958/******/ 	// Object.prototype.hasOwnProperty.call
22959/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
22960/******/
22961/******/ 	// __webpack_public_path__
22962/******/ 	__webpack_require__.p = "";
22963/******/
22964/******/
22965/******/ 	// Load entry module and return exports
22966/******/ 	return __webpack_require__(__webpack_require__.s = 4);
22967/******/ })
22968/************************************************************************/
22969/******/ ({
22970
22971/***/ "./foundation.core":
22972/*!****************************************************************************************************************************************************************!*\
22973  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
22974  \****************************************************************************************************************************************************************/
22975/*! no static exports found */
22976/***/ (function(module, exports) {
22977
22978module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
22979
22980/***/ }),
22981
22982/***/ "./foundation.util.box":
22983/*!********************************************************************************************************************************************************************************!*\
22984  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.box"],"amd":"./foundation.util.box","commonjs":"./foundation.util.box","commonjs2":"./foundation.util.box"} ***!
22985  \********************************************************************************************************************************************************************************/
22986/*! no static exports found */
22987/***/ (function(module, exports) {
22988
22989module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_box__;
22990
22991/***/ }),
22992
22993/***/ "./foundation.util.keyboard":
22994/*!****************************************************************************************************************************************************************************************************!*\
22995  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***!
22996  \****************************************************************************************************************************************************************************************************/
22997/*! no static exports found */
22998/***/ (function(module, exports) {
22999
23000module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;
23001
23002/***/ }),
23003
23004/***/ "./foundation.util.motion":
23005/*!********************************************************************************************************************************************************************************************!*\
23006  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***!
23007  \********************************************************************************************************************************************************************************************/
23008/*! no static exports found */
23009/***/ (function(module, exports) {
23010
23011module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;
23012
23013/***/ }),
23014
23015/***/ "./foundation.util.touch":
23016/*!****************************************************************************************************************************************************************************************!*\
23017  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.touch"],"amd":"./foundation.util.touch","commonjs":"./foundation.util.touch","commonjs2":"./foundation.util.touch"} ***!
23018  \****************************************************************************************************************************************************************************************/
23019/*! no static exports found */
23020/***/ (function(module, exports) {
23021
23022module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__;
23023
23024/***/ }),
23025
23026/***/ "./js/entries/plugins/foundation.dropdown.js":
23027/*!***************************************************!*\
23028  !*** ./js/entries/plugins/foundation.dropdown.js ***!
23029  \***************************************************/
23030/*! exports provided: Foundation, Dropdown */
23031/***/ (function(module, __webpack_exports__, __webpack_require__) {
23032
23033"use strict";
23034__webpack_require__.r(__webpack_exports__);
23035/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
23036/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
23037/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
23038
23039/* harmony import */ var _foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.dropdown */ "./js/foundation.dropdown.js");
23040/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Dropdown", function() { return _foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__["Dropdown"]; });
23041
23042
23043
23044_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__["Dropdown"], 'Dropdown');
23045
23046
23047/***/ }),
23048
vendor: 4,182 bytes, lines 23049-23087
23049/***/ "./js/foundation.dropdown.js":
23050/*!***********************************!*\
23051  !*** ./js/foundation.dropdown.js ***!
23052  \***********************************/
23053/*! exports provided: Dropdown */
23054/***/ (function(module, __webpack_exports__, __webpack_require__) {
23055
23056"use strict";
23057__webpack_require__.r(__webpack_exports__);
23058/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Dropdown", function() { return Dropdown; });
23059/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
23060/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
23061/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard");
23062/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__);
23063/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
23064/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__);
23065/* harmony import */ var _foundation_positionable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.positionable */ "./js/foundation.positionable.js");
23066/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
23067/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.touch */ "./foundation.util.touch");
23068/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__);
23069
23070
23071function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
23072
23073function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23074
23075function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
23076
23077function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
23078
23079function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
23080
23081function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
23082
23083function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
23084
23085function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
23086
23087function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o
23087) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
23088
23089function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
23090
23091function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
23092
23093
23094
23095
23096
23097
23098
23099/**
23100 * Dropdown module.
23101 * @module foundation.dropdown
23102 * @requires foundation.util.keyboard
23103 * @requires foundation.util.box
23104 * @requires foundation.util.touch
23105 * @requires foundation.util.triggers
23106 */
23107
23108var Dropdown =
23109/*#__PURE__*/
23110function (_Positionable) {
23111  _inherits(Dropdown, _Positionable);
23112
23113  function Dropdown() {
23114    _classCallCheck(this, Dropdown);
23115
23116    return _possibleConstructorReturn(this, _getPrototypeOf(Dropdown).apply(this, arguments));
23117  }
23118
23119  _createClass(Dropdown, [{
23120    key: "_setup",
23121
23122    /**
23123     * Creates a new instance of a dropdown.
23124     * @class
23125     * @name Dropdown
23126     * @param {jQuery} element - jQuery object to make into a dropdown.
23127     *        Object should be of the dropdown panel, rather than its anchor.
23128     * @param {Object} options - Overrides to the default plugin settings.
23129     */
23130    value: function _setup(element, options) {
23131      this.$element = element;
23132      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Dropdown.defaults, this.$element.data(), options);
23133      this.className = 'Dropdown'; // ie9 back compat
23134      // Touch and Triggers init are idempotent, just need to make sure they are initialized
23135
23136      _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
23137      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
23138
23139      this._init();
23140
23141      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Dropdown', {
23142        'ENTER': 'toggle',
23143        'SPACE': 'toggle',
23144        'ESCAPE': 'close'
23145      });
23146    }
23147    /**
23148     * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.
23149     * @function
23150     * @private
23151     */
23152
23153  }, {
23154    key: "_init",
23155    value: function _init() {
23156      var $id = this.$element.attr('id');
23157      this.$anchors = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat($id, "\"]")).length ? jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat($id, "\"]")) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat($id, "\"]"));
23158      this.$anchors.attr({
23159        'aria-controls': $id,
23160        'data-is-focus': false,
23161        'data-yeti-box': $id,
23162        'aria-haspopup': true,
23163        'aria-expanded': false
23164      });
23165
23166      this._setCurrentAnchor(this.$anchors.first());
23167
23168      if (this.options.parentClass) {
23169        this.$parent = this.$element.parents('.' + this.options.parentClass);
23170      } else {
23171        this.$parent = null;
23172      } // Set [aria-labelledby] on the Dropdown if it is not set
23173
23174
23175      if (typeof this.$element.attr('aria-labelledby') === 'undefined') {
23176        // Get the anchor ID or create one
23177        if (typeof this.$currentAnchor.attr('id') === 'undefined') {
23178          this.$currentAnchor.attr('id', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'dd-anchor'));
23179        }
23180
23181        this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));
23182      }
23183
23184      this.$element.attr({
23185        'aria-hidden': 'true',
23186        'data-yeti-box': $id,
23187        'data-resize': $id
23188      });
23189
23190      _get(_getPrototypeOf(Dropdown.prototype), "_init", this).call(this);
23191
23192      this._events();
23193    }
23194  }, {
23195    key: "_getDefaultPosition",
23196    value: function _getDefaultPosition() {
23197      // handle legacy classnames
23198      var position = this.$element[0].className.match(/(top|left|right|bottom)/g);
23199
23200      if (position) {
23201        return position[0];
23202      } else {
23203        return 'bottom';
23204      }
23205    }
23206  }, {
23207    key: "_getDefaultAlignment",
23208    value: function _getDefaultAlignment() {
23209      // handle legacy float approach
23210      var horizontalPosition = /float-(\S+)/.exec(this.$currentAnchor.attr('class'));
23211
23212      if (horizontalPosition) {
23213        return horizontalPosition[1];
23214      }
23215
23216      return _get(_getPrototypeOf(Dropdown.prototype), "_getDefaultAlignment", this).call(this);
23217    }
23218    /**
23219     * Sets the position and orientation of the dropdown pane, checks for c
vendor: 6,007 bytes, lines 23219-23389
23219ollisions if allow-overlap is not true.
23220     * Recursively calls itself if a collision is detected, with a new position class.
23221     * @function
23222     * @private
23223     */
23224
23225  }, {
23226    key: "_setPosition",
23227    value: function _setPosition() {
23228      this.$element.removeClass("has-position-".concat(this.position, " has-alignment-").concat(this.alignment));
23229
23230      _get(_getPrototypeOf(Dropdown.prototype), "_setPosition", this).call(this, this.$currentAnchor, this.$element, this.$parent);
23231
23232      this.$element.addClass("has-position-".concat(this.position, " has-alignment-").concat(this.alignment));
23233    }
23234    /**
23235     * Make it a current anchor.
23236     * Current anchor as the reference for the position of Dropdown panes.
23237     * @param {HTML} el - DOM element of the anchor.
23238     * @function
23239     * @private
23240     */
23241
23242  }, {
23243    key: "_setCurrentAnchor",
23244    value: function _setCurrentAnchor(el) {
23245      this.$currentAnchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el);
23246    }
23247    /**
23248     * Adds event listeners to the element utilizing the triggers utility library.
23249     * @function
23250     * @private
23251     */
23252
23253  }, {
23254    key: "_events",
23255    value: function _events() {
23256      var _this = this,
23257          hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined';
23258
23259      this.$element.on({
23260        'open.zf.trigger': this.open.bind(this),
23261        'close.zf.trigger': this.close.bind(this),
23262        'toggle.zf.trigger': this.toggle.bind(this),
23263        'resizeme.zf.trigger': this._setPosition.bind(this)
23264      });
23265      this.$anchors.off('click.zf.trigger').on('click.zf.trigger', function (e) {
23266        _this._setCurrentAnchor(this);
23267
23268        if ( // if forceFollow false, always prevent default action
23269        _this.options.forceFollow === false || // if forceFollow true and hover option true, only prevent default action on 1st click
23270        // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed
23271        hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false) {
23272          e.preventDefault();
23273        }
23274      });
23275
23276      if (this.options.hover) {
23277        this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () {
23278          _this._setCurrentAnchor(this);
23279
23280          var bodyData = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').data();
23281
23282          if (typeof bodyData.whatinput === 'undefined' || bodyData.whatinput === 'mouse') {
23283            clearTimeout(_this.timeout);
23284            _this.timeout = setTimeout(function () {
23285              _this.open();
23286
23287              _this.$anchors.data('hover', true);
23288            }, _this.options.hoverDelay);
23289          }
23290        }).on('mouseleave.zf.dropdown', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function () {
23291          clearTimeout(_this.timeout);
23292          _this.timeout = setTimeout(function () {
23293            _this.close();
23294
23295            _this.$anchors.data('hover', false);
23296          }, _this.options.hoverDelay);
23297        }));
23298
23299        if (this.options.hoverPane) {
23300          this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () {
23301            clearTimeout(_this.timeout);
23302          }).on('mouseleave.zf.dropdown', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function () {
23303            clearTimeout(_this.timeout);
23304            _this.timeout = setTimeout(function () {
23305              _this.close();
23306
23307              _this.$anchors.data('hover', false);
23308            }, _this.options.hoverDelay);
23309          }));
23310        }
23311      }
23312
23313      this.$anchors.add(this.$element).on('keydown.zf.dropdown', function (e) {
23314        var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
23315            visibleFocusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].findFocusable(_this.$element);
23316        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Dropdown', {
23317          open: function open() {
23318            if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {
23319              _this.open();
23320
23321              _this.$element.attr('tabindex', -1).focus();
23322
23323              e.preventDefault();
23324            }
23325          },
23326          close: function close() {
23327            _this.close();
23328
23329            _this.$anchors.focus();
23330          }
23331        });
23332      });
23333    }
23334    /**
23335     * Adds an event handler to the body to close any dropdowns on a click.
23336     * @function
23337     * @private
23338     */
23339
23340  }, {
23341    key: "_addBodyHandler",
23342    value: function _addBodyHandler() {
23343      var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).not(this.$element),
23344          _this = this;
23345
23346      $body.off('click.zf.dropdown tap.zf.dropdown').on('click.zf.dropdown tap.zf.dropdown', function (e) {
23347        if (_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {
23348          return;
23349        }
23350
23351        if (_this.$element.is(e.target) || _this.$element.find(e.target).length) {
23352          return;
23353        }
23354
23355        _this.close();
23356
23357        $body.off('click.zf.dropdown tap.zf.dropdown');
23358      });
23359    }
23360    /**
23361     * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.
23362     * @function
23363     * @fires Dropdown#closeme
23364     * @fires Dropdown#show
23365     */
23366
23367  }, {
23368    key: "open",
23369    value: function open() {
23370      // var _this = this;
23371
23372      /**
23373       * Fires to close other open dropdowns, typically when dropdown is opening
23374       * @event Dropdown#closeme
23375       */
23376      this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));
23377      this.$anchors.addClass('hover').attr({
23378        'aria-expanded': true
23379      }); // this.$element/*.show()*/;
23380
23381      this.$element.addClass('is-opening');
23382
23383      this._setPosition();
23384
23385      this.$element.removeClass('is-opening').addClass('is-open').attr({
23386        'aria-hidden': false
23387      });
23388
23389      if (this.options.autoFocus) {
vendor: 4,783 bytes, lines 23390-23590
23390        var $focusable = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].findFocusable(this.$element);
23391
23392        if ($focusable.length) {
23393          $focusable.eq(0).focus();
23394        }
23395      }
23396
23397      if (this.options.closeOnClick) {
23398        this._addBodyHandler();
23399      }
23400
23401      if (this.options.trapFocus) {
23402        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].trapFocus(this.$element);
23403      }
23404      /**
23405       * Fires once the dropdown is visible.
23406       * @event Dropdown#show
23407       */
23408
23409
23410      this.$element.trigger('show.zf.dropdown', [this.$element]);
23411    }
23412    /**
23413     * Closes the open dropdown pane.
23414     * @function
23415     * @fires Dropdown#hide
23416     */
23417
23418  }, {
23419    key: "close",
23420    value: function close() {
23421      if (!this.$element.hasClass('is-open')) {
23422        return false;
23423      }
23424
23425      this.$element.removeClass('is-open').attr({
23426        'aria-hidden': true
23427      });
23428      this.$anchors.removeClass('hover').attr('aria-expanded', false);
23429      /**
23430       * Fires once the dropdown is no longer visible.
23431       * @event Dropdown#hide
23432       */
23433
23434      this.$element.trigger('hide.zf.dropdown', [this.$element]);
23435
23436      if (this.options.trapFocus) {
23437        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].releaseFocus(this.$element);
23438      }
23439    }
23440    /**
23441     * Toggles the dropdown pane's visibility.
23442     * @function
23443     */
23444
23445  }, {
23446    key: "toggle",
23447    value: function toggle() {
23448      if (this.$element.hasClass('is-open')) {
23449        if (this.$anchors.data('hover')) return;
23450        this.close();
23451      } else {
23452        this.open();
23453      }
23454    }
23455    /**
23456     * Destroys the dropdown.
23457     * @function
23458     */
23459
23460  }, {
23461    key: "_destroy",
23462    value: function _destroy() {
23463      this.$element.off('.zf.trigger').hide();
23464      this.$anchors.off('.zf.dropdown');
23465      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('click.zf.dropdown tap.zf.dropdown');
23466    }
23467  }]);
23468
23469  return Dropdown;
23470}(_foundation_positionable__WEBPACK_IMPORTED_MODULE_3__["Positionable"]);
23471
23472Dropdown.defaults = {
23473  /**
23474   * Class that designates bounding container of Dropdown (default: window)
23475   * @option
23476   * @type {?string}
23477   * @default null
23478   */
23479  parentClass: null,
23480
23481  /**
23482   * Amount of time to delay opening a submenu on hover event.
23483   * @option
23484   * @type {number}
23485   * @default 250
23486   */
23487  hoverDelay: 250,
23488
23489  /**
23490   * Allow submenus to open on hover events
23491   * @option
23492   * @type {boolean}
23493   * @default false
23494   */
23495  hover: false,
23496
23497  /**
23498   * Don't close dropdown when hovering over dropdown pane
23499   * @option
23500   * @type {boolean}
23501   * @default false
23502   */
23503  hoverPane: false,
23504
23505  /**
23506   * Number of pixels between the dropdown pane and the triggering element on open.
23507   * @option
23508   * @type {number}
23509   * @default 0
23510   */
23511  vOffset: 0,
23512
23513  /**
23514   * Number of pixels between the dropdown pane and the triggering element on open.
23515   * @option
23516   * @type {number}
23517   * @default 0
23518   */
23519  hOffset: 0,
23520
23521  /**
23522   * Position of dropdown. Can be left, right, bottom, top, or auto.
23523   * @option
23524   * @type {string}
23525   * @default 'auto'
23526   */
23527  position: 'auto',
23528
23529  /**
23530   * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.
23531   * @option
23532   * @type {string}
23533   * @default 'auto'
23534   */
23535  alignment: 'auto',
23536
23537  /**
23538   * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.
23539   * @option
23540   * @type {boolean}
23541   * @default false
23542   */
23543  allowOverlap: false,
23544
23545  /**
23546   * Allow overlap of only the bottom of the container. This is the most common
23547   * behavior for dropdowns, allowing the dropdown to extend the bottom of the
23548   * screen but not otherwise influence or break out of the container.
23549   * @option
23550   * @type {boolean}
23551   * @default true
23552   */
23553  allowBottomOverlap: true,
23554
23555  /**
23556   * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.
23557   * @option
23558   * @type {boolean}
23559   * @default false
23560   */
23561  trapFocus: false,
23562
23563  /**
23564   * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.
23565   * @option
23566   * @type {boolean}
23567   * @default false
23568   */
23569  autoFocus: false,
23570
23571  /**
23572   * Allows a click on the body to close the dropdown.
23573   * @option
23574   * @type {boolean}
23575   * @default false
23576   */
23577  closeOnClick: false,
23578
23579  /**
23580   * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.
23581   * @option
23582   * @type {boolean}
23583   * @default true
23584   */
23585  forceFollow: true
23586};
23587
23588
23589/***/ }),
23590
23591/***/ "./js/foundation.positionable.js":
23592/*!***************************************!*\
23593  !*** ./js/foundation.positionable.js ***!
23594  \***************************************/
23595/*! exports provided: Positionable */
23596/***/ (function(module, __webpack_exports__, __webpack_require__) {
23597
23598"use strict";
23599__webpack_require__.r(__webpack_exports__);
23600/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Positionable", function() { return Positionable; });
23601/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.util.box */ "./foundation.util.box");
23602/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__);
23603/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
23604/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__);
23605
23606
23607function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
23608
23609function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
23610
23611function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
23612
23613function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
23614
23615function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
23616
23617function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
23618
23619function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
23620
23621function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
23622
23623function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
23624
23625
23626
23627
23628var POSITIONS = ['left', 'right', 'top', 'bottom'];
23629var VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];
23630var HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];
23631var ALIGNMENTS = {
23632  'left': VERTICAL_ALIGNMENTS,
23633  'right': VERTICAL_ALIGNMENTS,
23634  'top': HORIZONTAL_ALIGNMENTS,
23635  'bottom': HORIZONTAL_ALIGNMENTS
23636};
23637
23638function nextItem(item, array) {
23639  var currentIdx = array.indexOf(item);
23640
23641  if (currentIdx === array.length - 1) {
23642    return array[0];
23643  } else {
23644    return array[currentIdx + 1];
23645  }
23646}
23647
23648var Positionable =
23649/*#__PURE__*/
23650function (_Plugin) {
23651  _inherits(Positionable, _Plugin);
23652
23653  function Positionable() {
23654    _classCallCheck(this, Positionable);
23655
23656    return _possibleConstructorReturn(this, _getPrototypeOf(Positionable).apply(this, arguments));
23657  }
23658
23659  _createClass(Positionable, [{
23660    key: "_init",
23661
23662    /**
23663     * Abstract class encapsulating the tether-like explicit positioning logic
23664     * including repositioning based on overlap.
23665     * Expects classes to define defaults for vOffset, hOffset, position,
23666     * alignment, allowOverlap, and allowBottomOverlap. They can do this by
23667     * extending the defaults, or (for now recommended due to the way docs are
23668     * generated) by explicitly declaring them.
23669     *
23670     **/
23671    value: function _init() {
23672      this.triedPositions = {};
23673      this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;
23674      this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;
23675      this.originalPosition = this.position;
23676      this.originalAlignment = this.alignment;
23677    }
23678  }, {
23679    key: "_getDefaultPosition",
23680    value: function _getDefaultPosition() {
23681      return 'bottom';
23682    }
23683  }, {
23684    key: "_getDefaultAlignment",
23685    value: function _getDefaultAlignment() {
23686      switch (this.position) {
23687        case 'bottom':
23688        case 'top':
23689          return Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["rtl"])() ? 'right' : 'left';
23690
23691        case 'left':
23692        case 'right':
23693          return 'bottom';
23694      }
23695    }
23696    /**
23697     * Adjusts the positionable possible positions by iterating through alignments
23698     * and positions.
23699     * @function
23700     * @private
23701     */
23702
23703  }, {
23704    key: "_reposition",
23705    value: function _reposition() {
23706      if (this._alignmentsExhausted(this.position)) {
23707        this.position = nextItem(this.position, POSITIONS);
23708        this.alignment = ALIGNMENTS[this.position][0];
23709      } else {
23710        this._realign();
23711      }
23712    }
23713    /**
23714     * Adjusts the dropdown pane possible positions by iterating through alignments
23715     * on the current position.
23716     * @function
23717     * @private
23718     */
23719
23720  }, {
23721    key: "_realign",
23722    value: function _realign() {
23723      this._addTriedPosition(this.position, this.alignment);
23724
23725      this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position]);
23726    }
23727  }, {
23728    key: "_addTriedPosition",
23729    value: function _addTriedPosition(position, alignment) {
23730      this.triedPositions[position] = this.triedPositions[position] || [];
23731      this.triedPositions[position].push(alignment);
23732    }
23733  }, {
23734    key: "_positionsExhausted",
23735    value: function _positionsExhausted() {
23736      var isExhausted = true;
23737
23738      for (var i = 0; i < POSITIONS.length; i++) {
23739        isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);
23740      }
23741
23742      return isExhausted;
23743    }
23744  }, {
23745    key: "_alignmentsExhausted",
23746    value: function _alignmentsExhausted(position) {
23747      return this.triedPositions[position] && this.triedPositions[position].length == ALIGNMENTS[position].length;
23748    } // When we're trying to center, we don't want to apply offset that's going to
23749    // take us just off center, so wrap around to return 0 for the appropriate
23750    // offset in those alignments.  TODO: Figure out if we want to make this
23751    // configurable behavior... it feels more intuitive, especially for tooltips, but
23752    // it's possible someone might actually want to start from center and then nudge
23753    // slightly off.
23754
23755  }, {
23756    key: "_getVOffset",
23757    value: function _getVOffset() {
23758      return this.options.vOffset;
23759    }
23760  }, {
23761    key: "_getHOffset",
23762    value: function _getHOffset() {
23763      return this.options.hOffset;
23764    }
23765  }, {
23766    key: "_setPosition",
23767    value: function _setPosition($anchor, $element, $parent) {
23768      if ($anchor.attr('aria-expanded') === 'false') {
23769        return false;
23770      }
23771
23772      if (!this.options.allowOverlap) {
23773        // restore original position & alignment before checking overlap
23774        this.position = this.originalPosition;
23775        this.alignment = this.originalAlignment;
23776      }
23777
23778      $element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));
23779
23780      if (!this.options.allowOverlap) {
23781        var minOverlap = 100000000; // default coordinates to how we start, in case we can't figure out better
23782
23783        var minCoordinates = {
23784          position: this.position,
23785          alignment: this.alignment
23786        };
23787
23788        while (!this._positionsExhausted()) {
23789          var overlap = _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);
23790
23791          if (overlap === 0) {
23792            return;
23793          }
23794
23795          if (overlap < minOverlap) {
23796            minOverlap = overlap;
23797            minCoordinates = {
23798              position: this.position,
23799              alignment: this.alignment
23800            };
23801          }
23802
23803          this._reposition();
23804
23805          $element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));
23806        } // If we get through the entire loop, there was no non-overlapping
23807        // position available. Pick the version with least overlap.
23808
23809
23810        this.position = minCoordinates.position;
23811        this.alignment = minCoordinates.alignment;
23812        $element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));
23813      }
23814    }
23815  }]);
23816
23817  return Positionable;
23818}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
23819
23820Positionable.defaults = {
23821  /**
23822   * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.
23823   * @option
23824   * @type {string}
23825   * @default 'auto'
23826   */
23827  position: 'auto',
23828
23829  /**
23830   * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.
23831   * @option
23832   * @type {string}
23833   * @default 'auto'
23834   */
23835  alignment: 'auto',
23836
23837  /**
23838   * Allow overlap of container/window. If false, dropdown positionable first
23839   * try to position as defined by data-position and data-alignment, but
23840   * reposition if it would cause an overflow.
23841   * @option
23842   * @type {boolean}
23843   * @default false
23844   */
23845  allowOverlap: false,
23846
23847  /**
23848   * Allow overlap of only the bottom of the container. This is the most common
23849   * behavior for dropdowns, allowing the dropdown to extend the bottom of the
23850   * screen but not otherwise influence or break out of the container.
23851   * @option
23852   * @type {boolean}
23853   * @default true
23854   */
23855  allowBottomOverlap: true,
23856
23857  /**
23858   * Number of pixels the positionable should be separated vertically from anchor
23859   * @option
23860   * @type {number}
23861   * @default 0
23862   */
23863  vOffset: 0,
23864
23865  /**
23866   * Number of pixels the positionable should be separated horizontally from anchor
23867   * @option
23868   * @type {number}
23869   * @default 0
23870   */
23871  hOffset: 0
23872};
23873
23874
23875/***/ }),
23876
vendor: 12,981 bytes, lines 23877-24191
23877/***/ "./js/foundation.util.triggers.js":
23878/*!****************************************!*\
23879  !*** ./js/foundation.util.triggers.js ***!
23880  \****************************************/
23881/*! exports provided: Triggers */
23882/***/ (function(module, __webpack_exports__, __webpack_require__) {
23883
23884"use strict";
23885__webpack_require__.r(__webpack_exports__);
23886/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; });
23887/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
23888/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
23889/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
23890/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
23891/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
23892/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);
23893
23894
23895function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
23896
23897
23898
23899
23900
23901var MutationObserver = function () {
23902  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
23903
23904  for (var i = 0; i < prefixes.length; i++) {
23905    if ("".concat(prefixes[i], "MutationObserver") in window) {
23906      return window["".concat(prefixes[i], "MutationObserver")];
23907    }
23908  }
23909
23910  return false;
23911}();
23912
23913var triggers = function triggers(el, type) {
23914  el.data(type).split(' ').forEach(function (id) {
23915    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]);
23916  });
23917};
23918
23919var Triggers = {
23920  Listeners: {
23921    Basic: {},
23922    Global: {}
23923  },
23924  Initializers: {}
23925};
23926Triggers.Listeners.Basic = {
23927  openListener: function openListener() {
23928    triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open');
23929  },
23930  closeListener: function closeListener() {
23931    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close');
23932
23933    if (id) {
23934      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close');
23935    } else {
23936      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger');
23937    }
23938  },
23939  toggleListener: function toggleListener() {
23940    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
23941
23942    if (id) {
23943      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
23944    } else {
23945      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger');
23946    }
23947  },
23948  closeableListener: function closeableListener(e) {
23949    var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833
23950
23951    e.stopPropagation();
23952
23953    if (animation !== '') {
23954      _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () {
23955        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf');
23956      });
23957    } else {
23958      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf');
23959    }
23960  },
23961  toggleFocusListener: function toggleFocusListener() {
23962    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus');
23963    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]);
23964  }
23965}; // Elements with [data-open] will reveal a plugin that supports it when clicked.
23966
23967Triggers.Initializers.addOpenListener = function ($elem) {
23968  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
23969  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
23970}; // Elements with [data-close] will close a plugin that supports it when clicked.
23971// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
23972
23973
23974Triggers.Initializers.addCloseListener = function ($elem) {
23975  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
23976  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
23977}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
23978
23979
23980Triggers.Initializers.addToggleListener = function ($elem) {
23981  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
23982  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
23983}; // Elements with [data-closable] will respond to close.zf.trigger events.
23984
23985
23986Triggers.Initializers.addCloseableListener = function ($elem) {
23987  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
23988  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
23989}; // Elements with [data-toggle-focus] will respond to coming in and out of focus
23990
23991
23992Triggers.Initializers.addToggleFocusListener = function ($elem) {
23993  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
23994  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
23995}; // More Global/complex listeners and triggers
23996
23997
23998Triggers.Listeners.Global = {
23999  resizeListener: function resizeListener($nodes) {
24000    if (!MutationObserver) {
24001      //fallback for IE 9
24002      $nodes.each(function () {
24003        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger');
24004      });
24005    } //trigger all listening elements and signal a resize event
24006
24007
24008    $nodes.attr('data-events', "resize");
24009  },
24010  scrollListener: function scrollListener($nodes) {
24011    if (!MutationObserver) {
24012      //fallback for IE 9
24013      $nodes.each(function () {
24014        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger');
24015      });
24016    } //trigger all listening elements and signal a scroll event
24017
24018
24019    $nodes.attr('data-events', "scroll");
24020  },
24021  closeMeListener: function closeMeListener(e, pluginId) {
24022    var plugin = e.namespace.split('.')[0];
24023    var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]"));
24024    plugins.each(function () {
24025      var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
24026
24027      _this.triggerHandler('close.zf.trigger', [_this]);
24028    });
24029  } // Global, parses whole document.
24030
24031};
24032
24033Triggers.Initializers.addClosemeListener = function (pluginName) {
24034  var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'),
24035      plugNames = ['dropdown', 'tooltip', 'reveal'];
24036
24037  if (pluginName) {
24038    if (typeof pluginName === 'string') {
24039      plugNames.push(pluginName);
24040    } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') {
24041      plugNames = plugNames.concat(pluginName);
24042    } else {
24043      console.error('Plugin names must be strings');
24044    }
24045  }
24046
24047  if (yetiBoxes.length) {
24048    var listeners = plugNames.map(function (name) {
24049      return "closeme.zf.".concat(name);
24050    }).join(' ');
24051    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
24052  }
24053};
24054
24055function debounceGlobalListener(debounce, trigger, listener) {
24056  var timer,
24057      args = Array.prototype.slice.call(arguments, 3);
24058  jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) {
24059    if (timer) {
24060      clearTimeout(timer);
24061    }
24062
24063    timer = setTimeout(function () {
24064      listener.apply(null, args);
24065    }, debounce || 10); //default time to emit scroll event
24066  });
24067}
24068
24069Triggers.Initializers.addResizeListener = function (debounce) {
24070  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]');
24071
24072  if ($nodes.length) {
24073    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
24074  }
24075};
24076
24077Triggers.Initializers.addScrollListener = function (debounce) {
24078  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]');
24079
24080  if ($nodes.length) {
24081    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
24082  }
24083};
24084
24085Triggers.Initializers.addMutationEventsListener = function ($elem) {
24086  if (!MutationObserver) {
24087    return false;
24088  }
24089
24090  var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback
24091
24092  var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
24093    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type
24094
24095    switch (mutationRecordsList[0].type) {
24096      case "attributes":
24097        if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
24098          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
24099        }
24100
24101        if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
24102          $target.triggerHandler('resizeme.zf.trigger', [$target]);
24103        }
24104
24105        if (mutationRecordsList[0].attributeName === "style") {
24106          $target.closest("[data-mutate]").attr("data-events", "mutate");
24107          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
24108        }
24109
24110        break;
24111
24112      case "childList":
24113        $target.closest("[data-mutate]").attr("data-events", "mutate");
24114        $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
24115        break;
24116
24117      default:
24118        return false;
24119      //nothing
24120    }
24121  };
24122
24123  if ($nodes.length) {
24124    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
24125    for (var i = 0; i <= $nodes.length - 1; i++) {
24126      var elementObserver = new MutationObserver(listeningElementsMutation);
24127      elementObserver.observe($nodes[i], {
24128        attributes: true,
24129        childList: true,
24130        characterData: false,
24131        subtree: true,
24132        attributeFilter: ["data-events", "style"]
24133      });
24134    }
24135  }
24136};
24137
24138Triggers.Initializers.addSimpleListeners = function () {
24139  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
24140  Triggers.Initializers.addOpenListener($document);
24141  Triggers.Initializers.addCloseListener($document);
24142  Triggers.Initializers.addToggleListener($document);
24143  Triggers.Initializers.addCloseableListener($document);
24144  Triggers.Initializers.addToggleFocusListener($document);
24145};
24146
24147Triggers.Initializers.addGlobalListeners = function () {
24148  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
24149  Triggers.Initializers.addMutationEventsListener($document);
24150  Triggers.Initializers.addResizeListener();
24151  Triggers.Initializers.addScrollListener();
24152  Triggers.Initializers.addClosemeListener();
24153};
24154
24155Triggers.init = function ($, Foundation) {
24156  Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () {
24157    if ($.triggersInitialized !== true) {
24158      Triggers.Initializers.addSimpleListeners();
24159      Triggers.Initializers.addGlobalListeners();
24160      $.triggersInitialized = true;
24161    }
24162  });
24163
24164  if (Foundation) {
24165    Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now.
24166
24167    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
24168  }
24169};
24170
24171
24172
24173/***/ }),
24174
24175/***/ 4:
24176/*!*********************************************************!*\
24177  !*** multi ./js/entries/plugins/foundation.dropdown.js ***!
24178  \*********************************************************/
24179/*! no static exports found */
24180/***/ (function(module, exports, __webpack_require__) {
24181
24182module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.dropdown.js */"./js/entries/plugins/foundation.dropdown.js");
24183
24184
24185/***/ }),
24186
24187/***/ "jquery":
24188/*!********************************************************************************************!*\
24189  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
24190  \********************************************************************************************/
24191/*! no static exports found */
vendor: 4,586 bytes, lines 24192-24278
24192/***/ (function(module, exports) {
24193
24194module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
24195
24196/***/ })
24197
24198/******/ });
24199});
24200//# sourceMappingURL=foundation.dropdown.js.map
24201(function webpackUniversalModuleDefinition(root, factory) {
24202	if(typeof exports === 'object' && typeof module === 'object')
24203		module.exports = factory(require("./foundation.core"), require("./foundation.util.box"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("./foundation.util.touch"), require("jquery"));
24204	else if(typeof define === 'function' && define.amd)
24205		define(["./foundation.core", "./foundation.util.box", "./foundation.util.keyboard", "./foundation.util.nest", "./foundation.util.touch", "jquery"], factory);
24206	else if(typeof exports === 'object')
24207		exports["foundation.dropdownMenu"] = factory(require("./foundation.core"), require("./foundation.util.box"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("./foundation.util.touch"), require("jquery"));
24208	else
24209		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.dropdownMenu"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.box"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.nest"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.touch"], root["jQuery"]);
24210})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_box__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__, __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
24211return /******/ (function(modules) { // webpackBootstrap
24212/******/ 	// The module cache
24213/******/ 	var installedModules = {};
24214/******/
24215/******/ 	// The require function
24216/******/ 	function __webpack_require__(moduleId) {
24217/******/
24218/******/ 		// Check if module is in cache
24219/******/ 		if(installedModules[moduleId]) {
24220/******/ 			return installedModules[moduleId].exports;
24221/******/ 		}
24222/******/ 		// Create a new module (and put it into the cache)
24223/******/ 		var module = installedModules[moduleId] = {
24224/******/ 			i: moduleId,
24225/******/ 			l: false,
24226/******/ 			exports: {}
24227/******/ 		};
24228/******/
24229/******/ 		// Execute the module function
24230/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
24231/******/
24232/******/ 		// Flag the module as loaded
24233/******/ 		module.l = true;
24234/******/
24235/******/ 		// Return the exports of the module
24236/******/ 		return module.exports;
24237/******/ 	}
24238/******/
24239/******/
24240/******/ 	// expose the modules object (__webpack_modules__)
24241/******/ 	__webpack_require__.m = modules;
24242/******/
24243/******/ 	// expose the module cache
24244/******/ 	__webpack_require__.c = installedModules;
24245/******/
24246/******/ 	// define getter function for harmony exports
24247/******/ 	__webpack_require__.d = function(exports, name, getter) {
24248/******/ 		if(!__webpack_require__.o(exports, name)) {
24249/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
24250/******/ 		}
24251/******/ 	};
24252/******/
24253/******/ 	// define __esModule on exports
24254/******/ 	__webpack_require__.r = function(exports) {
24255/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
24256/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
24257/******/ 		}
24258/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
24259/******/ 	};
24260/******/
24261/******/ 	// create a fake namespace object
24262/******/ 	// mode & 1: value is a module id, require it
24263/******/ 	// mode & 2: merge all properties of value into the ns
24264/******/ 	// mode & 4: return value when already ns object
24265/******/ 	// mode & 8|1: behave like require
24266/******/ 	__webpack_require__.t = function(value, mode) {
24267/******/ 		if(mode & 1) value = __webpack_require__(value);
24268/******/ 		if(mode & 8) return value;
24269/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
24270/******/ 		var ns = Object.create(null);
24271/******/ 		__webpack_require__.r(ns);
24272/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
24273/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
24274/******/ 		return ns;
24275/******/ 	};
24276/******/
24277/******/ 	// getDefaultExport function for compatibility with non-harmony modules
24278/******/ 	__webpack_require__.n = function(module) {
24279/******/ 		var getter = module && module.__esModule ?
24280/******/ 			function getDefault() { return module['default']; } :
24281/******/ 			function getModuleExports() { return module; };
24282/******/ 		__webpack_require__.d(getter, 'a', getter);
24283/******/ 		return getter;
24284/******/ 	};
24285/******/
24286/******/ 	// Object.prototype.hasOwnProperty.call
24287/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
24288/******/
24289/******/ 	// __webpack_public_path__
24290/******/ 	__webpack_require__.p = "";
24291/******/
24292/******/
24293/******/ 	// Load entry module and return exports
24294/******/ 	return __webpack_require__(__webpack_require__.s = 5);
24295/******/ })
24296/************************************************************************/
24297/******/ ({
24298
24299/***/ "./foundation.core":
24300/*!****************************************************************************************************************************************************************!*\
24301  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
24302  \****************************************************************************************************************************************************************/
24303/*! no static exports found */
24304/***/ (function(module, exports) {
24305
24306module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
24307
24308/***/ }),
24309
24310/***/ "./foundation.util.box":
24311/*!********************************************************************************************************************************************************************************!*\
24312  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.box"],"amd":"./foundation.util.box","commonjs":"./foundation.util.box","commonjs2":"./foundation.util.box"} ***!
24313  \********************************************************************************************************************************************************************************/
24314/*! no static exports found */
24315/***/ (function(module, exports) {
24316
24317module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_box__;
24318
24319/***/ }),
24320
24321/***/ "./foundation.util.keyboard":
24322/*!****************************************************************************************************************************************************************************************************!*\
24323  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***!
24324  \****************************************************************************************************************************************************************************************************/
24325/*! no static exports found */
24326/***/ (function(module, exports) {
24327
24328module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;
24329
24330/***/ }),
24331
24332/***/ "./foundation.util.nest":
24333/*!************************************************************************************************************************************************************************************!*\
24334  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.nest"],"amd":"./foundation.util.nest","commonjs":"./foundation.util.nest","commonjs2":"./foundation.util.nest"} ***!
24335  \************************************************************************************************************************************************************************************/
24336/*! no static exports found */
24337/***/ (function(module, exports) {
24338
24339module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__;
24340
24341/***/ }),
24342
24343/***/ "./foundation.util.touch":
24344/*!****************************************************************************************************************************************************************************************!*\
24345  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.touch"],"amd":"./foundation.util.touch","commonjs":"./foundation.util.touch","commonjs2":"./foundation.util.touch"} ***!
24346  \****************************************************************************************************************************************************************************************/
24347/*! no static exports found */
24348/***/ (function(module, exports) {
24349
24350module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__;
24351
24352/***/ }),
24353
24354/***/ "./js/entries/plugins/foundation.dropdownMenu.js":
24355/*!*******************************************************!*\
24356  !*** ./js/entries/plugins/foundation.dropdownMenu.js ***!
24357  \*******************************************************/
24358/*! exports provided: Foundation, DropdownMenu */
24359/***/ (function(module, __webpack_exports__, __webpack_require__) {
24360
24361"use strict";
24362__webpack_require__.r(__webpack_exports__);
24363/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
24364/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
24365/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
24366
24367/* harmony import */ var _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.dropdownMenu */ "./js/foundation.dropdownMenu.js");
24368/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DropdownMenu", function() { return _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_1__["DropdownMenu"]; });
24369
24370
24371
24372_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_1__["DropdownMenu"], 'DropdownMenu');
24373
24374
24375/***/ }),
24376
vendor: 4,245 bytes, lines 24377-24415
24377/***/ "./js/foundation.dropdownMenu.js":
24378/*!***************************************!*\
24379  !*** ./js/foundation.dropdownMenu.js ***!
24380  \***************************************/
24381/*! exports provided: DropdownMenu */
24382/***/ (function(module, __webpack_exports__, __webpack_require__) {
24383
24384"use strict";
24385__webpack_require__.r(__webpack_exports__);
24386/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DropdownMenu", function() { return DropdownMenu; });
24387/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
24388/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
24389/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
24390/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__);
24391/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard");
24392/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__);
24393/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.nest */ "./foundation.util.nest");
24394/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__);
24395/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.box */ "./foundation.util.box");
24396/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_box__WEBPACK_IMPORTED_MODULE_4__);
24397/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.touch */ "./foundation.util.touch");
24398/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__);
24399
24400
24401function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
24402
24403function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
24404
24405function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
24406
24407function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
24408
24409function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
24410
24411function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
24412
24413function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
24414
24415function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
24415onstructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
24416
24417function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
24418
24419
24420
24421
24422
24423
24424
24425
24426/**
24427 * DropdownMenu module.
24428 * @module foundation.dropdownMenu
24429 * @requires foundation.util.keyboard
24430 * @requires foundation.util.box
24431 * @requires foundation.util.nest
24432 * @requires foundation.util.touch
24433 */
24434
24435var DropdownMenu =
24436/*#__PURE__*/
24437function (_Plugin) {
24438  _inherits(DropdownMenu, _Plugin);
24439
24440  function DropdownMenu() {
24441    _classCallCheck(this, DropdownMenu);
24442
24443    return _possibleConstructorReturn(this, _getPrototypeOf(DropdownMenu).apply(this, arguments));
24444  }
24445
24446  _createClass(DropdownMenu, [{
24447    key: "_setup",
24448
24449    /**
24450     * Creates a new instance of DropdownMenu.
24451     * @class
24452     * @name DropdownMenu
24453     * @fires DropdownMenu#init
24454     * @param {jQuery} element - jQuery object to make into a dropdown menu.
24455     * @param {Object} options - Overrides to the default plugin settings.
24456     */
24457    value: function _setup(element, options) {
24458      this.$element = element;
24459      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, DropdownMenu.defaults, this.$element.data(), options);
24460      this.className = 'DropdownMenu'; // ie9 back compat
24461
24462      _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); // Touch init is idempotent, we just need to make sure it's initialied.
24463
24464      this._init();
24465
24466      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('DropdownMenu', {
24467        'ENTER': 'open',
24468        'SPACE': 'open',
24469        'ARROW_RIGHT': 'next',
24470        'ARROW_UP': 'up',
24471        'ARROW_DOWN': 'down',
24472        'ARROW_LEFT': 'previous',
24473        'ESCAPE': 'close'
24474      });
24475    }
24476    /**
24477     * Initializes the plugin, and calls _prepareMenu
24478     * @private
24479     * @function
24480     */
24481
24482  }, {
24483    key: "_init",
24484    value: function _init() {
24485      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__["Nest"].Feather(this.$element, 'dropdown');
24486      var subs = this.$element.find('li.is-dropdown-submenu-parent');
24487      this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');
24488      this.$menuItems = this.$element.find('li[role="none"]');
24489      this.$tabs = this.$element.children('li[role="none"]');
24490      this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);
24491
24492      if (this.options.alignment === 'auto') {
24493        if (this.$element.hasClass(this.options.rightClass) || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["rtl"])() || this.$element.parents('.top-bar-right').is('*')) {
24494          this.options.alignment = 'right';
24495          subs.addClass('opens-left');
24496        } else {
24497          this.options.alignment = 'left';
24498          subs.addClass('opens-right');
24499        }
24500      } else {
24501        if (this.options.alignment === 'right') {
24502          subs.addClass('opens-left');
24503        } else {
24504          subs.addClass('opens-right');
24505        }
24506      }
24507
24508      this.changed = false;
24509
24510      this._events();
24511    }
24512  }, {
24513    key: "_isVertical",
24514    value: function _isVertical() {
24515      return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';
24516    }
24517  }, {
24518    key: "_isRtl",
24519    value: function _isRtl() {
24520      return this.$element.hasClass('align-right') || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["rtl"])() && !this.$element.hasClass('align-left');
24521    }
24522    /**
24523     * Adds event listeners to elements within the menu
24524     * @private
24525     * @function
24526     */
24527
24528  }, {
24529    key: "_events",
24530    value: function _events() {
24531      var _this = this,
24532          hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined',
24533          parClass = 'is-dropdown-submenu-parent'; // used for onClick and in the keyboard handlers
24534
24535
24536      var handleClickFn = function handleClickFn(e) {
24537        var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', ".".concat(parClass)),
24538            hasSub = $elem.hasClass(parClass),
24539            hasClicked = $elem.attr('data-is-click') === 'true',
24540            $sub = $elem.children('.is-dropdown-submenu');
24541
24542        if (hasSub) {
24543          if (hasClicked) {
24544            if (!_this.options.closeOnClick || !_this.options.clickOpen && !hasTouch || _this.options.forceFollow && hasTouch) {
24545              return;
24546            }
24547
24548            e.stopImmediatePropagation();
24549            e.preventDefault();
24550
24551            _this._hide($elem);
24552          } else {
24553            e.stopImmediatePropagation();
24554            e.preventDefault();
24555
24556            _this._show($sub);
24557
24558            $elem.add($elem.parentsUntil(_this.$element, ".".concat(parClass))).attr('data-is-click', true);
24559          }
24560        }
24561      };
24562
24563      if (this.options.clickOpen || hasTouch) {
24564        this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClick
vendor: 12,099 bytes, lines 24564-24959
24564Fn);
24565      } // Handle Leaf element Clicks
24566
24567
24568      if (_this.options.closeOnClickInside) {
24569        this.$menuItems.on('click.zf.dropdownMenu', function (e) {
24570          var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
24571              hasSub = $elem.hasClass(parClass);
24572
24573          if (!hasSub) {
24574            _this._hide();
24575          }
24576        });
24577      }
24578
24579      if (!this.options.disableHover) {
24580        this.$menuItems.on('mouseenter.zf.dropdownMenu', function (e) {
24581          var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
24582              hasSub = $elem.hasClass(parClass);
24583
24584          if (hasSub) {
24585            clearTimeout($elem.data('_delay'));
24586            $elem.data('_delay', setTimeout(function () {
24587              _this._show($elem.children('.is-dropdown-submenu'));
24588            }, _this.options.hoverDelay));
24589          }
24590        }).on('mouseleave.zf.dropdownMenu', Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["ignoreMousedisappear"])(function (e) {
24591          var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
24592              hasSub = $elem.hasClass(parClass);
24593
24594          if (hasSub && _this.options.autoclose) {
24595            if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) {
24596              return false;
24597            }
24598
24599            clearTimeout($elem.data('_delay'));
24600            $elem.data('_delay', setTimeout(function () {
24601              _this._hide($elem);
24602            }, _this.options.closingTime));
24603          }
24604        }));
24605      }
24606
24607      this.$menuItems.on('keydown.zf.dropdownMenu', function (e) {
24608        var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', '[role="none"]'),
24609            isTab = _this.$tabs.index($element) > -1,
24610            $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),
24611            $prevElement,
24612            $nextElement;
24613        $elements.each(function (i) {
24614          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
24615            $prevElement = $elements.eq(i - 1);
24616            $nextElement = $elements.eq(i + 1);
24617            return;
24618          }
24619        });
24620
24621        var nextSibling = function nextSibling() {
24622          $nextElement.children('a:first').focus();
24623          e.preventDefault();
24624        },
24625            prevSibling = function prevSibling() {
24626          $prevElement.children('a:first').focus();
24627          e.preventDefault();
24628        },
24629            openSub = function openSub() {
24630          var $sub = $element.children('ul.is-dropdown-submenu');
24631
24632          if ($sub.length) {
24633            _this._show($sub);
24634
24635            $element.find('li > a:first').focus();
24636            e.preventDefault();
24637          } else {
24638            return;
24639          }
24640        },
24641            closeSub = function closeSub() {
24642          //if ($element.is(':first-child')) {
24643          var close = $element.parent('ul').parent('li');
24644          close.children('a:first').focus();
24645
24646          _this._hide(close);
24647
24648          e.preventDefault(); //}
24649        };
24650
24651        var functions = {
24652          open: openSub,
24653          close: function close() {
24654            _this._hide(_this.$element);
24655
24656            _this.$menuItems.eq(0).children('a').focus(); // focus to first element
24657
24658
24659            e.preventDefault();
24660          }
24661        };
24662
24663        if (isTab) {
24664          if (_this._isVertical()) {
24665            // vertical menu
24666            if (_this._isRtl()) {
24667              // right aligned
24668              jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
24669                down: nextSibling,
24670                up: prevSibling,
24671                next: closeSub,
24672                previous: openSub
24673              });
24674            } else {
24675              // left aligned
24676              jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
24677                down: nextSibling,
24678                up: prevSibling,
24679                next: openSub,
24680                previous: closeSub
24681              });
24682            }
24683          } else {
24684            // horizontal menu
24685            if (_this._isRtl()) {
24686              // right aligned
24687              jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
24688                next: prevSibling,
24689                previous: nextSibling,
24690                down: openSub,
24691                up: closeSub
24692              });
24693            } else {
24694              // left aligned
24695              jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
24696                next: nextSibling,
24697                previous: prevSibling,
24698                down: openSub,
24699                up: closeSub
24700              });
24701            }
24702          }
24703        } else {
24704          // not tabs -> one sub
24705          if (_this._isRtl()) {
24706            // right aligned
24707            jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
24708              next: closeSub,
24709              previous: openSub,
24710              down: nextSibling,
24711              up: prevSibling
24712            });
24713          } else {
24714            // left aligned
24715            jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, {
24716              next: openSub,
24717              previous: closeSub,
24718              down: nextSibling,
24719              up: prevSibling
24720            });
24721          }
24722        }
24723
24724        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'DropdownMenu', functions);
24725      });
24726    }
24727    /**
24728     * Adds an event handler to the body to close any dropdowns on a click.
24729     * @function
24730     * @private
24731     */
24732
24733  }, {
24734    key: "_addBodyHandler",
24735    value: function _addBodyHandler() {
24736      var _this2 = this;
24737
24738      var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body);
24739
24740      this._removeBodyHandler();
24741
24742      $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', function (e) {
24743        var isItself = !!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).closest(_this2.$element).length;
24744        if (isItself) return;
24745
24746        _this2._hide();
24747
24748        _this2._removeBodyHandler();
24749      });
24750    }
24751    /**
24752     * Remove the body event handler. See `_addBodyHandler`.
24753     * @function
24754     * @private
24755     */
24756
24757  }, {
24758    key: "_removeBodyHandler",
24759    value: function _removeBodyHandler() {
24760      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');
24761    }
24762    /**
24763     * Opens a dropdown pane, and checks for collisions first.
24764     * @param {jQuery} $sub - ul element that is a submenu to show
24765     * @function
24766     * @private
24767     * @fires DropdownMenu#show
24768     */
24769
24770  }, {
24771    key: "_show",
24772    value: function _show($sub) {
24773      var idx = this.$tabs.index(this.$tabs.filter(function (i, el) {
24774        return jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).find($sub).length > 0;
24775      }));
24776      var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');
24777
24778      this._hide($sibs, idx);
24779
24780      $sub.css('visibility', 'hidden').addClass('js-dropdown-active').parent('li.is-dropdown-submenu-parent').addClass('is-active');
24781      var clear = _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__["Box"].ImNotTouchingYou($sub, null, true);
24782
24783      if (!clear) {
24784        var oldClass = this.options.alignment === 'left' ? '-right' : '-left',
24785            $parentLi = $sub.parent('.is-dropdown-submenu-parent');
24786        $parentLi.removeClass("opens".concat(oldClass)).addClass("opens-".concat(this.options.alignment));
24787        clear = _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__["Box"].ImNotTouchingYou($sub, null, true);
24788
24789        if (!clear) {
24790          $parentLi.removeClass("opens-".concat(this.options.alignment)).addClass('opens-inner');
24791        }
24792
24793        this.changed = true;
24794      }
24795
24796      $sub.css('visibility', '');
24797
24798      if (this.options.closeOnClick) {
24799        this._addBodyHandler();
24800      }
24801      /**
24802       * Fires when the new dropdown pane is visible.
24803       * @event DropdownMenu#show
24804       */
24805
24806
24807      this.$element.trigger('show.zf.dropdownMenu', [$sub]);
24808    }
24809    /**
24810     * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.
24811     * @function
24812     * @param {jQuery} $elem - element with a submenu to hide
24813     * @param {Number} idx - index of the $tabs collection to hide
24814     * @fires DropdownMenu#hide
24815     * @private
24816     */
24817
24818  }, {
24819    key: "_hide",
24820    value: function _hide($elem, idx) {
24821      var $toClose;
24822
24823      if ($elem && $elem.length) {
24824        $toClose = $elem;
24825      } else if (typeof idx !== 'undefined') {
24826        $toClose = this.$tabs.not(function (i, el) {
24827          return i === idx;
24828        });
24829      } else {
24830        $toClose = this.$element;
24831      }
24832
24833      var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;
24834
24835      if (somethingToClose) {
24836        var $activeItem = $toClose.find('li.is-active');
24837        $activeItem.add($toClose).attr({
24838          'data-is-click': false
24839        }).removeClass('is-active');
24840        $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');
24841
24842        if (this.changed || $toClose.find('opens-inner').length) {
24843          var oldClass = this.options.alignment === 'left' ? 'right' : 'left';
24844          $toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(oldClass));
24845          this.changed = false;
24846        }
24847
24848        clearTimeout($activeItem.data('_delay'));
24849
24850        this._removeBodyHandler();
24851        /**
24852         * Fires when the open menus are closed.
24853         * @event DropdownMenu#hide
24854         */
24855
24856
24857        this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);
24858      }
24859    }
24860    /**
24861     * Destroys the plugin.
24862     * @function
24863     */
24864
24865  }, {
24866    key: "_destroy",
24867    value: function _destroy() {
24868      this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click').removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');
24869      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('.zf.dropdownMenu');
24870      _foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__["Nest"].Burn(this.$element, 'dropdown');
24871    }
24872  }]);
24873
24874  return DropdownMenu;
24875}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
24876/**
24877 * Default settings for plugin
24878 */
24879
24880
24881DropdownMenu.defaults = {
24882  /**
24883   * Disallows hover events from opening submenus
24884   * @option
24885   * @type {boolean}
24886   * @default false
24887   */
24888  disableHover: false,
24889
24890  /**
24891   * Allow a submenu to automatically close on a mouseleave event, if not clicked open.
24892   * @option
24893   * @type {boolean}
24894   * @default true
24895   */
24896  autoclose: true,
24897
24898  /**
24899   * Amount of time to delay opening a submenu on hover event.
24900   * @option
24901   * @type {number}
24902   * @default 50
24903   */
24904  hoverDelay: 50,
24905
24906  /**
24907   * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.
24908   * @option
24909   * @type {boolean}
24910   * @default false
24911   */
24912  clickOpen: false,
24913
24914  /**
24915   * Amount of time to delay closing a submenu on a mouseleave event.
24916   * @option
24917   * @type {number}
24918   * @default 500
24919   */
24920  closingTime: 500,
24921
24922  /**
24923   * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.
24924   * @option
24925   * @type {string}
24926   * @default 'auto'
24927   */
24928  alignment: 'auto',
24929
24930  /**
24931   * Allow clicks on the body to close any open submenus.
24932   * @option
24933   * @type {boolean}
24934   * @default true
24935   */
24936  closeOnClick: true,
24937
24938  /**
24939   * Allow clicks on leaf anchor links to close any open submenus.
24940   * @option
24941   * @type {boolean}
24942   * @default true
24943   */
24944  closeOnClickInside: true,
24945
24946  /**
24947   * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.
24948   * @option
24949   * @type {string}
24950   * @default 'vertical'
24951   */
24952  verticalClass: 'vertical',
24953
24954  /**
24955   * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.
24956   * @option
24957   * @type {string}
24958   * @default 'align-right'
24959   */
vendor: 4,780 bytes, lines 24960-25068
24960  rightClass: 'align-right',
24961
24962  /**
24963   * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.
24964   * @option
24965   * @type {boolean}
24966   * @default true
24967   */
24968  forceFollow: true
24969};
24970
24971
24972/***/ }),
24973
24974/***/ 5:
24975/*!*************************************************************!*\
24976  !*** multi ./js/entries/plugins/foundation.dropdownMenu.js ***!
24977  \*************************************************************/
24978/*! no static exports found */
24979/***/ (function(module, exports, __webpack_require__) {
24980
24981module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.dropdownMenu.js */"./js/entries/plugins/foundation.dropdownMenu.js");
24982
24983
24984/***/ }),
24985
24986/***/ "jquery":
24987/*!********************************************************************************************!*\
24988  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
24989  \********************************************************************************************/
24990/*! no static exports found */
24991/***/ (function(module, exports) {
24992
24993module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
24994
24995/***/ })
24996
24997/******/ });
24998});
24999//# sourceMappingURL=foundation.dropdownMenu.js.map
25000(function webpackUniversalModuleDefinition(root, factory) {
25001	if(typeof exports === 'object' && typeof module === 'object')
25002		module.exports = factory(require("./foundation.core"), require("./foundation.util.imageLoader"), require("./foundation.util.mediaQuery"), require("jquery"));
25003	else if(typeof define === 'function' && define.amd)
25004		define(["./foundation.core", "./foundation.util.imageLoader", "./foundation.util.mediaQuery", "jquery"], factory);
25005	else if(typeof exports === 'object')
25006		exports["foundation.equalizer"] = factory(require("./foundation.core"), require("./foundation.util.imageLoader"), require("./foundation.util.mediaQuery"), require("jquery"));
25007	else
25008		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.equalizer"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.imageLoader"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["jQuery"]);
25009})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
25010return /******/ (function(modules) { // webpackBootstrap
25011/******/ 	// The module cache
25012/******/ 	var installedModules = {};
25013/******/
25014/******/ 	// The require function
25015/******/ 	function __webpack_require__(moduleId) {
25016/******/
25017/******/ 		// Check if module is in cache
25018/******/ 		if(installedModules[moduleId]) {
25019/******/ 			return installedModules[moduleId].exports;
25020/******/ 		}
25021/******/ 		// Create a new module (and put it into the cache)
25022/******/ 		var module = installedModules[moduleId] = {
25023/******/ 			i: moduleId,
25024/******/ 			l: false,
25025/******/ 			exports: {}
25026/******/ 		};
25027/******/
25028/******/ 		// Execute the module function
25029/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
25030/******/
25031/******/ 		// Flag the module as loaded
25032/******/ 		module.l = true;
25033/******/
25034/******/ 		// Return the exports of the module
25035/******/ 		return module.exports;
25036/******/ 	}
25037/******/
25038/******/
25039/******/ 	// expose the modules object (__webpack_modules__)
25040/******/ 	__webpack_require__.m = modules;
25041/******/
25042/******/ 	// expose the module cache
25043/******/ 	__webpack_require__.c = installedModules;
25044/******/
25045/******/ 	// define getter function for harmony exports
25046/******/ 	__webpack_require__.d = function(exports, name, getter) {
25047/******/ 		if(!__webpack_require__.o(exports, name)) {
25048/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
25049/******/ 		}
25050/******/ 	};
25051/******/
25052/******/ 	// define __esModule on exports
25053/******/ 	__webpack_require__.r = function(exports) {
25054/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
25055/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
25056/******/ 		}
25057/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
25058/******/ 	};
25059/******/
25060/******/ 	// create a fake namespace object
25061/******/ 	// mode & 1: value is a module id, require it
25062/******/ 	// mode & 2: merge all properties of value into the ns
25063/******/ 	// mode & 4: return value when already ns object
25064/******/ 	// mode & 8|1: behave like require
25065/******/ 	__webpack_require__.t = function(value, mode) {
25066/******/ 		if(mode & 1) value = __webpack_require__(value);
25067/******/ 		if(mode & 8) return value;
25068/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 3,622 bytes, lines 25068-25130
25068dule) return value;
25069/******/ 		var ns = Object.create(null);
25070/******/ 		__webpack_require__.r(ns);
25071/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
25072/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
25073/******/ 		return ns;
25074/******/ 	};
25075/******/
25076/******/ 	// getDefaultExport function for compatibility with non-harmony modules
25077/******/ 	__webpack_require__.n = function(module) {
25078/******/ 		var getter = module && module.__esModule ?
25079/******/ 			function getDefault() { return module['default']; } :
25080/******/ 			function getModuleExports() { return module; };
25081/******/ 		__webpack_require__.d(getter, 'a', getter);
25082/******/ 		return getter;
25083/******/ 	};
25084/******/
25085/******/ 	// Object.prototype.hasOwnProperty.call
25086/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
25087/******/
25088/******/ 	// __webpack_public_path__
25089/******/ 	__webpack_require__.p = "";
25090/******/
25091/******/
25092/******/ 	// Load entry module and return exports
25093/******/ 	return __webpack_require__(__webpack_require__.s = 6);
25094/******/ })
25095/************************************************************************/
25096/******/ ({
25097
25098/***/ "./foundation.core":
25099/*!****************************************************************************************************************************************************************!*\
25100  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
25101  \****************************************************************************************************************************************************************/
25102/*! no static exports found */
25103/***/ (function(module, exports) {
25104
25105module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
25106
25107/***/ }),
25108
25109/***/ "./foundation.util.imageLoader":
25110/*!****************************************************************************************************************************************************************************************************************!*\
25111  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.imageLoader"],"amd":"./foundation.util.imageLoader","commonjs":"./foundation.util.imageLoader","commonjs2":"./foundation.util.imageLoader"} ***!
25112  \****************************************************************************************************************************************************************************************************************/
25113/*! no static exports found */
25114/***/ (function(module, exports) {
25115
25116module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__;
25117
25118/***/ }),
25119
25120/***/ "./foundation.util.mediaQuery":
25121/*!************************************************************************************************************************************************************************************************************!*\
25122  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***!
25123  \************************************************************************************************************************************************************************************************************/
25124/*! no static exports found */
25125/***/ (function(module, exports) {
25126
25127module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;
25128
25129/***/ }),
25130
25131/***/ "./js/entries/plugins/foundation.equalizer.js":
25132/*!****************************************************!*\
25133  !*** ./js/entries/plugins/foundation.equalizer.js ***!
25134  \****************************************************/
25135/*! exports provided: Foundation, Equalizer */
25136/***/ (function(module, __webpack_exports__, __webpack_require__) {
25137
25138"use strict";
25139__webpack_require__.r(__webpack_exports__);
25140/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
25141/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
25142/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
25143
25144/* harmony import */ var _foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.equalizer */ "./js/foundation.equalizer.js");
25145/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Equalizer", function() { return _foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__["Equalizer"]; });
25146
25147
25148
25149_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__["Equalizer"], 'Equalizer');
25150
25151
25152/***/ }),
25153
25154/***/ "./js/foundation.equalizer.js":
25155/*!************************************!*\
25156  !*** ./js/foundation.equalizer.js ***!
25157  \************************************/
25158/*! exports provided: Equalizer */
25159/***/ (function(module, __webpack_exports__, __webpack_require__) {
25160
25161"use strict";
25162__webpack_require__.r(__webpack_exports__);
25163/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Equalizer", function() { return Equalizer; });
25164/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
25165/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
25166/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery");
25167/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__);
25168/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.imageLoader */ "./foundation.util.imageLoader");
25169/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__);
25170/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
25171/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__);
25172
25173
25174function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
25175
25176function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
25177
25178function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
25179
25180function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
25181
25182function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
25183
25184function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
25185
25186function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
25187
25188function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
25189
25190function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
25191
25192
25193
25194
25195
25196
25197/**
25198 * Equalizer module.
25199 * @module foundation.equalizer
25200 * @requires foundation.util.mediaQuery
25201 * @requires foundation.util.imageLoader if equalizer contains images
25202 */
25203
25204var Equalizer =
25205/*#__PURE__*/
25206function (_Plugin) {
25207  _inherits(Equalizer, _Plugin);
25208
25209  function Equalizer() {
25210    _classCallCheck(this, Equalizer);
25211
25212    return _possibleConstructorReturn(this, _getPrototypeOf(Equalizer).apply(this, arguments));
25213  }
25214
25215  _createClass(Equalizer, [{
25216    key: "_setup",
25217
25218    /**
25219     * Creates a new instance of Equalizer.
25220     * @class
25221     * @name Equalizer
25222     * @fires Equalizer#init
25223     * @param {Object} element - jQuery object to add the trigger to.
25224     * @param {Object} options - Overrides to the default plugin settings.
25225     */
25226    value: function _setup(element, options) {
25227      this.$element = element;
25228      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Equalizer.defaults, this.$element.data(), options);
25229      this.className = 'Equalizer'; // ie9 back compat
25230
25231      this._init();
25232    }
25233    /**
25234     * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load.
25235     * @private
25236     */
25237
25238  }, {
25239    key: "_init",
25240    value: function _init() {
25241      var eqId = this.$element.attr('data-equalizer') || '';
25242      var $watched = this.$element.find("[data-equalizer-watch=\"".concat(eqId, "\"]"));
25243
25244      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();
25245
25246      this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]');
25247      this.$element.attr('data-resize', eqId || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'eq'));
25248      this.$element.attr('data-mutate', eqId || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'eq'));
25249      this.hasNested = this.$element.find('[data-equalizer]').length > 0;
25250      this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0;
25251      this.isOn = false;
vendor: 6,382 bytes, lines 25252-25473
25252      this._bindHandler = {
25253        onResizeMeBound: this._onResizeMe.bind(this),
25254        onPostEqualizedBound: this._onPostEqualized.bind(this)
25255      };
25256      var imgs = this.$element.find('img');
25257      var tooSmall;
25258
25259      if (this.options.equalizeOn) {
25260        tooSmall = this._checkMQ();
25261        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._checkMQ.bind(this));
25262      } else {
25263        this._events();
25264      }
25265
25266      if (typeof tooSmall !== 'undefined' && tooSmall === false || typeof tooSmall === 'undefined') {
25267        if (imgs.length) {
25268          Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__["onImagesLoaded"])(imgs, this._reflow.bind(this));
25269        } else {
25270          this._reflow();
25271        }
25272      }
25273    }
25274    /**
25275     * Removes event listeners if the breakpoint is too small.
25276     * @private
25277     */
25278
25279  }, {
25280    key: "_pauseEvents",
25281    value: function _pauseEvents() {
25282      this.isOn = false;
25283      this.$element.off({
25284        '.zf.equalizer': this._bindHandler.onPostEqualizedBound,
25285        'resizeme.zf.trigger': this._bindHandler.onResizeMeBound,
25286        'mutateme.zf.trigger': this._bindHandler.onResizeMeBound
25287      });
25288    }
25289    /**
25290     * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound
25291     * @private
25292     */
25293
25294  }, {
25295    key: "_onResizeMe",
25296    value: function _onResizeMe(e) {
25297      this._reflow();
25298    }
25299    /**
25300     * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound
25301     * @private
25302     */
25303
25304  }, {
25305    key: "_onPostEqualized",
25306    value: function _onPostEqualized(e) {
25307      if (e.target !== this.$element[0]) {
25308        this._reflow();
25309      }
25310    }
25311    /**
25312     * Initializes events for Equalizer.
25313     * @private
25314     */
25315
25316  }, {
25317    key: "_events",
25318    value: function _events() {
25319      var _this = this;
25320
25321      this._pauseEvents();
25322
25323      if (this.hasNested) {
25324        this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound);
25325      } else {
25326        this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound);
25327        this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound);
25328      }
25329
25330      this.isOn = true;
25331    }
25332    /**
25333     * Checks the current breakpoint to the minimum required size.
25334     * @private
25335     */
25336
25337  }, {
25338    key: "_checkMQ",
25339    value: function _checkMQ() {
25340      var tooSmall = !_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].is(this.options.equalizeOn);
25341
25342      if (tooSmall) {
25343        if (this.isOn) {
25344          this._pauseEvents();
25345
25346          this.$watched.css('height', 'auto');
25347        }
25348      } else {
25349        if (!this.isOn) {
25350          this._events();
25351        }
25352      }
25353
25354      return tooSmall;
25355    }
25356    /**
25357     * A noop version for the plugin
25358     * @private
25359     */
25360
25361  }, {
25362    key: "_killswitch",
25363    value: function _killswitch() {
25364      return;
25365    }
25366    /**
25367     * Calls necessary functions to update Equalizer upon DOM change
25368     * @private
25369     */
25370
25371  }, {
25372    key: "_reflow",
25373    value: function _reflow() {
25374      if (!this.options.equalizeOnStack) {
25375        if (this._isStacked()) {
25376          this.$watched.css('height', 'auto');
25377          return false;
25378        }
25379      }
25380
25381      if (this.options.equalizeByRow) {
25382        this.getHeightsByRow(this.applyHeightByRow.bind(this));
25383      } else {
25384        this.getHeights(this.applyHeight.bind(this));
25385      }
25386    }
25387    /**
25388     * Manually determines if the first 2 elements are *NOT* stacked.
25389     * @private
25390     */
25391
25392  }, {
25393    key: "_isStacked",
25394    value: function _isStacked() {
25395      if (!this.$watched[0] || !this.$watched[1]) {
25396        return true;
25397      }
25398
25399      return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top;
25400    }
25401    /**
25402     * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
25403     * @param {Function} cb - A non-optional callback to return the heights array to.
25404     * @returns {Array} heights - An array of heights of children within Equalizer container
25405     */
25406
25407  }, {
25408    key: "getHeights",
25409    value: function getHeights(cb) {
25410      var heights = [];
25411
25412      for (var i = 0, len = this.$watched.length; i < len; i++) {
25413        this.$watched[i].style.height = 'auto';
25414        heights.push(this.$watched[i].offsetHeight);
25415      }
25416
25417      cb(heights);
25418    }
25419    /**
25420     * Finds the outer heights of children contained within an Equalizer parent and returns them in an array
25421     * @param {Function} cb - A non-optional callback to return the heights array to.
25422     * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
25423     */
25424
25425  }, {
25426    key: "getHeightsByRow",
25427    value: function getHeightsByRow(cb) {
25428      var lastElTopOffset = this.$watched.length ? this.$watched.first().offset().top : 0,
25429          groups = [],
25430          group = 0; //group by Row
25431
25432      groups[group] = [];
25433
25434      for (var i = 0, len = this.$watched.length; i < len; i++) {
25435        this.$watched[i].style.height = 'auto'; //maybe could use this.$watched[i].offsetTop
25436
25437        var elOffsetTop = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$watched[i]).offset().top;
25438
25439        if (elOffsetTop != lastElTopOffset) {
25440          group++;
25441          groups[group] = [];
25442          lastElTopOffset = elOffsetTop;
25443        }
25444
25445        groups[group].push([this.$watched[i], this.$watched[i].offsetHeight]);
25446      }
25447
25448      for (var j = 0, ln = groups.length; j < ln; j++) {
25449        var heights = jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[j]).map(function () {
25450          return this[1];
25451        }).get();
25452        var max = Math.max.apply(null, heights);
25453        groups[j].push(max);
25454      }
25455
25456      cb(groups);
25457    }
25458    /**
25459     * Changes the CSS height property of each child in an Equalizer parent to match the tallest
25460     * @param {array} heights - An array of heights of children within Equalizer container
25461     * @fires Equalizer#preequalized
25462     * @fires Equalizer#postequalized
25463     */
25464
25465  }, {
25466    key: "applyHeight",
25467    value: function applyHeight(heights) {
25468      var max = Math.max.apply(null, heights);
25469      /**
25470       * Fires before the heights are applied
25471       * @event Equalizer#preequalized
25472       */
25473
vendor: 5,807 bytes, lines 25474-25645
25474      this.$element.trigger('preequalized.zf.equalizer');
25475      this.$watched.css('height', max);
25476      /**
25477       * Fires when the heights have been applied
25478       * @event Equalizer#postequalized
25479       */
25480
25481      this.$element.trigger('postequalized.zf.equalizer');
25482    }
25483    /**
25484     * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row
25485     * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child
25486     * @fires Equalizer#preequalized
25487     * @fires Equalizer#preequalizedrow
25488     * @fires Equalizer#postequalizedrow
25489     * @fires Equalizer#postequalized
25490     */
25491
25492  }, {
25493    key: "applyHeightByRow",
25494    value: function applyHeightByRow(groups) {
25495      /**
25496       * Fires before the heights are applied
25497       */
25498      this.$element.trigger('preequalized.zf.equalizer');
25499
25500      for (var i = 0, len = groups.length; i < len; i++) {
25501        var groupsILength = groups[i].length,
25502            max = groups[i][groupsILength - 1];
25503
25504        if (groupsILength <= 2) {
25505          jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[i][0][0]).css({
25506            'height': 'auto'
25507          });
25508          continue;
25509        }
25510        /**
25511          * Fires before the heights per row are applied
25512          * @event Equalizer#preequalizedrow
25513          */
25514
25515
25516        this.$element.trigger('preequalizedrow.zf.equalizer');
25517
25518        for (var j = 0, lenJ = groupsILength - 1; j < lenJ; j++) {
25519          jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[i][j][0]).css({
25520            'height': max
25521          });
25522        }
25523        /**
25524          * Fires when the heights per row have been applied
25525          * @event Equalizer#postequalizedrow
25526          */
25527
25528
25529        this.$element.trigger('postequalizedrow.zf.equalizer');
25530      }
25531      /**
25532       * Fires when the heights have been applied
25533       */
25534
25535
25536      this.$element.trigger('postequalized.zf.equalizer');
25537    }
25538    /**
25539     * Destroys an instance of Equalizer.
25540     * @function
25541     */
25542
25543  }, {
25544    key: "_destroy",
25545    value: function _destroy() {
25546      this._pauseEvents();
25547
25548      this.$watched.css('height', 'auto');
25549    }
25550  }]);
25551
25552  return Equalizer;
25553}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
25554/**
25555 * Default settings for plugin
25556 */
25557
25558
25559Equalizer.defaults = {
25560  /**
25561   * Enable height equalization when stacked on smaller screens.
25562   * @option
25563   * @type {boolean}
25564   * @default false
25565   */
25566  equalizeOnStack: false,
25567
25568  /**
25569   * Enable height equalization row by row.
25570   * @option
25571   * @type {boolean}
25572   * @default false
25573   */
25574  equalizeByRow: false,
25575
25576  /**
25577   * String representing the minimum breakpoint size the plugin should equalize heights on.
25578   * @option
25579   * @type {string}
25580   * @default ''
25581   */
25582  equalizeOn: ''
25583};
25584
25585
25586/***/ }),
25587
25588/***/ 6:
25589/*!**********************************************************!*\
25590  !*** multi ./js/entries/plugins/foundation.equalizer.js ***!
25591  \**********************************************************/
25592/*! no static exports found */
25593/***/ (function(module, exports, __webpack_require__) {
25594
25595module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.equalizer.js */"./js/entries/plugins/foundation.equalizer.js");
25596
25597
25598/***/ }),
25599
25600/***/ "jquery":
25601/*!********************************************************************************************!*\
25602  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
25603  \********************************************************************************************/
25604/*! no static exports found */
25605/***/ (function(module, exports) {
25606
25607module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
25608
25609/***/ })
25610
25611/******/ });
25612});
25613//# sourceMappingURL=foundation.equalizer.js.map
25614(function webpackUniversalModuleDefinition(root, factory) {
25615	if(typeof exports === 'object' && typeof module === 'object')
25616		module.exports = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery"));
25617	else if(typeof define === 'function' && define.amd)
25618		define(["./foundation.core", "./foundation.util.mediaQuery", "./foundation.util.motion", "jquery"], factory);
25619	else if(typeof exports === 'object')
25620		exports["foundation.interchange"] = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery"));
25621	else
25622		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.interchange"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]);
25623})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
25624return /******/ (function(modules) { // webpackBootstrap
25625/******/ 	// The module cache
25626/******/ 	var installedModules = {};
25627/******/
25628/******/ 	// The require function
25629/******/ 	function __webpack_require__(moduleId) {
25630/******/
25631/******/ 		// Check if module is in cache
25632/******/ 		if(installedModules[moduleId]) {
25633/******/ 			return installedModules[moduleId].exports;
25634/******/ 		}
25635/******/ 		// Create a new module (and put it into the cache)
25636/******/ 		var module = installedModules[moduleId] = {
25637/******/ 			i: moduleId,
25638/******/ 			l: false,
25639/******/ 			exports: {}
25640/******/ 		};
25641/******/
25642/******/ 		// Execute the module function
25643/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
25644/******/
25645/******/ 		// Flag the module as loaded
vendor: 4,186 bytes, lines 25646-25727
25646/******/ 		module.l = true;
25647/******/
25648/******/ 		// Return the exports of the module
25649/******/ 		return module.exports;
25650/******/ 	}
25651/******/
25652/******/
25653/******/ 	// expose the modules object (__webpack_modules__)
25654/******/ 	__webpack_require__.m = modules;
25655/******/
25656/******/ 	// expose the module cache
25657/******/ 	__webpack_require__.c = installedModules;
25658/******/
25659/******/ 	// define getter function for harmony exports
25660/******/ 	__webpack_require__.d = function(exports, name, getter) {
25661/******/ 		if(!__webpack_require__.o(exports, name)) {
25662/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
25663/******/ 		}
25664/******/ 	};
25665/******/
25666/******/ 	// define __esModule on exports
25667/******/ 	__webpack_require__.r = function(exports) {
25668/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
25669/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
25670/******/ 		}
25671/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
25672/******/ 	};
25673/******/
25674/******/ 	// create a fake namespace object
25675/******/ 	// mode & 1: value is a module id, require it
25676/******/ 	// mode & 2: merge all properties of value into the ns
25677/******/ 	// mode & 4: return value when already ns object
25678/******/ 	// mode & 8|1: behave like require
25679/******/ 	__webpack_require__.t = function(value, mode) {
25680/******/ 		if(mode & 1) value = __webpack_require__(value);
25681/******/ 		if(mode & 8) return value;
25682/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
25683/******/ 		var ns = Object.create(null);
25684/******/ 		__webpack_require__.r(ns);
25685/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
25686/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
25687/******/ 		return ns;
25688/******/ 	};
25689/******/
25690/******/ 	// getDefaultExport function for compatibility with non-harmony modules
25691/******/ 	__webpack_require__.n = function(module) {
25692/******/ 		var getter = module && module.__esModule ?
25693/******/ 			function getDefault() { return module['default']; } :
25694/******/ 			function getModuleExports() { return module; };
25695/******/ 		__webpack_require__.d(getter, 'a', getter);
25696/******/ 		return getter;
25697/******/ 	};
25698/******/
25699/******/ 	// Object.prototype.hasOwnProperty.call
25700/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
25701/******/
25702/******/ 	// __webpack_public_path__
25703/******/ 	__webpack_require__.p = "";
25704/******/
25705/******/
25706/******/ 	// Load entry module and return exports
25707/******/ 	return __webpack_require__(__webpack_require__.s = 7);
25708/******/ })
25709/************************************************************************/
25710/******/ ({
25711
25712/***/ "./foundation.core":
25713/*!****************************************************************************************************************************************************************!*\
25714  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
25715  \****************************************************************************************************************************************************************/
25716/*! no static exports found */
25717/***/ (function(module, exports) {
25718
25719module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
25720
25721/***/ }),
25722
25723/***/ "./foundation.util.mediaQuery":
25724/*!************************************************************************************************************************************************************************************************************!*\
25725  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***!
25726  \************************************************************************************************************************************************************************************************************/
25727/*! no static exports found */
25728/***/ (function(module, exports) {
25729
25730module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;
25731
25732/***/ }),
25733
25734/***/ "./foundation.util.motion":
25735/*!********************************************************************************************************************************************************************************************!*\
25736  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***!
25737  \********************************************************************************************************************************************************************************************/
25738/*! no static exports found */
25739/***/ (function(module, exports) {
25740
25741module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;
25742
25743/***/ }),
25744
25745/***/ "./js/entries/plugins/foundation.interchange.js":
25746/*!******************************************************!*\
25747  !*** ./js/entries/plugins/foundation.interchange.js ***!
25748  \******************************************************/
25749/*! exports provided: Foundation, Interchange */
25750/***/ (function(module, __webpack_exports__, __webpack_require__) {
25751
25752"use strict";
25753__webpack_require__.r(__webpack_exports__);
25754/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
25755/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
25756/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
25757
25758/* harmony import */ var _foundation_interchange__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.interchange */ "./js/foundation.interchange.js");
25759/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Interchange", function() { return _foundation_interchange__WEBPACK_IMPORTED_MODULE_1__["Interchange"]; });
25760
25761
25762
25763_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_interchange__WEBPACK_IMPORTED_MODULE_1__["Interchange"], 'Interchange');
25764
25765
25766/***/ }),
25767
25768/***/ "./js/foundation.interchange.js":
25769/*!**************************************!*\
25770  !*** ./js/foundation.interchange.js ***!
25771  \**************************************/
25772/*! exports provided: Interchange */
25773/***/ (function(module, __webpack_exports__, __webpack_require__) {
25774
25775"use strict";
25776__webpack_require__.r(__webpack_exports__);
25777/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Interchange", function() { return Interchange; });
25778/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
25779/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
25780/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery");
25781/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__);
25782/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
25783/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__);
25784/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
25785
25786
25787function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
25788
25789function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
25790
25791function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
25792
25793function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
25794
25795function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
25796
25797function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
25798
25799function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
25800
25801function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
25802
25803function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
25804
25805
25806
25807
25808
25809
25810/**
25811 * Interchange module.
25812 * @module foundation.interchange
25813 * @requires foundation.util.mediaQuery
25814 */
25815
25816var Interchange =
25817/*#__PURE__*/
25818function (_Plugin) {
25819  _inherits(Interchange, _Plugin);
25820
25821  function Interchange() {
25822    _classCallCheck(this, Interchange);
25823
25824    return _possibleConstructorReturn(this, _getPrototypeOf(Interchange).apply(this, arguments));
25825  }
25826
25827  _createClass(Interchange, [{
25828    key: "_setup",
25829
25830    /**
25831     * Creates a new instance of Interchange.
25832     * @class
25833     * @name Interchange
25834     * @fires Interchange#init
25835     * @param {Object} element - jQuery object to add the trigger to.
25836     * @param {Object} options - Overrides to the default plugin settings.
25837     */
25838    value: function _setup(element, options) {
25839      this.$element = element;
25840      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Interchange.defaults, this.$element.data(), options);
25841      this.rules = [];
25842      this.currentPath = '';
25843      this.className = 'Interchange'; // ie9 back compat
25844      // Triggers init is idempotent, just need to make sure it is initialized
25845
25846      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
25847
25848      this._init();
25849
25850      this._events();
25851    }
25852    /**
25853     * Initializes the Interchange plugin and calls functions to get interchange functioning on load.
25854     * @function
25855     * @private
25856     */
25857
25858  }, {
25859    key: "_init",
25860    value: function _init() {
25861      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();
25862
25863      var id = this.$element[0].id || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'interchange');
25864      this.$element.attr({
25865        'data-resize': id,
25866        'id': id
25867      });
25868
25869      this._parseOptions();
25870
25871      this._addBreakpoints();
25872
25873      this._generateRules();
25874
25875      this._reflow();
25876    }
25877    /**
25878     * Initializes events for Interchange.
25879     * @function
25880     * @private
25881     */
25882
25883  }, {
25884    key: "_events",
25885    value: function _events() {
25886      var _this = this;
25887
25888      this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function () {
25889        return _this._reflow();
25890      });
25891    }
25892    /**
25893     * Calls necessary functions to update Interchange upon DOM change
25894     * @function
25895     * @private
25896     */
25897
25898  }, {
25899    key: "_reflow",
25900    value: function _reflow() {
25901      var match; // Iterate through each rule, but only save the last match
25902
25903      for (var i in this.rules) {
25904        if (this.rules.hasOwnProperty(i)) {
25905          var rule = this.rules[i];
25906
25907          if (window.matchMedia(rule.query).matches) {
25908            match = rule;
25909          }
25910        }
25911      }
25912
25913      if (match) {
25914        this.replace(match.path);
25915      }
25916    }
25917    /**
25918     * Check options valifity and set defaults for:
25919     * - `data-interchange-type`: if set, enforce the type of replacement (auto, src, background or html)
25920     * @function
25921     * @private
25922     */
25923
25924  }, {
25925    key: "_parseOptions",
25926    value: function _parseOptions() {
25927      var types = ['auto', 'src', 'background', 'html'];
25928      if (typeof this.options.type === 'undefined') this.options.type = 'auto';else if (types.indexOf(this.options.type) === -1) {
25929        console.log("Warning: invalid value \"".concat(this.options.type, "\" for Interchange option \"type\""));
25930        this.options.type = 'auto';
25931      }
25932    }
25933    /**
25934     * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object.
25935     * @function
25936     * @private
25937     */
25938
25939  }, {
25940    key: "_addBreakpoints",
25941    value: function _addBreakpoints() {
25942      for (var i in _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries) {
25943        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries.hasOwnProperty(i)) {
25944          var query = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries[i];
25945          Interchange.SPECIAL_QUERIES[query.name] = query.value;
25946        }
25947      }
25948    }
25949    /**
25950     * Checks the Interchange element for the provided media query + content pairings
25951     * @function
25952     * @private
25953     * @param {Object} element - jQuery object that is an Interchange instance
25954     * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys
25955     */
25956
25957  }, {
25958    key: "_generateRules",
25959    value: function _generateRules(element) {
25960      var rulesList = [];
25961      var rules;
25962
25963      if (this.options.rules) {
25964        rules = this.options.rules;
25965      } else {
25966        rules = this.$element.data('interchange');
25967      }
25968
25969      rules = typeof rules === 'string' ? rules.match(/\[.*?, .*?\]/g) : rules;
25970
25971      for (var i in rules) {
25972        if (rules.hasOwnProperty(i)) {
25973          var rule = rules[i].slice(1, -1).split(', ');
25974          var path = rule.slice(0, -1).join('');
25975          var query = rule[rule.length - 1];
25976
25977          if (Interchange.SPECIAL_QUERIES[query]) {
25978            query = Interchange.SPECIAL_QUERIES[query];
25979          }
25980
25981          rulesList.push({
25982            path: path,
25983            query: query
25984          });
25985        }
25986      }
25987
25988      this.rules = rulesList;
25989    }
25990    /**
25991     * Update the `src` property of an image, or change the HTML of a container, to the specified path.
25992     * @function
25993     * @param {String} path - Path to the image or HTML partial.
25994     * @fires Interchange#replaced
25995     */
25996
25997  }, {
25998    key: "replace",
25999    value: function replace(path) {
26000      var _this2 = this;
26001
26002      if (this.currentPath === path) return;
26003      var trigger = 'replaced.zf.interchange';
26004      var type = this.options.type;
26005
26006      if (type === 'auto') {
26007        if (this.$element[0].nodeName === 'IMG') type = 'src';else if (path.match(/\.(gif|jpe?g|png|svg|tiff)([?#].*)?/i)) type = 'background';
vendor: 15,470 bytes, lines 26007-26400
26007else type = 'html';
26008      } // Replacing images
26009
26010
26011      if (type === 'src') {
26012        this.$element.attr('src', path).on('load', function () {
26013          _this2.currentPath = path;
26014        }).trigger(trigger);
26015      } // Replacing background images
26016      else if (type === 'background') {
26017          path = path.replace(/\(/g, '%28').replace(/\)/g, '%29');
26018          this.$element.css({
26019            'background-image': 'url(' + path + ')'
26020          }).trigger(trigger);
26021        } // Replacing HTML
26022        else if (type === 'html') {
26023            jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get(path, function (response) {
26024              _this2.$element.html(response).trigger(trigger);
26025
26026              jquery__WEBPACK_IMPORTED_MODULE_0___default()(response).foundation();
26027              _this2.currentPath = path;
26028            });
26029          }
26030      /**
26031       * Fires when content in an Interchange element is done being loaded.
26032       * @event Interchange#replaced
26033       */
26034      // this.$element.trigger('replaced.zf.interchange');
26035
26036    }
26037    /**
26038     * Destroys an instance of interchange.
26039     * @function
26040     */
26041
26042  }, {
26043    key: "_destroy",
26044    value: function _destroy() {
26045      this.$element.off('resizeme.zf.trigger');
26046    }
26047  }]);
26048
26049  return Interchange;
26050}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
26051/**
26052 * Default settings for plugin
26053 */
26054
26055
26056Interchange.defaults = {
26057  /**
26058   * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation.
26059   * @option
26060   * @type {?array}
26061   * @default null
26062   */
26063  rules: null,
26064
26065  /**
26066   * Type of the responsive ressource to replace. It can take the following options:
26067   * - `auto` (default): choose the type according to the element tag or the ressource extension,
26068   * - `src`: replace the `[src]` attribute, recommended for images `<img>`.
26069   * - `background`: replace the `background-image` CSS property.
26070   * - `html`: replace the element content.
26071   * @option
26072   * @type {string}
26073   * @default 'auto'
26074   */
26075  type: 'auto'
26076};
26077Interchange.SPECIAL_QUERIES = {
26078  'landscape': 'screen and (orientation: landscape)',
26079  'portrait': 'screen and (orientation: portrait)',
26080  'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)'
26081};
26082
26083
26084/***/ }),
26085
26086/***/ "./js/foundation.util.triggers.js":
26087/*!****************************************!*\
26088  !*** ./js/foundation.util.triggers.js ***!
26089  \****************************************/
26090/*! exports provided: Triggers */
26091/***/ (function(module, __webpack_exports__, __webpack_require__) {
26092
26093"use strict";
26094__webpack_require__.r(__webpack_exports__);
26095/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; });
26096/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
26097/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
26098/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
26099/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
26100/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
26101/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);
26102
26103
26104function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
26105
26106
26107
26108
26109
26110var MutationObserver = function () {
26111  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
26112
26113  for (var i = 0; i < prefixes.length; i++) {
26114    if ("".concat(prefixes[i], "MutationObserver") in window) {
26115      return window["".concat(prefixes[i], "MutationObserver")];
26116    }
26117  }
26118
26119  return false;
26120}();
26121
26122var triggers = function triggers(el, type) {
26123  el.data(type).split(' ').forEach(function (id) {
26124    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]);
26125  });
26126};
26127
26128var Triggers = {
26129  Listeners: {
26130    Basic: {},
26131    Global: {}
26132  },
26133  Initializers: {}
26134};
26135Triggers.Listeners.Basic = {
26136  openListener: function openListener() {
26137    triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open');
26138  },
26139  closeListener: function closeListener() {
26140    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close');
26141
26142    if (id) {
26143      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close');
26144    } else {
26145      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger');
26146    }
26147  },
26148  toggleListener: function toggleListener() {
26149    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
26150
26151    if (id) {
26152      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
26153    } else {
26154      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger');
26155    }
26156  },
26157  closeableListener: function closeableListener(e) {
26158    var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833
26159
26160    e.stopPropagation();
26161
26162    if (animation !== '') {
26163      _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () {
26164        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf');
26165      });
26166    } else {
26167      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf');
26168    }
26169  },
26170  toggleFocusListener: function toggleFocusListener() {
26171    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus');
26172    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]);
26173  }
26174}; // Elements with [data-open] will reveal a plugin that supports it when clicked.
26175
26176Triggers.Initializers.addOpenListener = function ($elem) {
26177  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
26178  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
26179}; // Elements with [data-close] will close a plugin that supports it when clicked.
26180// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
26181
26182
26183Triggers.Initializers.addCloseListener = function ($elem) {
26184  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
26185  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
26186}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
26187
26188
26189Triggers.Initializers.addToggleListener = function ($elem) {
26190  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
26191  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
26192}; // Elements with [data-closable] will respond to close.zf.trigger events.
26193
26194
26195Triggers.Initializers.addCloseableListener = function ($elem) {
26196  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
26197  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
26198}; // Elements with [data-toggle-focus] will respond to coming in and out of focus
26199
26200
26201Triggers.Initializers.addToggleFocusListener = function ($elem) {
26202  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
26203  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
26204}; // More Global/complex listeners and triggers
26205
26206
26207Triggers.Listeners.Global = {
26208  resizeListener: function resizeListener($nodes) {
26209    if (!MutationObserver) {
26210      //fallback for IE 9
26211      $nodes.each(function () {
26212        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger');
26213      });
26214    } //trigger all listening elements and signal a resize event
26215
26216
26217    $nodes.attr('data-events', "resize");
26218  },
26219  scrollListener: function scrollListener($nodes) {
26220    if (!MutationObserver) {
26221      //fallback for IE 9
26222      $nodes.each(function () {
26223        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger');
26224      });
26225    } //trigger all listening elements and signal a scroll event
26226
26227
26228    $nodes.attr('data-events', "scroll");
26229  },
26230  closeMeListener: function closeMeListener(e, pluginId) {
26231    var plugin = e.namespace.split('.')[0];
26232    var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]"));
26233    plugins.each(function () {
26234      var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
26235
26236      _this.triggerHandler('close.zf.trigger', [_this]);
26237    });
26238  } // Global, parses whole document.
26239
26240};
26241
26242Triggers.Initializers.addClosemeListener = function (pluginName) {
26243  var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'),
26244      plugNames = ['dropdown', 'tooltip', 'reveal'];
26245
26246  if (pluginName) {
26247    if (typeof pluginName === 'string') {
26248      plugNames.push(pluginName);
26249    } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') {
26250      plugNames = plugNames.concat(pluginName);
26251    } else {
26252      console.error('Plugin names must be strings');
26253    }
26254  }
26255
26256  if (yetiBoxes.length) {
26257    var listeners = plugNames.map(function (name) {
26258      return "closeme.zf.".concat(name);
26259    }).join(' ');
26260    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
26261  }
26262};
26263
26264function debounceGlobalListener(debounce, trigger, listener) {
26265  var timer,
26266      args = Array.prototype.slice.call(arguments, 3);
26267  jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) {
26268    if (timer) {
26269      clearTimeout(timer);
26270    }
26271
26272    timer = setTimeout(function () {
26273      listener.apply(null, args);
26274    }, debounce || 10); //default time to emit scroll event
26275  });
26276}
26277
26278Triggers.Initializers.addResizeListener = function (debounce) {
26279  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]');
26280
26281  if ($nodes.length) {
26282    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
26283  }
26284};
26285
26286Triggers.Initializers.addScrollListener = function (debounce) {
26287  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]');
26288
26289  if ($nodes.length) {
26290    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
26291  }
26292};
26293
26294Triggers.Initializers.addMutationEventsListener = function ($elem) {
26295  if (!MutationObserver) {
26296    return false;
26297  }
26298
26299  var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback
26300
26301  var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
26302    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type
26303
26304    switch (mutationRecordsList[0].type) {
26305      case "attributes":
26306        if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
26307          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
26308        }
26309
26310        if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
26311          $target.triggerHandler('resizeme.zf.trigger', [$target]);
26312        }
26313
26314        if (mutationRecordsList[0].attributeName === "style") {
26315          $target.closest("[data-mutate]").attr("data-events", "mutate");
26316          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
26317        }
26318
26319        break;
26320
26321      case "childList":
26322        $target.closest("[data-mutate]").attr("data-events", "mutate");
26323        $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
26324        break;
26325
26326      default:
26327        return false;
26328      //nothing
26329    }
26330  };
26331
26332  if ($nodes.length) {
26333    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
26334    for (var i = 0; i <= $nodes.length - 1; i++) {
26335      var elementObserver = new MutationObserver(listeningElementsMutation);
26336      elementObserver.observe($nodes[i], {
26337        attributes: true,
26338        childList: true,
26339        characterData: false,
26340        subtree: true,
26341        attributeFilter: ["data-events", "style"]
26342      });
26343    }
26344  }
26345};
26346
26347Triggers.Initializers.addSimpleListeners = function () {
26348  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
26349  Triggers.Initializers.addOpenListener($document);
26350  Triggers.Initializers.addCloseListener($document);
26351  Triggers.Initializers.addToggleListener($document);
26352  Triggers.Initializers.addCloseableListener($document);
26353  Triggers.Initializers.addToggleFocusListener($document);
26354};
26355
26356Triggers.Initializers.addGlobalListeners = function () {
26357  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
26358  Triggers.Initializers.addMutationEventsListener($document);
26359  Triggers.Initializers.addResizeListener();
26360  Triggers.Initializers.addScrollListener();
26361  Triggers.Initializers.addClosemeListener();
26362};
26363
26364Triggers.init = function ($, Foundation) {
26365  Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () {
26366    if ($.triggersInitialized !== true) {
26367      Triggers.Initializers.addSimpleListeners();
26368      Triggers.Initializers.addGlobalListeners();
26369      $.triggersInitialized = true;
26370    }
26371  });
26372
26373  if (Foundation) {
26374    Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now.
26375
26376    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
26377  }
26378};
26379
26380
26381
26382/***/ }),
26383
26384/***/ 7:
26385/*!************************************************************!*\
26386  !*** multi ./js/entries/plugins/foundation.interchange.js ***!
26387  \************************************************************/
26388/*! no static exports found */
26389/***/ (function(module, exports, __webpack_require__) {
26390
26391module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.interchange.js */"./js/entries/plugins/foundation.interchange.js");
26392
26393
26394/***/ }),
26395
26396/***/ "jquery":
26397/*!********************************************************************************************!*\
26398  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
26399  \********************************************************************************************/
26400/*! no static exports found */
vendor: 4,419 bytes, lines 26401-26487
26401/***/ (function(module, exports) {
26402
26403module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
26404
26405/***/ })
26406
26407/******/ });
26408});
26409//# sourceMappingURL=foundation.interchange.js.map
26410(function webpackUniversalModuleDefinition(root, factory) {
26411	if(typeof exports === 'object' && typeof module === 'object')
26412		module.exports = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery"));
26413	else if(typeof define === 'function' && define.amd)
26414		define(["./foundation.core", "./foundation.util.keyboard", "./foundation.util.mediaQuery", "./foundation.util.motion", "jquery"], factory);
26415	else if(typeof exports === 'object')
26416		exports["foundation.offcanvas"] = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery"));
26417	else
26418		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.offcanvas"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]);
26419})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
26420return /******/ (function(modules) { // webpackBootstrap
26421/******/ 	// The module cache
26422/******/ 	var installedModules = {};
26423/******/
26424/******/ 	// The require function
26425/******/ 	function __webpack_require__(moduleId) {
26426/******/
26427/******/ 		// Check if module is in cache
26428/******/ 		if(installedModules[moduleId]) {
26429/******/ 			return installedModules[moduleId].exports;
26430/******/ 		}
26431/******/ 		// Create a new module (and put it into the cache)
26432/******/ 		var module = installedModules[moduleId] = {
26433/******/ 			i: moduleId,
26434/******/ 			l: false,
26435/******/ 			exports: {}
26436/******/ 		};
26437/******/
26438/******/ 		// Execute the module function
26439/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
26440/******/
26441/******/ 		// Flag the module as loaded
26442/******/ 		module.l = true;
26443/******/
26444/******/ 		// Return the exports of the module
26445/******/ 		return module.exports;
26446/******/ 	}
26447/******/
26448/******/
26449/******/ 	// expose the modules object (__webpack_modules__)
26450/******/ 	__webpack_require__.m = modules;
26451/******/
26452/******/ 	// expose the module cache
26453/******/ 	__webpack_require__.c = installedModules;
26454/******/
26455/******/ 	// define getter function for harmony exports
26456/******/ 	__webpack_require__.d = function(exports, name, getter) {
26457/******/ 		if(!__webpack_require__.o(exports, name)) {
26458/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
26459/******/ 		}
26460/******/ 	};
26461/******/
26462/******/ 	// define __esModule on exports
26463/******/ 	__webpack_require__.r = function(exports) {
26464/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
26465/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
26466/******/ 		}
26467/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
26468/******/ 	};
26469/******/
26470/******/ 	// create a fake namespace object
26471/******/ 	// mode & 1: value is a module id, require it
26472/******/ 	// mode & 2: merge all properties of value into the ns
26473/******/ 	// mode & 4: return value when already ns object
26474/******/ 	// mode & 8|1: behave like require
26475/******/ 	__webpack_require__.t = function(value, mode) {
26476/******/ 		if(mode & 1) value = __webpack_require__(value);
26477/******/ 		if(mode & 8) return value;
26478/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
26479/******/ 		var ns = Object.create(null);
26480/******/ 		__webpack_require__.r(ns);
26481/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
26482/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
26483/******/ 		return ns;
26484/******/ 	};
26485/******/
26486/******/ 	// getDefaultExport function for compatibility with non-harmony modules
26487/******/ 	__webpack_require__.n = function(module) {
26488/******/ 		var getter = module && module.__esModule ?
26489/******/ 			function getDefault() { return module['default']; } :
26490/******/ 			function getModuleExports() { return module; };
26491/******/ 		__webpack_require__.d(getter, 'a', getter);
26492/******/ 		return getter;
26493/******/ 	};
26494/******/
26495/******/ 	// Object.prototype.hasOwnProperty.call
26496/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
26497/******/
26498/******/ 	// __webpack_public_path__
26499/******/ 	__webpack_require__.p = "";
26500/******/
26501/******/
26502/******/ 	// Load entry module and return exports
26503/******/ 	return __webpack_require__(__webpack_require__.s = 9);
26504/******/ })
26505/************************************************************************/
26506/******/ ({
26507
26508/***/ "./foundation.core":
26509/*!****************************************************************************************************************************************************************!*\
26510  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
26511  \****************************************************************************************************************************************************************/
26512/*! no static exports found */
26513/***/ (function(module, exports) {
26514
26515module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
26516
26517/***/ }),
26518
26519/***/ "./foundation.util.keyboard":
26520/*!****************************************************************************************************************************************************************************************************!*\
26521  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***!
26522  \****************************************************************************************************************************************************************************************************/
26523/*! no static exports found */
26524/***/ (function(module, exports) {
26525
26526module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;
26527
26528/***/ }),
26529
26530/***/ "./foundation.util.mediaQuery":
26531/*!************************************************************************************************************************************************************************************************************!*\
26532  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***!
26533  \************************************************************************************************************************************************************************************************************/
26534/*! no static exports found */
26535/***/ (function(module, exports) {
26536
26537module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;
26538
26539/***/ }),
26540
26541/***/ "./foundation.util.motion":
26542/*!********************************************************************************************************************************************************************************************!*\
26543  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***!
26544  \********************************************************************************************************************************************************************************************/
26545/*! no static exports found */
26546/***/ (function(module, exports) {
26547
26548module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;
26549
26550/***/ }),
26551
26552/***/ "./js/entries/plugins/foundation.offcanvas.js":
26553/*!****************************************************!*\
26554  !*** ./js/entries/plugins/foundation.offcanvas.js ***!
26555  \****************************************************/
26556/*! exports provided: Foundation, OffCanvas */
26557/***/ (function(module, __webpack_exports__, __webpack_require__) {
26558
26559"use strict";
26560__webpack_require__.r(__webpack_exports__);
26561/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
26562/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
26563/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
26564
26565/* harmony import */ var _foundation_offcanvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.offcanvas */ "./js/foundation.offcanvas.js");
26566/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OffCanvas", function() { return _foundation_offcanvas__WEBPACK_IMPORTED_MODULE_1__["OffCanvas"]; });
26567
26568
26569
26570_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_offcanvas__WEBPACK_IMPORTED_MODULE_1__["OffCanvas"], 'OffCanvas');
26571
26572
26573/***/ }),
26574
vendor: 5,486 bytes, lines 26575-26665
26575/***/ "./js/foundation.offcanvas.js":
26576/*!************************************!*\
26577  !*** ./js/foundation.offcanvas.js ***!
26578  \************************************/
26579/*! exports provided: OffCanvas */
26580/***/ (function(module, __webpack_exports__, __webpack_require__) {
26581
26582"use strict";
26583__webpack_require__.r(__webpack_exports__);
26584/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OffCanvas", function() { return OffCanvas; });
26585/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
26586/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
26587/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
26588/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__);
26589/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard");
26590/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__);
26591/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery");
26592/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__);
26593/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
26594
26595
26596function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
26597
26598function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
26599
26600function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
26601
26602function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
26603
26604function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
26605
26606function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
26607
26608function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
26609
26610function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
26611
26612function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
26613
26614
26615
26616
26617
26618
26619
26620/**
26621 * OffCanvas module.
26622 * @module foundation.offCanvas
26623 * @requires foundation.util.keyboard
26624 * @requires foundation.util.mediaQuery
26625 * @requires foundation.util.triggers
26626 */
26627
26628var OffCanvas =
26629/*#__PURE__*/
26630function (_Plugin) {
26631  _inherits(OffCanvas, _Plugin);
26632
26633  function OffCanvas() {
26634    _classCallCheck(this, OffCanvas);
26635
26636    return _possibleConstructorReturn(this, _getPrototypeOf(OffCanvas).apply(this, arguments));
26637  }
26638
26639  _createClass(OffCanvas, [{
26640    key: "_setup",
26641
26642    /**
26643     * Creates a new instance of an off-canvas wrapper.
26644     * @class
26645     * @name OffCanvas
26646     * @fires OffCanvas#init
26647     * @param {Object} element - jQuery object to initialize.
26648     * @param {Object} options - Overrides to the default plugin settings.
26649     */
26650    value: function _setup(element, options) {
26651      var _this2 = this;
26652
26653      this.className = 'OffCanvas'; // ie9 back compat
26654
26655      this.$element = element;
26656      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, OffCanvas.defaults, this.$element.data(), options);
26657      this.contentClasses = {
26658        base: [],
26659        reveal: []
26660      };
26661      this.$lastTrigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
26662      this.$triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
26663      this.position = 'left';
26664      this.$content = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
26665      this.nested = !!this.options.nested;
vendor: 23,229 bytes, lines 26666-27284
26666      this.$sticky = jquery__WEBPACK_IMPORTED_MODULE_0___default()();
26667      this.isInCanvas = false; // Defines the CSS transition/position classes of the off-canvas content container.
26668
26669      jquery__WEBPACK_IMPORTED_MODULE_0___default()(['push', 'overlap']).each(function (index, val) {
26670        _this2.contentClasses.base.push('has-transition-' + val);
26671      });
26672      jquery__WEBPACK_IMPORTED_MODULE_0___default()(['left', 'right', 'top', 'bottom']).each(function (index, val) {
26673        _this2.contentClasses.base.push('has-position-' + val);
26674
26675        _this2.contentClasses.reveal.push('has-reveal-' + val);
26676      }); // Triggers init is idempotent, just need to make sure it is initialized
26677
26678      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
26679
26680      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"]._init();
26681
26682      this._init();
26683
26684      this._events();
26685
26686      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('OffCanvas', {
26687        'ESCAPE': 'close'
26688      });
26689    }
26690    /**
26691     * Initializes the off-canvas wrapper by adding the exit overlay (if needed).
26692     * @function
26693     * @private
26694     */
26695
26696  }, {
26697    key: "_init",
26698    value: function _init() {
26699      var id = this.$element.attr('id');
26700      this.$element.attr('aria-hidden', 'true'); // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)
26701
26702      if (this.options.contentId) {
26703        this.$content = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + this.options.contentId);
26704      } else if (this.$element.siblings('[data-off-canvas-content]').length) {
26705        this.$content = this.$element.siblings('[data-off-canvas-content]').first();
26706      } else {
26707        this.$content = this.$element.closest('[data-off-canvas-content]').first();
26708      }
26709
26710      if (!this.options.contentId) {
26711        // Assume that the off-canvas element is nested if it isn't a sibling of the content
26712        this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;
26713      } else if (this.options.contentId && this.options.nested === null) {
26714        // Warning if using content ID without setting the nested option
26715        // Once the element is nested it is required to work properly in this case
26716        console.warn('Remember to use the nested option if using the content ID option!');
26717      }
26718
26719      if (this.nested === true) {
26720        // Force transition overlap if nested
26721        this.options.transition = 'overlap'; // Remove appropriate classes if already assigned in markup
26722
26723        this.$element.removeClass('is-transition-push');
26724      }
26725
26726      this.$element.addClass("is-transition-".concat(this.options.transition, " is-closed")); // Find triggers that affect this element and add aria-expanded to them
26727
26728      this.$triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).find('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-expanded', 'false').attr('aria-controls', id); // Get position by checking for related CSS class
26729
26730      this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\-(left|top|right|bottom)/)[1] : this.position; // Add an overlay over the content if necessary
26731
26732      if (this.options.contentOverlay === true) {
26733        var overlay = document.createElement('div');
26734        var overlayPosition = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$element).css("position") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';
26735        overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);
26736        this.$overlay = jquery__WEBPACK_IMPORTED_MODULE_0___default()(overlay);
26737
26738        if (overlayPosition === 'is-overlay-fixed') {
26739          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$overlay).insertAfter(this.$element);
26740        } else {
26741          this.$content.append(this.$overlay);
26742        }
26743      } // Get the revealOn option from the class.
26744
26745
26746      var revealOnRegExp = new RegExp(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["RegExpEscape"])(this.options.revealClass) + '([^\\s]+)', 'g');
26747      var revealOnClass = revealOnRegExp.exec(this.$element[0].className);
26748
26749      if (revealOnClass) {
26750        this.options.isRevealed = true;
26751        this.options.revealOn = this.options.revealOn || revealOnClass[1];
26752      } // Ensure the `reveal-on-*` class is set.
26753
26754
26755      if (this.options.isRevealed === true && this.options.revealOn) {
26756        this.$element.first().addClass("".concat(this.options.revealClass).concat(this.options.revealOn));
26757
26758        this._setMQChecker();
26759      }
26760
26761      if (this.options.transitionTime) {
26762        this.$element.css('transition-duration', this.options.transitionTime);
26763      } // Find fixed elements that should stay fixed while off-canvas is opened
26764
26765
26766      this.$sticky = this.$content.find('[data-off-canvas-sticky]');
26767
26768      if (this.$sticky.length > 0 && this.options.transition === 'push') {
26769        // If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll
26770        // Limit to push transition since there's no transform scope for overlap
26771        this.options.contentScroll = false;
26772      }
26773
26774      var inCanvasFor = this.$element.attr('class').match(/\bin-canvas-for-(\w+)/);
26775
26776      if (inCanvasFor && inCanvasFor.length === 2) {
26777        // Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class
26778        this.options.inCanvasOn = inCanvasFor[1];
26779      } else if (this.options.inCanvasOn) {
26780        // Ensure the CSS class is set
26781        this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn));
26782      }
26783
26784      if (this.options.inCanvasOn) {
26785        this._checkInCanvas();
26786      } // Initally remove all transition/position CSS classes from off-canvas content container.
26787
26788
26789      this._removeContentClasses();
26790    }
26791    /**
26792     * Adds event handlers to the off-canvas wrapper and the exit overlay.
26793     * @function
26794     * @private
26795     */
26796
26797  }, {
26798    key: "_events",
26799    value: function _events() {
26800      var _this3 = this;
26801
26802      this.$element.off('.zf.trigger .zf.offCanvas').on({
26803        'open.zf.trigger': this.open.bind(this),
26804        'close.zf.trigger': this.close.bind(this),
26805        'toggle.zf.trigger': this.toggle.bind(this),
26806        'keydown.zf.offCanvas': this._handleKeyboard.bind(this)
26807      });
26808
26809      if (this.options.closeOnClick === true) {
26810        var $target = this.options.contentOverlay ? this.$overlay : this.$content;
26811        $target.on({
26812          'click.zf.offCanvas': this.close.bind(this)
26813        });
26814      }
26815
26816      if (this.options.inCanvasOn) {
26817        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function () {
26818          _this3._checkInCanvas();
26819        });
26820      }
26821    }
26822    /**
26823     * Applies event listener for elements that will reveal at certain breakpoints.
26824     * @private
26825     */
26826
26827  }, {
26828    key: "_setMQChecker",
26829    value: function _setMQChecker() {
26830      var _this = this;
26831
26832      this.onLoadListener = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
26833        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].atLeast(_this.options.revealOn)) {
26834          _this.reveal(true);
26835        }
26836      });
26837      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function () {
26838        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].atLeast(_this.options.revealOn)) {
26839          _this.reveal(true);
26840        } else {
26841          _this.reveal(false);
26842        }
26843      });
26844    }
26845    /**
26846     * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly
26847     * @private
26848     */
26849
26850  }, {
26851    key: "_checkInCanvas",
26852    value: function _checkInCanvas() {
26853      this.isInCanvas = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].atLeast(this.options.inCanvasOn);
26854
26855      if (this.isInCanvas === true) {
26856        this.close();
26857      }
26858    }
26859    /**
26860     * Removes the CSS transition/position classes of the off-canvas content container.
26861     * Removing the classes is important when another off-canvas gets opened that uses the same content container.
26862     * @param {Boolean} hasReveal - true if related off-canvas element is revealed.
26863     * @private
26864     */
26865
26866  }, {
26867    key: "_removeContentClasses",
26868    value: function _removeContentClasses(hasReveal) {
26869      if (typeof hasReveal !== 'boolean') {
26870        this.$content.removeClass(this.contentClasses.base.join(' '));
26871      } else if (hasReveal === false) {
26872        this.$content.removeClass("has-reveal-".concat(this.position));
26873      }
26874    }
26875    /**
26876     * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.
26877     * Beforehand any transition/position class gets removed.
26878     * @param {Boolean} hasReveal - true if related off-canvas element is revealed.
26879     * @private
26880     */
26881
26882  }, {
26883    key: "_addContentClasses",
26884    value: function _addContentClasses(hasReveal) {
26885      this._removeContentClasses(hasReveal);
26886
26887      if (typeof hasReveal !== 'boolean') {
26888        this.$content.addClass("has-transition-".concat(this.options.transition, " has-position-").concat(this.position));
26889      } else if (hasReveal === true) {
26890        this.$content.addClass("has-reveal-".concat(this.position));
26891      }
26892    }
26893    /**
26894     * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition.
26895     * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values.
26896     * @private
26897     */
26898
26899  }, {
26900    key: "_fixStickyElements",
26901    value: function _fixStickyElements() {
26902      this.$sticky.each(function (_, el) {
26903        var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el); // If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope
26904        // Limit to push transition because postion:fixed works without problems for overlap (no transform scope)
26905
26906        if ($el.css('position') === 'fixed') {
26907          // Save current inline styling to restore it if undoing the absolute fixing
26908          var topVal = parseInt($el.css('top'), 10);
26909          $el.data('offCanvasSticky', {
26910            top: topVal
26911          });
26912          var absoluteTopVal = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).scrollTop() + topVal;
26913          $el.css({
26914            top: "".concat(absoluteTopVal, "px"),
26915            width: '100%',
26916            transition: 'none'
26917          });
26918        }
26919      });
26920    }
26921    /**
26922     * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand.
26923     * This reverts the changes of _fixStickyElements()
26924     * @private
26925     */
26926
26927  }, {
26928    key: "_unfixStickyElements",
26929    value: function _unfixStickyElements() {
26930      this.$sticky.each(function (_, el) {
26931        var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el);
26932        var stickyData = $el.data('offCanvasSticky'); // If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed
26933
26934        if (_typeof(stickyData) === 'object') {
26935          $el.css({
26936            top: "".concat(stickyData.top, "px"),
26937            width: '',
26938            transition: ''
26939          });
26940          $el.data('offCanvasSticky', '');
26941        }
26942      });
26943    }
26944    /**
26945     * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.
26946     * @param {Boolean} isRevealed - true if element should be revealed.
26947     * @function
26948     */
26949
26950  }, {
26951    key: "reveal",
26952    value: function reveal(isRevealed) {
26953      if (isRevealed) {
26954        this.close();
26955        this.isRevealed = true;
26956        this.$element.attr('aria-hidden', 'false');
26957        this.$element.off('open.zf.trigger toggle.zf.trigger');
26958        this.$element.removeClass('is-closed');
26959      } else {
26960        this.isRevealed = false;
26961        this.$element.attr('aria-hidden', 'true');
26962        this.$element.off('open.zf.trigger toggle.zf.trigger').on({
26963          'open.zf.trigger': this.open.bind(this),
26964          'toggle.zf.trigger': this.toggle.bind(this)
26965        });
26966        this.$element.addClass('is-closed');
26967      }
26968
26969      this._addContentClasses(isRevealed);
26970    }
26971    /**
26972     * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers.
26973     * @function
26974     * @private
26975     */
26976
26977  }, {
26978    key: "_stopScrolling",
26979    value: function _stopScrolling(event) {
26980      return false;
26981    }
26982    /**
26983     * Tag the element given as context whether it can be scrolled up and down.
26984     * Used to allow or prevent it to scroll. See `_stopScrollPropagation`.
26985     *
26986     * Taken and adapted from http://stackoverflow.com/questions/16889447/prevent-full-page-scrolling-ios
26987     * Only really works for y, not sure how to extend to x or if we need to.
26988     *
26989     * @function
26990     * @private
26991     */
26992
26993  }, {
26994    key: "_recordScrollable",
26995    value: function _recordScrollable(event) {
26996      var elem = this; // called from event handler context with this as elem
26997      // If the element is scrollable (content overflows), then...
26998
26999      if (elem.scrollHeight !== elem.clientHeight) {
27000        // If we're at the top, scroll down one pixel to allow scrolling up
27001        if (elem.scrollTop === 0) {
27002          elem.scrollTop = 1;
27003        } // If we're at the bottom, scroll up one pixel to allow scrolling down
27004
27005
27006        if (elem.scrollTop === elem.scrollHeight - elem.clientHeight) {
27007          elem.scrollTop = elem.scrollHeight - elem.clientHeight - 1;
27008        }
27009      }
27010
27011      elem.allowUp = elem.scrollTop > 0;
27012      elem.allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight;
27013      elem.lastY = event.originalEvent.pageY;
27014    }
27015    /**
27016     * Prevent the given event propagation if the element given as context can scroll.
27017     * Used to preserve the element scrolling on mobile (`touchmove`) when the document
27018     * scrolling is prevented. See https://git.io/zf-9707.
27019     * @function
27020     * @private
27021     */
27022
27023  }, {
27024    key: "_stopScrollPropagation",
27025    value: function _stopScrollPropagation(event) {
27026      var elem = this; // called from event handler context with this as elem
27027
27028      var parent; // off-canvas elem if called from inner scrollbox
27029
27030      var up = event.pageY < elem.lastY;
27031      var down = !up;
27032      elem.lastY = event.pageY;
27033
27034      if (up && elem.allowUp || down && elem.allowDown) {
27035        // It is not recommended to stop event propagation (the user cannot watch it),
27036        // but in this case this is the only solution we have.
27037        event.stopPropagation(); // If elem is inner scrollbox we are scrolling the outer off-canvas down/up once the box end has been reached
27038        // This lets the user continue to touch move the off-canvas without the need to place the finger outside the scrollbox
27039
27040        if (elem.hasAttribute('data-off-canvas-scrollbox')) {
27041          parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');
27042
27043          if (elem.scrollTop <= 1 && parent.scrollTop > 0) {
27044            parent.scrollTop--;
27045          } else if (elem.scrollTop >= elem.scrollHeight - elem.clientHeight - 1 && parent.scrollTop < parent.scrollHeight - parent.clientHeight) {
27046            parent.scrollTop++;
27047          }
27048        }
27049      } else {
27050        event.preventDefault();
27051      }
27052    }
27053    /**
27054     * Opens the off-canvas menu.
27055     * @function
27056     * @param {Object} event - Event object passed from listener.
27057     * @param {jQuery} trigger - element that triggered the off-canvas to open.
27058     * @fires OffCanvas#opened
27059     * @todo also trigger 'open' event?
27060     */
27061
27062  }, {
27063    key: "open",
27064    value: function open(event, trigger) {
27065      var _this4 = this;
27066
27067      if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) {
27068        return;
27069      }
27070
27071      var _this = this;
27072
27073      if (trigger) {
27074        this.$lastTrigger = trigger;
27075      }
27076
27077      if (this.options.forceTo === 'top') {
27078        window.scrollTo(0, 0);
27079      } else if (this.options.forceTo === 'bottom') {
27080        window.scrollTo(0, document.body.scrollHeight);
27081      }
27082
27083      if (this.options.transitionTime && this.options.transition !== 'overlap') {
27084        this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);
27085      } else {
27086        this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');
27087      }
27088
27089      this.$element.addClass('is-open').removeClass('is-closed');
27090      this.$triggers.attr('aria-expanded', 'true');
27091      this.$element.attr('aria-hidden', 'false');
27092      this.$content.addClass('is-open-' + this.position); // If `contentScroll` is set to false, add class and disable scrolling on touch devices.
27093
27094      if (this.options.contentScroll === false) {
27095        jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);
27096        this.$element.on('touchstart', this._recordScrollable);
27097        this.$element.on('touchmove', this._stopScrollPropagation);
27098        this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);
27099        this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this._stopScrollPropagation);
27100      }
27101
27102      if (this.options.contentOverlay === true) {
27103        this.$overlay.addClass('is-visible');
27104      }
27105
27106      if (this.options.closeOnClick === true && this.options.contentOverlay === true) {
27107        this.$overlay.addClass('is-closable');
27108      }
27109
27110      if (this.options.autoFocus === true) {
27111        this.$element.one(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(this.$element), function () {
27112          if (!_this.$element.hasClass('is-open')) {
27113            return; // exit if prematurely closed
27114          }
27115
27116          var canvasFocus = _this.$element.find('[data-autofocus]');
27117
27118          if (canvasFocus.length) {
27119            canvasFocus.eq(0).focus();
27120          } else {
27121            _this.$element.find('a, button').eq(0).focus();
27122          }
27123        });
27124      }
27125
27126      if (this.options.trapFocus === true) {
27127        this.$content.attr('tabindex', '-1');
27128        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].trapFocus(this.$element);
27129      }
27130
27131      if (this.options.transition === 'push') {
27132        this._fixStickyElements();
27133      }
27134
27135      this._addContentClasses();
27136      /**
27137       * Fires when the off-canvas menu opens.
27138       * @event OffCanvas#opened
27139       */
27140
27141
27142      this.$element.trigger('opened.zf.offCanvas');
27143      /**
27144       * Fires when the off-canvas menu open transition is done.
27145       * @event OffCanvas#openedEnd
27146       */
27147
27148      this.$element.one(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(this.$element), function () {
27149        _this4.$element.trigger('openedEnd.zf.offCanvas');
27150      });
27151    }
27152    /**
27153     * Closes the off-canvas menu.
27154     * @function
27155     * @param {Function} cb - optional cb to fire after closure.
27156     * @fires OffCanvas#close
27157     * @fires OffCanvas#closed
27158     */
27159
27160  }, {
27161    key: "close",
27162    value: function close(cb) {
27163      var _this5 = this;
27164
27165      if (!this.$element.hasClass('is-open') || this.isRevealed) {
27166        return;
27167      }
27168      /**
27169       * Fires when the off-canvas menu closes.
27170       * @event OffCanvas#close
27171       */
27172
27173
27174      this.$element.trigger('close.zf.offCanvas');
27175
27176      var _this = this;
27177
27178      this.$element.removeClass('is-open');
27179      this.$element.attr('aria-hidden', 'true');
27180      this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');
27181
27182      if (this.options.contentOverlay === true) {
27183        this.$overlay.removeClass('is-visible');
27184      }
27185
27186      if (this.options.closeOnClick === true && this.options.contentOverlay === true) {
27187        this.$overlay.removeClass('is-closable');
27188      }
27189
27190      this.$triggers.attr('aria-expanded', 'false'); // Listen to transitionEnd: add class, re-enable scrolling and release focus when done.
27191
27192      this.$element.one(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(this.$element), function (e) {
27193        _this5.$element.addClass('is-closed');
27194
27195        _this5._removeContentClasses();
27196
27197        if (_this5.options.transition === 'push') {
27198          _this5._unfixStickyElements();
27199        } // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.
27200
27201
27202        if (_this5.options.contentScroll === false) {
27203          jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').removeClass('is-off-canvas-open').off('touchmove', _this5._stopScrolling);
27204
27205          _this5.$element.off('touchstart', _this5._recordScrollable);
27206
27207          _this5.$element.off('touchmove', _this5._stopScrollPropagation);
27208
27209          _this5.$element.off('touchstart', '[data-off-canvas-scrollbox]', _this5._recordScrollable);
27210
27211          _this5.$element.off('touchmove', '[data-off-canvas-scrollbox]', _this5._stopScrollPropagation);
27212        }
27213
27214        if (_this5.options.trapFocus === true) {
27215          _this5.$content.removeAttr('tabindex');
27216
27217          _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].releaseFocus(_this5.$element);
27218        }
27219        /**
27220         * Fires when the off-canvas menu close transition is done.
27221         * @event OffCanvas#closed
27222         */
27223
27224
27225        _this5.$element.trigger('closed.zf.offCanvas');
27226      });
27227    }
27228    /**
27229     * Toggles the off-canvas menu open or closed.
27230     * @function
27231     * @param {Object} event - Event object passed from listener.
27232     * @param {jQuery} trigger - element that triggered the off-canvas to open.
27233     */
27234
27235  }, {
27236    key: "toggle",
27237    value: function toggle(event, trigger) {
27238      if (this.$element.hasClass('is-open')) {
27239        this.close(event, trigger);
27240      } else {
27241        this.open(event, trigger);
27242      }
27243    }
27244    /**
27245     * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.
27246     * @function
27247     * @private
27248     */
27249
27250  }, {
27251    key: "_handleKeyboard",
27252    value: function _handleKeyboard(e) {
27253      var _this6 = this;
27254
27255      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'OffCanvas', {
27256        close: function close() {
27257          _this6.close();
27258
27259          _this6.$lastTrigger.focus();
27260
27261          return true;
27262        },
27263        handled: function handled() {
27264          e.preventDefault();
27265        }
27266      });
27267    }
27268    /**
27269     * Destroys the OffCanvas plugin.
27270     * @function
27271     */
27272
27273  }, {
27274    key: "_destroy",
27275    value: function _destroy() {
27276      this.close();
27277      this.$element.off('.zf.trigger .zf.offCanvas');
27278      this.$overlay.off('.zf.offCanvas');
27279      if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
27280    }
27281  }]);
27282
27283  return OffCanvas;
27284}
27284(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
27285
27286OffCanvas.defaults = {
27287  /**
27288   * Allow the user to click outside of the menu to close it.
27289   * @option
27290   * @type {boolean}
27291   * @default true
27292   */
27293  closeOnClick: true,
27294
27295  /**
27296   * Adds an overlay on top of `[data-off-canvas-content]`.
27297   * @option
27298   * @type {boolean}
27299   * @default true
27300   */
27301  contentOverlay: true,
27302
27303  /**
27304   * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.
27305   * @option
27306   * @type {?string}
27307   * @default null
27308   */
27309  contentId: null,
27310
27311  /**
27312   * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.
27313   * @option
27314   * @type {boolean}
27315   * @default null
27316   */
27317  nested: null,
27318
27319  /**
27320   * Enable/disable scrolling of the main content when an off canvas panel is open.
27321   * @option
27322   * @type {boolean}
27323   * @default true
27324   */
27325  contentScroll: true,
27326
27327  /**
27328   * Amount of time the open and close transition requires, including the appropriate milliseconds (`ms`) or seconds (`s`) unit (e.g. `500ms`, `.75s`) If none selected, pulls from body style.
27329   * @option
27330   * @type {string}
27331   * @default null
27332   */
27333  transitionTime: null,
27334
27335  /**
27336   * Type of transition for the OffCanvas menu. Options are 'push', 'detached' or 'slide'.
27337   * @option
27338   * @type {string}
27339   * @default push
27340   */
27341  transition: 'push',
27342
27343  /**
27344   * Force the page to scroll to top or bottom on open.
27345   * @option
27346   * @type {?string}
27347   * @default null
27348   */
27349  forceTo: null,
27350
27351  /**
27352   * Allow the OffCanvas to remain open for certain breakpoints.
27353   * @option
27354   * @type {boolean}
27355   * @default false
27356   */
27357  isRevealed: false,
27358
27359  /**
27360   * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.
27361   * @option
27362   * @type {?string}
27363   * @default null
27364   */
27365  revealOn: null,
27366
27367  /**
27368   * Breakpoint at which the off-canvas gets moved into canvas content and acts as regular page element.
27369   * @option
27370   * @type {?string}
27371   * @default null
27372   */
27373  inCanvasOn: null,
27374
27375  /**
27376   * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.
27377   * @option
27378   * @type {boolean}
27379   * @default true
27380   */
27381  autoFocus: true,
27382
27383  /**
27384   * Class used to force an OffCanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.
27385   * @option
27386   * @type {string}
27387   * @default reveal-for-
27388   * @todo improve the regex testing for this.
27389   */
27390  revealClass: 'reveal-for-',
27391
27392  /**
27393   * Triggers optional focus trapping when opening an OffCanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.
27394   * @option
27395   * @type {boolean}
27396   * @default false
27397   */
27398  trapFocus: false
27399};
27400
27401
27402/***/ }),
27403
vendor: 12,986 bytes, lines 27404-27718
27404/***/ "./js/foundation.util.triggers.js":
27405/*!****************************************!*\
27406  !*** ./js/foundation.util.triggers.js ***!
27407  \****************************************/
27408/*! exports provided: Triggers */
27409/***/ (function(module, __webpack_exports__, __webpack_require__) {
27410
27411"use strict";
27412__webpack_require__.r(__webpack_exports__);
27413/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; });
27414/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
27415/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
27416/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
27417/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
27418/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
27419/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);
27420
27421
27422function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
27423
27424
27425
27426
27427
27428var MutationObserver = function () {
27429  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
27430
27431  for (var i = 0; i < prefixes.length; i++) {
27432    if ("".concat(prefixes[i], "MutationObserver") in window) {
27433      return window["".concat(prefixes[i], "MutationObserver")];
27434    }
27435  }
27436
27437  return false;
27438}();
27439
27440var triggers = function triggers(el, type) {
27441  el.data(type).split(' ').forEach(function (id) {
27442    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]);
27443  });
27444};
27445
27446var Triggers = {
27447  Listeners: {
27448    Basic: {},
27449    Global: {}
27450  },
27451  Initializers: {}
27452};
27453Triggers.Listeners.Basic = {
27454  openListener: function openListener() {
27455    triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open');
27456  },
27457  closeListener: function closeListener() {
27458    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close');
27459
27460    if (id) {
27461      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close');
27462    } else {
27463      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger');
27464    }
27465  },
27466  toggleListener: function toggleListener() {
27467    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
27468
27469    if (id) {
27470      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
27471    } else {
27472      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger');
27473    }
27474  },
27475  closeableListener: function closeableListener(e) {
27476    var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833
27477
27478    e.stopPropagation();
27479
27480    if (animation !== '') {
27481      _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () {
27482        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf');
27483      });
27484    } else {
27485      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf');
27486    }
27487  },
27488  toggleFocusListener: function toggleFocusListener() {
27489    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus');
27490    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]);
27491  }
27492}; // Elements with [data-open] will reveal a plugin that supports it when clicked.
27493
27494Triggers.Initializers.addOpenListener = function ($elem) {
27495  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
27496  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
27497}; // Elements with [data-close] will close a plugin that supports it when clicked.
27498// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
27499
27500
27501Triggers.Initializers.addCloseListener = function ($elem) {
27502  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
27503  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
27504}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
27505
27506
27507Triggers.Initializers.addToggleListener = function ($elem) {
27508  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
27509  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
27510}; // Elements with [data-closable] will respond to close.zf.trigger events.
27511
27512
27513Triggers.Initializers.addCloseableListener = function ($elem) {
27514  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
27515  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
27516}; // Elements with [data-toggle-focus] will respond to coming in and out of focus
27517
27518
27519Triggers.Initializers.addToggleFocusListener = function ($elem) {
27520  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
27521  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
27522}; // More Global/complex listeners and triggers
27523
27524
27525Triggers.Listeners.Global = {
27526  resizeListener: function resizeListener($nodes) {
27527    if (!MutationObserver) {
27528      //fallback for IE 9
27529      $nodes.each(function () {
27530        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger');
27531      });
27532    } //trigger all listening elements and signal a resize event
27533
27534
27535    $nodes.attr('data-events', "resize");
27536  },
27537  scrollListener: function scrollListener($nodes) {
27538    if (!MutationObserver) {
27539      //fallback for IE 9
27540      $nodes.each(function () {
27541        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger');
27542      });
27543    } //trigger all listening elements and signal a scroll event
27544
27545
27546    $nodes.attr('data-events', "scroll");
27547  },
27548  closeMeListener: function closeMeListener(e, pluginId) {
27549    var plugin = e.namespace.split('.')[0];
27550    var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]"));
27551    plugins.each(function () {
27552      var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
27553
27554      _this.triggerHandler('close.zf.trigger', [_this]);
27555    });
27556  } // Global, parses whole document.
27557
27558};
27559
27560Triggers.Initializers.addClosemeListener = function (pluginName) {
27561  var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'),
27562      plugNames = ['dropdown', 'tooltip', 'reveal'];
27563
27564  if (pluginName) {
27565    if (typeof pluginName === 'string') {
27566      plugNames.push(pluginName);
27567    } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') {
27568      plugNames = plugNames.concat(pluginName);
27569    } else {
27570      console.error('Plugin names must be strings');
27571    }
27572  }
27573
27574  if (yetiBoxes.length) {
27575    var listeners = plugNames.map(function (name) {
27576      return "closeme.zf.".concat(name);
27577    }).join(' ');
27578    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
27579  }
27580};
27581
27582function debounceGlobalListener(debounce, trigger, listener) {
27583  var timer,
27584      args = Array.prototype.slice.call(arguments, 3);
27585  jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) {
27586    if (timer) {
27587      clearTimeout(timer);
27588    }
27589
27590    timer = setTimeout(function () {
27591      listener.apply(null, args);
27592    }, debounce || 10); //default time to emit scroll event
27593  });
27594}
27595
27596Triggers.Initializers.addResizeListener = function (debounce) {
27597  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]');
27598
27599  if ($nodes.length) {
27600    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
27601  }
27602};
27603
27604Triggers.Initializers.addScrollListener = function (debounce) {
27605  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]');
27606
27607  if ($nodes.length) {
27608    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
27609  }
27610};
27611
27612Triggers.Initializers.addMutationEventsListener = function ($elem) {
27613  if (!MutationObserver) {
27614    return false;
27615  }
27616
27617  var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback
27618
27619  var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
27620    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type
27621
27622    switch (mutationRecordsList[0].type) {
27623      case "attributes":
27624        if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
27625          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
27626        }
27627
27628        if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
27629          $target.triggerHandler('resizeme.zf.trigger', [$target]);
27630        }
27631
27632        if (mutationRecordsList[0].attributeName === "style") {
27633          $target.closest("[data-mutate]").attr("data-events", "mutate");
27634          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
27635        }
27636
27637        break;
27638
27639      case "childList":
27640        $target.closest("[data-mutate]").attr("data-events", "mutate");
27641        $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
27642        break;
27643
27644      default:
27645        return false;
27646      //nothing
27647    }
27648  };
27649
27650  if ($nodes.length) {
27651    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
27652    for (var i = 0; i <= $nodes.length - 1; i++) {
27653      var elementObserver = new MutationObserver(listeningElementsMutation);
27654      elementObserver.observe($nodes[i], {
27655        attributes: true,
27656        childList: true,
27657        characterData: false,
27658        subtree: true,
27659        attributeFilter: ["data-events", "style"]
27660      });
27661    }
27662  }
27663};
27664
27665Triggers.Initializers.addSimpleListeners = function () {
27666  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
27667  Triggers.Initializers.addOpenListener($document);
27668  Triggers.Initializers.addCloseListener($document);
27669  Triggers.Initializers.addToggleListener($document);
27670  Triggers.Initializers.addCloseableListener($document);
27671  Triggers.Initializers.addToggleFocusListener($document);
27672};
27673
27674Triggers.Initializers.addGlobalListeners = function () {
27675  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
27676  Triggers.Initializers.addMutationEventsListener($document);
27677  Triggers.Initializers.addResizeListener();
27678  Triggers.Initializers.addScrollListener();
27679  Triggers.Initializers.addClosemeListener();
27680};
27681
27682Triggers.init = function ($, Foundation) {
27683  Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () {
27684    if ($.triggersInitialized !== true) {
27685      Triggers.Initializers.addSimpleListeners();
27686      Triggers.Initializers.addGlobalListeners();
27687      $.triggersInitialized = true;
27688    }
27689  });
27690
27691  if (Foundation) {
27692    Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now.
27693
27694    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
27695  }
27696};
27697
27698
27699
27700/***/ }),
27701
27702/***/ 9:
27703/*!**********************************************************!*\
27704  !*** multi ./js/entries/plugins/foundation.offcanvas.js ***!
27705  \**********************************************************/
27706/*! no static exports found */
27707/***/ (function(module, exports, __webpack_require__) {
27708
27709module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.offcanvas.js */"./js/entries/plugins/foundation.offcanvas.js");
27710
27711
27712/***/ }),
27713
27714/***/ "jquery":
27715/*!********************************************************************************************!*\
27716  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
27717  \********************************************************************************************/
27718/*! no static exports found */
vendor: 4,198 bytes, lines 27719-27805
27719/***/ (function(module, exports) {
27720
27721module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
27722
27723/***/ })
27724
27725/******/ });
27726});
27727//# sourceMappingURL=foundation.offcanvas.js.map
27728(function webpackUniversalModuleDefinition(root, factory) {
27729	if(typeof exports === 'object' && typeof module === 'object')
27730		module.exports = factory(require("./foundation.core"), require("./foundation.util.imageLoader"), require("./foundation.util.keyboard"), require("jquery"));
27731	else if(typeof define === 'function' && define.amd)
27732		define(["./foundation.core", "./foundation.util.imageLoader", "./foundation.util.keyboard", "jquery"], factory);
27733	else if(typeof exports === 'object')
27734		exports["foundation.tabs"] = factory(require("./foundation.core"), require("./foundation.util.imageLoader"), require("./foundation.util.keyboard"), require("jquery"));
27735	else
27736		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.tabs"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.imageLoader"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["jQuery"]);
27737})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
27738return /******/ (function(modules) { // webpackBootstrap
27739/******/ 	// The module cache
27740/******/ 	var installedModules = {};
27741/******/
27742/******/ 	// The require function
27743/******/ 	function __webpack_require__(moduleId) {
27744/******/
27745/******/ 		// Check if module is in cache
27746/******/ 		if(installedModules[moduleId]) {
27747/******/ 			return installedModules[moduleId].exports;
27748/******/ 		}
27749/******/ 		// Create a new module (and put it into the cache)
27750/******/ 		var module = installedModules[moduleId] = {
27751/******/ 			i: moduleId,
27752/******/ 			l: false,
27753/******/ 			exports: {}
27754/******/ 		};
27755/******/
27756/******/ 		// Execute the module function
27757/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
27758/******/
27759/******/ 		// Flag the module as loaded
27760/******/ 		module.l = true;
27761/******/
27762/******/ 		// Return the exports of the module
27763/******/ 		return module.exports;
27764/******/ 	}
27765/******/
27766/******/
27767/******/ 	// expose the modules object (__webpack_modules__)
27768/******/ 	__webpack_require__.m = modules;
27769/******/
27770/******/ 	// expose the module cache
27771/******/ 	__webpack_require__.c = installedModules;
27772/******/
27773/******/ 	// define getter function for harmony exports
27774/******/ 	__webpack_require__.d = function(exports, name, getter) {
27775/******/ 		if(!__webpack_require__.o(exports, name)) {
27776/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
27777/******/ 		}
27778/******/ 	};
27779/******/
27780/******/ 	// define __esModule on exports
27781/******/ 	__webpack_require__.r = function(exports) {
27782/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
27783/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
27784/******/ 		}
27785/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
27786/******/ 	};
27787/******/
27788/******/ 	// create a fake namespace object
27789/******/ 	// mode & 1: value is a module id, require it
27790/******/ 	// mode & 2: merge all properties of value into the ns
27791/******/ 	// mode & 4: return value when already ns object
27792/******/ 	// mode & 8|1: behave like require
27793/******/ 	__webpack_require__.t = function(value, mode) {
27794/******/ 		if(mode & 1) value = __webpack_require__(value);
27795/******/ 		if(mode & 8) return value;
27796/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
27797/******/ 		var ns = Object.create(null);
27798/******/ 		__webpack_require__.r(ns);
27799/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
27800/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
27801/******/ 		return ns;
27802/******/ 	};
27803/******/
27804/******/ 	// getDefaultExport function for compatibility with non-harmony modules
27805/******/ 	__webpack_require__.n = function(module) {
27806/******/ 		var getter = module && module.__esModule ?
27807/******/ 			function getDefault() { return module['default']; } :
27808/******/ 			function getModuleExports() { return module; };
27809/******/ 		__webpack_require__.d(getter, 'a', getter);
27810/******/ 		return getter;
27811/******/ 	};
27812/******/
27813/******/ 	// Object.prototype.hasOwnProperty.call
27814/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
27815/******/
27816/******/ 	// __webpack_public_path__
27817/******/ 	__webpack_require__.p = "";
27818/******/
27819/******/
27820/******/ 	// Load entry module and return exports
27821/******/ 	return __webpack_require__(__webpack_require__.s = 18);
27822/******/ })
27823/************************************************************************/
27824/******/ ({
27825
27826/***/ "./foundation.core":
27827/*!****************************************************************************************************************************************************************!*\
27828  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
27829  \****************************************************************************************************************************************************************/
27830/*! no static exports found */
27831/***/ (function(module, exports) {
27832
27833module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
27834
27835/***/ }),
27836
27837/***/ "./foundation.util.imageLoader":
27838/*!****************************************************************************************************************************************************************************************************************!*\
27839  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.imageLoader"],"amd":"./foundation.util.imageLoader","commonjs":"./foundation.util.imageLoader","commonjs2":"./foundation.util.imageLoader"} ***!
27840  \****************************************************************************************************************************************************************************************************************/
27841/*! no static exports found */
27842/***/ (function(module, exports) {
27843
27844module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__;
27845
27846/***/ }),
27847
27848/***/ "./foundation.util.keyboard":
27849/*!****************************************************************************************************************************************************************************************************!*\
27850  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***!
27851  \****************************************************************************************************************************************************************************************************/
27852/*! no static exports found */
27853/***/ (function(module, exports) {
27854
27855module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;
27856
27857/***/ }),
27858
27859/***/ "./js/entries/plugins/foundation.tabs.js":
27860/*!***********************************************!*\
27861  !*** ./js/entries/plugins/foundation.tabs.js ***!
27862  \***********************************************/
27863/*! exports provided: Foundation, Tabs */
27864/***/ (function(module, __webpack_exports__, __webpack_require__) {
27865
27866"use strict";
27867__webpack_require__.r(__webpack_exports__);
27868/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
27869/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
27870/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
27871
27872/* harmony import */ var _foundation_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.tabs */ "./js/foundation.tabs.js");
27873/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Tabs", function() { return _foundation_tabs__WEBPACK_IMPORTED_MODULE_1__["Tabs"]; });
27874
27875
27876
27877_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_tabs__WEBPACK_IMPORTED_MODULE_1__["Tabs"], 'Tabs');
27878
27879
27880/***/ }),
27881
vendor: 4,965 bytes, lines 27882-27963
27882/***/ "./js/foundation.tabs.js":
27883/*!*******************************!*\
27884  !*** ./js/foundation.tabs.js ***!
27885  \*******************************/
27886/*! exports provided: Tabs */
27887/***/ (function(module, __webpack_exports__, __webpack_require__) {
27888
27889"use strict";
27890__webpack_require__.r(__webpack_exports__);
27891/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tabs", function() { return Tabs; });
27892/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
27893/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
27894/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
27895/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__);
27896/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard");
27897/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__);
27898/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.imageLoader */ "./foundation.util.imageLoader");
27899/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3__);
27900
27901
27902function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
27903
27904function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
27905
27906function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
27907
27908function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
27909
27910function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
27911
27912function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
27913
27914function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
27915
27916function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
27917
27918function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
27919
27920
27921
27922
27923
27924
27925/**
27926 * Tabs module.
27927 * @module foundation.tabs
27928 * @requires foundation.util.keyboard
27929 * @requires foundation.util.imageLoader if tabs contain images
27930 */
27931
27932var Tabs =
27933/*#__PURE__*/
27934function (_Plugin) {
27935  _inherits(Tabs, _Plugin);
27936
27937  function Tabs() {
27938    _classCallCheck(this, Tabs);
27939
27940    return _possibleConstructorReturn(this, _getPrototypeOf(Tabs).apply(this, arguments));
27941  }
27942
27943  _createClass(Tabs, [{
27944    key: "_setup",
27945
27946    /**
27947     * Creates a new instance of tabs.
27948     * @class
27949     * @name Tabs
27950     * @fires Tabs#init
27951     * @param {jQuery} element - jQuery object to make into tabs.
27952     * @param {Object} options - Overrides to the default plugin settings.
27953     */
27954    value: function _setup(element, options) {
27955      this.$element = element;
27956      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Tabs.defaults, this.$element.data(), options);
27957      this.className = 'Tabs'; // ie9 back compat
27958
27959      this._init();
27960
27961      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('Tabs', {
27962        'ENTER': 'open',
27963        'SPACE': 'open',
vendor: 13,898 bytes, lines 27964-28389
27964        'ARROW_RIGHT': 'next',
27965        'ARROW_UP': 'previous',
27966        'ARROW_DOWN': 'next',
27967        'ARROW_LEFT': 'previous' // 'TAB': 'next',
27968        // 'SHIFT_TAB': 'previous'
27969
27970      });
27971    }
27972    /**
27973     * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.
27974     * @private
27975     */
27976
27977  }, {
27978    key: "_init",
27979    value: function _init() {
27980      var _this2 = this;
27981
27982      var _this = this;
27983
27984      this._isInitializing = true;
27985      this.$element.attr({
27986        'role': 'tablist'
27987      });
27988      this.$tabTitles = this.$element.find(".".concat(this.options.linkClass));
27989      this.$tabContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-tabs-content=\"".concat(this.$element[0].id, "\"]"));
27990      this.$tabTitles.each(function () {
27991        var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
27992            $link = $elem.find('a'),
27993            isActive = $elem.hasClass("".concat(_this.options.linkActiveClass)),
27994            hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),
27995            linkId = $link[0].id ? $link[0].id : "".concat(hash, "-label"),
27996            $tabContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(hash));
27997        $elem.attr({
27998          'role': 'presentation'
27999        });
28000        $link.attr({
28001          'role': 'tab',
28002          'aria-controls': hash,
28003          'aria-selected': isActive,
28004          'id': linkId,
28005          'tabindex': isActive ? '0' : '-1'
28006        });
28007        $tabContent.attr({
28008          'role': 'tabpanel',
28009          'aria-labelledby': linkId
28010        }); // Save up the initial hash to return to it later when going back in history
28011
28012        if (isActive) {
28013          _this._initialAnchor = "#".concat(hash);
28014        }
28015
28016        if (!isActive) {
28017          $tabContent.attr('aria-hidden', 'true');
28018        }
28019
28020        if (isActive && _this.options.autoFocus) {
28021          _this.onLoadListener = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
28022            jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
28023              scrollTop: $elem.offset().top
28024            }, _this.options.deepLinkSmudgeDelay, function () {
28025              $link.focus();
28026            });
28027          });
28028        }
28029      });
28030
28031      if (this.options.matchHeight) {
28032        var $images = this.$tabContent.find('img');
28033
28034        if ($images.length) {
28035          Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3__["onImagesLoaded"])($images, this._setHeight.bind(this));
28036        } else {
28037          this._setHeight();
28038        }
28039      } // Current context-bound function to open tabs on page load or history hashchange
28040
28041
28042      this._checkDeepLink = function () {
28043        var anchor = window.location.hash;
28044
28045        if (!anchor.length) {
28046          // If we are still initializing and there is no anchor, then there is nothing to do
28047          if (_this2._isInitializing) return; // Otherwise, move to the initial anchor
28048
28049          if (_this2._initialAnchor) anchor = _this2._initialAnchor;
28050        }
28051
28052        var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;
28053        var $anchor = anchorNoHash && jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(anchorNoHash));
28054
28055        var $link = anchor && _this2.$element.find("[href$=\"".concat(anchor, "\"],[data-tabs-target=\"").concat(anchorNoHash, "\"]")).first(); // Whether the anchor element that has been found is part of this element
28056
28057
28058        var isOwnAnchor = !!($anchor.length && $link.length);
28059
28060        if (isOwnAnchor) {
28061          // If there is an anchor for the hash, select it
28062          if ($anchor && $anchor.length && $link && $link.length) {
28063            _this2.selectTab($anchor, true);
28064          } // Otherwise, collapse everything
28065          else {
28066              _this2._collapse();
28067            } // Roll up a little to show the titles
28068
28069
28070          if (_this2.options.deepLinkSmudge) {
28071            var offset = _this2.$element.offset();
28072
28073            jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({
28074              scrollTop: offset.top
28075            }, _this2.options.deepLinkSmudgeDelay);
28076          }
28077          /**
28078           * Fires when the plugin has deeplinked at pageload
28079           * @event Tabs#deeplink
28080           */
28081
28082
28083          _this2.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);
28084        }
28085      }; //use browser to open a tab, if it exists in this tabset
28086
28087
28088      if (this.options.deepLink) {
28089        this._checkDeepLink();
28090      }
28091
28092      this._events();
28093
28094      this._isInitializing = false;
28095    }
28096    /**
28097     * Adds event handlers for items within the tabs.
28098     * @private
28099     */
28100
28101  }, {
28102    key: "_events",
28103    value: function _events() {
28104      this._addKeyHandler();
28105
28106      this._addClickHandler();
28107
28108      this._setHeightMqHandler = null;
28109
28110      if (this.options.matchHeight) {
28111        this._setHeightMqHandler = this._setHeight.bind(this);
28112        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._setHeightMqHandler);
28113      }
28114
28115      if (this.options.deepLink) {
28116        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._checkDeepLink);
28117      }
28118    }
28119    /**
28120     * Adds click handlers for items within the tabs.
28121     * @private
28122     */
28123
28124  }, {
28125    key: "_addClickHandler",
28126    value: function _addClickHandler() {
28127      var _this = this;
28128
28129      this.$element.off('click.zf.tabs').on('click.zf.tabs', ".".concat(this.options.linkClass), function (e) {
28130        e.preventDefault();
28131
28132        _this._handleTabChange(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this));
28133      });
28134    }
28135    /**
28136     * Adds keyboard event handlers for items within the tabs.
28137     * @private
28138     */
28139
28140  }, {
28141    key: "_addKeyHandler",
28142    value: function _addKeyHandler() {
28143      var _this = this;
28144
28145      this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function (e) {
28146        if (e.which === 9) return;
28147        var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
28148            $elements = $element.parent('ul').children('li'),
28149            $prevElement,
28150            $nextElement;
28151        $elements.each(function (i) {
28152          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) {
28153            if (_this.options.wrapOnKeys) {
28154              $prevElement = i === 0 ? $elements.last() : $elements.eq(i - 1);
28155              $nextElement = i === $elements.length - 1 ? $elements.first() : $elements.eq(i + 1);
28156            } else {
28157              $prevElement = $elements.eq(Math.max(0, i - 1));
28158              $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1));
28159            }
28160
28161            return;
28162          }
28163        }); // handle keyboard event with keyboard util
28164
28165        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'Tabs', {
28166          open: function open() {
28167            $element.find('[role="tab"]').focus();
28168
28169            _this._handleTabChange($element);
28170          },
28171          previous: function previous() {
28172            $prevElement.find('[role="tab"]').focus();
28173
28174            _this._handleTabChange($prevElement);
28175          },
28176          next: function next() {
28177            $nextElement.find('[role="tab"]').focus();
28178
28179            _this._handleTabChange($nextElement);
28180          },
28181          handled: function handled() {
28182            e.preventDefault();
28183          }
28184        });
28185      });
28186    }
28187    /**
28188     * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.
28189     * @param {jQuery} $target - Tab to open.
28190     * @param {boolean} historyHandled - browser has already handled a history update
28191     * @fires Tabs#change
28192     * @function
28193     */
28194
28195  }, {
28196    key: "_handleTabChange",
28197    value: function _handleTabChange($target, historyHandled) {
28198      // With `activeCollapse`, if the target is the active Tab, collapse it.
28199      if ($target.hasClass("".concat(this.options.linkActiveClass))) {
28200        if (this.options.activeCollapse) {
28201          this._collapse();
28202        }
28203
28204        return;
28205      }
28206
28207      var $oldTab = this.$element.find(".".concat(this.options.linkClass, ".").concat(this.options.linkActiveClass)),
28208          $tabLink = $target.find('[role="tab"]'),
28209          target = $tabLink.attr('data-tabs-target'),
28210          anchor = target && target.length ? "#".concat(target) : $tabLink[0].hash,
28211          $targetContent = this.$tabContent.find(anchor); //close old tab
28212
28213      this._collapseTab($oldTab); //open new tab
28214
28215
28216      this._openTab($target); //either replace or update browser history
28217
28218
28219      if (this.options.deepLink && !historyHandled) {
28220        if (this.options.updateHistory) {
28221          history.pushState({}, '', anchor);
28222        } else {
28223          history.replaceState({}, '', anchor);
28224        }
28225      }
28226      /**
28227       * Fires when the plugin has successfully changed tabs.
28228       * @event Tabs#change
28229       */
28230
28231
28232      this.$element.trigger('change.zf.tabs', [$target, $targetContent]); //fire to children a mutation event
28233
28234      $targetContent.find("[data-mutate]").trigger("mutateme.zf.trigger");
28235    }
28236    /**
28237     * Opens the tab `$targetContent` defined by `$target`.
28238     * @param {jQuery} $target - Tab to open.
28239     * @function
28240     */
28241
28242  }, {
28243    key: "_openTab",
28244    value: function _openTab($target) {
28245      var $tabLink = $target.find('[role="tab"]'),
28246          hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),
28247          $targetContent = this.$tabContent.find("#".concat(hash));
28248      $target.addClass("".concat(this.options.linkActiveClass));
28249      $tabLink.attr({
28250        'aria-selected': 'true',
28251        'tabindex': '0'
28252      });
28253      $targetContent.addClass("".concat(this.options.panelActiveClass)).removeAttr('aria-hidden');
28254    }
28255    /**
28256     * Collapses `$targetContent` defined by `$target`.
28257     * @param {jQuery} $target - Tab to collapse.
28258     * @function
28259     */
28260
28261  }, {
28262    key: "_collapseTab",
28263    value: function _collapseTab($target) {
28264      var $target_anchor = $target.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({
28265        'aria-selected': 'false',
28266        'tabindex': -1
28267      });
28268      jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat($target_anchor.attr('aria-controls'))).removeClass("".concat(this.options.panelActiveClass)).attr({
28269        'aria-hidden': 'true'
28270      });
28271    }
28272    /**
28273     * Collapses the active Tab.
28274     * @fires Tabs#collapse
28275     * @function
28276     */
28277
28278  }, {
28279    key: "_collapse",
28280    value: function _collapse() {
28281      var $activeTab = this.$element.find(".".concat(this.options.linkClass, ".").concat(this.options.linkActiveClass));
28282
28283      if ($activeTab.length) {
28284        this._collapseTab($activeTab);
28285        /**
28286        * Fires when the plugin has successfully collapsed tabs.
28287        * @event Tabs#collapse
28288        */
28289
28290
28291        this.$element.trigger('collapse.zf.tabs', [$activeTab]);
28292      }
28293    }
28294    /**
28295     * Public method for selecting a content pane to display.
28296     * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.
28297     * @param {boolean} historyHandled - browser has already handled a history update
28298     * @function
28299     */
28300
28301  }, {
28302    key: "selectTab",
28303    value: function selectTab(elem, historyHandled) {
28304      var idStr, hashIdStr;
28305
28306      if (_typeof(elem) === 'object') {
28307        idStr = elem[0].id;
28308      } else {
28309        idStr = elem;
28310      }
28311
28312      if (idStr.indexOf('#') < 0) {
28313        hashIdStr = "#".concat(idStr);
28314      } else {
28315        hashIdStr = idStr;
28316        idStr = idStr.slice(1);
28317      }
28318
28319      var $target = this.$tabTitles.has("[href$=\"".concat(hashIdStr, "\"],[data-tabs-target=\"").concat(idStr, "\"]")).first();
28320
28321      this._handleTabChange($target, historyHandled);
28322    }
28323  }, {
28324    key: "_setHeight",
28325
28326    /**
28327     * Sets the height of each panel to the height of the tallest panel.
28328     * If enabled in options, gets called on media query change.
28329     * If loading content via external source, can be called directly or with _reflow.
28330     * If enabled with `data-match-height="true"`, tabs sets to equal height
28331     * @function
28332     * @private
28333     */
28334    value: function _setHeight() {
28335      var max = 0,
28336          _this = this; // Lock down the `this` value for the root tabs object
28337
28338
28339      this.$tabContent.find(".".concat(this.options.panelClass)).css('height', '').each(function () {
28340        var panel = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this),
28341            isActive = panel.hasClass("".concat(_this.options.panelActiveClass)); // get the options from the parent instead of trying to get them from the child
28342
28343        if (!isActive) {
28344          panel.css({
28345            'visibility': 'hidden',
28346            'display': 'block'
28347          });
28348        }
28349
28350        var temp = this.getBoundingClientRect().height;
28351
28352        if (!isActive) {
28353          panel.css({
28354            'visibility': '',
28355            'display': ''
28356          });
28357        }
28358
28359        max = temp > max ? temp : max;
28360      }).css('height', "".concat(max, "px"));
28361    }
28362    /**
28363     * Destroys an instance of tabs.
28364     * @fires Tabs#destroyed
28365     */
28366
28367  }, {
28368    key: "_destroy",
28369    value: function _destroy() {
28370      this.$element.find(".".concat(this.options.linkClass)).off('.zf.tabs').hide().end().find(".".concat(this.options.panelClass)).hide();
28371
28372      if (this.options.matchHeight) {
28373        if (this._setHeightMqHandler != null) {
28374          jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._setHeightMqHandler);
28375        }
28376      }
28377
28378      if (this.options.deepLink) {
28379        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._checkDeepLink);
28380      }
28381
28382      if (this.onLoadListener) {
28383        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
28384      }
28385    }
28386  }]);
28387
28388  return Tabs;
28389}
28389(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
28390
28391Tabs.defaults = {
28392  /**
28393   * Link the location hash to the active pane.
28394   * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.
28395   * @option
28396   * @type {boolean}
28397   * @default false
28398   */
28399  deepLink: false,
28400
28401  /**
28402   * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible
28403   * @option
28404   * @type {boolean}
28405   * @default false
28406   */
28407  deepLinkSmudge: false,
28408
28409  /**
28410   * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment
28411   * @option
28412   * @type {number}
28413   * @default 300
28414   */
28415  deepLinkSmudgeDelay: 300,
28416
28417  /**
28418   * If `deepLink` is enabled, update the browser history with the open tab
28419   * @option
28420   * @type {boolean}
28421   * @default false
28422   */
28423  updateHistory: false,
28424
28425  /**
28426   * Allows the window to scroll to content of active pane on load.
28427   * Not recommended if more than one tab panel per page.
28428   * @option
28429   * @type {boolean}
28430   * @default false
28431   */
28432  autoFocus: false,
28433
28434  /**
28435   * Allows keyboard input to 'wrap' around the tab links.
28436   * @option
28437   * @type {boolean}
28438   * @default true
28439   */
28440  wrapOnKeys: true,
28441
28442  /**
28443   * Allows the tab content panes to match heights if set to true.
28444   * @option
28445   * @type {boolean}
28446   * @default false
28447   */
28448  matchHeight: false,
28449
28450  /**
28451   * Allows active tabs to collapse when clicked.
28452   * @option
28453   * @type {boolean}
28454   * @default false
28455   */
28456  activeCollapse: false,
28457
28458  /**
28459   * Class applied to `li`'s in tab link list.
28460   * @option
28461   * @type {string}
28462   * @default 'tabs-title'
28463   */
28464  linkClass: 'tabs-title',
28465
28466  /**
28467   * Class applied to the active `li` in tab link list.
28468   * @option
28469   * @type {string}
28470   * @default 'is-active'
28471   */
28472  linkActiveClass: 'is-active',
28473
28474  /**
28475   * Class applied to the content containers.
28476   * @option
28477   * @type {string}
28478   * @default 'tabs-panel'
28479   */
28480  panelClass: 'tabs-panel',
28481
28482  /**
28483   * Class applied to the active content container.
28484   * @option
28485   * @type {string}
28486   * @default 'is-active'
28487   */
28488  panelActiveClass: 'is-active'
28489};
28490
28491
28492/***/ }),
28493
28494/***/ 18:
28495/*!*****************************************************!*\
28496  !*** multi ./js/entries/plugins/foundation.tabs.js ***!
28497  \*****************************************************/
28498/*! no static exports found */
28499/***/ (function(module, exports, __webpack_require__) {
28500
28501module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.tabs.js */"./js/entries/plugins/foundation.tabs.js");
28502
28503
28504/***/ }),
28505
28506/***/ "jquery":
28507/*!********************************************************************************************!*\
28508  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
28509  \********************************************************************************************/
28510/*! no static exports found */
28511/***/ (function(module, exports) {
28512
28513module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
28514
28515/***/ })
28516
28517/******/ });
28518});
28519//# sourceMappingURL=foundation.tabs.js.map
28520(function webpackUniversalModuleDefinition(root, factory) {
28521	if(typeof exports === 'object' && typeof module === 'object')
28522		module.exports = factory(require("./foundation.accordionMenu"), require("./foundation.core"), require("./foundation.drilldown"), require("./foundation.dropdownMenu"), require("./foundation.util.mediaQuery"), require("jquery"));
28523	else if(typeof define === 'function' && define.amd)
28524		define(["./foundation.accordionMenu", "./foundation.core", "./foundation.drilldown", "./foundation.dropdownMenu", "./foundation.util.mediaQuery", "jquery"], factory);
28525	else if(typeof exports === 'object')
28526		exports["foundation.responsiveMenu"] = factory(require("./foundation.accordionMenu"), require("./foundation.core"), require("./foundation.drilldown"), require("./foundation.dropdownMenu"), require("./foundation.util.mediaQuery"), require("jquery"));
28527	else
28528		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.responsiveMenu"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.accordionMenu"], root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.drilldown"], root["__FOUNDATION_EXTERNAL__"]["foundation.dropdownMenu"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["jQuery"]);
28529})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_accordionMenu__, __WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_drilldown__, __WEBPACK_EXTERNAL_MODULE__foundation_dropdownMenu__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
28530return /******/ (function(modules) { // webpackBootstrap
28531/******/ 	// The module cache
28532/******/ 	var installedModules = {};
28533/******/
28534/******/ 	// The require function
28535/******/ 	function __webpack_require__(moduleId) {
28536/******/
28537/******/ 		// Check if module is in cache
28538/******/ 		if(installedModules[moduleId]) {
28539/******/ 			return installedModules[moduleId].exports;
28540/******/ 		}
28541/******/ 		// Create a new module (and put it into the cache)
28542/******/ 		var module = installedModules[moduleId] = {
28543/******/ 			i: moduleId,
28544/******/ 			l: false,
28545/******/ 			exports: {}
28546/******/ 		};
28547/******/
28548/******/ 		// Execute the module function
28549/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
28550/******/
28551/******/ 		// Flag the module as loaded
vendor: 4,170 bytes, lines 28552-28633
28552/******/ 		module.l = true;
28553/******/
28554/******/ 		// Return the exports of the module
28555/******/ 		return module.exports;
28556/******/ 	}
28557/******/
28558/******/
28559/******/ 	// expose the modules object (__webpack_modules__)
28560/******/ 	__webpack_require__.m = modules;
28561/******/
28562/******/ 	// expose the module cache
28563/******/ 	__webpack_require__.c = installedModules;
28564/******/
28565/******/ 	// define getter function for harmony exports
28566/******/ 	__webpack_require__.d = function(exports, name, getter) {
28567/******/ 		if(!__webpack_require__.o(exports, name)) {
28568/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
28569/******/ 		}
28570/******/ 	};
28571/******/
28572/******/ 	// define __esModule on exports
28573/******/ 	__webpack_require__.r = function(exports) {
28574/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
28575/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
28576/******/ 		}
28577/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
28578/******/ 	};
28579/******/
28580/******/ 	// create a fake namespace object
28581/******/ 	// mode & 1: value is a module id, require it
28582/******/ 	// mode & 2: merge all properties of value into the ns
28583/******/ 	// mode & 4: return value when already ns object
28584/******/ 	// mode & 8|1: behave like require
28585/******/ 	__webpack_require__.t = function(value, mode) {
28586/******/ 		if(mode & 1) value = __webpack_require__(value);
28587/******/ 		if(mode & 8) return value;
28588/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
28589/******/ 		var ns = Object.create(null);
28590/******/ 		__webpack_require__.r(ns);
28591/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
28592/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
28593/******/ 		return ns;
28594/******/ 	};
28595/******/
28596/******/ 	// getDefaultExport function for compatibility with non-harmony modules
28597/******/ 	__webpack_require__.n = function(module) {
28598/******/ 		var getter = module && module.__esModule ?
28599/******/ 			function getDefault() { return module['default']; } :
28600/******/ 			function getModuleExports() { return module; };
28601/******/ 		__webpack_require__.d(getter, 'a', getter);
28602/******/ 		return getter;
28603/******/ 	};
28604/******/
28605/******/ 	// Object.prototype.hasOwnProperty.call
28606/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
28607/******/
28608/******/ 	// __webpack_public_path__
28609/******/ 	__webpack_require__.p = "";
28610/******/
28611/******/
28612/******/ 	// Load entry module and return exports
28613/******/ 	return __webpack_require__(__webpack_require__.s = 12);
28614/******/ })
28615/************************************************************************/
28616/******/ ({
28617
28618/***/ "./foundation.accordionMenu":
28619/*!****************************************************************************************************************************************************************************************************!*\
28620  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.accordionMenu"],"amd":"./foundation.accordionMenu","commonjs":"./foundation.accordionMenu","commonjs2":"./foundation.accordionMenu"} ***!
28621  \****************************************************************************************************************************************************************************************************/
28622/*! no static exports found */
28623/***/ (function(module, exports) {
28624
28625module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_accordionMenu__;
28626
28627/***/ }),
28628
28629/***/ "./foundation.core":
28630/*!****************************************************************************************************************************************************************!*\
28631  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
28632  \****************************************************************************************************************************************************************/
28633/*! no static exports found */
28634/***/ (function(module, exports) {
28635
28636module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
28637
28638/***/ }),
28639
28640/***/ "./foundation.drilldown":
28641/*!************************************************************************************************************************************************************************************!*\
28642  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.drilldown"],"amd":"./foundation.drilldown","commonjs":"./foundation.drilldown","commonjs2":"./foundation.drilldown"} ***!
28643  \************************************************************************************************************************************************************************************/
28644/*! no static exports found */
28645/***/ (function(module, exports) {
28646
28647module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_drilldown__;
28648
28649/***/ }),
28650
28651/***/ "./foundation.dropdownMenu":
28652/*!************************************************************************************************************************************************************************************************!*\
28653  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.dropdownMenu"],"amd":"./foundation.dropdownMenu","commonjs":"./foundation.dropdownMenu","commonjs2":"./foundation.dropdownMenu"} ***!
28654  \************************************************************************************************************************************************************************************************/
28655/*! no static exports found */
28656/***/ (function(module, exports) {
28657
28658module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_dropdownMenu__;
28659
28660/***/ }),
28661
28662/***/ "./foundation.util.mediaQuery":
28663/*!************************************************************************************************************************************************************************************************************!*\
28664  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***!
28665  \************************************************************************************************************************************************************************************************************/
28666/*! no static exports found */
28667/***/ (function(module, exports) {
28668
28669module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;
28670
28671/***/ }),
28672
28673/***/ "./js/entries/plugins/foundation.responsiveMenu.js":
28674/*!*********************************************************!*\
28675  !*** ./js/entries/plugins/foundation.responsiveMenu.js ***!
28676  \*********************************************************/
28677/*! exports provided: Foundation, ResponsiveMenu */
28678/***/ (function(module, __webpack_exports__, __webpack_require__) {
28679
28680"use strict";
28681__webpack_require__.r(__webpack_exports__);
28682/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
28683/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
28684/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
28685
28686/* harmony import */ var _foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.responsiveMenu */ "./js/foundation.responsiveMenu.js");
28687/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResponsiveMenu", function() { return _foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_1__["ResponsiveMenu"]; });
28688
28689
28690
28691_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_1__["ResponsiveMenu"], 'ResponsiveMenu');
28692
28693
28694/***/ }),
28695
vendor: 4,300 bytes, lines 28696-28734
28696/***/ "./js/foundation.responsiveMenu.js":
28697/*!*****************************************!*\
28698  !*** ./js/foundation.responsiveMenu.js ***!
28699  \*****************************************/
28700/*! exports provided: ResponsiveMenu */
28701/***/ (function(module, __webpack_exports__, __webpack_require__) {
28702
28703"use strict";
28704__webpack_require__.r(__webpack_exports__);
28705/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsiveMenu", function() { return ResponsiveMenu; });
28706/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
28707/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
28708/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery");
28709/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__);
28710/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
28711/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__);
28712/* harmony import */ var _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.dropdownMenu */ "./foundation.dropdownMenu");
28713/* harmony import */ var _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_3__);
28714/* harmony import */ var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.drilldown */ "./foundation.drilldown");
28715/* harmony import */ var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_drilldown__WEBPACK_IMPORTED_MODULE_4__);
28716/* harmony import */ var _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.accordionMenu */ "./foundation.accordionMenu");
28717/* harmony import */ var _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_5__);
28718
28719
28720function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
28721
28722function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
28723
28724function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
28725
28726function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
28727
28728function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
28729
28730function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
28731
28732function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
28733
28734function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
28734onstructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
28735
28736function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
28737
28738
28739
28740
28741
28742
28743
28744
28745var MenuPlugins = {
28746  dropdown: {
28747    cssClass: 'dropdown',
28748    plugin: _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_3__["DropdownMenu"]
28749  },
28750  drilldown: {
28751    cssClass: 'drilldown',
28752    plugin: _foundation_drilldown__WEBPACK_IMPORTED_MODULE_4__["Drilldown"]
28753  },
28754  accordion: {
28755    cssClass: 'accordion-menu',
28756    plugin: _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_5__["AccordionMenu"]
28757  }
28758}; // import "foundation.util.triggers.js";
28759
28760/**
28761 * ResponsiveMenu module.
28762 * @module foundation.responsiveMenu
28763 * @requires foundation.util.triggers
28764 * @requires foundation.util.mediaQuery
28765 */
28766
28767var ResponsiveMenu =
28768/*#__PURE__*/
28769function (_Plugin) {
28770  _inherits(ResponsiveMenu, _Plugin);
28771
28772  function ResponsiveMenu() {
28773    _classCallCheck(this, ResponsiveMenu);
28774
28775    return _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveMenu).apply(this, arguments));
28776  }
28777
28778  _createClass(ResponsiveMenu, [{
28779    key: "_setup",
28780
28781    /**
28782     * Creates a new instance of a responsive menu.
28783     * @class
28784     * @name ResponsiveMenu
28785     * @fires ResponsiveMenu#init
28786     * @param {jQuery} element - jQuery object to make into a dropdown menu.
28787     * @param {Object} options - Overrides to the default plugin settings.
28788     */
28789    value: function _setup(element, options) {
28790      this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);
28791      this.rules = this.$element.data('responsive-menu');
28792      this.currentMq = null;
28793      this.currentPlugin = null;
28794      this.className = 'ResponsiveMenu'; // ie9 back compat
28795
28796      this._init();
28797
28798      this._events();
28799    }
28800    /**
28801     * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.
28802     * @function
28803     * @private
28804     */
28805
28806  }, {
28807    key: "_init",
28808    value: function _init() {
28809      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules
28810
28811
28812      if (typeof this.rules === 'string') {
28813        var rulesTree = {}; // Parse rules from "classes" pulled from data attribute
28814
28815        var rules = this.rules.split(' '); // Iterate through every rule found
28816
28817        for (var i = 0; i < rules.length; i++) {
28818          var rule = rules[i].split('-');
28819          var ruleSize = rule.length > 1 ? rule[0] : 'small';
28820          var rulePlugin = rule.length > 1 ? rule[1] : rule[0];
28821
28822          if (MenuPlugins[rulePlugin] !== null) {
28823            rulesTree[ruleSize] = MenuPlugins[rulePlugin];
28824          }
28825        }
28826
28827        this.rules = rulesTree;
28828      }
28829
28830      if (!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)) {
28831        this._checkMediaQueries();
28832      } // Add data-mutate since children may need it.
28833
28834
28835      this.$element.attr('data-mutate', this.$element.attr('data-mutate') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'responsive-menu'));
28836    }
28837    /**
28838     * Initializes events for the Menu.
28839     * @function
28840     * @private
28841     */
28842
28843  }, {
28844    key: "_events",
28845    value: function _events() {
28846      var _this = this;
28847
28848      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function () {
28849        _this._checkMediaQueries();
28850      }); // $(window).on('resize.zf.ResponsiveMenu', function() {
28851      //   _this._checkMediaQueries();
28852      // });
28853    }
28854    /**
28855     * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.
28856     * @function
28857     * @private
28858     */
28859
28860  }, {
28861    key: "_checkMediaQueries",
28862    value: function _checkMediaQueries() {
28863      var matchedMq,
28864          _this = this; // Iterate through each rule and find the last matching rule
28865
28866
28867      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules, function (key) {
28868        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(key)) {
28869          matchedMq = key;
28870        }
28871      }); // No match? No dice
28872
28873      if (!matchedMq) return; // Plugin already initialized? We good
28874
28875      if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; // Remove existing plugin-specific CSS classes
28876
28877      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins, function (key, value) {
28878        _this.$element.removeClass(value.cssClass);
28879      }); // Add the CSS class for the new plugin
28880
28881      this.$element.addClass(this.rules[matchedMq].cssClass); // Create an instance of the new plugin
28882
28883      if (this.currentPlugin) this.currentPlugin.destroy();
28884      this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});
28885    }
28886    /**
28887     * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.
28888     * @function
28889     */
28890
28891  }, {
28892    key: "_destroy",
28893    value: function _destroy() {
28894      this.currentPlugin.destroy();
28895      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('.zf.ResponsiveMenu');
28896    }
28897  }]);
28898
28899  return ResponsiveMenu;
28900}
vendor: 4,647 bytes, lines 28900-29001
28900(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
28901
28902ResponsiveMenu.defaults = {};
28903
28904
28905/***/ }),
28906
28907/***/ 12:
28908/*!***************************************************************!*\
28909  !*** multi ./js/entries/plugins/foundation.responsiveMenu.js ***!
28910  \***************************************************************/
28911/*! no static exports found */
28912/***/ (function(module, exports, __webpack_require__) {
28913
28914module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.responsiveMenu.js */"./js/entries/plugins/foundation.responsiveMenu.js");
28915
28916
28917/***/ }),
28918
28919/***/ "jquery":
28920/*!********************************************************************************************!*\
28921  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
28922  \********************************************************************************************/
28923/*! no static exports found */
28924/***/ (function(module, exports) {
28925
28926module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
28927
28928/***/ })
28929
28930/******/ });
28931});
28932//# sourceMappingURL=foundation.responsiveMenu.js.map
28933(function webpackUniversalModuleDefinition(root, factory) {
28934	if(typeof exports === 'object' && typeof module === 'object')
28935		module.exports = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery"));
28936	else if(typeof define === 'function' && define.amd)
28937		define(["./foundation.core", "./foundation.util.mediaQuery", "./foundation.util.motion", "jquery"], factory);
28938	else if(typeof exports === 'object')
28939		exports["foundation.responsiveToggle"] = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery"));
28940	else
28941		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.responsiveToggle"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]);
28942})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
28943return /******/ (function(modules) { // webpackBootstrap
28944/******/ 	// The module cache
28945/******/ 	var installedModules = {};
28946/******/
28947/******/ 	// The require function
28948/******/ 	function __webpack_require__(moduleId) {
28949/******/
28950/******/ 		// Check if module is in cache
28951/******/ 		if(installedModules[moduleId]) {
28952/******/ 			return installedModules[moduleId].exports;
28953/******/ 		}
28954/******/ 		// Create a new module (and put it into the cache)
28955/******/ 		var module = installedModules[moduleId] = {
28956/******/ 			i: moduleId,
28957/******/ 			l: false,
28958/******/ 			exports: {}
28959/******/ 		};
28960/******/
28961/******/ 		// Execute the module function
28962/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
28963/******/
28964/******/ 		// Flag the module as loaded
28965/******/ 		module.l = true;
28966/******/
28967/******/ 		// Return the exports of the module
28968/******/ 		return module.exports;
28969/******/ 	}
28970/******/
28971/******/
28972/******/ 	// expose the modules object (__webpack_modules__)
28973/******/ 	__webpack_require__.m = modules;
28974/******/
28975/******/ 	// expose the module cache
28976/******/ 	__webpack_require__.c = installedModules;
28977/******/
28978/******/ 	// define getter function for harmony exports
28979/******/ 	__webpack_require__.d = function(exports, name, getter) {
28980/******/ 		if(!__webpack_require__.o(exports, name)) {
28981/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
28982/******/ 		}
28983/******/ 	};
28984/******/
28985/******/ 	// define __esModule on exports
28986/******/ 	__webpack_require__.r = function(exports) {
28987/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
28988/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
28989/******/ 		}
28990/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
28991/******/ 	};
28992/******/
28993/******/ 	// create a fake namespace object
28994/******/ 	// mode & 1: value is a module id, require it
28995/******/ 	// mode & 2: merge all properties of value into the ns
28996/******/ 	// mode & 4: return value when already ns object
28997/******/ 	// mode & 8|1: behave like require
28998/******/ 	__webpack_require__.t = function(value, mode) {
28999/******/ 		if(mode & 1) value = __webpack_require__(value);
29000/******/ 		if(mode & 8) return value;
29001/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 3,553 bytes, lines 29001-29063
29001dule) return value;
29002/******/ 		var ns = Object.create(null);
29003/******/ 		__webpack_require__.r(ns);
29004/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
29005/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
29006/******/ 		return ns;
29007/******/ 	};
29008/******/
29009/******/ 	// getDefaultExport function for compatibility with non-harmony modules
29010/******/ 	__webpack_require__.n = function(module) {
29011/******/ 		var getter = module && module.__esModule ?
29012/******/ 			function getDefault() { return module['default']; } :
29013/******/ 			function getModuleExports() { return module; };
29014/******/ 		__webpack_require__.d(getter, 'a', getter);
29015/******/ 		return getter;
29016/******/ 	};
29017/******/
29018/******/ 	// Object.prototype.hasOwnProperty.call
29019/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
29020/******/
29021/******/ 	// __webpack_public_path__
29022/******/ 	__webpack_require__.p = "";
29023/******/
29024/******/
29025/******/ 	// Load entry module and return exports
29026/******/ 	return __webpack_require__(__webpack_require__.s = 13);
29027/******/ })
29028/************************************************************************/
29029/******/ ({
29030
29031/***/ "./foundation.core":
29032/*!****************************************************************************************************************************************************************!*\
29033  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
29034  \****************************************************************************************************************************************************************/
29035/*! no static exports found */
29036/***/ (function(module, exports) {
29037
29038module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
29039
29040/***/ }),
29041
29042/***/ "./foundation.util.mediaQuery":
29043/*!************************************************************************************************************************************************************************************************************!*\
29044  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***!
29045  \************************************************************************************************************************************************************************************************************/
29046/*! no static exports found */
29047/***/ (function(module, exports) {
29048
29049module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;
29050
29051/***/ }),
29052
29053/***/ "./foundation.util.motion":
29054/*!********************************************************************************************************************************************************************************************!*\
29055  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***!
29056  \********************************************************************************************************************************************************************************************/
29057/*! no static exports found */
29058/***/ (function(module, exports) {
29059
29060module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;
29061
29062/***/ }),
29063
29064/***/ "./js/entries/plugins/foundation.responsiveToggle.js":
29065/*!***********************************************************!*\
29066  !*** ./js/entries/plugins/foundation.responsiveToggle.js ***!
29067  \***********************************************************/
29068/*! exports provided: Foundation, ResponsiveToggle */
29069/***/ (function(module, __webpack_exports__, __webpack_require__) {
29070
29071"use strict";
29072__webpack_require__.r(__webpack_exports__);
29073/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
29074/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
29075/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
29076
29077/* harmony import */ var _foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.responsiveToggle */ "./js/foundation.responsiveToggle.js");
29078/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResponsiveToggle", function() { return _foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__["ResponsiveToggle"]; });
29079
29080
29081
29082_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__["ResponsiveToggle"], 'ResponsiveToggle');
29083
29084
29085/***/ }),
29086
29087/***/ "./js/foundation.responsiveToggle.js":
29088/*!*******************************************!*\
29089  !*** ./js/foundation.responsiveToggle.js ***!
29090  \*******************************************/
29091/*! exports provided: ResponsiveToggle */
29092/***/ (function(module, __webpack_exports__, __webpack_require__) {
29093
29094"use strict";
29095__webpack_require__.r(__webpack_exports__);
29096/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsiveToggle", function() { return ResponsiveToggle; });
29097/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
29098/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
29099/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery");
29100/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__);
29101/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
29102/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);
29103/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
29104/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__);
29105
29106
29107function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
29108
29109function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
29110
29111function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
29112
29113function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
29114
29115function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
29116
29117function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
29118
29119function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
29120
29121function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
29122
29123function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
29124
29125
29126
29127
29128
29129/**
29130 * ResponsiveToggle module.
29131 * @module foundation.responsiveToggle
29132 * @requires foundation.util.mediaQuery
29133 * @requires foundation.util.motion
29134 */
29135
29136var ResponsiveToggle =
29137/*#__PURE__*/
29138function (_Plugin) {
29139  _inherits(ResponsiveToggle, _Plugin);
29140
29141  function ResponsiveToggle() {
29142    _classCallCheck(this, ResponsiveToggle);
29143
29144    return _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveToggle).apply(this, arguments));
29145  }
29146
29147  _createClass(ResponsiveToggle, [{
29148    key: "_setup",
29149
29150    /**
29151     * Creates a new instance of Tab Bar.
29152     * @class
29153     * @name ResponsiveToggle
29154     * @fires ResponsiveToggle#init
29155     * @param {jQuery} element - jQuery object to attach tab bar functionality to.
29156     * @param {Object} options - Overrides to the default plugin settings.
29157     */
29158    value: function _setup(element, options) {
29159      this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);
29160      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);
29161      this.className = 'ResponsiveToggle'; // ie9 back compat
29162
29163      this._init();
29164
29165      this._events();
29166    }
29167    /**
29168     * Initializes the tab bar by finding the target element, toggling element, and running update().
29169     * @function
29170     * @private
29171     */
29172
29173  }, {
29174    key: "_init",
29175    value: function _init() {
29176      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();
29177
29178      var targetID = this.$element.data('responsive-toggle');
29179
29180      if (!targetID) {
29181        console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');
29182      }
29183
29184      this.$targetMenu = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetID));
29185      this.$toggler = this.$element.find('[data-toggle]').filter(function () {
29186        var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
29187        return target === targetID || target === "";
29188      });
29189      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, this.options, this.$targetMenu.data()); // If they were set, parse the animation classes
29190
29191      if (this.options.animate) {
29192        var input = this.options.animate.split(' ');
29193        this.animationIn = input[0];
29194        this.animationOut = input[1] || null;
29195      }
29196
29197      this._update();
29198    }
29199    /**
29200     * Adds necessary event handlers for the tab bar to work.
29201     * @function
29202     * @private
29203     */
29204
29205  }, {
29206    key: "_events",
29207    value: function _events() {
29208      var _this = this;
29209
29210      this._updateMqHandler = this._update.bind(this);
29211      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._updateMqHandler);
29212      this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));
29213    }
29214    /**
29215     * Checks the current media query to determine if the tab bar should be visible or hidden.
29216     * @function
29217     * @private
29218     */
29219
29220  }, {
29221    key: "_update",
29222    value: function _update() {
29223      // Mobile
29224      if (!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(this.options.hideFor)) {
29225        this.$element.show();
29226        this.$targetMenu.hide();
29227      } // Desktop
29228      else {
29229          this.$element.hide();
29230          this.$targetMenu.show();
29231        }
29232    }
29233    /**
29234     * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.
29235     * @function
29236     * @fires ResponsiveToggle#toggled
29237     */
29238
29239  }, {
29240    key: "toggleMenu",
29241    value: function toggleMenu() {
29242      var _this2 = this;
29243
29244      if (!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(this.options.hideFor)) {
29245        /**
29246         * Fires when the element attached to the tab bar toggles.
29247         * @event ResponsiveToggle#toggled
29248         */
29249        if (this.options.animate) {
29250          if (this.$targetMenu.is(':hidden')) {
29251            _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateIn(this.$targetMenu, this.animationIn, function () {
29252              _this2.$element.trigger('toggled.zf.responsiveToggle');
29253
29254              _this2.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');
29255            });
29256          } else {
29257            _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(this.$targetMenu, this.animationOut, function () {
29258              _this2.$element.trigger('toggled.zf.responsiveToggle');
29259            });
29260          }
29261        } else {
29262          this.$targetMenu.toggle(0);
29263          this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');
29264          this.$element.trigger('toggled.zf.responsiveToggle');
29265        }
29266      }
29267    }
29268  }, {
29269    key: "_destroy",
29270    value: function _destroy() {
29271      this.$element.off('.zf.responsiveToggle');
29272      this.$toggler.off('.zf.responsiveToggle');
29273      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._updateMqHandler);
29274    }
29275  }]);
29276
29277  return ResponsiveToggle;
29278}
vendor: 5,390 bytes, lines 29278-29395
29278(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]);
29279
29280ResponsiveToggle.defaults = {
29281  /**
29282   * The breakpoint after which the menu is always shown, and the tab bar is hidden.
29283   * @option
29284   * @type {string}
29285   * @default 'medium'
29286   */
29287  hideFor: 'medium',
29288
29289  /**
29290   * To decide if the toggle should be animated or not.
29291   * @option
29292   * @type {boolean}
29293   * @default false
29294   */
29295  animate: false
29296};
29297
29298
29299/***/ }),
29300
29301/***/ 13:
29302/*!*****************************************************************!*\
29303  !*** multi ./js/entries/plugins/foundation.responsiveToggle.js ***!
29304  \*****************************************************************/
29305/*! no static exports found */
29306/***/ (function(module, exports, __webpack_require__) {
29307
29308module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.responsiveToggle.js */"./js/entries/plugins/foundation.responsiveToggle.js");
29309
29310
29311/***/ }),
29312
29313/***/ "jquery":
29314/*!********************************************************************************************!*\
29315  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
29316  \********************************************************************************************/
29317/*! no static exports found */
29318/***/ (function(module, exports) {
29319
29320module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
29321
29322/***/ })
29323
29324/******/ });
29325});
29326//# sourceMappingURL=foundation.responsiveToggle.js.map
29327(function webpackUniversalModuleDefinition(root, factory) {
29328	if(typeof exports === 'object' && typeof module === 'object')
29329		module.exports = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("./foundation.util.touch"), require("jquery"));
29330	else if(typeof define === 'function' && define.amd)
29331		define(["./foundation.core", "./foundation.util.keyboard", "./foundation.util.mediaQuery", "./foundation.util.motion", "./foundation.util.touch", "jquery"], factory);
29332	else if(typeof exports === 'object')
29333		exports["foundation.reveal"] = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("./foundation.util.touch"), require("jquery"));
29334	else
29335		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.reveal"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.touch"], root["jQuery"]);
29336})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
29337return /******/ (function(modules) { // webpackBootstrap
29338/******/ 	// The module cache
29339/******/ 	var installedModules = {};
29340/******/
29341/******/ 	// The require function
29342/******/ 	function __webpack_require__(moduleId) {
29343/******/
29344/******/ 		// Check if module is in cache
29345/******/ 		if(installedModules[moduleId]) {
29346/******/ 			return installedModules[moduleId].exports;
29347/******/ 		}
29348/******/ 		// Create a new module (and put it into the cache)
29349/******/ 		var module = installedModules[moduleId] = {
29350/******/ 			i: moduleId,
29351/******/ 			l: false,
29352/******/ 			exports: {}
29353/******/ 		};
29354/******/
29355/******/ 		// Execute the module function
29356/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
29357/******/
29358/******/ 		// Flag the module as loaded
29359/******/ 		module.l = true;
29360/******/
29361/******/ 		// Return the exports of the module
29362/******/ 		return module.exports;
29363/******/ 	}
29364/******/
29365/******/
29366/******/ 	// expose the modules object (__webpack_modules__)
29367/******/ 	__webpack_require__.m = modules;
29368/******/
29369/******/ 	// expose the module cache
29370/******/ 	__webpack_require__.c = installedModules;
29371/******/
29372/******/ 	// define getter function for harmony exports
29373/******/ 	__webpack_require__.d = function(exports, name, getter) {
29374/******/ 		if(!__webpack_require__.o(exports, name)) {
29375/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
29376/******/ 		}
29377/******/ 	};
29378/******/
29379/******/ 	// define __esModule on exports
29380/******/ 	__webpack_require__.r = function(exports) {
29381/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
29382/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
29383/******/ 		}
29384/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
29385/******/ 	};
29386/******/
29387/******/ 	// create a fake namespace object
29388/******/ 	// mode & 1: value is a module id, require it
29389/******/ 	// mode & 2: merge all properties of value into the ns
29390/******/ 	// mode & 4: return value when already ns object
29391/******/ 	// mode & 8|1: behave like require
29392/******/ 	__webpack_require__.t = function(value, mode) {
29393/******/ 		if(mode & 1) value = __webpack_require__(value);
29394/******/ 		if(mode & 8) return value;
29395/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 4,227 bytes, lines 29395-29462
29395dule) return value;
29396/******/ 		var ns = Object.create(null);
29397/******/ 		__webpack_require__.r(ns);
29398/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
29399/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
29400/******/ 		return ns;
29401/******/ 	};
29402/******/
29403/******/ 	// getDefaultExport function for compatibility with non-harmony modules
29404/******/ 	__webpack_require__.n = function(module) {
29405/******/ 		var getter = module && module.__esModule ?
29406/******/ 			function getDefault() { return module['default']; } :
29407/******/ 			function getModuleExports() { return module; };
29408/******/ 		__webpack_require__.d(getter, 'a', getter);
29409/******/ 		return getter;
29410/******/ 	};
29411/******/
29412/******/ 	// Object.prototype.hasOwnProperty.call
29413/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
29414/******/
29415/******/ 	// __webpack_public_path__
29416/******/ 	__webpack_require__.p = "";
29417/******/
29418/******/
29419/******/ 	// Load entry module and return exports
29420/******/ 	return __webpack_require__(__webpack_require__.s = 14);
29421/******/ })
29422/************************************************************************/
29423/******/ ({
29424
29425/***/ "./foundation.core":
29426/*!****************************************************************************************************************************************************************!*\
29427  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
29428  \****************************************************************************************************************************************************************/
29429/*! no static exports found */
29430/***/ (function(module, exports) {
29431
29432module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
29433
29434/***/ }),
29435
29436/***/ "./foundation.util.keyboard":
29437/*!****************************************************************************************************************************************************************************************************!*\
29438  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***!
29439  \****************************************************************************************************************************************************************************************************/
29440/*! no static exports found */
29441/***/ (function(module, exports) {
29442
29443module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__;
29444
29445/***/ }),
29446
29447/***/ "./foundation.util.mediaQuery":
29448/*!************************************************************************************************************************************************************************************************************!*\
29449  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***!
29450  \************************************************************************************************************************************************************************************************************/
29451/*! no static exports found */
29452/***/ (function(module, exports) {
29453
29454module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;
29455
29456/***/ }),
29457
29458/***/ "./foundation.util.motion":
29459/*!********************************************************************************************************************************************************************************************!*\
29460  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***!
29461  \********************************************************************************************************************************************************************************************/
29462/*! no static exports found */
29463/***/ (function(module, exports) {
29464
29465module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;
29466
29467/***/ }),
29468
29469/***/ "./foundation.util.touch":
29470/*!****************************************************************************************************************************************************************************************!*\
29471  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.touch"],"amd":"./foundation.util.touch","commonjs":"./foundation.util.touch","commonjs2":"./foundation.util.touch"} ***!
29472  \****************************************************************************************************************************************************************************************/
29473/*! no static exports found */
29474/***/ (function(module, exports) {
29475
29476module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__;
29477
29478/***/ }),
29479
29480/***/ "./js/entries/plugins/foundation.reveal.js":
29481/*!*************************************************!*\
29482  !*** ./js/entries/plugins/foundation.reveal.js ***!
29483  \*************************************************/
29484/*! exports provided: Foundation, Reveal */
29485/***/ (function(module, __webpack_exports__, __webpack_require__) {
29486
29487"use strict";
29488__webpack_require__.r(__webpack_exports__);
29489/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
29490/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
29491/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
29492
29493/* harmony import */ var _foundation_reveal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.reveal */ "./js/foundation.reveal.js");
29494/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Reveal", function() { return _foundation_reveal__WEBPACK_IMPORTED_MODULE_1__["Reveal"]; });
29495
29496
29497
29498_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_reveal__WEBPACK_IMPORTED_MODULE_1__["Reveal"], 'Reveal');
29499
29500
29501/***/ }),
29502
vendor: 4,128 bytes, lines 29503-29540
29503/***/ "./js/foundation.reveal.js":
29504/*!*********************************!*\
29505  !*** ./js/foundation.reveal.js ***!
29506  \*********************************/
29507/*! exports provided: Reveal */
29508/***/ (function(module, __webpack_exports__, __webpack_require__) {
29509
29510"use strict";
29511__webpack_require__.r(__webpack_exports__);
29512/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Reveal", function() { return Reveal; });
29513/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
29514/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
29515/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
29516/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__);
29517/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard");
29518/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__);
29519/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery");
29520/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__);
29521/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
29522/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__);
29523/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
29524/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./foundation.util.touch */ "./foundation.util.touch");
29525/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_touch__WEBPACK_IMPORTED_MODULE_6__);
29526
29527
29528function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
29529
29530function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
29531
29532function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
29533
29534function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
29535
29536function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
29537
29538function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
29539
29540function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o
29540); }; return _getPrototypeOf(o); }
29541
29542function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
29543
29544function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
29545
29546
29547
29548
29549
29550
29551
29552
29553
29554/**
29555 * Reveal module.
29556 * @module foundation.reveal
29557 * @requires foundation.util.keyboard
29558 * @requires foundation.util.touch
29559 * @requires foundation.util.triggers
29560 * @requires foundation.util.mediaQuery
29561 * @requires foundation.util.motion if using animations
29562 */
29563
29564var Reveal =
29565/*#__PURE__*/
29566function (_Plugin) {
29567  _inherits(Reveal, _Plugin);
29568
29569  function Reveal() {
29570    _classCallCheck(this, Reveal);
29571
29572    return _possibleConstructorReturn(this, _getPrototypeOf(Reveal).apply(this, arguments));
29573  }
29574
29575  _createClass(Reveal, [{
29576    key: "_setup",
29577
29578    /**
29579     * Creates a new instance of Reveal.
29580     * @class
29581     * @name Reveal
29582     * @param {jQuery} element - jQuery object to use for the modal.
29583     * @param {Object} options - optional parameters.
29584     */
29585    value: function _setup(element, options) {
29586      this.$element = element;
29587      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Reveal.defaults, this.$element.data(), options);
29588      this.className = 'Reveal'; // ie9 back compat
29589
29590      this._init(); // Touch and Triggers init are idempotent, just need to make sure they are initialized
29591
29592
29593      _foundation_util_touch__WEBPACK_IMPORTED_MODULE_6__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
29594      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_5__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
29595      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('Reveal', {
29596        'ESCAPE': 'close'
29597      });
29598    }
29599    /**
29600     * Initializes the modal by adding the overlay and close buttons, (if selected).
29601     * @private
29602     */
29603
29604  }, {
29605    key: "_init",
29606    value: function _init() {
29607      var _this2 = this;
29608
29609      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"]._init();
29610
29611      this.id = this.$element.attr('id');
29612      this.isActive = false;
29613      this.cached = {
29614        mq: _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].current
29615      };
29616      this.$anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(this.id, "\"]")).length ? jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(this.id, "\"]")) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat(this.id, "\"]"));
29617      this.$anchor.attr({
29618        'aria-controls': this.id,
29619        'aria-haspopup': true,
29620        'tabindex': 0
29621      });
29622
29623      if (this.options.fullScreen || this.$element.hasClass('full')) {
29624        this.options.fullScreen = true;
29625        this.options.overlay = false;
29626      }
29627
29628      if (this.options.overlay && !this.$overlay) {
29629        this.$overlay = this._makeOverlay(this.id);
29630      }
29631
29632      this.$element.attr({
29633        'role': 'dialog',
29634        'aria-hidden': true,
29635        'data-yeti-box': this.id,
29636        'data-resize': this.id
29637      });
29638
29639      if (this.$overlay) {
29640        this.$element.detach().appendTo(this.$overlay);
29641      } else {
29642        this.$element.detach().appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.appendTo));
29643        this.$element.addClass('without-overlay');
29644      }
29645
29646      this._events();
29647
29648      if (this.options.deepLink && window.location.hash === "#".concat(this.id)) {
29649        this.onLoadListener = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
29650          return _this2.open();
29651        });
29652      }
29653    }
29654    /**
29655     * Creates an overlay div to display behind the modal.
29656     * @private
29657     */
29658
29659  }, {
29660    key: "_makeOverlay",
29661    value: function _makeOverlay() {
vendor: 16,116 bytes, lines 29662-30143
29662      var additionalOverlayClasses = '';
29663
29664      if (this.options.additionalOverlayClasses) {
29665        additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;
29666      }
29667
29668      return jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div></div>').addClass('reveal-overlay' + additionalOverlayClasses).appendTo(this.options.appendTo);
29669    }
29670    /**
29671     * Updates position of modal
29672     * TODO:  Figure out if we actually need to cache these values or if it doesn't matter
29673     * @private
29674     */
29675
29676  }, {
29677    key: "_updatePosition",
29678    value: function _updatePosition() {
29679      var width = this.$element.outerWidth();
29680      var outerWidth = jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).width();
29681      var height = this.$element.outerHeight();
29682      var outerHeight = jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height();
29683      var left,
29684          top = null;
29685
29686      if (this.options.hOffset === 'auto') {
29687        left = parseInt((outerWidth - width) / 2, 10);
29688      } else {
29689        left = parseInt(this.options.hOffset, 10);
29690      }
29691
29692      if (this.options.vOffset === 'auto') {
29693        if (height > outerHeight) {
29694          top = parseInt(Math.min(100, outerHeight / 10), 10);
29695        } else {
29696          top = parseInt((outerHeight - height) / 4, 10);
29697        }
29698      } else if (this.options.vOffset !== null) {
29699        top = parseInt(this.options.vOffset, 10);
29700      }
29701
29702      if (top !== null) {
29703        this.$element.css({
29704          top: top + 'px'
29705        });
29706      } // only worry about left if we don't have an overlay or we have a horizontal offset,
29707      // otherwise we're perfectly in the middle
29708
29709
29710      if (!this.$overlay || this.options.hOffset !== 'auto') {
29711        this.$element.css({
29712          left: left + 'px'
29713        });
29714        this.$element.css({
29715          margin: '0px'
29716        });
29717      }
29718    }
29719    /**
29720     * Adds event handlers for the modal.
29721     * @private
29722     */
29723
29724  }, {
29725    key: "_events",
29726    value: function _events() {
29727      var _this3 = this;
29728
29729      var _this = this;
29730
29731      this.$element.on({
29732        'open.zf.trigger': this.open.bind(this),
29733        'close.zf.trigger': function closeZfTrigger(event, $element) {
29734          if (event.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).parents('[data-closable]')[0] === $element) {
29735            // only close reveal when it's explicitly called
29736            return _this3.close.apply(_this3);
29737          }
29738        },
29739        'toggle.zf.trigger': this.toggle.bind(this),
29740        'resizeme.zf.trigger': function resizemeZfTrigger() {
29741          _this._updatePosition();
29742        }
29743      });
29744
29745      if (this.options.closeOnClick && this.options.overlay) {
29746        this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function (e) {
29747          if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target) || !jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document, e.target)) {
29748            return;
29749          }
29750
29751          _this.close();
29752        });
29753      }
29754
29755      if (this.options.deepLink) {
29756        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on("hashchange.zf.reveal:".concat(this.id), this._handleState.bind(this));
29757      }
29758    }
29759    /**
29760     * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.
29761     * @private
29762     */
29763
29764  }, {
29765    key: "_handleState",
29766    value: function _handleState(e) {
29767      if (window.location.hash === '#' + this.id && !this.isActive) {
29768        this.open();
29769      } else {
29770        this.close();
29771      }
29772    }
29773    /**
29774    * Disables the scroll when Reveal is shown to prevent the background from shifting
29775    * @param {number} scrollTop - Scroll to visually apply, window current scroll by default
29776    */
29777
29778  }, {
29779    key: "_disableScroll",
29780    value: function _disableScroll(scrollTop) {
29781      scrollTop = scrollTop || jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop();
29782
29783      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()) {
29784        jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top", -scrollTop);
29785      }
29786    }
29787    /**
29788    * Reenables the scroll when Reveal closes
29789    * @param {number} scrollTop - Scroll to restore, html "top" property by default (as set by `_disableScroll`)
29790    */
29791
29792  }, {
29793    key: "_enableScroll",
29794    value: function _enableScroll(scrollTop) {
29795      scrollTop = scrollTop || parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top"));
29796
29797      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()) {
29798        jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top", "");
29799        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop(-scrollTop);
29800      }
29801    }
29802    /**
29803     * Opens the modal controlled by `this.$anchor`, and closes all others by default.
29804     * @function
29805     * @fires Reveal#closeme
29806     * @fires Reveal#open
29807     */
29808
29809  }, {
29810    key: "open",
29811    value: function open() {
29812      var _this4 = this;
29813
29814      // either update or replace browser history
29815      var hash = "#".concat(this.id);
29816
29817      if (this.options.deepLink && window.location.hash !== hash) {
29818        if (window.history.pushState) {
29819          if (this.options.updateHistory) {
29820            window.history.pushState({}, '', hash);
29821          } else {
29822            window.history.replaceState({}, '', hash);
29823          }
29824        } else {
29825          window.location.hash = hash;
29826        }
29827      } // Remember anchor that opened it to set focus back later, have general anchors as fallback
29828
29829
29830      this.$activeAnchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement).is(this.$anchor) ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement) : this.$anchor;
29831      this.isActive = true; // Make elements invisible, but remove display: none so we can get size and positioning
29832
29833      this.$element.css({
29834        'visibility': 'hidden'
29835      }).show().scrollTop(0);
29836
29837      if (this.options.overlay) {
29838        this.$overlay.css({
29839          'visibility': 'hidden'
29840        }).show();
29841      }
29842
29843      this._updatePosition();
29844
29845      this.$element.hide().css({
29846        'visibility': ''
29847      });
29848
29849      if (this.$overlay) {
29850        this.$overlay.css({
29851          'visibility': ''
29852        }).hide();
29853
29854        if (this.$element.hasClass('fast')) {
29855          this.$overlay.addClass('fast');
29856        } else if (this.$element.hasClass('slow')) {
29857          this.$overlay.addClass('slow');
29858        }
29859      }
29860
29861      if (!this.options.multipleOpened) {
29862        /**
29863         * Fires immediately before the modal opens.
29864         * Closes any other modals that are currently open
29865         * @event Reveal#closeme
29866         */
29867        this.$element.trigger('closeme.zf.reveal', this.id);
29868      }
29869
29870      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
29871        this._disableScroll();
29872      }
29873
29874      var _this = this; // Motion UI method of reveal
29875
29876
29877      if (this.options.animationIn) {
29878        var afterAnimation = function afterAnimation() {
29879          _this.$element.attr({
29880            'aria-hidden': false,
29881            'tabindex': -1
29882          }).focus();
29883
29884          _this._addGlobalClasses();
29885
29886          _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].trapFocus(_this.$element);
29887        };
29888
29889        if (this.options.overlay) {
29890          _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateIn(this.$overlay, 'fade-in');
29891        }
29892
29893        _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateIn(this.$element, this.options.animationIn, function () {
29894          if (_this4.$element) {
29895            // protect against object having been removed
29896            _this4.focusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].findFocusable(_this4.$element);
29897            afterAnimation();
29898          }
29899        });
29900      } // jQuery method of reveal
29901      else {
29902          if (this.options.overlay) {
29903            this.$overlay.show(0);
29904          }
29905
29906          this.$element.show(this.options.showDelay);
29907        } // handle accessibility
29908
29909
29910      this.$element.attr({
29911        'aria-hidden': false,
29912        'tabindex': -1
29913      }).focus();
29914      _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].trapFocus(this.$element);
29915
29916      this._addGlobalClasses();
29917
29918      this._addGlobalListeners();
29919      /**
29920       * Fires when the modal has successfully opened.
29921       * @event Reveal#open
29922       */
29923
29924
29925      this.$element.trigger('open.zf.reveal');
29926    }
29927    /**
29928     * Adds classes and listeners on document required by open modals.
29929     *
29930     * The following classes are added and updated:
29931     * - `.is-reveal-open` - Prevents the scroll on document
29932     * - `.zf-has-scroll`  - Displays a disabled scrollbar on document if required like if the
29933     *                       scroll was not disabled. This prevent a "shift" of the page content due
29934     *                       the scrollbar disappearing when the modal opens.
29935     *
29936     * @private
29937     */
29938
29939  }, {
29940    key: "_addGlobalClasses",
29941    value: function _addGlobalClasses() {
29942      var updateScrollbarClass = function updateScrollbarClass() {
29943        jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').toggleClass('zf-has-scroll', !!(jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()));
29944      };
29945
29946      this.$element.on('resizeme.zf.trigger.revealScrollbarListener', function () {
29947        return updateScrollbarClass();
29948      });
29949      updateScrollbarClass();
29950      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').addClass('is-reveal-open');
29951    }
29952    /**
29953     * Removes classes and listeners on document that were required by open modals.
29954     * @private
29955     */
29956
29957  }, {
29958    key: "_removeGlobalClasses",
29959    value: function _removeGlobalClasses() {
29960      this.$element.off('resizeme.zf.trigger.revealScrollbarListener');
29961      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('is-reveal-open');
29962      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('zf-has-scroll');
29963    }
29964    /**
29965     * Adds extra event handlers for the body and window if necessary.
29966     * @private
29967     */
29968
29969  }, {
29970    key: "_addGlobalListeners",
29971    value: function _addGlobalListeners() {
29972      var _this = this;
29973
29974      if (!this.$element) {
29975        return;
29976      } // If we're in the middle of cleanup, don't freak out
29977
29978
29979      this.focusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].findFocusable(this.$element);
29980
29981      if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {
29982        jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('click.zf.dropdown tap.zf.dropdown', function (e) {
29983          if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target) || !jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document, e.target)) {
29984            return;
29985          }
29986
29987          _this.close();
29988        });
29989      }
29990
29991      if (this.options.closeOnEsc) {
29992        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('keydown.zf.reveal', function (e) {
29993          _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'Reveal', {
29994            close: function close() {
29995              if (_this.options.closeOnEsc) {
29996                _this.close();
29997              }
29998            }
29999          });
30000        });
30001      }
30002    }
30003    /**
30004     * Closes the modal.
30005     * @function
30006     * @fires Reveal#closed
30007     */
30008
30009  }, {
30010    key: "close",
30011    value: function close() {
30012      if (!this.isActive || !this.$element.is(':visible')) {
30013        return false;
30014      }
30015
30016      var _this = this; // Motion UI method of hiding
30017
30018
30019      if (this.options.animationOut) {
30020        if (this.options.overlay) {
30021          _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateOut(this.$overlay, 'fade-out');
30022        }
30023
30024        _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateOut(this.$element, this.options.animationOut, finishUp);
30025      } // jQuery method of hiding
30026      else {
30027          this.$element.hide(this.options.hideDelay);
30028
30029          if (this.options.overlay) {
30030            this.$overlay.hide(0, finishUp);
30031          } else {
30032            finishUp();
30033          }
30034        } // Conditionals to remove extra event listeners added on open
30035
30036
30037      if (this.options.closeOnEsc) {
30038        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('keydown.zf.reveal');
30039      }
30040
30041      if (!this.options.overlay && this.options.closeOnClick) {
30042        jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').off('click.zf.dropdown tap.zf.dropdown');
30043      }
30044
30045      this.$element.off('keydown.zf.reveal');
30046
30047      function finishUp() {
30048        // Get the current top before the modal is closed and restore the scroll after.
30049        // TODO: use component properties instead of HTML properties
30050        // See https://github.com/foundation/foundation-sites/pull/10786
30051        var scrollTop = parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top"));
30052
30053        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
30054          _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal
30055
30056        }
30057
30058        _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].releaseFocus(_this.$element);
30059
30060        _this.$element.attr('aria-hidden', true);
30061
30062        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
30063          _this._enableScroll(scrollTop);
30064        }
30065        /**
30066        * Fires when the modal is done closing.
30067        * @event Reveal#closed
30068        */
30069
30070
30071        _this.$element.trigger('closed.zf.reveal');
30072      }
30073      /**
30074      * Resets the modal content
30075      * This prevents a running video to keep going in the background
30076      */
30077
30078
30079      if (this.options.resetOnClose) {
30080        this.$element.html(this.$element.html());
30081      }
30082
30083      this.isActive = false; // If deepLink and we did not switched to an other modal...
30084
30085      if (_this.options.deepLink && window.location.hash === "#".concat(this.id)) {
30086        // Remove the history hash
30087        if (window.history.replaceState) {
30088          var urlWithoutHash = window.location.pathname + window.location.search;
30089
30090          if (this.options.updateHistory) {
30091            window.history.pushState({}, '', urlWithoutHash); // remove the hash
30092          } else {
30093            window.history.replaceState('', document.title, urlWithoutHash);
30094          }
30095        } else {
30096          window.location.hash = '';
30097        }
30098      }
30099
30100      this.$activeAnchor.focus();
30101    }
30102    /**
30103     * Toggles the open/closed state of a modal.
30104     * @function
30105     */
30106
30107  }, {
30108    key: "toggle",
30109    value: function toggle() {
30110      if (this.isActive) {
30111        this.close();
30112      } else {
30113        this.open();
30114      }
30115    }
30116  }, {
30117    key: "_destroy",
30118
30119    /**
30120     * Destroys an instance of a modal.
30121     * @function
30122     */
30123    value: function _destroy() {
30124      if (this.options.overlay) {
30125        this.$element.appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()
30126
30127        this.$overlay.hide().off().remove();
30128      }
30129
30130      this.$element.hide().off();
30131      this.$anchor.off('.zf');
30132      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(".zf.reveal:".concat(this.id));
30133      if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
30134
30135      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) {
30136        this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal
30137
30138      }
30139    }
30140  }]);
30141
30142  return Reveal;
30143}
30143(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
30144
30145Reveal.defaults = {
30146  /**
30147   * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
30148   * @option
30149   * @type {string}
30150   * @default ''
30151   */
30152  animationIn: '',
30153
30154  /**
30155   * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.
30156   * @option
30157   * @type {string}
30158   * @default ''
30159   */
30160  animationOut: '',
30161
30162  /**
30163   * Time, in ms, to delay the opening of a modal after a click if no animation used.
30164   * @option
30165   * @type {number}
30166   * @default 0
30167   */
30168  showDelay: 0,
30169
30170  /**
30171   * Time, in ms, to delay the closing of a modal after a click if no animation used.
30172   * @option
30173   * @type {number}
30174   * @default 0
30175   */
30176  hideDelay: 0,
30177
30178  /**
30179   * Allows a click on the body/overlay to close the modal.
30180   * @option
30181   * @type {boolean}
30182   * @default true
30183   */
30184  closeOnClick: true,
30185
30186  /**
30187   * Allows the modal to close if the user presses the `ESCAPE` key.
30188   * @option
30189   * @type {boolean}
30190   * @default true
30191   */
30192  closeOnEsc: true,
30193
30194  /**
30195   * If true, allows multiple modals to be displayed at once.
30196   * @option
30197   * @type {boolean}
30198   * @default false
30199   */
30200  multipleOpened: false,
30201
30202  /**
30203   * Distance, in pixels, the modal should push down from the top of the screen.
30204   * @option
30205   * @type {number|string}
30206   * @default auto
30207   */
30208  vOffset: 'auto',
30209
30210  /**
30211   * Distance, in pixels, the modal should push in from the side of the screen.
30212   * @option
30213   * @type {number|string}
30214   * @default auto
30215   */
30216  hOffset: 'auto',
30217
30218  /**
30219   * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.
30220   * @option
30221   * @type {boolean}
30222   * @default false
30223   */
30224  fullScreen: false,
30225
30226  /**
30227   * Allows the modal to generate an overlay div, which will cover the view when modal opens.
30228   * @option
30229   * @type {boolean}
30230   * @default true
30231   */
30232  overlay: true,
30233
30234  /**
30235   * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.
30236   * @option
30237   * @type {boolean}
30238   * @default false
30239   */
30240  resetOnClose: false,
30241
30242  /**
30243   * Link the location hash to the modal.
30244   * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.
30245   * @option
30246   * @type {boolean}
30247   * @default false
30248   */
30249  deepLink: false,
30250
30251  /**
30252   * If `deepLink` is enabled, update the browser history with the open modal
30253   * @option
30254   * @default false
30255   */
30256  updateHistory: false,
30257
30258  /**
30259  * Allows the modal to append to custom div.
30260  * @option
30261  * @type {string}
30262  * @default "body"
30263  */
30264  appendTo: "body",
30265
30266  /**
30267   * Allows adding additional class names to the reveal overlay.
30268   * @option
30269   * @type {string}
30270   * @default ''
30271   */
30272  additionalOverlayClasses: ''
30273};
30274
30275
30276/***/ }),
30277
vendor: 12,972 bytes, lines 30278-30592
30278/***/ "./js/foundation.util.triggers.js":
30279/*!****************************************!*\
30280  !*** ./js/foundation.util.triggers.js ***!
30281  \****************************************/
30282/*! exports provided: Triggers */
30283/***/ (function(module, __webpack_exports__, __webpack_require__) {
30284
30285"use strict";
30286__webpack_require__.r(__webpack_exports__);
30287/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; });
30288/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
30289/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
30290/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
30291/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
30292/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
30293/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);
30294
30295
30296function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
30297
30298
30299
30300
30301
30302var MutationObserver = function () {
30303  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
30304
30305  for (var i = 0; i < prefixes.length; i++) {
30306    if ("".concat(prefixes[i], "MutationObserver") in window) {
30307      return window["".concat(prefixes[i], "MutationObserver")];
30308    }
30309  }
30310
30311  return false;
30312}();
30313
30314var triggers = function triggers(el, type) {
30315  el.data(type).split(' ').forEach(function (id) {
30316    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]);
30317  });
30318};
30319
30320var Triggers = {
30321  Listeners: {
30322    Basic: {},
30323    Global: {}
30324  },
30325  Initializers: {}
30326};
30327Triggers.Listeners.Basic = {
30328  openListener: function openListener() {
30329    triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open');
30330  },
30331  closeListener: function closeListener() {
30332    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close');
30333
30334    if (id) {
30335      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close');
30336    } else {
30337      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger');
30338    }
30339  },
30340  toggleListener: function toggleListener() {
30341    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
30342
30343    if (id) {
30344      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
30345    } else {
30346      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger');
30347    }
30348  },
30349  closeableListener: function closeableListener(e) {
30350    var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833
30351
30352    e.stopPropagation();
30353
30354    if (animation !== '') {
30355      _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () {
30356        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf');
30357      });
30358    } else {
30359      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf');
30360    }
30361  },
30362  toggleFocusListener: function toggleFocusListener() {
30363    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus');
30364    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]);
30365  }
30366}; // Elements with [data-open] will reveal a plugin that supports it when clicked.
30367
30368Triggers.Initializers.addOpenListener = function ($elem) {
30369  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
30370  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
30371}; // Elements with [data-close] will close a plugin that supports it when clicked.
30372// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
30373
30374
30375Triggers.Initializers.addCloseListener = function ($elem) {
30376  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
30377  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
30378}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
30379
30380
30381Triggers.Initializers.addToggleListener = function ($elem) {
30382  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
30383  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
30384}; // Elements with [data-closable] will respond to close.zf.trigger events.
30385
30386
30387Triggers.Initializers.addCloseableListener = function ($elem) {
30388  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
30389  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
30390}; // Elements with [data-toggle-focus] will respond to coming in and out of focus
30391
30392
30393Triggers.Initializers.addToggleFocusListener = function ($elem) {
30394  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
30395  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
30396}; // More Global/complex listeners and triggers
30397
30398
30399Triggers.Listeners.Global = {
30400  resizeListener: function resizeListener($nodes) {
30401    if (!MutationObserver) {
30402      //fallback for IE 9
30403      $nodes.each(function () {
30404        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger');
30405      });
30406    } //trigger all listening elements and signal a resize event
30407
30408
30409    $nodes.attr('data-events', "resize");
30410  },
30411  scrollListener: function scrollListener($nodes) {
30412    if (!MutationObserver) {
30413      //fallback for IE 9
30414      $nodes.each(function () {
30415        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger');
30416      });
30417    } //trigger all listening elements and signal a scroll event
30418
30419
30420    $nodes.attr('data-events', "scroll");
30421  },
30422  closeMeListener: function closeMeListener(e, pluginId) {
30423    var plugin = e.namespace.split('.')[0];
30424    var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]"));
30425    plugins.each(function () {
30426      var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
30427
30428      _this.triggerHandler('close.zf.trigger', [_this]);
30429    });
30430  } // Global, parses whole document.
30431
30432};
30433
30434Triggers.Initializers.addClosemeListener = function (pluginName) {
30435  var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'),
30436      plugNames = ['dropdown', 'tooltip', 'reveal'];
30437
30438  if (pluginName) {
30439    if (typeof pluginName === 'string') {
30440      plugNames.push(pluginName);
30441    } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') {
30442      plugNames = plugNames.concat(pluginName);
30443    } else {
30444      console.error('Plugin names must be strings');
30445    }
30446  }
30447
30448  if (yetiBoxes.length) {
30449    var listeners = plugNames.map(function (name) {
30450      return "closeme.zf.".concat(name);
30451    }).join(' ');
30452    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
30453  }
30454};
30455
30456function debounceGlobalListener(debounce, trigger, listener) {
30457  var timer,
30458      args = Array.prototype.slice.call(arguments, 3);
30459  jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) {
30460    if (timer) {
30461      clearTimeout(timer);
30462    }
30463
30464    timer = setTimeout(function () {
30465      listener.apply(null, args);
30466    }, debounce || 10); //default time to emit scroll event
30467  });
30468}
30469
30470Triggers.Initializers.addResizeListener = function (debounce) {
30471  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]');
30472
30473  if ($nodes.length) {
30474    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
30475  }
30476};
30477
30478Triggers.Initializers.addScrollListener = function (debounce) {
30479  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]');
30480
30481  if ($nodes.length) {
30482    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
30483  }
30484};
30485
30486Triggers.Initializers.addMutationEventsListener = function ($elem) {
30487  if (!MutationObserver) {
30488    return false;
30489  }
30490
30491  var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback
30492
30493  var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
30494    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type
30495
30496    switch (mutationRecordsList[0].type) {
30497      case "attributes":
30498        if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
30499          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
30500        }
30501
30502        if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
30503          $target.triggerHandler('resizeme.zf.trigger', [$target]);
30504        }
30505
30506        if (mutationRecordsList[0].attributeName === "style") {
30507          $target.closest("[data-mutate]").attr("data-events", "mutate");
30508          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
30509        }
30510
30511        break;
30512
30513      case "childList":
30514        $target.closest("[data-mutate]").attr("data-events", "mutate");
30515        $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
30516        break;
30517
30518      default:
30519        return false;
30520      //nothing
30521    }
30522  };
30523
30524  if ($nodes.length) {
30525    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
30526    for (var i = 0; i <= $nodes.length - 1; i++) {
30527      var elementObserver = new MutationObserver(listeningElementsMutation);
30528      elementObserver.observe($nodes[i], {
30529        attributes: true,
30530        childList: true,
30531        characterData: false,
30532        subtree: true,
30533        attributeFilter: ["data-events", "style"]
30534      });
30535    }
30536  }
30537};
30538
30539Triggers.Initializers.addSimpleListeners = function () {
30540  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
30541  Triggers.Initializers.addOpenListener($document);
30542  Triggers.Initializers.addCloseListener($document);
30543  Triggers.Initializers.addToggleListener($document);
30544  Triggers.Initializers.addCloseableListener($document);
30545  Triggers.Initializers.addToggleFocusListener($document);
30546};
30547
30548Triggers.Initializers.addGlobalListeners = function () {
30549  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
30550  Triggers.Initializers.addMutationEventsListener($document);
30551  Triggers.Initializers.addResizeListener();
30552  Triggers.Initializers.addScrollListener();
30553  Triggers.Initializers.addClosemeListener();
30554};
30555
30556Triggers.init = function ($, Foundation) {
30557  Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () {
30558    if ($.triggersInitialized !== true) {
30559      Triggers.Initializers.addSimpleListeners();
30560      Triggers.Initializers.addGlobalListeners();
30561      $.triggersInitialized = true;
30562    }
30563  });
30564
30565  if (Foundation) {
30566    Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now.
30567
30568    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
30569  }
30570};
30571
30572
30573
30574/***/ }),
30575
30576/***/ 14:
30577/*!*******************************************************!*\
30578  !*** multi ./js/entries/plugins/foundation.reveal.js ***!
30579  \*******************************************************/
30580/*! no static exports found */
30581/***/ (function(module, exports, __webpack_require__) {
30582
30583module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.reveal.js */"./js/entries/plugins/foundation.reveal.js");
30584
30585
30586/***/ }),
30587
30588/***/ "jquery":
30589/*!********************************************************************************************!*\
30590  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
30591  \********************************************************************************************/
30592/*! no static exports found */
vendor: 5,083 bytes, lines 30593-30704
30593/***/ (function(module, exports) {
30594
30595module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
30596
30597/***/ })
30598
30599/******/ });
30600});
30601//# sourceMappingURL=foundation.reveal.js.map
30602(function webpackUniversalModuleDefinition(root, factory) {
30603	if(typeof exports === 'object' && typeof module === 'object')
30604		module.exports = factory(require("./foundation.core"), require("jquery"));
30605	else if(typeof define === 'function' && define.amd)
30606		define(["./foundation.core", "jquery"], factory);
30607	else if(typeof exports === 'object')
30608		exports["foundation.smoothScroll"] = factory(require("./foundation.core"), require("jquery"));
30609	else
30610		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.smoothScroll"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]);
30611})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
30612return /******/ (function(modules) { // webpackBootstrap
30613/******/ 	// The module cache
30614/******/ 	var installedModules = {};
30615/******/
30616/******/ 	// The require function
30617/******/ 	function __webpack_require__(moduleId) {
30618/******/
30619/******/ 		// Check if module is in cache
30620/******/ 		if(installedModules[moduleId]) {
30621/******/ 			return installedModules[moduleId].exports;
30622/******/ 		}
30623/******/ 		// Create a new module (and put it into the cache)
30624/******/ 		var module = installedModules[moduleId] = {
30625/******/ 			i: moduleId,
30626/******/ 			l: false,
30627/******/ 			exports: {}
30628/******/ 		};
30629/******/
30630/******/ 		// Execute the module function
30631/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
30632/******/
30633/******/ 		// Flag the module as loaded
30634/******/ 		module.l = true;
30635/******/
30636/******/ 		// Return the exports of the module
30637/******/ 		return module.exports;
30638/******/ 	}
30639/******/
30640/******/
30641/******/ 	// expose the modules object (__webpack_modules__)
30642/******/ 	__webpack_require__.m = modules;
30643/******/
30644/******/ 	// expose the module cache
30645/******/ 	__webpack_require__.c = installedModules;
30646/******/
30647/******/ 	// define getter function for harmony exports
30648/******/ 	__webpack_require__.d = function(exports, name, getter) {
30649/******/ 		if(!__webpack_require__.o(exports, name)) {
30650/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
30651/******/ 		}
30652/******/ 	};
30653/******/
30654/******/ 	// define __esModule on exports
30655/******/ 	__webpack_require__.r = function(exports) {
30656/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
30657/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
30658/******/ 		}
30659/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
30660/******/ 	};
30661/******/
30662/******/ 	// create a fake namespace object
30663/******/ 	// mode & 1: value is a module id, require it
30664/******/ 	// mode & 2: merge all properties of value into the ns
30665/******/ 	// mode & 4: return value when already ns object
30666/******/ 	// mode & 8|1: behave like require
30667/******/ 	__webpack_require__.t = function(value, mode) {
30668/******/ 		if(mode & 1) value = __webpack_require__(value);
30669/******/ 		if(mode & 8) return value;
30670/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
30671/******/ 		var ns = Object.create(null);
30672/******/ 		__webpack_require__.r(ns);
30673/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
30674/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
30675/******/ 		return ns;
30676/******/ 	};
30677/******/
30678/******/ 	// getDefaultExport function for compatibility with non-harmony modules
30679/******/ 	__webpack_require__.n = function(module) {
30680/******/ 		var getter = module && module.__esModule ?
30681/******/ 			function getDefault() { return module['default']; } :
30682/******/ 			function getModuleExports() { return module; };
30683/******/ 		__webpack_require__.d(getter, 'a', getter);
30684/******/ 		return getter;
30685/******/ 	};
30686/******/
30687/******/ 	// Object.prototype.hasOwnProperty.call
30688/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
30689/******/
30690/******/ 	// __webpack_public_path__
30691/******/ 	__webpack_require__.p = "";
30692/******/
30693/******/
30694/******/ 	// Load entry module and return exports
30695/******/ 	return __webpack_require__(__webpack_require__.s = 16);
30696/******/ })
30697/************************************************************************/
30698/******/ ({
30699
30700/***/ "./foundation.core":
30701/*!****************************************************************************************************************************************************************!*\
30702  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
30703  \****************************************************************************************************************************************************************/
30704/*! no static exports found */
30705/***/ (function(module, exports) {
30706
30707module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
30708
30709/***/ }),
30710
30711/***/ "./js/entries/plugins/foundation.smoothScroll.js":
30712/*!*******************************************************!*\
30713  !*** ./js/entries/plugins/foundation.smoothScroll.js ***!
30714  \*******************************************************/
30715/*! exports provided: Foundation, SmoothScroll */
30716/***/ (function(module, __webpack_exports__, __webpack_require__) {
30717
30718"use strict";
30719__webpack_require__.r(__webpack_exports__);
30720/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
30721/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
30722/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
30723
30724/* harmony import */ var _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.smoothScroll */ "./js/foundation.smoothScroll.js");
30725/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SmoothScroll", function() { return _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_1__["SmoothScroll"]; });
30726
30727
30728
30729_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_1__["SmoothScroll"], 'SmoothScroll');
30730
30731
30732/***/ }),
30733
vendor: 4,894 bytes, lines 30734-30830
30734/***/ "./js/foundation.smoothScroll.js":
30735/*!***************************************!*\
30736  !*** ./js/foundation.smoothScroll.js ***!
30737  \***************************************/
30738/*! exports provided: SmoothScroll */
30739/***/ (function(module, __webpack_exports__, __webpack_require__) {
30740
30741"use strict";
30742__webpack_require__.r(__webpack_exports__);
30743/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SmoothScroll", function() { return SmoothScroll; });
30744/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
30745/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
30746/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
30747/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
30748function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
30749
30750function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
30751
30752function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
30753
30754function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
30755
30756function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
30757
30758function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
30759
30760function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
30761
30762function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
30763
30764function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
30765
30766
30767
30768
30769/**
30770 * SmoothScroll module.
30771 * @module foundation.smoothScroll
30772 */
30773
30774var SmoothScroll =
30775/*#__PURE__*/
30776function (_Plugin) {
30777  _inherits(SmoothScroll, _Plugin);
30778
30779  function SmoothScroll() {
30780    _classCallCheck(this, SmoothScroll);
30781
30782    return _possibleConstructorReturn(this, _getPrototypeOf(SmoothScroll).apply(this, arguments));
30783  }
30784
30785  _createClass(SmoothScroll, [{
30786    key: "_setup",
30787
30788    /**
30789     * Creates a new instance of SmoothScroll.
30790     * @class
30791     * @name SmoothScroll
30792     * @fires SmoothScroll#init
30793     * @param {Object} element - jQuery object to add the trigger to.
30794     * @param {Object} options - Overrides to the default plugin settings.
30795     */
30796    value: function _setup(element, options) {
30797      this.$element = element;
30798      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, SmoothScroll.defaults, this.$element.data(), options);
30799      this.className = 'SmoothScroll'; // ie9 back compat
30800
30801      this._init();
30802    }
30803    /**
30804     * Initialize the SmoothScroll plugin
30805     * @private
30806     */
30807
30808  }, {
30809    key: "_init",
30810    value: function _init() {
30811      var id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'smooth-scroll');
30812      this.$element.attr({
30813        id: id
30814      });
30815
30816      this._events();
30817    }
30818    /**
30819     * Initializes events for SmoothScroll.
30820     * @private
30821     */
30822
30823  }, {
30824    key: "_events",
30825    value: function _events() {
30826      this._linkClickListener = this._handleLinkClick.bind(this);
30827      this.$element.on('click.zf.smoothScroll', this._linkClickListener);
30828      this.$element.on('click.zf.smoothScroll', 'a[href^="#"]', this._linkClickListener);
30829    }
30830    /**
vendor: 5,985 bytes, lines 30831-30992
30831     * Handle the given event to smoothly scroll to the anchor pointed by the event target.
30832     * @param {*} e - event
30833     * @function
30834     * @private
30835     */
30836
30837  }, {
30838    key: "_handleLinkClick",
30839    value: function _handleLinkClick(e) {
30840      var _this = this;
30841
30842      // Follow the link if it does not point to an anchor.
30843      if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget).is('a[href^="#"]')) return;
30844      var arrival = e.currentTarget.getAttribute('href');
30845      this._inTransition = true;
30846      SmoothScroll.scrollToLoc(arrival, this.options, function () {
30847        _this._inTransition = false;
30848      });
30849      e.preventDefault();
30850    }
30851  }, {
30852    key: "_destroy",
30853
30854    /**
30855     * Destroys the SmoothScroll instance.
30856     * @function
30857     */
30858    value: function _destroy() {
30859      this.$element.off('click.zf.smoothScroll', this._linkClickListener);
30860      this.$element.off('click.zf.smoothScroll', 'a[href^="#"]', this._linkClickListener);
30861    }
30862  }], [{
30863    key: "scrollToLoc",
30864
30865    /**
30866     * Function to scroll to a given location on the page.
30867     * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'
30868     * @param {Object} options - The options to use.
30869     * @param {Function} callback - The callback function.
30870     * @static
30871     * @function
30872     */
30873    value: function scrollToLoc(loc) {
30874      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SmoothScroll.defaults;
30875      var callback = arguments.length > 2 ? arguments[2] : undefined;
30876      var $loc = jquery__WEBPACK_IMPORTED_MODULE_0___default()(loc); // Do nothing if target does not exist to prevent errors
30877
30878      if (!$loc.length) return false;
30879      var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);
30880      jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({
30881        scrollTop: scrollPos
30882      }, options.animationDuration, options.animationEasing, function () {
30883        if (typeof callback === 'function') {
30884          callback();
30885        }
30886      });
30887    }
30888  }]);
30889
30890  return SmoothScroll;
30891}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
30892/**
30893 * Default settings for plugin.
30894 */
30895
30896
30897SmoothScroll.defaults = {
30898  /**
30899   * Amount of time, in ms, the animated scrolling should take between locations.
30900   * @option
30901   * @type {number}
30902   * @default 500
30903   */
30904  animationDuration: 500,
30905
30906  /**
30907   * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.
30908   * @option
30909   * @type {string}
30910   * @default 'linear'
30911   * @see {@link https://api.jquery.com/animate|Jquery animate}
30912   */
30913  animationEasing: 'linear',
30914
30915  /**
30916   * Number of pixels to use as a marker for location changes.
30917   * @option
30918   * @type {number}
30919   * @default 50
30920   */
30921  threshold: 50,
30922
30923  /**
30924   * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.
30925   * @option
30926   * @type {number}
30927   * @default 0
30928   */
30929  offset: 0
30930};
30931
30932
30933/***/ }),
30934
30935/***/ 16:
30936/*!*************************************************************!*\
30937  !*** multi ./js/entries/plugins/foundation.smoothScroll.js ***!
30938  \*************************************************************/
30939/*! no static exports found */
30940/***/ (function(module, exports, __webpack_require__) {
30941
30942module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.smoothScroll.js */"./js/entries/plugins/foundation.smoothScroll.js");
30943
30944
30945/***/ }),
30946
30947/***/ "jquery":
30948/*!********************************************************************************************!*\
30949  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
30950  \********************************************************************************************/
30951/*! no static exports found */
30952/***/ (function(module, exports) {
30953
30954module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
30955
30956/***/ })
30957
30958/******/ });
30959});
30960//# sourceMappingURL=foundation.smoothScroll.js.map
30961(function webpackUniversalModuleDefinition(root, factory) {
30962	if(typeof exports === 'object' && typeof module === 'object')
30963		module.exports = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery"));
30964	else if(typeof define === 'function' && define.amd)
30965		define(["./foundation.core", "./foundation.util.mediaQuery", "./foundation.util.motion", "jquery"], factory);
30966	else if(typeof exports === 'object')
30967		exports["foundation.sticky"] = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery"));
30968	else
30969		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.sticky"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]);
30970})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
30971return /******/ (function(modules) { // webpackBootstrap
30972/******/ 	// The module cache
30973/******/ 	var installedModules = {};
30974/******/
30975/******/ 	// The require function
30976/******/ 	function __webpack_require__(moduleId) {
30977/******/
30978/******/ 		// Check if module is in cache
30979/******/ 		if(installedModules[moduleId]) {
30980/******/ 			return installedModules[moduleId].exports;
30981/******/ 		}
30982/******/ 		// Create a new module (and put it into the cache)
30983/******/ 		var module = installedModules[moduleId] = {
30984/******/ 			i: moduleId,
30985/******/ 			l: false,
30986/******/ 			exports: {}
30987/******/ 		};
30988/******/
30989/******/ 		// Execute the module function
30990/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
30991/******/
30992/******/ 		// Flag the module as loaded
vendor: 4,187 bytes, lines 30993-31074
30993/******/ 		module.l = true;
30994/******/
30995/******/ 		// Return the exports of the module
30996/******/ 		return module.exports;
30997/******/ 	}
30998/******/
30999/******/
31000/******/ 	// expose the modules object (__webpack_modules__)
31001/******/ 	__webpack_require__.m = modules;
31002/******/
31003/******/ 	// expose the module cache
31004/******/ 	__webpack_require__.c = installedModules;
31005/******/
31006/******/ 	// define getter function for harmony exports
31007/******/ 	__webpack_require__.d = function(exports, name, getter) {
31008/******/ 		if(!__webpack_require__.o(exports, name)) {
31009/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
31010/******/ 		}
31011/******/ 	};
31012/******/
31013/******/ 	// define __esModule on exports
31014/******/ 	__webpack_require__.r = function(exports) {
31015/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
31016/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
31017/******/ 		}
31018/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
31019/******/ 	};
31020/******/
31021/******/ 	// create a fake namespace object
31022/******/ 	// mode & 1: value is a module id, require it
31023/******/ 	// mode & 2: merge all properties of value into the ns
31024/******/ 	// mode & 4: return value when already ns object
31025/******/ 	// mode & 8|1: behave like require
31026/******/ 	__webpack_require__.t = function(value, mode) {
31027/******/ 		if(mode & 1) value = __webpack_require__(value);
31028/******/ 		if(mode & 8) return value;
31029/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
31030/******/ 		var ns = Object.create(null);
31031/******/ 		__webpack_require__.r(ns);
31032/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
31033/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
31034/******/ 		return ns;
31035/******/ 	};
31036/******/
31037/******/ 	// getDefaultExport function for compatibility with non-harmony modules
31038/******/ 	__webpack_require__.n = function(module) {
31039/******/ 		var getter = module && module.__esModule ?
31040/******/ 			function getDefault() { return module['default']; } :
31041/******/ 			function getModuleExports() { return module; };
31042/******/ 		__webpack_require__.d(getter, 'a', getter);
31043/******/ 		return getter;
31044/******/ 	};
31045/******/
31046/******/ 	// Object.prototype.hasOwnProperty.call
31047/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
31048/******/
31049/******/ 	// __webpack_public_path__
31050/******/ 	__webpack_require__.p = "";
31051/******/
31052/******/
31053/******/ 	// Load entry module and return exports
31054/******/ 	return __webpack_require__(__webpack_require__.s = 17);
31055/******/ })
31056/************************************************************************/
31057/******/ ({
31058
31059/***/ "./foundation.core":
31060/*!****************************************************************************************************************************************************************!*\
31061  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
31062  \****************************************************************************************************************************************************************/
31063/*! no static exports found */
31064/***/ (function(module, exports) {
31065
31066module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
31067
31068/***/ }),
31069
31070/***/ "./foundation.util.mediaQuery":
31071/*!************************************************************************************************************************************************************************************************************!*\
31072  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***!
31073  \************************************************************************************************************************************************************************************************************/
31074/*! no static exports found */
31075/***/ (function(module, exports) {
31076
31077module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;
31078
31079/***/ }),
31080
31081/***/ "./foundation.util.motion":
31082/*!********************************************************************************************************************************************************************************************!*\
31083  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***!
31084  \********************************************************************************************************************************************************************************************/
31085/*! no static exports found */
31086/***/ (function(module, exports) {
31087
31088module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;
31089
31090/***/ }),
31091
31092/***/ "./js/entries/plugins/foundation.sticky.js":
31093/*!*************************************************!*\
31094  !*** ./js/entries/plugins/foundation.sticky.js ***!
31095  \*************************************************/
31096/*! exports provided: Foundation, Sticky */
31097/***/ (function(module, __webpack_exports__, __webpack_require__) {
31098
31099"use strict";
31100__webpack_require__.r(__webpack_exports__);
31101/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
31102/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
31103/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
31104
31105/* harmony import */ var _foundation_sticky__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.sticky */ "./js/foundation.sticky.js");
31106/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Sticky", function() { return _foundation_sticky__WEBPACK_IMPORTED_MODULE_1__["Sticky"]; });
31107
31108
31109
31110_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_sticky__WEBPACK_IMPORTED_MODULE_1__["Sticky"], 'Sticky');
31111
31112
31113/***/ }),
31114
31115/***/ "./js/foundation.sticky.js":
31116/*!*********************************!*\
31117  !*** ./js/foundation.sticky.js ***!
31118  \*********************************/
31119/*! exports provided: Sticky */
31120/***/ (function(module, __webpack_exports__, __webpack_require__) {
31121
31122"use strict";
31123__webpack_require__.r(__webpack_exports__);
31124/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Sticky", function() { return Sticky; });
31125/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
31126/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
31127/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
31128/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__);
31129/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery");
31130/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__);
31131/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
31132
31133
31134function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
31135
31136function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
31137
31138function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
31139
31140function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
31141
31142function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
31143
31144function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
31145
31146function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
31147
31148function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
31149
31150function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
31151
31152
31153
31154
31155
31156
31157/**
31158 * Sticky module.
31159 * @module foundation.sticky
31160 * @requires foundation.util.triggers
31161 * @requires foundation.util.mediaQuery
31162 */
31163
31164var Sticky =
31165/*#__PURE__*/
31166function (_Plugin) {
31167  _inherits(Sticky, _Plugin);
31168
31169  function Sticky() {
31170    _classCallCheck(this, Sticky);
31171
31172    return _possibleConstructorReturn(this, _getPrototypeOf(Sticky).apply(this, arguments));
31173  }
31174
31175  _createClass(Sticky, [{
31176    key: "_setup",
31177
31178    /**
31179     * Creates a new instance of a sticky thing.
31180     * @class
31181     * @name Sticky
31182     * @param {jQuery} element - jQuery object to make sticky.
31183     * @param {Object} options - options object passed when creating the element programmatically.
31184     */
31185    value: function _setup(element, options) {
31186      this.$element = element;
31187      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Sticky.defaults, this.$element.data(), options);
31188      this.className = 'Sticky'; // ie9 back compat
31189      // Triggers init is idempotent, just need to make sure it is initialized
31190
31191      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
31192
31193      this._init();
31194    }
31195    /**
31196     * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes
31197     * @function
31198     * @private
31199     */
31200
31201  }, {
31202    key: "_init",
31203    value: function _init() {
31204      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"]._init();
31205
31206      var $parent = this.$element.parent('[data-sticky-container]'),
31207          id = this.$element[0].id || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'sticky'),
31208          _this = this;
31209
31210      if ($parent.length) {
31211        this.$container = $parent;
31212      } else {
31213        this.wasWrapped = true;
31214        this.$element.wrap(this.options.container);
31215        this.$container = this.$element.parent();
31216      }
31217
31218      this.$container.addClass(this.options.containerClass);
31219      this.$element.addClass(this.options.stickyClass).attr({
31220        'data-resize': id,
31221        'data-mutate': id
31222      });
31223
31224      if (this.options.anchor !== '') {
31225        jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + _this.options.anchor).attr({
31226          'data-mutate': id
31227        });
31228      }
31229
31230      this.scrollCount = this.options.checkEvery;
31231      this.isStuck = false;
vendor: 4,372 bytes, lines 31232-31374
31232      this.onLoadListener = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () {
31233        //We calculate the container height to have correct values for anchor points offset calculation.
31234        _this.containerHeight = _this.$element.css("display") == "none" ? 0 : _this.$element[0].getBoundingClientRect().height;
31235
31236        _this.$container.css('height', _this.containerHeight);
31237
31238        _this.elemHeight = _this.containerHeight;
31239
31240        if (_this.options.anchor !== '') {
31241          _this.$anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + _this.options.anchor);
31242        } else {
31243          _this._parsePoints();
31244        }
31245
31246        _this._setSizes(function () {
31247          var scroll = window.pageYOffset;
31248
31249          _this._calc(false, scroll); //Unstick the element will ensure that proper classes are set.
31250
31251
31252          if (!_this.isStuck) {
31253            _this._removeSticky(scroll >= _this.topPoint ? false : true);
31254          }
31255        });
31256
31257        _this._events(id.split('-').reverse().join('-'));
31258      });
31259    }
31260    /**
31261     * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.
31262     * @function
31263     * @private
31264     */
31265
31266  }, {
31267    key: "_parsePoints",
31268    value: function _parsePoints() {
31269      var top = this.options.topAnchor == "" ? 1 : this.options.topAnchor,
31270          btm = this.options.btmAnchor == "" ? document.documentElement.scrollHeight : this.options.btmAnchor,
31271          pts = [top, btm],
31272          breaks = {};
31273
31274      for (var i = 0, len = pts.length; i < len && pts[i]; i++) {
31275        var pt;
31276
31277        if (typeof pts[i] === 'number') {
31278          pt = pts[i];
31279        } else {
31280          var place = pts[i].split(':'),
31281              anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(place[0]));
31282          pt = anchor.offset().top;
31283
31284          if (place[1] && place[1].toLowerCase() === 'bottom') {
31285            pt += anchor[0].getBoundingClientRect().height;
31286          }
31287        }
31288
31289        breaks[i] = pt;
31290      }
31291
31292      this.points = breaks;
31293      return;
31294    }
31295    /**
31296     * Adds event handlers for the scrolling element.
31297     * @private
31298     * @param {String} id - pseudo-random id for unique scroll event listener.
31299     */
31300
31301  }, {
31302    key: "_events",
31303    value: function _events(id) {
31304      var _this = this,
31305          scrollListener = this.scrollListener = "scroll.zf.".concat(id);
31306
31307      if (this.isOn) {
31308        return;
31309      }
31310
31311      if (this.canStick) {
31312        this.isOn = true;
31313        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(scrollListener).on(scrollListener, function (e) {
31314          if (_this.scrollCount === 0) {
31315            _this.scrollCount = _this.options.checkEvery;
31316
31317            _this._setSizes(function () {
31318              _this._calc(false, window.pageYOffset);
31319            });
31320          } else {
31321            _this.scrollCount--;
31322
31323            _this._calc(false, window.pageYOffset);
31324          }
31325        });
31326      }
31327
31328      this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function (e, el) {
31329        _this._eventsHandler(id);
31330      });
31331      this.$element.on('mutateme.zf.trigger', function (e, el) {
31332        _this._eventsHandler(id);
31333      });
31334
31335      if (this.$anchor) {
31336        this.$anchor.on('mutateme.zf.trigger', function (e, el) {
31337          _this._eventsHandler(id);
31338        });
31339      }
31340    }
31341    /**
31342     * Handler for events.
31343     * @private
31344     * @param {String} id - pseudo-random id for unique scroll event listener.
31345     */
31346
31347  }, {
31348    key: "_eventsHandler",
31349    value: function _eventsHandler(id) {
31350      var _this = this,
31351          scrollListener = this.scrollListener = "scroll.zf.".concat(id);
31352
31353      _this._setSizes(function () {
31354        _this._calc(false);
31355
31356        if (_this.canStick) {
31357          if (!_this.isOn) {
31358            _this._events(id);
31359          }
31360        } else if (_this.isOn) {
31361          _this._pauseListeners(scrollListener);
31362        }
31363      });
31364    }
31365    /**
31366     * Removes event handlers for scroll and change events on anchor.
31367     * @fires Sticky#pause
31368     * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`
31369     */
31370
31371  }, {
31372    key: "_pauseListeners",
31373    value: function _pauseListeners(scrollListener) {
31374      this.isOn = false;
vendor: 5,605 bytes, lines 31375-31540
31375      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(scrollListener);
31376      /**
31377       * Fires when the plugin is paused due to resize event shrinking the view.
31378       * @event Sticky#pause
31379       * @private
31380       */
31381
31382      this.$element.trigger('pause.zf.sticky');
31383    }
31384    /**
31385     * Called on every `scroll` event and on `_init`
31386     * fires functions based on booleans and cached values
31387     * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.
31388     * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.
31389     */
31390
31391  }, {
31392    key: "_calc",
31393    value: function _calc(checkSizes, scroll) {
31394      if (checkSizes) {
31395        this._setSizes();
31396      }
31397
31398      if (!this.canStick) {
31399        if (this.isStuck) {
31400          this._removeSticky(true);
31401        }
31402
31403        return false;
31404      }
31405
31406      if (!scroll) {
31407        scroll = window.pageYOffset;
31408      }
31409
31410      if (scroll >= this.topPoint) {
31411        if (scroll <= this.bottomPoint) {
31412          if (!this.isStuck) {
31413            this._setSticky();
31414          }
31415        } else {
31416          if (this.isStuck) {
31417            this._removeSticky(false);
31418          }
31419        }
31420      } else {
31421        if (this.isStuck) {
31422          this._removeSticky(true);
31423        }
31424      }
31425    }
31426    /**
31427     * Causes the $element to become stuck.
31428     * Adds `position: fixed;`, and helper classes.
31429     * @fires Sticky#stuckto
31430     * @function
31431     * @private
31432     */
31433
31434  }, {
31435    key: "_setSticky",
31436    value: function _setSticky() {
31437      var _this = this,
31438          stickTo = this.options.stickTo,
31439          mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',
31440          notStuckTo = stickTo === 'top' ? 'bottom' : 'top',
31441          css = {};
31442
31443      css[mrgn] = "".concat(this.options[mrgn], "em");
31444      css[stickTo] = 0;
31445      css[notStuckTo] = 'auto';
31446      this.isStuck = true;
31447      this.$element.removeClass("is-anchored is-at-".concat(notStuckTo)).addClass("is-stuck is-at-".concat(stickTo)).css(css)
31448      /**
31449       * Fires when the $element has become `position: fixed;`
31450       * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`
31451       * @event Sticky#stuckto
31452       */
31453      .trigger("sticky.zf.stuckto:".concat(stickTo));
31454      this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function () {
31455        _this._setSizes();
31456      });
31457    }
31458    /**
31459     * Causes the $element to become unstuck.
31460     * Removes `position: fixed;`, and helper classes.
31461     * Adds other helper classes.
31462     * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.
31463     * @fires Sticky#unstuckfrom
31464     * @private
31465     */
31466
31467  }, {
31468    key: "_removeSticky",
31469    value: function _removeSticky(isTop) {
31470      var stickTo = this.options.stickTo,
31471          stickToTop = stickTo === 'top',
31472          css = {},
31473          anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,
31474          mrgn = stickToTop ? 'marginTop' : 'marginBottom',
31475          topOrBottom = isTop ? 'top' : 'bottom';
31476      css[mrgn] = 0;
31477      css['bottom'] = 'auto';
31478
31479      if (isTop) {
31480        css['top'] = 0;
31481      } else {
31482        css['top'] = anchorPt;
31483      }
31484
31485      this.isStuck = false;
31486      this.$element.removeClass("is-stuck is-at-".concat(stickTo)).addClass("is-anchored is-at-".concat(topOrBottom)).css(css)
31487      /**
31488       * Fires when the $element has become anchored.
31489       * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`
31490       * @event Sticky#unstuckfrom
31491       */
31492      .trigger("sticky.zf.unstuckfrom:".concat(topOrBottom));
31493    }
31494    /**
31495     * Sets the $element and $container sizes for plugin.
31496     * Calls `_setBreakPoints`.
31497     * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.
31498     * @private
31499     */
31500
31501  }, {
31502    key: "_setSizes",
31503    value: function _setSizes(cb) {
31504      this.canStick = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"].is(this.options.stickyOn);
31505
31506      if (!this.canStick) {
31507        if (cb && typeof cb === 'function') {
31508          cb();
31509        }
31510      }
31511
31512      var _this = this,
31513          newElemWidth = this.$container[0].getBoundingClientRect().width,
31514          comp = window.getComputedStyle(this.$container[0]),
31515          pdngl = parseInt(comp['padding-left'], 10),
31516          pdngr = parseInt(comp['padding-right'], 10);
31517
31518      if (this.$anchor && this.$anchor.length) {
31519        this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;
31520      } else {
31521        this._parsePoints();
31522      }
31523
31524      this.$element.css({
31525        'max-width': "".concat(newElemWidth - pdngl - pdngr, "px")
31526      }); // Recalculate the height only if it is "dynamic"
31527
31528      if (this.options.dynamicHeight || !this.containerHeight) {
31529        // Get the sticked element height and apply it to the container to "hold the place"
31530        var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;
31531        newContainerHeight = this.$element.css("display") == "none" ? 0 : newContainerHeight;
31532        this.$container.css('height', newContainerHeight);
31533        this.containerHeight = newContainerHeight;
31534      }
31535
31536      this.elemHeight = this.containerHeight;
31537
31538      if (!this.isStuck) {
31539        if (this.$element.hasClass('is-at-bottom')) {
31540          var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;
vendor: 18,397 bytes, lines 31541-32056
31541          this.$element.css('top', anchorPt);
31542        }
31543      }
31544
31545      this._setBreakPoints(this.containerHeight, function () {
31546        if (cb && typeof cb === 'function') {
31547          cb();
31548        }
31549      });
31550    }
31551    /**
31552     * Sets the upper and lower breakpoints for the element to become sticky/unsticky.
31553     * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.
31554     * @param {Function} cb - optional callback function to be called on completion.
31555     * @private
31556     */
31557
31558  }, {
31559    key: "_setBreakPoints",
31560    value: function _setBreakPoints(elemHeight, cb) {
31561      if (!this.canStick) {
31562        if (cb && typeof cb === 'function') {
31563          cb();
31564        } else {
31565          return false;
31566        }
31567      }
31568
31569      var mTop = emCalc(this.options.marginTop),
31570          mBtm = emCalc(this.options.marginBottom),
31571          topPoint = this.points ? this.points[0] : this.$anchor.offset().top,
31572          bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,
31573          // topPoint = this.$anchor.offset().top || this.points[0],
31574      // bottomPoint = topPoint + this.anchorHeight || this.points[1],
31575      winHeight = window.innerHeight;
31576
31577      if (this.options.stickTo === 'top') {
31578        topPoint -= mTop;
31579        bottomPoint -= elemHeight + mTop;
31580      } else if (this.options.stickTo === 'bottom') {
31581        topPoint -= winHeight - (elemHeight + mBtm);
31582        bottomPoint -= winHeight - mBtm;
31583      } else {//this would be the stickTo: both option... tricky
31584      }
31585
31586      this.topPoint = topPoint;
31587      this.bottomPoint = bottomPoint;
31588
31589      if (cb && typeof cb === 'function') {
31590        cb();
31591      }
31592    }
31593    /**
31594     * Destroys the current sticky element.
31595     * Resets the element to the top position first.
31596     * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.
31597     * @function
31598     */
31599
31600  }, {
31601    key: "_destroy",
31602    value: function _destroy() {
31603      this._removeSticky(true);
31604
31605      this.$element.removeClass("".concat(this.options.stickyClass, " is-anchored is-at-top")).css({
31606        height: '',
31607        top: '',
31608        bottom: '',
31609        'max-width': ''
31610      }).off('resizeme.zf.trigger').off('mutateme.zf.trigger');
31611
31612      if (this.$anchor && this.$anchor.length) {
31613        this.$anchor.off('change.zf.sticky');
31614      }
31615
31616      if (this.scrollListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.scrollListener);
31617      if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener);
31618
31619      if (this.wasWrapped) {
31620        this.$element.unwrap();
31621      } else {
31622        this.$container.removeClass(this.options.containerClass).css({
31623          height: ''
31624        });
31625      }
31626    }
31627  }]);
31628
31629  return Sticky;
31630}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]);
31631
31632Sticky.defaults = {
31633  /**
31634   * Customizable container template. Add your own classes for styling and sizing.
31635   * @option
31636   * @type {string}
31637   * @default '&lt;div data-sticky-container&gt;&lt;/div&gt;'
31638   */
31639  container: '<div data-sticky-container></div>',
31640
31641  /**
31642   * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.
31643   * @option
31644   * @type {string}
31645   * @default 'top'
31646   */
31647  stickTo: 'top',
31648
31649  /**
31650   * If anchored to a single element, the id of that element.
31651   * @option
31652   * @type {string}
31653   * @default ''
31654   */
31655  anchor: '',
31656
31657  /**
31658   * If using more than one element as anchor points, the id of the top anchor.
31659   * @option
31660   * @type {string}
31661   * @default ''
31662   */
31663  topAnchor: '',
31664
31665  /**
31666   * If using more than one element as anchor points, the id of the bottom anchor.
31667   * @option
31668   * @type {string}
31669   * @default ''
31670   */
31671  btmAnchor: '',
31672
31673  /**
31674   * Margin, in `em`'s to apply to the top of the element when it becomes sticky.
31675   * @option
31676   * @type {number}
31677   * @default 1
31678   */
31679  marginTop: 1,
31680
31681  /**
31682   * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.
31683   * @option
31684   * @type {number}
31685   * @default 1
31686   */
31687  marginBottom: 1,
31688
31689  /**
31690   * Breakpoint string that is the minimum screen size an element should become sticky.
31691   * @option
31692   * @type {string}
31693   * @default 'medium'
31694   */
31695  stickyOn: 'medium',
31696
31697  /**
31698   * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.
31699   * @option
31700   * @type {string}
31701   * @default 'sticky'
31702   */
31703  stickyClass: 'sticky',
31704
31705  /**
31706   * Class applied to sticky container. Foundation defaults to `sticky-container`.
31707   * @option
31708   * @type {string}
31709   * @default 'sticky-container'
31710   */
31711  containerClass: 'sticky-container',
31712
31713  /**
31714   * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.
31715   * @option
31716   * @type {boolean}
31717   * @default true
31718   */
31719  dynamicHeight: true,
31720
31721  /**
31722   * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.
31723   * @option
31724   * @type {number}
31725   * @default -1
31726   */
31727  checkEvery: -1
31728};
31729/**
31730 * Helper function to calculate em values
31731 * @param Number {em} - number of em's to calculate into pixels
31732 */
31733
31734function emCalc(em) {
31735  return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;
31736}
31737
31738
31739
31740/***/ }),
31741
31742/***/ "./js/foundation.util.triggers.js":
31743/*!****************************************!*\
31744  !*** ./js/foundation.util.triggers.js ***!
31745  \****************************************/
31746/*! exports provided: Triggers */
31747/***/ (function(module, __webpack_exports__, __webpack_require__) {
31748
31749"use strict";
31750__webpack_require__.r(__webpack_exports__);
31751/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; });
31752/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
31753/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
31754/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
31755/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
31756/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
31757/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);
31758
31759
31760function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
31761
31762
31763
31764
31765
31766var MutationObserver = function () {
31767  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
31768
31769  for (var i = 0; i < prefixes.length; i++) {
31770    if ("".concat(prefixes[i], "MutationObserver") in window) {
31771      return window["".concat(prefixes[i], "MutationObserver")];
31772    }
31773  }
31774
31775  return false;
31776}();
31777
31778var triggers = function triggers(el, type) {
31779  el.data(type).split(' ').forEach(function (id) {
31780    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]);
31781  });
31782};
31783
31784var Triggers = {
31785  Listeners: {
31786    Basic: {},
31787    Global: {}
31788  },
31789  Initializers: {}
31790};
31791Triggers.Listeners.Basic = {
31792  openListener: function openListener() {
31793    triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open');
31794  },
31795  closeListener: function closeListener() {
31796    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close');
31797
31798    if (id) {
31799      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close');
31800    } else {
31801      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger');
31802    }
31803  },
31804  toggleListener: function toggleListener() {
31805    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
31806
31807    if (id) {
31808      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
31809    } else {
31810      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger');
31811    }
31812  },
31813  closeableListener: function closeableListener(e) {
31814    var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833
31815
31816    e.stopPropagation();
31817
31818    if (animation !== '') {
31819      _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () {
31820        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf');
31821      });
31822    } else {
31823      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf');
31824    }
31825  },
31826  toggleFocusListener: function toggleFocusListener() {
31827    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus');
31828    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]);
31829  }
31830}; // Elements with [data-open] will reveal a plugin that supports it when clicked.
31831
31832Triggers.Initializers.addOpenListener = function ($elem) {
31833  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
31834  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
31835}; // Elements with [data-close] will close a plugin that supports it when clicked.
31836// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
31837
31838
31839Triggers.Initializers.addCloseListener = function ($elem) {
31840  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
31841  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
31842}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
31843
31844
31845Triggers.Initializers.addToggleListener = function ($elem) {
31846  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
31847  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
31848}; // Elements with [data-closable] will respond to close.zf.trigger events.
31849
31850
31851Triggers.Initializers.addCloseableListener = function ($elem) {
31852  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
31853  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
31854}; // Elements with [data-toggle-focus] will respond to coming in and out of focus
31855
31856
31857Triggers.Initializers.addToggleFocusListener = function ($elem) {
31858  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
31859  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
31860}; // More Global/complex listeners and triggers
31861
31862
31863Triggers.Listeners.Global = {
31864  resizeListener: function resizeListener($nodes) {
31865    if (!MutationObserver) {
31866      //fallback for IE 9
31867      $nodes.each(function () {
31868        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger');
31869      });
31870    } //trigger all listening elements and signal a resize event
31871
31872
31873    $nodes.attr('data-events', "resize");
31874  },
31875  scrollListener: function scrollListener($nodes) {
31876    if (!MutationObserver) {
31877      //fallback for IE 9
31878      $nodes.each(function () {
31879        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger');
31880      });
31881    } //trigger all listening elements and signal a scroll event
31882
31883
31884    $nodes.attr('data-events', "scroll");
31885  },
31886  closeMeListener: function closeMeListener(e, pluginId) {
31887    var plugin = e.namespace.split('.')[0];
31888    var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]"));
31889    plugins.each(function () {
31890      var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
31891
31892      _this.triggerHandler('close.zf.trigger', [_this]);
31893    });
31894  } // Global, parses whole document.
31895
31896};
31897
31898Triggers.Initializers.addClosemeListener = function (pluginName) {
31899  var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'),
31900      plugNames = ['dropdown', 'tooltip', 'reveal'];
31901
31902  if (pluginName) {
31903    if (typeof pluginName === 'string') {
31904      plugNames.push(pluginName);
31905    } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') {
31906      plugNames = plugNames.concat(pluginName);
31907    } else {
31908      console.error('Plugin names must be strings');
31909    }
31910  }
31911
31912  if (yetiBoxes.length) {
31913    var listeners = plugNames.map(function (name) {
31914      return "closeme.zf.".concat(name);
31915    }).join(' ');
31916    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
31917  }
31918};
31919
31920function debounceGlobalListener(debounce, trigger, listener) {
31921  var timer,
31922      args = Array.prototype.slice.call(arguments, 3);
31923  jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) {
31924    if (timer) {
31925      clearTimeout(timer);
31926    }
31927
31928    timer = setTimeout(function () {
31929      listener.apply(null, args);
31930    }, debounce || 10); //default time to emit scroll event
31931  });
31932}
31933
31934Triggers.Initializers.addResizeListener = function (debounce) {
31935  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]');
31936
31937  if ($nodes.length) {
31938    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
31939  }
31940};
31941
31942Triggers.Initializers.addScrollListener = function (debounce) {
31943  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]');
31944
31945  if ($nodes.length) {
31946    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
31947  }
31948};
31949
31950Triggers.Initializers.addMutationEventsListener = function ($elem) {
31951  if (!MutationObserver) {
31952    return false;
31953  }
31954
31955  var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback
31956
31957  var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
31958    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type
31959
31960    switch (mutationRecordsList[0].type) {
31961      case "attributes":
31962        if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
31963          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
31964        }
31965
31966        if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
31967          $target.triggerHandler('resizeme.zf.trigger', [$target]);
31968        }
31969
31970        if (mutationRecordsList[0].attributeName === "style") {
31971          $target.closest("[data-mutate]").attr("data-events", "mutate");
31972          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
31973        }
31974
31975        break;
31976
31977      case "childList":
31978        $target.closest("[data-mutate]").attr("data-events", "mutate");
31979        $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
31980        break;
31981
31982      default:
31983        return false;
31984      //nothing
31985    }
31986  };
31987
31988  if ($nodes.length) {
31989    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
31990    for (var i = 0; i <= $nodes.length - 1; i++) {
31991      var elementObserver = new MutationObserver(listeningElementsMutation);
31992      elementObserver.observe($nodes[i], {
31993        attributes: true,
31994        childList: true,
31995        characterData: false,
31996        subtree: true,
31997        attributeFilter: ["data-events", "style"]
31998      });
31999    }
32000  }
32001};
32002
32003Triggers.Initializers.addSimpleListeners = function () {
32004  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
32005  Triggers.Initializers.addOpenListener($document);
32006  Triggers.Initializers.addCloseListener($document);
32007  Triggers.Initializers.addToggleListener($document);
32008  Triggers.Initializers.addCloseableListener($document);
32009  Triggers.Initializers.addToggleFocusListener($document);
32010};
32011
32012Triggers.Initializers.addGlobalListeners = function () {
32013  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
32014  Triggers.Initializers.addMutationEventsListener($document);
32015  Triggers.Initializers.addResizeListener();
32016  Triggers.Initializers.addScrollListener();
32017  Triggers.Initializers.addClosemeListener();
32018};
32019
32020Triggers.init = function ($, Foundation) {
32021  Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () {
32022    if ($.triggersInitialized !== true) {
32023      Triggers.Initializers.addSimpleListeners();
32024      Triggers.Initializers.addGlobalListeners();
32025      $.triggersInitialized = true;
32026    }
32027  });
32028
32029  if (Foundation) {
32030    Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now.
32031
32032    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
32033  }
32034};
32035
32036
32037
32038/***/ }),
32039
32040/***/ 17:
32041/*!*******************************************************!*\
32042  !*** multi ./js/entries/plugins/foundation.sticky.js ***!
32043  \*******************************************************/
32044/*! no static exports found */
32045/***/ (function(module, exports, __webpack_require__) {
32046
32047module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.sticky.js */"./js/entries/plugins/foundation.sticky.js");
32048
32049
32050/***/ }),
32051
32052/***/ "jquery":
32053/*!********************************************************************************************!*\
32054  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
32055  \********************************************************************************************/
32056/*! no static exports found */
vendor: 5,287 bytes, lines 32057-32168
32057/***/ (function(module, exports) {
32058
32059module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
32060
32061/***/ })
32062
32063/******/ });
32064});
32065//# sourceMappingURL=foundation.sticky.js.map
32066(function webpackUniversalModuleDefinition(root, factory) {
32067	if(typeof exports === 'object' && typeof module === 'object')
32068		module.exports = factory(require("./foundation.core"), require("./foundation.util.motion"), require("jquery"));
32069	else if(typeof define === 'function' && define.amd)
32070		define(["./foundation.core", "./foundation.util.motion", "jquery"], factory);
32071	else if(typeof exports === 'object')
32072		exports["foundation.toggler"] = factory(require("./foundation.core"), require("./foundation.util.motion"), require("jquery"));
32073	else
32074		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.toggler"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]);
32075})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
32076return /******/ (function(modules) { // webpackBootstrap
32077/******/ 	// The module cache
32078/******/ 	var installedModules = {};
32079/******/
32080/******/ 	// The require function
32081/******/ 	function __webpack_require__(moduleId) {
32082/******/
32083/******/ 		// Check if module is in cache
32084/******/ 		if(installedModules[moduleId]) {
32085/******/ 			return installedModules[moduleId].exports;
32086/******/ 		}
32087/******/ 		// Create a new module (and put it into the cache)
32088/******/ 		var module = installedModules[moduleId] = {
32089/******/ 			i: moduleId,
32090/******/ 			l: false,
32091/******/ 			exports: {}
32092/******/ 		};
32093/******/
32094/******/ 		// Execute the module function
32095/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
32096/******/
32097/******/ 		// Flag the module as loaded
32098/******/ 		module.l = true;
32099/******/
32100/******/ 		// Return the exports of the module
32101/******/ 		return module.exports;
32102/******/ 	}
32103/******/
32104/******/
32105/******/ 	// expose the modules object (__webpack_modules__)
32106/******/ 	__webpack_require__.m = modules;
32107/******/
32108/******/ 	// expose the module cache
32109/******/ 	__webpack_require__.c = installedModules;
32110/******/
32111/******/ 	// define getter function for harmony exports
32112/******/ 	__webpack_require__.d = function(exports, name, getter) {
32113/******/ 		if(!__webpack_require__.o(exports, name)) {
32114/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
32115/******/ 		}
32116/******/ 	};
32117/******/
32118/******/ 	// define __esModule on exports
32119/******/ 	__webpack_require__.r = function(exports) {
32120/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
32121/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
32122/******/ 		}
32123/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
32124/******/ 	};
32125/******/
32126/******/ 	// create a fake namespace object
32127/******/ 	// mode & 1: value is a module id, require it
32128/******/ 	// mode & 2: merge all properties of value into the ns
32129/******/ 	// mode & 4: return value when already ns object
32130/******/ 	// mode & 8|1: behave like require
32131/******/ 	__webpack_require__.t = function(value, mode) {
32132/******/ 		if(mode & 1) value = __webpack_require__(value);
32133/******/ 		if(mode & 8) return value;
32134/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
32135/******/ 		var ns = Object.create(null);
32136/******/ 		__webpack_require__.r(ns);
32137/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
32138/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
32139/******/ 		return ns;
32140/******/ 	};
32141/******/
32142/******/ 	// getDefaultExport function for compatibility with non-harmony modules
32143/******/ 	__webpack_require__.n = function(module) {
32144/******/ 		var getter = module && module.__esModule ?
32145/******/ 			function getDefault() { return module['default']; } :
32146/******/ 			function getModuleExports() { return module; };
32147/******/ 		__webpack_require__.d(getter, 'a', getter);
32148/******/ 		return getter;
32149/******/ 	};
32150/******/
32151/******/ 	// Object.prototype.hasOwnProperty.call
32152/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
32153/******/
32154/******/ 	// __webpack_public_path__
32155/******/ 	__webpack_require__.p = "";
32156/******/
32157/******/
32158/******/ 	// Load entry module and return exports
32159/******/ 	return __webpack_require__(__webpack_require__.s = 19);
32160/******/ })
32161/************************************************************************/
32162/******/ ({
32163
32164/***/ "./foundation.core":
32165/*!****************************************************************************************************************************************************************!*\
32166  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
32167  \****************************************************************************************************************************************************************/
32168/*! no static exports found */
32169/***/ (function(module, exports) {
32170
32171module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
32172
32173/***/ }),
32174
32175/***/ "./foundation.util.motion":
32176/*!********************************************************************************************************************************************************************************************!*\
32177  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***!
32178  \********************************************************************************************************************************************************************************************/
32179/*! no static exports found */
32180/***/ (function(module, exports) {
32181
32182module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__;
32183
32184/***/ }),
32185
32186/***/ "./js/entries/plugins/foundation.toggler.js":
32187/*!**************************************************!*\
32188  !*** ./js/entries/plugins/foundation.toggler.js ***!
32189  \**************************************************/
32190/*! exports provided: Foundation, Toggler */
32191/***/ (function(module, __webpack_exports__, __webpack_require__) {
32192
32193"use strict";
32194__webpack_require__.r(__webpack_exports__);
32195/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
32196/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
32197/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
32198
32199/* harmony import */ var _foundation_toggler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.toggler */ "./js/foundation.toggler.js");
32200/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Toggler", function() { return _foundation_toggler__WEBPACK_IMPORTED_MODULE_1__["Toggler"]; });
32201
32202
32203
32204_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_toggler__WEBPACK_IMPORTED_MODULE_1__["Toggler"], 'Toggler'
vendor: 25 bytes, lines 32204-32209
32204);
32205
32206
32207/***/ }),
32208
32209/***/ "./
vendor: 5,134 bytes, lines 32209-32301
32209js/foundation.toggler.js":
32210/*!**********************************!*\
32211  !*** ./js/foundation.toggler.js ***!
32212  \**********************************/
32213/*! exports provided: Toggler */
32214/***/ (function(module, __webpack_exports__, __webpack_require__) {
32215
32216"use strict";
32217__webpack_require__.r(__webpack_exports__);
32218/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Toggler", function() { return Toggler; });
32219/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
32220/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
32221/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
32222/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__);
32223/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core");
32224/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__);
32225/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js");
32226
32227
32228function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
32229
32230function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
32231
32232function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
32233
32234function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
32235
32236function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
32237
32238function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
32239
32240function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
32241
32242function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
32243
32244function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
32245
32246
32247
32248
32249
32250
32251/**
32252 * Toggler module.
32253 * @module foundation.toggler
32254 * @requires foundation.util.motion
32255 * @requires foundation.util.triggers
32256 */
32257
32258var Toggler =
32259/*#__PURE__*/
32260function (_Plugin) {
32261  _inherits(Toggler, _Plugin);
32262
32263  function Toggler() {
32264    _classCallCheck(this, Toggler);
32265
32266    return _possibleConstructorReturn(this, _getPrototypeOf(Toggler).apply(this, arguments));
32267  }
32268
32269  _createClass(Toggler, [{
32270    key: "_setup",
32271
32272    /**
32273     * Creates a new instance of Toggler.
32274     * @class
32275     * @name Toggler
32276     * @fires Toggler#init
32277     * @param {Object} element - jQuery object to add the trigger to.
32278     * @param {Object} options - Overrides to the default plugin settings.
32279     */
32280    value: function _setup(element, options) {
32281      this.$element = element;
32282      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Toggler.defaults, element.data(), options);
32283      this.className = '';
32284      this.className = 'Toggler'; // ie9 back compat
32285      // Triggers init is idempotent, just need to make sure it is initialized
32286
32287      _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a);
32288
32289      this._init();
32290
32291      this._events();
32292    }
32293    /**
32294     * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.
32295     * @function
32296     * @private
32297     */
32298
32299  }, {
32300    key: "_init",
32301    value: function _init() {
vendor: 4,335 bytes, lines 32302-32424
32302      // Collect triggers to set ARIA attributes to
32303      var id = this.$element[0].id,
32304          $triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open~=\"".concat(id, "\"], [data-close~=\"").concat(id, "\"], [data-toggle~=\"").concat(id, "\"]"));
32305      var input; // Parse animation classes if they were set
32306
32307      if (this.options.animate) {
32308        input = this.options.animate.split(' ');
32309        this.animationIn = input[0];
32310        this.animationOut = input[1] || null; // - aria-expanded: according to the element visibility.
32311
32312        $triggers.attr('aria-expanded', !this.$element.is(':hidden'));
32313      } // Otherwise, parse toggle class
32314      else {
32315          input = this.options.toggler;
32316
32317          if (typeof input !== 'string' || !input.length) {
32318            throw new Error("The 'toogler' option containing the target class is required, got \"".concat(input, "\""));
32319          } // Allow for a . at the beginning of the string
32320
32321
32322          this.className = input[0] === '.' ? input.slice(1) : input; // - aria-expanded: according to the elements class set.
32323
32324          $triggers.attr('aria-expanded', this.$element.hasClass(this.className));
32325        } // - aria-controls: adding the element id to it if not already in it.
32326
32327
32328      $triggers.each(function (index, trigger) {
32329        var $trigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()(trigger);
32330        var controls = $trigger.attr('aria-controls') || '';
32331        var containsId = new RegExp("\\b".concat(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["RegExpEscape"])(id), "\\b")).test(controls);
32332        if (!containsId) $trigger.attr('aria-controls', controls ? "".concat(controls, " ").concat(id) : id);
32333      });
32334    }
32335    /**
32336     * Initializes events for the toggle trigger.
32337     * @function
32338     * @private
32339     */
32340
32341  }, {
32342    key: "_events",
32343    value: function _events() {
32344      this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));
32345    }
32346    /**
32347     * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was "on" or "off".
32348     * @function
32349     * @fires Toggler#on
32350     * @fires Toggler#off
32351     */
32352
32353  }, {
32354    key: "toggle",
32355    value: function toggle() {
32356      this[this.options.animate ? '_toggleAnimate' : '_toggleClass']();
32357    }
32358  }, {
32359    key: "_toggleClass",
32360    value: function _toggleClass() {
32361      this.$element.toggleClass(this.className);
32362      var isOn = this.$element.hasClass(this.className);
32363
32364      if (isOn) {
32365        /**
32366         * Fires if the target element has the class after a toggle.
32367         * @event Toggler#on
32368         */
32369        this.$element.trigger('on.zf.toggler');
32370      } else {
32371        /**
32372         * Fires if the target element does not have the class after a toggle.
32373         * @event Toggler#off
32374         */
32375        this.$element.trigger('off.zf.toggler');
32376      }
32377
32378      this._updateARIA(isOn);
32379
32380      this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');
32381    }
32382  }, {
32383    key: "_toggleAnimate",
32384    value: function _toggleAnimate() {
32385      var _this = this;
32386
32387      if (this.$element.is(':hidden')) {
32388        _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"].animateIn(this.$element, this.animationIn, function () {
32389          _this._updateARIA(true);
32390
32391          this.trigger('on.zf.toggler');
32392          this.find('[data-mutate]').trigger('mutateme.zf.trigger');
32393        });
32394      } else {
32395        _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"].animateOut(this.$element, this.animationOut, function () {
32396          _this._updateARIA(false);
32397
32398          this.trigger('off.zf.toggler');
32399          this.find('[data-mutate]').trigger('mutateme.zf.trigger');
32400        });
32401      }
32402    }
32403  }, {
32404    key: "_updateARIA",
32405    value: function _updateARIA(isOn) {
32406      var id = this.$element[0].id;
32407      jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(id, "\"], [data-close=\"").concat(id, "\"], [data-toggle=\"").concat(id, "\"]")).attr({
32408        'aria-expanded': isOn ? true : false
32409      });
32410    }
32411    /**
32412     * Destroys the instance of Toggler on the element.
32413     * @function
32414     */
32415
32416  }, {
32417    key: "_destroy",
32418    value: function _destroy() {
32419      this.$element.off('.zf.toggler');
32420    }
32421  }]);
32422
32423  return Toggler;
32424}
32424(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
32425
32426Toggler.defaults = {
32427  /**
32428   * Class of the element to toggle. It can be provided with or without "."
32429   * @option
32430   * @type {string}
32431   */
32432  toggler: undefined,
32433
32434  /**
32435   * Tells the plugin if the element should animated when toggled.
32436   * @option
32437   * @type {boolean}
32438   * @default false
32439   */
32440  animate: false
32441};
32442
32443
32444/***/ }),
32445
vendor: 12,977 bytes, lines 32446-32760
32446/***/ "./js/foundation.util.triggers.js":
32447/*!****************************************!*\
32448  !*** ./js/foundation.util.triggers.js ***!
32449  \****************************************/
32450/*! exports provided: Triggers */
32451/***/ (function(module, __webpack_exports__, __webpack_require__) {
32452
32453"use strict";
32454__webpack_require__.r(__webpack_exports__);
32455/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; });
32456/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
32457/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
32458/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
32459/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);
32460/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion");
32461/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__);
32462
32463
32464function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
32465
32466
32467
32468
32469
32470var MutationObserver = function () {
32471  var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];
32472
32473  for (var i = 0; i < prefixes.length; i++) {
32474    if ("".concat(prefixes[i], "MutationObserver") in window) {
32475      return window["".concat(prefixes[i], "MutationObserver")];
32476    }
32477  }
32478
32479  return false;
32480}();
32481
32482var triggers = function triggers(el, type) {
32483  el.data(type).split(' ').forEach(function (id) {
32484    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]);
32485  });
32486};
32487
32488var Triggers = {
32489  Listeners: {
32490    Basic: {},
32491    Global: {}
32492  },
32493  Initializers: {}
32494};
32495Triggers.Listeners.Basic = {
32496  openListener: function openListener() {
32497    triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open');
32498  },
32499  closeListener: function closeListener() {
32500    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close');
32501
32502    if (id) {
32503      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close');
32504    } else {
32505      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger');
32506    }
32507  },
32508  toggleListener: function toggleListener() {
32509    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle');
32510
32511    if (id) {
32512      triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
32513    } else {
32514      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger');
32515    }
32516  },
32517  closeableListener: function closeableListener(e) {
32518    var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833
32519
32520    e.stopPropagation();
32521
32522    if (animation !== '') {
32523      _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () {
32524        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf');
32525      });
32526    } else {
32527      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf');
32528    }
32529  },
32530  toggleFocusListener: function toggleFocusListener() {
32531    var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus');
32532    jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]);
32533  }
32534}; // Elements with [data-open] will reveal a plugin that supports it when clicked.
32535
32536Triggers.Initializers.addOpenListener = function ($elem) {
32537  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);
32538  $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);
32539}; // Elements with [data-close] will close a plugin that supports it when clicked.
32540// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.
32541
32542
32543Triggers.Initializers.addCloseListener = function ($elem) {
32544  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);
32545  $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);
32546}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked.
32547
32548
32549Triggers.Initializers.addToggleListener = function ($elem) {
32550  $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);
32551  $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);
32552}; // Elements with [data-closable] will respond to close.zf.trigger events.
32553
32554
32555Triggers.Initializers.addCloseableListener = function ($elem) {
32556  $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);
32557  $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);
32558}; // Elements with [data-toggle-focus] will respond to coming in and out of focus
32559
32560
32561Triggers.Initializers.addToggleFocusListener = function ($elem) {
32562  $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);
32563  $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);
32564}; // More Global/complex listeners and triggers
32565
32566
32567Triggers.Listeners.Global = {
32568  resizeListener: function resizeListener($nodes) {
32569    if (!MutationObserver) {
32570      //fallback for IE 9
32571      $nodes.each(function () {
32572        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger');
32573      });
32574    } //trigger all listening elements and signal a resize event
32575
32576
32577    $nodes.attr('data-events', "resize");
32578  },
32579  scrollListener: function scrollListener($nodes) {
32580    if (!MutationObserver) {
32581      //fallback for IE 9
32582      $nodes.each(function () {
32583        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger');
32584      });
32585    } //trigger all listening elements and signal a scroll event
32586
32587
32588    $nodes.attr('data-events', "scroll");
32589  },
32590  closeMeListener: function closeMeListener(e, pluginId) {
32591    var plugin = e.namespace.split('.')[0];
32592    var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]"));
32593    plugins.each(function () {
32594      var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
32595
32596      _this.triggerHandler('close.zf.trigger', [_this]);
32597    });
32598  } // Global, parses whole document.
32599
32600};
32601
32602Triggers.Initializers.addClosemeListener = function (pluginName) {
32603  var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'),
32604      plugNames = ['dropdown', 'tooltip', 'reveal'];
32605
32606  if (pluginName) {
32607    if (typeof pluginName === 'string') {
32608      plugNames.push(pluginName);
32609    } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') {
32610      plugNames = plugNames.concat(pluginName);
32611    } else {
32612      console.error('Plugin names must be strings');
32613    }
32614  }
32615
32616  if (yetiBoxes.length) {
32617    var listeners = plugNames.map(function (name) {
32618      return "closeme.zf.".concat(name);
32619    }).join(' ');
32620    jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);
32621  }
32622};
32623
32624function debounceGlobalListener(debounce, trigger, listener) {
32625  var timer,
32626      args = Array.prototype.slice.call(arguments, 3);
32627  jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) {
32628    if (timer) {
32629      clearTimeout(timer);
32630    }
32631
32632    timer = setTimeout(function () {
32633      listener.apply(null, args);
32634    }, debounce || 10); //default time to emit scroll event
32635  });
32636}
32637
32638Triggers.Initializers.addResizeListener = function (debounce) {
32639  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]');
32640
32641  if ($nodes.length) {
32642    debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);
32643  }
32644};
32645
32646Triggers.Initializers.addScrollListener = function (debounce) {
32647  var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]');
32648
32649  if ($nodes.length) {
32650    debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);
32651  }
32652};
32653
32654Triggers.Initializers.addMutationEventsListener = function ($elem) {
32655  if (!MutationObserver) {
32656    return false;
32657  }
32658
32659  var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback
32660
32661  var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) {
32662    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type
32663
32664    switch (mutationRecordsList[0].type) {
32665      case "attributes":
32666        if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") {
32667          $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);
32668        }
32669
32670        if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") {
32671          $target.triggerHandler('resizeme.zf.trigger', [$target]);
32672        }
32673
32674        if (mutationRecordsList[0].attributeName === "style") {
32675          $target.closest("[data-mutate]").attr("data-events", "mutate");
32676          $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
32677        }
32678
32679        break;
32680
32681      case "childList":
32682        $target.closest("[data-mutate]").attr("data-events", "mutate");
32683        $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]);
32684        break;
32685
32686      default:
32687        return false;
32688      //nothing
32689    }
32690  };
32691
32692  if ($nodes.length) {
32693    //for each element that needs to listen for resizing, scrolling, or mutation add a single observer
32694    for (var i = 0; i <= $nodes.length - 1; i++) {
32695      var elementObserver = new MutationObserver(listeningElementsMutation);
32696      elementObserver.observe($nodes[i], {
32697        attributes: true,
32698        childList: true,
32699        characterData: false,
32700        subtree: true,
32701        attributeFilter: ["data-events", "style"]
32702      });
32703    }
32704  }
32705};
32706
32707Triggers.Initializers.addSimpleListeners = function () {
32708  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
32709  Triggers.Initializers.addOpenListener($document);
32710  Triggers.Initializers.addCloseListener($document);
32711  Triggers.Initializers.addToggleListener($document);
32712  Triggers.Initializers.addCloseableListener($document);
32713  Triggers.Initializers.addToggleFocusListener($document);
32714};
32715
32716Triggers.Initializers.addGlobalListeners = function () {
32717  var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document);
32718  Triggers.Initializers.addMutationEventsListener($document);
32719  Triggers.Initializers.addResizeListener();
32720  Triggers.Initializers.addScrollListener();
32721  Triggers.Initializers.addClosemeListener();
32722};
32723
32724Triggers.init = function ($, Foundation) {
32725  Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () {
32726    if ($.triggersInitialized !== true) {
32727      Triggers.Initializers.addSimpleListeners();
32728      Triggers.Initializers.addGlobalListeners();
32729      $.triggersInitialized = true;
32730    }
32731  });
32732
32733  if (Foundation) {
32734    Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now.
32735
32736    Foundation.IHearYou = Triggers.Initializers.addGlobalListeners;
32737  }
32738};
32739
32740
32741
32742/***/ }),
32743
32744/***/ 19:
32745/*!********************************************************!*\
32746  !*** multi ./js/entries/plugins/foundation.toggler.js ***!
32747  \********************************************************/
32748/*! no static exports found */
32749/***/ (function(module, exports, __webpack_require__) {
32750
32751module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.toggler.js */"./js/entries/plugins/foundation.toggler.js");
32752
32753
32754/***/ }),
32755
32756/***/ "jquery":
32757/*!********************************************************************************************!*\
32758  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
32759  \********************************************************************************************/
32760/*! no static exports found */
vendor: 4,388 bytes, lines 32761-32847
32761/***/ (function(module, exports) {
32762
32763module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
32764
32765/***/ })
32766
32767/******/ });
32768});
32769//# sourceMappingURL=foundation.toggler.js.map
32770(function webpackUniversalModuleDefinition(root, factory) {
32771	if(typeof exports === 'object' && typeof module === 'object')
32772		module.exports = factory(require("./foundation.accordion"), require("./foundation.core"), require("./foundation.tabs"), require("./foundation.util.mediaQuery"), require("jquery"));
32773	else if(typeof define === 'function' && define.amd)
32774		define(["./foundation.accordion", "./foundation.core", "./foundation.tabs", "./foundation.util.mediaQuery", "jquery"], factory);
32775	else if(typeof exports === 'object')
32776		exports["foundation.responsiveAccordionTabs"] = factory(require("./foundation.accordion"), require("./foundation.core"), require("./foundation.tabs"), require("./foundation.util.mediaQuery"), require("jquery"));
32777	else
32778		root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.responsiveAccordionTabs"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.accordion"], root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.tabs"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["jQuery"]);
32779})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_accordion__, __WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_tabs__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE_jquery__) {
32780return /******/ (function(modules) { // webpackBootstrap
32781/******/ 	// The module cache
32782/******/ 	var installedModules = {};
32783/******/
32784/******/ 	// The require function
32785/******/ 	function __webpack_require__(moduleId) {
32786/******/
32787/******/ 		// Check if module is in cache
32788/******/ 		if(installedModules[moduleId]) {
32789/******/ 			return installedModules[moduleId].exports;
32790/******/ 		}
32791/******/ 		// Create a new module (and put it into the cache)
32792/******/ 		var module = installedModules[moduleId] = {
32793/******/ 			i: moduleId,
32794/******/ 			l: false,
32795/******/ 			exports: {}
32796/******/ 		};
32797/******/
32798/******/ 		// Execute the module function
32799/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
32800/******/
32801/******/ 		// Flag the module as loaded
32802/******/ 		module.l = true;
32803/******/
32804/******/ 		// Return the exports of the module
32805/******/ 		return module.exports;
32806/******/ 	}
32807/******/
32808/******/
32809/******/ 	// expose the modules object (__webpack_modules__)
32810/******/ 	__webpack_require__.m = modules;
32811/******/
32812/******/ 	// expose the module cache
32813/******/ 	__webpack_require__.c = installedModules;
32814/******/
32815/******/ 	// define getter function for harmony exports
32816/******/ 	__webpack_require__.d = function(exports, name, getter) {
32817/******/ 		if(!__webpack_require__.o(exports, name)) {
32818/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
32819/******/ 		}
32820/******/ 	};
32821/******/
32822/******/ 	// define __esModule on exports
32823/******/ 	__webpack_require__.r = function(exports) {
32824/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
32825/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
32826/******/ 		}
32827/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
32828/******/ 	};
32829/******/
32830/******/ 	// create a fake namespace object
32831/******/ 	// mode & 1: value is a module id, require it
32832/******/ 	// mode & 2: merge all properties of value into the ns
32833/******/ 	// mode & 4: return value when already ns object
32834/******/ 	// mode & 8|1: behave like require
32835/******/ 	__webpack_require__.t = function(value, mode) {
32836/******/ 		if(mode & 1) value = __webpack_require__(value);
32837/******/ 		if(mode & 8) return value;
32838/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
32839/******/ 		var ns = Object.create(null);
32840/******/ 		__webpack_require__.r(ns);
32841/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
32842/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
32843/******/ 		return ns;
32844/******/ 	};
32845/******/
32846/******/ 	// getDefaultExport function for compatibility with non-harmony modules
32847/******/ 	__webpack_require__.n = function(module) {
32848/******/ 		var getter = module && module.__esModule ?
32849/******/ 			function getDefault() { return module['default']; } :
32850/******/ 			function getModuleExports() { return module; };
32851/******/ 		__webpack_require__.d(getter, 'a', getter);
32852/******/ 		return getter;
32853/******/ 	};
32854/******/
32855/******/ 	// Object.prototype.hasOwnProperty.call
32856/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
32857/******/
32858/******/ 	// __webpack_public_path__
32859/******/ 	__webpack_require__.p = "";
32860/******/
32861/******/
32862/******/ 	// Load entry module and return exports
32863/******/ 	return __webpack_require__(__webpack_require__.s = 11);
32864/******/ })
32865/************************************************************************/
32866/******/ ({
32867
32868/***/ "./foundation.accordion":
32869/*!************************************************************************************************************************************************************************************!*\
32870  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.accordion"],"amd":"./foundation.accordion","commonjs":"./foundation.accordion","commonjs2":"./foundation.accordion"} ***!
32871  \************************************************************************************************************************************************************************************/
32872/*! no static exports found */
32873/***/ (function(module, exports) {
32874
32875module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_accordion__;
32876
32877/***/ }),
32878
32879/***/ "./foundation.core":
32880/*!****************************************************************************************************************************************************************!*\
32881  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
32882  \****************************************************************************************************************************************************************/
32883/*! no static exports found */
32884/***/ (function(module, exports) {
32885
32886module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;
32887
32888/***/ }),
32889
32890/***/ "./foundation.tabs":
32891/*!****************************************************************************************************************************************************************!*\
32892  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.tabs"],"amd":"./foundation.tabs","commonjs":"./foundation.tabs","commonjs2":"./foundation.tabs"} ***!
32893  \****************************************************************************************************************************************************************/
32894/*! no static exports found */
32895/***/ (function(module, exports) {
32896
32897module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_tabs__;
32898
32899/***/ }),
32900
32901/***/ "./foundation.util.mediaQuery":
32902/*!************************************************************************************************************************************************************************************************************!*\
32903  !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***!
32904  \************************************************************************************************************************************************************************************************************/
32905/*! no static exports found */
32906/***/ (function(module, exports) {
32907
32908module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;
32909
32910/***/ }),
32911
32912/***/ "./js/entries/plugins/foundation.responsiveAccordionTabs.js":
32913/*!******************************************************************!*\
32914  !*** ./js/entries/plugins/foundation.responsiveAccordionTabs.js ***!
32915  \******************************************************************/
32916/*! exports provided: Foundation, ResponsiveAccordionTabs */
32917/***/ (function(module, __webpack_exports__, __webpack_require__) {
32918
32919"use strict";
32920__webpack_require__.r(__webpack_exports__);
32921/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core");
32922/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);
32923/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; });
32924
32925/* harmony import */ var _foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.responsiveAccordionTabs */ "./js/foundation.responsiveAccordionTabs.js");
32926/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResponsiveAccordionTabs", function() { return _foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__["ResponsiveAccordionTabs"]; });
32927
32928
32929
32930_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__["ResponsiveAccordionTabs"], 'ResponsiveAccordionTabs');
32931
32932
32933/***/ }),
32934
32935/***/ "./js/foundation.responsiveAccordionTabs.js":
32936/*!**************************************************!*\
32937  !*** ./js/foundation.responsiveAccordionTabs.js ***!
32938  \**************************************************/
32939/*! exports provided: ResponsiveAccordionTabs */
32940/***/ (function(module, __webpack_exports__, __webpack_require__) {
32941
32942"use strict";
32943__webpack_require__.r(__webpack_exports__);
32944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsiveAccordionTabs", function() { return ResponsiveAccordionTabs; });
32945/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery");
32946/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
32947/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery");
32948/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__);
32949/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core");
32950/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__);
32951/* harmony import */ var _foundation_accordion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.accordion */ "./foundation.accordion");
32952/* harmony import */ var _foundation_accordion__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_accordion__WEBPACK_IMPORTED_MODULE_3__);
32953/* harmony import */ var _foundation_tabs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.tabs */ "./foundation.tabs");
32954/* harmony import */ var _foundation_tabs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_tabs__WEBPACK_IMPORTED_MODULE_4__);
32955
32956
32957function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
32958
32959function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
32960
32961function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
32962
32963function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
32964
32965function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
32966
32967function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
32968
32969function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
32970
32971function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
32972
32973function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
32974
32975
32976
32977
32978
32979
32980 // The plugin matches the plugin classes with these plugin instances.
32981
32982var MenuPlugins = {
32983  tabs: {
32984    cssClass: 'tabs',
32985    plugin: _foundation_tabs__WEBPACK_IMPORTED_MODULE_4__["Tabs"],
32986    open: function open(plugin, target) {
32987      return plugin.selectTab(target);
32988    },
32989    close: null
32990    /* not supported */
32991    ,
32992    toggle: null
32993    /* not supported */
32994
32995  },
32996  accordion: {
32997    cssClass: 'accordion',
32998    plugin: _foundation_accordion__WEBPACK_IMPORTED_MODULE_3__["Accordion"],
32999    open: function open(plugin, target) {
33000      return plugin.down(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target));
33001    },
33002    close: function close(plugin, target) {
33003      return plugin.up(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target));
33004    },
33005    toggle: function toggle(plugin, target) {
33006      return plugin.toggle(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target));
33007    }
33008  }
33009};
33010/**
33011 * ResponsiveAccordionTabs module.
33012 * @module foundation.responsiveAccordionTabs
33013 * @requires foundation.util.motion
33014 * @requires foundation.accordion
33015 * @requires foundation.tabs
33016 */
33017
33018var ResponsiveAccordionTabs =
33019/*#__PURE__*/
33020function (_Plugin) {
33021  _inherits(ResponsiveAccordionTabs, _Plugin);
33022
33023  function ResponsiveAccordionTabs(element, options) {
33024    var _this2;
33025
33026    _classCallCheck(this, ResponsiveAccordionTabs);
33027
33028    _this2 = _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveAccordionTabs).call(this, element, options));
33029    return _possibleConstructorReturn(_this2, _this2.options.reflow && _this2.storezfData || _assertThisInitialized(_this2));
33030  }
33031  /**
33032   * Creates a new instance of a responsive accordion tabs.
33033   * @class
33034   * @name ResponsiveAccordionTabs
33035   * @fires ResponsiveAccordionTabs#init
33036   * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.
33037   * @param {Object} options - Overrides to the default plugin settings.
33038   */
33039
33040
33041  _createClass(ResponsiveAccordionTabs, [{
33042    key: "_setup",
33043    value: function _setup(element, options) {
33044      this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element);
33045      this.$element.data('zfPluginBase', this);
33046      this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);
33047      this.rules = this.$element.data('responsive-accordion-tabs');
33048      this.currentMq = null;
33049      this.currentRule = null;
33050      this.currentPlugin = null;
33051      this.className = 'ResponsiveAccordionTabs'; // ie9 back compat
33052
33053      if (!this.$element.attr('id')) {
33054        this.$element.attr('id', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'responsiveaccordiontabs'));
33055      }
33056
33057      this._init();
33058
33059      this._events();
33060    }
33061    /**
33062     * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.
33063     * @function
33064     * @private
33065     */
33066
33067  }, {
33068    key: "_init",
33069    value: function _init() {
33070      _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules
33071
33072
33073      if (typeof this.rules === 'string') {
33074        var rulesTree = {}; // Parse rules from "classes" pulled from data attribute
33075
33076        var rules = this.rules.split(' '); // Iterate through every rule found
33077
33078        for (var i = 0; i < rules.length; i++) {
33079          var rule = rules[i].split('-');
33080          var ruleSize = rule.length > 1 ? rule[0] : 'small';
33081          var rulePlugin = rule.length > 1 ? rule[1] : rule[0];
33082
33083          if (MenuPlugins[rulePlugin] !== null) {
33084            rulesTree[ruleSize] = MenuPlugins[rulePlugin];
33085          }
33086        }
33087
33088        this.rules = rulesTree;
33089      }
33090
33091      this._getAllOptions();
33092
33093      if (!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)) {
33094        this._checkMediaQueries();
33095      }
33096    }
33097  }, {
33098    key: "_getAllOptions",
33099    value: function _getAllOptions() {
33100      //get all defaults and options
33101      var _this = this;
33102
33103      _this.allOptions = {};
33104
33105      for (var key in MenuPlugins) {
33106        if (MenuPlugins.hasOwnProperty(key)) {
33107          var obj = MenuPlugins[key];
33108
33109          try {
33110            var dummyPlugin = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<ul></ul>');
33111            var tmpPlugin = new obj.plugin(dummyPlugin, _this.options);
33112
33113            for (var keyKey in tmpPlugin.options) {
33114              if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {
33115                var objObj = tmpPlugin.options[keyKey];
33116                _this.allOptions[keyKey] = objObj;
33117              }
33118            }
33119
33120            tmpPlugin.destroy();
33121          } catch (e) {}
33122        }
33123      }
33124    }
33125    /**
33126     * Initializes events for the Menu.
33127     * @function
33128     * @private
33129     */
33130
33131  }, {
33132    key: "_events",
33133    value: function _events() {
33134      this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);
33135      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);
33136    }
33137    /**
33138     * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.
33139     * @function
33140     * @private
33141     */
33142
33143  }, {
33144    key: "_checkMediaQueries",
33145    value: function _checkMediaQueries() {
33146      var matchedMq,
33147          _this = this; // Iterate through each rule and find the last matching rule
33148
33149
33150      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules, function (key) {
33151        if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(key)) {
33152          matchedMq = key;
33153        }
33154      }); // No match? No dice
33155
33156      if (!matchedMq) return; // Plugin already initialized? We good
33157
33158      if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; // Remove existing plugin-specific CSS classes
33159
33160      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins, function (key, value) {
33161        _this.$element.removeClass(value.cssClass);
33162      }); // Add the CSS class for the new plugin
33163
33164      this.$element.addClass(this.rules[matchedMq].cssClass); // Create an instance of the new plugin
33165
33166      if (this.currentPlugin) {
vendor: 6,717 bytes, lines 33167-33322
33167        //don't know why but on nested elements data zfPlugin get's lost
33168        if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin', this.storezfData);
33169        this.currentPlugin.destroy();
33170      }
33171
33172      this._handleMarkup(this.rules[matchedMq].cssClass);
33173
33174      this.currentRule = this.rules[matchedMq];
33175      this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);
33176      this.storezfData = this.currentPlugin.$element.data('zfPlugin');
33177    }
33178  }, {
33179    key: "_handleMarkup",
33180    value: function _handleMarkup(toSet) {
33181      var _this = this,
33182          fromString = 'accordion';
33183
33184      var $panels = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + this.$element.attr('id') + ']');
33185      if ($panels.length) fromString = 'tabs';
33186
33187      if (fromString === toSet) {
33188        return;
33189      }
33190
33191      var tabsTitle = _this.allOptions.linkClass ? _this.allOptions.linkClass : 'tabs-title';
33192      var tabsPanel = _this.allOptions.panelClass ? _this.allOptions.panelClass : 'tabs-panel';
33193      this.$element.removeAttr('role');
33194      var $liHeads = this.$element.children('.' + tabsTitle + ',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');
33195      var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');
33196
33197      if (fromString === 'tabs') {
33198        $panels = $panels.children('.' + tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');
33199        $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');
33200      } else {
33201        $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');
33202      }
33203
33204      $panels.css({
33205        display: '',
33206        visibility: ''
33207      });
33208      $liHeads.css({
33209        display: '',
33210        visibility: ''
33211      });
33212
33213      if (toSet === 'accordion') {
33214        $panels.each(function (key, value) {
33215          jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content', '').removeClass('is-active').css({
33216            height: ''
33217          });
33218          jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + _this.$element.attr('id') + ']').after('<div id="tabs-placeholder-' + _this.$element.attr('id') + '"></div>').detach();
33219          $liHeads.addClass('accordion-item').attr('data-accordion-item', '');
33220          $liHeadsA.addClass('accordion-title');
33221        });
33222      } else if (toSet === 'tabs') {
33223        var $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + _this.$element.attr('id') + ']');
33224        var $placeholder = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#tabs-placeholder-' + _this.$element.attr('id'));
33225
33226        if ($placeholder.length) {
33227          $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div class="tabs-content"></div>').insertAfter($placeholder).attr('data-tabs-content', _this.$element.attr('id'));
33228          $placeholder.remove();
33229        } else {
33230          $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div class="tabs-content"></div>').insertAfter(_this.$element).attr('data-tabs-content', _this.$element.attr('id'));
33231        }
33232
33233        $panels.each(function (key, value) {
33234          var tempValue = jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($tabsContent).addClass(tabsPanel);
33235          var hash = $liHeadsA.get(key).hash.slice(1);
33236          var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'accordion');
33237
33238          if (hash !== id) {
33239            if (hash !== '') {
33240              jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id', hash);
33241            } else {
33242              hash = id;
33243              jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id', hash);
33244              jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href', jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href').replace('#', '') + '#' + hash);
33245            }
33246          }
33247
33248          var isActive = jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeads.get(key)).hasClass('is-active');
33249
33250          if (isActive) {
33251            tempValue.addClass('is-active');
33252          }
33253        });
33254        $liHeads.addClass(tabsTitle);
33255      }
33256
33257      ;
33258    }
33259    /**
33260     * Opens the plugin pane defined by `target`.
33261     * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.
33262     * @see Accordion.down
33263     * @see Tabs.selectTab
33264     * @function
33265     */
33266
33267  }, {
33268    key: "open",
33269    value: function open(_target) {
33270      if (this.currentRule && typeof this.currentRule.open === 'function') {
33271        var _this$currentRule;
33272
33273        return (_this$currentRule = this.currentRule).open.apply(_this$currentRule, [this.currentPlugin].concat(Array.prototype.slice.call(arguments)));
33274      }
33275    }
33276    /**
33277     * Closes the plugin pane defined by `target`. Not availaible for Tabs.
33278     * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.
33279     * @see Accordion.up
33280     * @function
33281     */
33282
33283  }, {
33284    key: "close",
33285    value: function close(_target) {
33286      if (this.currentRule && typeof this.currentRule.close === 'function') {
33287        var _this$currentRule2;
33288
33289        return (_this$currentRule2 = this.currentRule).close.apply(_this$currentRule2, [this.currentPlugin].concat(Array.prototype.slice.call(arguments)));
33290      }
33291    }
33292    /**
33293     * Toggles the plugin pane defined by `target`. Not availaible for Tabs.
33294     * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.
33295     * @see Accordion.toggle
33296     * @function
33297     */
33298
33299  }, {
33300    key: "toggle",
33301    value: function toggle(_target) {
33302      if (this.currentRule && typeof this.currentRule.toggle === 'function') {
33303        var _this$currentRule3;
33304
33305        return (_this$currentRule3 = this.currentRule).toggle.apply(_this$currentRule3, [this.currentPlugin].concat(Array.prototype.slice.call(arguments)));
33306      }
33307    }
33308    /**
33309     * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.
33310     * @function
33311     */
33312
33313  }, {
33314    key: "_destroy",
33315    value: function _destroy() {
33316      if (this.currentPlugin) this.currentPlugin.destroy();
33317      jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);
33318    }
33319  }]);
33320
33321  return ResponsiveAccordionTabs;
33322}
33322(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["Plugin"]);
33323
33324ResponsiveAccordionTabs.defaults = {};
33325
33326
33327/***/ }),
33328
33329/***/ 11:
33330/*!************************************************************************!*\
33331  !*** multi ./js/entries/plugins/foundation.responsiveAccordionTabs.js ***!
33332  \************************************************************************/
33333/*! no static exports found */
33334/***/ (function(module, exports, __webpack_require__) {
33335
33336module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.responsiveAccordionTabs.js */"./js/entries/plugins/foundation.responsiveAccordionTabs.js");
33337
33338
33339/***/ }),
33340
33341/***/ "jquery":
33342/*!********************************************************************************************!*\
33343  !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
33344  \********************************************************************************************/
33345/*! no static exports found */
33346/***/ (function(module, exports) {
33347
33348module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;
33349
33350/***/ })
33351
33352/******/ });
33353});
33354//# sourceMappingURL=foundation.responsiveAccordionTabs.js.map
33355function btbLazyLoad(el) {
33356    el.Lazy({
33357        afterLoad: function (element) {
33358            if (element.hasClass("inline-svg")) {
33359                inlineSvg(element);
33360            }
33361            $(window).resize();
33362        }
33363    });
33364}
33365
33366$(function() {
33367    btbLazyLoad($('.lazy'));
33368});
33369
33370function slickLazyLoadSlide (slick, slideIndex) {
33371    var slide = $(slick.$slides.get(slideIndex));
33372
33373    slide.find("[data-lazy-slick-interchange]").each(function () {
33374        $(this).attr('data-interchange', $(this).attr('data-lazy-slick-interchange'));
33375        $(this).removeAttr('data-lazy-slick-interchange');
33376        $(this).foundation();
33377    });
33378
33379    slide.find("[data-lazy-slick-src]").each(function () {
33380        $(this).attr('data-src', $(this).attr('data-lazy-slick-src'));
33381        $(this).removeAttr('data-lazy-slick-src');
33382        $(this).addClass("lazy");
33383        btbLazyLoad($(this));
33384    });
33385}
33386/*
33387 * Replace all SVG images with inline SVG if it has the class "inline-svg"
33388 */
33389function inlineSvg(el) {
33390    var $img = el;
33391    var imgID = $img.attr('id');
33392    var imgClass = $img.attr('class');
33393    var imgURL = $img.attr('src');
33394
33395    jQuery.get(imgURL, function (data) {
33396        // Get the SVG tag, ignore the rest
33397        var $svg = jQuery(data).find('svg');
33398
33399        // Add replaced image's ID to the new SVG
33400        if (typeof imgID !== 'undefined') {
33401            $svg = $svg.attr('id', imgID);
33402        }
33403        // Add replaced image's classes to the new SVG
33404        if (typeof imgClass !== 'undefined') {
33405            $svg = $svg.attr('class', imgClass + ' replaced-svg');
33406        }
33407
33408        // Remove any invalid XML tags as per http://validator.w3.org
33409        $svg = $svg.removeAttr('xmlns:a');
33410
33411        // Check if the viewport is set, if the viewport is not set the SVG wont't scale.
33412        if (!$svg.attr('viewBox') && $svg.attr('height') && $svg.attr('width')) {
33413            $svg.attr('viewBox', '0 0 ' + $svg.attr('height') + ' ' + $svg.attr('width'))
33414        }
33415
33416        // Replace image with new SVG
33417        $img.replaceWith($svg);
33418
33419    }, 'xml');
33420}
33421
33422$(document).ready(function() {
33423    jQuery('img.inline-svg').each(function () {
33424        if (!$(this).hasClass("lazy")) {
33425            inlineSvg($(this));
33426        }
33427    });
33428});
33429
33430//--animate the label of an input (instead of using a placeholder)
33431//--this script gives a class to an input with a value
33432
33433$(function(){
33434
33435    $('.animated-input input, .animated-input textarea').focusout(function(){
33436
33437        var text_val = $(this).val();
33438
33439        if(text_val === "") {
33440            $(this).removeClass('has-value');
33441        } else {
33442            $(this).addClass('has-value');
33443        }
33444
33445    });
33446
33447});
33448
33449$(document).ready(function() {
33450
33451    $('.animated-input input, .animated-input textarea').each(function () {
33452
33453        var text_val = $(this).val();
33454
33455        if (text_val === "") {
33456            $(this).removeClass('has-value');
33457        } else {
33458            $(this).addClass('has-value');
33459        }
33460    });
33461
33462});
33463
33464
33465//--this adds a class to the button when it's active. Useful for turning it into a cross or something.
33466
33467$(document).ready(function() {
33468    $("#animated-menu-icon").on("click", function(){
33469
33470        var activeClass = "animated-menu-icon--active";
33471
33472        if ($(this).hasClass(activeClass)) {
33473
33474            $(this).removeClass(activeClass);
33475        } else {
33476
33477            $(this).addClass(activeClass);
33478        }
33479    });
33480});
33481
33482
33483//toggles desktop search dropdown
33484// function toggleSearch(){
33485//     $("#desktop-search-box").fadeToggle("fast","linear");
33486//     $(".desktop-search-box__input").focus();
33487// }
33488
33489/*
33490 Evenup:
33491 Author: Matt Brunt <[email protected]>
33492 A way equalize the height of 'rows' of items responsively, that is, when the number of items per 'row' can change dynamically based on the size of the screen with your media queries.
33493 In the context of evenup - a 'row' is not necessarily a collection of items in a row container, it's best explained with an example:
33494
33495 Given 12 items in a grid with the following arrangement:
33496 large screen	@ 4 x 3
33497 medium screen	@ 3 x 4
33498 small screen	@ 2 x 6
33499
33500 Effectively, it's just a collection of 12 items:
33501
33502 In foundation w/ Emmet coding it'd be something like:
33503 .row>small-6.medium-4.large-3.columns*12
33504
33505 Now on a large screen, we want 'rows' of 4 items equal heights, but then on medium, rows of 3, on small, rows of 2
33506
33507 Foundation has a built in equalizer, but that equalizes all items within a collection, so one row with shorter items will still be the same height as the largest item in the whole group.
33508
33509 This plugin for jQuery solves the issue of having 'rows' of items equal heights on various screen sizes.
33510
33511 Usage:
33512
33513 On the wrappers around the items you want to make even, you must specify the number of items at each of your breakpoints, if not, it won't work.
33514
33515 <div class="row" data-evenup data-options='{ "small": 2, "medium": 4, "large": 5 }'>
33516
33517 </div>
33518
33519 Then within that block, you assign data-evenup-item to the things you want to make the same height:
33520
33521 <div class="small-6 medium-4 large-3 columns" data-evenup-item>
33522
33523 </div>
33524
33525 Then you just need to run the evenup plugin like so:
33526
33527 $(document).ready(function() {
33528 var breakpoints = { small: 0, medium: 641, large: 1025 };
33529 $('[data-evenup]').evenup(breakpoints);
33530 });
33531
33532
33533
33534 */
33535(function($) {
33536
33537    $.fn.evenup = function(breakpoints) {
33538        // loop through each one of the evenups we have
33539        this.each(function() {
33540
33541            var options = $(this).data('options'); // data-options='{ "breakpointLabel": numItems }'
33542
33543            if( ! options) return; // no options, just return
33544
33545            var windowWidth = window.innerWidth || $(window).width();
33546
33547            // work out where we are in respect to our breakpoints
33548            var currentBreakpoint = '';
33549            $.each(breakpoints, function( breakpointLabel, breakpointSize )
33550            {
33551                if(windowWidth >= breakpointSize)
33552                {
33553                    currentBreakpoint = breakpointLabel;
33554                }
33555            });
33556
33557            // get our items to even up, count them, work out how many per 'row' for the breakpoint we're at.
33558            var evenupItems = $(this).find('[data-evenup-item]');
33559            var count = evenupItems.length;
33560            var perRow = options[currentBreakpoint];
33561
33562            // if we have items and we have a number per row set for the breakpoint we've found
33563            if(evenupItems.length > 0 && perRow)
33564            {
33565                // set the height on all items to auto so it can correctly re-calculate the tallest item in a row
33566                evenupItems.height('auto');
33567
33568                // how many rows do we have?
33569                var rows = Math.ceil(count/perRow);
33570
33571                // loop through our rows for the number per row we have at this breakpoint
33572                for(var i = 1; i <= rows; i++)
33573                {
33574                    // reset the row height
33575                    var rowHeight = 0;
33576
33577                    // loop through the items in this row and assign the tallest item to rowHeight
33578                    for(var j = 1; j <= perRow; j++)
33579                    {
33580                        var sliceStart = (i-1)*perRow+j-1; // get the starting item for the 'row' we're in
33581                        var sliceEnd = (i-1)*perRow+j; // get the last item for the 'row' we're in
33582
33583                        var thisHeight = evenupItems.slice(sliceStart, sliceEnd).height();
33584                        if(thisHeight > rowHeight) rowHeight = thisHeight;
33585                    }
33586
33587                    // set the height of the items on this row to the tallest item
33588                    var sliceStart = (i-1)*perRow; // get the starting item for the 'row' we're in
33589                    var sliceEnd = (i-1)*perRow+perRow; // get the last item for the 'row' we're in
33590
33591                    evenupItems.slice(sliceStart, sliceEnd).height(rowHeight);
33592                }
33593            }
33594        });
33595    };
33596}(jQuery));
33597$(document).ready(function() {
33598    if ($("[data-gallery]").length > 0) {
33599        loadResource('js/packery.min.js', 'js', function () {
33600            loadResource('js/html5lightbox.min.js', 'js', function () {
33601                (function ($) {
33602                    $.fn.rePackerise = function () {
33603                        this.packery('destroy');
33604                        this.packery({
33605                            // options
33606                            itemSelector: '.grid-item',
33607                            gutter: 0
33608                        });
33609                    }
33610                })(jQuery);
33611            });
33612        });
33613    }
33614});
33615// an ajax call to load more items to a list.
33616// used for gallery items, testimonials list, news & events
33617// limitation - can only be one of these per page because it uses a class to identify a div with data attributes, & if that's not unique will get confused
33618function loadMore(source, listClass, button, filter) {
33619
33620    var currentY = $(document).scrollTop();
33621
33622    if ($(listClass)[0].hasAttribute("data-offset")) {
33623        var offset = $(listClass).attr("data-offset");
33624    }
33625
33626    if ($(listClass)[0].hasAttribute("data-limit")) {
33627        var limit = $(listClass).attr("data-limit");
33628    }
33629
33630    if ($(listClass)[0].hasAttribute("data-total-items")) {
33631        var totalItems = $(listClass).attr("data-total-items");
33632    }
33633
33634    if ($(listClass)[0].hasAttribute("data-sort")) {
33635        var sort = $(listClass).attr("data-sort");
33636    }
33637
33638    var updatedOffset = parseInt(offset) + parseInt(limit);
33639
33640    $.get("ajax/"+source+"/load-more?offset=" + offset + "&limit=" + limit + '&sort=' + sort + '&filter1=' + filter, function (data) {
33641
33642        $(data).appendTo(listClass).hide().fadeIn(1000);
33643
33644        // init lazy load on new elements
33645        $(listClass).find(".lazy").each(function () {
33646            btbLazyLoad($(this));
33647        });
33648
33649        //--amend the offset param
33650        $(listClass).attr("data-offset", updatedOffset);
33651
33652        console.log(updatedOffset);
33653        console.log(totalItems);
33654
33655        if (updatedOffset >= totalItems) {
33656            $(button).remove();
33657        }
33658
33659        // reload packery as we now have more elements in dom
33660        if ($.fn.rePackerise) {
33661            $(".grid").rePackerise();
33662        }
33663
33664        //--run F6's Equalizer to match heights of new items
33665        new Foundation.Equalizer($(listClass)).applyHeight();
33666
33667        //console.log('trying to keep scroll at ' + currentY);
33668        $('html, body').animate({scrollTop: currentY}, 0);
33669
33670        //--reinitialise the gallery lightboxes
33671        if ($.fn.html5lightbox) {
33672            $(".html5lightbox").html5lightbox();
33673        }
33674
33675
33676    });
33677}
33678
33679$(document).ready(function() {
33680
33681    $(window).on('resize load', function() {
33682
33683        // init evenup plugin
33684        var breakpoints = { small: 0, medium: 641, large: 1025 };
33685        $('[data-evenup]').evenup(breakpoints);
33686
33687    });
33688
33689
33690    $(document).foundation();
33691
33692});
33693
33694
33695
33696
33697
33698
33699
33700$(document).ready(function() {
33701
33702    var $animation_elements = $('.reveal-on-scroll');
33703    var $window = $(window);
33704
33705    function check_if_in_view() {
33706        var window_height = $window.height();
33707        var window_top_position = $window.scrollTop();
33708        var window_bottom_position = (window_top_position + window_height);
33709
33710        $.each($animation_elements, function() {
33711            var $element = $(this);
33712            var element_height = $element.outerHeight();
33713            var element_top_position = $element.offset().top;
33714            var element_bottom_position = (element_top_position + element_height);
33715
33716            //check to see if this current container is within viewport
33717            if ((element_bottom_position >= window_top_position) &&
33718                (element_top_position <= window_bottom_position)) {
33719                $element.addClass('in-view');
33720            } else {
33721                //$element.removeClass('in-view');
33722            }
33723        });
33724    }
33725
33726    $window.on('scroll resize', check_if_in_view);
33727    $window.trigger('scroll');
33728});
33729//toggles search dropdown
33730function toggleSearch(){
33731
33732    var searchBox = $("#search-box");
33733    var mobileSearchBtn = $("#search-btn-mobile");
33734    var mobileSearchCloseBtn = $("#search-btn-close-mobile");
33735
33736    searchBox.toggleClass("search-box--active");
33737
33738    if(searchBox.hasClass("search-box--active")){
33739
33740
33741        searchBox.fadeIn(400,"linear");
33742        mobileSearchBtn.fadeOut(400,"linear");
33743        mobileSearchCloseBtn.fadeIn(400,"linear",function(){
33744            console.log("faded in");
33745            $(".search-box__input").focus();
33746        });
33747    }else {
33748        searchBox.fadeOut(400,"linear");
33749        mobileSearchBtn.fadeIn(400,"linear");
33750        mobileSearchCloseBtn.fadeOut(400,"linear");
33751    }
33752}
33753
33754$(document).ready(function() {
33755
33756    $(".share-btn__button").on("click", function() {
33757
33758        if ($(".share-btn").hasClass("share-btn--expanded")){
33759            $(this).parents(".share-btn").removeClass("share-btn--expanded");
33760        }else{
33761            $(this).parents(".share-btn").addClass("share-btn--expanded");
33762        }
33763
33764
33765    });
33766});
33767//--smooth scroll
33768$(document).ready(function() {
33769    //--scroll down to the "scroll-instruction" element (itself)
33770    $("a.scroll-instruction").on("click", function() {
33771        $('html, body').animate({
33772            scrollTop: $(window).height()
33773        }, 500);
33774        return false;
33775    });
33776    //--scroll to top of page
33777    $("a.back-to-top").on("click", function() {
33778        $('html, body').animate({
33779            scrollTop: 0
33780        }, 500);
33781        return false;
33782    });
33783
33784    //-- scroll to element with id we specify
33785    //-- e.g. <button data-scroll-to="here"> finds <div id="here">
33786    $(document).on("click", "[data-scroll-to]", function() {
33787        var elementIdString = $(this).data("scroll-to");
33788
33789        //--get height of topbar
33790        var topBarHeight = 64;
33791
33792        if($('.top-nav-desktop').height() >
33792 topBarHeight) {
33793            topBarHeight = $('.top-nav-desktop').height();
33794        }
33795
33796        var scrollTo = $("#"+elementIdString).offset().top - topBarHeight;
33797        console.log(scrollTo);
33798        $("html, body").animate({scrollTop: scrollTo});
33799    });
33800
33801
33802    // Add smooth scrolling to all internal links
33803    $('a[href*="#"]')
33804    // Remove links that don't actually link to anything
33805        .not('[href="#"]')
33806        .not('[href="#0"]')
33807        .click(function(event) {
33808            // On-page links
33809            if (
33810                location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')
33811                &&
33812                location.hostname == this.hostname
33813            ) {
33814                // Figure out element to scroll to
33815                var target = $(this.hash);
33816                target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
33817                // Does a scroll target exist?
33818                if (target.length) {
33819                    // Only prevent default if animation is actually gonna happen
33820                    event.preventDefault();
33821                    //--get height of topbar
33822                    var topBarHeight = 64;
33823
33824                    if($('.top-nav-desktop').height() > topBarHeight) {
33825                        topBarHeight = $('.top-nav-desktop').height();
33826                    }
33827
33828                    $('html, body').animate({
33829                        scrollTop: target.offset().top - topBarHeight
33830                    }, 1000, function() {
33831                        // Callback after animation
33832                        // Must change focus!
33833                        var $target = $(target);
33834                        $target.focus();
33835                        if ($target.is(":focus")) { // Checking if the target was focused
33836                            return false;
33837                        } else {
33838                            $target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
33839                            $target.focus(); // Set focus again
33840                        };
33841                    });
33842                }
33843            }
33844        });
33845});
33846
33847// Removes tel: links on desktop and adds them on mobile
33848
33849$(document).ready(function() {
33850
33851   $(window).on("load resize", function() {
33852
33853      if(winSize("small")) {
33854         // add tel: links
33855         $("a[data-tel-link]").each(function() {
33856            $(this).attr("href", $(this).data("tel-link"));
33857         });
33858      } else {
33859         // remove tel: links
33860         $("a[href^='tel:']").each(function() {
33861            $(this).attr("data-tel-link", $(this).attr("href")).removeAttr("href");
33862         });
33863      }
33864
33865   });
33866
33867});
33868document.addEventListener("scroll", function () {
33869    var topbarTopHeight = document.getElementById('top-bar-top').offsetHeight;
33870
33871    const distanceFromTop = Math.abs(
33872        document.body.getBoundingClientRect().top
33873    );
33874
33875    if (distanceFromTop >= topbarTopHeight){
33876        document.body.classList.add("top-nav-desktop-fixed");
33877    } else {
33878        document.body.classList.remove("top-nav-desktop-fixed");
33879    }
33880
33881    if (distanceFromTop >= topbarTopHeight + 50){
33882        document.body.classList.add("sticky-active");
33883    } else {
33884        document.body.classList.remove("sticky-active");
33885    }
33886});
33887function toggleMenuMobile() {
33888
33889    var expandableMenu = $('#top-nav-mobile');
33890    var menuButton = $("#animated-menu-icon");
33891    var overlay = $('#mobile-nav-overlay');
33892    var expandableClass = "top-nav-mobile--active";
33893    var overlayShowClass = "mobile-nav-overlay--active";
33894    var overlayHideClass = "mobile-nav-overlay--hide";
33895
33896    //--toggle the menu
33897    expandableMenu.toggleClass(expandableClass);
33898
33899    if(expandableMenu.hasClass(expandableClass)){
33900
33901        //--menu is being opened
33902        expandableMenu.attr("aria-hidden", "false");
33903        menuButton.attr("aria-expanded", "true");
33904
33905        //-- show the overlay
33906        overlay.addClass(overlayShowClass);
33907
33908    } else {
33909        //-- menu is being closed
33910        expandableMenu.attr("aria-hidden", "true");
33911        menuButton.attr("aria-expanded", "false");
33912
33913        //-- hide the overlay, giving it chance to animate out
33914        overlay.addClass(overlayHideClass);
33915
33916        setTimeout(function() {
33917            overlay.removeClass(overlayShowClass);
33918            overlay.removeClass(overlayHideClass);
33919        }, 800);
33920    }
33921}
33922
33923
33924$(document).ready(function() {
33925
33926    //--remove initial styles that setup the menu
33927    $('#top-nav-mobile').removeClass("top-nav-mobile--initial");
33928    $('#mobile-nav-overlay').removeClass("mobile-nav-overlay--initial");
33929
33930    //--close mobile menu if esc pressed
33931    document.onkeydown = function (evt) {
33932        evt = evt || window.event;
33933        if (evt.key == "Escape") {
33934
33935            var mobMenu = $("#top-nav-mobile");
33936            var mobMenuBtn = $('#animated-menu-icon');
33937
33938            if (mobMenu.attr('aria-hidden') == 'false') {
33939                mobMenuBtn.trigger("click");
33940            }
33941        }
33942    };
33943});
33944
33945
33946//--wrap an iframe in a copy with F6 youtube classes
33947$(document).ready(function() {
33948
33949    $(".copy iframe").each(function () {
33950        $(this).wrap( "<div class='responsive-embed widescreen'></div>" );
33951    })
33952});
33953//--our video component only works for youtube
33954
33955function playVideo(embed) {
33956    var iframe = '' +
33957        '<iframe width="1280" height="720" src="https://www.youtube.com/embed/'
33958            + embed +
33959        '?rel=0&controls=1&showinfo=0&autoplay=1" frameborder="0" allowfullscreen=""></iframe>';
33960    $('#video' + embed).html(iframe);
33961}
33962
33963function stopVideo(embed) {
33964    $('#video' + embed).empty();
33965}
33966
33967$(document).ready(function() {
33968
33969    //--stop the video when the lightbox is closed
33970    $('.video__lightbox').on('closed.zf.reveal', function() {
33971        var embed = $(this).attr("data-embed");
33972        console.log("stop video "+embed);
33973        stopVideo(embed);
33974    });
33975});
33976
33977// check if window size is 'small','medium','large','medium-up','medium-down'
33978
33979function winSize(size) {
33980    var large = 1025;
33981    var medium = 640;
33982    var width = window.innerWidth || $(window).width();
33983    var returnVar = false;
33984
33985    if( (size == 'large' && width >= large) ||
33986        (size == 'medium' && width >= medium && width < large) ||
33987        (size == 'small' && width < medium) ||
33988        (size == 'medium-up' && width >= medium) ||
33989        (size == 'medium-down' && width < large) )
33990        returnVar = true;
33991
33992    return returnVar;
33993}
33994function toggleAnnieModal() {
33995    var annieModal = document.getElementById('ask-annie-modal');
33996    var annieAvatar = document.getElementById('ask-annie-avatar');
33997    var annieCross = document.getElementById('ask-annie-cross');
33998
33999    var annieInitial = document.getElementById('ask-annie-initial-message');
34000    var annieForm = document.getElementById('ask-annie-form');
34001    var annieSuccess = document.getElementById('ask-annie-success');
34002
34003    const url = new URL(window.location);
34004
34005    if (annieInitial) {
34006        if (annieModal.classList.contains("active")) {
34007            if (url.searchParams.has('success')) {
34008                console.log('Success param detected, removing it...');
34009                url.searchParams.delete('success');
34010                window.history.replaceState({}, document.title, url);
34011
34012                annieModal.classList.remove("active");
34013                annieAvatar.classList.add("active");
34014                annieCross.classList.remove("active");
34015                annieSuccess.classList.remove("active");
34016            } else {
34017                annieModal.classList.remove("active");
34018                annieAvatar.classList.add("active");
34019                annieCross.classList.remove("active");
34020                //Reset the state of the modal
34021                annieInitial.classList.add("active");
34022            }
34023        } else {
34024            annieModal.classList.add("active");
34025            annieAvatar.classList.remove("active");
34026            annieCross.classList.add("active");
34027            annieInitial.classList.add("active");
34028        }
34029    } else {
34030        if (annieModal.classList.contains("active")) {
34031            if (url.searchParams.has('success')) {
34032                console.log('Success param detected, removing it...');
34033                url.searchParams.delete('success');
34034                window.history.replaceState({}, document.title, url);
34035                annieModal.classList.remove("active");
34036                annieAvatar.classList.add("active");
34037                annieCross.classList.remove("active");
34038                annieSuccess.classList.remove("active");
34039                annieModal.style.width = "300px";
34040            } else {
34041                annieModal.classList.remove("active");
34042                annieAvatar.classList.add("active");
34043                annieCross.classList.remove("active");
34044                //Reset the state of the modal
34045                annieForm.classList.add("active");
34046                annieModal.style.width = "300px";
34047            }
34048        } else {
34049            annieModal.classList.add("active");
34050            annieAvatar.classList.remove("active");
34051            annieCross.classList.add("active");
34052            annieForm.classList.add("active");
34053            annieModal.style.width = "300px";
34054        }
34055    }
34056}
34057
34058document.addEventListener("DOMContentLoaded", () => {
34059    const url = new URL(window.location);
34060
34061    var annieAvatar = document.getElementById('ask-annie-avatar');
34062    var annieCross = document.getElementById('ask-annie-cross');
34063    var annieModal = document.getElementById('ask-annie-modal');
34064    var annieSuccess = document.getElementById('ask-annie-success');
34065    var annieForm = document.getElementById('ask-annie-form');
34066    var annieInitial = document.getElementById('ask-annie-initial-message');
34067
34068    if (annieForm) {
34069        if (url.searchParams.has('success')) {
34070            annieAvatar.classList.remove("active");
34071            annieForm.classList.remove("active");
34072            annieCross.classList.add("active");
34073            
34074            annieModal.classList.add("active");
34075            annieSuccess.classList.add("active");
34076        }
34077    } else {
34078        if (url.searchParams.has('success')) {
34079            annieAvatar.classList.remove("active");
34080            annieInitial.classList.remove("active");
34081            annieCross.classList.add("active");
34082            
34083            annieModal.classList.add("active");
34084            annieSuccess.classList.add("active");
34085        }
34086    }
34087
34088});
34089
34090// function cookieConsentRevoked(name) {
34091//     window.dataLayer = window.dataLayer || [];
34092//     window.dataLayer.push({'event': 'cookie_consent_revoked_' + name});
34093//     var obj = {};
34094//     obj['cookie_consent_revoked_' + name] = 'true';
34095//     window.dataLayer.push(obj);
34096//     document.cookie = "cookieconsent=null; path=/";
34097// }
34098//
34099// function cookieConsentAccepted(name) {
34100//     window.dataLayer = window.dataLayer || [];
34101//     window.dataLayer.push({'event': 'cookie_consent_given_' + name});
34102//     var obj = {};
34103//     obj['cookie_consent_given_' + name] = 'true';
34104//     window.dataLayer.push(obj);
34105//     document.cookie = "cookieconsent=actioned; path=/";
34106// }
34107
34108$(document).ready(function () {
34109
34110    var config = {
34111        apiKey: '2fca2aa8be5d7f838bcbe8edea7efad320cb645f',
34112        product: 'PRO_MULTISITE',
34113        consentCookieExpiry: 90,
34114        initialState: "notify",
34115        position: "LEFT",
34116        theme: "DARK",
34117        notifyDismissButton: 'false',
34118        rejectButton: false,
34119        settingsStyle: 'button',
34120        // closeStyle: 'button',
34121        necessaryCookies: ['exp_*', 'PHPSESSID', 'phpbb3*', 'remember', 'style_cookie', 'cookieconsent'],
34122        optionalCookies: [
34123            {
34124                name: 'analytical',
34125                label: 'Analytical Cookies',
34126                description: 'Analytical cookies help us to improve our website by collecting and reporting information on its usage.',
34127                cookies: ['_ga', '_gid', '_gat*', '__utma', '__utmt', '__utmb', '__utmc', '__utmz', '__utmv'],
34128                onAccept: function () {
34129                    window.dataLayer = window.dataLayer || [];
34130                    window.dataLayer.push({'event': 'cookie_consent_given_analytical'});
34131                },
34132                onRevoke: function () {
34133                    window.dataLayer = window.dataLayer || [];
34134                    window.dataLayer.push({'event': 'cookie_consent_revoked_analytical'});
34135                },
34136                thirdPartyCookies: [
34137                    {
34138                        'name': 'Google',
34139                        'optOutLink': 'https://policies.google.com/technologies/cookies'
34140                    },
34141                    {
34142                        'name': 'Google Ads',
34143                        'optOutLink': 'https://adssettings.google.com/'
34144                    }
34145                ]
34146            },
34147            {
34148                name: 'marketing',
34149                label: 'Marketing Cookies',
34150                description: 'We use marketing cookies that store user data and behaviour information. Collecting data helps us target our audience a lot more effectively according to variables.',
34151                cookies: ['uuid2', 'TDID', 'TDCPM', 'bkdc', 'bku', '_cc_cc', '_cc_dc', '_cc_id', '_cc_aud', 'demdex',
34152                    'test_cookie', 'IDE', 'dpm', 'fr', 'ck', 'oo', 'pt', 'cu', 'ci_rtc', 'uuid', 'uuidc', 'SEUNCY',
34153                    'OT2', 'u2', 'ActivityInfo2', 'TapAd_TS', 'TapAd_DID', 'tidal_ttid', 'sync-his', 'ANON_ID',
34154                    '_tmid', 'uid', 'personalization_id', 'wfivefivec', 'matchaddthis', 'wui', 'wam-sync', 'AFFICHE_W',
34155                    'OT_8149', 'lang', '__gads', '__gac'],
34156                onAccept: function () {
34157                    window.dataLayer = window.dataLayer || [];
34158                    window.dataLayer.push({'event': 'cookie_consent_given_marketing'});
34159                },
34160                onRevoke: function () {
34161                    window.dataLayer = window.dataLayer || [];
34162                    window.dataLayer.push({'event': 'cookie_consent_revoked_marketing'});
34163                },
34164                thirdPartyCookies: [
34165                    {
34166                        'name': 'Facebook',
34167                        'optOutLink': 'https://en-gb.facebook.com/policies/cookies/'
34168                    }
34169                ]
34170            }
34171        ],
34172        text: {
34173            accept: "Accept",
34174            settings: "Manage Cookies",
34175            acceptSettings: "Accept Recommended Cookies",
34176            notifyTitle: "We care about your privacy"
34177        },
34178        branding: {
34179            acceptBackground: "#FFFFFF",
34180            acceptText: "#313147",
34181            buttonIcon: null,
34182            removeAbout: true
34183        },
34184        accessibility: {
34185            //If set to true (default), can't navigate page without
34186            overlay: false,
34187        }
34188    };
34189
34190    CookieControl.load(config);
34191
34192});
34193function DocumentListing() {
34194    var
34195        classes = {
34196            tabHandleActive: 'active',
34197        },
34198        selectors = {
34199            listContainer: '[data-entry-creation-list]',
34200            listMinifiedContainer: '[data-entry-creation-list-minified]',
34201            filter: '[data-entry-creation-filter]',
34202            filterForm: '[data-entry-creation-filter-form]',
34203            mapFiltersContainer: '[data-entry-creation-map-filters]',
34204            listFiltersContainer: '[data-entry-creation-list-filters]',
34205            paginationContainer: '[data-entry-creation-pagination]',
34206            paginationContainerMinified: '[data-entry-creation-pagination-minified]',
34207            paginationLink: '[data-entry-creation-pagination] a[href]',
34208            tab: '[data-entry-creation-tab]',
34209            tabHandle: '[data-entry-creation-tab-handle]'
34210        },
34211
34212        listContainer = $(selectors.listContainer),
34213        listMinifiedContainer = $(selectors.listMinifiedContainer),
34214        paginationContainer = $(selectors.paginationContainer),
34215        paginationMinifiedContainer = $(selectors.paginationContainerMinified),
34216
34217        showPreloader = function () {
34218            $('#loading').show();
34219        },
34220        hidePreloader = function () {
34221            $('#loading').hide();
34222        },
34223
34224        // AJAX success handler
34225        onAjaxLoaded = function (data) {
34226            var result = $(data),
34227                pagination = result.find(selectors.paginationContainerMinified).html() || '',
34228                list = result.find(selectors.listContainer).html() || '',
34229                listMinified = result.find(selectors.listMinifiedContainer).html() || '';
34230                searchSummary = result.find('[data-entry-creation-search-summary]').html() || '';
34231
34232            listContainer.html(list);
34233            paginationContainer.html(pagination);
34234
34235            listMinifiedContainer.html(listMinified);
34236            paginationMinifiedContainer.html(pagination);
34237
34238            if (searchSummary) {
34239                $('[data-entry-creation-search-summary]').html(searchSummary);
34240            } else {
34241                $('[data-entry-creation-search-summary]').remove(); // if no keyword
34242            }
34243
34244            $(listContainer).find(".lazy").each(function () {
34245                btbLazyLoad($(this));
34246            });
34247
34248            hidePreloader();
34249        },
34250
34251        // Handle pagination links
34252        onPaginationClick = function (e) {
34253            e.preventDefault();
34254            showPreloader();
34255            var url = $(e.currentTarget).attr('href');
34256            $.get(url, { skipMap: 1 }, onAjaxLoaded);
34257            history.pushState(url, null, url);
34258        },
34259
34260        // Handle filter form submit (AJAX)
34261        onFilterFormSubmit = function (e) {
34262            if (e) e.preventDefault();
34263            showPreloader();
34264
34265            var windowUrl = window.location.href.split('?')[0];
34266            var regex = /[a-zA-Z]\d$/;
34267
34268            if (regex.test(windowUrl) === true) {
34269                windowUrl = windowUrl.slice(0, -3);
34270            }
34271
34272            var url = windowUrl + '?' + $(selectors.filterForm).serialize();
34273            $.get(url, onAjaxLoaded);
34274            history.pushState(url, null, url);
34275        },
34276
34277        onHistoryPopstate = function (e) {
34278            if (!e.state) return;
34279            window.location.replace(e.state);
34280        },
34281
34282        moveFilters = function () {
34283            var from, to;
34284            if ($(selectors.mapFiltersContainer).find(selectors.filterForm).length > 0) {
34285                from = $(selectors.mapFiltersContainer);
34286                to = $(selectors.listFiltersContainer);
34287            } else {
34288                from = $(selectors.listFiltersContainer);
34289                to = $(selectors.mapFiltersContainer);
34290            }
34291            from.children().appendTo(to);
34292        },
34293
34294        toggleTabs = function () {
34295            $(selectors.tabHandle).toggleClass(classes.tabHandleActive);
34296            $(selectors.tab).toggle();
34297            moveFilters();
34298        },
34299
34300        init = function () {
34301            $(document).off('change', selectors.filter)
34302                       .on('change', selectors.filter, onFilterFormSubmit);
34303
34304            $(document).off('submit', selectors.filterForm)
34305                       .on('submit', selectors.filterForm, onFilterFormSubmit);
34306
34307            $(document).off('click', selectors.paginationLink)
34308                       .on('click', selectors.paginationLink, onPaginationClick);
34309
34310            $(document).off('click', selectors.tabHandle + ':not(.' + classes.tabHandleActive + ')')
34311                       .on('click', selectors.tabHandle + ':not(.' + classes.tabHandleActive + ')', toggleTabs);
34312
34313            window.addEventListener('popstate', onHistoryPopstate);
34314        };
34315
34316    this.showPreloader = showPreloader;
34317    this.hidePreloader = hidePreloader;
34318    this.submitFilterForm = onFilterFormSubmit;
34319
34320    init();
34321}
34322
34323$(document).ready(function () {
34324    window.documentListing = new DocumentListing();
34325});
34326
34327function EventsList() {
34328  var         
34329  classes = {
34330      tabHandleActive: 'active',
34331  },
34332  selectors = {
34333      listContainer: "[events-list]",
34334      filter: "[events-list-filter]",
34335      filterForm: "[events-list-filter-form]",
34336      mapFiltersContainer: '[data-entry-creation-map-filters]',
34337      listFiltersContainer: "[events-list-list-filters]",
34338      paginationContainer: "[events-list-pagination]",
34339      paginationLink: "[events-list-pagination] a[href]",
34340      tab: "[events-list-tab]",
34341      tabHandle: "[events-list-tab-handle]",
34342    },
34343    listContainer = $(selectors.listContainer),
34344    paginationContainer = $(selectors.paginationContainer),
34345    showPreloader = function () {
34346      $("#loading").show();
34347    },
34348    hidePreloader = function () {
34349      $("#loading").hide();
34350    },
34351    submitFilterForm = function () {
34352      $(selectors.filterForm).submit();
34353    },
34354    onAjaxLoaded = function (data) {
34355      var result = $(data),
34356        pagination = result.find(selectors.paginationContainer).html() || "",
34357        list = result.find(selectors.listContainer).html() || "";
34358
34359      listContainer.html(list);
34360      paginationContainer.html(pagination);
34361
34362      $(listContainer)
34363        .find(".lazy")
34364        .each(function () {
34365          btbLazyLoad($(this));
34366        });
34367
34368      hidePreloader();
34369    },
34370    onPaginationClick = function (e) {
34371      e.preventDefault();
34372      showPreloader();
34373      var url = $(e.target).attr("href");
34374      $.get(url, { skipMap: 1 }, onAjaxLoaded);
34375      history.pushState(url, null, url);
34376    },
34377    onFilterFormSubmit = function (e) {
34378      e.preventDefault();
34379      showPreloader();
34380
34381      var windowUrl = window.location.href.split("?")[0];
34382      var regex = /[a-zA-Z]\d$/;
34383
34384      if (regex.test(windowUrl) === true) {
34385        windowUrl = windowUrl.slice(0, -3);
34386      }
34387
34388      var url = windowUrl + "?" + $(this).serialize();
34389      $.get(url, onAjaxLoaded);
34390      history.pushState(url, null, url);
34391    },
34392    onHistoryPopstate = function (e) {
34393      if (!e.state) {
34394        return;
34395      }
34396      window.location.replace(e.state);
34397    },
34398
34399    init = function () {
34400      $(document).on("change", selectors.filter, submitFilterForm);
34401      $(document).on("submit", selectors.filterForm, onFilterFormSubmit);
34402      $(document).on("click", selectors.paginationLink, onPaginationClick);
34403
34404      window.addEventListener("popstate", onHistoryPopstate);
34405    };
34406
34407  this.showPreloader = showPreloader;
34408  this.hidePreloader = hidePreloader;
34409  this.submitFilterForm = submitFilterForm;
34410
34411  init();
34412}
34413
34414$(document).ready(function () {
34415
34416  window.documentListing = new EventsList();
34417
34418});
34419
34420$(document)
34421  .off("click", ".filter__icon")
34422  .on("click", ".filter__icon", function () {
34423    console.log($(this));
34424    $(this).toggleClass("active");
34425    $(this).siblings(".filter__checkboxes").toggleClass("active");
34426  });
34427
34428function toggleFilters() {
34429    var filters = document.getElementById('filterExpander');
34430    var tint = document.getElementById('popout-tint');
34431
34432    filters.classList.toggle('active');
34433    tint.classList.toggle('active');
34434}
34435
34436function ProductsList(element) {
34437    var $component = $(element);
34438
34439    var config = {
34440        ajaxUrl: $component.data('ajax-url'),
34441        itemSelector: $component.data('item-selector'),
34442        itemName: $component.data('item-name') || 'item',
34443        itemNamePlural: $component.data('item-name-plural') || 'items'
34444    };
34445
34446    var selectors = {
34447            productsList: '.product-list',
34448            productsListWrapper: '.product-list__wrapper',
34449            filters: '#filterExpander .filter input',
34450            search: '.filters__search-input',
34451            amount: '[data-product-amount]',
34452            pagination: '[data-product-pagination]'
34453        },
34454
34455        classes = {
34456            productsListWrapperLoading: 'product-list__wrapper--loading'
34457        },
34458
34459        filters = function () {
34460            return $(selectors.filters)
34461                .filter(':checked')
34462                .map(function () {
34463                    return '&' +
34464                        encodeURIComponent($(this).attr('name')) +
34465                        '=' +
34466                        encodeURIComponent($(this).val());
34467                })
34468                .get();
34469        },
34470
34471        totalItems = function () {
34472            return parseInt(
34473                $(selectors.productsList).attr('data-total-items'),
34474                10
34475            );
34476        },
34477
34478        limit = function () {
34479            return parseInt(
34480                $(selectors.productsList).attr('data-limit'),
34481                10
34482            );
34483        },
34484
34485        currentPage = function () {
34486            return parseInt(
34487                $(selectors.productsList).attr('data-current-page'),
34488                10
34489            );
34490        },
34491
34492        totalPages = function () {
34493            return parseInt(
34494                $(selectors.productsList).attr('data-total-pages'),
34495                10
34496            );
34497        },
34498
34499        search = function () {
34500            return $(selectors.search).val().trim();
34501        },
34502        updateSearchClear = function () {
34503            var $search = $(selectors.search);
34504            var $wrapper = $search.closest('.filters__search--input');
34505        
34506            $wrapper.toggleClass(
34507                'filters__search--has-value',
34508                $search.val().trim().length > 0
34509            );
34510        },
34511        ajaxUrl = function (offset, limit, filters, search) {
34512            var url = config.ajaxUrl + '?offset=' + offset + '&limit=' + limit;
34513
34514            url += filters.join('');
34515
34516            if (search) {
34517                url += '&search=' + encodeURIComponent(search);
34518            }
34519
34520            return url;
34521        },
34522
34523        showSpinner = function () {
34524            $(selectors.productsListWrapper)
34525                .addClass(classes.productsListWrapperLoading);
34526        },
34527
34528        hideSpinner = function () {
34529            $(selectors.productsListWrapper)
34530                .removeClass(classes.productsListWrapperLoading);
34531        },
34532
34533        updateAmount = function () {
34534            var total = totalItems();
34535            var pageLimit = limit();
34536            var page = currentPage();
34537            var visible = $component.find(config.itemSelector).length;
34538            var searchTerm = search();
34539
34540            if (searchTerm) {
34541                $(selectors.amount).text(
34542                    total + ' result' + (total === 1 ? '' : 's') +
34543                    ' for your search \u2018' + searchTerm + '\u2019'
34544                );
34545        
34546                return;
34547            }
34548
34549            if (total === 0) {
34550                $(selectors.amount).text(
34551                    'Showing 0 ' + config.itemNamePlural
34552                );
34553                return;
34554            }
34555
34556            var start = ((page - 1) * pageLimit) + 1;
34557            var end = start + visible - 1;
34558
34559            if (total <= pageLimit) {
34560                $(selectors.amount).text(
34561                    'Showing ' +
34562                    total +
34563                    ' ' +
34564                    (total === 1 ? config.itemName : config.itemNamePlural)
34565                );
34566            } else {
34567                $(selectors.amount).text(
34568                    'Showing ' +
34569                    start +
34570                    '–' +
34571                    end +
34572                    ' of ' +
34573                    total +
34574                    ' ' +
34575                    config.itemNamePlural
34576                );
34577            }
34578        },
34579
34580        renderPagination = function () {
34581            var current = currentPage();
34582            var total = totalPages();
34583            var html = '';
34584
34585            if (!total || total <= 1) {
34586                $(selectors.pagination).empty();
34587                return;
34588            }
34589
34590            // Previous - always show
34591            html +=
34592                '<button type="button" ' +
34593                'class="pagination-button pagination-button--previous" ' +
34594                'data-page="' + (current - 1) + '" ' +
34595                'aria-label="Previous page" ' +
34596                (current <= 1 ? 'disabled' : '') +
34597                '>' +
34598                '<img src="/images/icons/arrow-right-green-filter.svg" alt="">' +
34599                '</button>';
34600
34601            // Page numbers
34602            for (var page = 1; page <= total; page++) {
34603                html +=
34604                    '<button type="button" ' +
34605                    'class="pagination-button' + (page === current ? ' active' : '') + '" ' +
34606                    'data-page="' + page + '"' +
34607                    (page === current ? ' aria-current="page"' : '') +
34608                    '>' +
34609                    page +
34610                    '</button>';
34611            }
34612
34613            // Next - always show
34614            html +=
34615                '<button type="button" ' +
34616                'class="pagination-button pagination-button--next" ' +
34617                'data-page="' + (current + 1) + '" ' +
34618                'aria-label="Next page" ' +
34619                (current >= total ? 'disabled' : '') +
34620                '>' +
34621                '<img src="/images/icons/arrow-right-green-filter.svg" alt="">' +
34622                '</button>';
34623
34624            $(selectors.pagination).html(html);
34625        },
34626
34627        replaceProducts = function (data) {
34628            var newList = $(data).filter(selectors.productsList);
34629
34630            $(selectors.productsList).replaceWith(newList);
34631
34632            btbLazyLoad(
34633                $(selectors.productsList).find('.lazy')
34634            );
34635
34636            updateAmount();
34637            renderPagination();
34638        },
34639
34640        reload = function () {
34641            var url = ajaxUrl(
34642                0,
34643                limit(),
34644                filters(),
34645                search()
34646            );
34647
34648            showSpinner();
34649
34650            $.get(url, function (data) {
34651                replaceProducts(data);
34652                hideSpinner();
34653            }).fail(function () {
34654                hideSpinner();
34655            });
34656        },
34657
34658        goToPage = function (page) {
34659            var pageLimit = limit();
34660            var newOffset = (page - 1) * pageLimit;
34661
34662            var url = ajaxUrl(
34663                newOffset,
34664                pageLimit,
34665                filters(),
34666                search()
34667            );
34668
34669            showSpinner();
34670
34671            $.get(url, function (data) {
34672                replaceProducts(data);
34673                hideSpinner();
34674
34675                $('html, body').animate({
34676                    scrollTop: $('[data-product-list]').offset().top - 100
34677                }, 300);
34678
34679            }).fail(function () {
34680                hideSpinner();
34681            });
34682        };
34683
34684    this.reload = reload;
34685
34686    this.init = function () {
34687        var searchTimeout;
34688        renderPagination();
34689        updateSearchClear();
34690        $(document)
34691            .off('change.productsList', selectors.filters)
34692            .on('change.productsList', selectors.filters, function () {
34693                reload();
34694            })
34695
34696            .off('click.productsList', selectors.pagination + ' [data-page]')
34697            .on(
34698                'click.productsList',
34699                selectors.pagination + ' [data-page]',
34700                function () {
34701                    var page = parseInt(
34702                        $(this).attr('data-page'),
34703                        10
34704                    );
34705
34706                    goToPage(page);
34707                }
34708            )
34709
34710            .off('input.productsList', selectors.search)
34711            .on('input.productsList', selectors.search, function () {
34712                clearTimeout(searchTimeout);
34713
34714                updateSearchClear();
34715
34716                searchTimeout = setTimeout(function () {
34717                    reload();
34718                }, 300);
34719            })
34720
34721            .off('click.productsList', '.filters__clear')
34722            .on('click.productsList', '.filters__clear', function () {
34723                $(selectors.search).val('');
34724
34725                updateSearchClear();
34726                reload();
34727
34728                $(selectors.search).focus();
34729            });
34730    };
34731}
34732
34733$(window).on('load', function () {
34734    $('[data-product-list]').each(function () {
34735        var productsList = new ProductsList(this);
34736        productsList.init();
34737    });
34738});
34739$(document).ready(function () {
34740  // Select all buttons with the class 'hauc-contacts__option'
34741  function scrollToView() {
34742    const buttons = document.querySelectorAll(".hauc-contacts__option");
34743    const mapRegions = document.querySelectorAll(".hauc-map-region");
34744    const targetSection = document.getElementById("hauc-contacts-lists");
34745
34746    buttons.forEach((button) => {
34747      button.addEventListener("click", function () {
34748        targetSection.scrollIntoView({ behavior: "smooth" });
34749      });
34750    });
34751    mapRegions.forEach((region) => {
34752      region.addEventListener("click", function () {
34753        targetSection.scrollIntoView({ behavior: "smooth" });
34754      });
34755    });
34756  }
34757  scrollToView();
34758
34759  $(".hauc-contacts__option").on("click", function () {
34760    var region = $(this).data("region");
34761
34762    removeActive();
34763    addActive(this, "#hauc-contacts__" + region);
34764    showContacts(region);
34765  });
34766
34767  $(".hauc-contacts__region").on("click", function () {
34768    var name = $(this).attr("id").split("__")[1];
34769    var button = $(".hauc-contacts__option[data-region=" + name + "]");
34770
34771    removeActive();
34772    addActive(button, "#hauc-contacts__" + name);
34773    showContacts(name);
34774  });
34775
34776  function removeActive() {
34777    $(".hauc-contacts__option").removeClass("active");
34778    $(".hauc-contacts__region").removeClass("active");
34779  }
34780
34781  function addActive(button, mapElement) {
34782    $(button).addClass("active");
34783    $(mapElement).addClass("active");
34784  }
34785
34786  function showContacts(slug) {
34787    $(".hauc-contacts__group").hide();
34788
34789    var item = $(".hauc-contacts__group[data-region=" + slug + "]")[0];
34790
34791    if ($(item).data("also")) {
34792      var _slug = $(item).data("also");
34793      $(".hauc-contacts__group[data-region=" + _slug + "]").show();
34794    }
34795
34796    $(item).show();
34797  }
34798});
34799
34800// $(document).ready(function() {
34801//
34802//     if (document.body.classList.contains('homepage')){
34803//         var heroSplit = document.getElementsByClassName('hero-split').item(0);
34804//         var topBarHeight = document.getElementById('top-bar-top').offsetHeight;
34805//
34806//         console.log("screen " + window.innerHeight);
34807//
34808//         heroSplit.style.height = window.innerHeight - topBarHeight + "px";
34809//     }
34810//
34811// });
34812// $(document).ready(function(){
34813//     $(window).scroll(function(){
34814//
34815//         if ($(document).scrollTop() > 750) {
34816//             $('#heroBannerVideo').get(0).pause();
34817//         }
34818//
34819//         else if ($(document).scrollTop() < 650 ) {
34820//             $('#heroBannerVideo').get(0).play();
34821//         }
34822//     });
34823// });
34824$(document).ready(function() {
34825    $('.legislation__section h2').click(function () {
34826        $(this).toggleClass('active');
34827        $(this).siblings().toggleClass('active');
34828    })
34829});
34830$(document).ready(function() {
34831
34832    var notify = $("#notify");
34833
34834    if (notify.length) {
34835        var notifyAlert = $(".notify__alert--inactive");
34836
34837        //--check for a cookie/localstorage
34838        var closedCookie = window.localStorage.getItem('closedNotification');
34839
34840        if (closedCookie === '0') {
34841            notify.removeClass("notify--collapsed");
34842        }
34843    }
34844
34845    //--close the notification & set a cookie so we don't show it again
34846    $("#notify-close").on("click", function() {
34847        notify.addClass("notify--collapsed");
34848
34849        setLocalStorageItem('closedNotification', 1)
34850    });
34851
34852    //--close the notification & set a cookie so we don't show it again
34853    $(notifyAlert).on("click", function() {
34854        notify.removeClass("notify--collapsed");
34855
34856        setLocalStorageItem('closedNotification', 0)
34857    });
34858
34859    function setLocalStorageItem(name, val) {
34860        window.localStorage.setItem(name, val);
34861    }
34862});
34863function ProjectListing() {
34864    var
34865        selectors = {
34866            listContainer: '[project-listing]',
34867            filter: '[project-listing-filter]',
34868            filterForm: '[project-listing-filter-form]',
34869            listFiltersContainer: '[project-listing-list-filters]',
34870            paginationContainer: '[project-listing-pagination]',
34871            paginationLink: '[project-listing-pagination] a[href]',
34872            tab: '[project-listing-tab]',
34873            tabHandle: '[project-listing-tab-handle]'
34874        },
34875
34876        listContainer = $(selectors.listContainer),
34877        paginationContainer = $(selectors.paginationContainer),
34878        showPreloader = function () {
34879            $('#loading').show();
34880        },
34881        hidePreloader = function () {
34882            $('#loading').hide();
34883        },
34884        submitFilterForm = function () {
34885            $(selectors.filterForm).submit();
34886        },
34887        onAjaxLoaded = function (data) {
34888            var result = $(data),
34889                pagination = result.find(selectors.paginationContainer).html() || '',
34890                list = result.find(selectors.listContainer).html() || '';
34891
34892            listContainer.html(list);
34893            paginationContainer.html(pagination);
34894
34895            $(listContainer).find(".lazy").each(function () {
34896                btbLazyLoad($(this));
34897            });
34898
34899
34900            hidePreloader();
34901        },
34902        onPaginationClick = function (e) {
34903            e.preventDefault();
34904            showPreloader();
34905            var url = $(e.target).attr('href');
34906            $.get(url, {skipMap: 1}, onAjaxLoaded);
34907            history.pushState(url, null, url);
34908        },
34909        onFilterFormSubmit = function (e) {
34910            e.preventDefault();
34911            showPreloader();
34912
34913            var windowUrl = window.location.href.split('?')[0];
34914            var regex = /[a-zA-Z]\d$/;
34915
34916            if (regex.test(windowUrl) === true) {
34917                windowUrl = windowUrl.slice(0, -3);
34918            }
34919
34920            var url = windowUrl + '?' + $(this).serialize();
34921            $.get(url, onAjaxLoaded);
34922            history.pushState(url, null, url);
34923        },
34924        onHistoryPopstate = function (e) {
34925            if (!e.state) {
34926                return;
34927            }
34928            window.location.replace(e.state);
34929        },
34930
34931        init = function () {
34932
34933            $(document).on('change', selectors.filter, submitFilterForm);
34934            $(document).on('submit', selectors.filterForm, onFilterFormSubmit);
34935            $(document).on('click', selectors.paginationLink, onPaginationClick);
34936
34937            window.addEventListener('popstate', onHistoryPopstate);
34938        };
34939
34940    this.showPreloader = showPreloader;
34941    this.hidePreloader = hidePreloader;
34942    this.submitFilterForm = submitFilterForm;
34943
34944    init();
34945}
34946
34947$(document).ready(function () {
34948    window.projectListing = new ProjectListing();
34949});
34950
34951
34952$(document).ready(function () {
34953  $(document)
34954    .off("click", ".team-member")
34955    .on("click", ".team-member", function () {
34956      console.log("click");
34957
34958      $(this).siblings(".team-member__content").slideUp(300);
34959      $(this).siblings(".team-member").removeClass("active");
34960
34961      $(this).toggleClass("active");
34962
34963      if ($(this).hasClass("active")) {
34964        $(this).next(".team-member__content").slideDown(300);
34965      }
34966    });
34967});
34968
34969function TeamMembers() {
34970  var selectors = {
34971      categoryButton: "button.team-members__category",
34972      teamMembersContainer: "[team-members-list]",
34973    },
34974    teamMembersContainer = $(selectors.teamMembersContainer),
34975    showPreloader = function () {
34976      $("#loading").show();
34977    },
34978    hidePreloader = function () {
34979      $("#loading").hide();
34980    },
34981    onButtonClicked = function (e) {
34982      e.preventDefault();
34983
34984      $(selectors.categoryButton).removeClass("active");
34985      e.target.classList.add("active");
34986
34987      var id = e.target.getAttribute("data-id");
34988      showPreloader();
34989
34990      var url = window.location.href.split("?")[0];
34991
34992      if (id !== 0) {
34993        url = url + "?category-id=" + id;
34994      }
34995
34996      $.get(url, onAjaxLoaded);
34997      history.pushState(url, null, url);
34998    },
34999    onAjaxLoaded = function (data) {
35000      var result = $(data),
35001        list = result.find(selectors.teamMembersContainer).html() || "";
35002
35003      teamMembersContainer.html(list);
35004
35005      hidePreloader();
35006    },
35007    onHistoryPopstate = function (e) {
35008      if (!e.state) {
35009        return;
35010      }
35011      window.location.replace(e.state);
35012    },
35013    init = function () {
35014      $(document).on("click", selectors.categoryButton, onButtonClicked);
35015
35016      window.addEventListener("popstate", onHistoryPopstate);
35017    };
35018
35019  this.showPreloader = showPreloader;
35020  this.hidePreloader = hidePreloader;
35021
35022  init();
35023}
35024
35025$(document).ready(function () {
35026  window.teamMembers = new TeamMembers();
35027});
35028
35029$(document).ready(function () {
35030
35031    // $(".featured-team-member__filter").change(function () {
35032    //     var id = $(this).val();
35033    //
35034    //     $('*[class*="workingGroup"]').hide();
35035    //     $('.workingGroup' + id).show();
35036    //
35037    //     $(".featured-team-member__filter").val(id);
35038    //
35039    // });
35040
35041});
35042function loadResource(filename, fileType, callback) {
35043    var fileRef = null;
35044
35045    if (fileType === "js") { //if filename is a external JavaScript file
35046        fileRef = document.createElement('script');
35047        fileRef.setAttribute("type","text/javascript");
35048        fileRef.setAttribute("src", filename);
35049    }
35050    else if (fileType === "css") { //if filename is an external CSS file
35051        fileRef = document.createElement("link");
35052        fileRef.setAttribute("rel", "stylesheet");
35053        fileRef.setAttribute("type", "text/css");
35054        fileRef.setAttribute("href", filename);
35055    }
35056
35057    if (typeof fileRef === "undefined" || fileRef === null) {
35058        return
35059    }
35060
35061    if (callback) {
35062        fileRef.addEventListener('load', callback);
35063    }
35064
35065    document.getElementsByTagName("head")[0].appendChild(fileRef);
35066}
35067/**
35068 * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).
35069 * @version v5.2.10
35070 * @link https://github.com/ten1seven/what-input
35071 * @license MIT
35072 */
35073!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("whatInput",[],t):"object"==typeof exports?exp
vendor: 4,316 bytes, line 35073
35073orts.whatInput=t():e.whatInput=t()}(this,function(){return i={},n.m=o=[function(e,t){"use strict";e.exports=function(){if("undefined"==typeof document||"undefined"==typeof window)return{ask:function(){return"initial"},element:function(){return null},ignoreKeys:function(){},specificKeys:function(){},registerOnChange:function(){},unRegisterOnChange:function(){}};var t=document.documentElement,n=null,s="initial",u=s,o=Date.now(),i="false",d=["button","input","select","textarea"],r=[],c=[16,17,18,91,93],w=[],p={keydown:"keyboard",keyup:"keyboard",mousedown:"mouse",mousemove:"mouse",MSPointerDown:"pointer",MSPointerMove:"pointer",pointerdown:"pointer",pointermove:"pointer",touchstart:"touch",touchend:"touch"},a=!1,f={x:null,y:null},l={2:"touch",3:"touch",4:"mouse"},m=!1;try{var e=Object.defineProperty({},"passive",{get:function(){m=!0}});window.addEventListener("test",null,e)}catch(e){}var h=function(){var e=!!m&&{passive:!0};document.addEventListener("DOMContentLoaded",v),window.PointerEvent?(window.addEventListener("pointerdown",y),window.addEventListener("pointermove",E)):window.MSPointerEvent?(window.addEventListener("MSPointerDown",y),window.addEventListener("MSPointerMove",E)):(window.addEventListener("mousedown",y),window.addEventListener("mousemove",E),"ontouchstart"in window&&(window.addEventListener("touchstart",y,e),window.addEventListener("touchend",y))),window.addEventListener(O(),E,e),window.addEventListener("keydown",y),window.addEventListener("keyup",y),window.addEventListener("focusin",L),window.addEventListener("focusout",b)},v=function(){if(i=!(t.getAttribute("data-whatpersist")||"false"===document.body.getAttribute("data-whatpersist")))try{window.sessionStorage.getItem("what-input")&&(s=window.sessionStorage.getItem("what-input")),window.sessionStorage.getItem("what-intent")&&(u=window.sessionStorage.getItem("what-intent"))}catch(e){}g("input"),g("intent")},y=function(e){var t=e.which,n=p[e.type];"pointer"===n&&(n=S(e));var o=!w.length&&-1===c.indexOf(t),i=w.length&&-1!==w.indexOf(t),r="keyboard"===n&&t&&(o||i)||"mouse"===n||"touch"===n;if(M(n)&&(r=!1),r&&s!==n&&(x("input",s=n),g("input")),r&&u!==n){var a=document.activeElement;a&&a.nodeName&&(-1===d.indexOf(a.nodeName.toLowerCase())||"button"===a.nodeName.toLowerCase()&&!C(a,"form"))&&(x("intent",u=n),g("intent"))}},g=function(e){t.setAttribute("data-what"+e,"input"===e?s:u),k(e)},E=function(e){var t=p[e.type];"pointer"===t&&(t=S(e)),A(e),(!a&&!M(t)||a&&"wheel"===e.type||"mousewheel"===e.type||"DOMMouseScroll"===e.type)&&u!==t&&(x("intent",u=t),g("intent"))},L=function(e){e.target.nodeName?(n=e.target.nodeName.toLowerCase(),t.setAttribute("data-whatelement",n),e.target.classList&&e.target.classList.length&&t.setAttribute("data-whatclasses",e.target.classList.toString().replace(" ",","))):b()},b=function(){n=null,t.removeAttribute("data-whatelement"),t.removeAttribute("data-whatclasses")},x=function(e,t){if(i)try{window.sessionStorage.setItem("what-"+e,t)}catch(e){}},S=function(e){return"number"==typeof e.pointerType?l[e.pointerType]:"pen"===e.pointerType?"touch":e.pointerType},M=function(e){var t=Date.now(),n="mouse"===e&&"touch"===s&&t-o<200;return o=t,n},O=function(){return"onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll"},k=function(e){for(var t=0,n=r.length;t<n;t++)r[t].type===e&&r[t].fn.call(void 0,"input"===e?s:u)},A=function(e){f.x!==e.screenX||f.y!==e.screenY?(a=!1,f.x=e.screenX,f.y=e.screenY):a=!0},C=function(e,t){var n=window.Element.prototype;if(n.matches||(n.matches=n.msMatchesSelector||n.webkitMatchesSelector),n.closest)return e.closest(t);do{if(e.matches(t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null};return"addEventListener"in window&&Array.prototype.indexOf&&(p[O()]="mouse",h()),{ask:function(e){return"intent"===e?u:s},element:function(){return n},ignoreKeys:function(e){c=e},specificKeys:function(e){w=e},registerOnChange:function(e,t){r.push({fn:e,type:t||"input"})},unRegisterOnChange:function(e){var t=function(e){for(var t=0,n=r.length;t<n;t++)if(r[t].fn===e)return t}(e);!t&&0!==t||r.splice(t,1)},clearStorage:function(){window.sessionStorage.clear()}}}()}],n.c=i,n.p="",n(0);function n(e){if(i[e])return i[e].exports;var t=i[e]={exports:{},id:e,loaded:!1};
35073return o[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}var o,i});
35074//# sourceMappingURL=what-input.min.js.map
35075
35076/*!
35077 * viewport-units-buggyfill v0.6.2
35078 * @web: https://github.com/rodneyrehm/viewport-units-buggyfill/
35079 * @author: Rodney Rehm - http://rodneyrehm.de/en/
35080 */
35081
35082(function() {
35083  (function(root, factory) {
35084    'use strict';
35085    if (typeof define === 'function' && define.amd) {
35086      // AMD. Register as an anonymous module.
35087      define([], factory);
35088    } else if (typeof exports === 'object') {
35089      // Node. Does not work with strict CommonJS, but
35090      // only CommonJS-like enviroments that support module.exports,
35091      // like Node.
35092      module.exports = factory();
35093    } else {
35094      // Browser globals (root is window)
35095      root.viewportUnitsBuggyfill = factory();
35096    }
35097  }(this, function() {
35098    'use strict';
35099    /* global document, window, navigator, location, XMLHttpRequest, XDomainRequest, CustomEvent */
35100
35101    var initialized = false;
35102    var options;
35103    var userAgent = window.navigator.userAgent;
35104    var viewportUnitExpression = /([+-]?[0-9.]+)(vh|vw|vmin|vmax)/g;
35105    var urlExpression = /(https?:)?\/\//
35106    var forEach = [].forEach;
35107    var dimensions;
35108    var declarations;
35109    var styleNode;
35110    var isBuggyIE = /MSIE [0-9]\./i.test(userAgent);
35111    var isOldIE = /MSIE [0-8]\./i.test(userAgent);
35112    var isOperaMini = userAgent.indexOf('Opera Mini') > -1;
35113
35114    var isMobileSafari = /(iPhone|iPod|iPad).+AppleWebKit/i.test(userAgent) && (function() {
35115      // Regexp for iOS-version tested against the following userAgent strings:
35116      // Example WebView UserAgents:
35117      // * iOS Chrome on iOS8: "Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/39.0.2171.50 Mobile/12B410 Safari/600.1.4"
35118      // * iOS Facebook on iOS7: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 [FBAN/FBIOS;FBAV/12.1.0.24.20; FBBV/3214247; FBDV/iPhone6,1;FBMD/iPhone; FBSN/iPhone OS;FBSV/7.1.1; FBSS/2; FBCR/AT&T;FBID/phone;FBLC/en_US;FBOP/5]"
35119      // Example Safari UserAgents:
35120      // * Safari iOS8: "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4"
35121      // * Safari iOS7: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53"
35122      var iOSversion = userAgent.match(/OS (\d)/);
35123      // viewport units work fine in mobile Safari and webView on iOS 8+
35124      return iOSversion && iOSversion.length > 1 && parseInt(iOSversion[1]) < 10;
35125    })();
35126
35127    var isBadStockAndroid = (function() {
35128      // Android stock browser test derived from
35129      // http://stackoverflow.com/questions/24926221/distinguish-android-chrome-from-stock-browser-stock-browsers-user-agent-contai
35130      var isAndroid = userAgent.indexOf(' Android ') > -1;
35131      if (!isAndroid) {
35132        return false;
35133      }
35134
35135      var isStockAndroid = userAgent.indexOf('Version/') > -1;
35136      if (!isStockAndroid) {
35137        return false;
35138      }
35139
35140      var versionNumber = parseFloat((userAgent.match('Android ([0-9.]+)') || [])[1]);
35141      // anything below 4.4 uses WebKit without *any* viewport support,
35142      // 4.4 has issues with viewport units within calc()
35143      return versionNumber <= 4.4;
35144    })();
35145
35146    // added check for IE10, IE11 and Edge < 20, since it *still* doesn't understand vmax
35147    // http://caniuse.com/#feat=viewport-units
35148    if (!isBuggyIE) {
35149      isBuggyIE = !!navigator.userAgent.match(/MSIE 10\.|Trident.*rv[ :]*1[01]\.| Edge\/1\d\./);
35150    }
35151
35152    // Polyfill for creating CustomEvents on IE9/10/11
35153    // from https://github.com/krambuhl/custom-event-polyfill
35154    try {
35155      // eslint-disable-next-line no-new, no-use-before-define
35156      new CustomEvent('test');
35157    } catch (e) {
35158      var CustomEvent = function(event, params) {
35159        var evt;
35160        params = params || {
35161          bubbles: false,
35162          cancelable: false,
35163          detail: undefined,
35164        };
35165
35166        evt = document.createEvent('CustomEvent');
35167        evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
35168        return evt;
35169      };
35170      CustomEvent.prototype = window.Event.prototype;
35171      window.CustomEvent = CustomEvent; // expose definition to window
35172    }
35173
35174    function debounce(func, wait) {
35175      var timeout;
35176      return function() {
35177        var context = this;
35178        var args = arguments;
35179        var callback = function() {
35180          func.apply(context, args);
35181        };
35182
35183        clearTimeout(timeout);
35184        timeout = setTimeout(callback, wait);
35185      };
35186    }
35187
35188    // from http://stackoverflow.com/questions/326069/how-to-identify-if-a-webpage-is-being-loaded-inside-an-iframe-or-directly-into-t
35189    function inIframe() {
35190      try {
35191        return window.self !== window.top;
35192      } catch (e) {
35193        return true;
35194      }
35195    }
35196
35197    function initialize(initOptions) {
35198      if (initialized) {
35199        return;
35200      }
35201
35202      if (initOptions === true) {
35203        initOptions = {
35204          force: true,
35205        };
35206      }
35207
35208      options = initOptions || {};
35209      options.isMobileSafari = isMobileSafari;
35210      options.isBadStockAndroid = isBadStockAndroid;
35211
35212      if (options.ignoreVmax && !options.force && !isOldIE) {
35213        // modern IE (10 and up) do not support vmin/vmax,
35214        // but chances are this unit is not even used, so
35215        // allow overwriting the "hacktivation"
35216        // https://github.com/rodneyrehm/viewport-units-buggyfill/issues/56
35217        isBuggyIE = false;
35218      }
35219
35220      if (isOldIE || (!options.force && !isMobileSafari && !isBuggyIE && !isBadStockAndroid && !isOperaMini && (!options.hacks || !options.hacks.required(options)))) {
35221        // this buggyfill only applies to mobile safari, IE9-10 and the Stock Android Browser.
35222        if (window.console && isOldIE) {
35223          console.info('viewport-units-buggyfill requires a proper CSSOM and basic viewport unit support, which are not available in IE8 and below');
35224        }
35225
35226        return {
35227          init: function() {},
35228        };
35229      }
35230
35231      // fire a custom event that buggyfill was initialize
35232      window.dispatchEvent(new CustomEvent('viewport-units-buggyfill-init'));
35233
35234      options.hacks && options.hacks.initialize(options);
35235
35236      initialized = true;
35237      styleNode = document.createElement('style');
35238      styleNode.id = 'patched-viewport';
35239      document[options.appendToBody ? 'body' : 'head'].appendChild(styleNode);
35240
35241      // Issue #6: Cross Origin Stylesheets are not accessible through CSSOM,
35242      // therefore download and inject them as <style> to circumvent SOP.
35243      importCrossOriginLinks(function() {
35244        var _refresh = debounce(refresh, options.refreshDebounceWait || 100);
35245        // doing a full refresh rather than updateStyles because an orientationchange
35246        // could activate different stylesheets
35247        window.addEventListener('orientationchange', _refresh, true);
35248        // orientationchange might have happened while in a different window
35249        window.addEventListener('pageshow', _refresh, true);
35250
35251        if (options.force || isBuggyIE || inIframe()) {
35252          window.addEventListener('resize', _refresh, true);
35253          options._listeningToResize = true;
35254        }
35255
35256        options.hacks && options.hacks.initializeEvents(options, refresh, _refresh);
35257
35258        refresh();
35259      });
35260    }
35261
35262    function updateStyles() {
35263      styleNode.textContent = getReplacedViewportUnits();
35264      // move to the end in case inline <style>s were added dynamically
35265      styleNode.parentNode.appendChild(styleNode);
35266      // fire a custom event that styles were updated
35267      window.dispatchEvent(new CustomEvent('viewport-units-buggyfill-style'));
35268    }
35269
35270    function refresh() {
35271      if (!initialized) {
35272        return;
35273      }
35274
35275      findProperties();
35276
35277      // iOS Safari will report window.innerWidth and .innerHeight as 0 unless a timeout is used here.
35278      // TODO: figure out WHY innerWidth === 0
35279      setTimeout(function() {
35280        updateStyles();
35281      }, 1);
35282    }
35283
35284    // http://stackoverflow.com/a/23613052
35285    function processStylesheet(ss) {
35286      // cssRules respects same-origin policy, as per
35287      // https://code.google.com/p/chromium/issues/detail?id=49001#c10.
35288      try {
35289        if (!ss.cssRules) { return; }
35290      } catch (e) {
35291        if (e.name !== 'SecurityError') { throw e; }
35292        return;
35293      }
35294      // ss.cssRules is available, so proceed with desired operations.
35295      var rules = [];
35296      for (var i = 0; i < ss.cssRules.length; i++) {
35297        var rule = ss.cssRules[i];
35298        rules.push(rule);
35299      }
35300      return rules;
35301    }
35302
35303    function findProperties() {
35304      declarations = [];
35305      forEach.call(document.styleSheets, function(sheet) {
35306        var cssRules = processStylesheet(sheet);
35307
35308        if (!cssRules || sheet.ownerNode.id === 'patched-viewport' || sheet.ownerNode.getAttribute('data-viewport-units-buggyfill') === 'ignore') {
35309          // skip entire sheet because no rules are present, it's supposed to be ignored or it's the target-element of the buggyfill
35310          return;
35311        }
35312
35313        if (sheet.media && sheet.media.mediaText && window.matchMedia && !window.matchMedia(sheet.media.mediaText).matches) {
35314          // skip entire sheet because media attribute doesn't match
35315          return;
35316        }
35317
35318        forEach.call(cssRules, findDeclarations);
35319      });
35320
35321      return declarations;
35322    }
35323
35324    function findDeclarations(rule) {
35325      if (rule.type === 7) {
35326        var value;
35327
35328        // there may be a case where accessing cssText throws an error.
35329        // I could not reproduce this issue, but the worst that can happen
35330        // this way is an animation not running properly.
35331        // not awesome, but probably better than a script error
35332        // see https://github.com/rodneyrehm/viewport-units-buggyfill/issues/21
35333        try {
35334          value = rule.cssText;
35335        } catch (e) {
35336          return;
35337        }
35338
35339        viewportUnitExpression.lastIndex = 0;
35340        if (viewportUnitExpression.test(value) && !urlExpression.test(value)) {
35341          // KeyframesRule does not have a CSS-PropertyName
35342          declarations.push([rule, null, value]);
35343          options.hacks && options.hacks.findDeclarations(declarations, rule, null, value);
35344        }
35345
35346        return;
35347      }
35348
35349      if (!rule.style) {
35350        if (!rule.cssRules) {
35351          return;
35352        }
35353
35354        forEach.call(rule.cssRules, function(_rule) {
35355          findDeclarations(_rule);
35356        });
35357
35358        return;
35359      }
35360
35361      forEach.call(rule.style, function(name) {
35362        var value = rule.style.getPropertyValue(name);
35363        // preserve those !important rules
35364        if (rule.style.getPropertyPriority(name)) {
35365          value += ' !important';
35366        }
35367
35368        viewportUnitExpression.lastIndex = 0;
35369        if (viewportUnitExpression.test(value)) {
35370          declarations.push([rule, name, value]);
35371          options.hacks && options.hacks.findDeclarations(declarations, rule, name, value);
35372        }
35373      });
35374    }
35375
35376    function getReplacedViewportUnits() {
35377      dimensions = getViewport();
35378
35379      var css = [];
35380      var buffer = [];
35381      var open;
35382      var close;
35383
35384      declarations.forEach(function(item) {
35385        var _item = overwriteDeclaration.apply(null, item);
35386        var _open = _item.selector.length ? (_item.selector.join(' {\n') + ' {\n') : '';
35387        var _close = new Array(_item.selector.length + 1).join('\n}');
35388
35389        if (!_open || _open !== open) {
35390          if (buffer.length) {
35391            css.push(open + buffer.join('\n') + close);
35392            buffer.length = 0;
35393          }
35394
35395          if (_open) {
35396            open = _open;
35397            close = _close;
35398            buffer.push(_item.content);
35399          } else {
35400            css.push(_item.content);
35401            open = null;
35402            close = null;
35403          }
35404
35405          return;
35406        }
35407
35408        if (_open && !open) {
35409          open = _open;
35410          close = _close;
35411        }
35412
35413        buffer.push(_item.content);
35414      });
35415
35416      if (buffer.length) {
35417        css.push(open + buffer.join('\n') + close);
35418      }
35419
35420      // Opera Mini messes up on the content hack (it replaces the DOM node's innerHTML with the value).
35421      // This fixes it. We test for Opera Mini only since it is the most expensive CSS selector
35422      // see https://developer.mozilla.org/en-US/docs/Web/CSS/Universal_selectors
35423      if (isOperaMini) {
35424        css.push('* { content: normal !important; }');
35425      }
35426
35427      return css.join('\n\n');
35428    }
35429
35430    function overwriteDeclaration(rule, name, value) {
35431      var _value;
35432      var _selectors = [];
35433
35434      _value = value.replace(viewportUnitExpression, replaceValues);
35435
35436      if (options.hacks) {
35437        _value = options.hacks.overwriteDeclaration(rule, name, _value);
35438      }
35439
35440      if (name) {
35441        // skipping KeyframesRule
35442        _selectors.push(rule.selectorText);
35443        _value = name + ': ' + _value + ';';
35444      }
35445
35446      var _rule = rule.parentRule;
35447      while (_rule) {
35448        if (_rule.media) {
35449          _selectors.unshift('@media ' + _rule.media.mediaText);
35450        } else if (_rule.conditionText) {
35451          _selectors.unshift('@supports ' + _rule.conditionText);
35452        }
35453
35454        _rule = _rule.parentRule;
35455      }
35456
35457      return {
35458        selector: _selectors,
35459        content: _value,
35460      };
35461    }
35462
35463    function replaceValues(match, number, unit) {
35464      var _base = dimensions[unit];
35465      var _number = parseFloat(number) / 100;
35466      return (_number * _base) + 'px';
35467    }
35468
35469    function getViewport() {
35470      var vh = window.innerHeight;
35471      var vw = window.innerWidth;
35472
35473      return {
35474        vh: vh,
35475        vw: vw,
35476        vmax: Math.max(vw, vh),
35477        vmin: Math.min(vw, vh),
35478      };
35479    }
35480
35481    function importCrossOriginLinks(next) {
35482      var _waiting = 0;
35483      var decrease = function() {
35484        _waiting--;
35485        if (!_waiting) {
35486          next();
35487        }
35488      };
35489
vendor: 9,741 bytes, lines 35490-35549
35490      forEach.call(document.styleSheets, function(sheet) {
35491        if (!sheet.href || origin(sheet.href) === origin(location.href) || sheet.ownerNode.getAttribute('data-viewport-units-buggyfill') === 'ignore') {
35492          // skip <style> and <link> from same origin or explicitly declared to ignore
35493          return;
35494        }
35495
35496        _waiting++;
35497        convertLinkToStyle(sheet.ownerNode, decrease);
35498      });
35499
35500      if (!_waiting) {
35501        next();
35502      }
35503    }
35504
35505    function origin(url) {
35506      return url.slice(0, url.indexOf('/', url.indexOf('://') + 3));
35507    }
35508
35509    function convertLinkToStyle(link, next) {
35510      getCors(link.href, function() {
35511        var style = document.createElement('style');
35512        style.media = link.media;
35513        style.setAttribute('data-href', link.href);
35514        style.textContent = this.responseText;
35515        link.parentNode.replaceChild(style, link);
35516        next();
35517      }, next);
35518    }
35519
35520    function getCors(url, success, error) {
35521      var xhr = new XMLHttpRequest();
35522      if ('withCredentials' in xhr) {
35523        // XHR for Chrome/Firefox/Opera/Safari.
35524        xhr.open('GET', url, true);
35525      } else if (typeof XDomainRequest !== 'undefined') {
35526        // XDomainRequest for IE.
35527        xhr = new XDomainRequest();
35528        xhr.open('GET', url);
35529      } else {
35530        throw new Error('cross-domain XHR not supported');
35531      }
35532
35533      xhr.onload = success;
35534      xhr.onerror = error;
35535      xhr.send();
35536      return xhr;
35537    }
35538
35539    return {
35540      version: '0.6.1',
35541      findProperties: findProperties,
35542      getCss: getReplacedViewportUnits,
35543      init: initialize,
35544      refresh: refresh,
35545    };
35546  }));
35547})();
35548
35549!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('<button type="button" />').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("<ul />").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i("<li />").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find("li").first().addClass("slick-active")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+":not(.slick-cloned)").addClass("slick-slide"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr("data-slick-index",e).data("originalStyling",i(t).attr("style")||"")}),e.$slider.addClass("slick-slider"),e.$slideTrack=0===e.slideCount?i('<div class="slick-track"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class="slick-track"/>').parent(),e.$list=e.$slideTrack.wrap('<div class="slick-list"/>').parent(),e.$slideTrack.css("opacity",0),!0!==e.options.centerMode&&!0!==e.options.swipeToSlide||(e.options.slidesToScroll=1),i("img[data-lazy]",e.$slider).not("[src]").addClass("slick-loading"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),!0===e.options.draggable&&e.$list.addClass("draggable")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.o
vendor: 3,442 bytes, line 35549
35549ptions.rows>1){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement("div");for(e=0;e<l.options.rows;e++){var a=document.createElement("div");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if("window"===r.respondTo?n=a:"slider"===r.respondTo?n=d:"min"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(!1===r.originalSettings.mobileFirst?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||!1===l||r.$slider.trigger("breakpoint",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is("a")&&e.preventDefault(),l.is("li")||(l=l.closest("li")),n=r.slideCount%r.options.slidesToScroll!=0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case"previous":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case"next":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case"index":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger("focus");break;default:return}},e.prototype.checkNavigable=function(i){var e,t;if(e=this.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i("li",e.$dots).off("click.slick",e.changeSlide).off("mouseenter.slick",i.proxy(e.interrupt,e,!0)).off("mouseleave.slick",i.proxy(e.interrupt,e,!1)),!0===e.options.accessibility&&e.$dots.off("keydown.slick",e.keyHandler)),e.$slider.off("focus.slick blur.slick"),!0===e.options.arrows&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off("click.slick",e.changeSlide),e.$nextArrow&&e.$nextArrow.off("click.slick",e.changeSlide),!0===e.options.accessibility&&(e.$prevArrow&&e.$prevArrow.off("keydown.slick",e.keyHandler),e.$nextArrow&&e.$nextArrow.off("keydown.slick",e.keyHandler))),e.$list.off("touchstart.slick mousedown.slick",e.swipeHandler),e.$list.off("touchmove.slick mousemove.slick",e.swipeHandler),e.$list.off("touchend.slick mouseup.slick",e.swipeHandler),e.$list.off("touchcancel.slick mouseleave.
35549slick",e.swipeHandler),e.$list.off("click.slick",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),!0===e.options.accessibility&&e.$list.off("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().off("click.slick",e.selectHandler),i(window).off("orientationchange.slick.slick-"+e.instanceUid,e.orientationChange),i(window).off("resize.slick.slick-"+e.instanceUid,e.resize),i("[draggable!=true]",e.$slideTrack).off("dragstart",e.preventDefault),i(window).off("load.slick.slick-"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.off("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>1&&((i=e.$slides.children().children()).removeAttr("style"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(".slick-cloned",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){i(this).attr("style",i(this).data("originalStyling"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass("slick-slider"),t.$slider.removeClass("slick-initialized"),t.$slider.removeClass("slick-dotted"),t.unslicked=!0,e||t.$slider.trigger("destroy",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]="",!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&(e.focussed=o.is(":focus"),e.autoPlay())},0)})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){return this.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){return this.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(!1===e.options.infinite?i=e.slideCount:(t=-1*e.options.slidesToScroll,o=-1*e.options.slidesToScroll,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o=this;return t=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(s,n){if(n.offsetLeft-t+i(n).outerWidth()/2>-1*o.swipeLeft)return e=n,!1}),Math.abs(i(e).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:
vendor: 2,805 bytes, line 35549
35549parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass("slick-initialized")||(i(t.$slider).addClass("slick-initialized"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger("init",[t]),!0===t.options.accessibility&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function(t){var s=o.indexOf(t);i(this).attr({role:"tabpanel",id:"slick-slide"+e.instanceUid+t,tabindex:-1}),-1!==s&&i(this).attr({"aria-describedby":"slick-slide-control"+e.instanceUid+s})}),e.$dots.attr("role","tablist").find("li").each(function(s){var n=o[s];i(this).attr({role:"presentation"}),i(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+e.instanceUid+s,"aria-controls":"slick-slide"+e.instanceUid+n,"aria-label":s+1+" of "+t,"aria-selected":null,tabindex:"-1"})}).eq(e.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.$slides.eq(s).attr("tabindex",0);e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide),!0===i.options.accessibility&&(i.$prevArrow.on("keydown.slick",i.keyHandler),i.$nextArrow.on("keydown.slick",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;!0===e.options.dots&&(i("li",e.$dots).on("click.slick",{message:"index"},e.changeSlide),!0===e.options.accessibility&&e.$dots.on("keydown.slick",e.keyHandler)),!0===e.options.dots&&!0===e.options.pauseOnDotsHover&&i("li",e.$dots).on("mouseenter.slick",i.proxy(e.interrupt,e,!0)).on("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.on("mouseleave.slick",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on("touchstart.slick mousedown.slick",{action:"start"},e.swipeHandler),e.$list.on("touchmove.slick mousemove.slick",{action:"move"},e.swipeHandler),e.$list.on("touchend.slick mouseup.slick",{action:"end"}
35549,e.swipeHandler),e.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},e.swipeHandler),e.$list.on("click.slick",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),!0===e.options.accessibility&&e.$list.on("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),i(window).on("orientationchange.slick.slick-"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on("resize.slick.slick-"+e.instanceUid,i.proxy(e.resize,e)),i("[draggable!=true]",e.$slideTrack).on("dragstart",e.preventDefault),i(window).on("load.slick.slick-"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===i.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===i.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},e.prototype.lazyLoad=function(){function e(e){i("img[data-lazy]",e).each(function(){var e=i(this),t=i(this).attr("data-lazy"),o=i(this).attr("data-srcset"),s=i(this).attr("data-sizes")||n.$slider.attr("data-sizes"),r=document.createElement("img");r.onload=function(){e.animate({opacity:0}
vendor: 18,246 bytes, line 35549
35549,100,function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).animate({opacity:1},200,function(){e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,e,t])})},r.onerror=function(){e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,e,t])},r.src=t})}var t,o,s,n=this;if(!0===n.options.centerMode?!0===n.options.infinite?s=(o=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(o=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),s=n.options.slidesToShow/2+1+2+n.currentSlide):(o=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,s=Math.ceil(o+n.options.slidesToShow),!0===n.options.fade&&(o>0&&o--,s<=n.slideCount&&s++)),t=n.$slider.find(".slick-slide").slice(o,s),"anticipated"===n.options.lazyLoad)for(var r=o-1,l=s,d=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)r<0&&(r=n.slideCount-1),t=(t=t.add(d.eq(r))).add(d.eq(l)),r--,l++;e(t),n.slideCount<=n.options.slidesToShow?e(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?e(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&e(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;t.unslicked||(t.$slider.trigger("afterChange",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),!0===t.options.accessibility&&(t.initADA(),t.options.focusOnChange&&i(t.$slides.get(t.currentSlide)).attr("tabindex",0).focus()))},e.prototype.prev=e.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i("img[data-lazy]",l.$slider);d.length?(t=d.first(),o=t.attr("data-lazy"),s=t.attr("data-srcset"),n=t.attr("data-sizes")||l.$slider.attr("data-sizes"),(r=document.createElement("img")).onload=function(){s&&(t.attr("srcset",s),n&&t.attr("sizes",n)),t.attr("src",o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger("allImagesLoaded",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:"index",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if("array"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||"window";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass("slick-slide"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger("reInit",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},e.prototype.setCSS=function(i){var e,t,o=this,s={};!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled?o.$slideTrack.css(s):(s={},!1===o.cssTransitions?(s[o.animType]="translate("+e+", "+t+")",o.$slideTrack.css(s)):(s[o.animType]="translate3d("+e+", "+t+", 0px)",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,!0===t.options.rtl?i(s).css({position:"relative",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}):i(s).css({position:"relative",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css("height",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if("object"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n="multiple"):"string"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],"responsive"===arguments[0]&&"array"===i.type(arguments[1])?n="responsive":void 0!==arguments[1]&&(n="single")),"single"===n)r.options[o]=s;else if("multiple"===n)i.each(o,function(i,e){r.options[i]=e});else if("responsive"===n)for(t in s)if("array"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass("slick-active").attr("aria-hidden","false"):t.slice(o,o+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){i(this).attr("id","")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(".slick-slide")?i(e.target):i(e.target).parents(".slick-slide"),s=parseInt(o.attr("data-slick-index"));s||(s=0),t.slideCount<=t.options.slidesToShow?t.slideHandler(s,!1,!0):t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(!0===a.animating&&!0===a.options.waitForAnimate||!0===a.options.fade&&a.currentSlide===i))if(!1===e&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,!1===a.options.infinite&&!1===a.options.centerMode&&(i<0||i>a.getDotCount()*a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else if(!1===a.options.infinite&&!0===a.options.centerMode&&(i<0||i>a.slideCount-a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else{if(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!=0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!=0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger("beforeChange",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=(l=a.getNavTarget()).slick("getSlick")).slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide),a.updateDots(),a.updateArrows(),!0===a.options.fade)return!0!==t?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight();!0!==t?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)}},e.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),(o=Math.round(180*t/Math.PI))<0&&(o=360-Math.abs(o)),o<=45&&o>=0?!1===s.options.rtl?"left":"right":o<=360&&o>=315?!1===s.options.rtl?"left":"right":o>=135&&o<=225?!1===s.options.rtl?"right":"left":!0===s.options.verticalSwiping?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,!1===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return t.touchObject={},!1;void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")}
35549,e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode?(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode&&(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if("object"==typeof s||void 0===s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),void 0!==t)return t;return o}});
35550
35551!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("jquery"));else if("function"==typeof define&&define.amd)define(["jquery"],e);else{var n="object"==typeof exports?e(require("jquery")):e(t.jQuery);for(var i in n)("object"==typeof exports?exports:t)[i]=n[i]}}(window,function(n){return s={},o.m=i={
35551"./js/entries/foundation.js":function(t,e,n){"use strict";n.r(e);var i=n("jquery"),o=n.n(i),s=n("./js/foundation.core.js");n.d(e,"Foundation",function(){return s.Foundation});var a=n("./js/foundation.core.utils.js");n.d(e,"CoreUtils",function(){return a});var r=n("./js/foundation.util.box.js");n.d(e,"Box",function(){return r.Box});var l=n("./js/foundation.util.imageLoader.js");n.d(e,"onImagesLoaded",function(){return l.onImagesLoaded});var u=n("./js/foundation.util.keyboard.js");n.d(e,"Keyboard",function(){return u.Keyboard});var c=n("./js/foundation.util.mediaQuery.js");n.d(e,"MediaQuery",function(){return c.MediaQuery});var h=n("./js/foundation.util.motion.js");n.d(e,"Motion",function(){return h.Motion});var d=n("./js/foundation.util.nest.js");n.d(e,"Nest",function(){return d.Nest});var f=n("./js/foundation.util.timer.js");n.d(e,"Timer",function(){return f.Timer});var p=n("./js/foundation.util.touch.js");n.d(e,"Touch",function(){return p.Touch});var m=n("./js/foundation.util.triggers.js");n.d(e,"Triggers",function(){return m.Triggers});var g=n("./js/foundation.abide.js");n.d(e,"Abide",function(){return g.Abide});var v=n("./js/foundation.accordion.js");n.d(e,"Accordion",function(){return v.Accordion});var y=n("./js/foundation.accordionMenu.js");n.d(e,"AccordionMenu",function(){return y.AccordionMenu});var b=n("./js/foundation.drilldown.js");n.d(e,"Drilldown",function(){return b.Drilldown});var w=n("./js/foundation.dropdown.js");n.d(e,"Dropdown",function(){return w.Dropdown});var _=n("./js/foundation.dropdownMenu.js");n.d(e,"DropdownMenu",function(){return _.DropdownMenu});var $=n("./js/foundation.equalizer.js");n.d(e,"Equalizer",function(){return $.Equalizer});var k=n("./js/foundation.interchange.js");n.d(e,"Interchange",function(){return k.Interchange});var j=n("./js/foundation.magellan.js");n.d(e,"Magellan",function(){return j.Magellan});var O=n("./js/foundation.offcanvas.js");n.d(e,"OffCanvas",function(){return O.OffCanvas});var C=n("./js/foundation.orbit.js");n.d(e,"Orbit",function(){return C.Orbit});var z=n("./js/foundation.responsiveMenu.js");n.d(e,"ResponsiveMenu",function(){return z.ResponsiveMenu});var T=n("./js/foundation.responsiveToggle.js");n.d(e,"ResponsiveToggle",function(){return T.ResponsiveToggle});var S=n("./js/foundation.reveal.js");n.d(e,"Reveal",function(){return S.Reveal});var E=n("./js/foundation.slider.js");n.d(e,"Slider",function(){return E.Slider});var P=n("./js/foundation.smoothScroll.js");n.d(e,"SmoothScroll",function(){return P.SmoothScroll});var x=n("./js/foundation.sticky.js");n.d(e,"Sticky",function(){return x.Sticky});var A=n("./js/foundation.tabs.js");n.d(e,"Tabs",function(){return A.Tabs});var L=n("./js/foundation.toggler.js");n.d(e,"Toggler",function(){return L.Toggler});var M=n("./js/foundation.tooltip.js");n.d(e,"Tooltip",function(){return M.Tooltip});var R=n("./js/foundation.responsiveAccordionTabs.js");n.d(e,"ResponsiveAccordionTabs",function(){return R.ResponsiveAccordionTabs}),s.Foundation.addToJquery(o.a),s.Foundation.rtl=a.rtl,s.Foundation.GetYoDigits=a.GetYoDigits,s.Foundation.transitionend=a.transitionend,s.Foundation.RegExpEscape=a.RegExpEscape,s.Foundation.onLoad=a.onLoad,s.Foundation.Box=r.Box,s.Foundation.onImagesLoaded=l.onImagesLoaded,s.Foundation.Keyboard=u.Keyboard,s.Foundation.MediaQuery=c.MediaQuery,s.Foundation.Motion=h.Motion,s.Foundation.Move=h.Move,s.Foundation.Nest=d.Nest,s.Foundation.Timer=f.Timer,p.Touch.init(o.a),m.Triggers.init(o.a,s.Foundation),c.MediaQuery._init(),s.Foundation.plugin(g.Abide,"Abide"),s.Foundation.plugin(v.Accordion,"Accordion"),s.Foundation.plugin(y.AccordionMenu,"AccordionMenu"),s.Foundation.plugin(b.Drilldown,"Drilldown"),s.Foundation.plugin(w.Dropdown,"Dropdown"),s.Foundation.plugin(_.DropdownMenu,"DropdownMenu"),s.Foundation.plugin($.Equalizer,"Equalizer"),s.Foundation.plugin(k.Interchange,"Interchange"),s.Foundation.plugin(j.Magellan,"Magellan"),s.Foundation.plugin(O.OffCanvas,"OffCanvas"),s.Foundation.plugin(C.Orbit,"Orbit"),s.Foundation.plugin(z.ResponsiveMenu,"ResponsiveMenu"),s.Foundation.plugin(T.ResponsiveToggle,"ResponsiveToggle"),s.Foundation.plugin(S.Reveal,"Reveal"),s.Foundation.plugin(E.Slider,"Slider"),s.Foundation.plugin(P.SmoothScroll,"SmoothScroll"),s.Foundation.plugin(x.Sticky,"Sticky"),s.Foundation.plugin(A.Tabs,"Tabs"),s.Foundation.plugin(L.Toggler,"Toggler"),s.Foundation.plugin(M.Tooltip,"Tooltip"),s.Foundation.plugin(R.ResponsiveAccordionTabs,"ResponsiveAccordionTabs"),e.default=s.Foundation},
vendor: 12,549 bytes, line 35551
35551"./js/foundation.abide.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Abide",function(){return d});var i=n("jquery"),h=n.n(i),o=n("./js/foundation.core.plugin.js"),a=n("./js/foundation.core.utils.js");function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function l(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function u(t){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function c(t,e){return(c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var d=function(){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),l(this,u(i).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&c(t,e)}(i,o["Plugin"]),function(t,e,n){e&&r(t.prototype,e),n&&r(t,n)}(i,[{key:"_setup",value:function(t,e){var n=1<arguments.length&&void 0!==e?e:{};this.$element=t,this.options=h.a.extend(!0,{},i.defaults,this.$element.data(),n),this.isEnabled=!0,this.formnovalidate=null,this.className="Abide",this._init()}},{key:"_init",value:function(){var n=this;this.$inputs=h.a.merge(this.$element.find("input").not('[type="submit"]'),this.$element.find("textarea, select")),this.$submits=this.$element.find('[type="submit"]');var t=this.$element.find("[data-abide-error]");this.options.a11yAttributes&&(this.$inputs.each(function(t,e){return n.addA11yAttributes(h()(e))}),t.each(function(t,e){return n.addGlobalErrorA11yAttributes(h()(e))})),this._events()}},{key:"_events",value:function(){var e=this;this.$element.off(".abide").on("reset.zf.abide",function(){e.resetForm()}).on("submit.zf.abide",function(){return e.validateForm()}),this.$submits.off("click.zf.abide keydown.zf.abide").on("click.zf.abide keydown.zf.abide",function(t){t.key&&" "!==t.key&&"Enter"!==t.key||(t.preventDefault(),e.formnovalidate=null!==t.target.getAttribute("formnovalidate"),e.$element.submit())}),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",function(t){e.validateInput(h()(t.target))}),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",function(t){e.validateInput(h()(t.target))}),this.options.validateOnBlur&&this.$inputs.off("blur.zf.abide").on("blur.zf.abide",function(t){e.validateInput(h()(t.target))})}},{key:"_reflow",value:function(){this._init()}},{key:"_validationIsDisabled",value:function(){return!1===this.isEnabled||("boolean"==typeof this.formnovalidate?this.formnovalidate:!!this.$submits.length&&null!==this.$submits[0].getAttribute("formnovalidate"))}},{key:"enableValidation",value:function(){this.isEnabled=!0}},{key:"disableValidation",value:function(){this.isEnabled=!1}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var n=t.find("option:selected");n.length&&n.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(e,t){var n=this,i=e.length?e[0].id:"",o=e.siblings(this.options.formErrorSelector);return o.length||(o=e.parent().find(this.options.formErrorSelector)),i&&(o=o.add(this.$element.find('[data-form-error-for="'.concat(i,'"]')))),t&&(o=o.not("[data-form-error-on]"),t.forEach(function(t){o=(o=o.add(e.siblings('[data-form-error-on="'.concat(t,'"]')))).add(n.$element.find('[data-form-error-for="'.concat(i,'"][data-form-error-on="').concat(t,'"]')))})),o}},{key:"findLabel",value:function(t){var e=t[0].id,n=this.$element.find('label[for="'.concat(e,'"]'));return n.length?n:t.closest("label")}},{key:"findRadioLabels",value:function(t){var o=this,e=t.map(function(t,e){var n=e.id,i=o.$element.find('label[for="'.concat(n,'"]'));return i.length||(i=h()(e).closest("label")),i[0]});return h()(e)}},{key:"findCheckboxLabels",value:function(t){var o=this,e=t.map(function(t,e){var n=e.id,i=o.$element.find('label[for="'.concat(n,'"]'));return i.length||(i=h()(e).closest("label")),i[0]});return h()(e)}},{key:"addErrorClasses",value:function(t,e){var n=this.findLabel(t),i=this.findFormError(t,e);n.length&&n.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr({"data-invalid":"","aria-invalid":!0})}},{key:"addA11yAttributes",value:function(t){var e=this.findFormError(t),n=e.filter("label"),i=e.first();if(e.length){if(void 0===t.attr("aria-describedby")){var o=i.attr("id");void 0===o&&(o=Object(a.GetYoDigits)(6,"abide-error"),i.attr("id",o)),t.attr("aria-describedby",o)}if(n.filter("[for]").length<n.length){var s=t.attr("id");void 0===s&&(s=Object(a.GetYoDigits)(6,"abide-input"),t.attr("id",s)),n.each(function(t,e){var n=h()(e);void 0===n.attr("for")&&n.attr("for",s)})}e.each(function(t,e){var n=h()(e);void 0===n.attr("role")&&n.attr("role","alert")}).end()}}},{key:"addGlobalErrorA11yAttributes",value:function(t){void 0===t.attr("aria-live")&&t.attr("aria-live",this.options.a11yErrorLevel)}},{key:"removeRadioErrorClasses",value:function(t){var e=this.$element.find(':radio[name="'.concat(t,'"]')),n=this.findRadioLabels(e),i=this.findFormError(e);n.length&&n.removeClass(this.options.labelErrorClass),i.length&&i.removeClass(this.options.formErrorClass),e.removeClass(this.options.inputErrorClass).attr({"data-invalid":null,"aria-invalid":null})}},{key:"removeCheckboxErrorClasses",value:function(t){var e=this.$element.find(':checkbox[name="'.concat(t,'"]')),n=this.findCheckboxLabels(e),i=this.findFormError(e);n.length&&n.removeClass(this.options.labelErrorClass),i.length&&i.removeClass(this.options.formErrorClass),e.removeClass(this.options.inputErrorClass).attr({"data-invalid":null,"aria-invalid":null})}},{key:"removeErrorClasses",value:function(t){if("radio"==t[0].type)return this.removeRadioErrorClasses(t.attr("name"));if("checkbox"==t[0].type)return this.removeCheckboxErrorClasses(t.attr("name"));var e=this.findLabel(t),n=this.findFormError(t);e.length&&e.removeClass(this.options.labelErrorClass),n.length&&n.removeClass(this.options.formErrorClass),t.removeClass(this.options.inputErrorClass).attr({"data-invalid":null,"aria-invalid":null})}},{key:"validateInput",value:function(e){var n=this,t=this.requiredCheck(e),i=e.attr("data-validator"),o=[],s=!0;if(this._validationIsDisabled())return!0;if(e.is("[data-abide-ignore]")||e.is('[type="hidden"]')||e.is("[disabled]"))return!0;switch(e[0].type){case"radio":this.validateRadio(e.attr("name"))||o.push("required");break;case"checkbox":this.validateCheckbox(e.attr("name"))||o.push("required"),s=!1;break;case"select":case"select-one":case"select-multiple":t||o.push("required");break;default:t||o.push("required"),this.validateText(e)||o.push("pattern")}if(i){var a=!!e.attr("required");i.split(" ").forEach(function(t){n.options.validators[t](e,a,e.parent())||o.push(t)})}e.attr("data-equalto")&&(this.options.validators.equalTo(e)||o.push("equalTo"));var r=0===o.length,l=(r?"valid":"invalid")+".zf.abide";if(r){var u=this.$element.find('[data-equalto="'.concat(e.attr("id"),'"]'));if(u.length){var c=this;u.each(function(){h()(this).val()&&c.validateInput(h()(this))})}}return s&&(this.removeErrorClasses(e),r||this.addErrorClasses(e,o)),e.trigger(l,[e]),r}},{key:"validateForm",value:function(){var t,i=this,e=[],n=this;if(this.initialized||(this.initialized=!0),this._validationIsDisabled())return!(this.formnovalidate=null);this.$inputs.each(function(){if("checkbox"===h()(this)[0].type){if(h()(this).attr("name")===t)return!0;t=h()(this).attr("name")}e.push(n.validateInput(h()(this)))});var o=-1===e.indexOf(!1);return this.$element.find("[data-abide-error]").each(function(t,e){var n=h()(e);i.options.a11yAttributes&&i.addGlobalErrorA11yAttributes(n),n.css("display",o?"none":"block")}),this.$element.trigger((o?"formvalid":"forminvalid")+".zf.abide",[this.$element]),o}},{key:"validateText",value:function(t,e){e=e||t.attr("data-pattern")||t.attr("pattern")||t.attr("type");var n=t.val(),i=!0;return n.length&&(this.options.patterns.hasOwnProperty(e)?i=this.options.patterns[e].test(n):e!==t.attr("type")&&(i=new RegExp(e).test(n))),i}},{key:"validateRadio",value:function(t){var e=this.$element.find(':radio[name="'.concat(t,'"]')),n=!1,i=!1;return e.each(function(t,e){h()(e).attr("required")&&(i=!0)}),i||(n=!0),n||e.each(function(t,e){h()(e).prop("checked")&&(n=!0)}),n}},{key:"validateCheckbox",value:function(t){var n=this,e=this.$element.find(':checkbox[name="'.concat(t,'"]')),i=!1,o=!1,s=1,a=0;return e.each(function(t,e){h()(e).attr("required")&&(o=!0)}),o||(i=!0),i||(e.each(function(t,e){h()(e).prop("checked")&&a++,void 0!==h()(e).attr("data-min-required")&&(s=parseInt(h()(e).attr("data-min-required")))}),s<=a&&(i=!0)),!0!==this.initialized&&1<s||(e.each(function(t,e){i?n.removeErrorClasses(h()(e)):n.addErrorClasses(h()(e),["required"])}),i)}},{key:"matchValidation",value:function(e,t,n){var i=this;return n=!!n,-1===t.split(" ").map(function(t){return i.options.validators[t](e,n,e.parent())}).indexOf(!1)}},{key:"resetForm",value:function(){var t=this.$element,e=this.options;h()(".".concat(e.labelErrorClass),t).not("small").removeClass(e.labelErrorClass),h()(".".concat(e.inputErrorClass),t).not("small").removeClass(e.inputErrorClass),h()("".concat(e.formErrorSelector,".").concat(e.formErrorClass)).removeClass(e.formErrorClass),t.find("[data-abide-error]").css("display","none"),h()(":input",t).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").attr({"data-invalid":null,"aria-invalid":null}),h()(":input:radio",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),h()(":input:checkbox",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),t.trigger("formreset.zf.abide",[t])}},{key:"_destroy",value:function(){var t=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each(function(){t.removeErrorClasses(h()(this))}),this.$submits.off(".abide")}}]),i}();d.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",a11yAttributes:!0,a11yErrorLevel:"assertive",liveValidate:!1,validateOnBlur:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,website:{test:function(t){return d.defaults.patterns.domain.test(t)||d.defaults.patterns.url.test(t)}}},validators:{equalTo:function(t,e,n){return h()("#".concat(t.attr("data-equalto"))).val()===t.val()}}}},
35551"./js/foundation.accordion.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Accordion",function(){return f});var i=n("jquery"),a=n.n(i),o=n("./js/foundation.core.plugin.js"),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.keyboard.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var f=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),c(this,h(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}(n,o["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=a.a.extend({},n.defaults,this.$element.data(),e),this.className="Accordion",this._init(),s.Keyboard.register("Accordion",{ENTER:"toggle",SPACE:"toggle",ARROW_DOWN:"next",ARROW_UP:"previous"})}},{key:"_init",value:function(){var i=this;this._isInitializing=!0,this.$element.attr("role","tablist"),this.$tabs=this.$element.children("[data-accordion-item]"),this.$tabs.attr({role:"presentation"}),this.$tabs.each(function(t,e){var n=a()(e),i=n.children("[data-tab-content]"),o=i[0].id||Object(r.GetYoDigits)(6,"accordion"),s=e.id?"".concat(e.id,"-label"):"".concat(o,"-label");n.find("a:first").attr({"aria-controls":o,role:"tab",id:s,"aria-expanded":!1,"aria-selected":!1}),i.attr({role:"tabpanel","aria-labelledby":s,"aria-hidden":!0,id:o})});var t=this.$element.find(".is-active").children("[data-tab-content]");t.length&&(this._initialAnchor=t.prev("a").attr("href"),this._openSingleTab(t)),this._checkDeepLink=function(){var t=window.location.hash;if(!t.length){if(i._isInitializing)return;i._initialAnchor&&(t=i._initialAnchor)}var e=t&&a()(t),n=t&&i.$element.find('[href$="'.concat(t,'"]'));!e.length||!n.length||(e&&n&&n.length?n.parent("[data-accordion-item]").hasClass("is-active")||i._openSingleTab(e):i._closeAllTabs(),i.options.deepLinkSmudge&&Object(r.onLoad)(a()(window),function(){var t=i.$element.offset();a()("html, body").animate({scrollTop:t.top-i.options.deepLinkSmudgeOffset},i.options.deepLinkSmudgeDelay)}),i.$element.trigger("deeplink.zf.accordion",[n,e]))},this.options.deepLink&&this._checkDeepLink(),this._events(),this._isInitializing=!1}},{key:"_events",value:function(){var i=this;this.$tabs.each(function(){var e=a()(this),n=e.children("[data-tab-content]");n.length&&e.children("a").off("click.zf.accordion keydown.zf.accordion").on("click.zf.accordion",function(t){t.preventDefault(),i.toggle(n)}).on("keydown.zf.accordion",function(t){s.Keyboard.handleKey(t,"Accordion",{toggle:function(){i.toggle(n)},next:function(){var t=e.next().find("a").focus();i.options.multiExpand||t.trigger("click.zf.accordion")},previous:function(){var t=e.prev().find("a").focus();i.options.multiExpand||t.trigger("click.zf.accordion")},handled:function(){t.preventDefault()}})})}),this.options.deepLink&&a()(window).on("hashchange",this._checkDeepLink)}},{key:"toggle",value:function(t){if(t.closest("[data-accordion]").is("[disabled]"))console.info("Cannot toggle an accordion that is disabled.");else if(t.parent().hasClass("is-active")?this.up(t):this.down(t),this.options.deepLink){var e=t.prev("a").attr("href");this.options.updateHistory?history.pushState({},"",e):history.replaceState({},"",e)}}},{key:"down",value:function(t){t.closest("[data-accordion]").is("[disabled]")?console.info("Cannot call down on an accordion that is disabled."):this.options.multiExpand?this._openTab(t):this._openSingleTab(t)}},{key:"up",value:function(t){if(this.$element.is("[disabled]"))console.info("Cannot call up on an accordion that is disabled.");else{var e=t.parent();if(e.hasClass("is-active")){var n=e.siblings();(this.options.allowAllClosed||n.hasClass("is-active"))&&this._closeTab(t)}}}},{key:"_openSingleTab",value:function(t){var e=this.$element.children(".is-active").children("[data-tab-content]");e.length&&this._closeTab(e.not(t)),this._openTab(t)}},{key:"_openTab",value:function(t){var e=this,n=t.parent(),i=t.attr("aria-labelledby");t.attr("aria-hidden",!1),n.addClass("is-active"),a()("#".concat(i)).attr({"aria-expanded":!0,"aria-selected":!0}),t.finish().slideDown(this.options.slideSpeed,function(){e.$element.trigger("down.zf.accordion",[t])})}},{key:"_closeTab",value:function(t){var e=this,n=t.parent(),i=t.attr("aria-labelledby");t.attr("aria-hidden",!0),n.removeClass("is-active"),a()("#".concat(i)).attr({"aria-expanded":!1,"aria-selected":!1}),t.finish().slideUp(this.options.slideSpeed,function(){e.$element.trigger("up.zf.accordion",[t])})}},{key:"_closeAllTabs",value:function(){var t=this.$element.children(".is-active").children("[data-tab-content]");t.length&&this._closeTab(t)}},{key:"_destroy",value:function(){this.$element.find("[data-tab-content]").stop(!0).slideUp(0).css("display",""),this.$element.find("a").off(".zf.accordion"),this.options.deepLink&&a()(window).off("hashchange",this._checkDeepLink)}}]),n}();f.defaults={slideSpeed:250,multiExpand:!1,allowAllClosed:!1,deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,deepLinkSmudgeOffset:0,updateHistory:!1}},
35551"./js/foundation.accordionMenu.js":function(t,e,n){"use strict";n.r(e),n.d(e,"AccordionMenu",function(){return p});var i=n("jquery"),r=n.n(i),l=n("./js/foundation.util.keyboard.js"),o=n("./js/foundation.util.nest.js"),a=n("./js/foundation.core.utils.js"),s=n("./js/foundation.core.plugin.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,s["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=r.a.extend({},n.defaults,this.$element.data(),e),this.className="AccordionMenu",this._init(),l.Keyboard.register("AccordionMenu",{ENTER:"toggle",SPACE:"toggle",ARROW_RIGHT:"open",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"close",ESCAPE:"closeAll"})}},{key:"_init",value:function(){o.Nest.Feather(this.$element,"accordion");var s=this;this.$element.find("[data-submenu]").not(".is-active").slideUp(0),this.$element.attr({role:"tree","aria-multiselectable":this.options.multiOpen}),this.$menuLinks=this.$element.find(".is-accordion-submenu-parent"),this.$menuLinks.each(function(){var t=this.id||Object(a.GetYoDigits)(6,"acc-menu-link"),e=r()(this),n=e.children("[data-submenu]"),i=n[0].id||Object(a.GetYoDigits)(6,"acc-menu"),o=n.hasClass("is-active");s.options.parentLink&&e.children("a").clone().prependTo(n).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-accordion-submenu-item"></li>');s.options.submenuToggle?(e.addClass("has-submenu-toggle"),e.children("a").after('<button id="'+t+'" class="submenu-toggle" aria-controls="'+i+'" aria-expanded="'+o+'" title="'+s.options.submenuToggleText+'"><span class="submenu-toggle-text">'+s.options.submenuToggleText+"</span></button>")):e.attr({"aria-controls":i,"aria-expanded":o,id:t}),n.attr({"aria-labelledby":t,"aria-hidden":!o,role:"group",id:i})}),this.$element.find("li").attr({role:"treeitem"});var t=this.$element.find(".is-active");t.length&&t.each(function(){s.down(r()(this))}),this._events()}},{key:"_events",value:function(){var a=this;this.$element.find("li").each(function(){var e=r()(this).children("[data-submenu]");e.length&&(a.options.submenuToggle?r()(this).children(".submenu-toggle").off("click.zf.accordionMenu").on("click.zf.accordionMenu",function(t){a.toggle(e)}):r()(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",function(t){t.preventDefault(),a.toggle(e)}))}).on("keydown.zf.accordionMenu",function(e){var n,i,o=r()(this),s=o.parent("ul").children("li"),t=o.children("[data-submenu]");s.each(function(t){if(r()(this).is(o))return n=s.eq(Math.max(0,t-1)).find("a").first(),i=s.eq(Math.min(t+1,s.length-1)).find("a").first(),r()(this).children("[data-submenu]:visible").length&&(i=o.find("li:first-child").find("a").first()),r()(this).is(":first-child")?n=o.parents("li").first().find("a").first():n.parents("li").first().children("[data-submenu]:visible").length&&(n=n.parents("li").find("li:last-child").find("a").first()),void(r()(this).is(":last-child")&&(i=o.parents("li").first().next("li").find("a").first()))}),l.Keyboard.handleKey(e,"AccordionMenu",{open:function(){t.is(":hidden")&&(a.down(t),t.find("li").first().find("a").first().focus())},close:function(){t.length&&!t.is(":hidden")?a.up(t):o.parent("[data-submenu]").length&&(a.up(o.parent("[data-submenu]")),o.parents("li").first().find("a").first().focus())},up:function(){return n.focus(),!0},down:function(){return i.focus(),!0},toggle:function(){return!a.options.submenuToggle&&(o.children("[data-submenu]").length?(a.toggle(o.children("[data-submenu]")),!0):void 0)},closeAll:function(){a.hideAll()},handled:function(t){t&&e.preventDefault()}})})}},{key:"hideAll",value:function(){this.up(this.$element.find("[data-submenu]"))}},{key:"showAll",value:function(){this.down(this.$element.find("[data-submenu]"))}},{key:"toggle",value:function(t){t.is(":animated")||(t.is(":hidden")?this.down(t):this.up(t))}},{key:"down",value:function(t){var e=this;
35551if(!this.options.multiOpen){var n=t.parentsUntil(this.$element).add(t).add(t.find(".is-active")),i=this.$element.find(".is-active").not(n);this.up(i)}t.addClass("is-active").attr({"aria-hidden":!1}),this.options.submenuToggle?t.prev(".submenu-toggle").attr({"aria-expanded":!0}):t.parent(".is-accordion-submenu-parent").attr({"aria-expanded":!0}),t.slideDown(this.options.slideSpeed,function(){e.$element.trigger("down.zf.accordionMenu",[t])})}},{key:"up",value:function(t){var e=this,n=t.find("[data-submenu]"),i=t.add(n);n.slideUp(0),i.removeClass("is-active").attr("aria-hidden",!0),this.options.submenuToggle?i.prev(".submenu-toggle").attr("aria-expanded",!1):i.parent(".is-accordion-submenu-parent").attr("aria-expanded",!1),t.slideUp(this.options.slideSpeed,function(){e.$element.trigger("up.zf.accordionMenu",[t])})}},{key:"_destroy",value:function(){this.$element.find("[data-submenu]").slideDown(0).css("display",""),this.$element.find("a").off("click.zf.accordionMenu"),this.$element.find("[data-is-parent-link]").detach(),this.options.submenuToggle&&(this.$element.find(".has-submenu-toggle").removeClass("has-submenu-toggle"),this.$element.find(".submenu-toggle").remove()),o.Nest.Burn(this.$element,"accordion")}}]),n}();p.defaults={parentLink:!1,slideSpeed:250,submenuToggle:!1,submenuToggleText:"Toggle menu",multiOpen:!0}},
35551"./js/foundation.core.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Foundation",function(){return l});var i=n("jquery"),s=n.n(i),o=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.mediaQuery.js");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var l={version:"6.6.3",_plugins:{},_uuids:[],plugin:function(t,e){var n=e||u(t),i=c(n);this._plugins[i]=this[n]=t},registerPlugin:function(t,e){var n=e?c(e):u(t.constructor).toLowerCase();t.uuid=Object(o.GetYoDigits)(6,n),t.$element.attr("data-".concat(n))||t.$element.attr("data-".concat(n),t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf.".concat(n)),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var e=c(u(t.$element.data("zfPlugin").constructor));for(var n in this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-".concat(e)).removeData("zfPlugin").trigger("destroyed.zf.".concat(e)),t)t[n]=null},reInit:function(t){var e=t instanceof s.a;try{if(e)t.each(function(){s()(this).data("zfPlugin")._init()});else{var n=r(t),i=this;({object:function(t){t.forEach(function(t){t=c(t),s()("[data-"+t+"]").foundation("_init")})},string:function(){t=c(t),s()("[data-"+t+"]").foundation("_init")},undefined:function(){this.object(Object.keys(i._plugins))}})[n](t)}}catch(t){console.error(t)}finally{return t}},reflow:function(i,t){void 0===t?t=Object.keys(this._plugins):"string"==typeof t&&(t=[t]);var o=this;s.a.each(t,function(t,e){var n=o._plugins[e];s()(i).find("[data-"+e+"]").addBack("[data-"+e+"]").filter(function(){return void 0===s()(this).data("zfPlugin")}).each(function(){var t=s()(this),i={reflow:!0};t.attr("data-options")&&t.attr("data-options").split(";").forEach(function(t,e){var n=t.split(":").map(function(t){return t.trim()});n[0]&&(i[n[0]]=function(t){{if("true"===t)return!0;if("false"===t)return!1;if(!isNaN(1*t))return parseFloat(t)}return t}(n[1]))});try{t.data("zfPlugin",new n(s()(this),i))}catch(t){console.error(t)}finally{return}})})},getFnName:u,addToJquery:function(s){return s.fn.foundation=function(n){var t=r(n),e=s(".no-js");if(e.length&&e.removeClass("no-js"),"undefined"===t)a.MediaQuery._init(),l.reflow(this);else{if("string"!==t)throw new TypeError("We're sorry, ".concat(t," is not a valid parameter. You must use a string representing the method you wish to invoke."));var i=Array.prototype.slice.call(arguments,1),o=this.data("zfPlugin");if(void 0===o||void 0===o[n])throw new ReferenceError("We're sorry, '"+n+"' is not an available method for "+(o?u(o):"this element")+".");1===this.length?o[n].apply(o,i):this.each(function(t,e){o[n].apply(s(e).data("zfPlugin"),i)})}return this},s}};function u(t){if(void 0!==Function.prototype.name)return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name;var e=/function\s([^(]{1,})\(/.exec(t.toString());return e&&1<e.length?e[1].trim():""}function c(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}l.util={throttle:function(n,i){var o=null;return function(){var t=this,e=arguments;null===o&&(o=setTimeout(function(){n.apply(t,e),o=null},i))}}},window.Foundation=l,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e<t.length&&!window.requestAnimationFrame;++e){var n=t[e];window.requestAnimationFrame=window[n+"RequestAnimationFrame"],window.cancelAnimationFrame=window[n+"CancelAnimationFrame"]||window[n+"CancelRequestAnimationFrame"]}if(/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)||!window.requestAnimationFrame||!window.cancelAnimationFrame){var i=0;window.requestAnimationFrame=function(t){var e=Date.now(),n=Math.max(i+16,e);return setTimeout(function(){t(i=n)},n-e)},window.cancelAnimationFrame=clearTimeout}window.performance&&window.performance.now||(window.performance={start:Date.now(),now:function(){return Date.now()-this.start}})}(),Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");function e(){}function n(){return o.apply(this instanceof e?this:t,i.concat(Array.prototype.slice.call(arguments)))}
35551var i=Array.prototype.slice.call(arguments,1),o=this;return this.prototype&&(e.prototype=this.prototype),n.prototype=new e,n})},
35551"./js/foundation.core.plugin.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Plugin",function(){return i});n("jquery");var o=n("./js/foundation.core.utils.js");function s(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var i=function(){function i(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),this._setup(t,e);var n=a(this);this.uuid=Object(o.GetYoDigits)(6,n),this.$element.attr("data-".concat(n))||this.$element.attr("data-".concat(n),this.uuid),this.$element.data("zfPlugin")||this.$element.data("zfPlugin",this),this.$element.trigger("init.zf.".concat(n))}return function(t,e,n){e&&s(t.prototype,e),n&&s(t,n)}(i,[{key:"destroy",value:function(){this._destroy();var t=a(this);for(var e in this.$element.removeAttr("data-".concat(t)).removeData("zfPlugin").trigger("destroyed.zf.".concat(t)),this)this[e]=null}}]),i}();function a(t){return function(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}(t.className)}},
vendor: 8,631 bytes, line 35551
35551"./js/foundation.core.utils.js":function(t,e,n){"use strict";n.r(e),n.d(e,"rtl",function(){return o}),n.d(e,"GetYoDigits",function(){return s}),n.d(e,"RegExpEscape",function(){return a}),n.d(e,"transitionend",function(){return r}),n.d(e,"onLoad",function(){return u}),n.d(e,"ignoreMousedisappear",function(){return c});var i=n("jquery"),l=n.n(i);function o(){return"rtl"===l()("html").attr("dir")}function s(){for(var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:6,e=1<arguments.length?arguments[1]:void 0,n="",i="0123456789abcdefghijklmnopqrstuvwxyz",o=i.length,s=0;s<t;s++)n+=i[Math.floor(Math.random()*o)];return e?"".concat(n,"-").concat(e):n}function a(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}function r(t){var e,n={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend"},i=document.createElement("div");for(var o in n)void 0!==i.style[o]&&(e=n[o]);return e||(setTimeout(function(){t.triggerHandler("transitionend",[t])},1),"transitionend")}function u(t,e){function n(){return t.triggerHandler(o)}var i="complete"===document.readyState,o=(i?"_didLoad":"load")+".zf.util.onLoad";return t&&(e&&t.one(o,e),i?setTimeout(n):l()(window).one("load",n)),o}function c(s){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=t.ignoreLeaveWindow,a=void 0!==e&&e,n=t.ignoreReappear,r=void 0!==n&&n;return function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var o=s.bind.apply(s,[this,e].concat(n));if(null!==e.relatedTarget)return o();setTimeout(function(){if(!a&&document.hasFocus&&!document.hasFocus())return o();r||l()(document).one("mouseenter",function(t){l()(e.currentTarget).has(t.target).length||(e.relatedTarget=t.target,o())})},0)}}},"./js/foundation.drilldown.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Drilldown",function(){return m});var i=n("jquery"),a=n.n(i),r=n("./js/foundation.util.keyboard.js"),o=n("./js/foundation.util.nest.js"),l=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.box.js"),u=n("./js/foundation.core.plugin.js");function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function d(t,e){return!e||"object"!==c(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var m=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),d(this,f(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(n,u["Plugin"]),function(t,e,n){e&&h(t.prototype,e),n&&h(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=a.a.extend({},n.defaults,this.$element.data(),e),this.className="Drilldown",this._init(),r.Keyboard.register("Drilldown",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"previous",ESCAPE:"close",TAB:"down",SHIFT_TAB:"up"})}},{key:"_init",value:function(){o.Nest.Feather(this.$element,"drilldown"),this.options.autoApplyClass&&this.$element.addClass("drilldown"),this.$element.attr({role:"tree","aria-multiselectable":!1}),this.$submenuAnchors=this.$element.find("li.is-drilldown-submenu-parent").children("a"),this.$submenus=this.$submenuAnchors.parent("li").children("[data-submenu]").attr("role","group"),this.$menuItems=this.$element.find("li").not(".js-drilldown-back").attr("role","treeitem").find("a"),this.$currentMenu=this.$element,this.$element.attr("data-mutate",this.$element.attr("data-drilldown")||Object(l.GetYoDigits)(6,"drilldown")),this._prepareMenu(),this._registerEvents(),this._keyboardEvents()}},{key:"_prepareMenu",value:function(){var n=this;this.$submenuAnchors.each(function(){var t=a()(this),e=t.parent();n.options.parentLink&&t.clone().prependTo(e.children("[data-submenu]")).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="none"></li>'),t.data("savedHref",t.attr("href")).removeAttr("href").attr("tabindex",0),t.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"group"}),n._events(t)}),this.$submenus.each(function(){var t=a()(this);if(!t.find(".js-drilldown-back").length)switch(n.options.backButtonPosition){case"bottom":t.append(n.options.backButton);break;case"top":t.prepend(n.options.backButton);break;default:console.error("Unsupported backButtonPosition value '"+n.options.backButtonPosition+"'")}n._back(t)}),this.$submenus.addClass("invisible"),this.options.autoHeight||this.$submenus.addClass("drilldown-submenu-cover-previous"),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=a()(this.options.wrapper).addClass("is-drilldown"),this.options.animateHeight&&this.$wrapper.addClass("animate-height"),this.$element.wrap(this.$wrapper)),this.$wrapper=this.$element.parent(),this.$wrapper.css(this._getMaxDims())}},{key:"_resize",value:function(){this.$wrapper.css({"max-width":"none","min-height":"none"}),this.$wrapper.css(this._getMaxDims())}},{key:"_events",value:function(n){var i=this;n.off("click.zf.drilldown").on("click.zf.drilldown",function(t){if(a()(t.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&t.preventDefault(),i._show(n.parent("li")),i.options.closeOnClick){var e=a()("body");e.off(".zf.drilldown").on("click.zf.drilldown",function(t){t.target===i.$element[0]||a.a.contains(i.$element[0],t.target)||(t.preventDefault(),i._hideAll(),e.off(".zf.drilldown"))})}})}},{key:"_registerEvents",value:function(){this.options.scrollTop&&(this._bindHandler=this._scrollTop.bind(this),this.$element.on("open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown",this._bindHandler)),this.$element.on("mutateme.zf.trigger",this._resize.bind(this))}},{key:"_scrollTop",value:function(){var t=this,e=""!=t.options.scrollTopElement?a()(t.options.scrollTopElement):t.$element,n=parseInt(e.offset().top+t.options.scrollTopOffset,10);a()("html, body").stop(!0).animate({scrollTop:n},t.options.animationDuration,t.options.animationEasing,function(){this===a()("html")[0]&&t.$element.trigger("scrollme.zf.drilldown")})}},{key:"_keyboardEvents",value:function(){var t=this;this.$menuItems.add(this.$element.find(".js-drilldown-back > a, .is-submenu-parent-item > a")).on("keydown.zf.drilldown",function(e){var n,i,o=a()(this),s=o.parent("li").parent("ul").children("li").children("a");s.each(function(t){if(a()(this).is(o))return n=s.eq(Math.max(0,t-1)),void(i=s.eq(Math.min(t+1,s.length-1)))}),r.Keyboard.handleKey(e,"Drilldown",{next:function(){if(o.is(t.$submenuAnchors))return t._show(o.parent("li")),o.parent("li").one(Object(l.transitionend)(o),function(){o.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()}),!0},previous:function(){return t._hide(o.parent("li").parent("ul")),o.parent("li").parent("ul").one(Object(l.transitionend)(o),function(){setTimeout(function(){o.parent("li").parent("ul").parent("li").children("a").first().focus()},1)}),!0},up:function(){return n.focus(),!o.is(t.$element.find("> li:first-child > a"))},down:function(){return i.focus(),!o.is(t.$element.find("> li:last-child > a"))},close:function(){o.is(t.$element.find("> li > a"))||(t._hide(o.parent().parent()),o.parent().parent().siblings("a").focus())},open:function(){return(!t.options.parentLink||!o.attr("href"))&&(o.is(t.$menuItems)?o.is(t.$submenuAnchors)?(t._show(o.parent("li")),o.parent("li").one(Object(l.transitionend)(o),function(){o.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()}),!0):void 0:(t._hide(o.parent("li").parent("ul")),o.parent("li").parent("ul").one(Object(l.transitionend)(o),function(){setTimeout(function(){o.parent("li").parent("ul").parent("li").children("a").first().focus()},1)}),!0))},handled:function(t){t&&e.preventDefault()}})})}},{key:"_hideAll",value:function(){var t=this,e=this.$element.find(".
35551is-drilldown-submenu.is-active");if(e.addClass("is-closing"),this.options.autoHeight){var n=e.parent().closest("ul").data("calcHeight");this.$wrapper.css({height:n})}this.$element.trigger("close.zf.drilldown"),e.one(Object(l.transitionend)(e),function(){e.removeClass("is-active is-closing"),t.$element.trigger("closed.zf.drilldown")})}},{key:"_back",value:function(n){var i=this;n.off("click.zf.drilldown"),n.children(".js-drilldown-back").on("click.zf.drilldown",function(t){i._hide(n);var e=n.parent("li").parent("ul").parent("li");e.length&&i._show(e)})}},{key:"_menuLinkEvents",value:function(){var e=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",function(t){setTimeout(function(){e._hideAll()},0)})}},{key:"_setShowSubMenuClasses",value:function(t,e){t.addClass("is-active").removeClass("invisible").attr("aria-hidden",!1),t.parent("li").attr("aria-expanded",!0),!0===e&&this.$element.trigger("open.zf.drilldown",[t])}},{key:"_setHideSubMenuClasses",value:function(t,e){t.removeClass("is-active").addClass("invisible").attr("aria-hidden",!0),t.parent("li").attr("aria-expanded",!1),!0===e&&t.trigger("hide.zf.drilldown",[t])}},{key:"_showMenu",value:function(n,i){var o=this;if(this.$element.find('li[aria-expanded="true"] > ul[data-submenu]').each(function(t){o._setHideSubMenuClasses(a()(this))}),(this.$currentMenu=n).is("[data-drilldown]"))return!0===i&&n.find('li[role="treeitem"] > a').first().focus(),void(this.options.autoHeight&&this.$wrapper.css("height",n.data("calcHeight")));var s=n.children().first().parentsUntil("[data-drilldown]","[data-submenu]");s.each(function(t){0===t&&o.options.autoHeight&&o.$wrapper.css("height",a()(this).data("calcHeight"));var e=t==s.length-1;!0==e&&a()(this).one(Object(l.transitionend)(a()(this)),function(){!0===i&&n.find('li[role="treeitem"] > a').first().focus()}),o._setShowSubMenuClasses(a()(this),e)})}},{key:"_show",value:function(t){var e=t.children("[data-submenu]");t.attr("aria-expanded",!0),(this.$currentMenu=e).addClass("is-active").removeClass("invisible").attr("aria-hidden",!1),this.options.autoHeight&&this.$wrapper.css({height:e.data("calcHeight")}),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){this.options.autoHeight&&this.$wrapper.css({height:t.parent().closest("ul").data("calcHeight")});t.parent("li").attr("aria-expanded",!1),t.attr("aria-hidden",!0),t.addClass("is-closing").one(Object(l.transitionend)(t),function(){t.removeClass("is-active is-closing"),t.blur().addClass("invisible")}),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var e=0,t={},n=this;return this.$submenus.add(this.$element).each(function(){a()(this).children("li").length;var t=s.Box.GetDimensions(this).height;e=e<t?t:e,n.options.autoHeight&&a()(this).data("calcHeight",t)}),this.options.autoHeight?t.height=this.$currentMenu.data("calcHeight"):t["min-height"]="".concat(e,"px"),t["max-width"]="".concat(this.$element[0].getBoundingClientRect().width,"px"),t}},{key:"_destroy",value:function(){this.options.scrollTop&&this.$element.off(".zf.drilldown",this._bindHandler),this._hideAll(),this.$element.off("mutateme.zf.trigger"),o.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role"),this.$submenuAnchors.each(function(){a()(this).off(".zf.drilldown")}),this.$element.find("[data-is-parent-link]").detach(),this.$submenus.removeClass("drilldown-submenu-cover-previous invisible"),this.$element.find("a").each(function(){var t=a()(this);t.removeAttr("tabindex"),t.data("savedHref")&&t.attr("href",t.data("savedHref")).removeData("savedHref")})}}]),n}();m.defaults={autoApplyClass:!0,backButton:'<li class="js-drilldown-back"><a tabindex="0">Back</a></li>',backButtonPosition:"top",wrapper:"<div></div>",parentLink:!1,closeOnClick:!1,autoHeight:!1,animateHeight:!1,scrollTop:!1,scrollTopElement:"",scrollTopOffset:0,animationDuration:500,animationEasing:"swing"}},
vendor: 6,113 bytes, line 35551
35551"./js/foundation.dropdown.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Dropdown",function(){return g});var i=n("jquery"),o=n.n(i),s=n("./js/foundation.util.keyboard.js"),a=n("./js/foundation.core.utils.js"),r=n("./js/foundation.positionable.js"),l=n("./js/foundation.util.triggers.js"),u=n("./js/foundation.util.touch.js");function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function d(t,e){return!e||"object"!==c(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function f(t,e,n){return(f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=p(t)););return t}(t,e);if(i){var o=Object.getOwnPropertyDescriptor(i,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var g=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),d(this,p(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(n,r["Positionable"]),function(t,e,n){e&&h(t.prototype,e),n&&h(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=o.a.extend({},n.defaults,this.$element.data(),e),this.className="Dropdown",u.Touch.init(o.a),l.Triggers.init(o.a),this._init(),s.Keyboard.register("Dropdown",{ENTER:"toggle",SPACE:"toggle",ESCAPE:"close"})}},{key:"_init",value:function(){var t=this.$element.attr("id");this.$anchors=o()('[data-toggle="'.concat(t,'"]')).length?o()('[data-toggle="'.concat(t,'"]')):o()('[data-open="'.concat(t,'"]')),this.$anchors.attr({"aria-controls":t,"data-is-focus":!1,"data-yeti-box":t,"aria-haspopup":!0,"aria-expanded":!1}),this._setCurrentAnchor(this.$anchors.first()),this.options.parentClass?this.$parent=this.$element.parents("."+this.options.parentClass):this.$parent=null,void 0===this.$element.attr("aria-labelledby")&&(void 0===this.$currentAnchor.attr("id")&&this.$currentAnchor.attr("id",Object(a.GetYoDigits)(6,"dd-anchor")),this.$element.attr("aria-labelledby",this.$currentAnchor.attr("id"))),this.$element.attr({"aria-hidden":"true","data-yeti-box":t,"data-resize":t}),f(p(n.prototype),"_init",this).call(this),this._events()}},{key:"_getDefaultPosition",value:function(){var t=this.$element[0].className.match(/(top|left|right|bottom)/g);return t?t[0]:"bottom"}},{key:"_getDefaultAlignment",value:function(){var t=/float-(\S+)/.exec(this.$currentAnchor.attr("class"));return t?t[1]:f(p(n.prototype),"_getDefaultAlignment",this).call(this)}},{key:"_setPosition",value:function(){this.$element.removeClass("has-position-".concat(this.position," has-alignment-").concat(this.alignment)),f(p(n.prototype),"_setPosition",this).call(this,this.$currentAnchor,this.$element,this.$parent),this.$element.addClass("has-position-".concat(this.position," has-alignment-").concat(this.alignment))}},{key:"_setCurrentAnchor",value:function(t){this.$currentAnchor=o()(t)}},{key:"_events",value:function(){var n=this,e="ontouchstart"in window||void 0!==window.ontouchstart;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":this._setPosition.bind(this)}),this.$anchors.off("click.zf.trigger").on("click.zf.trigger",function(t){n._setCurrentAnchor(this),(!1===n.options.forceFollow||e&&n.options.hover&&!1===n.$element.hasClass("is-open"))&&t.preventDefault()}),this.options.hover&&(this.$anchors.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){n._setCurrentAnchor(this);var t=o()("body").data();void 0!==t.whatinput&&"mouse"!==t.whatinput||(clearTimeout(n.timeout),n.timeout=setTimeout(function(){n.open(),n.$anchors.data("hover",!0)},n.options.hoverDelay))}).on("mouseleave.zf.dropdown",Object(a.ignoreMousedisappear)(function(){clearTimeout(n.timeout),n.timeout=setTimeout(function(){n.close(),n.$anchors.data("hover",!1)},n.options.hoverDelay)})),this.options.hoverPane&&this.$element.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){clearTimeout(n.timeout)}).on("mouseleave.zf.dropdown",Object(a.ignoreMousedisappear)(function(){clearTimeout(n.timeout),n.timeout=setTimeout(function(){n.close(),n.$anchors.data("hover",!1)},n.options.hoverDelay)}))),this.$anchors.add(this.$element).on("keydown.zf.dropdown",function(t){var e=o()(this);s.Keyboard.findFocusable(n.$element);s.Keyboard.handleKey(t,"Dropdown",{open:function(){e.is(n.$anchors)&&!e.is("input, textarea")&&(n.open(),n.$element.attr("tabindex",-1).focus(),t.preventDefault())},close:function(){n.close(),n.$anchors.focus()}})})}},{key:"_addBodyHandler",value:function(){var e=o()(document.body).not(this.$element),n=this;e.off("click.zf.dropdown tap.zf.dropdown").on("click.zf.dropdown tap.zf.dropdown",function(t){n.$anchors.is(t.target)||n.$anchors.find(t.target).length||n.$element.is(t.target)||n.$element.find(t.target).length||(n.close(),e.off("click.zf.dropdown tap.zf.dropdown"))})}},{key:"open",value:function(){if(this.$element.trigger("closeme.zf.dropdown",this.$element.attr("id")),this.$anchors.addClass("hover").attr({"aria-expanded":!0}),this.$element.addClass("is-opening"),this._setPosition(),this.$element.removeClass("is-opening").addClass("is-open").attr({"aria-hidden":!1}
35551),this.options.autoFocus){var t=s.Keyboard.findFocusable(this.$element);t.length&&t.eq(0).focus()}this.options.closeOnClick&&this._addBodyHandler(),this.options.trapFocus&&s.Keyboard.trapFocus(this.$element),this.$element.trigger("show.zf.dropdown",[this.$element])}},{key:"close",value:function(){if(!this.$element.hasClass("is-open"))return!1;this.$element.removeClass("is-open").attr({"aria-hidden":!0}),this.$anchors.removeClass("hover").attr("aria-expanded",!1),this.$element.trigger("hide.zf.dropdown",[this.$element]),this.options.trapFocus&&s.Keyboard.releaseFocus(this.$element)}},{key:"toggle",value:function(){if(this.$element.hasClass("is-open")){if(this.$anchors.data("hover"))return;this.close()}else this.open()}},{key:"_destroy",value:function(){this.$element.off(".zf.trigger").hide(),this.$anchors.off(".zf.dropdown"),o()(document.body).off("click.zf.dropdown tap.zf.dropdown")}}]),n}();g.defaults={parentClass:null,hoverDelay:250,hover:!1,hoverPane:!1,vOffset:0,hOffset:0,position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!0,trapFocus:!1,autoFocus:!1,closeOnClick:!1,forceFollow:!0}},
35551"./js/foundation.dropdownMenu.js":function(t,e,n){"use strict";n.r(e),n.d(e,"DropdownMenu",function(){return g});var i=n("jquery"),d=n.n(i),o=n("./js/foundation.core.plugin.js"),r=n("./js/foundation.core.utils.js"),f=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.util.nest.js"),a=n("./js/foundation.util.box.js"),l=n("./js/foundation.util.touch.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var g=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,p(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(n,o["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=d.a.extend({},n.defaults,this.$element.data(),e),this.className="DropdownMenu",l.Touch.init(d.a),this._init(),f.Keyboard.register("DropdownMenu",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"previous",ESCAPE:"close"})}},{key:"_init",value:function(){s.Nest.Feather(this.$element,"dropdown");var t=this.$element.find("li.is-dropdown-submenu-parent");this.$element.children(".is-dropdown-submenu-parent").children(".is-dropdown-submenu").addClass("first-sub"),this.$menuItems=this.$element.find('li[role="none"]'),this.$tabs=this.$element.children('li[role="none"]'),this.$tabs.find("ul.is-dropdown-submenu").addClass(this.options.verticalClass),"auto"===this.options.alignment?this.$element.hasClass(this.options.rightClass)||Object(r.rtl)()||this.$element.parents(".top-bar-right").is("*")?(this.options.alignment="right",t.addClass("opens-left")):(this.options.alignment="left",t.addClass("opens-right")):"right"===this.options.alignment?t.addClass("opens-left"):t.addClass("opens-right"),this.changed=!1,this._events()}},{key:"_isVertical",value:function(){return"block"===this.$tabs.css("display")||"column"===this.$element.css("flex-direction")}},{key:"_isRtl",value:function(){return this.$element.hasClass("align-right")||Object(r.rtl)()&&!this.$element.hasClass("align-left")}},{key:"_events",value:function(){var h=this,s="ontouchstart"in window||void 0!==window.ontouchstart,a="is-dropdown-submenu-parent";(this.options.clickOpen||s)&&this.$menuItems.on("click.zf.dropdownMenu touchstart.zf.dropdownMenu",function(t){var e=d()(t.target).parentsUntil("ul",".".concat(a)),n=e.hasClass(a),i="true"===e.attr("data-is-click"),o=e.children(".is-dropdown-submenu");if(n)if(i){if(!h.options.closeOnClick||!h.options.clickOpen&&!s||h.options.forceFollow&&s)return;t.stopImmediatePropagation(),t.preventDefault(),h._hide(e)}else t.stopImmediatePropagation(),t.preventDefault(),h._show(o),e.add(e.parentsUntil(h.$element,".".concat(a))).attr("data-is-click",!0)}),h.options.closeOnClickInside&&this.$menuItems.on("click.zf.dropdownMenu",function(t){d()(this).hasClass(a)||h._hide()}),this.options.disableHover||this.$menuItems.on("mouseenter.zf.dropdownMenu",function(t){var e=d()(this);e.hasClass(a)&&(clearTimeout(e.data("_delay")),e.data("_delay",setTimeout(function(){h._show(e.children(".is-dropdown-submenu"))},h.options.hoverDelay)))}).on("mouseleave.zf.dropdownMenu",Object(r.ignoreMousedisappear)(function(t){var e=d()(this);if(e.hasClass(a)&&h.options.autoclose){if("true"===e.attr("data-is-click")&&h.options.clickOpen)return!1;clearTimeout(e.data("_delay")),e.data("_delay",setTimeout(function(){h._hide(e)},h.options.closingTime))}})),this.$menuItems.on("keydown.zf.dropdownMenu",function(e){var n,i,o=d()(e.target).parentsUntil("ul",'[role="none"]'),t=-1<h.$tabs.index(o),s=t?h.$tabs:o.siblings("li").add(o);s.each(function(t){if(d()(this).is(o))return n=s.eq(t-1),void(i=s.eq(t+1))});function a(){i.children("a:first").focus(),e.preventDefault()}function r(){n.children("a:first").focus(),e.preventDefault()}function l(){var t=o.children("ul.is-dropdown-submenu");t.length&&(h._show(t),o.find("li > a:first").focus(),e.preventDefault())}function u(){var t=o.parent("ul").parent("li");t.children("a:first").focus(),h._hide(t),e.preventDefault()}var c={open:l,close:function(){h._hide(h.$element),h.$menuItems.eq(0).children("a").focus(),e.preventDefault()}};t?h._isVertical()?h._isRtl()?d.a.extend(c,{down:a,up:r,next:u,previous:l}):d.a.extend(c,{down:a,up:r,next:l,previous:u}):h._isRtl()?d.a.extend(c,{next:r,previous:a,down:l,up:u}):d.a.extend(c,{next:a,previous:r,down:l,up:u}):h._isRtl()?d.a.extend(c,{next:u,previous:l,down:a,up:r}):d.a.extend(c,{next:l,previous:u,down:a,up:r}),f.Keyboard.handleKey(e,"DropdownMenu",c)})}},{key:"_addBodyHandler",value:function(){var e=this,t=d()(document.body);this._removeBodyHandler(),t.on("click.zf.dropdownMenu tap.zf.dropdownMenu",function(t){!d()(t.target).closest(e.$element).length&&(e._hide(),e._removeBodyHandler())})}},{key:"_removeBodyHandler",value:function(){d()(document.body).off("click.zf.dropdownMenu tap.zf.dropdownMenu")}},{key:"_show",value:function(n){var t=this.$tabs.index(this.$tabs.filter(function(t,e){return 0<d()(e).find(n).length})),e=n.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(e,t),n.css("visibility","hidden").addClass("js-dropdown-active").parent("li.is-dropdown-submenu-parent").addClass("is-active");var i=a.Box.ImNotTouchingYou(n,null,!0);if(!i){var o="left"===this.options.alignment?"-right":"-left",s=n.parent(".is-dropdown-submenu-parent");s.removeClass("opens".concat(o)).addClass("opens-".concat(this.options.alignment)),(i=a.Box.ImNotTouchingYou(n,null,!0))||s.removeClass("opens-".concat(this.options.alignment)).addClass("opens-inner"),this.changed=!0}n.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownMenu",[n])}},{key:"_hide",value:function(t,n){var e;if((e=t&&t.length?t:void 0!==n?this.$tabs.not(function(t,e){return t===n}
35551):this.$element).hasClass("is-active")||0<e.find(".is-active").length){var i=e.find("li.is-active");if(i.add(e).attr({"data-is-click":!1}).removeClass("is-active"),e.find("ul.js-dropdown-active").removeClass("js-dropdown-active"),this.changed||e.find("opens-inner").length){var o="left"===this.options.alignment?"right":"left";e.find("li.is-dropdown-submenu-parent").add(e).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(o)),this.changed=!1}clearTimeout(i.data("_delay")),this._removeBodyHandler(),this.$element.trigger("hide.zf.dropdownMenu",[e])}}},{key:"_destroy",value:function(){this.$menuItems.off(".zf.dropdownMenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),d()(document.body).off(".zf.dropdownMenu"),s.Nest.Burn(this.$element,"dropdown")}}]),n}();g.defaults={disableHover:!1,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"auto",closeOnClick:!0,closeOnClickInside:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0}},
vendor: 5,412 bytes, line 35551
35551"./js/foundation.equalizer.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Equalizer",function(){return p});var i=n("jquery"),h=n.n(i),o=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.imageLoader.js"),a=n("./js/foundation.core.utils.js"),r=n("./js/foundation.core.plugin.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),c(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,r["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=h.a.extend({},n.defaults,this.$element.data(),e),this.className="Equalizer",this._init()}},{key:"_init",value:function(){var t=this.$element.attr("data-equalizer")||"",e=this.$element.find('[data-equalizer-watch="'.concat(t,'"]'));o.MediaQuery._init(),this.$watched=e.length?e:this.$element.find("[data-equalizer-watch]"),this.$element.attr("data-resize",t||Object(a.GetYoDigits)(6,"eq")),this.$element.attr("data-mutate",t||Object(a.GetYoDigits)(6,"eq")),this.hasNested=0<this.$element.find("[data-equalizer]").length,this.isNested=0<this.$element.parentsUntil(document.body,"[data-equalizer]").length,this.isOn=!1,this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var n,i=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),h()(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&!1===n||void 0===n)&&(i.length?Object(s.onImagesLoaded)(i,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off({".zf.equalizer":this._bindHandler.onPostEqualizedBound,"resizeme.zf.trigger":this._bindHandler.onResizeMeBound,"mutateme.zf.trigger":this._bindHandler.onResizeMeBound})}},{key:"_onResizeMe",value:function(t){this._reflow()}},{key:"_onPostEqualized",value:function(t){t.target!==this.$element[0]&&this._reflow()}},{key:"_events",value:function(){this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",this._bindHandler.onPostEqualizedBound):(this.$element.on("resizeme.zf.trigger",this._bindHandler.onResizeMeBound),this.$element.on("mutateme.zf.trigger",this._bindHandler.onResizeMeBound)),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!o.MediaQuery.is(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){if(!this.options.equalizeOnStack&&this._isStacked())return this.$watched.css("height","auto"),!1;this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this))}},{key:"_isStacked",value:function(){return!this.$watched[0]||!this.$watched[1]||this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top}},{key:"getHeights",value:function(t){for(var e=[],n=0,i=this.$watched.length;n<i;n++)this.$watched[n].style.height="auto",e.push(this.$watched[n].offsetHeight);t(e)}},{key:"getHeightsByRow",value:function(t){var e=this.$watched.length?this.$watched.first().offset().top:0,n=[],i=0;n[i]=[];for(var o=0,s=this.$watched.length;o<s;o++){this.$watched[o].style.height="auto";var a=h()(this.$watched[o]).offset().top;a!=e&&(n[++i]=[],e=a),n[i].push([this.$watched[o],this.$watched[o].offsetHeight])}for(var r=0,l=n.length;r<l;r++){var u=h()(n[r]).map(function(){return this[1]}).get(),c=Math.max.apply(null,u);n[r].push(c)}t(n)}},{key:"applyHeight",value:function(t){var e=Math.max.apply(null,t);this.$element.trigger("preequalized.zf.equalizer"),this.$watched.css("height",e),this.$element.trigger("postequalized.zf.equalizer")}},{key:"applyHeightByRow",value:function(t){this.$element.trigger("preequalized.zf.equalizer");for(var e=0,n=t.length;e<n;e++){var i=t[e].length,o=t[e][i-1];if(i<=2)h()(t[e][0][0]).css({height:"auto"});else{this.$element.trigger("preequalizedrow.zf.equalizer");for(var s=0,a=i-1;s<a;s++)h()(t[e][s][0]).css({height:o});this.$element.trigger("postequalizedrow.zf.equalizer")}}this.$element.trigger("postequalized.zf.equalizer")}},{key:"_destroy",value:function(){this._pauseEvents(),this.$watched.css("height","auto")}}]),n}();p.defaults={equalizeOnStack:!1,equalizeByRow:!1,equalizeOn:""}},
35551"./js/foundation.interchange.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Interchange",function(){return p});var i=n("jquery"),o=n.n(i),s=n("./js/foundation.util.mediaQuery.js"),a=n("./js/foundation.core.plugin.js"),l=n("./js/foundation.core.utils.js"),u=n("./js/foundation.util.triggers.js");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function r(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),h(this,d(r).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(r,a["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(r,[{key:"_setup",value:function(t,e){this.$element=t,this.options=o.a.extend({},r.defaults,this.$element.data(),e),this.rules=[],this.currentPath="",this.className="Interchange",u.Triggers.init(o.a),this._init(),this._events()}},{key:"_init",value:function(){s.MediaQuery._init();var t=this.$element[0].id||Object(l.GetYoDigits)(6,"interchange");this.$element.attr({"data-resize":t,id:t}),this._parseOptions(),this._addBreakpoints(),this._generateRules(),this._reflow()}},{key:"_events",value:function(){var t=this;this.$element.off("resizeme.zf.trigger").on("resizeme.zf.trigger",function(){return t._reflow()})}},{key:"_reflow",value:function(){var t;for(var e in this.rules)if(this.rules.hasOwnProperty(e)){var n=this.rules[e];window.matchMedia(n.query).matches&&(t=n)}t&&this.replace(t.path)}},{key:"_parseOptions",value:function(){void 0===this.options.type?this.options.type="auto":-1===["auto","src","background","html"].indexOf(this.options.type)&&(console.log('Warning: invalid value "'.concat(this.options.type,'" for Interchange option "type"')),this.options.type="auto")}},{key:"_addBreakpoints",value:function(){for(var t in s.MediaQuery.queries)if(s.MediaQuery.queries.hasOwnProperty(t)){var e=s.MediaQuery.queries[t];r.SPECIAL_QUERIES[e.name]=e.value}}},{key:"_generateRules",value:function(t){var e,n=[];for(var i in e="string"==typeof(e=this.options.rules?this.options.rules:this.$element.data("interchange"))?e.match(/\[.*?, .*?\]/g):e)if(e.hasOwnProperty(i)){var o=e[i].slice(1,-1).split(", "),s=o.slice(0,-1).join(""),a=o[o.length-1];r.SPECIAL_QUERIES[a]&&(a=r.SPECIAL_QUERIES[a]),n.push({path:s,query:a})}this.rules=n}},{key:"replace",value:function(e){var n=this;if(this.currentPath!==e){var i="replaced.zf.interchange",t=this.options.type;"auto"===t&&(t="IMG"===this.$element[0].nodeName?"src":e.match(/\.(gif|jpe?g|png|svg|tiff)([?#].*)?/i)?"background":"html"),"src"===t?this.$element.attr("src",e).on("load",function(){n.currentPath=e}).trigger(i):"background"===t?(e=e.replace(/\(/g,"%28").replace(/\)/g,"%29"),this.$element.css({"background-image":"url("+e+")"}).trigger(i)):"html"===t&&o.a.get(e,function(t){n.$element.html(t).trigger(i),o()(t).foundation(),n.currentPath=e})}}},{key:"_destroy",value:function(){this.$element.off("resizeme.zf.trigger")}}]),r}();p.defaults={rules:null,type:"auto"},p.SPECIAL_QUERIES={landscape:"screen and (orientation: landscape)",portrait:"screen and (orientation: portrait)",retina:"only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)"}},
35551"./js/foundation.magellan.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Magellan",function(){return p});var i=n("jquery"),c=n.n(i),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.smoothScroll.js"),r=n("./js/foundation.util.triggers.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,o["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=c.a.extend({},n.defaults,this.$element.data(),e),this.className="Magellan",r.Triggers.init(c.a),this._init(),this.calcPoints()}},{key:"_init",value:function(){var t=this.$element[0].id||Object(s.GetYoDigits)(6,"magellan");this.$targets=c()("[data-magellan-target]"),this.$links=this.$element.find("a"),this.$element.attr({"data-resize":t,"data-scroll":t,id:t}),this.$active=c()(),this.scrollPos=parseInt(window.pageYOffset,10),this._events()}},{key:"calcPoints",value:function(){var n=this,t=document.body,e=document.documentElement;this.points=[],this.winHeight=Math.round(Math.max(window.innerHeight,e.clientHeight)),this.docHeight=Math.round(Math.max(t.scrollHeight,t.offsetHeight,e.clientHeight,e.scrollHeight,e.offsetHeight)),this.$targets.each(function(){var t=c()(this),e=Math.round(t.offset().top-n.options.threshold);t.targetPoint=e,n.points.push(e)})}},{key:"_events",value:function(){var n=this;c()(window).one("load",function(){n.options.deepLinking&&location.hash&&n.scrollToLoc(location.hash),n.calcPoints(),n._updateActive()}),n.onLoadListener=Object(s.onLoad)(c()(window),function(){n.$element.on({"resizeme.zf.trigger":n.reflow.bind(n),"scrollme.zf.trigger":n._updateActive.bind(n)}).on("click.zf.magellan",'a[href^="#"]',function(t){t.preventDefault();var e=this.getAttribute("href");n.scrollToLoc(e)})}),this._deepLinkScroll=function(t){n.options.deepLinking&&n.scrollToLoc(window.location.hash)},c()(window).on("hashchange",this._deepLinkScroll)}},{key:"scrollToLoc",value:function(t){this._inTransition=!0;var e=this,n={animationEasing:this.options.animationEasing,animationDuration:this.options.animationDuration,threshold:this.options.threshold,offset:this.options.offset};a.SmoothScroll.scrollToLoc(t,n,function(){e._inTransition=!1})}},{key:"reflow",value:function(){this.calcPoints(),this._updateActive()}},{key:"_updateActive",value:function(){var n=this;if(!this._inTransition){var t,i=parseInt(window.pageYOffset,10),o=this.scrollPos>i;if((this.scrollPos=i)<this.points[0]);else if(i+this.winHeight===this.docHeight)t=this.points.length-1;else{var e=this.points.filter(function(t,e){return t-n.options.offset-(o?n.options.threshold:0)<=i});t=e.length?e.length-1:0}var s=this.$active,a="";void 0!==t?(this.$active=this.$links.filter('[href="#'+this.$targets.eq(t).data("magellan-target")+'"]'),this.$active.length&&(a=this.$active[0].getAttribute("href"))):this.$active=c()();var r=!(!this.$active.length&&!s.length||this.$active.is(s)),l=a!==window.location.hash;if(r&&(s.removeClass(this.options.activeClass),this.$active.addClass(this.options.activeClass)),this.options.deepLinking&&l)if(window.history.pushState){var u=a||window.location.pathname+window.location.search;this.options.updateHistory?window.history.pushState({},"",u):window.history.replaceState({},"",u)}else window.location.hash=a;r&&this.$element.trigger("update.zf.magellan",[this.$active])}}},{key:"_destroy",value:function(){if(this.$element.off(".zf.trigger .zf.magellan").find(".".concat(this.options.activeClass)).removeClass(this.options.activeClass),this.options.deepLinking){var t=this.$active[0].getAttribute("href");window.location.hash.replace(t,"")}c()(window).off("hashchange",this._deepLinkScroll),this.onLoadListener&&c()(window).off(this.onLoadListener)}}]),n}();p.defaults={animationDuration:500,animationEasing:"linear",threshold:50,activeClass:"is-active",deepLinking:!1,updateHistory:!1,offset:0}},
35551"./js/foundation.offcanvas.js":function(t,e,n){"use strict";n.r(e),n.d(e,"OffCanvas",function(){return m});var i=n("jquery"),s=n.n(i),o=n("./js/foundation.core.plugin.js"),a=n("./js/foundation.core.utils.js"),r=n("./js/foundation.util.keyboard.js"),l=n("./js/foundation.util.mediaQuery.js"),u=n("./js/foundation.util.triggers.js");function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function d(t,e){return!e||"object"!==c(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var m=function(){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),d(this,f(i).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(i,o["Plugin"]),function(t,e,n){e&&h(t.prototype,e),n&&h(t,n)}(i,[{key:"_setup",value:function(t,e){var n=this;this.className="OffCanvas",this.$element=t,this.options=s.a.extend({},i.defaults,this.$element.data(),e),this.contentClasses={base:[],reveal:[]},this.$lastTrigger=s()(),this.$triggers=s()(),this.position="left",this.$content=s()(),this.nested=!!this.options.nested,this.$sticky=s()(),this.isInCanvas=!1,s()(["push","overlap"]).each(function(t,e){n.contentClasses.base.push("has-transition-"+e)}),s()(["left","right","top","bottom"]).each(function(t,e){n.contentClasses.base.push("has-position-"+e),n.contentClasses.reveal.push("has-reveal-"+e)}),u.Triggers.init(s.a),l.MediaQuery._init(),this._init(),this._events(),r.Keyboard.register("OffCanvas",{ESCAPE:"close"})}},{key:"_init",value:function(){var t=this.$element.attr("id");if(this.$element.attr("aria-hidden","true"),this.options.contentId?this.$content=s()("#"+this.options.contentId):this.$element.siblings("[data-off-canvas-content]").length?this.$content=this.$element.siblings("[data-off-canvas-content]").first():this.$content=this.$element.closest("[data-off-canvas-content]").first(),this.options.contentId?this.options.contentId&&null===this.options.nested&&console.warn("Remember to use the nested option if using the content ID option!"):this.nested=0===this.$element.siblings("[data-off-canvas-content]").length,!0===this.nested&&(this.options.transition="overlap",this.$element.removeClass("is-transition-push")),this.$element.addClass("is-transition-".concat(this.options.transition," is-closed")),this.$triggers=s()(document).find('[data-open="'+t+'"], [data-close="'+t+'"], [data-toggle="'+t+'"]').attr("aria-expanded","false").attr("aria-controls",t),this.position=this.$element.is(".position-left, .position-top, .position-right, .position-bottom")?this.$element.attr("class").match(/position\-(left|top|right|bottom)/)[1]:this.position,!0===this.options.contentOverlay){var e=document.createElement("div"),n="fixed"===s()(this.$element).css("position")?"is-overlay-fixed":"is-overlay-absolute";e.setAttribute("class","js-off-canvas-overlay "+n),this.$overlay=s()(e),"is-overlay-fixed"==n?s()(this.$overlay).insertAfter(this.$element):this.$content.append(this.$overlay)}var i=new RegExp(Object(a.RegExpEscape)(this.options.revealClass)+"([^\\s]+)","g").exec(this.$element[0].className);i&&(this.options.isRevealed=!0,this.options.revealOn=this.options.revealOn||i[1]),!0===this.options.isRevealed&&this.options.revealOn&&(this.$element.first().addClass("".concat(this.options.revealClass).concat(this.options.revealOn)),this._setMQChecker()),this.options.transitionTime&&this.$element.css("transition-duration",this.options.transitionTime),this.$sticky=this.$content.find("[data-off-canvas-sticky]"),0<this.$sticky.length&&"push"===this.options.transition&&(this.options.contentScroll=!1);var o=this.$element.attr("class").match(/\bin-canvas-for-(\w+)/);o&&2===o.length?this.options.inCanvasOn=o[1]:this.options.inCanvasOn&&this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn)),this.options.inCanvasOn&&this._checkInCanvas(),this._removeContentClasses()}},{key:"_events",value:function(){var t=this;this.$element.off(".zf.trigger .zf.offCanvas").on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"ke
35551ydown.zf.offCanvas":this._handleKeyboard.bind(this)}),!0===this.options.closeOnClick&&(this.options.contentOverlay?this.$overlay:this.$content).on({"click.zf.offCanvas":this.close.bind(this)});this.options.inCanvasOn&&s()(window).on("changed.zf.mediaquery",function(){t._checkInCanvas()})}},{key:"_setMQChecker",value:function(){var t=this;this.onLoadListener=Object(a.onLoad)(s()(window),function(){l.MediaQuery.atLeast(t.options.revealOn)&&t.reveal(!0)}),s()(window).on("changed.zf.mediaquery",function(){l.MediaQuery.atLeast(t.options.revealOn)?t.reveal(!0):t.reveal(!1)})}},{key:"_checkInCanvas",value:function(){this.isInCanvas=l.MediaQuery.atLeast(this.options.inCanvasOn),!0===this.isInCanvas&&this.close()}},{key:"_removeContentClasses",value:function(t){"boolean"!=typeof t?this.$content.removeClass(this.contentClasses.base.join(" ")):!1===t&&this.$content.removeClass("has-reveal-".concat(this.position))}},{key:"_addContentClasses",value:function(t){this._removeContentClasses(t),"boolean"!=typeof t?this.$content.addClass("has-transition-".concat(this.options.transition," has-position-").concat(this.position)):!0===t&&this.$content.addClass("has-reveal-".concat(this.position))}},{key:"_fixStickyElements",value:function(){this.$sticky.each(function(t,e){var n=s()(e);if("fixed"===n.css("position")){var i=parseInt(n.css("top"),10);n.data("offCanvasSticky",{top:i});var o=s()(document).scrollTop()+i;n.css({top:"".concat(o,"px"),width:"100%",transition:"none"})}})}},{key:"_unfixStickyElements",value:function(){this.$sticky.each(function(t,e){var n=s()(e),i=n.data("offCanvasSticky");"object"===c(i)&&(n.css({top:"".concat(i.top,"px"),width:"",transition:""}),n.data("offCanvasSticky",""))})}},{key:"reveal",value:function(t){t?(this.close(),this.isRevealed=!0,this.$element.attr("aria-hidden","false"),this.$element.off("open.zf.trigger toggle.zf.trigger"),this.$element.removeClass("is-closed")):(this.isRevealed=!1,this.$element.attr("aria-hidden","true"),this.$element.off("open.zf.trigger toggle.zf.trigger").on({"open.zf.trigger":this.open.bind(this),"toggle.zf.trigger":this.toggle.bind(this)}),this.$element.addClass("is-closed")),this._addContentClasses(t)}},{key:"_stopScrolling",value:function(t){return!1}},{key:"_recordScrollable",value:function(t){var e=this;e.scrollHeight!==e.clientHeight&&(0===e.scrollTop&&(e.scrollTop=1),e.scrollTop===e.scrollHeight-e.clientHeight&&(e.scrollTop=e.scrollHeight-e.clientHeight-1)),e.allowUp=0<e.scrollTop,e.allowDown=e.scrollTop<e.scrollHeight-e.clientHeight,e.lastY=t.originalEvent.pageY}},{key:"_stopScrollPropagation",value:function(t){var e,n=this,i=t.pageY<n.lastY,o=!i;n.lastY=t.pageY,i&&n.allowUp||o&&n.allowDown?(t.stopPropagation(),n.hasAttribute("data-off-canvas-scrollbox")&&(e=n.closest("[data-off-canvas], [data-off-canvas-scrollbox-outer]"),n.scrollTop<=1&&0<e.scrollTop?e.scrollTop--:n.scrollTop>=n.scrollHeight-n.clientHeight-1&&e.scrollTop<e.scrollHeight-e.clientHeight&&e.scrollTop++)):t.preventDefault()}},{key:"open",value:function(t,e){var n=this;if(!(this.$element.hasClass("is-open")||this.isRevealed||this.isInCanvas)){var i=this;e&&(this.$lastTrigger=e),"top"===this.options.forceTo?window.scrollTo(0,0):"bottom"===this.options.forceTo&&window.scrollTo(0,document.body.scrollHeight),this.options.transitionTime&&"overlap"!==this.options.transition?this.$element.siblings("[data-off-canvas-content]").css("transition-duration",this.options.transitionTime):this.$element.siblings("[data-off-canvas-content]").css("transition-duration",""),this.$element.addClass("is-open").removeClass("is-closed"),this.$triggers.attr("aria-expanded","true"),this.$element.attr("aria-hidden","false"),this.$content.addClass("is-open-"+this.position),!1===this.options.contentScroll&&(s()("body").addClass("is-off-canvas-open").on("touchmove",this._stopScrolling),this.$element.on("touchstart",this._recordScrollable),this.$element.on("touchmove",this._stopScrollPropagation),this.$element.on("touchstart","[data-off-canvas-scrollbox]",this._recordScrollable),this.$element.on("touchmove","[data-off-canvas-scrollbox]",this._stopScrollPropagation)),!0===this.options.contentOverlay&&this.$overlay.addClass("is-visible"),!0===this.options.closeOnClick&&!0===this.options.contentOverlay&&this.$overlay.addClass("is-closable"),!0===this.options.autoFocus&&this.$element.one(Object(a.transitionend)(this.$element),function(){if(i.$element.hasClass("is-open")){var t=i.$element.find("[data-autofocus]");t.length?t.eq(0).focus():i.$element.find("a, button").eq(0).focus()}}),!0===this.options.trapFocus&&(this.$content.attr("tabindex","-1"),r.Keyboard.trapFocus(this.$element)),"push"===this.options.transition&&this._fixStickyElements(),this._addContentClasses(),this.$element.trigger("opened.zf.offCanvas"),this.$element.one(Object(a.transitionend)(this.$element),function(){n.$element.trigger("openedEnd.zf.offCanvas")})}}},{key:"close",value:function(t){var e=this;if(this.$element.hasClass("is-open")&&!this.isRevealed){this.$element.trigger("close.zf.offCanvas");this.$element.removeClass("is-open"),this.$element.attr("aria-hidden","true"),this.$content.removeClass("is-open-left is-open-top is-open-right is-open-bottom"),!0===this.options.contentOverlay&&this.$overlay.removeClass("is-visible"),!0===this.options.closeOnClick&&!0===this.options.contentOverlay&&this.$overlay.removeClass("is-closable"),this.$triggers.attr("aria-expanded","fal
35551se"),this.$element.one(Object(a.transitionend)(this.$element),function(t){e.$element.addClass("is-closed"),e._removeContentClasses(),"push"===e.options.transition&&e._unfixStickyElements(),!1===e.options.contentScroll&&(s()("body").removeClass("is-off-canvas-open").off("touchmove",e._stopScrolling),e.$element.off("touchstart",e._recordScrollable),e.$element.off("touchmove",e._stopScrollPropagation),e.$element.off("touchstart","[data-off-canvas-scrollbox]",e._recordScrollable),e.$element.off("touchmove","[data-off-canvas-scrollbox]",e._stopScrollPropagation)),!0===e.options.trapFocus&&(e.$content.removeAttr("tabindex"),r.Keyboard.releaseFocus(e.$element)),e.$element.trigger("closed.zf.offCanvas")})}}},{key:"toggle",value:function(t,e){this.$element.hasClass("is-open")?this.close(t,e):this.open(t,e)}},{key:"_handleKeyboard",value:function(t){var e=this;r.Keyboard.handleKey(t,"OffCanvas",{close:function(){return e.close(),e.$lastTrigger.focus(),!0},handled:function(){t.preventDefault()}})}},{key:"_destroy",value:function(){this.close(),this.$element.off(".zf.trigger .zf.offCanvas"),this.$overlay.off(".zf.offCanvas"),this.onLoadListener&&s()(window).off(this.onLoadListener)}}]),i}();m.defaults={closeOnClick:!0,contentOverlay:!0,contentId:null,nested:null,contentScroll:!0,transitionTime:null,transition:"push",forceTo:null,isRevealed:!1,revealOn:null,inCanvasOn:null,autoFocus:!0,revealClass:"reveal-for-",trapFocus:!1}},
vendor: 7,132 bytes, line 35551
35551"./js/foundation.orbit.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Orbit",function(){return v});var i=n("jquery"),a=n.n(i),o=n("./js/foundation.util.keyboard.js"),c=n("./js/foundation.util.motion.js"),s=n("./js/foundation.util.timer.js"),r=n("./js/foundation.util.imageLoader.js"),l=n("./js/foundation.core.utils.js"),u=n("./js/foundation.core.plugin.js"),h=n("./js/foundation.util.touch.js");function d(t){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function p(t,e){return!e||"object"!==d(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function m(t){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function g(t,e){return(g=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var v=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),p(this,m(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&g(t,e)}(n,u["Plugin"]),function(t,e,n){e&&f(t.prototype,e),n&&f(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=a.a.extend({},n.defaults,this.$element.data(),e),this.className="Orbit",h.Touch.init(a.a),this._init(),o.Keyboard.register("Orbit",{ltr:{ARROW_RIGHT:"next",ARROW_LEFT:"previous"},rtl:{ARROW_LEFT:"next",ARROW_RIGHT:"previous"}})}},{key:"_init",value:function(){this._reset(),this.$wrapper=this.$element.find(".".concat(this.options.containerClass)),this.$slides=this.$element.find(".".concat(this.options.slideClass));var t=this.$element.find("img"),e=this.$slides.filter(".is-active"),n=this.$element[0].id||Object(l.GetYoDigits)(6,"orbit");this.$element.attr({"data-resize":n,id:n}),e.length||this.$slides.eq(0).addClass("is-active"),this.options.useMUI||this.$slides.addClass("no-motionui"),t.length?Object(r.onImagesLoaded)(t,this._prepareForOrbit.bind(this)):this._prepareForOrbit(),this.options.bullets&&this._loadBullets(),this._events(),this.options.autoPlay&&1<this.$slides.length&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find(".".concat(this.options.boxOfBullets)).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new s.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},function(){t.changeSlide(!0)}),this.timer.start()}},{key:"_prepareForOrbit",value:function(){this._setWrapperHeight()}},{key:"_setWrapperHeight",value:function(t){var e,n=0,i=0,o=this;this.$slides.each(function(){e=this.getBoundingClientRect().height,a()(this).attr("data-slide",i),/mui/g.test(a()(this)[0].className)||o.$slides.filter(".is-active")[0]===o.$slides.eq(i)[0]||a()(this).css({display:"none"}),n=n<e?e:n,i++}),i===this.$slides.length&&(this.$wrapper.css({height:n}),t&&t(n))}},{key:"_setSlideHeight",value:function(t){this.$slides.each(function(){a()(this).css("max-height",t)})}},{key:"_events",value:function(){var i=this;if(this.$element.off(".resizeme.zf.trigger").on({"resizeme.zf.trigger":this._prepareForOrbit.bind(this)}),1<this.$slides.length){if(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",function(t){t.preventDefault(),i.changeSlide(!0)}).on("swiperight.zf.orbit",function(t){t.preventDefault(),i.changeSlide(!1)}),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",function(){i.$element.data("clickedOn",!i.$element.data("clickedOn")),i.timer[i.$element.data("clickedOn")?"pause":"start"]()}),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",function(){i.timer.pause()}).on("mouseleave.zf.orbit",function(){i.$element.data("clickedOn")||i.timer.start()})),this.options.navButtons)this.$element.find(".".concat(this.options.nextClass,", .").concat(this.options.prevClass)).attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",function(t){t.preventDefault(),i.changeSlide(a()(this).hasClass(i.options.nextClass))});this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",function(){if(/is-active/g.test(this.className))return!1;var t=a()(this).data("slide"),e=t>i.$slides.filter(".is-active").data("slide"),n=i.$slides.eq(t);i.changeSlide(e,n,t)}),this.options.accessible&&this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",function(t){o.Keyboard.handleKey(t,"Orbit",{next:function(){i.changeSlide(!0)},previous:function(){i.changeSlide(!1)},handled:function(){a()(t.target).is(i.$bullets)&&i.$bullets.filter(".is-active").focus()}})})}}},{key:"_reset",value:function(){void 0!==this.$slides&&1<this.$slides.length&&(this.$element.off(".zf.orbit").find("*").off(".zf.orbit"),this.options.autoPlay&&this.timer.restart(),this.$slides.each(function(t){a()(t).removeClass("is-active is-active is-in").removeAttr("aria-live").hide()}),this.$slides.first().addClass("is-active").show(),this.$element.trigger("slidechange.zf.orbit",[this.$slides.first()]),this.options.bullets&&this._updateBullets(0))}},{key:"changeSlide",value:function(t,e,n){if(this.$slides){var i=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(i[0].className))return!1;var o,s=this.$slides.first(),a=this.$slides.last(),r=t?"Right":"Left",l=t?"Left":"Right",u=this;(o=e||(t?this.options.infiniteWrap?i.next(".".concat(this.options.slideClass)).length?i.next(".".concat(this.options.slideClass)):s:i.next(".".concat(this.options.slideClass)):this.options.infiniteWrap?i.prev(".".concat(this.options.slideClass)).length?i.prev(".".concat(this.options.slideClass)):a:i.prev(".".concat(this.options.slideClass)))).length&&(this.$element.trigger("beforeslidechange.zf.orbit",[i,o]),this.options.bullets&&(n=n||this.$slides.index(o),this._updateBullets(n)),this.options.useMUI&&!this.$element.is(":hidden")?(c.Motion.animateIn(o.addClass("is-active"),this.options["animInFrom".concat(r)],function(){o.css({display:"block"}).attr("aria-live","polite")}),c.Motion.animateOut(i.removeClass("is-active"),this.options["animOutTo".concat(l)],function(){i.removeAttr("aria-live"),u.options.autoPlay&&!u.timer.isPaused&&u.timer.restart()})):(i.removeClass("is-active is-in").removeAttr("aria-live").hide(),o.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[o]))}}},{key:"_updateBullets",value:function(t){var e=this.$bullets.filter(".is-active"),n=this.$bullets.not(".is-active"),i=this.$bullets.eq(t);e.removeClass("is-active").blur(),i.addClass("is-active");
35551var o=e.children("[data-slide-active-label]").last();if(!o.length){var s=e.children("span");n.toArray().map(function(t){return a()(t).children("span").length}).every(function(t){return t<s.length})&&(o=s.last()).attr("data-slide-active-label","")}o.length&&(o.detach(),i.append(o))}},{key:"_destroy",value:function(){this.$element.off(".zf.orbit").find("*").off(".zf.orbit").end().hide()}}]),n}();v.defaults={bullets:!0,navButtons:!0,animInFromRight:"slide-in-right",animOutToRight:"slide-out-right",animInFromLeft:"slide-in-left",animOutToLeft:"slide-out-left",autoPlay:!0,timerDelay:5e3,infiniteWrap:!0,swipe:!0,pauseOnHover:!0,accessible:!0,containerClass:"orbit-container",slideClass:"orbit-slide",boxOfBullets:"orbit-bullets",nextClass:"orbit-next",prevClass:"orbit-previous",useMUI:!0}},
35551"./js/foundation.positionable.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Positionable",function(){return g});var a=n("./js/foundation.util.box.js"),i=n("./js/foundation.core.plugin.js"),o=n("./js/foundation.core.utils.js");function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function l(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function u(t){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function c(t,e){return(c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var h=["left","right","top","bottom"],d=["top","bottom","center"],f=["left","right","center"],p={left:d,right:d,top:f,bottom:f};function m(t,e){var n=e.indexOf(t);return n===e.length-1?e[0]:e[n+1]}var g=function(){function t(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),l(this,u(t).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&c(t,e)}(t,i["Plugin"]),function(t,e,n){e&&r(t.prototype,e),n&&r(t,n)}(t,[{key:"_init",value:function(){this.triedPositions={},this.position="auto"===this.options.position?this._getDefaultPosition():this.options.position,this.alignment="auto"===this.options.alignment?this._getDefaultAlignment():this.options.alignment,this.originalPosition=this.position,this.originalAlignment=this.alignment}},{key:"_getDefaultPosition",value:function(){return"bottom"}},{key:"_getDefaultAlignment",value:function(){switch(this.position){case"bottom":case"top":return Object(o.rtl)()?"right":"left";case"left":case"right":return"bottom"}}},{key:"_reposition",value:function(){this._alignmentsExhausted(this.position)?(this.position=m(this.position,h),this.alignment=p[this.position][0]):this._realign()}},{key:"_realign",value:function(){this._addTriedPosition(this.position,this.alignment),this.alignment=m(this.alignment,p[this.position])}},{key:"_addTriedPosition",value:function(t,e){this.triedPositions[t]=this.triedPositions[t]||[],this.triedPositions[t].push(e)}},{key:"_positionsExhausted",value:function(){for(var t=!0,e=0;e<h.length;e++)t=t&&this._alignmentsExhausted(h[e]);return t}},{key:"_alignmentsExhausted",value:function(t){return this.triedPositions[t]&&this.triedPositions[t].length==p[t].length}},{key:"_getVOffset",value:function(){return this.options.vOffset}},{key:"_getHOffset",value:function(){return this.options.hOffset}},{key:"_setPosition",value:function(t,e,n){if("false"===t.attr("aria-expanded"))return!1;if(this.options.allowOverlap||(this.position=this.originalPosition,this.alignment=this.originalAlignment),e.offset(a.Box.GetExplicitOffsets(e,t,this.position,this.alignment,this._getVOffset(),this._getHOffset())),!this.options.allowOverlap){for(var i=1e8,o={position:this.position,alignment:this.alignment};!this._positionsExhausted();){var s=a.Box.OverlapArea(e,n,!1,!1,this.options.allowBottomOverlap);if(0===s)return;s<i&&(i=s,o={position:this.position,alignment:this.alignment}),this._reposition(),e.offset(a.Box.GetExplicitOffsets(e,t,this.position,this.alignment,this._getVOffset(),this._getHOffset()))}this.position=o.position,this.alignment=o.alignment,e.offset(a.Box.GetExplicitOffsets(e,t,this.position,this.alignment,this._getVOffset(),this._getHOffset()))}}}]),t}();g.defaults={position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!0,vOffset:0,hOffset:0}},
35551"./js/foundation.responsiveAccordionTabs.js":function(t,e,n){"use strict";n.r(e),n.d(e,"ResponsiveAccordionTabs",function(){return g});var i=n("jquery"),c=n.n(i),a=n("./js/foundation.util.mediaQuery.js"),h=n("./js/foundation.core.utils.js"),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.accordion.js");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function u(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?f(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var m={tabs:{cssClass:"tabs",plugin:n("./js/foundation.tabs.js").Tabs,open:function(t,e){return t.selectTab(e)},close:null,toggle:null},accordion:{cssClass:"accordion",plugin:s.Accordion,open:function(t,e){return t.down(c()(e))},close:function(t,e){return t.up(c()(e))},toggle:function(t,e){return t.toggle(c()(e))}}},g=function(){function i(t,e){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),u(n=u(this,d(i).call(this,t,e)),n.options.reflow&&n.storezfData||f(n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(i,o["Plugin"]),function(t,e,n){e&&l(t.prototype,e),n&&l(t,n)}(i,[{key:"_setup",value:function(t,e){this.$element=c()(t),this.$element.data("zfPluginBase",this),this.options=c.a.extend({},i.defaults,this.$element.data(),e),this.rules=this.$element.data("responsive-accordion-tabs"),this.currentMq=null,this.currentRule=null,this.currentPlugin=null,this.className="ResponsiveAccordionTabs",this.$element.attr("id")||this.$element.attr("id",Object(h.GetYoDigits)(6,"responsiveaccordiontabs")),this._init(),this._events()}},{key:"_init",value:function(){if(a.MediaQuery._init(),"string"==typeof this.rules){for(var t={},e=this.rules.split(" "),n=0;n<e.length;n++){var i=e[n].split("-"),o=1<i.length?i[0]:"small",s=1<i.length?i[1]:i[0];null!==m[s]&&(t[o]=m[s])}this.rules=t}this._getAllOptions(),c.a.isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_getAllOptions",value:function(){for(var t in this.allOptions={},m)if(m.hasOwnProperty(t)){var e=m[t];try{var n=c()("<ul></ul>"),i=new e.plugin(n,this.options);for(var o in i.options)if(i.options.hasOwnProperty(o)&&"zfPlugin"!==o){var s=i.options[o];this.allOptions[o]=s}i.destroy()}catch(t){}}}},{key:"_events",value:function(){this._changedZfMediaQueryHandler=this._checkMediaQueries.bind(this),c()(window).on("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}},{key:"_checkMediaQueries",value:function(){var e,n=this;c.a.each(this.rules,function(t){a.MediaQuery.atLeast(t)&&(e=t)}),e&&(this.currentPlugin instanceof this.rules[e].plugin||(c.a.each(m,function(t,e){n.$element.removeClass(e.cssClass)}),this.$element.addClass(this.rules[e].cssClass),this.currentPlugin&&(!this.currentPlugin.$element.data("zfPlugin")&&this.storezfData&&this.currentPlugin.$element.data("zfPlugin",this.storezfData),this.currentPlugin.destroy()),this._handleMarkup(this.rules[e].cssClass),this.currentRule=this.rules[e],this.currentPlugin=new this.currentRule.plugin(this.$element,this.options),this.storezfData=this.currentPlugin.$element.data("zfPlugin")))}},{key:"_handleMarkup",value:function(t){var n=this,e="accordion",i=c()("[data-tabs-content="+this.$element.attr("id")+"]");if(i.length&&(e="tabs"),e!==t){var o=n.allOptions.linkClass?n.allOptions.linkClass:"tabs-title",s=n.allOptions.panelClass?n.allOptions.panelClass:"tabs-panel";this.$element.removeAttr("role");var a=this.$element.children("."+o+",[data-accordion-item]").removeClass(o).removeClass("accordion-item").removeAttr("data-accordion-item"),r=a.children("a").removeClass("accordion-title");if("tabs"===e?(i=i.children("."+s).removeClass(s).removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby")).children("a").removeAttr("role").removeAttr("aria-controls").removeAttr("aria-selected"):i=a.children("[data-tab-content]").removeClass("accordion-content"),i.css({display:"",visibility:""}),a.css({display:"",visibility:""}),"accordion"===t)i.each(function(t,e){c()(e).appendTo(a.get(t)).addClass("accordion-content").attr("data-tab-content","").removeClass("is-active").css({height:""}),c()("[data-tabs-content="+n.$element.attr("id")+"]").after('<div id="tabs-placeholder-'+n.$element.attr("id")+'"></div>').detach(),a.addClass("accordion-item").attr("data-accordion-item",""),r.addClass("accordion-title")});else if("tabs"===t){var l=c()("[data-tabs-content="+n.$element.attr("id")+"]"),u=c()("#tabs-placeholder-"+n.$element.attr("id"));u.length?(l=c()('<div class="tabs-content"></div>').insertAfter(u).attr("data-tabs-content",n.$element.attr("id")),u.remove()):l=c()('<div class="tabs-content"></div>').insertAfter(n.$element).attr("data-tabs-content",n.$element.attr("id")),i.each(function(t,e){var n=c()(e).appendTo(l).addClass(s),i=r.get(t).hash.slice(1),o=c()(e).attr("id")||Object(h.GetYoDigits)(6,"accordion");i!==o&&(""!==i?c()(e).attr("id",i):(i=o,c()(e).attr("id",i),c()(r.get(t)).attr("href",c()(r.get(t)).attr("href").replace("#","")+"#"+i))),c()(a.get(t)).hasClass("is-active")&&n.addClass("is-active")}),a.addClass(o)}}}},{key:"open",value:function(t){var e;if(this.currentRule&&"function"==typeof this.currentRule.open)return(e=this.currentRule).open.apply(e,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"close",value:function(t){var e;if(this.currentRule&&"function"==typeof this.currentRule.close)return(e=this.currentRule).close.apply(e,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"toggle",value:function(t){var e;if(this.currentRule&&"function"==typeof this.currentRule.toggle)return(e=this.currentRule).toggle.apply(e,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"_destroy",value:function(){this.currentPlugin&&this.currentPlugin.destroy(),c()(window).off("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}}]),i}();g.defaults={}},
35551"./js/foundation.responsiveMenu.js":function(t,e,n){"use strict";n.r(e),n.d(e,"ResponsiveMenu",function(){return v});var i=n("jquery"),a=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),l=n("./js/foundation.core.utils.js"),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.dropdownMenu.js"),u=n("./js/foundation.drilldown.js"),c=n("./js/foundation.accordionMenu.js");function h(t){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function f(t,e){return!e||"object"!==h(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var g={dropdown:{cssClass:"dropdown",plugin:s.DropdownMenu},drilldown:{cssClass:"drilldown",plugin:u.Drilldown},accordion:{cssClass:"accordion-menu",plugin:c.AccordionMenu}},v=function(){function t(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),f(this,p(t).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(t,o["Plugin"]),function(t,e,n){e&&d(t.prototype,e),n&&d(t,n)}(t,[{key:"_setup",value:function(t,e){this.$element=a()(t),this.rules=this.$element.data("responsive-menu"),this.currentMq=null,this.currentPlugin=null,this.className="ResponsiveMenu",this._init(),this._events()}},{key:"_init",value:function(){if(r.MediaQuery._init(),"string"==typeof this.rules){for(var t={},e=this.rules.split(" "),n=0;n<e.length;n++){var i=e[n].split("-"),o=1<i.length?i[0]:"small",s=1<i.length?i[1]:i[0];null!==g[s]&&(t[o]=g[s])}this.rules=t}a.a.isEmptyObject(this.rules)||this._checkMediaQueries(),this.$element.attr("data-mutate",this.$element.attr("data-mutate")||Object(l.GetYoDigits)(6,"responsive-menu"))}},{key:"_events",value:function(){var t=this;a()(window).on("changed.zf.mediaquery",function(){t._checkMediaQueries()})}},{key:"_checkMediaQueries",value:function(){var e,n=this;a.a.each(this.rules,function(t){r.MediaQuery.atLeast(t)&&(e=t)}),e&&(this.currentPlugin instanceof this.rules[e].plugin||(a.a.each(g,function(t,e){n.$element.removeClass(e.cssClass)}),this.$element.addClass(this.rules[e].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[e].plugin(this.$element,{})))}},{key:"_destroy",value:function(){this.currentPlugin.destroy(),a()(window).off(".zf.ResponsiveMenu")}}]),t}();v.defaults={}},
35551"./js/foundation.responsiveToggle.js":function(t,e,n){"use strict";n.r(e),n.d(e,"ResponsiveToggle",function(){return f});var i=n("jquery"),o=n.n(i),s=n("./js/foundation.util.mediaQuery.js"),a=n("./js/foundation.util.motion.js"),r=n("./js/foundation.core.plugin.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var f=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),c(this,h(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}(n,r["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=o()(t),this.options=o.a.extend({},n.defaults,this.$element.data(),e),this.className="ResponsiveToggle",this._init(),this._events()}},{key:"_init",value:function(){s.MediaQuery._init();var e=this.$element.data("responsive-toggle");if(e||console.error("Your tab bar needs an ID of a Menu as the value of data-tab-bar."),this.$targetMenu=o()("#".concat(e)),this.$toggler=this.$element.find("[data-toggle]").filter(function(){var t=o()(this).data("toggle");return t===e||""===t}),this.options=o.a.extend({},this.options,this.$targetMenu.data()),this.options.animate){var t=this.options.animate.split(" ");this.animationIn=t[0],this.animationOut=t[1]||null}this._update()}},{key:"_events",value:function(){this._updateMqHandler=this._update.bind(this),o()(window).on("changed.zf.mediaquery",this._updateMqHandler),this.$toggler.on("click.zf.responsiveToggle",this.toggleMenu.bind(this))}},{key:"_update",value:function(){s.MediaQuery.atLeast(this.options.hideFor)?(this.$element.hide(),this.$targetMenu.show()):(this.$element.show(),this.$targetMenu.hide())}},{key:"toggleMenu",value:function(){var t=this;s.MediaQuery.atLeast(this.options.hideFor)||(this.options.animate?this.$targetMenu.is(":hidden")?a.Motion.animateIn(this.$targetMenu,this.animationIn,function(){t.$element.trigger("toggled.zf.responsiveToggle"),t.$targetMenu.find("[data-mutate]").triggerHandler("mutateme.zf.trigger")}):a.Motion.animateOut(this.$targetMenu,this.animationOut,function(){t.$element.trigger("toggled.zf.responsiveToggle")}):(this.$targetMenu.toggle(0),this.$targetMenu.find("[data-mutate]").trigger("mutateme.zf.trigger"),this.$element.trigger("toggled.zf.responsiveToggle")))}},{key:"_destroy",value:function(){this.$element.off(".zf.responsiveToggle"),this.$toggler.off(".zf.responsiveToggle"),o()(window).off("changed.zf.mediaquery",this._updateMqHandler)}}]),n}();f.defaults={hideFor:"medium",animate:!1}},
35551"./js/foundation.reveal.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Reveal",function(){return v});var i=n("jquery"),a=n.n(i),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),r=n("./js/foundation.util.keyboard.js"),l=n("./js/foundation.util.mediaQuery.js"),u=n("./js/foundation.util.motion.js"),c=n("./js/foundation.util.triggers.js"),h=n("./js/foundation.util.touch.js");function d(t){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function p(t,e){return!e||"object"!==d(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function m(t){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function g(t,e){return(g=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var v=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),p(this,m(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&g(t,e)}(n,o["Plugin"]),function(t,e,n){e&&f(t.prototype,e),n&&f(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=a.a.extend({},n.defaults,this.$element.data(),e),this.className="Reveal",this._init(),h.Touch.init(a.a),c.Triggers.init(a.a),r.Keyboard.register("Reveal",{ESCAPE:"close"})}},{key:"_init",value:function(){var t=this;l.MediaQuery._init(),this.id=this.$element.attr("id"),this.isActive=!1,this.cached={mq:l.MediaQuery.current},this.$anchor=a()('[data-open="'.concat(this.id,'"]')).length?a()('[data-open="'.concat(this.id,'"]')):a()('[data-toggle="'.concat(this.id,'"]')),this.$anchor.attr({"aria-controls":this.id,"aria-haspopup":!0,tabindex:0}),(this.options.fullScreen||this.$element.hasClass("full"))&&(this.options.fullScreen=!0,this.options.overlay=!1),this.options.overlay&&!this.$overlay&&(this.$overlay=this._makeOverlay(this.id)),this.$element.attr({role:"dialog","aria-hidden":!0,"data-yeti-box":this.id,"data-resize":this.id}),this.$overlay?this.$element.detach().appendTo(this.$overlay):(this.$element.detach().appendTo(a()(this.options.appendTo)),this.$element.addClass("without-overlay")),this._events(),this.options.deepLink&&window.location.hash==="#".concat(this.id)&&(this.onLoadListener=Object(s.onLoad)(a()(window),function(){return t.open()}))}},{key:"_makeOverlay",value:function(){var t="";return this.options.additionalOverlayClasses&&(t=" "+this.options.additionalOverlayClasses),a()("<div></div>").addClass("reveal-overlay"+t).appendTo(this.options.appendTo)}},{key:"_updatePosition",value:function(){var t,e=this.$element.outerWidth(),n=a()(window).width(),i=this.$element.outerHeight(),o=a()(window).height(),s=null;t="auto"===this.options.hOffset?parseInt((n-e)/2,10):parseInt(this.options.hOffset,10),"auto"===this.options.vOffset?s=o<i?parseInt(Math.min(100,o/10),10):parseInt((o-i)/4,10):null!==this.options.vOffset&&(s=parseInt(this.options.vOffset,10)),null!==s&&this.$element.css({top:s+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:t+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var n=this,i=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(t,e){if(t.target===i.$element[0]||a()(t.target).parents("[data-closable]")[0]===e)return n.close.apply(n)},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){i._updatePosition()}}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.dropdown tap.zf.dropdown",function(t){t.target!==i.$element[0]&&!a.a.contains(i.$element[0],t.target)&&a.a.contains(document,t.target)&&i.close()}),this.options.deepLink&&a()(window).on("hashchange.zf.reveal:".concat(this.id
vendor: 4,569 bytes, line 35551
35551),this._handleState.bind(this))}},{key:"_handleState",value:function(t){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"_disableScroll",value:function(t){t=t||a()(window).scrollTop(),a()(document).height()>a()(window).height()&&a()("html").css("top",-t)}},{key:"_enableScroll",value:function(t){t=t||parseInt(a()("html").css("top")),a()(document).height()>a()(window).height()&&(a()("html").css("top",""),a()(window).scrollTop(-t))}},{key:"open",value:function(){var t=this,e="#".concat(this.id);this.options.deepLink&&window.location.hash!==e&&(window.history.pushState?this.options.updateHistory?window.history.pushState({},"",e):window.history.replaceState({},"",e):window.location.hash=e),this.$activeAnchor=a()(document.activeElement).is(this.$anchor)?a()(document.activeElement):this.$anchor,this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),0===a()(".reveal:visible").length&&this._disableScroll();var n=this;if(this.options.animationIn){this.options.overlay&&u.Motion.animateIn(this.$overlay,"fade-in"),u.Motion.animateIn(this.$element,this.options.animationIn,function(){t.$element&&(t.focusableElements=r.Keyboard.findFocusable(t.$element),n.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),n._addGlobalClasses(),r.Keyboard.trapFocus(n.$element))})}else this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay);this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),r.Keyboard.trapFocus(this.$element),this._addGlobalClasses(),this._addGlobalListeners(),this.$element.trigger("open.zf.reveal")}},{key:"_addGlobalClasses",value:function(){function t(){a()("html").toggleClass("zf-has-scroll",!!(a()(document).height()>a()(window).height()))}this.$element.on("resizeme.zf.trigger.revealScrollbarListener",function(){return t()}),t(),a()("html").addClass("is-reveal-open")}},{key:"_removeGlobalClasses",value:function(){this.$element.off("resizeme.zf.trigger.revealScrollbarListener"),a()("html").removeClass("is-reveal-open"),a()("html").removeClass("zf-has-scroll")}},{key:"_addGlobalListeners",value:function(){var e=this;this.$element&&(this.focusableElements=r.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||a()("body").on("click.zf.dropdown tap.zf.dropdown",function(t){t.target!==e.$element[0]&&!a.a.contains(e.$element[0],t.target)&&a.a.contains(document,t.target)&&e.close()}),this.options.closeOnEsc&&a()(window).on("keydown.zf.reveal",function(t){r.Keyboard.handleKey(t,"Reveal",{close:function(){e.options.closeOnEsc&&e.close()}})}))}},{key:"close",value:function(){if(!this.isActive||!this.$element.is(":visible"))return!1;var e=this;function t(){var t=parseInt(a()("html").css("top"));0===a()(".reveal:visible").length&&e._removeGlobalClasses(),r.Keyboard.releaseFocus(e.$element),e.$element.attr("aria-hidden",!0),0===a()(".reveal:visible").length&&e._enableScroll(t),e.$element.trigger("closed.zf.reveal")}if(this.options.animationOut?(this.options.overlay&&u.Motion.animateOut(this.$overlay,"fade-out"),u.Motion.animateOut(this.$element,this.options.animationOut,t)):(this.$element.hide(this.options.hideDelay),this.options.overlay?this.$overlay.hide(0,t):t()),this.options.closeOnEsc&&a()(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&a()("body").off("click.zf.dropdown tap.zf.dropdown"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,e.options.deepLink&&window.location.hash==="#".concat(this.id))if(window.history.replaceState){var n=window.location.pathname+window.location.search;this.options.updateHistory?window.history.pushState({},"",n):window.history.replaceState("",document.title,n)}else window.location.hash="";this.$activeAnchor.focus()}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"_destroy",value:function(){this.options.overlay&&(this.$element.appendTo(a()(this.options.appendTo)),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),a()(window).off(".zf.reveal:".concat(this.id
35551)),this.onLoadListener&&a()(window).off(this.onLoadListener),0===a()(".reveal:visible").length&&this._removeGlobalClasses()}}]),n}();v.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,overlay:!0,resetOnClose:!1,deepLink:!1,updateHistory:!1,appendTo:"body",additionalOverlayClasses:""}},
35551"./js/foundation.slider.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Slider",function(){return f});var i=n("jquery"),p=n.n(i),a=n("./js/foundation.util.keyboard.js"),w=n("./js/foundation.util.motion.js"),m=n("./js/foundation.core.utils.js"),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.util.touch.js"),r=n("./js/foundation.util.triggers.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var f=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),c(this,h(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}(n,o["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=p.a.extend({},n.defaults,this.$element.data(),e),this.className="Slider",s.Touch.init(p.a),r.Triggers.init(p.a),this._init(),a.Keyboard.register("Slider",{ltr:{ARROW_RIGHT:"increase",ARROW_UP:"increase",ARROW_DOWN:"decrease",ARROW_LEFT:"decrease",SHIFT_ARROW_RIGHT:"increase_fast",SHIFT_ARROW_UP:"increase_fast",SHIFT_ARROW_DOWN:"decrease_fast",SHIFT_ARROW_LEFT:"decrease_fast",HOME:"min",END:"max"},rtl:{ARROW_LEFT:"increase",ARROW_RIGHT:"decrease",SHIFT_ARROW_LEFT:"increase_fast",SHIFT_ARROW_RIGHT:"decrease_fast"}})}},{key:"_init",value:function(){this.inputs=this.$element.find("input"),this.handles=this.$element.find("[data-slider-handle]"),this.$handle=this.handles.eq(0),this.$input=this.inputs.length?this.inputs.eq(0):p()("#".concat(this.$handle.attr("aria-controls"))),this.$fill=this.$element.find("[data-slider-fill]").css(this.options.vertical?"height":"width",0);(this.options.disabled||this.$element.hasClass(this.options.disabledClass))&&(this.options.disabled=!0,this.$element.addClass(this.options.disabledClass)),this.inputs.length||(this.inputs=p()().add(this.$input),this.options.binding=!0),this._setInitAttr(0),this.handles[1]&&(this.options.doubleSided=!0,this.$handle2=this.handles.eq(1),this.$input2=1<this.inputs.length?this.inputs.eq(1):p()("#".concat(this.$handle2.attr("aria-controls"))),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),this._setInitAttr(1)),this.setHandles(),this._events()}},{key:"setHandles",value:function(){var t=this;this.handles[1]?this._setHandlePos(this.$handle,this.inputs.eq(0).val(),function(){t._setHandlePos(t.$handle2,t.inputs.eq(1).val())}):this._setHandlePos(this.$handle,this.inputs.eq(0).val())}},{key:"_reflow",value:function(){this.setHandles()}},{key:"_pctOfBar",value:function(t){var e=_(t-this.options.start,this.options.end-this.options.start);switch(this.options.positionValueFunction){case"pow":e=this._logTransform(e);break;case"log":e=this._powTransform(e)}return e.toFixed(2)}},{key:"_value",value:function(t){switch(this.options.positionValueFunction){case"pow":t=this._powTransform(t);break;case"log":t=this._logTransform(t)}return this.options.vertical?parseFloat(this.options.end)+t*(this.options.start-this.options.end):(this.options.end-this.options.start)*t+parseFloat(this.options.start)}},{key:"_logTransform",value:function(t){return function(t,e){return Math.log(e)/Math.log(t)}(this.options.nonLinearBase,t*(this.options.nonLinearBase-1)+1)}},{key:"_powTransform",value:function(t){return(Math.pow(this.options.nonLinearBase,t)-1)/(this.options.nonLinearBase-1)}},{key:"_setHandlePos",value:function(t,e,n){if(!this.$element.hasClass(this.options.disabledClass)){(e=parseFloat(e))<this.options.start?e=this.options.start:e>this.options.end&&(e=this.options.end);var i=this.options.doubleSided;
35551if(i)if(0===this.handles.index(t)){var o=parseFloat(this.$handle2.attr("aria-valuenow"));e=o<=e?o-this.options.step:e}else{var s=parseFloat(this.$handle.attr("aria-valuenow"));e=e<=s?s+this.options.step:e}var a=this,r=this.options.vertical,l=r?"height":"width",u=r?"top":"left",c=t[0].getBoundingClientRect()[l],h=this.$element[0].getBoundingClientRect()[l],d=this._pctOfBar(e),f=(100*_((h-c)*d,h)).toFixed(this.options.decimal);e=parseFloat(e.toFixed(this.options.decimal));var p={};if(this._setValues(t,e),i){var m,g=0===this.handles.index(t),v=~~(100*_(c,h));if(g)p[u]="".concat(f,"%"),m=parseFloat(this.$handle2[0].style[u])-f+v,n&&"function"==typeof n&&n();else{var y=parseFloat(this.$handle[0].style[u]);m=f-(isNaN(y)?(this.options.initialStart-this.options.start)/((this.options.end-this.options.start)/100):y)+v}p["min-".concat(l)]="".concat(m,"%")}this.$element.one("finished.zf.animate",function(){a.$element.trigger("moved.zf.slider",[t])});var b=this.$element.data("dragging")?1e3/60:this.options.moveTime;Object(w.Move)(b,t,function(){isNaN(f)?t.css(u,"".concat(100*d,"%")):t.css(u,"".concat(f,"%")),a.options.doubleSided?a.$fill.css(p):a.$fill.css(l,"".concat(100*d,"%"))}),clearTimeout(a.timeout),a.timeout=setTimeout(function(){a.$element.trigger("changed.zf.slider",[t])},a.options.changedDelay)}}},{key:"_setInitAttr",value:function(t){var e=0===t?this.options.initialStart:this.options.initialEnd,n=this.inputs.eq(t).attr("id")||Object(m.GetYoDigits)(6,"slider");this.inputs.eq(t).attr({id:n,max:this.options.end,min:this.options.start,step:this.options.step}),this.inputs.eq(t).val(e),this.handles.eq(t).attr({role:"slider","aria-controls":n,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":e,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var n=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(n).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(t,e,n){var i;if(n)i=this._adjustValue(null,n),!0;else{t.preventDefault();var o=this.options.vertical,s=o?"height":"width",a=o?"top":"left",r=o?t.pageY:t.pageX,l=this.$element[0].getBoundingClientRect()[s],u=o?p()(window).scrollTop():p()(window).scrollLeft(),c=this.$element.offset()[a];t.clientY===t.pageY&&(r+=u);var h,d=r-c,f=_(h=d<0?0:l<d?l:d,l);if(i=this._value(f),Object(m.rtl)()&&!this.options.vertical&&(i=this.options.end-i),i=this._adjustValue(null,i),!1,!e)e=g(this.$handle,a,h,s)<=g(this.$handle2,a,h,s)?this.$handle:this.$handle2}this._setHandlePos(e,i)}},{key:"_adjustValue",value:function(t,e){var n,i,o,s=this.options.step,a=parseFloat(s/2);return 0===(i=0<=(n=t?parseFloat(t.attr("aria-valuenow")):e)?n%s:s+n%s)?n:n=(o=n-i)+a<=n?o+s:o}},{key:"_events",value:function(){this._eventsForHandle(this.$handle),this.handles[1]&&this._eventsForHandle(this.$handle2)}},{key:"_eventsForHandle",value:function(e){function n(t){var e=s.inputs.index(p()(this));s._handleEvent(t,s.handles.eq(e),p()(this).val())}var i,s=this;if(this.inputs.off("keyup.zf.slider").on("keyup.zf.slider",function(t){13==t.keyCode&&n.call(this,t)}),this.inputs.off("change.zf.slider").on("change.zf.slider",n),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",function(t){if(s.$element.data("dragging"))return!1;p()(t.target).is("[data-slider-handle]")||(s.options.doubleSided?s._handleEvent(t):s._handleEvent(t,s.$handle))}),this.options.draggable){this.handles.addTouch();var o=p()("body");e.off("mousedown.zf.slider").on("mousedown.zf.slider",function(t){e.addClass("is-dragging"),s.$fill.addClass("is-dragging"),s.$element.data("dragging",!0),i=p()(t.currentTarget),o.on("mousemove.zf.slider",function(t){t.preventDefault(),s._handleEvent(t,i)}).on("mouseup.zf.slider",function(t){s._handleEvent(t,i),e.removeClass("is-dragging"),s.$fill.removeClass("is-dragging"),s.$element.data("dragging",!1),o.off("mousemove.zf.slider mouseup.zf.slider")})}).on("selectstart.zf.slider touchmove.zf.slider",function(t){t.preventDefault()})}e.off("keydown.zf.slider").on("keydown.zf.slider",function(t){var e,n=p()(this),i=s.options.doubleSided?s.handles.index(n):0,o=parseFloat(s.inputs.eq(i).val());a.Keyboard.handleKey(t,"Slider",{decrease:function(){e=o-s.options.step},increase:function(){e=o+s.options.step},decrease_fast:function(){e=o-10*s.options.step},increase_fast:function(){e=o+10*s.options.step},min:function(){e=s.options.start},max:function(){e=s.options.end},handled:function(){t.preventDefault(),s._setHandlePos(n,e)}})})}},{key:"_destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),clearTimeout(this.timeout)}}]),n}();function _(t,e){return t/e}function g(t,e,n,i){return Math.abs(t.position()[e]+t[i]()/2-n)}f
vendor: 291 bytes, line 35551
35551.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500,nonLinearBase:5,positionValueFunction:"linear"}},"./js/foundation.
35551smoothScroll.js":function(t,e,n){"use strict";n.r(e),n.d(e,"SmoothScroll",function(){return r});var i=n("jquery"),l=n.n(i),o=n("./js/foundation.core.utils.js"),s=n("./js/foundation.core.plugin.js");function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==a(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var r=function(){function r(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),c(this,h(r).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}(r,s["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(r,[{key:"_setup",value:function(t,e){this.$element=t,this.options=l.a.extend({},r.defaults,this.$element.data(),e),this.className="SmoothScroll",this._init()}},{key:"_init",value:function(){var t=this.$element[0].id||Object(o.GetYoDigits)(6,"smooth-scroll");this.$element.attr({id:t}),this._events()}},{key:"_events",value:function(){this._linkClickListener=this._handleLinkClick.bind(this),this.$element.on("click.zf.smoothScroll",this._linkClickListener),this.$element.on("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}},{key:"_handleLinkClick",value:function(t){var e=this;if(l()(t.currentTarget).is('a[href^="#"]')){var n=t.currentTarget.getAttribute("href");this._inTransition=!0,r.scrollToLoc(n,this.options,function(){e._inTransition=!1}),t.preventDefault()}}},{key:"_destroy",value:function(){this.$element.off("click.zf.smoothScroll",this._linkClickListener),this.$element.off("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}}],[{key:"scrollToLoc",value:function(t,e,n){var i=1<arguments.length&&void 0!==e?e:r.defaults,o=2<arguments.length?n:void 0,s=l()(t);if(!s.length)return!1;var a=Math.round(s.offset().top-i.threshold/2-i.offset);l()("html, body").stop(!0).animate({scrollTop:a},i.animationDuration,i.animationEasing,function(){"function"==typeof o&&o()})}}]),r}();r.defaults={animationDuration:500,animationEasing:"linear",threshold:50,offset:0}},
35551"./js/foundation.sticky.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Sticky",function(){return p});var i=n("jquery"),r=n.n(i),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),l=n("./js/foundation.util.mediaQuery.js"),a=n("./js/foundation.util.triggers.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,o["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=r.a.extend({},n.defaults,this.$element.data(),e),this.className="Sticky",a.Triggers.init(r.a),this._init()}},{key:"_init",value:function(){l.MediaQuery._init();var t=this.$element.parent("[data-sticky-container]"),e=this.$element[0].id||Object(s.GetYoDigits)(6,"sticky"),n=this;t.length?this.$container=t:(this.wasWrapped=!0,this.$element.wrap(this.options.container),this.$container=this.$element.parent()),this.$container.addClass(this.options.containerClass),this.$element.addClass(this.options.stickyClass).attr({"data-resize":e,"data-mutate":e}),""!==this.options.anchor&&r()("#"+n.options.anchor).attr({"data-mutate":e}),this.scrollCount=this.options.checkEvery,this.isStuck=!1,this.onLoadListener=Object(s.onLoad)(r()(window),function(){n.containerHeight="none"==n.$element.css("display")?0:n.$element[0].getBoundingClientRect().height,n.$container.css("height",n.containerHeight),n.elemHeight=n.containerHeight,""!==n.options.anchor?n.$anchor=r()("#"+n.options.anchor):n._parsePoints(),n._setSizes(function(){var t=window.pageYOffset;n._calc(!1,t),n.isStuck||n._removeSticky(!(t>=n.topPoint))}),n._events(e.split("-").reverse().join("-"))})}},{key:"_parsePoints",value:function(){for(var t=[""==this.options.topAnchor?1:this.options.topAnchor,""==this.options.btmAnchor?document.documentElement.scrollHeight:this.options.btmAnchor],e={},n=0,i=t.length;n<i&&t[n];n++){var o;if("number"==typeof t[n])o=t[n];else{var s=t[n].split(":"),a=r()("#".concat(s[0]));o=a.offset().top,s[1]&&"bottom"===s[1].toLowerCase()&&(o+=a[0].getBoundingClientRect().height)}e[n]=o}this.points=e}},{key:"_events",value:function(n){var i=this,t=this.scrollListener="scroll.zf.".concat(n);this.isOn||(this.canStick&&(this.isOn=!0,r()(window).off(t).on(t,function(t){0===i.scrollCount?(i.scrollCount=i.options.checkEvery,i._setSizes(function(){i._calc(!1,window.pageYOffset)})):(i.scrollCount--,i._calc(!1,window.pageYOffset))})),this.$element.off("resizeme.zf.trigger").on("resizeme.zf.trigger",function(t,e){i._eventsHandler(n)}),this.$element.on("mutateme.zf.trigger",function(t,e){i._eventsHandler(n)}),this.$anchor&&this.$anchor.on("mutateme.zf.trigger",function(t,e){i._eventsHandler(n)}))}},{key:"_eventsHandler",value:function(t){var e=this,n=this.scrollListener="scroll.zf.".concat(t);e._setSizes(function(){e._calc(!1),e.canStick?e.isOn||e._events(t):e.isOn&&e._pauseListeners(n)})}},{key:"_pauseListeners",value:function(t){this.isOn=!1,r()(window).off(t),this.$element.trigger("pause.zf.sticky")}},{key:"_calc",value:function(t,e){if(t&&this._setSizes(),!this.canStick)return this.isStuck&&this._removeSticky(!0),!1;(e=e||window.pageYOffset)>=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0)}},{key:"_setSticky",value:function(){var t=this,e=this.options.stickTo,n="top"===e?"marginTop":"marginBottom",i="top"===e?"bottom":"top",o={};o[n]="".concat(this.options[n],"em"),o[e]=0,o[i]="auto",this.isStuck=!0,this.$element.removeClass("is-anchored is-at-".concat(i)).addClass("is-stuck is-at-".concat(e)).css(o).trigger("sticky.zf.stuckto:".concat(e)),this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",function(){t._setSizes()})}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,n="top"===e,i={},o=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,s=t?"top":"bottom";i[n?"marginTop":"marginBottom"]=0,i.bottom="auto",i.top=t?0:o,this.isStuck=!1,this.$element.removeClass("is-stuck is-at-".concat(e)).addClass("is-anchored is-at-".concat(s)).css(i).trigger("sticky.zf.unstuckfrom:".concat(s))}},{key:"_setSizes",value:function(t){this.canStick=l.MediaQuery.is(this.options.stickyOn),this.canStick||t&&"function"==typeof t&&t();var e=this.$container[0].getBoundingClientRect().width,n=window.getComputedStyle(this.$container[0]),i=parseInt(n["padding-left"],10),o=parseInt(n["padding-right"],10);if(this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":"".concat(e-i-o,"px")}),this.options.dynamicHeight||!this.containerHeight){var s=this.$element[0].getBoundingClientRect().height||this.containerHeight;s="none"==this.$element.css("display")?0:s,this.$container.css("height",s),this.containerHeight=s}if(this.elemHeight=this.containerHeight,!this.isStuck&&this.$element.hasClass("is-at-bottom")){var a=(this.points?this.points[1]-this.$container.offset().top:this.anchorHeight)-this.elemHeight;this.$element.css("top",a)}this._setBreakPoints(this.containerHeight,function(){t&&"function"==typeof t&&t()})}},{key:"_setBreakPoints",value:function(t,e){if(!this.canStick){if(!e||"function"!=typeof e)return!1;e()}var n=m(this.options.marginTop),i=m(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,s=this.points?this.points[1]:o+this.anchorHeight,a=window.innerHeight;"top"===this.options.stickTo?(o-=n,s-=t+n):"bottom"===this.options.stickTo&&(o-=a-(t+i),s-=a-i),this.topPoint=o,this.bottomPoint=s,e&&"function"==typeof e&&e()}},{key:"_destroy",value:function(){this._removeSticky(!0),this.$element.removeClass("".concat(this.options.stickyClass," is-anchored is-at-top")).css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger").off("mutateme.zf.trigger"),this.$anchor&&this.$anchor.length&&this.$anchor.off("change.zf.sticky"),this.scrollListener&&r()(window).off(this.scrollListener),this.onLoadListener&&r()(window).off(this.onLoadListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""})}}]),n}();function m(t){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*t}
35551p.defaults={container:"<div data-sticky-container></div>",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",dynamicHeight:!0,checkEvery:-1}},
35551"./js/foundation.tabs.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Tabs",function(){return p});var i=n("jquery"),r=n.n(i),o=n("./js/foundation.core.plugin.js"),l=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js"),u=n("./js/foundation.util.imageLoader.js");function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,o["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=r.a.extend({},n.defaults,this.$element.data(),e),this.className="Tabs",this._init(),a.Keyboard.register("Tabs",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"previous",ARROW_DOWN:"next",ARROW_LEFT:"previous"})}},{key:"_init",value:function(){var s=this,a=this;if(this._isInitializing=!0,this.$element.attr({role:"tablist"}),this.$tabTitles=this.$element.find(".".concat(this.options.linkClass)),this.$tabContent=r()('[data-tabs-content="'.concat(this.$element[0].id,'"]')),this.$tabTitles.each(function(){var t=r()(this),e=t.find("a"),n=t.hasClass("".concat(a.options.linkActiveClass)),i=e.attr("data-tabs-target")||e[0].hash.slice(1),o=e[0].id?e[0].id:"".concat(i,"-label"),s=r()("#".concat(i));t.attr({role:"presentation"}),e.attr({role:"tab","aria-controls":i,"aria-selected":n,id:o,tabindex:n?"0":"-1"}),s.attr({role:"tabpanel","aria-labelledby":o}),n&&(a._initialAnchor="#".concat(i)),n||s.attr("aria-hidden","true"),n&&a.options.autoFocus&&(a.onLoadListener=Object(l.onLoad)(r()(window),function(){r()("html, body").animate({scrollTop:t.offset().top},a.options.deepLinkSmudgeDelay,function(){e.focus()})}))}),this.options.matchHeight){var t=this.$tabContent.find("img");t.length?Object(u.onImagesLoaded)(t,this._setHeight.bind(this)):this._setHeight()}this._checkDeepLink=function(){var t=window.location.hash;if(!t.length){if(s._isInitializing)return;s._initialAnchor&&(t=s._initialAnchor)}var e=0<=t.indexOf("#")?t.slice(1):t,n=e&&r()("#".concat(e)),i=t&&s.$element.find('[href$="'.concat(t,'"],[data-tabs-target="').concat(e,'"]')).first();if(!(!n.length||!i.length)){if(n&&n.length&&i&&i.length?s.selectTab(n,!0):s._collapse(),s.options.deepLinkSmudge){var o=s.$element.offset();r()("html, body").animate({scrollTop:o.top},s.options.deepLinkSmudgeDelay)}s.$element.trigger("deeplink.zf.tabs",[i,n])}},this.options.deepLink&&this._checkDeepLink(),this._events(),this._isInitializing=!1}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),r()(window).on("changed.zf.mediaquery",this._setHeightMqHandler)),this.options.deepLink&&r()(window).on("hashchange",this._checkDeepLink)}},{key:"_addClickHandler",value:function(){var e=this;this.$element.off("click.zf.tabs").on("click.zf.tabs",".".concat(this.options.linkClass),function(t){t.preventDefault(),e._handleTabChange(r()(this))})}},{key:"_addKeyHandler",value:function(){var s=this;this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",function(t){if(9!==t.which){var e,n,i=r()(this),o=i.parent("ul").children("li");o.each(function(t){r()(this).is(i)&&(n=s.options.wrapOnKeys?(e=0===t?o.last():o.eq(t-1),t===o.length-1?o.first():o.eq(t+1)):(e=o.eq(Math.max(0,t-1)),o.eq(Math.min(t+1,o.length-1))))}),a.Keyboard.handleKey(t,"Tabs",{open:function(){i.find('[role="tab"]').focus(),s._handleTabChange(i)},previous:function(){e.find('[role="tab"]').focus(),s._handleTabChange(e)},next:function(){n.find('[role="tab"]').focus(),s._handleTabChange(n)},handled:function(){t.preventDefault()}})}})}},{key:"_handleTabChange",value:function(t,e){if(t.hasClass("".concat(this.options.linkActiveClass)))this.options.activeCollapse&&this._collapse();else{var n=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass)),i=t.find('[role="tab"]'),o=i.attr("data-tabs-target"),s=o&&o.length?"#".concat(o):i[0].hash,a=this.$tabContent.find(s);this._collapseTab(n),this._openTab(t),this.options.deepLink&&!e&&(this.options.updateHistory?history.pushState({},"",s):history.replaceState({},"",s)),this.$element.trigger("change.zf.tabs",[t,a]),a.find("[data-mutate]").trigger("mutateme.zf.trigger")}}},{key:"_openTab",value:function(t){var e=t.find('[role="tab"]'),n=e.attr("data-tabs-target")||e[0].hash.slice(1),i=this.$tabContent.find("#".concat(n));t.addClass("".concat(this.options.linkActiveClass)),e.attr({"aria-selected":"true",tabindex:"0"}),i.addClass("".concat(this.options.panelActiveClass)).removeAttr("aria-hidden")}},{key:"_collapseTab",value:function(t){var e=t.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({"aria-selected":"false",tabindex:-1});r()("#".concat(e.attr("aria-controls"))).removeClass("".concat(this.options.panelActiveClass)).attr({"aria-hidden":"true"})}},{key:"_collapse",value:function(){var t=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass));t.length&&(this._collapseTab(t),this.$element.trigger("collapse.zf.tabs",[t]))}},{key:"selectTab",value:function(t,e){var n,i;(n="object"===s(t)?t[0].id:t).indexOf("#")<0?i="#".concat(n):n=(i=n).slice(1);var o=this.$tabTitles.has('[href$="'.concat(i,'"],[data-tabs-target="').concat(n,'"]')).first();this._handleTabChange(o,e)}},{key:"_setHeight",value:function(){var i=0,o=this;this.$tabContent.find(".".concat(this.options.panelClass)).css("height","").each(function(){var t=r()(this),e=t.hasClass("".concat(o.options.panelActiveClass));e||t.css({visibility:"hidden",display:"block"});var n=this.getBoundingClientRect().height;e||t.css({visibility:"",display:""}),i=i<n?n:i}).css("height","".concat(i,"px"))}},{key:"_destroy",value:function(){this.$element.find(".".concat(this.options.linkClass)).off(".zf.tabs").hide().end().find(".".concat(this.options.panelClass)).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&r()(window).off("changed.zf.mediaquery",this._setHeightMqHandler),this.options.deepLink&&r()(window).off("hashchange",this._checkDeepLink),this.onLoadListener&&r()(window).off(this.onLoadListener)}}]),n}();p.defaults={deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,updateHistory:!1,autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,activeCollapse:!1,linkClass:"tabs-title",linkActiveClass:"is-active",panelClass:"tabs-panel",panelActiveClass:"is-active"}},
35551"./js/foundation.toggler.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Toggler",function(){return p});var i=n("jquery"),s=n.n(i),o=n("./js/foundation.util.motion.js"),a=n("./js/foundation.core.plugin.js"),r=n("./js/foundation.core.utils.js"),l=n("./js/foundation.util.triggers.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,a["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=s.a.extend({},n.defaults,t.data(),e),this.className="",this.className="Toggler",l.Triggers.init(s.a),this._init(),this._events()}},{key:"_init",value:function(){var t,o=this.$element[0].id,e=s()('[data-open~="'.concat(o,'"], [data-close~="').concat(o,'"], [data-toggle~="').concat(o,'"]'));if(this.options.animate)t=this.options.animate.split(" "),this.animationIn=t[0],this.animationOut=t[1]||null,e.attr("aria-expanded",!this.$element.is(":hidden"));else{if("string"!=typeof(t=this.options.toggler)||!t.length)throw new Error("The 'toogler' option containing the target class is required, got \"".concat(t,'"'));this.className="."===t[0]?t.slice(1):t,e.attr("aria-expanded",this.$element.hasClass(this.className))}e.each(function(t,e){var n=s()(e),i=n.attr("aria-controls")||"";new RegExp("\\b".concat(Object(r.RegExpEscape)(o),"\\b")).test(i)||n.attr("aria-controls",i?"".concat(i," ").concat(o):o)})}},{key:"_events",value:function(){this.$element.off("toggle.zf.trigger").on("toggle.zf.trigger",this.toggle.bind(this))}},{key:"toggle",value:function(){this[this.options.animate?"_toggleAnimate":"_toggleClass"]()}},{key:"_toggleClass",value:function(){this.$element.toggleClass(this.className);var t=this.$element.hasClass(this.className);t?this.$element.trigger("on.zf.toggler"):this.$element.trigger("off.zf.toggler"),this._updateARIA(t),this.$element.find("[data-mutate]").trigger("mutateme.zf.trigger")}},{key:"_toggleAnimate",value:function(){var t=this;this.$element.is(":hidden")?o.Motion.animateIn(this.$element,this.animationIn,function(){t._updateARIA(!0),this.trigger("on.zf.toggler"),this.find("[data-mutate]").trigger("mutateme.zf.trigger")}):o.Motion.animateOut(this.$element,this.animationOut,function(){t._updateARIA(!1),this.trigger("off.zf.toggler"),this.find("[data-mutate]").trigger("mutateme.zf.trigger")})}},{key:"_updateARIA",value:function(t){var e=this.$element[0].id;s()('[data-open="'.concat(e,'"], [data-close="').concat(e,'"], [data-toggle="').concat(e,'"]')).attr({"aria-expanded":!!t})}},{key:"_destroy",value:function(){this.$element.off(".zf.toggler")}}]),n}();p.defaults={toggler:void 0,animate:!1}},
35551"./js/foundation.tooltip.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Tooltip",function(){return m});var i=n("jquery"),o=n.n(i),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.mediaQuery.js"),r=n("./js/foundation.util.triggers.js"),l=n("./js/foundation.positionable.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t,e,n){return(d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=f(t)););return t}(t,e);if(i){var o=Object.getOwnPropertyDescriptor(i,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var m=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,f(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(n,l["Positionable"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=o.a.extend({},n.defaults,this.$element.data(),e),this.className="Tooltip",this.isActive=!1,this.isClick=!1,r.Triggers.init(o.a),this._init()}},{key:"_init",value:function(){a.MediaQuery._init();var t=this.$element.attr("aria-describedby")||Object(s.GetYoDigits)(6,"tooltip");this.options.tipText=this.options.tipText||this.$element.attr("title"),this.template=this.options.template?o()(this.options.template):this._buildTemplate(t),this.options.allowHtml?this.template.appendTo(document.body).html(this.options.tipText).hide():this.template.appendTo(document.body).text(this.options.tipText).hide(),this.$element.attr({title:"","aria-describedby":t,"data-yeti-box":t,"data-toggle":t,"data-resize":t}).addClass(this.options.triggerClass),d(f(n.prototype),"_init",this).call(this),this._events()}},{key:"_getDefaultPosition",value:function(){var t=this.$element[0].className;this.$element[0]instanceof SVGElement&&(t=t.baseVal);var e=t.match(/\b(top|left|right|bottom)\b/g);return e?e[0]:"top"}},{key:"_getDefaultAlignment",value:function(){return"center"}},{key:"_getHOffset",value:function(){return"left"===this.position||"right"===this.position?this.options.hOffset+this.options.tooltipWidth:this.options.hOffset}},{key:"_getVOffset",value:function(){return"top"===this.position||"bottom"===this.position?this.options.vOffset+this.options.tooltipHeight:this.options.vOffset}},{key:"_buildTemplate",value:function(t){var e="".concat(this.options.tooltipClass," ").concat(this.options.templateClasses).trim();return o()("<div></div>").addClass(e).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:t})}},{key:"_setPosition",value:function(){d(f(n.prototype),"_setPosition",this).call(this,this.$element,this.template)}},{key:"show",value:function(){if("all"!==this.options.showOn&&!a.MediaQuery.is(this.options.showOn))return!1;this.template.css("visibility","hidden").show(),this._setPosition(),this.template.removeClass("top bottom left right").addClass(this.position),this.template.removeClass("align-top align-bottom align-left align-right align-center").addClass("align-"+this.alignment),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),this.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,function(){}),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,function(){t.isActive=!1,t.isClick=!1}),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var e=this,t="ontouchstart"in window||void 0!==window.ontouchstart,n=(this.template,!1);t&&this.options.disableForTouch||(this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",function(t){e.isActive||(e.timeout=setTimeout(function(){e.show()}
35551,e.options.hoverDelay))}).on("mouseleave.zf.tooltip",Object(s.ignoreMousedisappear)(function(t){clearTimeout(e.timeout),n&&(!e.isClick||e.options.clickOpen)||e.hide()})),t&&this.$element.on("tap.zf.tooltip touchend.zf.tooltip",function(t){e.isActive?e.hide():e.show()}),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",function(t){e.isClick||(e.isClick=!0,!e.options.disableHover&&e.$element.attr("tabindex")||e.isActive||e.show())}):this.$element.on("mousedown.zf.tooltip",function(t){e.isClick=!0}),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",function(t){if(n=!0,e.isClick)return e.options.clickOpen||(n=!1),!1;e.show()}).on("focusout.zf.tooltip",function(t){n=!1,e.isClick=!1,e.hide()}).on("resizeme.zf.trigger",function(){e.isActive&&e._setPosition()}))}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"_destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tooltip").removeClass(this.options.triggerClass).removeClass("top right left bottom").removeAttr("aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box"),this.template.remove()}}]),n}();m.defaults={hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,disableForTouch:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!1,vOffset:0,hOffset:0,tooltipHeight:14,tooltipWidth:12,allowHtml:!1}},
vendor: 1,875 bytes, line 35551
35551"./js/foundation.util.box.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Box",function(){return i});var i={ImNotTouchingYou:function(t,e,n,i,o){return 0===s(t,e,n,i,o)},OverlapArea:s,GetDimensions:h,GetExplicitOffsets:function(t,e,n,i,o,s,a){var r,l,u=h(t),c=e?h(e):null;if(null!==c){switch(n){case"top":r=c.offset.top-(u.height+o);break;case"bottom":r=c.offset.top+c.height+o;break;case"left":l=c.offset.left-(u.width+s);break;case"right":l=c.offset.left+c.width+s}switch(n){case"top":case"bottom":switch(i){case"left":l=c.offset.left+s;break;case"right":l=c.offset.left-u.width+c.width-s;break;case"center":l=a?s:c.offset.left+c.width/2-u.width/2+s}break;case"right":case"left":switch(i){case"bottom":r=c.offset.top-o+c.height-u.height;break;case"top":r=c.offset.top+o;break;case"center":r=c.offset.top+o+c.height/2-u.height/2}}}return{top:r,left:l}}};function s(t,e,n,i,o){var s,a,r,l,u=h(t);if(e){var c=h(e);a=c.height+c.offset.top-(u.offset.top+u.height),s=u.offset.top-c.offset.top,r=u.offset.left-c.offset.left,l=c.width+c.offset.left-(u.offset.left+u.width)}else a=u.windowDims.height+u.windowDims.offset.top-(u.offset.top+u.height),s=u.offset.top-u.windowDims.offset.top,r=u.offset.left-u.windowDims.offset.left,l=u.windowDims.width-(u.offset.left+u.width);return a=o?0:Math.min(a,0),s=Math.min(s,0),r=Math.min(r,0),l=Math.min(l,0),n?r+l:i?s+a:Math.sqrt(s*s+a*a+r*r+l*l)}function h(t){if((t=t.length?t[0]:t)===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var e=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),i=document.body.getBoundingClientRect(),o=window.pageYOffset,s=window.pageXOffset;return{width:e.width,height:e.height,offset:{top:e.top+o,left:e.left+s},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+s}},windowDims:{width:i.width,height:i.height,offset:{top:o,left:s}}}}},
35551"./js/foundation.util.imageLoader.js":function(t,e,n){"use strict";n.r(e),n.d(e,"onImagesLoaded",function(){return s});var i=n("jquery"),o=n.n(i);function s(t,e){var n=t.length;function i(){0===--n&&e()}0===n&&e(),t.each(function(){if(this.complete&&void 0!==this.naturalWidth)i();else{var t=new Image,n="load.zf.images error.zf.images";o()(t).one(n,function t(e){o()(this).off(n,t),i()}),t.src=o()(this).attr("src")}})}},
35551"./js/foundation.util.keyboard.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Keyboard",function(){return c});var i=n("jquery"),r=n.n(i),l=n("./js/foundation.core.utils.js"),o={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",35:"END",36:"HOME",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},u={};function s(t){return!!t&&t.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter(function(){return!(!r()(this).is(":visible")||r()(this).attr("tabindex")<0)})}function a(t){var e=o[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return e=e.replace(/\W+/,""),t.shiftKey&&(e="SHIFT_".concat(e)),t.ctrlKey&&(e="CTRL_".concat(e)),t.altKey&&(e="ALT_".concat(e)),e=e.replace(/_$/,"")}var c={keys:function(t){var e={};for(var n in t)e[t[n]]=t[n];return e}(o),parseKey:a,handleKey:function(t,e,n){var i,o=u[e],s=this.parseKey(t);if(!o)return console.warn("Component not defined!");if(!0!==t.zfIsKeyHandled)if((i=n[(void 0===o.ltr?o:Object(l.rtl)()?r.a.extend({},o.ltr,o.rtl):r.a.extend({},o.rtl,o.ltr))[s]])&&"function"==typeof i){var a=i.apply();t.zfIsKeyHandled=!0,!n.handled&&"function"!=typeof n.handled||n.handled(a)}else!n.unhandled&&"function"!=typeof n.unhandled||n.unhandled()},findFocusable:s,register:function(t,e){u[t]=e},trapFocus:function(t){var e=s(t),n=e.eq(0),i=e.eq(-1);t.on("keydown.zf.trapfocus",function(t){t.target===i[0]&&"TAB"===a(t)?(t.preventDefault(),n.focus()):t.target===n[0]&&"SHIFT_TAB"===a(t)&&(t.preventDefault(),i.focus())})},releaseFocus:function(t){t.off("keydown.zf.trapfocus")}}},
35551"./js/foundation.util.mediaQuery.js":function(t,e,n){"use strict";n.r(e),n.d(e,"MediaQuery",function(){return r});var i=n("jquery"),o=n.n(i);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],i=!0,o=!1,s=void 0;try{for(var a,r=t[Symbol.iterator]();!(i=(a=r.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){o=!0,s=t}finally{try{i||null==r.return||r.return()}finally{if(o)throw s}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}window.matchMedia||(window.matchMedia=function(){var e=window.styleMedia||window.media;if(!e){var n,i=document.createElement("style"),t=document.getElementsByTagName("script")[0];i.type="text/css",i.id="matchmediajs-test",t?t.parentNode.insertBefore(i,t):document.head.appendChild(i),n="getComputedStyle"in window&&window.getComputedStyle(i,null)||i.currentStyle,e={matchMedium:function(t){var e="@media "+t+"{ #matchmediajs-test { width: 1px; } }";return i.styleSheet?i.styleSheet.cssText=e:i.textContent=e,"1px"===n.width}}}return function(t){return{matches:e.matchMedium(t||"all"),media:t||"all"}}}());var r={queries:[],current:"",_init:function(){if(!0!==this.isInitialized){this.isInitialized=!0;o()("meta.foundation-mq").length||o()('<meta class="foundation-mq">').appendTo(document.head);var t,e=o()(".foundation-mq").css("font-family");for(var n in t=function(t){var e={};return"string"==typeof t&&(t=t.trim().slice(1,-1))?e=t.split("&").reduce(function(t,e){var n=e.replace(/\+/g," ").split("="),i=n[0],o=n[1];return i=decodeURIComponent(i),o=void 0===o?null:decodeURIComponent(o),t.hasOwnProperty(i)?Array.isArray(t[i])?t[i].push(o):t[i]=[t[i],o]:t[i]=o,t},{}):e}(e),this.queries=[],t)t.hasOwnProperty(n)&&this.queries.push({name:n,value:"only screen and (min-width: ".concat(t[n],")")});this.current=this._getCurrentSize(),this._watcher()}},_reInit:function(){this.isInitialized=!1,this._init()},atLeast:function(t){var e=this.get(t);return!!e&&window.matchMedia(e).matches},only:function(t){return t===this._getCurrentSize()},upTo:function(t){var e=this.next(t);return!e||!this.atLeast(e)},is:function(t){var e=a(t.trim().split(" ").filter(function(t){return!!t.length}),2),n=e[0],i=e[1],o=void 0===i?"":i;if("only"===o)return this.only(n);if(!o||"up"===o)return this.atLeast(n);if("down"===o)return this.upTo(n);throw new Error('\n      Invalid breakpoint passed to MediaQuery.is().\n      Expected a breakpoint name formatted like "<size> <modifier>", got "'.concat(t,'".\n    '))},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var n=this.queries[e];if(t===n.name)return n.value}return null},next:function(e){var n=this,t=this.queries.findIndex(function(t){return n._getQueryName(t)===e});if(-1===t)throw new Error('\n        Unknown breakpoint "'.concat(e,'" passed to MediaQuery.next().\n        Ensure it is present in your Sass "$breakpoints" setting.\n      '));var i=this.queries[t+1];return i?i.name:null},_getQueryName:function(t){if("string"==typeof t)return t;if("object"===s(t))return t.name;throw new TypeError('\n      Invalid value passed to MediaQuery._getQueryName().\n      Expected a breakpoint name (String) or a breakpoint query (Object), got "'.concat(t,'" (').concat(s(t),")\n    "))},_getCurrentSize:function(){for(var t,e=0;e<this.queries.length;e++){var n=this.queries[e];window.matchMedia(n.value).matches&&(t=n)}return t&&this._getQueryName(t)},_watcher:function(){var n=this;o()(window).off("resize.zf.mediaquery").on("resize.zf.mediaquery",function(){var t=n._getCurrentSize(),e=n.current;t!==e&&(n.current=t,o()(window).trigger("changed.zf.mediaquery",[t,e]))})}}},
35551"./js/foundation.util.motion.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Move",function(){return s}),n.d(e,"Motion",function(){return o});var i=n("jquery"),r=n.n(i),l=n("./js/foundation.core.utils.js"),u=["mui-enter","mui-leave"],c=["mui-enter-active","mui-leave-active"],o={animateIn:function(t,e,n){a(!0,t,e,n)},animateOut:function(t,e,n){a(!1,t,e,n)}};function s(n,i,o){var s,a,r=null;if(0===n)return o.apply(i),void i.trigger("finished.zf.animate",[i]).triggerHandler("finished.zf.animate",[i]);s=window.requestAnimationFrame(function t(e){a=e-(r=r||e),o.apply(i),a<n?s=window.requestAnimationFrame(t,i):(window.cancelAnimationFrame(s),i.trigger("finished.zf.animate",[i]).triggerHandler("finished.zf.animate",[i]))})}function a(t,e,n,i){if((e=r()(e).eq(0)).length){var o=t?u[0]:u[1],s=t?c[0]:c[1];a(),e.addClass(n).css("transition","none"),requestAnimationFrame(function(){e.addClass(o),t&&e.show()}),requestAnimationFrame(function(){e[0].offsetWidth,e.css("transition","").addClass(s)}),e.one(Object(l.transitionend)(e),function(){t||e.hide();a(),i&&i.apply(e)})}function a(){e[0].style.transitionDuration=0,e.removeClass("".concat(o," ").concat(s," ").concat(n))}}},
35551"./js/foundation.util.nest.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Nest",function(){return o});var i=n("jquery"),l=n.n(i),o={Feather:function(t,e){var n=1<arguments.length&&void 0!==e?e:"zf";t.attr("role","menubar"),t.find("a").attr({role:"menuitem"});var i=t.find("li").attr({role:"none"}),o="is-".concat(n,"-submenu"),s="".concat(o,"-item"),a="is-".concat(n,"-submenu-parent"),r="accordion"!==n;i.each(function(){var t=l()(this),e=t.children("ul");e.length&&(t.addClass(a),r&&(t.attr({"aria-haspopup":!0,"aria-label":t.children("a:first").text()}),"drilldown"===n&&t.attr({"aria-expanded":!1})),e.addClass("submenu ".concat(o)).attr({"data-submenu":"",role:"menubar"}),"drilldown"===n&&e.attr({"aria-hidden":!0})),t.parent("[data-submenu]").length&&t.addClass("is-submenu-item ".concat(s))})},Burn:function(t,e){var n="is-".concat(e,"-submenu"),i="".concat(n,"-item"),o="is-".concat(e,"-submenu-parent");t.find(">li, > li > ul, .menu, .menu > li, [data-submenu] > li").removeClass("".concat(n," ").concat(i," ").concat(o," is-submenu-item submenu is-active")).removeAttr("data-submenu").css("display","")}}},
vendor: 639 bytes, line 35551
35551"./js/foundation.util.timer.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Timer",function(){return i});n("jquery");function i(e,t,n){var i,o,s=this,a=t.duration,r=Object.keys(e.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(o),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(o),l=l<=0?a:l,e.data("paused",!1),i=Date.now(),o=setTimeout(function(){t.infinite&&s.restart(),n&&"function"==typeof n&&n()},l),e.trigger("timerstart.zf.".concat(r))},this.pause=function(){this.isPaused=!0,clearTimeout(o),e.data("paused",!0);var t=Date.now();l-=t-i,e.trigger("timerpaused.zf.".concat(r))}}},
35551"./js/foundation.util.touch.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Touch",function(){return c});var i=n("jquery"),o=n.n(i);function s(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var a,r,l,u,c={},h=!1,d=!1;function f(t){if(this.removeEventListener("touchmove",p),this.removeEventListener("touchend",f),!d){var e=o.a.Event("tap",u||t);o()(this).trigger(e)}u=null,d=h=!1}function p(t){if(o.a.spotSwipe.preventDefault&&t.preventDefault(),h){var e,n=t.touches[0].pageX,i=(t.touches[0].pageY,a-n);d=!0,l=(new Date).getTime()-r,Math.abs(i)>=o.a.spotSwipe.moveThreshold&&l<=o.a.spotSwipe.timeThreshold&&(e=0<i?"left":"right"),e&&(t.preventDefault(),f.apply(this,arguments),o()(this).trigger(o.a.Event("swipe",Object.assign({},t)),e).trigger(o.a.Event("swipe".concat(e),Object.assign({},t))))}}function m(t){1==t.touches.length&&(a=t.touches[0].pageX,t.touches[0].pageY,u=t,d=!(h=!0),r=(new Date).getTime(),this.addEventListener("touchmove",p,!1),this.addEventListener("touchend",f,!1))}function g(){this.addEventListener&&this.addEventListener("touchstart",m,!1)}var v=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.version="1.0.0",this.enabled="ontouchstart"in document.documentElement,this.preventDefault=!1,this.moveThreshold=75,this.timeThreshold=200,this.$=t,this._init()}return function(t,e,n){e&&s(t.prototype,e),n&&s(t,n)}(e,[{key:"_init",value:function(){var t=this.$;t.event.special.swipe={setup:g},t.event.special.tap={setup:g},t.each(["left","up","down","right"],function(){t.event.special["swipe".concat(this)]={setup:function(){t(this).on("swipe",t.noop)}}})}}]),e}();c.setupSpotSwipe=function(t){t.spotSwipe=new v(t)},c.setupTouchHandler=function(i){i.fn.addTouch=function(){this.each(function(t,e){i(e).bind("touchstart touchmove touchend touchcancel",function(t){n(t)})});var n=function(t){var e,n=t.changedTouches[0],i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"}[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(i,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(e)}}},c.init=function(t){void 0===t.spotSwipe&&(c.setupSpotSwipe(t),c.setupTouchHandler(t))}},
vendor: 4,739 bytes, line 35551
35551"./js/foundation.util.triggers.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Triggers",function(){return c});var i=n("jquery"),s=n.n(i),o=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.motion.js");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(e,n){e.data(n).split(" ").forEach(function(t){s()("#".concat(t))["close"===n?"trigger":"triggerHandler"]("".concat(n,".zf.trigger"),[e])})}var u=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e<t.length;e++)if("".concat(t[e],"MutationObserver")in window)return window["".concat(t[e],"MutationObserver")];return!1}(),c={Listeners:{Basic:{},Global:{}},Initializers:{}};function h(e,t,n){var i,o=Array.prototype.slice.call(arguments,3);s()(window).off(t).on(t,function(t){i&&clearTimeout(i),i=setTimeout(function(){n.apply(null,o)},e||10)})}c.Listeners.Basic={openListener:function(){l(s()(this),"open")},closeListener:function(){s()(this).data("close")?l(s()(this),"close"):s()(this).trigger("close.zf.trigger")},toggleListener:function(){s()(this).data("toggle")?l(s()(this),"toggle"):s()(this).trigger("toggle.zf.trigger")},closeableListener:function(t){var e=s()(this).data("closable");t.stopPropagation(),""!==e?a.Motion.animateOut(s()(this),e,function(){s()(this).trigger("closed.zf")}):s()(this).fadeOut().trigger("closed.zf")},toggleFocusListener:function(){var t=s()(this).data("toggle-focus");s()("#".concat(t)).triggerHandler("toggle.zf.trigger",[s()(this)])}},c.Initializers.addOpenListener=function(t){t.off("click.zf.trigger",c.Listeners.Basic.openListener),t.on("click.zf.trigger","[data-open]",c.Listeners.Basic.openListener)},c.Initializers.addCloseListener=function(t){t.off("click.zf.trigger",c.Listeners.Basic.closeListener),t.on("click.zf.trigger","[data-close]",c.Listeners.Basic.closeListener)},c.Initializers.addToggleListener=function(t){t.off("click.zf.trigger",c.Listeners.Basic.toggleListener),t.on("click.zf.trigger","[data-toggle]",c.Listeners.Basic.toggleListener)},c.Initializers.addCloseableListener=function(t){t.off("close.zf.trigger",c.Listeners.Basic.closeableListener),t.on("close.zf.trigger","[data-closeable], [data-closable]",c.Listeners.Basic.closeableListener)},c.Initializers.addToggleFocusListener=function(t){t.off("focus.zf.trigger blur.zf.trigger",c.Listeners.Basic.toggleFocusListener),t.on("focus.zf.trigger blur.zf.trigger","[data-toggle-focus]",c.Listeners.Basic.toggleFocusListener)},c.Listeners.Global={resizeListener:function(t){u||t.each(function(){s()(this).triggerHandler("resizeme.zf.trigger")}),t.attr("data-events","resize")},scrollListener:function(t){u||t.each(function(){s()(this).triggerHandler("scrollme.zf.trigger")}),t.attr("data-events","scroll")},closeMeListener:function(t,e){var n=t.namespace.split(".")[0];s()("[data-".concat(n,"]")).not('[data-yeti-box="'.concat(e,'"]')).each(function(){var t=s()(this);t.triggerHandler("close.zf.trigger",[t])})}},c.Initializers.addClosemeListener=function(t){var e=s()("[data-yeti-box]"),n=["dropdown","tooltip","reveal"];if(t&&("string"==typeof t?n.push(t):"object"===r(t)&&"string"==typeof t[0]?n=n.concat(t):console.error("Plugin names must be strings")),e.length){var i=n.map(function(t){return"closeme.zf.".concat(t)}).join(" ");s()(window).off(i).on(i,c.Listeners.Global.closeMeListener)}},c.Initializers.addResizeListener=function(t){var e=s()("[data-resize]");e.length&&h(t,"resize.zf.trigger",c.Listeners.Global.resizeListener,e)},c.Initializers.addScrollListener=function(t){var e=s()("[data-scroll]");e.length&&h(t,"scroll.zf.trigger",c.Listeners.Global.scrollListener,e)},c.Initializers.addMutationEventsListener=function(t){if(!u)return!1;function e(t){var e=s()(t[0].target);switch(t[0].type){case"attributes":"scroll"===e.attr("data-events")&&"data-events"===t[0].attributeName&&e.triggerHandler("scrollme.zf.trigger",[e,window.pageYOffset]),"resize"===e.attr("data-events")&&"data-events"===t[0].attributeName&&e.triggerHandler("resizeme.zf.trigger",[e]),"style"===t[0].attributeName&&(e.closest("[data-mutate]").attr("data-events","mutate"),e.closest("[data-mutate]").triggerHandler("mutateme.zf.trigger",[e.closest("[data-mutate]")]));break;case"childList":e.closest("[data-mutate]").attr("data-events","mutate"),e.closest("[data-mutate]").triggerHandler("mutateme.zf.trigger",[e.closest("[data-mutate]")]);break;default:return!1}}var n=t.find("[data-resize], [data-scroll], [data-mutate]");if(n.length)for(var i=0;i<=n.length-1;i++){new u(e).observe(n[i],{attributes:!0,childList:!0,characterData:!1,subtree:!0,attributeFilter:["data-events","style"]})}}
35551,c.Initializers.addSimpleListeners=function(){var t=s()(document);c.Initializers.addOpenListener(t),c.Initializers.addCloseListener(t),c.Initializers.addToggleListener(t),c.Initializers.addCloseableListener(t),c.Initializers.addToggleFocusListener(t)},c.Initializers.addGlobalListeners=function(){var t=s()(document);c.Initializers.addMutationEventsListener(t),c.Initializers.addResizeListener(),c.Initializers.addScrollListener(),c.Initializers.addClosemeListener()},c.init=function(t,e){Object(o.onLoad)(t(window),function(){!0!==t.triggersInitialized&&(c.Initializers.addSimpleListeners(),c.Initializers.addGlobalListeners(),t.triggersInitialized=!0)}),e&&(e.Triggers=c,e.IHearYou=c.Initializers.addGlobalListeners)}}
35551,0:function(t,e,n){t.exports=n("./js/entries/foundation.js")},jquery:function(t,e){t.exports=n}},o.c=s,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(n,i,function(t){return e[t]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=0);function o(t){if(s[t])return s[t].exports;var e=s[t]={i:t,l:!1,exports:{}};return i[t].call(e.exports,e,e.exports,o),e.l=!0,e.exports}var i,s});
35552//# sourceMappingURL=foundation.min.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.