PageSourceSearch

https://www.theatrehullabaloo.org.uk/wp-content/themes/hullabaloo_theme/js/min/all.js?ver=1791072456

js theatrehullabaloo.org.uk collected 2026-10-04 00:07:58 UTC 689,435 bytes, 4,101 lines download raw bytes

1var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj;}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};/* axios v0.17.1 | (c) 2017 by Matt Zabriskie */(function webpackUniversalModuleDefinition(root,factory){if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&(typeof module==='undefined'?'undefined':_typeof(module))==='object')module.exports=factory();else if(typeof define==='function'&&define.amd)define([],factory);else if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object')exports["axios"]=factory();else root["axios"]=factory();})(this,function(){return(/******/function(modules){// webpackBootstrap
2/******/// The module cache
3/******/var installedModules={};/******//******/// The require function
4/******/function __webpack_require__(moduleId){/******//******/// Check if module is in cache
5/******/if(installedModules[moduleId])/******/return installedModules[moduleId].exports;/******//******/// Create a new module (and put it into the cache)
6/******/var module=installedModules[moduleId]={/******/exports:{},/******/id:moduleId,/******/loaded:false/******/};/******//******/// Execute the module function
7/******/modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);/******//******/// Flag the module as loaded
8/******/module.loaded=true;/******//******/// Return the exports of the module
9/******/return module.exports;/******/}/******//******//******/// expose the modules object (__webpack_modules__)
10/******/__webpack_require__.m=modules;/******//******/// expose the module cache
11/******/__webpack_require__.c=installedModules;/******//******/// __webpack_public_path__
12/******/__webpack_require__.p="";/******//******/// Load entry module and return exports
13/******/return __webpack_require__(0);/******/}(/************************************************************************//******/[/* 0 *//***/function(module,exports,__webpack_require__){module.exports=__webpack_require__(1);/***/},/* 1 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);var bind=__webpack_require__(3);var Axios=__webpack_require__(5);var defaults=__webpack_require__(6);/**
14	 * Create an instance of Axios
15	 *
16	 * @param {Object} defaultConfig The default config for the instance
17	 * @return {Axios} A new instance of Axios
18	 */function createInstance(defaultConfig){var context=new Axios(defaultConfig);var instance=bind(Axios.prototype.request,context);// Copy axios.prototype to instance
19utils.extend(instance,Axios.prototype,context);// Copy context to instance
20utils.extend(instance,context);return instance;}// Create the default instance to be exported
21var axios=createInstance(defaults);// Expose Axios class to allow class inheritance
22axios.Axios=Axios;// Factory for creating new instances
23axios.create=function create(instanceConfig){return createInstance(utils.merge(defaults,instanceConfig));};// Expose Cancel & CancelToken
24axios.Cancel=__webpack_require__(23);axios.CancelToken=__webpack_require__(24);axios.isCancel=__webpack_require__(20);// Expose all/spread
25axios.all=function all(promises){return Promise.all(promises);};axios.spread=__webpack_require__(25);module.exports=axios;// Allow use of default import syntax in TypeScript
26module.exports.default=axios;/***/},/* 2 *//***/function(module,exports,__webpack_require__){'use strict';var bind=__webpack_require__(3);var isBuffer=__webpack_require__(4);/*global toString:true*/// utils is a library of generic helper functions non-specific to axios
27var toString=Object.prototype.toString;/**
28	 * Determine if a value is an Array
29	 *
30	 * @param {Object} val The value to test
31	 * @returns {boolean} True if value is an Array, otherwise false
32	 */function isArray(val){return toString.call(val)==='[object Array]';}/**
33	 * Determine if a value is an ArrayBuffer
34	 *
35	 * @param {Object} val The value to test
36	 * @returns {boolean} True if value is an ArrayBuffer, otherwise false
37	 */function isArrayBuffer(val){return toString.call(val)==='[object ArrayBuffer]';}/**
38	 * Determine if a value is a FormData
39	 *
40	 * @param {Object} val The value to test
41	 * @returns {boolean} True if value is an FormData, otherwise false
42	 */function isFormData(val){return typeof FormData!=='undefined'&&val instanceof FormData;}/**
43	 * Determine if a value is a view on an ArrayBuffer
44	 *
45	 * @param {Object} val The value to test
46	 * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
47	 */function isArrayBufferView(val){var result;if(typeof ArrayBuffer!=='undefined'&&ArrayBuffer.isView){result=ArrayBuffer.isView(val);}else{result=val&&val.buffer&&val.buffer instanceof ArrayBuffer;}return result;}/**
48	 * Determine if a value is a String
49	 *
50	 * @param {Object} val The value to test
51	 * @returns {boolean} True if value is a String, otherwise false
52	 */function isString(val){return typeof val==='string';}/**
53	 * Determine if a value is a Number
54	 *
55	 * @param {Object} val The value to test
56	 * @returns {boolean} True if value is a Number, otherwise false
57	 */function isNumber(val){return typeof val==='number';}/**
58	 * Determine if a value is undefined
59	 *
60	 * @param {Object} val The value to test
61	 * @returns {boolean} True if the value is undefined, otherwise false
62	 */function isUndefined(val){return typeof val==='undefined';}/**
63	 * Determine if a value is an Object
64	 *
65	 * @param {Object} val The value to test
66	 * @returns {boolean} True if value is an Object, otherwise false
67	 */function isObject(val){return val!==null&&(typeof val==='undefined'?'undefined':_typeof(val))==='object';}/**
68	 * Determine if a value is a Date
69	 *
70	 * @param {Object} val The value to test
71	 * @returns {boolean} True if value is a Date, otherwise false
72	 */function isDate(val){return toString.call(val)==='[object Date]';}/**
73	 * Determine if a value is a File
74	 *
75	 * @param {Object} val The value to test
76	 * @returns {boolean} True if value is a File, otherwise false
77	 */function isFile(val){return toString.call(val)==='[object File]';}/**
78	 * Determine if a value is a Blob
79	 *
80	 * @param {Object} val The value to test
81	 * @returns {boolean} True if value is a Blob, otherwise false
82	 */function isBlob(val){return toString.call(val)==='[object Blob]';}/**
83	 * Determine if a value is a Function
84	 *
85	 * @param {Object} val The value to test
86	 * @returns {boolean} True if value is a Function, otherwise false
87	 */function isFunction(val){return toString.call(val)==='[object Function]';}/**
88	 * Determine if a value is a Stream
89	 *
90	 * @param {Object} val The value to test
91	 * @returns {boolean} True if value is a Stream, otherwise false
92	 */function isStream(val){return isObject(val)&&isFunction(val.pipe);}/**
93	 * Determine if a value is a URLSearchParams object
94	 *
95	 * @param {Object} val The value to test
96	 * @returns {boolean} True if value is a URLSearchParams object, otherwise false
97	 */function isURLSearchParams(val){return typeof URLSearchParams!=='undefined'&&val instanceof URLSearchParams;}/**
98	 * Trim excess whitespace off the beginning and end of a string
99	 *
100	 * @param {String} str The String to trim
101	 * @returns {String} The String freed of excess whitespace
102	 */function trim(str){return str.replace(/^\s*/,'').replace(/\s*$/,'');}/**
103	 * Determine if we're running in a standard browser environment
104	 *
105	 * This allows axios to run in a web worker, and react-native.
106	 * Both environments support XMLHttpRequest, but not fully standard globals.
107	 *
108	 * web workers:
109	 *  typeof window -> undefined
110	 *  typeof document -> undefined
111	 *
112	 * react-native:
113	 *  navigator.product -> 'ReactNative'
114	 */function isStandardBrowserEnv(){if(typeof navigator!=='undefined'&&navigator.product==='ReactNative'){return false;}return typeof window!=='undefined'&&typeof document!=='undefined';}/**
115	 * Iterate over an Array or an Object invoking a function for each item.
116	 *
117	 * If `obj` is an Array callback will be called passing
118	 * the value, index, and complete array for each item.
119	 *
120	 * If 'obj' is an Object callback will be called passing
121	 * the value, key, and complete object for each property.
122	 *
123	 * @param {Object|Array} obj The object to iterate
124	 * @param {Function} fn The callback to invoke for each item
125	 */function forEach(obj,fn){// Don't bother if no value provided
126if(obj===null||typeof obj==='undefined'){return;}// Force an array if not already something iterable
127if((typeof obj==='undefined'?'undefined':_typeof(obj))!=='object'){/*eslint no-param-reassign:0*/obj=[obj];}if(isArray(obj)){// Iterate over array values
128for(var i=0,l=obj.length;i<l;i++){fn.call(null,obj[i],i,obj);}}else{// Iterate over object keys
129for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key)){fn.call(null,obj[key],key,obj);}}}}/**
130	 * Accepts varargs expecting each argument to be an object, then
131	 * immutably merges the properties of each object and returns result.
132	 *
133	 * When multiple objects contain the same key the later object in
134	 * the arguments list will take precedence.
135	 *
136	 * Example:
137	 *
138	 * ```js
139	 * var result = merge({foo: 123}, {foo: 456});
140	 * console.log(result.foo); // outputs 456
141	 * ```
142	 *
143	 * @param {Object} obj1 Object to merge
144	 * @returns {Object} Result of all merge properties
145	 */function merge()/* obj1, obj2, obj3, ... */{var result={};function assignValue(val,key){if(_typeof(result[key])==='object'&&(typeof val==='undefined'?'undefined':_typeof(val))==='object'){result[key]=merge(result[key],val);}else{result[key]=val;}}for(var i=0,l=arguments.length;i<l;i++){forEach(arguments[i],assignValue);}return result;}/**
146	 * Extends object a by mutably adding to it the properties of object b.
147	 *
148	 * @param {Object} a The object to be extended
149	 * @param {Object} b The object to copy properties from
150	 * @param {Object} thisArg The object to bind function to
151	 * @return {Object} The resulting value of object a
152	 */function extend(a,b,thisArg){forEach(b,function assignValue(val,key){if(thisArg&&typeof val==='function'){a[key]=bind(val,thisArg);}else{a[key]=val;}});return a;}module.exports={isArray:isArray,isArrayBuffer:isArrayBuffer,isBuffer:isBuffer,isFormData:isFormData,isArrayBufferView:isArrayBufferView,isString:isString,isNumber:isNumber,isObject:isObject,isUndefined:isUndefined,isDate:isDate,isFile:isFile,isBlob:isBlob,isFunction:isFunction,isStream:isStream,isURLSearchParams:isURLSearchParams,isStandardBrowserEnv:isStandardBrowserEnv,forEach:forEach,merge:merge,extend:extend,trim:trim};/***/},/* 3 *//***/function(module,exports){'use strict';module.exports=function bind(fn,thisArg){return function wrap(){var args=new Array(arguments.length);for(var i=0;i<args.length;i++){args[i]=arguments[i];}return fn.apply(thisArg,args);};};/***/},/* 4 *//***/function(module,exports){/*!
153	 * Determine if an object is a Buffer
154	 *
155	 * @author   Feross Aboukhadijeh <[email protected]> <http://feross.org>
156	 * @license  MIT
157	 */// The _isBuffer check is for Safari 5-7 support, because it's missing
158// Object.prototype.constructor. Remove this eventually
159module.exports=function(obj){return obj!=null&&(isBuffer(obj)||isSlowBuffer(obj)||!!obj._isBuffer);};function isBuffer(obj){return!!obj.constructor&&typeof obj.constructor.isBuffer==='function'&&obj.constructor.isBuffer(obj);}// For Node v0.10 support. Remove this eventually.
160function isSlowBuffer(obj){return typeof obj.readFloatLE==='function'&&typeof obj.slice==='function'&&isBuffer(obj.slice(0,0));}/***/},/* 5 *//***/function(module,exports,__webpack_require__){'use strict';var defaults=__webpack_require__(6);var utils=__webpack_require__(2);var InterceptorManager=__webpack_require__(17);var dispatchRequest=__webpack_require__(18);/**
161	 * Create a new instance of Axios
162	 *
163	 * @param {Object} instanceConfig The default config for the instance
164	 */function Axios(instanceConfig){this.defaults=instanceConfig;this.interceptors={request:new InterceptorManager(),response:new InterceptorManager()};}/**
165	 * Dispatch a request
166	 *
167	 * @param {Object} config The config specific for this request (merged with this.defaults)
168	 */Axios.prototype.request=function request(config){/*eslint no-param-reassign:0*/// Allow for axios('example/url'[, config]) a la fetch API
169if(typeof config==='string'){config=utils.merge({url:arguments[0]},arguments[1]);}config=utils.merge(defaults,this.defaults,{method:'get'},config);config.method=config.method.toLowerCase();// Hook up interceptors middleware
170var chain=[dispatchRequest,undefined];var promise=Promise.resolve(config);this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor){chain.unshift(interceptor.fulfilled,interceptor.rejected);});this.interceptors.response.forEach(function pushResponseInterceptors(interceptor){chain.push(interceptor.fulfilled,interceptor.rejected);});while(chain.length){promise=promise.then(chain.shift(),chain.shift());}return promise;};// Provide aliases for supported request methods
vendor: 10,596 bytes, lines 171-240
171utils.forEach(['delete','get','head','options'],function forEachMethodNoData(method){/*eslint func-names:0*/Axios.prototype[method]=function(url,config){return this.request(utils.merge(config||{},{method:method,url:url}));};});utils.forEach(['post','put','patch'],function forEachMethodWithData(method){/*eslint func-names:0*/Axios.prototype[method]=function(url,data,config){return this.request(utils.merge(config||{},{method:method,url:url,data:data}));};});module.exports=Axios;/***/},/* 6 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);var normalizeHeaderName=__webpack_require__(7);var DEFAULT_CONTENT_TYPE={'Content-Type':'application/x-www-form-urlencoded'};function setContentTypeIfUnset(headers,value){if(!utils.isUndefined(headers)&&utils.isUndefined(headers['Content-Type'])){headers['Content-Type']=value;}}function getDefaultAdapter(){var adapter;if(typeof XMLHttpRequest!=='undefined'){// For browsers use XHR adapter
172adapter=__webpack_require__(8);}else if(typeof process!=='undefined'){// For node use HTTP adapter
173adapter=__webpack_require__(8);}return adapter;}var defaults={adapter:getDefaultAdapter(),transformRequest:[function transformRequest(data,headers){normalizeHeaderName(headers,'Content-Type');if(utils.isFormData(data)||utils.isArrayBuffer(data)||utils.isBuffer(data)||utils.isStream(data)||utils.isFile(data)||utils.isBlob(data)){return data;}if(utils.isArrayBufferView(data)){return data.buffer;}if(utils.isURLSearchParams(data)){setContentTypeIfUnset(headers,'application/x-www-form-urlencoded;charset=utf-8');return data.toString();}if(utils.isObject(data)){setContentTypeIfUnset(headers,'application/json;charset=utf-8');return JSON.stringify(data);}return data;}],transformResponse:[function transformResponse(data){/*eslint no-param-reassign:0*/if(typeof data==='string'){try{data=JSON.parse(data);}catch(e){/* Ignore */}}return data;}],timeout:0,xsrfCookieName:'XSRF-TOKEN',xsrfHeaderName:'X-XSRF-TOKEN',maxContentLength:-1,validateStatus:function validateStatus(status){return status>=200&&status<300;}};defaults.headers={common:{'Accept':'application/json, text/plain, */*'}};utils.forEach(['delete','get','head'],function forEachMethodNoData(method){defaults.headers[method]={};});utils.forEach(['post','put','patch'],function forEachMethodWithData(method){defaults.headers[method]=utils.merge(DEFAULT_CONTENT_TYPE);});module.exports=defaults;/***/},/* 7 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);module.exports=function normalizeHeaderName(headers,normalizedName){utils.forEach(headers,function processHeader(value,name){if(name!==normalizedName&&name.toUpperCase()===normalizedName.toUpperCase()){headers[normalizedName]=value;delete headers[name];}});};/***/},/* 8 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);var settle=__webpack_require__(9);var buildURL=__webpack_require__(12);var parseHeaders=__webpack_require__(13);var isURLSameOrigin=__webpack_require__(14);var createError=__webpack_require__(10);var btoa=typeof window!=='undefined'&&window.btoa&&window.btoa.bind(window)||__webpack_require__(15);module.exports=function xhrAdapter(config){return new Promise(function dispatchXhrRequest(resolve,reject){var requestData=config.data;var requestHeaders=config.headers;if(utils.isFormData(requestData)){delete requestHeaders['Content-Type'];// Let the browser set it
174}var request=new XMLHttpRequest();var loadEvent='onreadystatechange';var xDomain=false;// For IE 8/9 CORS support
175// Only supports POST and GET calls and doesn't returns the response headers.
176// DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.
177if("production"!=='test'&&typeof window!=='undefined'&&window.XDomainRequest&&!('withCredentials'in request)&&!isURLSameOrigin(config.url)){request=new window.XDomainRequest();loadEvent='onload';xDomain=true;request.onprogress=function handleProgress(){};request.ontimeout=function handleTimeout(){};}// HTTP basic authentication
178if(config.auth){var username=config.auth.username||'';var password=config.auth.password||'';requestHeaders.Authorization='Basic '+btoa(username+':'+password);}request.open(config.method.toUpperCase(),buildURL(config.url,config.params,config.paramsSerializer),true);// Set the request timeout in MS
179request.timeout=config.timeout;// Listen for ready state
180request[loadEvent]=function handleLoad(){if(!request||request.readyState!==4&&!xDomain){return;}// The request errored out and we didn't get a response, this will be
181// handled by onerror instead
182// With one exception: request that using file: protocol, most browsers
183// will return status as 0 even though it's a successful request
184if(request.status===0&&!(request.responseURL&&request.responseURL.indexOf('file:')===0)){return;}// Prepare the response
185var responseHeaders='getAllResponseHeaders'in request?parseHeaders(request.getAllResponseHeaders()):null;var responseData=!config.responseType||config.responseType==='text'?request.responseText:request.response;var response={data:responseData,// IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)
186status:request.status===1223?204:request.status,statusText:request.status===1223?'No Content':request.statusText,headers:responseHeaders,config:config,request:request};settle(resolve,reject,response);// Clean up request
187request=null;};// Handle low level network errors
188request.onerror=function handleError(){// Real errors are hidden from us by the browser
189// onerror should only fire if it's a network error
190reject(createError('Network Error',config,null,request));// Clean up request
191request=null;};// Handle timeout
192request.ontimeout=function handleTimeout(){reject(createError('timeout of '+config.timeout+'ms exceeded',config,'ECONNABORTED',request));// Clean up request
193request=null;};// Add xsrf header
194// This is only done if running in a standard browser environment.
195// Specifically not if we're in a web worker, or react-native.
196if(utils.isStandardBrowserEnv()){var cookies=__webpack_require__(16);// Add xsrf header
197var xsrfValue=(config.withCredentials||isURLSameOrigin(config.url))&&config.xsrfCookieName?cookies.read(config.xsrfCookieName):undefined;if(xsrfValue){requestHeaders[config.xsrfHeaderName]=xsrfValue;}}// Add headers to the request
198if('setRequestHeader'in request){utils.forEach(requestHeaders,function setRequestHeader(val,key){if(typeof requestData==='undefined'&&key.toLowerCase()==='content-type'){// Remove Content-Type if data is undefined
199delete requestHeaders[key];}else{// Otherwise add header to the request
200request.setRequestHeader(key,val);}});}// Add withCredentials to request if needed
201if(config.withCredentials){request.withCredentials=true;}// Add responseType to request if needed
202if(config.responseType){try{request.responseType=config.responseType;}catch(e){// Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.
203// But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.
204if(config.responseType!=='json'){throw e;}}}// Handle progress if needed
205if(typeof config.onDownloadProgress==='function'){request.addEventListener('progress',config.onDownloadProgress);}// Not all browsers support upload events
206if(typeof config.onUploadProgress==='function'&&request.upload){request.upload.addEventListener('progress',config.onUploadProgress);}if(config.cancelToken){// Handle cancellation
207config.cancelToken.promise.then(function onCanceled(cancel){if(!request){return;}request.abort();reject(cancel);// Clean up request
208request=null;});}if(requestData===undefined){requestData=null;}// Send the request
209request.send(requestData);});};/***/},/* 9 *//***/function(module,exports,__webpack_require__){'use strict';var createError=__webpack_require__(10);/**
210	 * Resolve or reject a Promise based on response status.
211	 *
212	 * @param {Function} resolve A function that resolves the promise.
213	 * @param {Function} reject A function that rejects the promise.
214	 * @param {object} response The response.
215	 */module.exports=function settle(resolve,reject,response){var validateStatus=response.config.validateStatus;// Note: status is not exposed by XDomainRequest
216if(!response.status||!validateStatus||validateStatus(response.status)){resolve(response);}else{reject(createError('Request failed with status code '+response.status,response.config,null,response.request,response));}};/***/},/* 10 *//***/function(module,exports,__webpack_require__){'use strict';var enhanceError=__webpack_require__(11);/**
217	 * Create an Error with the specified message, config, error code, request and response.
218	 *
219	 * @param {string} message The error message.
220	 * @param {Object} config The config.
221	 * @param {string} [code] The error code (for example, 'ECONNABORTED').
222	 * @param {Object} [request] The request.
223	 * @param {Object} [response] The response.
224	 * @returns {Error} The created error.
225	 */module.exports=function createError(message,config,code,request,response){var error=new Error(message);return enhanceError(error,config,code,request,response);};/***/},/* 11 *//***/function(module,exports){'use strict';/**
226	 * Update an Error with the specified config, error code, and response.
227	 *
228	 * @param {Error} error The error to update.
229	 * @param {Object} config The config.
230	 * @param {string} [code] The error code (for example, 'ECONNABORTED').
231	 * @param {Object} [request] The request.
232	 * @param {Object} [response] The response.
233	 * @returns {Error} The error.
234	 */module.exports=function enhanceError(error,config,code,request,response){error.config=config;if(code){error.code=code;}error.request=request;error.response=response;return error;};/***/},/* 12 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);function encode(val){return encodeURIComponent(val).replace(/%40/gi,'@').replace(/%3A/gi,':').replace(/%24/g,'$').replace(/%2C/gi,',').replace(/%20/g,'+').replace(/%5B/gi,'[').replace(/%5D/gi,']');}/**
235	 * Build a URL by appending params to the end
236	 *
237	 * @param {string} url The base of the url (e.g., http://www.google.com)
238	 * @param {object} [params] The params to be appended
239	 * @returns {string} The formatted url
240	 */module.exports=function buildURL(url,params,paramsSerializer){/*eslint no-param-reassign:0*/if(!params){return url;}var serializedParams;if(paramsSerializer){serializedParams=paramsSerializer(params);}else if(utils.isURLSearchParams(params)){serializedParams=params.toString();}else{var parts=[];
vendor: 9,239 bytes, lines 240-315
240utils.forEach(params,function serialize(val,key){if(val===null||typeof val==='undefined'){return;}if(utils.isArray(val)){key=key+'[]';}if(!utils.isArray(val)){val=[val];}utils.forEach(val,function parseValue(v){if(utils.isDate(v)){v=v.toISOString();}else if(utils.isObject(v)){v=JSON.stringify(v);}parts.push(encode(key)+'='+encode(v));});});serializedParams=parts.join('&');}if(serializedParams){url+=(url.indexOf('?')===-1?'?':'&')+serializedParams;}return url;};/***/},/* 13 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);// Headers whose duplicates are ignored by node
241// c.f. https://nodejs.org/api/http.html#http_message_headers
242var ignoreDuplicateOf=['age','authorization','content-length','content-type','etag','expires','from','host','if-modified-since','if-unmodified-since','last-modified','location','max-forwards','proxy-authorization','referer','retry-after','user-agent'];/**
243	 * Parse headers into an object
244	 *
245	 * ```
246	 * Date: Wed, 27 Aug 2014 08:58:49 GMT
247	 * Content-Type: application/json
248	 * Connection: keep-alive
249	 * Transfer-Encoding: chunked
250	 * ```
251	 *
252	 * @param {String} headers Headers needing to be parsed
253	 * @returns {Object} Headers parsed into an object
254	 */module.exports=function parseHeaders(headers){var parsed={};var key;var val;var i;if(!headers){return parsed;}utils.forEach(headers.split('\n'),function parser(line){i=line.indexOf(':');key=utils.trim(line.substr(0,i)).toLowerCase();val=utils.trim(line.substr(i+1));if(key){if(parsed[key]&&ignoreDuplicateOf.indexOf(key)>=0){return;}if(key==='set-cookie'){parsed[key]=(parsed[key]?parsed[key]:[]).concat([val]);}else{parsed[key]=parsed[key]?parsed[key]+', '+val:val;}}});return parsed;};/***/},/* 14 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);module.exports=utils.isStandardBrowserEnv()?// Standard browser envs have full support of the APIs needed to test
255// whether the request URL is of the same origin as current location.
256function standardBrowserEnv(){var msie=/(msie|trident)/i.test(navigator.userAgent);var urlParsingNode=document.createElement('a');var originURL;/**
257	    * Parse a URL to discover it's components
258	    *
259	    * @param {String} url The URL to be parsed
260	    * @returns {Object}
261	    */function resolveURL(url){var href=url;if(msie){// IE needs attribute set twice to normalize properties
262urlParsingNode.setAttribute('href',href);href=urlParsingNode.href;}urlParsingNode.setAttribute('href',href);// urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
263return{href:urlParsingNode.href,protocol:urlParsingNode.protocol?urlParsingNode.protocol.replace(/:$/,''):'',host:urlParsingNode.host,search:urlParsingNode.search?urlParsingNode.search.replace(/^\?/,''):'',hash:urlParsingNode.hash?urlParsingNode.hash.replace(/^#/,''):'',hostname:urlParsingNode.hostname,port:urlParsingNode.port,pathname:urlParsingNode.pathname.charAt(0)==='/'?urlParsingNode.pathname:'/'+urlParsingNode.pathname};}originURL=resolveURL(window.location.href);/**
264	    * Determine if a URL shares the same origin as the current location
265	    *
266	    * @param {String} requestURL The URL to test
267	    * @returns {boolean} True if URL shares the same origin, otherwise false
268	    */return function isURLSameOrigin(requestURL){var parsed=utils.isString(requestURL)?resolveURL(requestURL):requestURL;return parsed.protocol===originURL.protocol&&parsed.host===originURL.host;};}():// Non standard browser envs (web workers, react-native) lack needed support.
269function nonStandardBrowserEnv(){return function isURLSameOrigin(){return true;};}();/***/},/* 15 *//***/function(module,exports){'use strict';// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js
270var chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';function E(){this.message='String contains an invalid character';}E.prototype=new Error();E.prototype.code=5;E.prototype.name='InvalidCharacterError';function btoa(input){var str=String(input);var output='';for(// initialize result and counter
271var block,charCode,idx=0,map=chars;// if the next str index does not exist:
272//   change the mapping table to "="
273//   check if d has no fractional digits
274str.charAt(idx|0)||(map='=',idx%1);// "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8
275output+=map.charAt(63&block>>8-idx%1*8)){charCode=str.charCodeAt(idx+=3/4);if(charCode>0xFF){throw new E();}block=block<<8|charCode;}return output;}module.exports=btoa;/***/},/* 16 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);module.exports=utils.isStandardBrowserEnv()?// Standard browser envs support document.cookie
276function standardBrowserEnv(){return{write:function write(name,value,expires,path,domain,secure){var cookie=[];cookie.push(name+'='+encodeURIComponent(value));if(utils.isNumber(expires)){cookie.push('expires='+new Date(expires).toGMTString());}if(utils.isString(path)){cookie.push('path='+path);}if(utils.isString(domain)){cookie.push('domain='+domain);}if(secure===true){cookie.push('secure');}document.cookie=cookie.join('; ');},read:function read(name){var match=document.cookie.match(new RegExp('(^|;\\s*)('+name+')=([^;]*)'));return match?decodeURIComponent(match[3]):null;},remove:function remove(name){this.write(name,'',Date.now()-86400000);}};}():// Non standard browser env (web workers, react-native) lack needed support.
277function nonStandardBrowserEnv(){return{write:function write(){},read:function read(){return null;},remove:function remove(){}};}();/***/},/* 17 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);function InterceptorManager(){this.handlers=[];}/**
278	 * Add a new interceptor to the stack
279	 *
280	 * @param {Function} fulfilled The function to handle `then` for a `Promise`
281	 * @param {Function} rejected The function to handle `reject` for a `Promise`
282	 *
283	 * @return {Number} An ID used to remove interceptor later
284	 */InterceptorManager.prototype.use=function use(fulfilled,rejected){this.handlers.push({fulfilled:fulfilled,rejected:rejected});return this.handlers.length-1;};/**
285	 * Remove an interceptor from the stack
286	 *
287	 * @param {Number} id The ID that was returned by `use`
288	 */InterceptorManager.prototype.eject=function eject(id){if(this.handlers[id]){this.handlers[id]=null;}};/**
289	 * Iterate over all the registered interceptors
290	 *
291	 * This method is particularly useful for skipping over any
292	 * interceptors that may have become `null` calling `eject`.
293	 *
294	 * @param {Function} fn The function to call for each interceptor
295	 */InterceptorManager.prototype.forEach=function forEach(fn){utils.forEach(this.handlers,function forEachHandler(h){if(h!==null){fn(h);}});};module.exports=InterceptorManager;/***/},/* 18 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);var transformData=__webpack_require__(19);var isCancel=__webpack_require__(20);var defaults=__webpack_require__(6);var isAbsoluteURL=__webpack_require__(21);var combineURLs=__webpack_require__(22);/**
296	 * Throws a `Cancel` if cancellation has been requested.
297	 */function throwIfCancellationRequested(config){if(config.cancelToken){config.cancelToken.throwIfRequested();}}/**
298	 * Dispatch a request to the server using the configured adapter.
299	 *
300	 * @param {object} config The config that is to be used for the request
301	 * @returns {Promise} The Promise to be fulfilled
302	 */module.exports=function dispatchRequest(config){throwIfCancellationRequested(config);// Support baseURL config
303if(config.baseURL&&!isAbsoluteURL(config.url)){config.url=combineURLs(config.baseURL,config.url);}// Ensure headers exist
304config.headers=config.headers||{};// Transform request data
305config.data=transformData(config.data,config.headers,config.transformRequest);// Flatten headers
306config.headers=utils.merge(config.headers.common||{},config.headers[config.method]||{},config.headers||{});utils.forEach(['delete','get','head','post','put','patch','common'],function cleanHeaderConfig(method){delete config.headers[method];});var adapter=config.adapter||defaults.adapter;return adapter(config).then(function onAdapterResolution(response){throwIfCancellationRequested(config);// Transform response data
307response.data=transformData(response.data,response.headers,config.transformResponse);return response;},function onAdapterRejection(reason){if(!isCancel(reason)){throwIfCancellationRequested(config);// Transform response data
308if(reason&&reason.response){reason.response.data=transformData(reason.response.data,reason.response.headers,config.transformResponse);}}return Promise.reject(reason);});};/***/},/* 19 *//***/function(module,exports,__webpack_require__){'use strict';var utils=__webpack_require__(2);/**
309	 * Transform the data for a request or a response
310	 *
311	 * @param {Object|String} data The data to be transformed
312	 * @param {Array} headers The headers for the request or response
313	 * @param {Array|Function} fns A single function or Array of functions
314	 * @returns {*} The resulting transformed data
315	 */module.exports=function transformData(data,headers,fns){/*eslint no-param-reassign:0*/utils.forEac
315h(fns,function transform(fn){data=fn(data,headers);});return data;};/***/},/* 20 *//***/function(module,exports){'use strict';module.exports=function isCancel(value){return!!(value&&value.__CANCEL__);};/***/},/* 21 *//***/function(module,exports){'use strict';/**
316	 * Determines whether the specified URL is absolute
317	 *
318	 * @param {string} url The URL to test
319	 * @returns {boolean} True if the specified URL is absolute, otherwise false
320	 */module.exports=function isAbsoluteURL(url){// A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
321// RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
322// by any combination of letters, digits, plus, period, or hyphen.
323return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);};/***/},/* 22 *//***/function(module,exports){'use strict';/**
324	 * Creates a new URL by combining the specified URLs
325	 *
326	 * @param {string} baseURL The base URL
327	 * @param {string} relativeURL The relative URL
328	 * @returns {string} The combined URL
329	 */module.exports=function combineURLs(baseURL,relativeURL){return relativeURL?baseURL.replace(/\/+$/,'')+'/'+relativeURL.replace(/^\/+/,''):baseURL;};/***/},/* 23 *//***/function(module,exports){'use strict';/**
330	 * A `Cancel` is an object that is thrown when an operation is canceled.
331	 *
332	 * @class
333	 * @param {string=} message The message.
334	 */function Cancel(message){this.message=message;}Cancel.prototype.toString=function toString(){return'Cancel'+(this.message?': '+this.message:'');};Cancel.prototype.__CANCEL__=true;module.exports=Cancel;/***/},/* 24 *//***/function(module,exports,__webpack_require__){'use strict';var Cancel=__webpack_require__(23);/**
335	 * A `CancelToken` is an object that can be used to request cancellation of an operation.
336	 *
337	 * @class
338	 * @param {Function} executor The executor function.
339	 */function CancelToken(executor){if(typeof executor!=='function'){throw new TypeError('executor must be a function.');}var resolvePromise;this.promise=new Promise(function promiseExecutor(resolve){resolvePromise=resolve;});var token=this;executor(function cancel(message){if(token.reason){// Cancellation has already been requested
340return;}token.reason=new Cancel(message);resolvePromise(token.reason);});}/**
341	 * Throws a `Cancel` if cancellation has been requested.
342	 */CancelToken.prototype.throwIfRequested=function throwIfRequested(){if(this.reason){throw this.reason;}};/**
343	 * Returns an object that contains a new `CancelToken` and a function that, when called,
344	 * cancels the `CancelToken`.
345	 */CancelToken.source=function source(){var cancel;var token=new CancelToken(function executor(c){cancel=c;});return{token:token,cancel:cancel};};module.exports=CancelToken;/***/},/* 25 *//***/function(module,exports){'use strict';/**
346	 * Syntactic sugar for invoking a function and expanding an array for arguments.
347	 *
348	 * Common use case would be to use `Function.prototype.apply`.
349	 *
350	 *  ```js
351	 *  function f(x, y, z) {}
352	 *  var args = [1, 2, 3];
353	 *  f.apply(null, args);
354	 *  ```
355	 *
356	 * With `spread` this example can be re-written.
357	 *
358	 *  ```js
359	 *  spread(function(x, y, z) {})([1, 2, 3]);
360	 *  ```
361	 *
362	 * @param {Function} callback
363	 * @returns {Function}
364	 */module.exports=function spread(callback){return function wrap(arr){return callback.apply(null,arr);};};/***/}]/******/));});;//# sourceMappingURL=axios.map
365/*!
366 * jQuery JavaScript Library v3.7.1
367 * https://jquery.com/
368 *
369 * Copyright OpenJS Foundation and other contributors
370 * Released under the MIT license
371 * https://jquery.org/license
372 *
373 * Date: 2023-08-28T13:37Z
374 */(function(global,factory){"use strict";if((typeof module==='undefined'?'undefined':_typeof(module))==="object"&&_typeof(module.exports)==="object"){// For CommonJS and CommonJS-like environments where a proper `window`
375// is present, execute the factory and get jQuery.
376// For environments that do not have a `window` with a `document`
377// (such as Node.js), expose a factory as module.exports.
378// This accentuates the need for the creation of a real `window`.
379// e.g. var jQuery = require("jquery")(window);
380// See ticket trac-14549 for more info.
381module.exports=global.document?factory(global,true):function(w){if(!w.document){throw new Error("jQuery requires a window with a document");}return factory(w);};}else{factory(global);}// Pass this if window is not defined yet
382})(typeof window!=="undefined"?window:this,function(window,noGlobal){// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
383// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
384// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), str
vendor: 16,016 bytes, lines 384-508
384ict mode should be common
385// enough that all such attempts are guarded in a try block.
386"use strict";var arr=[];var getProto=Object.getPrototypeOf;var _slice=arr.slice;var flat=arr.flat?function(array){return arr.flat.call(array);}:function(array){return arr.concat.apply([],array);};var push=arr.push;var indexOf=arr.indexOf;var class2type={};var toString=class2type.toString;var hasOwn=class2type.hasOwnProperty;var fnToString=hasOwn.toString;var ObjectFunctionString=fnToString.call(Object);var support={};var isFunction=function isFunction(obj){// Support: Chrome <=57, Firefox <=52
387// In some browsers, typeof returns "function" for HTML <object> elements
388// (i.e., `typeof document.createElement( "object" ) === "function"`).
389// We don't want to classify *any* DOM node as a function.
390// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
391// Plus for old WebKit, typeof returns "function" for HTML collections
392// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
393return typeof obj==="function"&&typeof obj.nodeType!=="number"&&typeof obj.item!=="function";};var isWindow=function isWindow(obj){return obj!=null&&obj===obj.window;};var document=window.document;var preservedScriptAttributes={type:true,src:true,nonce:true,noModule:true};function DOMEval(code,node,doc){doc=doc||document;var i,val,script=doc.createElement("script");script.text=code;if(node){for(i in preservedScriptAttributes){// Support: Firefox 64+, Edge 18+
394// Some browsers don't support the "nonce" property on scripts.
395// On the other hand, just using `getAttribute` is not enough as
396// the `nonce` attribute is reset to an empty string whenever it
397// becomes browsing-context connected.
398// See https://github.com/whatwg/html/issues/2369
399// See https://html.spec.whatwg.org/#nonce-attributes
400// The `node.getAttribute` check was added for the sake of
401// `jQuery.globalEval` so that it can fake a nonce-containing node
402// via an object.
403val=node[i]||node.getAttribute&&node.getAttribute(i);if(val){script.setAttribute(i,val);}}}doc.head.appendChild(script).parentNode.removeChild(script);}function toType(obj){if(obj==null){return obj+"";}// Support: Android <=2.3 only (functionish RegExp)
404return(typeof obj==='undefined'?'undefined':_typeof(obj))==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj==='undefined'?'undefined':_typeof(obj);}/* global Symbol */// Defining this global in .eslintrc.json would create a danger of using the global
405// unguarded in another place, it seems safer to define global only for this module
406var version="3.7.1",rhtmlSuffix=/HTML$/i,// Define a local copy of jQuery
407jQuery=function jQuery(selector,context){// The jQuery object is actually just the init constructor 'enhanced'
408// Need init if jQuery is called (just allow error to be thrown if not included)
409return new jQuery.fn.init(selector,context);};jQuery.fn=jQuery.prototype={// The current version of jQuery being used
410jquery:version,constructor:jQuery,// The default length of a jQuery object is 0
411length:0,toArray:function toArray(){return _slice.call(this);},// Get the Nth element in the matched element set OR
412// Get the whole matched element set as a clean array
413get:function get(num){// Return all the elements in a clean array
414if(num==null){return _slice.call(this);}// Return just the one element from the set
415return num<0?this[num+this.length]:this[num];},// Take an array of elements and push it onto the stack
416// (returning the new matched element set)
417pushStack:function pushStack(elems){// Build a new jQuery matched element set
418var ret=jQuery.merge(this.constructor(),elems);// Add the old object onto the stack (as a reference)
419ret.prevObject=this;// Return the newly-formed element set
420return ret;},// Execute a callback for every element in the matched set.
421each:function each(callback){return jQuery.each(this,callback);},map:function map(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},slice:function slice(){return this.pushStack(_slice.apply(this,arguments));},first:function first(){return this.eq(0);},last:function last(){return this.eq(-1);},even:function even(){return this.pushStack(jQuery.grep(this,function(_elem,i){return(i+1)%2;}));},odd:function odd(){return this.pushStack(jQuery.grep(this,function(_elem,i){return i%2;}));},eq:function eq(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[]);},end:function end(){return this.prevObject||this.constructor();},// For internal use only.
422// Behaves like an Array's method, not like a jQuery method.
423push:push,sort:arr.sort,splice:arr.splice};jQuery.extend=jQuery.fn.extend=function(){var options,name,src,copy,copyIsArray,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;// Handle a deep copy situation
424if(typeof target==="boolean"){deep=target;// Skip the boolean and the target
425target=arguments[i]||{};i++;}// Handle case when target is a string or something (possible in deep copy)
426if((typeof target==='undefined'?'undefined':_typeof(target))!=="object"&&!isFunction(target)){target={};}// Extend jQuery itself if only one argument is passed
427if(i===length){target=this;i--;}for(;i<length;i++){// Only deal with non-null/undefined values
428if((options=arguments[i])!=null){// Extend the base object
429for(name in options){copy=options[name];// Prevent Object.prototype pollution
430// Prevent never-ending loop
431if(name==="__proto__"||target===copy){continue;}// Recurse if we're merging plain objects or arrays
432if(deep&&copy&&(jQuery.isPlainObject(copy)||(copyIsArray=Array.isArray(copy)))){src=target[name];// Ensure proper type for the source value
433if(copyIsArray&&!Array.isArray(src)){clone=[];}else if(!copyIsArray&&!jQuery.isPlainObject(src)){clone={};}else{clone=src;}copyIsArray=false;// Never move original objects, clone them
434target[name]=jQuery.extend(deep,clone,copy);// Don't bring in undefined values
435}else if(copy!==undefined){target[name]=copy;}}}}// Return the modified object
436return target;};jQuery.extend({// Unique for each copy of jQuery on the page
437expando:"jQuery"+(version+Math.random()).replace(/\D/g,""),// Assume jQuery is ready without the ready module
438isReady:true,error:function error(msg){throw new Error(msg);},noop:function noop(){},isPlainObject:function isPlainObject(obj){var proto,Ctor;// Detect obvious negatives
439// Use toString instead of jQuery.type to catch host objects
440if(!obj||toString.call(obj)!=="[object Object]"){return false;}proto=getProto(obj);// Objects with no prototype (e.g., `Object.create( null )`) are plain
441if(!proto){return true;}// Objects with prototype are plain iff they were constructed by a global Object function
442Ctor=hasOwn.call(proto,"constructor")&&proto.constructor;return typeof Ctor==="function"&&fnToString.call(Ctor)===ObjectFunctionString;},isEmptyObject:function isEmptyObject(obj){var name;for(name in obj){return false;}return true;},// Evaluates a script in a provided context; falls back to the global one
443// if not specified.
444globalEval:function globalEval(code,options,doc){DOMEval(code,{nonce:options&&options.nonce},doc);},each:function each(obj,callback){var length,i=0;if(isArrayLike(obj)){length=obj.length;for(;i<length;i++){if(callback.call(obj[i],i,obj[i])===false){break;}}}else{for(i in obj){if(callback.call(obj[i],i,obj[i])===false){break;}}}return obj;},// Retrieve the text value of an array of DOM nodes
445text:function text(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(!nodeType){// If no nodeType, this is expected to be an array
446while(node=elem[i++]){// Do not traverse comment nodes
447ret+=jQuery.text(node);}}if(nodeType===1||nodeType===11){return elem.textContent;}if(nodeType===9){return elem.documentElement.textContent;}if(nodeType===3||nodeType===4){return elem.nodeValue;}// Do not include comment or processing instruction nodes
448return ret;},// results is for internal usage only
449makeArray:function makeArray(arr,results){var ret=results||[];if(arr!=null){if(isArrayLike(Object(arr))){jQuery.merge(ret,typeof arr==="string"?[arr]:arr);}else{push.call(ret,arr);}}return ret;},inArray:function inArray(elem,arr,i){return arr==null?-1:indexOf.call(arr,elem,i);},isXMLDoc:function isXMLDoc(elem){var namespace=elem&&elem.namespaceURI,docElem=elem&&(elem.ownerDocument||elem).documentElement;// Assume HTML when documentElement doesn't yet exist, such as inside
450// document fragments.
451return!rhtmlSuffix.test(namespace||docElem&&docElem.nodeName||"HTML");},// Support: Android <=4.0 only, PhantomJS 1 only
452// push.apply(_, arraylike) throws on ancient WebKit
453merge:function merge(first,second){var len=+second.length,j=0,i=first.length;for(;j<len;j++){first[i++]=second[j];}first.length=i;return first;},grep:function grep(elems,callback,invert){var callbackInverse,matches=[],i=0,length=elems.length,callbackExpect=!invert;// Go through the array, only saving the items
454// that pass the validator function
455for(;i<length;i++){callbackInverse=!callback(elems[i],i);if(callbackInverse!==callbackExpect){matches.push(elems[i]);}}return matches;},// arg is for internal usage only
456map:function map(elems,callback,arg){var length,value,i=0,ret=[];// Go through the array, translating each of the items to their new values
457if(isArrayLike(elems)){length=elems.length;for(;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret.push(value);}}// Go through every key on the object,
458}else{for(i in elems){value=callback(elems[i],i,arg);if(value!=null){ret.push(value);}}}// Flatten any nested arrays
459return flat(ret);},// A global GUID counter for objects
460guid:1,// jQuery.support is not used in Core but other projects attach their
461// properties to it so it needs to exist.
462support:support});if(typeof Symbol==="function"){jQuery.fn[Symbol.iterator]=arr[Symbol.iterator];}// Populate the class2type map
463jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(_i,name){class2type["[object "+name+"]"]=name.toLowerCase();});function isArrayLike(obj){// Support: real iOS 8.2 only (not reproducible in simulator)
464// `in` check used to prevent JIT error (gh-2145)
465// hasOwn isn't used here due to false negatives
466// regarding Nodelist length in IE
467var length=!!obj&&"length"in obj&&obj.length,type=toType(obj);if(isFunction(obj)||isWindow(obj)){return false;}return type==="array"||length===0||typeof length==="number"&&length>0&&length-1 in obj;}function nodeName(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase();}var pop=arr.pop;var sort=arr.sort;var splice=arr.splice;var whitespace="[\\x20\\t\\r\\n\\f]";var rtrimCSS=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g");// Note: an element does not contain itself
468jQuery.contains=function(a,b){var bup=b&&b.parentNode;return a===bup||!!(bup&&bup.nodeType===1&&(// Support: IE 9 - 11+
469// IE doesn't have `contains` on SVG.
470a.contains?a.contains(bup):a.compareDocumentPosition&&a.compareDocumentPosition(bup)&16));};// CSS string/identifier serialization
471// https://drafts.csswg.org/cssom/#common-serializing-idioms
472var rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function fcssescape(ch,asCodePoint){if(asCodePoint){// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
473if(ch==="\0"){return'\uFFFD';}// Control characters and (dependent upon position) numbers get escaped as code points
474return ch.slice(0,-1)+"\\"+ch.charCodeAt(ch.length-1).toString(16)+" ";}// Other potentially-special ASCII characters get backslash-escaped
475return"\\"+ch;}jQuery.escapeSelector=function(sel){return(sel+"").replace(rcssescape,fcssescape);};var preferredDoc=document,pushNative=push;(function(){var i,Expr,outermostContext,sortInput,hasDuplicate,push=pushNative,// Local document vars
476document,documentElement,documentIsHTML,rbuggyQSA,matches,// Instance-specific data
477expando=jQuery.expando,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),nonnativeSelectorCache=createCache(),sortOrder=function sortOrder(a,b){if(a===b){hasDuplicate=true;}return 0;},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|"+"loop|multiple|open|readonly|required|scoped",// Regular expressions
478// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
479identifier="(?:\\\\[\\da-fA-F]{1,6}"+whitespace+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors
480attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+// Operator (capture 2)
481"*([*^$|!~]?=)"+whitespace+// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
482"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\(("+// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
483// 1. quoted (capture 3; capture 4 or capture 5)
484"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|"+// 2. simple (capture 6)
485"((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|"+// 3. anything else (capture 2)
486".*"+")\\)|)",// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
487rwhitespace=new RegExp(whitespace+"+","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rleadingCombinator=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rdescend=new RegExp(whitespace+"|>"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),// For use in libraries implementing .is()
488// We use this for POS matching in `select`
489needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,// Easily-parseable/retrievable ID or TAG or CLASS selectors
490rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,// CSS escapes
491// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters
492runescape=new RegExp("\\\\[\\da-fA-F]{1,6}"+whitespace+"?|\\\\([^\\r\\n\\f])","g"),funescape=function funescape(escape,nonHex){var high="0x"+escape.slice(1)-0x10000;if(nonHex){// Strip the backslash prefix from a non-hex escape sequence
493return nonHex;}// Replace a hexadecimal escape sequence with the encoded Unicode code point
494// Support: IE <=11+
495// For values outside the Basic Multilingual Plane (BMP), manually construct a
496// surrogate pair
497return high<0?String.fromCharCode(high+0x10000):String.fromCharCode(high>>10|0xD800,high&0x3FF|0xDC00);},// Used for iframes; see `setDocument`.
498// Support: IE 9 - 11+, Edge 12 - 18+
499// Removing the function wrapper causes a "Permission Denied"
500// error in IE/Edge.
501unloadHandler=function unloadHandler(){setDocument();},inDisabledFieldset=addCombinator(function(elem){return elem.disabled===true&&nodeName(elem,"fieldset");},{dir:"parentNode",next:"legend"});// Support: IE <=9 only
502// Accessing document.activeElement can throw unexpectedly
503// https://bugs.jquery.com/ticket/13393
504function safeActiveElement(){try{return document.activeElement;}catch(err){}}// Optimize for push.apply( _, NodeList )
505try{push.apply(arr=_slice.call(preferredDoc.childNodes),preferredDoc.childNodes);// Support: Android <=4.0
506// Detect silently failing push.apply
507// eslint-disable-next-line no-unused-expressions
508arr[preferredDoc.childNodes.length].nodeType;}catch(e){push={apply:function apply(target,els){pushNative.apply(target,_slice.call(els));},call:function call(target){pushNative.apply(target,_slice.call(arguments,1
vendor: 18,570 bytes, lines 508-715
508));}};}function find(selector,context,results,seed){var m,i,elem,nid,match,groups,newSelector,newContext=context&&context.ownerDocument,// nodeType defaults to 9, since context defaults to document
509nodeType=context?context.nodeType:9;results=results||[];// Return early from calls with invalid selector or context
510if(typeof selector!=="string"||!selector||nodeType!==1&&nodeType!==9&&nodeType!==11){return results;}// Try to shortcut find operations (as opposed to filters) in HTML documents
511if(!seed){setDocument(context);context=context||document;if(documentIsHTML){// If the selector is sufficiently simple, try using a "get*By*" DOM method
512// (excepting DocumentFragment context, where the methods don't exist)
513if(nodeType!==11&&(match=rquickExpr.exec(selector))){// ID selector
514if(m=match[1]){// Document context
515if(nodeType===9){if(elem=context.getElementById(m)){// Support: IE 9 only
516// getElementById can match elements by name instead of ID
517if(elem.id===m){push.call(results,elem);return results;}}else{return results;}// Element context
518}else{// Support: IE 9 only
519// getElementById can match elements by name instead of ID
520if(newContext&&(elem=newContext.getElementById(m))&&find.contains(context,elem)&&elem.id===m){push.call(results,elem);return results;}}// Type selector
521}else if(match[2]){push.apply(results,context.getElementsByTagName(selector));return results;// Class selector
522}else if((m=match[3])&&context.getElementsByClassName){push.apply(results,context.getElementsByClassName(m));return results;}}// Take advantage of querySelectorAll
523if(!nonnativeSelectorCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){newSelector=selector;newContext=context;// qSA considers elements outside a scoping root when evaluating child or
524// descendant combinators, which is not what we want.
525// In such cases, we work around the behavior by prefixing every selector in the
526// list with an ID selector referencing the scope context.
527// The technique has to be used as well when a leading combinator is used
528// as such selectors are not recognized by querySelectorAll.
529// Thanks to Andrew Dupont for this technique.
530if(nodeType===1&&(rdescend.test(selector)||rleadingCombinator.test(selector))){// Expand context for sibling selectors
531newContext=rsibling.test(selector)&&testContext(context.parentNode)||context;// We can use :scope instead of the ID hack if the browser
532// supports it & if we're not changing the context.
533// Support: IE 11+, Edge 17 - 18+
534// IE/Edge sometimes throw a "Permission denied" error when
535// strict-comparing two documents; shallow comparisons work.
536// eslint-disable-next-line eqeqeq
537if(newContext!=context||!support.scope){// Capture the context ID, setting it first if necessary
538if(nid=context.getAttribute("id")){nid=jQuery.escapeSelector(nid);}else{context.setAttribute("id",nid=expando);}}// Prefix every selector in the list
539groups=tokenize(selector);i=groups.length;while(i--){groups[i]=(nid?"#"+nid:":scope")+" "+toSelector(groups[i]);}newSelector=groups.join(",");}try{push.apply(results,newContext.querySelectorAll(newSelector));return results;}catch(qsaError){nonnativeSelectorCache(selector,true);}finally{if(nid===expando){context.removeAttribute("id");}}}}}// All others
540return select(selector.replace(rtrimCSS,"$1"),context,results,seed);}/**
541 * Create key-value caches of limited size
542 * @returns {function(string, object)} Returns the Object data after storing it on itself with
543 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
544 *	deleting the oldest entry
545 */function createCache(){var keys=[];function cache(key,value){// Use (key + " ") to avoid collision with native prototype properties
546// (see https://github.com/jquery/sizzle/issues/157)
547if(keys.push(key+" ")>Expr.cacheLength){// Only keep the most recent entries
548delete cache[keys.shift()];}return cache[key+" "]=value;}return cache;}/**
549 * Mark a function for special use by jQuery selector module
550 * @param {Function} fn The function to mark
551 */function markFunction(fn){fn[expando]=true;return fn;}/**
552 * Support testing using an element
553 * @param {Function} fn Passed the created element and returns a boolean result
554 */function assert(fn){var el=document.createElement("fieldset");try{return!!fn(el);}catch(e){return false;}finally{// Remove from its parent by default
555if(el.parentNode){el.parentNode.removeChild(el);}// release memory in IE
556el=null;}}/**
557 * Returns a function to use in pseudos for input types
558 * @param {String} type
559 */function createInputPseudo(type){return function(elem){return nodeName(elem,"input")&&elem.type===type;};}/**
560 * Returns a function to use in pseudos for buttons
561 * @param {String} type
562 */function createButtonPseudo(type){return function(elem){return(nodeName(elem,"input")||nodeName(elem,"button"))&&elem.type===type;};}/**
563 * Returns a function to use in pseudos for :enabled/:disabled
564 * @param {Boolean} disabled true for :disabled; false for :enabled
565 */function createDisabledPseudo(disabled){// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
566return function(elem){// Only certain elements can match :enabled or :disabled
567// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
568// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
569if("form"in elem){// Check for inherited disabledness on relevant non-disabled elements:
570// * listed form-associated elements in a disabled fieldset
571//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
572//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
573// * option elements in a disabled optgroup
574//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
575// All such elements have a "form" property.
576if(elem.parentNode&&elem.disabled===false){// Option elements defer to a parent optgroup if present
577if("label"in elem){if("label"in elem.parentNode){return elem.parentNode.disabled===disabled;}else{return elem.disabled===disabled;}}// Support: IE 6 - 11+
578// Use the isDisabled shortcut property to check for disabled fieldset ancestors
579return elem.isDisabled===disabled||// Where there is no isDisabled, check manually
580elem.isDisabled!==!disabled&&inDisabledFieldset(elem)===disabled;}return elem.disabled===disabled;// Try to winnow out elements that can't be disabled before trusting the disabled property.
581// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
582// even exist on them, let alone have a boolean value.
583}else if("label"in elem){return elem.disabled===disabled;}// Remaining elements are neither :enabled nor :disabled
584return false;};}/**
585 * Returns a function to use in pseudos for positionals
586 * @param {Function} fn
587 */function createPositionalPseudo(fn){return markFunction(function(argument){argument=+argument;return markFunction(function(seed,matches){var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;// Match elements found at the specified indexes
588while(i--){if(seed[j=matchIndexes[i]]){seed[j]=!(matches[j]=seed[j]);}}});});}/**
589 * Checks a node for validity as a jQuery selector context
590 * @param {Element|Object=} context
591 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
592 */function testContext(context){return context&&typeof context.getElementsByTagName!=="undefined"&&context;}/**
593 * Sets document-related variables once based on the current document
594 * @param {Element|Object} [node] An element or document object to use to set the document
595 * @returns {Object} Returns the current document
596 */function setDocument(node){var subWindow,doc=node?node.ownerDocument||node:preferredDoc;// Return early if doc is invalid or already selected
597// Support: IE 11+, Edge 17 - 18+
598// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
599// two documents; shallow comparisons work.
600// eslint-disable-next-line eqeqeq
601if(doc==document||doc.nodeType!==9||!doc.documentElement){return document;}// Update global variables
602document=doc;documentElement=document.documentElement;documentIsHTML=!jQuery.isXMLDoc(document);// Support: iOS 7 only, IE 9 - 11+
603// Older browsers didn't support unprefixed `matches`.
604matches=documentElement.matches||documentElement.webkitMatchesSelector||documentElement.msMatchesSelector;// Support: IE 9 - 11+, Edge 12 - 18+
605// Accessing iframe documents after unload throws "permission denied" errors
606// (see trac-13936).
607// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,
608// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.
609if(documentElement.msMatchesSelector&&// Support: IE 11+, Edge 17 - 18+
610// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
611// two documents; shallow comparisons work.
612// eslint-disable-next-line eqeqeq
613preferredDoc!=document&&(subWindow=document.defaultView)&&subWindow.top!==subWindow){// Support: IE 9 - 11+, Edge 12 - 18+
614subWindow.addEventListener("unload",unloadHandler);}// Support: IE <10
615// Check if getElementById returns elements by name
616// The broken getElementById methods don't pick up programmatically-set names,
617// so use a roundabout getElementsByName test
618support.getById=assert(function(el){documentElement.appendChild(el).id=jQuery.expando;return!document.getElementsByName||!document.getElementsByName(jQuery.expando).length;});// Support: IE 9 only
619// Check to see if it's possible to do matchesSelector
620// on a disconnected node.
621support.disconnectedMatch=assert(function(el){return matches.call(el,"*");});// Support: IE 9 - 11+, Edge 12 - 18+
622// IE/Edge don't support the :scope pseudo-class.
623support.scope=assert(function(){return document.querySelectorAll(":scope");});// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only
624// Make sure the `:has()` argument is parsed unforgivingly.
625// We include `*` in the test to detect buggy implementations that are
626// _selectively_ forgiving (specifically when the list includes at least
627// one valid selector).
628// Note that we treat complete lack of support for `:has()` as if it were
629// spec-compliant support, which is fine because use of `:has()` in such
630// environments will fail in the qSA path and fall back to jQuery traversal
631// anyway.
632support.cssHas=assert(function(){try{document.querySelector(":has(*,:jqfake)");return false;}catch(e){return true;}});// ID filter and find
633if(support.getById){Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId;};};Expr.find.ID=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var elem=context.getElementById(id);return elem?[elem]:[];}};}else{Expr.filter.ID=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return node&&node.value===attrId;};};// Support: IE 6 - 7 only
634// getElementById is not reliable as a find shortcut
635Expr.find.ID=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var node,i,elems,elem=context.getElementById(id);if(elem){// Verify the id attribute
636node=elem.getAttributeNode("id");if(node&&node.value===id){return[elem];}// Fall back on getElementsByName
637elems=context.getElementsByName(id);i=0;while(elem=elems[i++]){node=elem.getAttributeNode("id");if(node&&node.value===id){return[elem];}}}return[];}};}// Tag
638Expr.find.TAG=function(tag,context){if(typeof context.getElementsByTagName!=="undefined"){return context.getElementsByTagName(tag);// DocumentFragment nodes don't have gEBTN
639}else{return context.querySelectorAll(tag);}};// Class
640Expr.find.CLASS=function(className,context){if(typeof context.getElementsByClassName!=="undefined"&&documentIsHTML){return context.getElementsByClassName(className);}};/* QSA/matchesSelector
641	---------------------------------------------------------------------- */// QSA and matchesSelector support
642rbuggyQSA=[];// Build QSA regex
643// Regex strategy adopted from Diego Perini
644assert(function(el){var input;documentElement.appendChild(el).innerHTML="<a id='"+expando+"' href='' disabled='disabled'></a>"+"<select id='"+expando+"-\r\\' disabled='disabled'>"+"<option selected=''></option></select>";// Support: iOS <=7 - 8 only
645// Boolean attributes and "value" are not treated correctly in some XML documents
646if(!el.querySelectorAll("[selected]").length){rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")");}// Support: iOS <=7 - 8 only
647if(!el.querySelectorAll("[id~="+expando+"-]").length){rbuggyQSA.push("~=");}// Support: iOS 8 only
648// https://bugs.webkit.org/show_bug.cgi?id=136851
649// In-page `selector#id sibling-combinator selector` fails
650if(!el.querySelectorAll("a#"+expando+"+*").length){rbuggyQSA.push(".#.+[+~]");}// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
651// In some of the document kinds, these selectors wouldn't work natively.
652// This is probably OK but for backwards compatibility we want to maintain
653// handling them through jQuery traversal in jQuery 3.x.
654if(!el.querySelectorAll(":checked").length){rbuggyQSA.push(":checked");}// Support: Windows 8 Native Apps
655// The type and name attributes are restricted during .innerHTML assignment
656input=document.createElement("input");input.setAttribute("type","hidden");el.appendChild(input).setAttribute("name","D");// Support: IE 9 - 11+
657// IE's :disabled selector does not pick up the children of disabled fieldsets
658// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
659// In some of the document kinds, these selectors wouldn't work natively.
660// This is probably OK but for backwards compatibility we want to maintain
661// handling them through jQuery traversal in jQuery 3.x.
662documentElement.appendChild(el).disabled=true;if(el.querySelectorAll(":disabled").length!==2){rbuggyQSA.push(":enabled",":disabled");}// Support: IE 11+, Edge 15 - 18+
663// IE 11/Edge don't find elements on a `[name='']` query in some cases.
664// Adding a temporary attribute to the document before the selection works
665// around the issue.
666// Interestingly, IE 10 & older don't seem to have the issue.
667input=document.createElement("input");input.setAttribute("name","");el.appendChild(input);if(!el.querySelectorAll("[name='']").length){rbuggyQSA.push("\\["+whitespace+"*name"+whitespace+"*="+whitespace+"*(?:''|\"\")");}});if(!support.cssHas){// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+
668// Our regular `try-catch` mechanism fails to detect natively-unsupported
669// pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`)
670// in browsers that parse the `:has()` argument as a forgiving selector list.
671// https://drafts.csswg.org/selectors/#relational now requires the argument
672// to be parsed unforgivingly, but browsers have not yet fully adjusted.
673rbuggyQSA.push(":has");}rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|"));/* Sorting
674	---------------------------------------------------------------------- */// Document order sorting
675sortOrder=function sortOrder(a,b){// Flag for duplicate removal
676if(a===b){hasDuplicate=true;return 0;}// Sort on method existence if only one input has compareDocumentPosition
677var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;if(compare){return compare;}// Calculate position if both inputs belong to the same document
678// Support: IE 11+, Edge 17 - 18+
679// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
680// two documents; shallow comparisons work.
681// eslint-disable-next-line eqeqeq
682compare=(a.ownerDocument||a)==(b.ownerDocument||b)?a.compareDocumentPosition(b):// Otherwise we know they are disconnected
6831;// Disconnected nodes
684if(compare&1||!support.sortDetached&&b.compareDocumentPosition(a)===compare){// Choose the first element that is related to our preferred document
685// Support: IE 11+, Edge 17 - 18+
686// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
687// two documents; shallow comparisons work.
688// eslint-disable-next-line eqeqeq
689if(a===document||a.ownerDocument==preferredDoc&&find.contains(preferredDoc,a)){return-1;}// Support: IE 11+, Edge 17 - 18+
690// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
691// two documents; shallow comparisons work.
692// eslint-disable-next-line eqeqeq
693if(b===document||b.ownerDocument==preferredDoc&&find.contains(preferredDoc,b)){return 1;}// Maintain original order
694return sortInput?indexOf.call(sortInput,a)-indexOf.call(sortInput,b):0;}return compare&4?-1:1;};return document;}find.matches=function(expr,elements){return find(expr,null,null,elements);};find.matchesSelector=function(elem,expr){setDocument(elem);if(documentIsHTML&&!nonnativeSelectorCache[expr+" "]&&(!rbuggyQSA||!rbuggyQSA.test(expr))){try{var ret=matches.call(elem,expr);// IE 9's matchesSelector returns false on disconnected nodes
695if(ret||support.disconnectedMatch||// As well, disconnected nodes are said to be in a document
696// fragment in IE 9
697elem.document&&elem.document.nodeType!==11){return ret;}}catch(e){nonnativeSelectorCache(expr,true);}}return find(expr,document,null,[elem]).length>0;};find.contains=function(context,elem){// Set document vars if needed
698// Support: IE 11+, Edge 17 - 18+
699// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
700// two documents; shallow comparisons work.
701// eslint-disable-next-line eqeqeq
702if((context.ownerDocument||context)!=document){setDocument(context);}return jQuery.contains(context,elem);};find.attr=function(elem,name){// Set document vars if needed
703// Support: IE 11+, Edge 17 - 18+
704// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
705// two documents; shallow comparisons work.
706// eslint-disable-next-line eqeqeq
707if((elem.ownerDocument||elem)!=document){setDocument(elem);}var fn=Expr.attrHandle[name.toLowerCase()],// Don't get fooled by Object.prototype properties (see trac-13807)
708val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):undefined;if(val!==undefined){return val;}return elem.getAttribute(name);};find.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg);};/**
709 * Document sorting and removing duplicates
710 * @param {ArrayLike} results
711 */jQuery.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;// Unless we *know* we can detect duplicates, assume their presence
712//
713// Support: Android <=4.0+
714// Testing for detecting duplicates is unpredictable so instead assume we can't
715// depend on duplicate detection in all browsers without a stable sort.
vendor: 5,944 bytes, lines 716-752
716hasDuplicate=!support.sortStable;sortInput=!support.sortStable&&_slice.call(results,0);sort.call(results,sortOrder);if(hasDuplicate){while(elem=results[i++]){if(elem===results[i]){j=duplicates.push(i);}}while(j--){splice.call(results,duplicates[j],1);}}// Clear input after sorting to release objects
717// See https://github.com/jquery/sizzle/pull/225
718sortInput=null;return results;};jQuery.fn.uniqueSort=function(){return this.pushStack(jQuery.uniqueSort(_slice.apply(this)));};Expr=jQuery.expr={// Can be adjusted by the user
719cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function ATTR(match){match[1]=match[1].replace(runescape,funescape);// Move the given value to match[3] whether quoted or unquoted
720match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape);if(match[2]==="~="){match[3]=" "+match[3]+" ";}return match.slice(0,4);},CHILD:function CHILD(match){/* matches from matchExpr["CHILD"]
721				1 type (only|nth|...)
722				2 what (child|of-type)
723				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
724				4 xn-component of xn+y argument ([+-]?\d*n|)
725				5 sign of xn-component
726				6 x of xn-component
727				7 sign of y-component
728				8 y of y-component
729			*/match[1]=match[1].toLowerCase();if(match[1].slice(0,3)==="nth"){// nth-* requires argument
730if(!match[3]){find.error(match[0]);}// numeric x and y parameters for Expr.filter.CHILD
731// remember that false/true cast respectively to 0/1
732match[4]=+(match[4]?match[5]+(match[6]||1):2*(match[3]==="even"||match[3]==="odd"));match[5]=+(match[7]+match[8]||match[3]==="odd");// other types prohibit arguments
733}else if(match[3]){find.error(match[0]);}return match;},PSEUDO:function PSEUDO(match){var excess,unquoted=!match[6]&&match[2];if(matchExpr.CHILD.test(match[0])){return null;}// Accept quoted arguments as-is
734if(match[3]){match[2]=match[4]||match[5]||"";// Strip excess characters from unquoted arguments
735}else if(unquoted&&rpseudo.test(unquoted)&&(// Get excess from tokenize (recursively)
736excess=tokenize(unquoted,true))&&(// advance to the next closing parenthesis
737excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)){// excess is a negative index
738match[0]=match[0].slice(0,excess);match[2]=unquoted.slice(0,excess);}// Return only captures needed by the pseudo filter method (type and argument)
739return match.slice(0,3);}},filter:{TAG:function TAG(nodeNameSelector){var expectedNodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return nodeNameSelector==="*"?function(){return true;}:function(elem){return nodeName(elem,expectedNodeName);};},CLASS:function CLASS(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test(typeof elem.className==="string"&&elem.className||typeof elem.getAttribute!=="undefined"&&elem.getAttribute("class")||"");});},ATTR:function ATTR(name,operator,check){return function(elem){var result=find.attr(elem,name);if(result==null){return operator==="!=";}if(!operator){return true;}result+="";if(operator==="="){return result===check;}if(operator==="!="){return result!==check;}if(operator==="^="){return check&&result.indexOf(check)===0;}if(operator==="*="){return check&&result.indexOf(check)>-1;}if(operator==="$="){return check&&result.slice(-check.length)===check;}if(operator==="~="){return(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1;}if(operator==="|="){return result===check||result.slice(0,check.length+1)===check+"-";}return false;};},CHILD:function CHILD(type,what,_argument,first,last){var simple=type.slice(0,3)!=="nth",forward=type.slice(-4)!=="last",ofType=what==="of-type";return first===1&&last===0?// Shortcut for :nth-*(n)
740function(elem){return!!elem.parentNode;}:function(elem,_context,xml){var cache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=false;if(parent){// :(first|last|only)-(child|of-type)
741if(simple){while(dir){node=elem;while(node=node[dir]){if(ofType?nodeName(node,name):node.nodeType===1){return false;}}// Reverse direction for :only-* (if we haven't yet done so)
742start=dir=type==="only"&&!start&&"nextSibling";}return true;}start=[forward?parent.firstChild:parent.lastChild];// non-xml :nth-child(...) stores cache data on `parent`
743if(forward&&useCache){// Seek `elem` from a previously-cached index
744outerCache=parent[expando]||(parent[expando]={});cache=outerCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex&&cache[2];node=nodeIndex&&parent.childNodes[nodeIndex];while(node=++nodeIndex&&node&&node[dir]||(// Fallback to seeking `elem` from the start
745diff=nodeIndex=0)||start.pop()){// When found, cache indexes on `parent` and break
746if(node.nodeType===1&&++diff&&node===elem){outerCache[type]=[dirruns,nodeIndex,diff];break;}}}else{// Use previously-cached element index if available
747if(useCache){outerCache=elem[expando]||(elem[expando]={});cache=outerCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex;}// xml :nth-child(...)
748// or :nth-last-child(...) or :nth(-last)?-of-type(...)
749if(diff===false){// Use the same loop as above to seek `elem` from the start
750while(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop()){if((ofType?nodeName(node,name):node.nodeType===1)&&++diff){// Cache the index of each encountered element
751if(useCache){outerCache=node[expando]||(node[expando]={});outerCache[type]=[dirruns,diff];}if(node===elem){break;}}}}}// Incorporate the offset, then check against cycle size
752diff-=last;return diff===first||diff%first===0&&diff/first>=0;}};},PSEUDO:function PSEUDO(pseudo,argument){// pseudo-class names are case-insensitive
vendor: 4,185 bytes, lines 753-789
753// https://www.w3.org/TR/selectors/#pseudo-classes
754// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
755// Remember that setFilters inherits from pseudos
756var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||find.error("unsupported pseudo: "+pseudo);// The user may use createPseudo to indicate that
757// arguments are needed to create the filter function
758// just as jQuery does
759if(fn[expando]){return fn(argument);}// But maintain support for old signatures
760if(fn.length>1){args=[pseudo,pseudo,"",argument];return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){var idx,matched=fn(seed,argument),i=matched.length;while(i--){idx=indexOf.call(seed,matched[i]);seed[idx]=!(matches[idx]=matched[i]);}}):function(elem){return fn(elem,0,args);};}return fn;}},pseudos:{// Potentially complex pseudos
761not:markFunction(function(selector){// Trim the selector passed to compile
762// to avoid treating leading and trailing
763// spaces as combinators
764var input=[],results=[],matcher=compile(selector.replace(rtrimCSS,"$1"));return matcher[expando]?markFunction(function(seed,matches,_context,xml){var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;// Match elements unmatched by `matcher`
765while(i--){if(elem=unmatched[i]){seed[i]=!(matches[i]=elem);}}}):function(elem,_context,xml){input[0]=elem;matcher(input,null,xml,results);// Don't keep the element
766// (see https://github.com/jquery/sizzle/issues/299)
767input[0]=null;return!results.pop();};}),has:markFunction(function(selector){return function(elem){return find(selector,elem).length>0;};}),contains:markFunction(function(text){text=text.replace(runescape,funescape);return function(elem){return(elem.textContent||jQuery.text(elem)).indexOf(text)>-1;};}),// "Whether an element is represented by a :lang() selector
768// is based solely on the element's language value
769// being equal to the identifier C,
770// or beginning with the identifier C immediately followed by "-".
771// The matching of C against the element's language value is performed case-insensitively.
772// The identifier C does not have to be a valid language name."
773// https://www.w3.org/TR/selectors/#lang-pseudo
774lang:markFunction(function(lang){// lang value must be a valid identifier
775if(!ridentifier.test(lang||"")){find.error("unsupported lang: "+lang);}lang=lang.replace(runescape,funescape).toLowerCase();return function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang")){elemLang=elemLang.toLowerCase();return elemLang===lang||elemLang.indexOf(lang+"-")===0;}}while((elem=elem.parentNode)&&elem.nodeType===1);return false;};}),// Miscellaneous
776target:function target(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id;},root:function root(elem){return elem===documentElement;},focus:function focus(elem){return elem===safeActiveElement()&&document.hasFocus()&&!!(elem.type||elem.href||~elem.tabIndex);},// Boolean properties
777enabled:createDisabledPseudo(false),disabled:createDisabledPseudo(true),checked:function checked(elem){// In CSS3, :checked should return both checked and selected elements
778// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
779return nodeName(elem,"input")&&!!elem.checked||nodeName(elem,"option")&&!!elem.selected;},selected:function selected(elem){// Support: IE <=11+
780// Accessing the selectedIndex property
781// forces the browser to treat the default option as
782// selected when in an optgroup.
783if(elem.parentNode){// eslint-disable-next-line no-unused-expressions
784elem.parentNode.selectedIndex;}return elem.selected===true;},// Contents
785empty:function empty(elem){// https://www.w3.org/TR/selectors/#empty-pseudo
786// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
787//   but not by others (comment: 8; processing instruction: 7; etc.)
788// nodeType < 6 works because attributes (2) do not appear as children
789for(elem=elem.firstChild;elem;elem=elem.nextSibling){if(elem.nodeType<6){return false;}}return true;},parent:function parent(elem){return!Expr.pseudos.empty(elem);},// Element/input types
vendor: 23,252 bytes, lines 790-940
790header:function header(elem){return rheader.test(elem.nodeName);},input:function input(elem){return rinputs.test(elem.nodeName);},button:function button(elem){return nodeName(elem,"input")&&elem.type==="button"||nodeName(elem,"button");},text:function text(elem){var attr;return nodeName(elem,"input")&&elem.type==="text"&&(// Support: IE <10 only
791// New HTML5 attribute values (e.g., "search") appear
792// with elem.type === "text"
793(attr=elem.getAttribute("type"))==null||attr.toLowerCase()==="text");},// Position-in-collection
794first:createPositionalPseudo(function(){return[0];}),last:createPositionalPseudo(function(_matchIndexes,length){return[length-1];}),eq:createPositionalPseudo(function(_matchIndexes,length,argument){return[argument<0?argument+length:argument];}),even:createPositionalPseudo(function(matchIndexes,length){var i=0;for(;i<length;i+=2){matchIndexes.push(i);}return matchIndexes;}),odd:createPositionalPseudo(function(matchIndexes,length){var i=1;for(;i<length;i+=2){matchIndexes.push(i);}return matchIndexes;}),lt:createPositionalPseudo(function(matchIndexes,length,argument){var i;if(argument<0){i=argument+length;}else if(argument>length){i=length;}else{i=argument;}for(;--i>=0;){matchIndexes.push(i);}return matchIndexes;}),gt:createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;++i<length;){matchIndexes.push(i);}return matchIndexes;})}};Expr.pseudos.nth=Expr.pseudos.eq;// Add button/input type pseudos
795for(i in{radio:true,checkbox:true,file:true,password:true,image:true}){Expr.pseudos[i]=createInputPseudo(i);}for(i in{submit:true,reset:true}){Expr.pseudos[i]=createButtonPseudo(i);}// Easy API for creating new setFilters
796function setFilters(){}setFilters.prototype=Expr.filters=Expr.pseudos;Expr.setFilters=new setFilters();function tokenize(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached){return parseOnly?0:cached.slice(0);}soFar=selector;groups=[];preFilters=Expr.preFilter;while(soFar){// Comma and first run
797if(!matched||(match=rcomma.exec(soFar))){if(match){// Don't consume trailing commas as valid
798soFar=soFar.slice(match[0].length)||soFar;}groups.push(tokens=[]);}matched=false;// Combinators
799if(match=rleadingCombinator.exec(soFar)){matched=match.shift();tokens.push({value:matched,// Cast descendant combinators to space
800type:match[0].replace(rtrimCSS," ")});soFar=soFar.slice(matched.length);}// Filters
801for(type in Expr.filter){if((match=matchExpr[type].exec(soFar))&&(!preFilters[type]||(match=preFilters[type](match)))){matched=match.shift();tokens.push({value:matched,type:type,matches:match});soFar=soFar.slice(matched.length);}}if(!matched){break;}}// Return the length of the invalid excess
802// if we're just parsing
803// Otherwise, throw an error or return tokens
804if(parseOnly){return soFar.length;}return soFar?find.error(selector):// Cache the tokens
805tokenCache(selector,groups).slice(0);}function toSelector(tokens){var i=0,len=tokens.length,selector="";for(;i<len;i++){selector+=tokens[i].value;}return selector;}function addCombinator(matcher,combinator,base){var dir=combinator.dir,skip=combinator.next,key=skip||dir,checkNonElements=base&&key==="parentNode",doneName=done++;return combinator.first?// Check against closest ancestor/preceding element
806function(elem,context,xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){return matcher(elem,context,xml);}}return false;}:// Check against all ancestor/preceding elements
807function(elem,context,xml){var oldCache,outerCache,newCache=[dirruns,doneName];// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
808if(xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){if(matcher(elem,context,xml)){return true;}}}}else{while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){outerCache=elem[expando]||(elem[expando]={});if(skip&&nodeName(elem,skip)){elem=elem[dir]||elem;}else if((oldCache=outerCache[key])&&oldCache[0]===dirruns&&oldCache[1]===doneName){// Assign to newCache so results back-propagate to previous elements
809return newCache[2]=oldCache[2];}else{// Reuse newcache so results back-propagate to previous elements
810outerCache[key]=newCache;// A match means we're done; a fail means we have to keep checking
811if(newCache[2]=matcher(elem,context,xml)){return true;}}}}}return false;};}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){var i=matchers.length;while(i--){if(!matchers[i](elem,context,xml)){return false;}}return true;}:matchers[0];}function multipleContexts(selector,contexts,results){var i=0,len=contexts.length;for(;i<len;i++){find(selector,contexts[i],results);}return results;}function condense(unmatched,map,filter,context,xml){var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=map!=null;for(;i<len;i++){if(elem=unmatched[i]){if(!filter||filter(elem,context,xml)){newUnmatched.push(elem);if(mapped){map.push(i);}}}}return newUnmatched;}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){if(postFilter&&!postFilter[expando]){postFilter=setMatcher(postFilter);}if(postFinder&&!postFinder[expando]){postFinder=setMatcher(postFinder,postSelector);}return markFunction(function(seed,results,context,xml){var temp,i,elem,matcherOut,preMap=[],postMap=[],preexisting=results.length,// Get initial elements from seed or context
812elems=seed||multipleContexts(selector||"*",context.nodeType?[context]:context,[]),// Prefilter to get matcher input, preserving a map for seed-results synchronization
813matcherIn=preFilter&&(seed||!selector)?condense(elems,preMap,preFilter,context,xml):elems;if(matcher){// If we have a postFinder, or filtered seed, or non-seed postFilter
814// or preexisting results,
815matcherOut=postFinder||(seed?preFilter:preexisting||postFilter)?// ...intermediate processing is necessary
816[]:// ...otherwise use results directly
817results;// Find primary matches
818matcher(matcherIn,matcherOut,context,xml);}else{matcherOut=matcherIn;}// Apply postFilter
819if(postFilter){temp=condense(matcherOut,postMap);postFilter(temp,[],context,xml);// Un-match failing elements by moving them back to matcherIn
820i=temp.length;while(i--){if(elem=temp[i]){matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem);}}}if(seed){if(postFinder||preFilter){if(postFinder){// Get the final matcherOut by condensing this intermediate into postFinder contexts
821temp=[];i=matcherOut.length;while(i--){if(elem=matcherOut[i]){// Restore matcherIn since elem is not yet a final match
822temp.push(matcherIn[i]=elem);}}postFinder(null,matcherOut=[],temp,xml);}// Move matched elements from seed to results to keep them synchronized
823i=matcherOut.length;while(i--){if((elem=matcherOut[i])&&(temp=postFinder?indexOf.call(seed,elem):preMap[i])>-1){seed[temp]=!(results[temp]=elem);}}}// Add elements to results, through postFinder if defined
824}else{matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut);if(postFinder){postFinder(null,results,matcherOut,xml);}else{push.apply(results,matcherOut);}}});}function matcherFromTokens(tokens){var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,// The foundational matcher ensures that elements are reachable from top-level context(s)
825matchContext=addCombinator(function(elem){return elem===checkContext;},implicitRelative,true),matchAnyContext=addCombinator(function(elem){return indexOf.call(checkContext,elem)>-1;},implicitRelative,true),matchers=[function(elem,context,xml){// Support: IE 11+, Edge 17 - 18+
826// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
827// two documents; shallow comparisons work.
828// eslint-disable-next-line eqeqeq
829var ret=!leadingRelative&&(xml||context!=outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));// Avoid hanging onto element
830// (see https://github.com/jquery/sizzle/issues/299)
831checkContext=null;return ret;}];for(;i<len;i++){if(matcher=Expr.relative[tokens[i].type]){matchers=[addCombinator(elementMatcher(matchers),matcher)];}else{matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches);// Return special upon seeing a positional matcher
832if(matcher[expando]){// Find the next relative operator (if any) for proper handling
833j=++i;for(;j<len;j++){if(Expr.relative[tokens[j].type]){break;}}return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(// If the preceding token was a descendant combinator, insert an implicit any-element `*`
834tokens.slice(0,i-1).concat({value:tokens[i-2].type===" "?"*":""})).replace(rtrimCSS,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens));}matchers.push(matcher);}}return elementMatcher(matchers);}function matcherFromGroupMatchers(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function superMatcher(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,// We must always have either seed elements or outermost context
835elems=seed||byElement&&Expr.find.TAG("*",outermost),// Use integer dirruns iff this is the outermost matcher
836dirrunsUnique=dirruns+=contextBackup==null?1:Math.random()||0.1,len=elems.length;if(outermost){// Support: IE 11+, Edge 17 - 18+
837// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
838// two documents; shallow comparisons work.
839// eslint-disable-next-line eqeqeq
840outermostContext=context==document||context||outermost;}// Add elements passing elementMatchers directly to results
841// Support: iOS <=7 - 9 only
842// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
843// elements by id. (see trac-14142)
844for(;i!==len&&(elem=elems[i])!=null;i++){if(byElement&&elem){j=0;// Support: IE 11+, Edge 17 - 18+
845// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
846// two documents; shallow comparisons work.
847// eslint-disable-next-line eqeqeq
848if(!context&&elem.ownerDocument!=document){setDocument(elem);xml=!documentIsHTML;}while(matcher=elementMatchers[j++]){if(matcher(elem,context||document,xml)){push.call(results,elem);break;}}if(outermost){dirruns=dirrunsUnique;}}// Track unmatched elements for set filters
849if(bySet){// They will have gone through all possible matchers
850if(elem=!matcher&&elem){matchedCount--;}// Lengthen the array for every element, matched or not
851if(seed){unmatched.push(elem);}}}// `i` is now the count of elements visited above, and adding it to `matchedCount`
852// makes the latter nonnegative.
853matchedCount+=i;// Apply set filters to unmatched elements
854// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
855// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
856// no element matchers and no seed.
857// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
858// case, which will result in a "00" `matchedCount` that differs from `i` but is also
859// numerically zero.
860if(bySet&&i!==matchedCount){j=0;while(matcher=setMatchers[j++]){matcher(unmatched,setMatched,context,xml);}if(seed){// Reintegrate element matches to eliminate the need for sorting
861if(matchedCount>0){while(i--){if(!(unmatched[i]||setMatched[i])){setMatched[i]=pop.call(results);}}}// Discard index placeholder values to get only actual matches
862setMatched=condense(setMatched);}// Add matches to results
863push.apply(results,setMatched);// Seedless set matches succeeding multiple successful matchers stipulate sorting
864if(outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1){jQuery.uniqueSort(results);}}// Override manipulation of globals by nested matchers
865if(outermost){dirruns=dirrunsUnique;outermostContext=contextBackup;}return unmatched;};return bySet?markFunction(superMatcher):superMatcher;}function compile(selector,match/* Internal Use Only */){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){// Generate a function of recursive functions that can be used to check each element
866if(!match){match=tokenize(selector);}i=match.length;while(i--){cached=matcherFromTokens(match[i]);if(cached[expando]){setMatchers.push(cached);}else{elementMatchers.push(cached);}}// Cache the compiled function
867cached=compilerCache(selector,matcherFromGroupMatchers(elementMatchers,setMatchers));// Save selector and tokenization
868cached.selector=selector;}return cached;}/**
869 * A low-level selection function that works with jQuery's compiled
870 *  selector functions
871 * @param {String|Function} selector A selector or a pre-compiled
872 *  selector function built with jQuery selector compile
873 * @param {Element} context
874 * @param {Array} [results]
875 * @param {Array} [seed] A set of elements to match against
876 */function select(selector,context,results,seed){var i,tokens,token,type,find,compiled=typeof selector==="function"&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);results=results||[];// Try to minimize operations if there is only one selector in the list and no seed
877// (the latter of which guarantees us context)
878if(match.length===1){// Reduce context if the leading compound selector is an ID
879tokens=match[0]=match[0].slice(0);if(tokens.length>2&&(token=tokens[0]).type==="ID"&&context.nodeType===9&&documentIsHTML&&Expr.relative[tokens[1].type]){context=(Expr.find.ID(token.matches[0].replace(runescape,funescape),context)||[])[0];if(!context){return results;// Precompiled matchers will still verify ancestry, so step up a level
880}else if(compiled){context=context.parentNode;}selector=selector.slice(tokens.shift().value.length);}// Fetch a seed set for right-to-left matching
881i=matchExpr.needsContext.test(selector)?0:tokens.length;while(i--){token=tokens[i];// Abort if we hit a combinator
882if(Expr.relative[type=token.type]){break;}if(find=Expr.find[type]){// Search, expanding context for leading sibling combinators
883if(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context)){// If seed is empty or no tokens remain, we can return early
884tokens.splice(i,1);selector=seed.length&&toSelector(tokens);if(!selector){push.apply(results,seed);return results;}break;}}}}// Compile and execute a filtering function if one is not provided
885// Provide `match` to avoid retokenization if we modified the selector above
886(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context);return results;}// One-time assignments
887// Support: Android <=4.0 - 4.1+
888// Sort stability
889support.sortStable=expando.split("").sort(sortOrder).join("")===expando;// Initialize against the default document
890setDocument();// Support: Android <=4.0 - 4.1+
891// Detached nodes confoundingly follow *each other*
892support.sortDetached=assert(function(el){// Should return 1, but returns 4 (following)
893return el.compareDocumentPosition(document.createElement("fieldset"))&1;});jQuery.find=find;// Deprecated
894jQuery.expr[":"]=jQuery.expr.pseudos;jQuery.unique=jQuery.uniqueSort;// These have always been private, but they used to be documented as part of
895// Sizzle so let's maintain them for now for backwards compatibility purposes.
896find.compile=compile;find.select=select;find.setDocument=setDocument;find.tokenize=tokenize;find.escape=jQuery.escapeSelector;find.getText=jQuery.text;find.isXML=jQuery.isXMLDoc;find.selectors=jQuery.expr;find.support=jQuery.support;find.uniqueSort=jQuery.uniqueSort;/* eslint-enable */})();var dir=function dir(elem,_dir,until){var matched=[],truncate=until!==undefined;while((elem=elem[_dir])&&elem.nodeType!==9){if(elem.nodeType===1){if(truncate&&jQuery(elem).is(until)){break;}matched.push(elem);}}return matched;};var _siblings=function _siblings(n,elem){var matched=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){matched.push(n);}}return matched;};var rneedsContext=jQuery.expr.match.needsContext;var rsingleTag=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;// Implement the identical functionality for filter and not
897function winnow(elements,qualifier,not){if(isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not;});}// Single element
898if(qualifier.nodeType){return jQuery.grep(elements,function(elem){return elem===qualifier!==not;});}// Arraylike of elements (jQuery, arguments, Array)
899if(typeof qualifier!=="string"){return jQuery.grep(elements,function(elem){return indexOf.call(qualifier,elem)>-1!==not;});}// Filtered directly for both simple and complex selectors
900return jQuery.filter(qualifier,elements,not);}jQuery.filter=function(expr,elems,not){var elem=elems[0];if(not){expr=":not("+expr+")";}if(elems.length===1&&elem.nodeType===1){return jQuery.find.matchesSelector(elem,expr)?[elem]:[];}return jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return elem.nodeType===1;}));};jQuery.fn.extend({find:function find(selector){var i,ret,len=this.length,self=this;if(typeof selector!=="string"){return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++){if(jQuery.contains(self[i],this)){return true;}}}));}ret=this.pushStack([]);for(i=0;i<len;i++){jQuery.find(selector,self[i],ret);}return len>1?jQuery.uniqueSort(ret):ret;},filter:function filter(selector){return this.pushStack(winnow(this,selector||[],false));},not:function not(selector){return this.pushStack(winnow(this,selector||[],true));},is:function is(selector){return!!winnow(this,// If this is a positional/relative selector, check membership in the returned set
901// so $("p:first").is("p:last") won't return true for a doc with two "p".
902typeof selector==="string"&&rneedsContext.test(selector)?jQuery(selector):selector||[],false).length;}});// Initialize a jQuery object
903// A central reference to the root jQuery(document)
904var rootjQuery,// A simple way to check for HTML strings
905// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
906// Strict HTML recognition (trac-11290: must start with <)
907// Shortcut simple #id case for speed
908rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,init=jQuery.fn.init=function(selector,context,root){var match,elem;// HANDLE: $(""), $(null), $(undefined), $(false)
909if(!selector){return this;}// Method init() accepts an alternate rootjQuery
910// so migrate can support jQuery.sub (gh-2101)
911root=root||rootjQuery;// Handle HTML strings
912if(typeof selector==="string"){if(selector[0]==="<"&&selector[selector.length-1]===">"&&selector.length>=3){// Assume that strings that start and end with <> are HTML and skip the regex check
913match=[null,selector,null];}else{match=rquickExpr.exec(selector);}// Match html or make sure no context is specified for #id
914if(match&&(match[1]||!context)){// HANDLE: $(html) -> $(array)
915if(match[1]){context=context instanceof jQuery?context[0]:context;// Option to run scripts is true for back-compat
916// Intentionally let the error be thrown if parseHTML is not present
917jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,true));// HANDLE: $(html, props)
918if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){for(match in context){// Properties of context are called as methods if possible
919if(isFunction(this[match])){this[match](context[match]);// ...and otherwise set as attributes
920}else{this.attr(match,context[match]);}}}return this;// HANDLE: $(#id)
921}else{elem=document.getElementById(match[2]);if(elem){// Inject the element directly into the jQuery object
922this[0]=elem;this.length=1;}return this;}// HANDLE: $(expr, $(...))
923}else if(!context||context.jquery){return(context||root).find(selector);// HANDLE: $(expr, context)
924// (which is just equivalent to: $(context).find(expr)
925}else{return this.constructor(context).find(selector);}// HANDLE: $(DOMElement)
926}else if(selector.nodeType){this[0]=selector;this.length=1;return this;// HANDLE: $(function)
927// Shortcut for document ready
928}else if(isFunction(selector)){return root.ready!==undefined?root.ready(selector):// Execute immediately if ready is not present
929selector(jQuery);}return jQuery.makeArray(selector,this);};// Give the init function the jQuery prototype for later instantiation
930init.prototype=jQuery.fn;// Initialize central reference
931rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,// Methods guaranteed to produce a unique set when starting from a unique set
932guaranteedUnique={children:true,contents:true,next:true,prev:true};jQuery.fn.extend({has:function has(target){var targets=jQuery(target,this),l=targets.length;return this.filter(function(){var i=0;for(;i<l;i++){if(jQuery.contains(this,targets[i])){return true;}}});},closest:function closest(selectors,context){var cur,i=0,l=this.length,matched=[],targets=typeof selectors!=="string"&&jQuery(selectors);// Positional selectors never match, since there's no _selection_ context
933if(!rneedsContext.test(selectors)){for(;i<l;i++){for(cur=this[i];cur&&cur!==context;cur=cur.parentNode){// Always skip document fragments
934if(cur.nodeType<11&&(targets?targets.index(cur)>-1:// Don't pass non-elements to jQuery#find
935cur.nodeType===1&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break;}}}}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched);},// Determine the position of an element within the set
936index:function index(elem){// No argument, return index in parent
937if(!elem){return this[0]&&this[0].parentNode?this.first().prevAll().length:-1;}// Index in selector
938if(typeof elem==="string"){return indexOf.call(jQuery(elem),this[0]);}// Locate the position of the desired element
939return indexOf.call(this,// If it receives a jQuery object, the first element is used
940elem.jquery?elem[0]:elem);},add:function add(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))));},addBack:function addBack(selector){return this.add(selector==null?this.prevObject:this.prevObject.filter(selector));}});function sibling(cur,dir){while((cur=cur[dir])&&cur.nodeType!==1){}return cur;}jQuery.each({parent:function parent(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null;},parents:function parents(elem){return dir(elem,"parentNode");},parentsUntil:function parentsUntil(elem,_i,until){return dir(elem,"parentNode",until);},next:function next(elem){return sibling(elem,"nextSibling");},prev:function prev(elem){return sibling(elem,"previousSibling");},nextAll:function nextAll(elem){return dir(elem,"nextSibling");},prevAll:function prevAll(elem){return dir(elem,"previousSibling");},nextUntil:function nextUntil(elem,_i,until){return dir(elem,"nextSibling",until);},prevUntil:function prevUntil(elem,_i,until){return dir(elem,"previousSibling",until);},siblings:function siblings(elem){return _siblings((elem.parentNode||{}).firstChild,elem);},children:function children(elem){return _siblings(elem.firstChild);},contents:function contents(elem){if(elem.contentDocument!=null&&// Supp
vendor: 4,199 bytes, lines 940-996
940ort: IE 11+
941// <object> elements with no `data` attribute has an object
942// `contentDocument` with a `null` prototype.
943getProto(elem.contentDocument)){return elem.contentDocument;}// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
944// Treat the template element as a regular one in browsers that
945// don't support it.
946if(nodeName(elem,"template")){elem=elem.content||elem;}return jQuery.merge([],elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(until,selector){var matched=jQuery.map(this,fn,until);if(name.slice(-5)!=="Until"){selector=until;}if(selector&&typeof selector==="string"){matched=jQuery.filter(selector,matched);}if(this.length>1){// Remove duplicates
947if(!guaranteedUnique[name]){jQuery.uniqueSort(matched);}// Reverse order for parents* and prev-derivatives
948if(rparentsprev.test(name)){matched.reverse();}}return this.pushStack(matched);};});var rnothtmlwhite=/[^\x20\t\r\n\f]+/g;// Convert String-formatted options into Object-formatted ones
949function createOptions(options){var object={};jQuery.each(options.match(rnothtmlwhite)||[],function(_,flag){object[flag]=true;});return object;}/*
950 * Create a callback list using the following parameters:
951 *
952 *	options: an optional list of space-separated options that will change how
953 *			the callback list behaves or a more traditional option object
954 *
955 * By default a callback list will act like an event callback list and can be
956 * "fired" multiple times.
957 *
958 * Possible options:
959 *
960 *	once:			will ensure the callback list can only be fired once (like a Deferred)
961 *
962 *	memory:			will keep track of previous values and will call any callback added
963 *					after the list has been fired right away with the latest "memorized"
964 *					values (like a Deferred)
965 *
966 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
967 *
968 *	stopOnFalse:	interrupt callings when a callback returns false
969 *
970 */jQuery.Callbacks=function(options){// Convert options from String-formatted to Object-formatted if needed
971// (we check in cache first)
972options=typeof options==="string"?createOptions(options):jQuery.extend({},options);var// Flag to know if list is currently firing
973firing,// Last fire value for non-forgettable lists
974memory,// Flag to know if list was already fired
975_fired,// Flag to prevent firing
976_locked,// Actual callback list
977list=[],// Queue of execution data for repeatable lists
978queue=[],// Index of currently firing callback (modified by add/remove as needed)
979firingIndex=-1,// Fire callbacks
980fire=function fire(){// Enforce single-firing
981_locked=_locked||options.once;// Execute callbacks for all pending executions,
982// respecting firingIndex overrides and runtime changes
983_fired=firing=true;for(;queue.length;firingIndex=-1){memory=queue.shift();while(++firingIndex<list.length){// Run callback and check for early termination
984if(list[firingIndex].apply(memory[0],memory[1])===false&&options.stopOnFalse){// Jump to end and forget the data so .add doesn't re-fire
985firingIndex=list.length;memory=false;}}}// Forget the data if we're done with it
986if(!options.memory){memory=false;}firing=false;// Clean up if we're done firing for good
987if(_locked){// Keep an empty list if we have data for future add calls
988if(memory){list=[];// Otherwise, this object is spent
989}else{list="";}}},// Actual Callbacks object
990self={// Add a callback or a collection of callbacks to the list
991add:function add(){if(list){// If we have memory from a past run, we should fire after adding
992if(memory&&!firing){firingIndex=list.length-1;queue.push(memory);}(function add(args){jQuery.each(args,function(_,arg){if(isFunction(arg)){if(!options.unique||!self.has(arg)){list.push(arg);}}else if(arg&&arg.length&&toType(arg)!=="string"){// Inspect recursively
993add(arg);}});})(arguments);if(memory&&!firing){fire();}}return this;},// Remove a callback from the list
994remove:function remove(){jQuery.each(arguments,function(_,arg){var index;while((index=jQuery.inArray(arg,list,index))>-1){list.splice(index,1);// Handle firing indexes
995if(index<=firingIndex){firingIndex--;}}});return this;},// Check if a given callback is in the list.
996// If no argument is given, return whether or not list has callbacks attached.
997has:function has(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0;},// Remove all callbacks from the list
998empty:function empty(){if(list){list=[];}return this;},// Disable .fire and .add
999// Abort any current/pending executions
1000// Clear all callbacks and values
1001disable:function disable(){_locked=queue=[];list=memory="";return this;},disabled:function disabled(){return!list;},// Disable .fire
1002// Also disable .add unless we have memory (since it would have no effect)
1003// Abort any pending executions
1004lock:function lock(){_locked=queue=[];if(!memory&&!firing){list=memory="";}return this;},locked:function locked(){return!!_locked;},// Call all callbacks with the given context and arguments
1005fireWith:function fireWith(context,args){if(!_locked){args=args||[];args=[context,args.slice?args.slice():args];queue.push(args);if(!firing){fire();}}return this;},// Call all the callbacks with the given arguments
1006fire:function fire(){self.fireWith(this,arguments);return this;},// To know if the callbacks have already been called at least once
1007fired:function fired(){return!!_fired;}};return self;};function Identity(v){return v;}function Thrower(ex){throw ex;}function adoptValue(value,resolve,reject,noValue){var method;try{// Check for promise aspect first to privilege synchronous behavior
1008if(value&&isFunction(method=value.promise)){method.call(value).done(resolve).fail(reject);// Other thenables
1009}else if(value&&isFunction(method=value.then)){method.call(value,resolve,reject);// Other non-thenables
1010}else{// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
1011// * false: [ value ].slice( 0 ) => resolve( value )
1012// * true: [ value ].slice( 1 ) => resolve()
1013resolve.apply(undefined,[value].slice(noValue));}// For Promises/A+, convert exceptions into rejections
1014// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
1015// Deferred#then to conditionally suppress rejection.
1016}catch(value){// Support: Android 4.0 only
1017// Strict mode functions invoked without .call/.apply get global-object context
1018reject.apply(undefined,[value]);}}jQuery.extend({Deferred:function Deferred(func){var tuples=[// action, add listener, callbacks,
1019// ... .then handlers, argument index, [final state]
1020["notify","progress",jQuery.Callbacks("memory"),jQuery.Callbacks("memory"),2],["resolve","done",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),0,"resolved"],["reject","fail",jQuery.Callbacks("once memory"),jQuery.Callbacks("once memory"),1,"rejected"]],_state="pending",_promise={state:function state(){return _state;},always:function always(){deferred.done(arguments).fail(arguments);return this;},"catch":function _catch(fn){return _promise.then(null,fn);},// Keep pipe for back-compat
1021pipe:function pipe()/* fnDone, fnFail, fnProgress */{var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(_i,tuple){// Map tuples (progress, done, fail) to arguments (done, fail, progress)
1022var fn=isFunction(fns[tuple[4]])&&fns[tuple[4]];// deferred.progress(function() { bind to newDefer or newDefer.notify })
1023// deferred.done(function() { bind to newDefer or newDefer.resolve })
1024// deferred.fail(function() { bind to newDefer or newDefer.reject })
1025deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);if(returned&&isFunction(returned.promise)){returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);}else{newDefer[tuple[0]+"With"](this,fn?[returned]:arguments);}});});fns=null;}).promise();},then:function then(onFulfilled,onRejected,onProgress){var maxDepth=0;function resolve(depth,deferred,handler,special){return function(){var that=this,args=arguments,mightThrow=function mightThrow(){var returned,then;// Support: Promises/A+ section 2.3.3.3.3
1026// https://promisesaplus.com/#point-59
1027// Ignore double-resolution attempts
1028if(depth<maxDepth){return;}returned=handler.apply(that,args);// Support: Promises/A+ section 2.3.1
1029// https://promisesaplus.com/#point-48
1030if(returned===deferred.promise()){throw new TypeError("Thenable self-resolution");}// Support: Promises/A+ sections 2.3.3.1, 3.5
1031// https://promisesaplus.com/#point-54
1032// https://promisesaplus.com/#point-75
1033// Retrieve `then` only once
1034then=returned&&(// Support: Promises/A+ section 2.3.4
1035// https://promisesaplus.com/#point-64
1036// Only check objects and functions for thenability
1037(typeof returned==='undefined'?'undefined':_typeof(returned))==="object"||typeof returned==="function")&&returned.then;// Handle a returned thenable
1038if(isFunction(then)){// Special processors (notify) just wait for resolution
1039if(special){then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special));// Normal processors (resolve) also hook into progress
1040}else{// ...and disregard older resolution values
1041maxDepth++;
vendor: 18,885 bytes, lines 1041-1238
1041then.call(returned,resolve(maxDepth,deferred,Identity,special),resolve(maxDepth,deferred,Thrower,special),resolve(maxDepth,deferred,Identity,deferred.notifyWith));}// Handle all other returned values
1042}else{// Only substitute handlers pass on context
1043// and multiple values (non-spec behavior)
1044if(handler!==Identity){that=undefined;args=[returned];}// Process the value(s)
1045// Default process is resolve
1046(special||deferred.resolveWith)(that,args);}},// Only normal processors (resolve) catch and reject exceptions
1047process=special?mightThrow:function(){try{mightThrow();}catch(e){if(jQuery.Deferred.exceptionHook){jQuery.Deferred.exceptionHook(e,process.error);}// Support: Promises/A+ section 2.3.3.3.4.1
1048// https://promisesaplus.com/#point-61
1049// Ignore post-resolution exceptions
1050if(depth+1>=maxDepth){// Only substitute handlers pass on context
1051// and multiple values (non-spec behavior)
1052if(handler!==Thrower){that=undefined;args=[e];}deferred.rejectWith(that,args);}}};// Support: Promises/A+ section 2.3.3.3.1
1053// https://promisesaplus.com/#point-57
1054// Re-resolve promises immediately to dodge false rejection from
1055// subsequent errors
1056if(depth){process();}else{// Call an optional hook to record the error, in case of exception
1057// since it's otherwise lost when execution goes async
1058if(jQuery.Deferred.getErrorHook){process.error=jQuery.Deferred.getErrorHook();// The deprecated alias of the above. While the name suggests
1059// returning the stack, not an error instance, jQuery just passes
1060// it directly to `console.warn` so both will work; an instance
1061// just better cooperates with source maps.
1062}else if(jQuery.Deferred.getStackHook){process.error=jQuery.Deferred.getStackHook();}window.setTimeout(process);}};}return jQuery.Deferred(function(newDefer){// progress_handlers.add( ... )
1063tuples[0][3].add(resolve(0,newDefer,isFunction(onProgress)?onProgress:Identity,newDefer.notifyWith));// fulfilled_handlers.add( ... )
1064tuples[1][3].add(resolve(0,newDefer,isFunction(onFulfilled)?onFulfilled:Identity));// rejected_handlers.add( ... )
1065tuples[2][3].add(resolve(0,newDefer,isFunction(onRejected)?onRejected:Thrower));}).promise();},// Get a promise for this deferred
1066// If obj is provided, the promise aspect is added to the object
1067promise:function promise(obj){return obj!=null?jQuery.extend(obj,_promise):_promise;}},deferred={};// Add list-specific methods
1068jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[5];// promise.progress = list.add
1069// promise.done = list.add
1070// promise.fail = list.add
1071_promise[tuple[1]]=list.add;// Handle state
1072if(stateString){list.add(function(){// state = "resolved" (i.e., fulfilled)
1073// state = "rejected"
1074_state=stateString;},// rejected_callbacks.disable
1075// fulfilled_callbacks.disable
1076tuples[3-i][2].disable,// rejected_handlers.disable
1077// fulfilled_handlers.disable
1078tuples[3-i][3].disable,// progress_callbacks.lock
1079tuples[0][2].lock,// progress_handlers.lock
1080tuples[0][3].lock);}// progress_handlers.fire
1081// fulfilled_handlers.fire
1082// rejected_handlers.fire
1083list.add(tuple[3].fire);// deferred.notify = function() { deferred.notifyWith(...) }
1084// deferred.resolve = function() { deferred.resolveWith(...) }
1085// deferred.reject = function() { deferred.rejectWith(...) }
1086deferred[tuple[0]]=function(){deferred[tuple[0]+"With"](this===deferred?undefined:this,arguments);return this;};// deferred.notifyWith = list.fireWith
1087// deferred.resolveWith = list.fireWith
1088// deferred.rejectWith = list.fireWith
1089deferred[tuple[0]+"With"]=list.fireWith;});// Make the deferred a promise
1090_promise.promise(deferred);// Call given func if any
1091if(func){func.call(deferred,deferred);}// All done!
1092return deferred;},// Deferred helper
1093when:function when(singleValue){var// count of uncompleted subordinates
1094remaining=arguments.length,// count of unprocessed arguments
1095i=remaining,// subordinate fulfillment data
1096resolveContexts=Array(i),resolveValues=_slice.call(arguments),// the primary Deferred
1097primary=jQuery.Deferred(),// subordinate callback factory
1098updateFunc=function updateFunc(i){return function(value){resolveContexts[i]=this;resolveValues[i]=arguments.length>1?_slice.call(arguments):value;if(! --remaining){primary.resolveWith(resolveContexts,resolveValues);}};};// Single- and empty arguments are adopted like Promise.resolve
1099if(remaining<=1){adoptValue(singleValue,primary.done(updateFunc(i)).resolve,primary.reject,!remaining);// Use .then() to unwrap secondary thenables (cf. gh-3000)
1100if(primary.state()==="pending"||isFunction(resolveValues[i]&&resolveValues[i].then)){return primary.then();}}// Multiple arguments are aggregated like Promise.all array elements
1101while(i--){adoptValue(resolveValues[i],updateFunc(i),primary.reject);}return primary.promise();}});// These usually indicate a programmer mistake during development,
1102// warn about them ASAP rather than swallowing them by default.
1103var rerrorNames=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error
1104// captured before the async barrier to get the original error cause
1105// which may otherwise be hidden.
1106jQuery.Deferred.exceptionHook=function(error,asyncError){// Support: IE 8 - 9 only
1107// Console exists when dev tools are open, which can happen at any time
1108if(window.console&&window.console.warn&&error&&rerrorNames.test(error.name)){window.console.warn("jQuery.Deferred exception: "+error.message,error.stack,asyncError);}};jQuery.readyException=function(error){window.setTimeout(function(){throw error;});};// The deferred used on DOM ready
1109var readyList=jQuery.Deferred();jQuery.fn.ready=function(fn){readyList.then(fn)// Wrap jQuery.readyException in a function so that the lookup
1110// happens at the time of error handling instead of callback
1111// registration.
1112.catch(function(error){jQuery.readyException(error);});return this;};jQuery.extend({// Is the DOM ready to be used? Set to true once it occurs.
1113isReady:false,// A counter to track how many items to wait for before
1114// the ready event fires. See trac-6781
1115readyWait:1,// Handle when the DOM is ready
1116ready:function ready(wait){// Abort if there are pending holds or we're already ready
1117if(wait===true?--jQuery.readyWait:jQuery.isReady){return;}// Remember that the DOM is ready
1118jQuery.isReady=true;// If a normal DOM Ready event fired, decrement, and wait if need be
1119if(wait!==true&&--jQuery.readyWait>0){return;}// If there are functions bound, to execute
1120readyList.resolveWith(document,[jQuery]);}});jQuery.ready.then=readyList.then;// The ready event handler and self cleanup method
1121function completed(){document.removeEventListener("DOMContentLoaded",completed);window.removeEventListener("load",completed);jQuery.ready();}// Catch cases where $(document).ready() is called
1122// after the browser event has already occurred.
1123// Support: IE <=9 - 10 only
1124// Older IE sometimes signals "interactive" too soon
1125if(document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll){// Handle it asynchronously to allow scripts the opportunity to delay ready
1126window.setTimeout(jQuery.ready);}else{// Use the handy event callback
1127document.addEventListener("DOMContentLoaded",completed);// A fallback to window.onload, that will always work
1128window.addEventListener("load",completed);}// Multifunctional method to get and set values of a collection
1129// The value/s can optionally be executed if it's a function
1130var access=function access(elems,fn,key,value,chainable,emptyGet,raw){var i=0,len=elems.length,bulk=key==null;// Sets many values
1131if(toType(key)==="object"){chainable=true;for(i in key){access(elems,fn,i,key[i],true,emptyGet,raw);}// Sets one value
1132}else if(value!==undefined){chainable=true;if(!isFunction(value)){raw=true;}if(bulk){// Bulk operations run against the entire set
1133if(raw){fn.call(elems,value);fn=null;// ...except when executing function values
1134}else{bulk=fn;fn=function fn(elem,_key,value){return bulk.call(jQuery(elem),value);};}}if(fn){for(;i<len;i++){fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));}}}if(chainable){return elems;}// Gets
1135if(bulk){return fn.call(elems);}return len?fn(elems[0],key):emptyGet;};// Matches dashed string for camelizing
1136var rmsPrefix=/^-ms-/,rdashAlpha=/-([a-z])/g;// Used by camelCase as callback to replace()
1137function fcamelCase(_all,letter){return letter.toUpperCase();}// Convert dashed to camelCase; used by the css and data modules
1138// Support: IE <=9 - 11, Edge 12 - 15
1139// Microsoft forgot to hump their vendor prefix (trac-9572)
1140function camelCase(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase);}var acceptData=function acceptData(owner){// Accepts only:
1141//  - Node
1142//    - Node.ELEMENT_NODE
1143//    - Node.DOCUMENT_NODE
1144//  - Object
1145//    - Any
1146return owner.nodeType===1||owner.nodeType===9||!+owner.nodeType;};function Data(){this.expando=jQuery.expando+Data.uid++;}Data.uid=1;Data.prototype={cache:function cache(owner){// Check if the owner object already has a cache
1147var value=owner[this.expando];// If not, create one
1148if(!value){value={};// We can accept data for non-element nodes in modern browsers,
1149// but we should not, see trac-8335.
1150// Always return an empty object.
1151if(acceptData(owner)){// If it is a node unlikely to be stringify-ed or looped over
1152// use plain assignment
1153if(owner.nodeType){owner[this.expando]=value;// Otherwise secure it in a non-enumerable property
1154// configurable must be true to allow the property to be
1155// deleted when data is removed
1156}else{Object.defineProperty(owner,this.expando,{value:value,configurable:true});}}}return value;},set:function set(owner,data,value){var prop,cache=this.cache(owner);// Handle: [ owner, key, value ] args
1157// Always use camelCase key (gh-2257)
1158if(typeof data==="string"){cache[camelCase(data)]=value;// Handle: [ owner, { properties } ] args
1159}else{// Copy the properties one-by-one to the cache object
1160for(prop in data){cache[camelCase(prop)]=data[prop];}}return cache;},get:function get(owner,key){return key===undefined?this.cache(owner):// Always use camelCase key (gh-2257)
1161owner[this.expando]&&owner[this.expando][camelCase(key)];},access:function access(owner,key,value){// In cases where either:
1162//
1163//   1. No key was specified
1164//   2. A string key was specified, but no value provided
1165//
1166// Take the "read" path and allow the get method to determine
1167// which value to return, respectively either:
1168//
1169//   1. The entire cache object
1170//   2. The data stored at the key
1171//
1172if(key===undefined||key&&typeof key==="string"&&value===undefined){return this.get(owner,key);}// When the key is not a string, or both a key and value
1173// are specified, set or extend (existing objects) with either:
1174//
1175//   1. An object of properties
1176//   2. A key and value
1177//
1178this.set(owner,key,value);// Since the "set" path can have two possible entry points
1179// return the expected data based on which path was taken[*]
1180return value!==undefined?value:key;},remove:function remove(owner,key){var i,cache=owner[this.expando];if(cache===undefined){return;}if(key!==undefined){// Support array or space separated string of keys
1181if(Array.isArray(key)){// If key is an array of keys...
1182// We always set camelCase keys, so remove that.
1183key=key.map(camelCase);}else{key=camelCase(key);// If a key with the spaces exists, use it.
1184// Otherwise, create an array by matching non-whitespace
1185key=key in cache?[key]:key.match(rnothtmlwhite)||[];}i=key.length;while(i--){delete cache[key[i]];}}// Remove the expando if there's no more data
1186if(key===undefined||jQuery.isEmptyObject(cache)){// Support: Chrome <=35 - 45
1187// Webkit & Blink performance suffers when deleting properties
1188// from DOM nodes, so set to undefined instead
1189// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
1190if(owner.nodeType){owner[this.expando]=undefined;}else{delete owner[this.expando];}}},hasData:function hasData(owner){var cache=owner[this.expando];return cache!==undefined&&!jQuery.isEmptyObject(cache);}};var dataPriv=new Data();var dataUser=new Data();//	Implementation Summary
1191//
1192//	1. Enforce API surface and semantic compatibility with 1.9.x branch
1193//	2. Improve the module's maintainability by reducing the storage
1194//		paths to a single mechanism.
1195//	3. Use the same single mechanism to support "private" and "user" data.
1196//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
1197//	5. Avoid exposing implementation details on user objects (eg. expando properties)
1198//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
1199var rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/[A-Z]/g;function getData(data){if(data==="true"){return true;}if(data==="false"){return false;}if(data==="null"){return null;}// Only convert to a number if it doesn't change the string
1200if(data===+data+""){return+data;}if(rbrace.test(data)){return JSON.parse(data);}return data;}function dataAttr(elem,key,data){var name;// If nothing was found internally, try to fetch any
1201// data from the HTML5 data-* attribute
1202if(data===undefined&&elem.nodeType===1){name="data-"+key.replace(rmultiDash,"-$&").toLowerCase();data=elem.getAttribute(name);if(typeof data==="string"){try{data=getData(data);}catch(e){}// Make sure we set the data so it isn't changed later
1203dataUser.set(elem,key,data);}else{data=undefined;}}return data;}jQuery.extend({hasData:function hasData(elem){return dataUser.hasData(elem)||dataPriv.hasData(elem);},data:function data(elem,name,_data){return dataUser.access(elem,name,_data);},removeData:function removeData(elem,name){dataUser.remove(elem,name);},// TODO: Now that all calls to _data and _removeData have been replaced
1204// with direct calls to dataPriv methods, these can be deprecated.
1205_data:function _data(elem,name,data){return dataPriv.access(elem,name,data);},_removeData:function _removeData(elem,name){dataPriv.remove(elem,name);}});jQuery.fn.extend({data:function data(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;// Gets all values
1206if(key===undefined){if(this.length){data=dataUser.get(elem);if(elem.nodeType===1&&!dataPriv.get(elem,"hasDataAttrs")){i=attrs.length;while(i--){// Support: IE 11 only
1207// The attrs elements can be null (trac-14894)
1208if(attrs[i]){name=attrs[i].name;if(name.indexOf("data-")===0){name=camelCase(name.slice(5));dataAttr(elem,name,data[name]);}}}dataPriv.set(elem,"hasDataAttrs",true);}}return data;}// Sets multiple values
1209if((typeof key==='undefined'?'undefined':_typeof(key))==="object"){return this.each(function(){dataUser.set(this,key);});}return access(this,function(value){var data;// The calling jQuery object (element matches) is not empty
1210// (and therefore has an element appears at this[ 0 ]) and the
1211// `value` parameter was not undefined. An empty jQuery object
1212// will result in `undefined` for elem = this[ 0 ] which will
1213// throw an exception if an attempt to read a data cache is made.
1214if(elem&&value===undefined){// Attempt to get data from the cache
1215// The key will always be camelCased in Data
1216data=dataUser.get(elem,key);if(data!==undefined){return data;}// Attempt to "discover" the data in
1217// HTML5 custom data-* attrs
1218data=dataAttr(elem,key);if(data!==undefined){return data;}// We tried really hard, but the data doesn't exist.
1219return;}// Set the data...
1220this.each(function(){// We always store the camelCased key
1221dataUser.set(this,key,value);});},null,value,arguments.length>1,null,true);},removeData:function removeData(key){return this.each(function(){dataUser.remove(this,key);});}});jQuery.extend({queue:function queue(elem,type,data){var queue;if(elem){type=(type||"fx")+"queue";queue=dataPriv.get(elem,type);// Speed up dequeue by getting out quickly if this is just a lookup
1222if(data){if(!queue||Array.isArray(data)){queue=dataPriv.access(elem,type,jQuery.makeArray(data));}else{queue.push(data);}}return queue||[];}},dequeue:function dequeue(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function next(){jQuery.dequeue(elem,type);};// If the fx queue is dequeued, always remove the progress sentinel
1223if(fn==="inprogress"){fn=queue.shift();startLength--;}if(fn){// Add a progress sentinel to prevent the fx queue from being
1224// automatically dequeued
1225if(type==="fx"){queue.unshift("inprogress");}// Clear up the last queue stop function
1226delete hooks.stop;fn.call(elem,next,hooks);}if(!startLength&&hooks){hooks.empty.fire();}},// Not public - generate a queueHooks object, or return the current one
1227_queueHooks:function _queueHooks(elem,type){var key=type+"queueHooks";return dataPriv.get(elem,key)||dataPriv.access(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){dataPriv.remove(elem,[type+"queue",key]);})});}});jQuery.fn.extend({queue:function queue(type,data){var setter=2;if(typeof type!=="string"){data=type;type="fx";setter--;}if(arguments.length<setter){return jQuery.queue(this[0],type);}return data===undefined?this:this.each(function(){var queue=jQuery.queue(this,type,data);// Ensure a hooks for this queue
1228jQuery._queueHooks(this,type);if(type==="fx"&&queue[0]!=="inprogress"){jQuery.dequeue(this,type);}});},dequeue:function dequeue(type){return this.each(function(){jQuery.dequeue(this,type);});},clearQueue:function clearQueue(type){return this.queue(type||"fx",[]);},// Get a promise resolved when queues of a certain type
1229// are emptied (fx is the type by default)
1230promise:function promise(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function resolve(){if(! --count){defer.resolveWith(elements,[elements]);}};if(typeof type!=="string"){obj=type;type=undefined;}type=type||"fx";while(i--){tmp=dataPriv.get(elements[i],type+"queueHooks");if(tmp&&tmp.empty){count++;tmp.empty.add(resolve);}}resolve();return defer.promise(obj);}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;var rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i");var cssExpand=["Top","Right","Bottom","Left"];var documentElement=document.documentElement;var isAttached=function isAttached(elem){return jQuery.contains(elem.ownerDocument,elem);},composed={composed:true};// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
1231// Check attachment across shadow DOM boundaries when possible (gh-3504)
1232// Support: iOS 10.0-10.2 only
1233// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
1234// leading to errors. We need to check for `getRootNode`.
1235if(documentElement.getRootNode){isAttached=function isAttached(elem){return jQuery.contains(elem.ownerDocument,elem)||elem.getRootNode(composed)===elem.ownerDocument;};}var isHiddenWithinTree=function isHiddenWithinTree(elem,el){// isHiddenWithinTree might be called from jQuery#filter function;
1236// in that case, element will be second argument
1237elem=el||elem;// Inline style trumps all
1238return elem.style.display==="none"||elem.style.display===""&&// Otherwise, check computed style
vendor: 11,616 bytes, lines 1239-1319
1239// Support: Firefox <=43 - 45
1240// Disconnected elements can have computed display: none, so first confirm that elem is
1241// in the document.
1242isAttached(elem)&&jQuery.css(elem,"display")==="none";};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale,maxIterations=20,currentValue=tween?function(){return tween.cur();}:function(){return jQuery.css(elem,prop,"");},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),// Starting value computation is required for potential unit mismatches
1243initialInUnit=elem.nodeType&&(jQuery.cssNumber[prop]||unit!=="px"&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){// Support: Firefox <=54
1244// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
1245initial=initial/2;// Trust units reported by jQuery.css
1246unit=unit||initialInUnit[3];// Iteratively approximate from a nonzero starting point
1247initialInUnit=+initial||1;while(maxIterations--){// Evaluate and update our best guess (doubling guesses that zero out).
1248// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
1249jQuery.style(elem,prop,initialInUnit+unit);if((1-scale)*(1-(scale=currentValue()/initial||0.5))<=0){maxIterations=0;}initialInUnit=initialInUnit/scale;}initialInUnit=initialInUnit*2;jQuery.style(elem,prop,initialInUnit+unit);// Make sure we update the tween properties later on
1250valueParts=valueParts||[];}if(valueParts){initialInUnit=+initialInUnit||+initial||0;// Apply relative offset (+=/-=) if specified
1251adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2];if(tween){tween.unit=unit;tween.start=initialInUnit;tween.end=adjusted;}}return adjusted;}var defaultDisplayMap={};function getDefaultDisplay(elem){var temp,doc=elem.ownerDocument,nodeName=elem.nodeName,display=defaultDisplayMap[nodeName];if(display){return display;}temp=doc.body.appendChild(doc.createElement(nodeName));display=jQuery.css(temp,"display");temp.parentNode.removeChild(temp);if(display==="none"){display="block";}defaultDisplayMap[nodeName]=display;return display;}function showHide(elements,show){var display,elem,values=[],index=0,length=elements.length;// Determine new display value for elements that need to change
1252for(;index<length;index++){elem=elements[index];if(!elem.style){continue;}display=elem.style.display;if(show){// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
1253// check is required in this first loop unless we have a nonempty display value (either
1254// inline or about-to-be-restored)
1255if(display==="none"){values[index]=dataPriv.get(elem,"display")||null;if(!values[index]){elem.style.display="";}}if(elem.style.display===""&&isHiddenWithinTree(elem)){values[index]=getDefaultDisplay(elem);}}else{if(display!=="none"){values[index]="none";// Remember what we're overwriting
1256dataPriv.set(elem,"display",display);}}}// Set the display of the elements in a second loop to avoid constant reflow
1257for(index=0;index<length;index++){if(values[index]!=null){elements[index].style.display=values[index];}}return elements;}jQuery.fn.extend({show:function show(){return showHide(this,true);},hide:function hide(){return showHide(this);},toggle:function toggle(state){if(typeof state==="boolean"){return state?this.show():this.hide();}return this.each(function(){if(isHiddenWithinTree(this)){jQuery(this).show();}else{jQuery(this).hide();}});}});var rcheckableType=/^(?:checkbox|radio)$/i;var rtagName=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i;var rscriptType=/^$|^module$|\/(?:java|ecma)script/i;(function(){var fragment=document.createDocumentFragment(),div=fragment.appendChild(document.createElement("div")),input=document.createElement("input");// Support: Android 4.0 - 4.3 only
1258// Check state lost if the name is set (trac-11217)
1259// Support: Windows Web Apps (WWA)
1260// `name` and `type` must use .setAttribute for WWA (trac-14901)
1261input.setAttribute("type","radio");input.setAttribute("checked","checked");input.setAttribute("name","t");div.appendChild(input);// Support: Android <=4.1 only
1262// Older WebKit doesn't clone checked state correctly in fragments
1263support.checkClone=div.cloneNode(true).cloneNode(true).lastChild.checked;// Support: IE <=11 only
1264// Make sure textarea (and checkbox) defaultValue is properly cloned
1265div.innerHTML="<textarea>x</textarea>";support.noCloneChecked=!!div.cloneNode(true).lastChild.defaultValue;// Support: IE <=9 only
1266// IE <=9 replaces <option> tags with their contents when inserted outside of
1267// the select element.
1268div.innerHTML="<option></option>";support.option=!!div.lastChild;})();// We have to close these tags to support XHTML (trac-13200)
1269var wrapMap={// XHTML parsers do not magically insert elements in the
1270// same way that tag soup parsers do. So we cannot shorten
1271// this by omitting <tbody> or other required elements.
1272thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;// Support: IE <=9 only
1273if(!support.option){wrapMap.optgroup=wrapMap.option=[1,"<select multiple='multiple'>","</select>"];}function getAll(context,tag){// Support: IE <=9 - 11 only
1274// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
1275var ret;if(typeof context.getElementsByTagName!=="undefined"){ret=context.getElementsByTagName(tag||"*");}else if(typeof context.querySelectorAll!=="undefined"){ret=context.querySelectorAll(tag||"*");}else{ret=[];}if(tag===undefined||tag&&nodeName(context,tag)){return jQuery.merge([context],ret);}return ret;}// Mark scripts as having already been evaluated
1276function setGlobalEval(elems,refElements){var i=0,l=elems.length;for(;i<l;i++){dataPriv.set(elems[i],"globalEval",!refElements||dataPriv.get(refElements[i],"globalEval"));}}var rhtml=/<|&#?\w+;/;function buildFragment(elems,context,scripts,selection,ignored){var elem,tmp,tag,wrap,attached,j,fragment=context.createDocumentFragment(),nodes=[],i=0,l=elems.length;for(;i<l;i++){elem=elems[i];if(elem||elem===0){// Add nodes directly
1277if(toType(elem)==="object"){// Support: Android <=4.0 only, PhantomJS 1 only
1278// push.apply(_, arraylike) throws on ancient WebKit
1279jQuery.merge(nodes,elem.nodeType?[elem]:elem);// Convert non-html into a text node
1280}else if(!rhtml.test(elem)){nodes.push(context.createTextNode(elem));// Convert html into DOM nodes
1281}else{tmp=tmp||fragment.appendChild(context.createElement("div"));// Deserialize a standard representation
1282tag=(rtagName.exec(elem)||["",""])[1].toLowerCase();wrap=wrapMap[tag]||wrapMap._default;tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2];// Descend through wrappers to the right content
1283j=wrap[0];while(j--){tmp=tmp.lastChild;}// Support: Android <=4.0 only, PhantomJS 1 only
1284// push.apply(_, arraylike) throws on ancient WebKit
1285jQuery.merge(nodes,tmp.childNodes);// Remember the top-level container
1286tmp=fragment.firstChild;// Ensure the created nodes are orphaned (trac-12392)
1287tmp.textContent="";}}}// Remove wrapper from fragment
1288fragment.textContent="";i=0;while(elem=nodes[i++]){// Skip elements already in the context collection (trac-4087)
1289if(selection&&jQuery.inArray(elem,selection)>-1){if(ignored){ignored.push(elem);}continue;}attached=isAttached(elem);// Append to fragment
1290tmp=getAll(fragment.appendChild(elem),"script");// Preserve script evaluation history
1291if(attached){setGlobalEval(tmp);}// Capture executables
1292if(scripts){j=0;while(elem=tmp[j++]){if(rscriptType.test(elem.type||"")){scripts.push(elem);}}}}return fragment;}var rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return true;}function returnFalse(){return false;}function _on(elem,types,selector,data,fn,one){var origFn,type;// Types can be a map of types/handlers
1293if((typeof types==='undefined'?'undefined':_typeof(types))==="object"){// ( types-Object, selector, data )
1294if(typeof selector!=="string"){// ( types-Object, data )
1295data=data||selector;selector=undefined;}for(type in types){_on(elem,type,selector,data,types[type],one);}return elem;}if(data==null&&fn==null){// ( types, fn )
1296fn=selector;data=selector=undefined;}else if(fn==null){if(typeof selector==="string"){// ( types, selector, fn )
1297fn=data;data=undefined;}else{// ( types, data, fn )
1298fn=data;data=selector;selector=undefined;}}if(fn===false){fn=returnFalse;}else if(!fn){return elem;}if(one===1){origFn=fn;fn=function fn(event){// Can use an empty set, since event contains the info
1299jQuery().off(event);return origFn.apply(this,arguments);};// Use same guid so caller can remove using origFn
1300fn.guid=origFn.guid||(origFn.guid=jQuery.guid++);}return elem.each(function(){jQuery.event.add(this,types,fn,data,selector);});}/*
1301 * Helper functions for managing events -- not part of the public interface.
1302 * Props to Dean Edwards' addEvent library for many of the ideas.
1303 */jQuery.event={global:{},add:function add(elem,types,handler,data,selector){var handleObjIn,eventHandle,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.get(elem);// Only attach events to objects that accept data
1304if(!acceptData(elem)){return;}// Caller can pass in an object of custom data in lieu of the handler
1305if(handler.handler){handleObjIn=handler;handler=handleObjIn.handler;selector=handleObjIn.selector;}// Ensure that invalid selectors throw exceptions at attach time
1306// Evaluate against documentElement in case elem is a non-element node (e.g., document)
1307if(selector){jQuery.find.matchesSelector(documentElement,selector);}// Make sure that the handler has a unique ID, used to find/remove it later
1308if(!handler.guid){handler.guid=jQuery.guid++;}// Init the element's event structure and main handler, if this is the first
1309if(!(events=elemData.events)){events=elemData.events=Object.create(null);}if(!(eventHandle=elemData.handle)){eventHandle=elemData.handle=function(e){// Discard the second event of a jQuery.event.trigger() and
1310// when an event is called after a page has unloaded
1311return typeof jQuery!=="undefined"&&jQuery.event.triggered!==e.type?jQuery.event.dispatch.apply(elem,arguments):undefined;};}// Handle multiple events separated by a space
1312types=(types||"").match(rnothtmlwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();// There *must* be a type, no attaching namespace-only handlers
1313if(!type){continue;}// If event changes its type, use the special event handlers for the changed type
1314special=jQuery.event.special[type]||{};// If selector defined, determine special event api type, otherwise given type
1315type=(selector?special.delegateType:special.bindType)||type;// Update special based on newly reset type
1316special=jQuery.event.special[type]||{};// handleObj is passed to all event handlers
1317handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn);// Init the event handler queue if we're the first
1318if(!(handlers=events[type])){handlers=events[type]=[];handlers.delegateCount=0;// Only use addEventListener if the special events handler returns false
1319if(!special.setup||special.setup.call(elem,data,namespaces,eventHandle)===false){if(elem.addEventListener){elem.addEventListener(type,eventHandle);}}}if(special.add){special.add.call(elem,handleObj);if(!handleObj.handler.guid){handleObj.handler.guid=handler.guid;}}
vendor: 9,428 bytes, lines 1319-1383
1319// Add to the element's handler list, delegates in front
1320if(selector){handlers.splice(handlers.delegateCount++,0,handleObj);}else{handlers.push(handleObj);}// Keep track of which events have ever been used, for event optimization
1321jQuery.event.global[type]=true;}},// Detach an event or set of events from an element
1322remove:function remove(elem,types,handler,selector,mappedTypes){var j,origCount,tmp,events,t,handleObj,special,handlers,type,namespaces,origType,elemData=dataPriv.hasData(elem)&&dataPriv.get(elem);if(!elemData||!(events=elemData.events)){return;}// Once for each type.namespace in types; type may be omitted
1323types=(types||"").match(rnothtmlwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();// Unbind all events (on this namespace, if provided) for the element
1324if(!type){for(type in events){jQuery.event.remove(elem,type+types[t],handler,selector,true);}continue;}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;handlers=events[type]||[];tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)");// Remove matching events
1325origCount=j=handlers.length;while(j--){handleObj=handlers[j];if((mappedTypes||origType===handleObj.origType)&&(!handler||handler.guid===handleObj.guid)&&(!tmp||tmp.test(handleObj.namespace))&&(!selector||selector===handleObj.selector||selector==="**"&&handleObj.selector)){handlers.splice(j,1);if(handleObj.selector){handlers.delegateCount--;}if(special.remove){special.remove.call(elem,handleObj);}}}// Remove generic event handler if we removed something and no more handlers exist
1326// (avoids potential for endless recursion during removal of special event handlers)
1327if(origCount&&!handlers.length){if(!special.teardown||special.teardown.call(elem,namespaces,elemData.handle)===false){jQuery.removeEvent(elem,type,elemData.handle);}delete events[type];}}// Remove data and the expando if it's no longer used
1328if(jQuery.isEmptyObject(events)){dataPriv.remove(elem,"handle events");}},dispatch:function dispatch(nativeEvent){var i,j,ret,matched,handleObj,handlerQueue,args=new Array(arguments.length),// Make a writable jQuery.Event from the native event object
1329event=jQuery.event.fix(nativeEvent),handlers=(dataPriv.get(this,"events")||Object.create(null))[event.type]||[],special=jQuery.event.special[event.type]||{};// Use the fix-ed jQuery.Event rather than the (read-only) native event
1330args[0]=event;for(i=1;i<arguments.length;i++){args[i]=arguments[i];}event.delegateTarget=this;// Call the preDispatch hook for the mapped type, and let it bail if desired
1331if(special.preDispatch&&special.preDispatch.call(this,event)===false){return;}// Determine handlers
1332handlerQueue=jQuery.event.handlers.call(this,event,handlers);// Run delegates first; they may want to stop propagation beneath us
1333i=0;while((matched=handlerQueue[i++])&&!event.isPropagationStopped()){event.currentTarget=matched.elem;j=0;while((handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped()){// If the event is namespaced, then each handler is only invoked if it is
1334// specially universal or its namespaces are a superset of the event's.
1335if(!event.rnamespace||handleObj.namespace===false||event.rnamespace.test(handleObj.namespace)){event.handleObj=handleObj;event.data=handleObj.data;ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args);if(ret!==undefined){if((event.result=ret)===false){event.preventDefault();event.stopPropagation();}}}}}// Call the postDispatch hook for the mapped type
1336if(special.postDispatch){special.postDispatch.call(this,event);}return event.result;},handlers:function handlers(event,_handlers){var i,handleObj,sel,matchedHandlers,matchedSelectors,handlerQueue=[],delegateCount=_handlers.delegateCount,cur=event.target;// Find delegate handlers
1337if(delegateCount&&// Support: IE <=9
1338// Black-hole SVG <use> instance trees (trac-13180)
1339cur.nodeType&&// Support: Firefox <=42
1340// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
1341// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
1342// Support: IE 11 only
1343// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
1344!(event.type==="click"&&event.button>=1)){for(;cur!==this;cur=cur.parentNode||this){// Don't check non-elements (trac-13208)
1345// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
1346if(cur.nodeType===1&&!(event.type==="click"&&cur.disabled===true)){matchedHandlers=[];matchedSelectors={};for(i=0;i<delegateCount;i++){handleObj=_handlers[i];// Don't conflict with Object.prototype properties (trac-13203)
1347sel=handleObj.selector+" ";if(matchedSelectors[sel]===undefined){matchedSelectors[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length;}if(matchedSelectors[sel]){matchedHandlers.push(handleObj);}}if(matchedHandlers.length){handlerQueue.push({elem:cur,handlers:matchedHandlers});}}}}// Add the remaining (directly-bound) handlers
1348cur=this;if(delegateCount<_handlers.length){handlerQueue.push({elem:cur,handlers:_handlers.slice(delegateCount)});}return handlerQueue;},addProp:function addProp(name,hook){Object.defineProperty(jQuery.Event.prototype,name,{enumerable:true,configurable:true,get:isFunction(hook)?function(){if(this.originalEvent){return hook(this.originalEvent);}}:function(){if(this.originalEvent){return this.originalEvent[name];}},set:function set(value){Object.defineProperty(this,name,{enumerable:true,configurable:true,writable:true,value:value});}});},fix:function fix(originalEvent){return originalEvent[jQuery.expando]?originalEvent:new jQuery.Event(originalEvent);},special:{load:{// Prevent triggered image.load events from bubbling to window.load
1349noBubble:true},click:{// Utilize native event to ensure correct state for checkable inputs
1350setup:function setup(data){// For mutual compressibility with _default, replace `this` access with a local var.
1351// `|| data` is dead code meant only to preserve the variable through minification.
1352var el=this||data;// Claim the first handler
1353if(rcheckableType.test(el.type)&&el.click&&nodeName(el,"input")){// dataPriv.set( el, "click", ... )
1354leverageNative(el,"click",true);}// Return false to allow normal processing in the caller
1355return false;},trigger:function trigger(data){// For mutual compressibility with _default, replace `this` access with a local var.
1356// `|| data` is dead code meant only to preserve the variable through minification.
1357var el=this||data;// Force setup before triggering a click
1358if(rcheckableType.test(el.type)&&el.click&&nodeName(el,"input")){leverageNative(el,"click");}// Return non-false to allow normal event-path propagation
1359return true;},// For cross-browser consistency, suppress native .click() on links
1360// Also prevent it if we're currently inside a leveraged native-event stack
1361_default:function _default(event){var target=event.target;return rcheckableType.test(target.type)&&target.click&&nodeName(target,"input")&&dataPriv.get(target,"click")||nodeName(target,"a");}},beforeunload:{postDispatch:function postDispatch(event){// Support: Firefox 20+
1362// Firefox doesn't alert if the returnValue field is not set.
1363if(event.result!==undefined&&event.originalEvent){event.originalEvent.returnValue=event.result;}}}}};// Ensure the presence of an event listener that handles manually-triggered
1364// synthetic events by interrupting progress until reinvoked in response to
1365// *native* events that it fires directly, ensuring that state changes have
1366// already occurred before other listeners are invoked.
1367function leverageNative(el,type,isSetup){// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add
1368if(!isSetup){if(dataPriv.get(el,type)===undefined){jQuery.event.add(el,type,returnTrue);}return;}// Register the controller as a special universal handler for all event namespaces
1369dataPriv.set(el,type,false);jQuery.event.add(el,type,{namespace:false,handler:function handler(event){var result,saved=dataPriv.get(this,type);if(event.isTrigger&1&&this[type]){// Interrupt processing of the outer synthetic .trigger()ed event
1370if(!saved){// Store arguments for use when handling the inner native event
1371// There will always be at least one argument (an event object), so this array
1372// will not be confused with a leftover capture object.
1373saved=_slice.call(arguments);dataPriv.set(this,type,saved);// Trigger the native event and capture its result
1374this[type]();result=dataPriv.get(this,type);dataPriv.set(this,type,false);if(saved!==result){// Cancel the outer synthetic event
1375event.stopImmediatePropagation();event.preventDefault();return result;}// If this is an inner synthetic event for an event with a bubbling surrogate
1376// (focus or blur), assume that the surrogate already propagated from triggering
1377// the native event and prevent that from happening again here.
1378// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
1379// bubbling surrogate propagates *after* the non-bubbling base), but that seems
1380// less bad than duplication.
1381}else if((jQuery.event.special[type]||{}).delegateType){event.stopPropagation();}// If this is a native event triggered above, everything is now in order
1382// Fire an inner synthetic event with the original arguments
1383}else if(saved){// ...and capture the result
1384dataPriv.set(this,type,jQuery.event.trigger(saved[0],saved.slice(1),this));// Abort handling of the native event by all jQuery handlers while allowing
1385// native handlers on the same element to run. On target, this is achieved
1386// by stopping immediate propagation just on the jQuery event. However,
1387// the native event is re-wrapped by a jQuery one on each level of the
1388// propagation so the only way to stop it for jQuery is to stop it for
1389// everyone via native `stopPropagation()`. This is not a problem for
1390// focus/blur which don't bubble, but it does also stop click on checkboxes
1391// and radios. We accept this limitation.
1392event.stopPropagation();event.isImmediatePropagationStopped=returnTrue;}}});}jQuery.removeEvent=function(elem,type,handle){// This "if" is needed for plain objects
1393if(elem.removeEventListener){elem.removeEventListener(type,handle);}};jQuery.Event=function(src,props){// Allow instantiation without the 'new' keyword
1394if(!(this instanceof jQuery.Event)){return new jQuery.Event(src,props);}// Event object
1395if(src&&src.type){this.originalEvent=src;this.type=src.type;// Events bubbling up the document may have been marked as prevented
1396// by a handler lower down the tree; reflect the correct value.
1397this.isDefaultPrevented=src.defaultPrevented||src.defaultPrevented===undefined&&// Supp
vendor: 6,998 bytes, lines 1397-1463
1397ort: Android <=2.3 only
1398src.returnValue===false?returnTrue:returnFalse;// Create target properties
1399// Support: Safari <=6 - 7 only
1400// Target should not be a text node (trac-504, trac-13143)
1401this.target=src.target&&src.target.nodeType===3?src.target.parentNode:src.target;this.currentTarget=src.currentTarget;this.relatedTarget=src.relatedTarget;// Event type
1402}else{this.type=src;}// Put explicitly provided properties onto the event object
1403if(props){jQuery.extend(this,props);}// Create a timestamp if incoming event doesn't have one
1404this.timeStamp=src&&src.timeStamp||Date.now();// Mark it as fixed
1405this[jQuery.expando]=true;};// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
1406// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
1407jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,isSimulated:false,preventDefault:function preventDefault(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue;if(e&&!this.isSimulated){e.preventDefault();}},stopPropagation:function stopPropagation(){var e=this.originalEvent;this.isPropagationStopped=returnTrue;if(e&&!this.isSimulated){e.stopPropagation();}},stopImmediatePropagation:function stopImmediatePropagation(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue;if(e&&!this.isSimulated){e.stopImmediatePropagation();}this.stopPropagation();}};// Includes all common event props including KeyEvent and MouseEvent specific props
1408jQuery.each({altKey:true,bubbles:true,cancelable:true,changedTouches:true,ctrlKey:true,detail:true,eventPhase:true,metaKey:true,pageX:true,pageY:true,shiftKey:true,view:true,"char":true,code:true,charCode:true,key:true,keyCode:true,button:true,buttons:true,clientX:true,clientY:true,offsetX:true,offsetY:true,pointerId:true,pointerType:true,screenX:true,screenY:true,targetTouches:true,toElement:true,touches:true,which:true},jQuery.event.addProp);jQuery.each({focus:"focusin",blur:"focusout"},function(type,delegateType){function focusMappedHandler(nativeEvent){if(document.documentMode){// Support: IE 11+
1409// Attach a single focusin/focusout handler on the document while someone wants
1410// focus/blur. This is because the former are synchronous in IE while the latter
1411// are async. In other browsers, all those handlers are invoked synchronously.
1412// `handle` from private data would already wrap the event, but we need
1413// to change the `type` here.
1414var handle=dataPriv.get(this,"handle"),event=jQuery.event.fix(nativeEvent);event.type=nativeEvent.type==="focusin"?"focus":"blur";event.isSimulated=true;// First, handle focusin/focusout
1415handle(nativeEvent);// ...then, handle focus/blur
1416//
1417// focus/blur don't bubble while focusin/focusout do; simulate the former by only
1418// invoking the handler at the lower level.
1419if(event.target===event.currentTarget){// The setup part calls `leverageNative`, which, in turn, calls
1420// `jQuery.event.add`, so event handle will already have been set
1421// by this point.
1422handle(event);}}else{// For non-IE browsers, attach a single capturing handler on the document
1423// while someone wants focusin/focusout.
1424jQuery.event.simulate(delegateType,nativeEvent.target,jQuery.event.fix(nativeEvent));}}jQuery.event.special[type]={// Utilize native event if possible so blur/focus sequence is correct
1425setup:function setup(){var attaches;// Claim the first handler
1426// dataPriv.set( this, "focus", ... )
1427// dataPriv.set( this, "blur", ... )
1428leverageNative(this,type,true);if(document.documentMode){// Support: IE 9 - 11+
1429// We use the same native handler for focusin & focus (and focusout & blur)
1430// so we need to coordinate setup & teardown parts between those events.
1431// Use `delegateType` as the key as `type` is already used by `leverageNative`.
1432attaches=dataPriv.get(this,delegateType);if(!attaches){this.addEventListener(delegateType,focusMappedHandler);}dataPriv.set(this,delegateType,(attaches||0)+1);}else{// Return false to allow normal processing in the caller
1433return false;}},trigger:function trigger(){// Force setup before trigger
1434leverageNative(this,type);// Return non-false to allow normal event-path propagation
1435return true;},teardown:function teardown(){var attaches;if(document.documentMode){attaches=dataPriv.get(this,delegateType)-1;if(!attaches){this.removeEventListener(delegateType,focusMappedHandler);dataPriv.remove(this,delegateType);}else{dataPriv.set(this,delegateType,attaches);}}else{// Return false to indicate standard teardown should be applied
1436return false;}},// Suppress native focus or blur if we're currently inside
1437// a leveraged native-event stack
1438_default:function _default(event){return dataPriv.get(event.target,type);},delegateType:delegateType};// Support: Firefox <=44
1439// Firefox doesn't have focus(in | out) events
1440// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
1441//
1442// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
1443// focus(in | out) events fire after focus & blur events,
1444// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
1445// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
1446//
1447// Support: IE 9 - 11+
1448// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
1449// attach a single handler for both events in IE.
1450jQuery.event.special[delegateType]={setup:function setup(){// Handle: regular nodes (via `this.ownerDocument`), window
1451// (via `this.document`) & document (via `this`).
1452var doc=this.ownerDocument||this.document||this,dataHolder=document.documentMode?this:doc,attaches=dataPriv.get(dataHolder,delegateType);// Support: IE 9 - 11+
1453// We use the same native handler for focusin & focus (and focusout & blur)
1454// so we need to coordinate setup & teardown parts between those events.
1455// Use `delegateType` as the key as `type` is already used by `leverageNative`.
1456if(!attaches){if(document.documentMode){this.addEventListener(delegateType,focusMappedHandler);}else{doc.addEventListener(type,focusMappedHandler,true);}}dataPriv.set(dataHolder,delegateType,(attaches||0)+1);},teardown:function teardown(){var doc=this.ownerDocument||this.document||this,dataHolder=document.documentMode?this:doc,attaches=dataPriv.get(dataHolder,delegateType)-1;if(!attaches){if(document.documentMode){this.removeEventListener(delegateType,focusMappedHandler);}else{doc.removeEventListener(type,focusMappedHandler,true);}dataPriv.remove(dataHolder,delegateType);}else{dataPriv.set(dataHolder,delegateType,attaches);}}};});// Create mouseenter/leave events using mouseover/out and event-time checks
1457// so that event delegation works in jQuery.
1458// Do the same for pointerenter/pointerleave and pointerover/pointerout
1459//
1460// Support: Safari 7 only
1461// Safari sends mouseenter too often; see:
1462// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
1463// for the description of the bug (it existed in older Chrome versions as well).
1464jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function handle(event){var ret,target=this,related=event.relatedTarget,handleObj=event.handleObj;// For mouseenter/leave call the handler if related is outside the target.
1465// NB: No relatedTarget if the mouse left/entered the browser window
1466if(!related||related!==target&&!jQuery.contains(target,related)){event.type=handleObj.origType;ret=handleObj.handler.apply(this,arguments);event.type=fix;}return ret;}};});jQuery.fn.extend({on:function on(types,selector,data,fn){return _on(this,types,selector,data,fn);},one:function one(types,selector,data,fn){return _on(this,types,selector,data,fn,1);},off:function off(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj){// ( event )  dispatched jQuery.Event
1467handleObj=types.handleObj;jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler);return this;}if((typeof types==='undefined'?'undefined':_typeof(types))==="object"){// ( types-object [, selector] )
1468for(type in types){this.off(type,selector,types[type]);}return this;}if(selector===false||typeof selector==="function"){// ( types [, fn] )
1469fn=selector;selector=undefined;}if(fn===false){fn=returnFalse;}return this.each(function(){jQuery.event.remove(this,types,fn,selector);});}});
vendor: 4,136 bytes, lines 1469-1495
1469var// Support: IE <=10 - 11, Edge 12 - 13 only
1470// In IE/Edge using regex groups here causes severe slowdowns.
1471// See https://connect.microsoft.com/IE/feedback/details/1736512/
1472rnoInnerhtml=/<script|<style|<link/i,// checked="checked" or checked
1473rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rcleanScript=/^\s*<!\[CDATA\[|\]\]>\s*$/g;// Prefer a tbody over its parent table for containing new rows
1474function manipulationTarget(elem,content){if(nodeName(elem,"table")&&nodeName(content.nodeType!==11?content:content.firstChild,"tr")){return jQuery(elem).children("tbody")[0]||elem;}return elem;}// Replace/restore the type attribute of script elements for safe DOM manipulation
1475function disableScript(elem){elem.type=(elem.getAttribute("type")!==null)+"/"+elem.type;return elem;}function restoreScript(elem){if((elem.type||"").slice(0,5)==="true/"){elem.type=elem.type.slice(5);}else{elem.removeAttribute("type");}return elem;}function cloneCopyEvent(src,dest){var i,l,type,pdataOld,udataOld,udataCur,events;if(dest.nodeType!==1){return;}// 1. Copy private data: events, handlers, etc.
1476if(dataPriv.hasData(src)){pdataOld=dataPriv.get(src);events=pdataOld.events;if(events){dataPriv.remove(dest,"handle events");for(type in events){for(i=0,l=events[type].length;i<l;i++){jQuery.event.add(dest,type,events[type][i]);}}}}// 2. Copy user data
1477if(dataUser.hasData(src)){udataOld=dataUser.access(src);udataCur=jQuery.extend({},udataOld);dataUser.set(dest,udataCur);}}// Fix IE bugs, see support tests
1478function fixInput(src,dest){var nodeName=dest.nodeName.toLowerCase();// Fails to persist the checked state of a cloned checkbox or radio button.
1479if(nodeName==="input"&&rcheckableType.test(src.type)){dest.checked=src.checked;// Fails to return the selected option to the default selected state when cloning options
1480}else if(nodeName==="input"||nodeName==="textarea"){dest.defaultValue=src.defaultValue;}}function domManip(collection,args,callback,ignored){// Flatten any nested arrays
1481args=flat(args);var fragment,first,scripts,hasScripts,node,doc,i=0,l=collection.length,iNoClone=l-1,value=args[0],valueIsFunction=isFunction(value);// We can't cloneNode fragments that contain checked, in WebKit
1482if(valueIsFunction||l>1&&typeof value==="string"&&!support.checkClone&&rchecked.test(value)){return collection.each(function(index){var self=collection.eq(index);if(valueIsFunction){args[0]=value.call(this,index,self.html());}domManip(self,args,callback,ignored);});}if(l){fragment=buildFragment(args,collection[0].ownerDocument,false,collection,ignored);first=fragment.firstChild;if(fragment.childNodes.length===1){fragment=first;}// Require either new content or an interest in ignored elements to invoke the callback
1483if(first||ignored){scripts=jQuery.map(getAll(fragment,"script"),disableScript);hasScripts=scripts.length;// Use the original fragment for the last item
1484// instead of the first because it can end up
1485// being emptied incorrectly in certain situations (trac-8070).
1486for(;i<l;i++){node=fragment;if(i!==iNoClone){node=jQuery.clone(node,true,true);// Keep references to cloned scripts for later restoration
1487if(hasScripts){// Support: Android <=4.0 only, PhantomJS 1 only
1488// push.apply(_, arraylike) throws on ancient WebKit
1489jQuery.merge(scripts,getAll(node,"script"));}}callback.call(collection[i],node,i);}if(hasScripts){doc=scripts[scripts.length-1].ownerDocument;// Re-enable scripts
1490jQuery.map(scripts,restoreScript);// Evaluate executable scripts on first document insertion
1491for(i=0;i<hasScripts;i++){node=scripts[i];if(rscriptType.test(node.type||"")&&!dataPriv.access(node,"globalEval")&&jQuery.contains(doc,node)){if(node.src&&(node.type||"").toLowerCase()!=="module"){// Optional AJAX dependency, but won't run scripts if not present
1492if(jQuery._evalUrl&&!node.noModule){jQuery._evalUrl(node.src,{nonce:node.nonce||node.getAttribute("nonce")},doc);}}else{// Unwrap a CDATA section containing script contents. This shouldn't be
1493// needed as in XML documents they're already not visible when
1494// inspecting element contents and in HTML documents they have no
1495// meaning but we're preserving that logic for backwards compatibility.
vendor: 9,486 bytes, lines 1496-1548
1496// This will be removed completely in 4.0. See gh-4904.
1497DOMEval(node.textContent.replace(rcleanScript,""),node,doc);}}}}}}return collection;}function _remove(elem,selector,keepData){var node,nodes=selector?jQuery.filter(selector,elem):elem,i=0;for(;(node=nodes[i])!=null;i++){if(!keepData&&node.nodeType===1){jQuery.cleanData(getAll(node));}if(node.parentNode){if(keepData&&isAttached(node)){setGlobalEval(getAll(node,"script"));}node.parentNode.removeChild(node);}}return elem;}jQuery.extend({htmlPrefilter:function htmlPrefilter(html){return html;},clone:function clone(elem,dataAndEvents,deepDataAndEvents){var i,l,srcElements,destElements,clone=elem.cloneNode(true),inPage=isAttached(elem);// Fix IE cloning issues
1498if(!support.noCloneChecked&&(elem.nodeType===1||elem.nodeType===11)&&!jQuery.isXMLDoc(elem)){// We eschew jQuery#find here for performance reasons:
1499// https://jsperf.com/getall-vs-sizzle/2
1500destElements=getAll(clone);srcElements=getAll(elem);for(i=0,l=srcElements.length;i<l;i++){fixInput(srcElements[i],destElements[i]);}}// Copy the events from the original to the clone
1501if(dataAndEvents){if(deepDataAndEvents){srcElements=srcElements||getAll(elem);destElements=destElements||getAll(clone);for(i=0,l=srcElements.length;i<l;i++){cloneCopyEvent(srcElements[i],destElements[i]);}}else{cloneCopyEvent(elem,clone);}}// Preserve script evaluation history
1502destElements=getAll(clone,"script");if(destElements.length>0){setGlobalEval(destElements,!inPage&&getAll(elem,"script"));}// Return the cloned set
1503return clone;},cleanData:function cleanData(elems){var data,elem,type,special=jQuery.event.special,i=0;for(;(elem=elems[i])!==undefined;i++){if(acceptData(elem)){if(data=elem[dataPriv.expando]){if(data.events){for(type in data.events){if(special[type]){jQuery.event.remove(elem,type);// This is a shortcut to avoid jQuery.event.remove's overhead
1504}else{jQuery.removeEvent(elem,type,data.handle);}}}// Support: Chrome <=35 - 45+
1505// Assign undefined instead of using delete, see Data#remove
1506elem[dataPriv.expando]=undefined;}if(elem[dataUser.expando]){// Support: Chrome <=35 - 45+
1507// Assign undefined instead of using delete, see Data#remove
1508elem[dataUser.expando]=undefined;}}}}});jQuery.fn.extend({detach:function detach(selector){return _remove(this,selector,true);},remove:function remove(selector){return _remove(this,selector);},text:function text(value){return access(this,function(value){return value===undefined?jQuery.text(this):this.empty().each(function(){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){this.textContent=value;}});},null,value,arguments.length);},append:function append(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.appendChild(elem);}});},prepend:function prepend(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild);}});},before:function before(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this);}});},after:function after(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this.nextSibling);}});},empty:function empty(){var elem,i=0;for(;(elem=this[i])!=null;i++){if(elem.nodeType===1){// Prevent memory leaks
1509jQuery.cleanData(getAll(elem,false));// Remove any remaining nodes
1510elem.textContent="";}}return this;},clone:function clone(dataAndEvents,deepDataAndEvents){dataAndEvents=dataAndEvents==null?false:dataAndEvents;deepDataAndEvents=deepDataAndEvents==null?dataAndEvents:deepDataAndEvents;return this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents);});},html:function html(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(value===undefined&&elem.nodeType===1){return elem.innerHTML;}// See if we can take a shortcut and just use innerHTML
1511if(typeof value==="string"&&!rnoInnerhtml.test(value)&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++){elem=this[i]||{};// Remove element nodes and prevent memory leaks
1512if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.innerHTML=value;}}elem=0;// If using innerHTML throws an exception, use the fallback method
1513}catch(e){}}if(elem){this.empty().append(value);}},null,value,arguments.length);},replaceWith:function replaceWith(){var ignored=[];// Make the changes, replacing each non-ignored context element with the new content
1514return domManip(this,arguments,function(elem){var parent=this.parentNode;if(jQuery.inArray(this,ignored)<0){jQuery.cleanData(getAll(this));if(parent){parent.replaceChild(elem,this);}}// Force callback invocation
1515},ignored);}});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var elems,ret=[],insert=jQuery(selector),last=insert.length-1,i=0;for(;i<=last;i++){elems=i===last?this:this.clone(true);jQuery(insert[i])[original](elems);// Support: Android <=4.0 only, PhantomJS 1 only
1516// .get() because push.apply(_, arraylike) throws on ancient WebKit
1517push.apply(ret,elems.get());}return this.pushStack(ret);};});var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i");var rcustomProp=/^--/;var getStyles=function getStyles(elem){// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
1518// IE throws on elements created in popups
1519// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
1520var view=elem.ownerDocument.defaultView;if(!view||!view.opener){view=window;}return view.getComputedStyle(elem);};var swap=function swap(elem,options,callback){var ret,name,old={};// Remember the old values, and insert the new ones
1521for(name in options){old[name]=elem.style[name];elem.style[name]=options[name];}ret=callback.call(elem);// Revert the old values
1522for(name in options){elem.style[name]=old[name];}return ret;};var rboxStyle=new RegExp(cssExpand.join("|"),"i");(function(){// Executing both pixelPosition & boxSizingReliable tests require only one layout
1523// so they're executed at the same time to save the second computation.
1524function computeStyleTests(){// This is a singleton, we need to execute it only once
1525if(!div){return;}container.style.cssText="position:absolute;left:-11111px;width:60px;"+"margin-top:1px;padding:0;border:0";div.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;"+"margin:auto;border:1px;padding:1px;"+"width:60%;top:1%";documentElement.appendChild(container).appendChild(div);var divStyle=window.getComputedStyle(div);pixelPositionVal=divStyle.top!=="1%";// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
1526reliableMarginLeftVal=roundPixelMeasures(divStyle.marginLeft)===12;// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
1527// Some styles come back with percentage values, even though they shouldn't
1528div.style.right="60%";pixelBoxStylesVal=roundPixelMeasures(divStyle.right)===36;// Support: IE 9 - 11 only
1529// Detect misreporting of content dimensions for box-sizing:border-box elements
1530boxSizingReliableVal=roundPixelMeasures(divStyle.width)===36;// Support: IE 9 only
1531// Detect overflow:scroll screwiness (gh-3699)
1532// Support: Chrome <=64
1533// Don't get tricked when zoom affects offsetWidth (gh-4029)
1534div.style.position="absolute";scrollboxSizeVal=roundPixelMeasures(div.offsetWidth/3)===12;documentElement.removeChild(container);// Nullify the div so it wouldn't be stored in the memory and
1535// it will also be a sign that checks already performed
1536div=null;}function roundPixelMeasures(measure){return Math.round(parseFloat(measure));}var pixelPositionVal,boxSizingReliableVal,scrollboxSizeVal,pixelBoxStylesVal,reliableTrDimensionsVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");// Finish early in limited (non-browser) environments
1537if(!div.style){return;}// Support: IE <=9 - 11 only
1538// Style of cloned element affects source element cloned (trac-8908)
1539div.style.backgroundClip="content-box";div.cloneNode(true).style.backgroundClip="";support.clearCloneStyle=div.style.backgroundClip==="content-box";jQuery.extend(support,{boxSizingReliable:function boxSizingReliable(){computeStyleTests();return boxSizingReliableVal;},pixelBoxStyles:function pixelBoxStyles(){computeStyleTests();return pixelBoxStylesVal;},pixelPosition:function pixelPosition(){computeStyleTests();return pixelPositionVal;},reliableMarginLeft:function reliableMarginLeft(){computeStyleTests();return reliableMarginLeftVal;},scrollboxSize:function scrollboxSize(){computeStyleTests();return scrollboxSizeVal;},// Support: IE 9 - 11+, Edge 15 - 18+
1540// IE/Edge misreport `getComputedStyle` of table rows with width/height
1541// set in CSS while `offset*` properties report correct values.
1542// Behavior in IE 9 is more subtle than in newer versions & it passes
1543// some versions of this test; make sure not to make it pass there!
1544//
1545// Support: Firefox 70+
1546// Only Firefox includes border widths
1547// in computed dimensions. (gh-4529)
1548reliableTrDimensions:function reliableTrDimensions(){var table,tr,trChild,trStyle;if(reliableTrDimensionsVal==null){table=document.createElement("table");tr=document.createElement("tr");trChild=document.createElement("div");table.style.cssText="position:absolute;
vendor: 5,780 bytes, lines 1548-1616
1548left:-11111px;border-collapse:separate";tr.style.cssText="box-sizing:content-box;border:1px solid";// Support: Chrome 86+
1549// Height set through cssText does not get applied.
1550// Computed height then comes back as 0.
1551tr.style.height="1px";trChild.style.height="9px";// Support: Android 8 Chrome 86+
1552// In our bodyBackground.html iframe,
1553// display for all div elements is set to "inline",
1554// which causes a problem only in Android 8 Chrome 86.
1555// Ensuring the div is `display: block`
1556// gets around this issue.
1557trChild.style.display="block";documentElement.appendChild(table).appendChild(tr).appendChild(trChild);trStyle=window.getComputedStyle(tr);reliableTrDimensionsVal=parseInt(trStyle.height,10)+parseInt(trStyle.borderTopWidth,10)+parseInt(trStyle.borderBottomWidth,10)===tr.offsetHeight;documentElement.removeChild(table);}return reliableTrDimensionsVal;}});})();function curCSS(elem,name,computed){var width,minWidth,maxWidth,ret,isCustomProp=rcustomProp.test(name),// Support: Firefox 51+
1558// Retrieving style before computed somehow
1559// fixes an issue with getting wrong values
1560// on detached elements
1561style=elem.style;computed=computed||getStyles(elem);// getPropertyValue is needed for:
1562//   .css('filter') (IE 9 only, trac-12537)
1563//   .css('--customProperty) (gh-3144)
1564if(computed){// Support: IE <=9 - 11+
1565// IE only supports `"float"` in `getPropertyValue`; in computed styles
1566// it's only available as `"cssFloat"`. We no longer modify properties
1567// sent to `.css()` apart from camelCasing, so we need to check both.
1568// Normally, this would create difference in behavior: if
1569// `getPropertyValue` returns an empty string, the value returned
1570// by `.css()` would be `undefined`. This is usually the case for
1571// disconnected elements. However, in IE even disconnected elements
1572// with no styles return `"none"` for `getPropertyValue( "float" )`
1573ret=computed.getPropertyValue(name)||computed[name];if(isCustomProp&&ret){// Support: Firefox 105+, Chrome <=105+
1574// Spec requires trimming whitespace for custom properties (gh-4926).
1575// Firefox only trims leading whitespace. Chrome just collapses
1576// both leading & trailing whitespace to a single space.
1577//
1578// Fall back to `undefined` if empty string returned.
1579// This collapses a missing definition with property defined
1580// and set to an empty string but there's no standard API
1581// allowing us to differentiate them without a performance penalty
1582// and returning `undefined` aligns with older jQuery.
1583//
1584// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
1585// as whitespace while CSS does not, but this is not a problem
1586// because CSS preprocessing replaces them with U+000A LINE FEED
1587// (which *is* CSS whitespace)
1588// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
1589ret=ret.replace(rtrimCSS,"$1")||undefined;}if(ret===""&&!isAttached(elem)){ret=jQuery.style(elem,name);}// A tribute to the "awesome hack by Dean Edwards"
1590// Android Browser returns percentage for some values,
1591// but width seems to be reliably pixels.
1592// This is against the CSSOM draft spec:
1593// https://drafts.csswg.org/cssom/#resolved-values
1594if(!support.pixelBoxStyles()&&rnumnonpx.test(ret)&&rboxStyle.test(name)){// Remember the original values
1595width=style.width;minWidth=style.minWidth;maxWidth=style.maxWidth;// Put in the new values to get a computed value out
1596style.minWidth=style.maxWidth=style.width=ret;ret=computed.width;// Revert the changed values
1597style.width=width;style.minWidth=minWidth;style.maxWidth=maxWidth;}}return ret!==undefined?// Support: IE <=9 - 11 only
1598// IE returns zIndex value as an integer.
1599ret+"":ret;}function addGetHookIf(conditionFn,hookFn){// Define the hook, we'll check on the first run if it's really needed.
1600return{get:function get(){if(conditionFn()){// Hook not needed (or it's not possible to use it due
1601// to missing dependency), remove it.
1602delete this.get;return;}// Hook needed; redefine it so that the support test is not executed again.
1603return(this.get=hookFn).apply(this,arguments);}};}var cssPrefixes=["Webkit","Moz","ms"],emptyStyle=document.createElement("div").style,vendorProps={};// Return a vendor-prefixed property or undefined
1604function vendorPropName(name){// Check for vendor prefixed names
1605var capName=name[0].toUpperCase()+name.slice(1),i=cssPrefixes.length;while(i--){name=cssPrefixes[i]+capName;if(name in emptyStyle){return name;}}}// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
1606function finalPropName(name){var final=jQuery.cssProps[name]||vendorProps[name];if(final){return final;}if(name in emptyStyle){return name;}return vendorProps[name]=vendorPropName(name)||name;}var// Swappable if display is none or starts with table
1607// except "table", "table-cell", or "table-caption"
1608// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
1609rdisplayswap=/^(none|table(?!-c[ea]).+)/,cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"};function setPositiveNumber(_elem,value,subtract){// Any relative (+/-) values have already been
1610// normalized at this point
1611var matches=rcssNum.exec(value);return matches?// Guard against undefined "subtract", e.g., when used as in cssHooks
1612Math.max(0,matches[2]-(subtract||0))+(matches[3]||"px"):value;}function boxModelAdjustment(elem,dimension,box,isBorderBox,styles,computedVal){var i=dimension==="width"?1:0,extra=0,delta=0,marginDelta=0;// Adjustment may not be necessary
1613if(box===(isBorderBox?"border":"content")){return 0;}for(;i<4;i+=2){// Both box models exclude margin
1614// Count margin delta separately to only add it after scroll gutter adjustment.
1615// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
1616if(box==="margin"){marginDelta+=jQuery.css(elem,box+cssExpand[i],true,
vendor: 16,476 bytes, lines 1616-1733
1616styles);}// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
1617if(!isBorderBox){// Add padding
1618delta+=jQuery.css(elem,"padding"+cssExpand[i],true,styles);// For "border" or "margin", add border
1619if(box!=="padding"){delta+=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles);// But still keep track of it otherwise
1620}else{extra+=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles);}// If we get here with a border-box (content + padding + border), we're seeking "content" or
1621// "padding" or "margin"
1622}else{// For "content", subtract padding
1623if(box==="content"){delta-=jQuery.css(elem,"padding"+cssExpand[i],true,styles);}// For "content" or "padding", subtract border
1624if(box!=="margin"){delta-=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles);}}}// Account for positive content-box scroll gutter when requested by providing computedVal
1625if(!isBorderBox&&computedVal>=0){// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
1626// Assuming integer scroll gutter, subtract the rest and round down
1627delta+=Math.max(0,Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-computedVal-delta-extra-0.5// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
1628// Use an explicit zero to avoid NaN (gh-3964)
1629))||0;}return delta+marginDelta;}function getWidthOrHeight(elem,dimension,extra){// Start with computed style
1630var styles=getStyles(elem),// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
1631// Fake content-box until we know it's needed to know the true value.
1632boxSizingNeeded=!support.boxSizingReliable()||extra,isBorderBox=boxSizingNeeded&&jQuery.css(elem,"boxSizing",false,styles)==="border-box",valueIsBorderBox=isBorderBox,val=curCSS(elem,dimension,styles),offsetProp="offset"+dimension[0].toUpperCase()+dimension.slice(1);// Support: Firefox <=54
1633// Return a confounding non-pixel value or feign ignorance, as appropriate.
1634if(rnumnonpx.test(val)){if(!extra){return val;}val="auto";}// Support: IE 9 - 11 only
1635// Use offsetWidth/offsetHeight for when box sizing is unreliable.
1636// In those cases, the computed value can be trusted to be border-box.
1637if((!support.boxSizingReliable()&&isBorderBox||// Support: IE 10 - 11+, Edge 15 - 18+
1638// IE/Edge misreport `getComputedStyle` of table rows with width/height
1639// set in CSS while `offset*` properties report correct values.
1640// Interestingly, in some cases IE 9 doesn't suffer from this issue.
1641!support.reliableTrDimensions()&&nodeName(elem,"tr")||// Fall back to offsetWidth/offsetHeight when value is "auto"
1642// This happens for inline elements with no explicit setting (gh-3571)
1643val==="auto"||// Support: Android <=4.1 - 4.3 only
1644// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
1645!parseFloat(val)&&jQuery.css(elem,"display",false,styles)==="inline")&&// Make sure the element is visible & connected
1646elem.getClientRects().length){isBorderBox=jQuery.css(elem,"boxSizing",false,styles)==="border-box";// Where available, offsetWidth/offsetHeight approximate border box dimensions.
1647// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
1648// retrieved value as a content box dimension.
1649valueIsBorderBox=offsetProp in elem;if(valueIsBorderBox){val=elem[offsetProp];}}// Normalize "" and auto
1650val=parseFloat(val)||0;// Adjust for the element's box model
1651return val+boxModelAdjustment(elem,dimension,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles,// Provide the current computed size to request scroll gutter calculation (gh-3589)
1652val)+"px";}jQuery.extend({// Add in style property hooks for overriding the default
1653// behavior of getting and setting a style property
1654cssHooks:{opacity:{get:function get(elem,computed){if(computed){// We should always get a number back from opacity
1655var ret=curCSS(elem,"opacity");return ret===""?"1":ret;}}}},// Don't automatically add "px" to these possibly-unitless properties
1656cssNumber:{animationIterationCount:true,aspectRatio:true,borderImageSlice:true,columnCount:true,flexGrow:true,flexShrink:true,fontWeight:true,gridArea:true,gridColumn:true,gridColumnEnd:true,gridColumnStart:true,gridRow:true,gridRowEnd:true,gridRowStart:true,lineHeight:true,opacity:true,order:true,orphans:true,scale:true,widows:true,zIndex:true,zoom:true,// SVG-related
1657fillOpacity:true,floodOpacity:true,stopOpacity:true,strokeMiterlimit:true,strokeOpacity:true},// Add in properties whose names you wish to fix before
1658// setting or getting the value
1659cssProps:{},// Get and set the style property on a DOM Node
1660style:function style(elem,name,value,extra){// Don't set styles on text and comment nodes
1661if(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){return;}// Make sure that we're working with the right name
1662var ret,type,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name),style=elem.style;// Make sure that we're working with the right name. We don't
1663// want to query the value if it is a CSS custom property
1664// since they are user-defined.
1665if(!isCustomProp){name=finalPropName(origName);}// Gets hook for the prefixed version, then unprefixed version
1666hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];// Check if we're setting a value
1667if(value!==undefined){type=typeof value==='undefined'?'undefined':_typeof(value);// Convert "+=" or "-=" to relative numbers (trac-7345)
1668if(type==="string"&&(ret=rcssNum.exec(value))&&ret[1]){value=adjustCSS(elem,name,ret);// Fixes bug trac-9237
1669type="number";}// Make sure that null and NaN values aren't set (trac-7116)
1670if(value==null||value!==value){return;}// If a number was passed in, add the unit (except for certain CSS properties)
1671// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
1672// "px" to a few hardcoded values.
1673if(type==="number"&&!isCustomProp){value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px");}// background-* props affect original clone's values
1674if(!support.clearCloneStyle&&value===""&&name.indexOf("background")===0){style[name]="inherit";}// If a hook was provided, use that value, otherwise just set the specified value
1675if(!hooks||!("set"in hooks)||(value=hooks.set(elem,value,extra))!==undefined){if(isCustomProp){style.setProperty(name,value);}else{style[name]=value;}}}else{// If a hook was provided get the non-computed value from there
1676if(hooks&&"get"in hooks&&(ret=hooks.get(elem,false,extra))!==undefined){return ret;}// Otherwise just get the value from the style object
1677return style[name];}},css:function css(elem,name,extra,styles){var val,num,hooks,origName=camelCase(name),isCustomProp=rcustomProp.test(name);// Make sure that we're working with the right name. We don't
1678// want to modify the value if it is a CSS custom property
1679// since they are user-defined.
1680if(!isCustomProp){name=finalPropName(origName);}// Try prefixed name followed by the unprefixed name
1681hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];// If a hook was provided get the computed value from there
1682if(hooks&&"get"in hooks){val=hooks.get(elem,true,extra);}// Otherwise, if a way to get the computed value exists, use that
1683if(val===undefined){val=curCSS(elem,name,styles);}// Convert "normal" to computed value
1684if(val==="normal"&&name in cssNormalTransform){val=cssNormalTransform[name];}// Make numeric if forced or a qualifier was provided and val looks numeric
1685if(extra===""||extra){num=parseFloat(val);return extra===true||isFinite(num)?num||0:val;}return val;}});jQuery.each(["height","width"],function(_i,dimension){jQuery.cssHooks[dimension]={get:function get(elem,computed,extra){if(computed){// Certain elements can have dimension info if we invisibly show them
1686// but it must have a current display style that would benefit
1687return rdisplayswap.test(jQuery.css(elem,"display"))&&(// Support: Safari 8+
1688// Table columns in Safari have non-zero offsetWidth & zero
1689// getBoundingClientRect().width unless display is changed.
1690// Support: IE <=11 only
1691// Running getBoundingClientRect on a disconnected node
1692// in IE throws an error.
1693!elem.getClientRects().length||!elem.getBoundingClientRect().width)?swap(elem,cssShow,function(){return getWidthOrHeight(elem,dimension,extra);}):getWidthOrHeight(elem,dimension,extra);}},set:function set(elem,value,extra){var matches,styles=getStyles(elem),// Only read styles.position if the test has a chance to fail
1694// to avoid forcing a reflow.
1695scrollboxSizeBuggy=!support.scrollboxSize()&&styles.position==="absolute",// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
1696boxSizingNeeded=scrollboxSizeBuggy||extra,isBorderBox=boxSizingNeeded&&jQuery.css(elem,"boxSizing",false,styles)==="border-box",subtract=extra?boxModelAdjustment(elem,dimension,extra,isBorderBox,styles):0;// Account for unreliable border-box dimensions by comparing offset* to computed and
1697// faking a content-box to get border and padding (gh-3699)
1698if(isBorderBox&&scrollboxSizeBuggy){subtract-=Math.ceil(elem["offset"+dimension[0].toUpperCase()+dimension.slice(1)]-parseFloat(styles[dimension])-boxModelAdjustment(elem,dimension,"border",false,styles)-0.5);}// Convert to pixels if value adjustment is needed
1699if(subtract&&(matches=rcssNum.exec(value))&&(matches[3]||"px")!=="px"){elem.style[dimension]=value;value=jQuery.css(elem,dimension);}return setPositiveNumber(elem,value,subtract);}};});jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed){return(parseFloat(curCSS(elem,"marginLeft"))||elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left;}))+"px";}});// These hooks are used by animate to expand properties
1700jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function expand(value){var i=0,expanded={},// Assumes a single number if not a string
1701parts=typeof value==="string"?value.split(" "):[value];for(;i<4;i++){expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];}return expanded;}};if(prefix!=="margin"){jQuery.cssHooks[prefix+suffix].set=setPositiveNumber;}});jQuery.fn.extend({css:function css(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(Array.isArray(name)){styles=getStyles(elem);len=name.length;for(;i<len;i++){map[name[i]]=jQuery.css(elem,name[i],false,styles);}return map;}return value!==undefined?jQuery.style(elem,name,value):jQuery.css(elem,name);},name,value,arguments.length>1);}});function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing);}jQuery.Tween=Tween;Tween.prototype={constructor:Tween,init:function init(elem,options,prop,end,easing,unit){this.elem=elem;this.prop=prop;this.easing=easing||jQuery.easing._default;this.options=options;this.start=this.now=this.cur();this.end=end;this.unit=unit||(jQuery.cssNumber[prop]?"":"px");},cur:function cur(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this);},run:function run(percent){var eased,hooks=Tween.propHooks[this.prop];if(this.options.duration){this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration);}else{this.pos=eased=percent;}this.now=(this.end-this.start)*eased+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this);}if(hooks&&hooks.set){hooks.set(this);}else{Tween.propHooks._default.set(this);}return this;}};Tween.prototype.init.prototype=Tween.prototype;Tween.propHooks={_default:{get:function get(tween){var result;// Use a property on the element directly when it is not a DOM element,
1702// or when there is no matching style property that exists.
1703if(tween.elem.nodeType!==1||tween.elem[tween.prop]!=null&&tween.elem.style[tween.prop]==null){return tween.elem[tween.prop];}// Passing an empty string as a 3rd parameter to .css will automatically
1704// attempt a parseFloat and fallback to a string if the parse fails.
1705// Simple values such as "10px" are parsed to Float;
1706// complex values such as "rotate(1rad)" are returned as-is.
1707result=jQuery.css(tween.elem,tween.prop,"");// Empty strings, null, undefined and "auto" are converted to 0.
1708return!result||result==="auto"?0:result;},set:function set(tween){// Use step hook for back compat.
1709// Use cssHook if its there.
1710// Use .style if available and use plain properties where available.
1711if(jQuery.fx.step[tween.prop]){jQuery.fx.step[tween.prop](tween);}else if(tween.elem.nodeType===1&&(jQuery.cssHooks[tween.prop]||tween.elem.style[finalPropName(tween.prop)]!=null)){jQuery.style(tween.elem,tween.prop,tween.now+tween.unit);}else{tween.elem[tween.prop]=tween.now;}}}};// Support: IE <=9 only
1712// Panic based approach to setting things on disconnected nodes
1713Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function set(tween){if(tween.elem.nodeType&&tween.elem.parentNode){tween.elem[tween.prop]=tween.now;}}};jQuery.easing={linear:function linear(p){return p;},swing:function swing(p){return 0.5-Math.cos(p*Math.PI)/2;},_default:"swing"};jQuery.fx=Tween.prototype.init;// Back compat <1.8 extension point
1714jQuery.fx.step={};var fxNow,inProgress,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function schedule(){if(inProgress){if(document.hidden===false&&window.requestAnimationFrame){window.requestAnimationFrame(schedule);}else{window.setTimeout(schedule,jQuery.fx.interval);}jQuery.fx.tick();}}// Animations created synchronously will run synchronously
1715function createFxNow(){window.setTimeout(function(){fxNow=undefined;});return fxNow=Date.now();}// Generate parameters to create a standard animation
1716function genFx(type,includeWidth){var which,i=0,attrs={height:type};// If we include width, step value is 1 to do all cssExpand values,
1717// otherwise step value is 2 to skip over Left and Right
1718includeWidth=includeWidth?1:0;for(;i<4;i+=2-includeWidth){which=cssExpand[i];attrs["margin"+which]=attrs["padding"+which]=type;}if(includeWidth){attrs.opacity=attrs.width=type;}return attrs;}function createTween(value,prop,animation){var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;for(;index<length;index++){if(tween=collection[index].call(animation,prop,value)){// We're done with this property
1719return tween;}}}function defaultPrefilter(elem,props,opts){var prop,value,toggle,hooks,oldfire,propTween,restoreDisplay,display,isBox="width"in props||"height"in props,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHiddenWithinTree(elem),dataShow=dataPriv.get(elem,"fxshow");// Queue-skipping animations hijack the fx hooks
1720if(!opts.queue){hooks=jQuery._queueHooks(elem,"fx");if(hooks.unqueued==null){hooks.unqueued=0;oldfire=hooks.empty.fire;hooks.empty.fire=function(){if(!hooks.unqueued){oldfire();}};}hooks.unqueued++;anim.always(function(){// Ensure the complete handler is called before this completes
1721anim.always(function(){hooks.unqueued--;if(!jQuery.queue(elem,"fx").length){hooks.empty.fire();}});});}// Detect show/hide animations
1722for(prop in props){value=props[prop];if(rfxtypes.test(value)){delete props[prop];toggle=toggle||value==="toggle";if(value===(hidden?"hide":"show")){// Pretend to be hidden if this is a "show" and
1723// there is still data from a stopped show/hide
1724if(value==="show"&&dataShow&&dataShow[prop]!==undefined){hidden=true;// Ignore all other no-op show/hide data
1725}else{continue;}}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop);}}// Bail out if this is a no-op like .hide().hide()
1726propTween=!jQuery.isEmptyObject(props);if(!propTween&&jQuery.isEmptyObject(orig)){return;}// Restrict "overflow" and "display" styles during box animations
1727if(isBox&&elem.nodeType===1){// Support: IE <=9 - 11, Edge 12 - 15
1728// Record all 3 overflow attributes because IE does not infer the shorthand
1729// from identically-valued overflowX and overflowY and Edge just mirrors
1730// the overflowX value there.
1731opts.overflow=[style.overflow,style.overflowX,style.overflowY];// Identify a display type, preferring old show/hide data over the CSS cascade
1732restoreDisplay=dataShow&&dataShow.display;if(restoreDisplay==null){restoreDisplay=dataPriv.get(elem,"display");}display=jQuery.css(elem,"display");if(display==="none"){if(restoreDisplay){display=restoreDisplay;}else{// Get nonempty value(s) by temporarily forcing visibility
1733showHide([elem],true);restoreDisplay=elem.style.display||restoreDisplay;display=jQuery.css(elem,"display");showHide([elem]);}}
vendor: 1,678 bytes, lines 1733-1742
1733// Animate inline elements as inline-block
1734if(display==="inline"||display==="inline-block"&&restoreDisplay!=null){if(jQuery.css(elem,"float")==="none"){// Restore the original display value at the end of pure show/hide animations
1735if(!propTween){anim.done(function(){style.display=restoreDisplay;});if(restoreDisplay==null){display=style.display;restoreDisplay=display==="none"?"":display;}}style.display="inline-block";}}}if(opts.overflow){style.overflow="hidden";anim.always(function(){style.overflow=opts.overflow[0];style.overflowX=opts.overflow[1];style.overflowY=opts.overflow[2];});}// Implement show/hide animations
1736propTween=false;for(prop in orig){// General show/hide setup for this element animation
1737if(!propTween){if(dataShow){if("hidden"in dataShow){hidden=dataShow.hidden;}}else{dataShow=dataPriv.access(elem,"fxshow",{display:restoreDisplay});}// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
1738if(toggle){dataShow.hidden=!hidden;}// Show elements before animating them
1739if(hidden){showHide([elem],true);}/* eslint-disable no-loop-func */anim.done(function(){/* eslint-enable no-loop-func */// The final step of a "hide" animation is actually hiding the element
1740if(!hidden){showHide([elem]);}dataPriv.remove(elem,"fxshow");for(prop in orig){jQuery.style(elem,prop,orig[prop]);}});}// Per-property setup
1741propTween=createTween(hidden?dataShow[prop]:0,prop,anim);if(!(prop in dataShow)){dataShow[prop]=propTween.start;if(hidden){propTween.end=propTween.start;propTween.start=0;}}}}function propFilter(props,specialEasing){var index,name,easing,value,hooks;// camelCase, specialEasing and expand cssHook pass
1742for(index in props){name=camelCase(index);
vendor: 4,740 bytes, lines 1742-1757
1742easing=specialEasing[name];value=props[index];if(Array.isArray(value)){easing=value[1];value=props[index]=value[0];}if(index!==name){props[name]=value;delete props[index];}hooks=jQuery.cssHooks[name];if(hooks&&"expand"in hooks){value=hooks.expand(value);delete props[name];// Not quite $.extend, this won't overwrite existing keys.
1743// Reusing 'index' because we have the correct "name"
1744for(index in value){if(!(index in props)){props[index]=value[index];specialEasing[index]=easing;}}}else{specialEasing[name]=easing;}}}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){// Don't match elem in the :animated selector
1745delete tick.elem;}),tick=function tick(){if(stopped){return false;}var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),// Support: Android 2.3 only
1746// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
1747temp=remaining/animation.duration||0,percent=1-temp,index=0,length=animation.tweens.length;for(;index<length;index++){animation.tweens[index].run(percent);}deferred.notifyWith(elem,[animation,percent,remaining]);// If there's more to do, yield
1748if(percent<1&&length){return remaining;}// If this was an empty animation, synthesize a final progress notification
1749if(!length){deferred.notifyWith(elem,[animation,1,0]);}// Resolve the animation and report its conclusion
1750deferred.resolveWith(elem,[animation]);return false;},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(true,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function createTween(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);animation.tweens.push(tween);return tween;},stop:function stop(gotoEnd){var index=0,// If we are going to the end, we want to run all the tweens
1751// otherwise we skip this part
1752length=gotoEnd?animation.tweens.length:0;if(stopped){return this;}stopped=true;for(;index<length;index++){animation.tweens[index].run(1);}// Resolve when we played the last frame; otherwise, reject
1753if(gotoEnd){deferred.notifyWith(elem,[animation,1,0]);deferred.resolveWith(elem,[animation,gotoEnd]);}else{deferred.rejectWith(elem,[animation,gotoEnd]);}return this;}}),props=animation.props;propFilter(props,animation.opts.specialEasing);for(;index<length;index++){result=Animation.prefilters[index].call(animation,elem,props,animation.opts);if(result){if(isFunction(result.stop)){jQuery._queueHooks(animation.elem,animation.opts.queue).stop=result.stop.bind(result);}return result;}}jQuery.map(props,createTween,animation);if(isFunction(animation.opts.start)){animation.opts.start.call(elem,animation);}// Attach callbacks from options
1754animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue}));return animation;}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);adjustCSS(tween.elem,prop,rcssNum.exec(value),tween);return tween;}]},tweener:function tweener(props,callback){if(isFunction(props)){callback=props;props=["*"];}else{props=props.match(rnothtmlwhite);}var prop,index=0,length=props.length;for(;index<length;index++){prop=props[index];Animation.tweeners[prop]=Animation.tweeners[prop]||[];Animation.tweeners[prop].unshift(callback);}},prefilters:[defaultPrefilter],prefilter:function prefilter(callback,prepend){if(prepend){Animation.prefilters.unshift(callback);}else{Animation.prefilters.push(callback);}}});jQuery.speed=function(speed,easing,fn){var opt=speed&&(typeof speed==='undefined'?'undefined':_typeof(speed))==="object"?jQuery.extend({},speed):{complete:fn||!fn&&easing||isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!isFunction(easing)&&easing};// Go to the end state if fx are off
1755if(jQuery.fx.off){opt.duration=0;}else{if(typeof opt.duration!=="number"){if(opt.duration in jQuery.fx.speeds){opt.duration=jQuery.fx.speeds[opt.duration];}else{opt.duration=jQuery.fx.speeds._default;}}}// Normalize opt.queue - true/undefined/null -> "fx"
1756if(opt.queue==null||opt.queue===true){opt.queue="fx";}// Queueing
1757opt.old=opt.complete;opt.complete=function(){if(isFunction(opt.old)){opt.old.call(this);}if(opt.queue){jQuery.dequeue(this,opt.queue);}};return opt;};jQuery.fn.extend({fadeTo:function fadeTo(speed,to,easing,callback){// 
vendor: 4,185 bytes, lines 1757-1773
1757Show any hidden elements after setting opacity to 0
1758return this.filter(isHiddenWithinTree).css("opacity",0).show()// Animate to the value specified
1759.end().animate({opacity:to},speed,easing,callback);},animate:function animate(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function doAnimation(){// Operate on a copy of prop so per-property easing won't be lost
1760var anim=Animation(this,jQuery.extend({},prop),optall);// Empty animations, or finishing resolves immediately
1761if(empty||dataPriv.get(this,"finish")){anim.stop(true);}};doAnimation.finish=doAnimation;return empty||optall.queue===false?this.each(doAnimation):this.queue(optall.queue,doAnimation);},stop:function stop(type,clearQueue,gotoEnd){var stopQueue=function stopQueue(hooks){var stop=hooks.stop;delete hooks.stop;stop(gotoEnd);};if(typeof type!=="string"){gotoEnd=clearQueue;clearQueue=type;type=undefined;}if(clearQueue){this.queue(type||"fx",[]);}return this.each(function(){var dequeue=true,index=type!=null&&type+"queueHooks",timers=jQuery.timers,data=dataPriv.get(this);if(index){if(data[index]&&data[index].stop){stopQueue(data[index]);}}else{for(index in data){if(data[index]&&data[index].stop&&rrun.test(index)){stopQueue(data[index]);}}}for(index=timers.length;index--;){if(timers[index].elem===this&&(type==null||timers[index].queue===type)){timers[index].anim.stop(gotoEnd);dequeue=false;timers.splice(index,1);}}// Start the next in the queue if the last step wasn't forced.
1762// Timers currently will call their complete callbacks, which
1763// will dequeue but only if they were gotoEnd.
1764if(dequeue||!gotoEnd){jQuery.dequeue(this,type);}});},finish:function finish(type){if(type!==false){type=type||"fx";}return this.each(function(){var index,data=dataPriv.get(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;// Enable finishing flag on private data
1765data.finish=true;// Empty the queue first
1766jQuery.queue(this,type,[]);if(hooks&&hooks.stop){hooks.stop.call(this,true);}// Look for any active animations, and finish them
1767for(index=timers.length;index--;){if(timers[index].elem===this&&timers[index].queue===type){timers[index].anim.stop(true);timers.splice(index,1);}}// Look for any animations in the old queue and finish them
1768for(index=0;index<length;index++){if(queue[index]&&queue[index].finish){queue[index].finish.call(this);}}// Turn off finishing flag
1769delete data.finish;});}});jQuery.each(["toggle","show","hide"],function(_i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return speed==null||typeof speed==="boolean"?cssFn.apply(this,arguments):this.animate(genFx(name,true),speed,easing,callback);};});// Generate shortcuts for custom animations
1770jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback);};});jQuery.timers=[];jQuery.fx.tick=function(){var timer,i=0,timers=jQuery.timers;fxNow=Date.now();for(;i<timers.length;i++){timer=timers[i];// Run the timer and safely remove it when done (allowing for external removal)
1771if(!timer()&&timers[i]===timer){timers.splice(i--,1);}}if(!timers.length){jQuery.fx.stop();}fxNow=undefined;};jQuery.fx.timer=function(timer){jQuery.timers.push(timer);jQuery.fx.start();};jQuery.fx.interval=13;jQuery.fx.start=function(){if(inProgress){return;}inProgress=true;schedule();};jQuery.fx.stop=function(){inProgress=null;};jQuery.fx.speeds={slow:600,fast:200,// Default speed
1772_default:400};// Based off of the plugin by Clint Helfers, with permission.
1773jQuery.fn.delay=function(time,type){time=jQuery.fx?jQuery.fx.speeds[time]||time:time;type=type||"fx";return this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout);};});};(function(){var input=document.createElement("input"),select=document.createElement("select"),opt=select.appendChild(document.createElement("option"));input.type="checkbox";
vendor: 18,495 bytes, lines 1773-1873
1773// Support: Android <=4.3 only
1774// Default value for a checkbox should be "on"
1775support.checkOn=input.value!=="";// Support: IE <=11 only
1776// Must access selectedIndex to make default options select
1777support.optSelected=opt.selected;// Support: IE <=11 only
1778// An input loses its value after becoming a radio
1779input=document.createElement("input");input.value="t";input.type="radio";support.radioValue=input.value==="t";})();var boolHook,attrHandle=jQuery.expr.attrHandle;jQuery.fn.extend({attr:function attr(name,value){return access(this,jQuery.attr,name,value,arguments.length>1);},removeAttr:function removeAttr(name){return this.each(function(){jQuery.removeAttr(this,name);});}});jQuery.extend({attr:function attr(elem,name,value){var ret,hooks,nType=elem.nodeType;// Don't get/set attributes on text, comment and attribute nodes
1780if(nType===3||nType===8||nType===2){return;}// Fallback to prop when attributes are not supported
1781if(typeof elem.getAttribute==="undefined"){return jQuery.prop(elem,name,value);}// Attribute hooks are determined by the lowercase version
1782// Grab necessary hook if one is defined
1783if(nType!==1||!jQuery.isXMLDoc(elem)){hooks=jQuery.attrHooks[name.toLowerCase()]||(jQuery.expr.match.bool.test(name)?boolHook:undefined);}if(value!==undefined){if(value===null){jQuery.removeAttr(elem,name);return;}if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret;}elem.setAttribute(name,value+"");return value;}if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret;}ret=jQuery.find.attr(elem,name);// Non-existent attributes return null, we normalize to undefined
1784return ret==null?undefined:ret;},attrHooks:{type:{set:function set(elem,value){if(!support.radioValue&&value==="radio"&&nodeName(elem,"input")){var val=elem.value;elem.setAttribute("type",value);if(val){elem.value=val;}return value;}}}},removeAttr:function removeAttr(elem,value){var name,i=0,// Attribute names can contain non-HTML whitespace characters
1785// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
1786attrNames=value&&value.match(rnothtmlwhite);if(attrNames&&elem.nodeType===1){while(name=attrNames[i++]){elem.removeAttribute(name);}}}});// Hooks for boolean attributes
1787boolHook={set:function set(elem,value,name){if(value===false){// Remove boolean attributes when set to false
1788jQuery.removeAttr(elem,name);}else{elem.setAttribute(name,name);}return name;}};jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(_i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=function(elem,name,isXML){var ret,handle,lowercaseName=name.toLowerCase();if(!isXML){// Avoid an infinite loop by temporarily removing this function from the getter
1789handle=attrHandle[lowercaseName];attrHandle[lowercaseName]=ret;ret=getter(elem,name,isXML)!=null?lowercaseName:null;attrHandle[lowercaseName]=handle;}return ret;};});var rfocusable=/^(?:input|select|textarea|button)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function prop(name,value){return access(this,jQuery.prop,name,value,arguments.length>1);},removeProp:function removeProp(name){return this.each(function(){delete this[jQuery.propFix[name]||name];});}});jQuery.extend({prop:function prop(elem,name,value){var ret,hooks,nType=elem.nodeType;// Don't get/set properties on text, comment and attribute nodes
1790if(nType===3||nType===8||nType===2){return;}if(nType!==1||!jQuery.isXMLDoc(elem)){// Fix name and attach hooks
1791name=jQuery.propFix[name]||name;hooks=jQuery.propHooks[name];}if(value!==undefined){if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret;}return elem[name]=value;}if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret;}return elem[name];},propHooks:{tabIndex:{get:function get(elem){// Support: IE <=9 - 11 only
1792// elem.tabIndex doesn't always return the
1793// correct value when it hasn't been explicitly set
1794// Use proper attribute retrieval (trac-12072)
1795var tabindex=jQuery.find.attr(elem,"tabindex");if(tabindex){return parseInt(tabindex,10);}if(rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href){return 0;}return-1;}}},propFix:{"for":"htmlFor","class":"className"}});// Support: IE <=11 only
1796// Accessing the selectedIndex property
1797// forces the browser to respect setting selected
1798// on the option
1799// The getter ensures a default option is selected
1800// when in an optgroup
1801// eslint rule "no-unused-expressions" is disabled for this code
1802// since it considers such accessions noop
1803if(!support.optSelected){jQuery.propHooks.selected={get:function get(elem){/* eslint no-unused-expressions: "off" */var parent=elem.parentNode;if(parent&&parent.parentNode){parent.parentNode.selectedIndex;}return null;},set:function set(elem){/* eslint no-unused-expressions: "off" */var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex;}}}};}jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this;});// Strip and collapse whitespace according to HTML spec
1804// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
1805function stripAndCollapse(value){var tokens=value.match(rnothtmlwhite)||[];return tokens.join(" ");}function getClass(elem){return elem.getAttribute&&elem.getAttribute("class")||"";}function classesToArray(value){if(Array.isArray(value)){return value;}if(typeof value==="string"){return value.match(rnothtmlwhite)||[];}return[];}jQuery.fn.extend({addClass:function addClass(value){var classNames,cur,curValue,className,i,finalValue;if(isFunction(value)){return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)));});}classNames=classesToArray(value);if(classNames.length){return this.each(function(){curValue=getClass(this);cur=this.nodeType===1&&" "+stripAndCollapse(curValue)+" ";if(cur){for(i=0;i<classNames.length;i++){className=classNames[i];if(cur.indexOf(" "+className+" ")<0){cur+=className+" ";}}// Only assign if different to avoid unneeded rendering.
1806finalValue=stripAndCollapse(cur);if(curValue!==finalValue){this.setAttribute("class",finalValue);}}});}return this;},removeClass:function removeClass(value){var classNames,cur,curValue,className,i,finalValue;if(isFunction(value)){return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)));});}if(!arguments.length){return this.attr("class","");}classNames=classesToArray(value);if(classNames.length){return this.each(function(){curValue=getClass(this);// This expression is here for better compressibility (see addClass)
1807cur=this.nodeType===1&&" "+stripAndCollapse(curValue)+" ";if(cur){for(i=0;i<classNames.length;i++){className=classNames[i];// Remove *all* instances
1808while(cur.indexOf(" "+className+" ")>-1){cur=cur.replace(" "+className+" "," ");}}// Only assign if different to avoid unneeded rendering.
1809finalValue=stripAndCollapse(cur);if(curValue!==finalValue){this.setAttribute("class",finalValue);}}});}return this;},toggleClass:function toggleClass(value,stateVal){var classNames,className,i,self,type=typeof value==='undefined'?'undefined':_typeof(value),isValidValue=type==="string"||Array.isArray(value);if(isFunction(value)){return this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal);});}if(typeof stateVal==="boolean"&&isValidValue){return stateVal?this.addClass(value):this.removeClass(value);}classNames=classesToArray(value);return this.each(function(){if(isValidValue){// Toggle individual class names
1810self=jQuery(this);for(i=0;i<classNames.length;i++){className=classNames[i];// Check each className given, space separated list
1811if(self.hasClass(className)){self.removeClass(className);}else{self.addClass(className);}}// Toggle whole class name
1812}else if(value===undefined||type==="boolean"){className=getClass(this);if(className){// Store className if set
1813dataPriv.set(this,"__className__",className);}// If the element has a class name or if we're passed `false`,
1814// then remove the whole classname (if there was one, the above saved it).
1815// Otherwise bring back whatever was previously saved (if anything),
1816// falling back to the empty string if nothing was stored.
1817if(this.setAttribute){this.setAttribute("class",className||value===false?"":dataPriv.get(this,"__className__")||"");}}});},hasClass:function hasClass(selector){var className,elem,i=0;className=" "+selector+" ";while(elem=this[i++]){if(elem.nodeType===1&&(" "+stripAndCollapse(getClass(elem))+" ").indexOf(className)>-1){return true;}}return false;}});var rreturn=/\r/g;jQuery.fn.extend({val:function val(value){var hooks,ret,valueIsFunction,elem=this[0];if(!arguments.length){if(elem){hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()];if(hooks&&"get"in hooks&&(ret=hooks.get(elem,"value"))!==undefined){return ret;}ret=elem.value;// Handle most common string cases
1818if(typeof ret==="string"){return ret.replace(rreturn,"");}// Handle cases where value is null/undef or number
1819return ret==null?"":ret;}return;}valueIsFunction=isFunction(value);return this.each(function(i){var val;if(this.nodeType!==1){return;}if(valueIsFunction){val=value.call(this,i,jQuery(this).val());}else{val=value;}// Treat null/undefined as ""; convert numbers to string
1820if(val==null){val="";}else if(typeof val==="number"){val+="";}else if(Array.isArray(val)){val=jQuery.map(val,function(value){return value==null?"":value+"";});}hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()];// If set returns undefined, fall back to normal setting
1821if(!hooks||!("set"in hooks)||hooks.set(this,val,"value")===undefined){this.value=val;}});}});jQuery.extend({valHooks:{option:{get:function get(elem){var val=jQuery.find.attr(elem,"value");return val!=null?val:// Support: IE <=10 - 11 only
1822// option.text throws exceptions (trac-14686, trac-14858)
1823// Strip and collapse whitespace
1824// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
1825stripAndCollapse(jQuery.text(elem));}},select:{get:function get(elem){var value,option,i,options=elem.options,index=elem.selectedIndex,one=elem.type==="select-one",values=one?null:[],max=one?index+1:options.length;if(index<0){i=max;}else{i=one?index:0;}// Loop through all the selected options
1826for(;i<max;i++){option=options[i];// Support: IE <=9 only
1827// IE8-9 doesn't update selected after form reset (trac-2551)
1828if((option.selected||i===index)&&// Don't return options that are disabled or in a disabled optgroup
1829!option.disabled&&(!option.parentNode.disabled||!nodeName(option.parentNode,"optgroup"))){// Get the specific value for the option
1830value=jQuery(option).val();// We don't need an array for one selects
1831if(one){return value;}// Multi-Selects return an array
1832values.push(value);}}return values;},set:function set(elem,value){var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;while(i--){option=options[i];/* eslint-disable no-cond-assign */if(option.selected=jQuery.inArray(jQuery.valHooks.option.get(option),values)>-1){optionSet=true;}/* eslint-enable no-cond-assign */}// Force browsers to behave consistently when non-matching value is set
1833if(!optionSet){elem.selectedIndex=-1;}return values;}}}});// Radios and checkboxes getter/setter
1834jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function set(elem,value){if(Array.isArray(value)){return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1;}}};if(!support.checkOn){jQuery.valHooks[this].get=function(elem){return elem.getAttribute("value")===null?"on":elem.value;};}});// Return jQuery for attributes-only inclusion
1835var location=window.location;var nonce={guid:Date.now()};var rquery=/\?/;// Cross-browser xml parsing
1836jQuery.parseXML=function(data){var xml,parserErrorElem;if(!data||typeof data!=="string"){return null;}// Support: IE 9 - 11 only
1837// IE throws on parseFromString with invalid input.
1838try{xml=new window.DOMParser().parseFromString(data,"text/xml");}catch(e){}parserErrorElem=xml&&xml.getElementsByTagName("parsererror")[0];if(!xml||parserErrorElem){jQuery.error("Invalid XML: "+(parserErrorElem?jQuery.map(parserErrorElem.childNodes,function(el){return el.textContent;}).join("\n"):data));}return xml;};var rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,stopPropagationCallback=function stopPropagationCallback(e){e.stopPropagation();};jQuery.extend(jQuery.event,{trigger:function trigger(event,data,elem,onlyHandlers){var i,cur,tmp,bubbleType,ontype,handle,special,lastElement,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=lastElement=tmp=elem=elem||document;// Don't do events on text and comment nodes
1839if(elem.nodeType===3||elem.nodeType===8){return;}// focus/blur morphs to focusin/out; ensure we're not firing them right now
1840if(rfocusMorph.test(type+jQuery.event.triggered)){return;}if(type.indexOf(".")>-1){// Namespaced trigger; create a regexp to match event type in handle()
1841namespaces=type.split(".");type=namespaces.shift();namespaces.sort();}ontype=type.indexOf(":")<0&&"on"+type;// Caller can pass in a jQuery.Event object, Object, or just an event type string
1842event=event[jQuery.expando]?event:new jQuery.Event(type,(typeof event==='undefined'?'undefined':_typeof(event))==="object"&&event);// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
1843event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;// Clean up the event in case it is being reused
1844event.result=undefined;if(!event.target){event.target=elem;}// Clone any incoming data and prepend the event, creating the handler arg list
1845data=data==null?[event]:jQuery.makeArray(data,[event]);// Allow special events to draw outside the lines
1846special=jQuery.event.special[type]||{};if(!onlyHandlers&&special.trigger&&special.trigger.apply(elem,data)===false){return;}// Determine event propagation path in advance, per W3C events spec (trac-9951)
1847// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
1848if(!onlyHandlers&&!special.noBubble&&!isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode;}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur;}// Only add window if we got to document (e.g., not plain obj or detached DOM)
1849if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window);}}// Fire handlers on the event path
1850i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){lastElement=cur;event.type=i>1?bubbleType:special.bindType||type;// jQuery handler
1851handle=(dataPriv.get(cur,"events")||Object.create(null))[event.type]&&dataPriv.get(cur,"handle");if(handle){handle.apply(cur,data);}// Native handler
1852handle=ontype&&cur[ontype];if(handle&&handle.apply&&acceptData(cur)){event.result=handle.apply(cur,data);if(event.result===false){event.preventDefault();}}}event.type=type;// If nobody prevented the default action, do it now
1853if(!onlyHandlers&&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(),data)===false)&&acceptData(elem)){// Call a native DOM method on the target with the same name as the event.
1854// Don't do default actions on window, that's where global variables be (trac-6170)
1855if(ontype&&isFunction(elem[type])&&!isWindow(elem)){// Don't re-trigger an onFOO event when we call its FOO() method
1856tmp=elem[ontype];if(tmp){elem[ontype]=null;}// Prevent re-triggering of the same event, since we already bubbled it above
1857jQuery.event.triggered=type;if(event.isPropagationStopped()){lastElement.addEventListener(type,stopPropagationCallback);}elem[type]();if(event.isPropagationStopped()){lastElement.removeEventListener(type,stopPropagationCallback);}jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp;}}}}return event.result;},// Piggyback on a donor event to simulate a different one
1858// Used only for `focus(in | out)` events
1859simulate:function simulate(type,elem,event){var e=jQuery.extend(new jQuery.Event(),event,{type:type,isSimulated:true});jQuery.event.trigger(e,null,elem);}});jQuery.fn.extend({trigger:function trigger(type,data){return this.each(function(){jQuery.event.trigger(type,data,this);});},triggerHandler:function triggerHandler(type,data){var elem=this[0];if(elem){return jQuery.event.trigger(type,data,elem,true);}}});var rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(Array.isArray(obj)){// Serialize array item.
1860jQuery.each(obj,function(i,v){if(traditional||rbracket.test(prefix)){// Treat each array item as a scalar.
1861add(prefix,v);}else{// Item is non-scalar (array or object), encode its numeric index.
1862buildParams(prefix+"["+((typeof v==='undefined'?'undefined':_typeof(v))==="object"&&v!=null?i:"")+"]",v,traditional,add);}});}else if(!traditional&&toType(obj)==="object"){// Serialize object item.
1863for(name in obj){buildParams(prefix+"["+name+"]",obj[name],traditional,add);}}else{// Serialize scalar item.
1864add(prefix,obj);}}// Serialize an array of form elements or a set of
1865// key/values into a query string
1866jQuery.param=function(a,traditional){var prefix,s=[],add=function add(key,valueOrFunction){// If value is a function, invoke it and use its return value
1867var value=isFunction(valueOrFunction)?valueOrFunction():valueOrFunction;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(value==null?"":value);};if(a==null){return"";}// If an array was passed in, assume that it is an array of form elements.
1868if(Array.isArray(a)||a.jquery&&!jQuery.isPlainObject(a)){// Serialize the form elements
1869jQuery.each(a,function(){add(this.name,this.value);});}else{// If traditional, encode the "old" way (the way 1.3.2 or older
1870// did it), otherwise encode params recursively.
1871for(prefix in a){buildParams(prefix,a[prefix],traditional,add);}}// Return the resulting serialization
1872return s.join("&");};jQuery.fn.extend({serialize:function serialize(){return jQuery.param(this.serializeArray());},serializeArray:function serializeArray(){return this.map(function(){// Can add propHook for "elements" to filter or add form elements
1873var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this;}
vendor: 7,006 bytes, lines 1873-1933
1873).filter(function(){var type=this.type;// Use .is( ":disabled" ) so that fieldset[disabled] works
1874return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type));}).map(function(_i,elem){var val=jQuery(this).val();if(val==null){return null;}if(Array.isArray(val)){return jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")};});}return{name:elem.name,value:val.replace(rCRLF,"\r\n")};}).get();}});var r20=/%20/g,rhash=/#.*$/,rantiCache=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)$/mg,// trac-7653, trac-8125, trac-8152: local protocol detection
1875rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,/* Prefilters
1876	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
1877	 * 2) These are called:
1878	 *    - BEFORE asking for a transport
1879	 *    - AFTER param serialization (s.data is a string if s.processData is true)
1880	 * 3) key is the dataType
1881	 * 4) the catchall symbol "*" can be used
1882	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
1883	 */prefilters={},/* Transports bindings
1884	 * 1) key is the dataType
1885	 * 2) the catchall symbol "*" can be used
1886	 * 3) selection will start with transport dataType and THEN go to "*" if needed
1887	 */transports={},// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
1888allTypes="*/".concat("*"),// Anchor tag for parsing the document origin
1889originAnchor=document.createElement("a");originAnchor.href=location.href;// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
1890function addToPrefiltersOrTransports(structure){// dataTypeExpression is optional and defaults to "*"
1891return function(dataTypeExpression,func){if(typeof dataTypeExpression!=="string"){func=dataTypeExpression;dataTypeExpression="*";}var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnothtmlwhite)||[];if(isFunction(func)){// For each dataType in the dataTypeExpression
1892while(dataType=dataTypes[i++]){// Prepend if requested
1893if(dataType[0]==="+"){dataType=dataType.slice(1)||"*";(structure[dataType]=structure[dataType]||[]).unshift(func);// Otherwise append
1894}else{(structure[dataType]=structure[dataType]||[]).push(func);}}}};}// Base inspection function for prefilters and transports
1895function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;inspected[dataType]=true;jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);if(typeof dataTypeOrTransport==="string"&&!seekingTransport&&!inspected[dataTypeOrTransport]){options.dataTypes.unshift(dataTypeOrTransport);inspect(dataTypeOrTransport);return false;}else if(seekingTransport){return!(selected=dataTypeOrTransport);}});return selected;}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*");}// A special extend for ajax options
1896// that takes "flat" options (not to be deep extended)
1897// Fixes trac-9887
1898function ajaxExtend(target,src){var key,deep,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src){if(src[key]!==undefined){(flatOptions[key]?target:deep||(deep={}))[key]=src[key];}}if(deep){jQuery.extend(true,target,deep);}return target;}/* Handles responses to an ajax request:
1899 * - finds the right dataType (mediates between content-type and expected dataType)
1900 * - returns the corresponding response
1901 */function ajaxHandleResponses(s,jqXHR,responses){var ct,type,finalDataType,firstDataType,contents=s.contents,dataTypes=s.dataTypes;// Remove auto dataType and get content-type in the process
1902while(dataTypes[0]==="*"){dataTypes.shift();if(ct===undefined){ct=s.mimeType||jqXHR.getResponseHeader("Content-Type");}}// Check if we're dealing with a known content-type
1903if(ct){for(type in contents){if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break;}}}// Check to see if we have a response for the expected dataType
1904if(dataTypes[0]in responses){finalDataType=dataTypes[0];}else{// Try convertible dataTypes
1905for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break;}if(!firstDataType){firstDataType=type;}}// Or just use first one
1906finalDataType=finalDataType||firstDataType;}// If we found a dataType
1907// We add the dataType to the list if needed
1908// and return the corresponding response
1909if(finalDataType){if(finalDataType!==dataTypes[0]){dataTypes.unshift(finalDataType);}return responses[finalDataType];}}/* Chain conversions given the request and the original response
1910 * Also sets the responseXXX fields on the jqXHR instance
1911 */function ajaxConvert(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},// Work with a copy of dataTypes in case we need to modify it for conversion
1912dataTypes=s.dataTypes.slice();// Create converters map with lowercased keys
1913if(dataTypes[1]){for(conv in s.converters){converters[conv.toLowerCase()]=s.converters[conv];}}current=dataTypes.shift();// Convert to each sequential dataType
1914while(current){if(s.responseFields[current]){jqXHR[s.responseFields[current]]=response;}// Apply the dataFilter if provided
1915if(!prev&&isSuccess&&s.dataFilter){response=s.dataFilter(response,s.dataType);}prev=current;current=dataTypes.shift();if(current){// There's only work to do if current dataType is non-auto
1916if(current==="*"){current=prev;// Convert response if prev dataType is non-auto and differs from current
1917}else if(prev!=="*"&&prev!==current){// Seek a direct converter
1918conv=converters[prev+" "+current]||converters["* "+current];// If none found, seek a pair
1919if(!conv){for(conv2 in converters){// If conv2 outputs current
1920tmp=conv2.split(" ");if(tmp[1]===current){// If prev can be converted to accepted input
1921conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]];if(conv){// Condense equivalence converters
1922if(conv===true){conv=converters[conv2];// Otherwise, insert the intermediate dataType
1923}else if(converters[conv2]!==true){current=tmp[0];dataTypes.unshift(tmp[1]);}break;}}}}// Apply converter (if not an equivalence)
1924if(conv!==true){// Unless errors are allowed to bubble, catch and return them
1925if(conv&&s.throws){response=conv(response);}else{try{response=conv(response);}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current};}}}}}}return{state:"success",data:response};}jQuery.extend({// Counter for holding the number of active queries
1926active:0,// Last-Modified header cache for next request
1927lastModified:{},etag:{},ajaxSettings:{url:location.href,type:"GET",isLocal:rlocalProtocol.test(location.protocol),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",/*
1928		timeout: 0,
1929		data: null,
1930		dataType: null,
1931		username: null,
1932		password: null,
1933		cache: null,
1934		throws: false,
1935		traditional: false,
1936		headers: {},
1937		*/accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},// Data converters
1938// Keys separate source (or catchall "*") and destination types with a single space
1939converters:{// Convert anything to text
1940"* text":String,// Text to html (true = no transformation)
1941"text html":true,// Evaluate text as a json expression
1942"text json":JSON.parse,// Parse text as xml
1943"text xml":jQuery.parseXML},// For options that shouldn't be deep extended:
1944// you can add your own custom options here if
1945// and when you create one that shouldn't be
1946// deep extended (see ajaxExtend)
1947flatOptions:{url:true,context:true}},// Creates a full fledged settings object into target
1948// with both ajaxSettings and settings fields.
1949// If target is omitted, writes into ajaxSettings.
1950ajaxSetup:function ajaxSetup(target,settings){return settings?// Building a settings object
1951ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):// Extending ajaxSettings
1952ajaxExtend(jQuery.ajaxSettings,target);},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),// Main method
1953ajax:function ajax(url,options){// If url is an object, simulate pre-1.5 signature
1954if((typeof url==='undefined'?'undefined':_typeof(url))==="object"){options=url;url=undefined;}// Force options to be an object
1955options=options||{};var transport,// URL without anti-cache param
1956cacheURL,// Response headers
1957responseHeadersString,responseHeaders,// timeout handle
1958timeoutTimer,// Url cleanup var
1959urlAnchor,// Request state (becomes false upon send and true upon completion)
1960completed,// To know if global events are to be dispatched
1961fireGlobals,// Loop variable
1962i,// uncached part of the url
1963uncached,// Create the final options object
1964s=jQuery.ajaxSetup({},options),// Callbacks context
1965callbackContext=s.context||s,// Context for global events is callbackContext if it is a DOM node or jQuery collection
1966globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,// Deferreds
1967deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),// Status-dependent callbacks
1968_statusCode=s.statusCode||{},// Headers (they are sent all at once)
1969requestHeaders={},requestHeadersNames={},// Default abort message
1970strAbort="canceled",// Fake xhr
1971jqXHR={readyState:0,// Builds headers hashtable if needed
1972getResponseHeader:function getResponseHeader(key){var match;if(completed){if(!responseHeaders){responseHeaders={};while(match=rheaders.exec(responseHeadersString)){responseHeaders[match[1].toLowerCase()+" "]=(responseHeaders[match[1].toLowerCase()+" "]||[]).concat(match[2]);}}match=responseHeaders[key.toLowerCase()+" "];}return match==null?null:match.join(", ");},// Raw string
1973getAllResponseHeaders:function getAllResponseHeaders(){return completed?responseHeadersString:null;},// Caches the header
1974setRequestHeader:function setRequestHeader(name,value){if(completed==null){name=requestHeadersNames[name.toLowerCase()]=requestHeadersNames[name.toLowerCase()]||name;requestHeaders[name]=value;}return this;},// Overrides response content-type header
1975overrideMimeType:function overrideMimeType(type){if(completed==null){s.mimeType=type;}return this;},// Status-dependent callbacks
1976statusCode:function statusCode(map){var code;if(map){if(completed){// Execute the appropriate callbacks
1977jqXHR.always(map[jqXHR.status]);}else{// Lazy-add the new callbacks in a way that preserves old ones
1978for(code in map){_statusCode[code]=[_statusCode[code],map[code]];}}}return this;},// Cancel the request
1979abort:function abort(statusText){var finalText=statusText||strAbort;if(transport){transport.abort(finalText);}done(0,finalText);return this;}};// Attach deferreds
1980deferred.promise(jqXHR);// Add protocol if not provided (prefilters might expect it)
1981// Handle falsy url in the settings object (trac-10093: consistency with old signature)
1982// We also use the url parameter if available
1983s.url=((url||s.url||location.href)+"").replace(rprotocol,location.protocol+"//");// Alias method option to type as per ticket trac-12004
1984s.type=options.method||options.type||s.method||s.type;// Extract dataTypes list
1985s.dataTypes=(s.dataType||"*").toLowerCase().match(rnothtmlwhite)||[""];// A cross-domain request is in order when the origin doesn't match the current origin.
1986if(s.crossDomain==null){urlAnchor=document.createElement("a");// Support: IE <=8 - 11, Edge 12 - 15
1987// IE throws exception on accessing the href property if url is malformed,
1988// e.g. http://example.com:80x/
1989try{urlAnchor.href=s.url;
vendor: 16,385 bytes, lines 1989-2118
1989// Support: IE <=8 - 11 only
1990// Anchor's host property isn't correctly set when s.url is relative
1991urlAnchor.href=urlAnchor.href;s.crossDomain=originAnchor.protocol+"//"+originAnchor.host!==urlAnchor.protocol+"//"+urlAnchor.host;}catch(e){// If there is an error parsing the URL, assume it is crossDomain,
1992// it can be rejected by the transport if it is invalid
1993s.crossDomain=true;}}// Convert data if not already a string
1994if(s.data&&s.processData&&typeof s.data!=="string"){s.data=jQuery.param(s.data,s.traditional);}// Apply prefilters
1995inspectPrefiltersOrTransports(prefilters,s,options,jqXHR);// If request was aborted inside a prefilter, stop there
1996if(completed){return jqXHR;}// We can fire global events as of now if asked to
1997// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
1998fireGlobals=jQuery.event&&s.global;// Watch for a new set of requests
1999if(fireGlobals&&jQuery.active++===0){jQuery.event.trigger("ajaxStart");}// Uppercase the type
2000s.type=s.type.toUpperCase();// Determine if request has content
2001s.hasContent=!rnoContent.test(s.type);// Save the URL in case we're toying with the If-Modified-Since
2002// and/or If-None-Match header later on
2003// Remove hash to simplify url manipulation
2004cacheURL=s.url.replace(rhash,"");// More options handling for requests with no content
2005if(!s.hasContent){// Remember the hash so we can put it back
2006uncached=s.url.slice(cacheURL.length);// If data is available and should be processed, append data to url
2007if(s.data&&(s.processData||typeof s.data==="string")){cacheURL+=(rquery.test(cacheURL)?"&":"?")+s.data;// trac-9682: remove data so that it's not used in an eventual retry
2008delete s.data;}// Add or update anti-cache param if needed
2009if(s.cache===false){cacheURL=cacheURL.replace(rantiCache,"$1");uncached=(rquery.test(cacheURL)?"&":"?")+"_="+nonce.guid++ +uncached;}// Put hash and anti-cache on the URL that will be requested (gh-1732)
2010s.url=cacheURL+uncached;// Change '%20' to '+' if this is encoded form body content (gh-2658)
2011}else if(s.data&&s.processData&&(s.contentType||"").indexOf("application/x-www-form-urlencoded")===0){s.data=s.data.replace(r20,"+");}// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
2012if(s.ifModified){if(jQuery.lastModified[cacheURL]){jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]);}if(jQuery.etag[cacheURL]){jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL]);}}// Set the correct header, if data is being sent
2013if(s.data&&s.hasContent&&s.contentType!==false||options.contentType){jqXHR.setRequestHeader("Content-Type",s.contentType);}// Set the Accepts header for the server, depending on the dataType
2014jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+(s.dataTypes[0]!=="*"?", "+allTypes+"; q=0.01":""):s.accepts["*"]);// Check for headers option
2015for(i in s.headers){jqXHR.setRequestHeader(i,s.headers[i]);}// Allow custom headers/mimetypes and early abort
2016if(s.beforeSend&&(s.beforeSend.call(callbackContext,jqXHR,s)===false||completed)){// Abort if not done already and return
2017return jqXHR.abort();}// Aborting is no longer a cancellation
2018strAbort="abort";// Install callbacks on deferreds
2019completeDeferred.add(s.complete);jqXHR.done(s.success);jqXHR.fail(s.error);// Get transport
2020transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR);// If no transport, we auto-abort
2021if(!transport){done(-1,"No Transport");}else{jqXHR.readyState=1;// Send global event
2022if(fireGlobals){globalEventContext.trigger("ajaxSend",[jqXHR,s]);}// If request was aborted inside ajaxSend, stop there
2023if(completed){return jqXHR;}// Timeout
2024if(s.async&&s.timeout>0){timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout");},s.timeout);}try{completed=false;transport.send(requestHeaders,done);}catch(e){// Rethrow post-completion exceptions
2025if(completed){throw e;}// Propagate others as results
2026done(-1,e);}}// Callback for when everything is done
2027function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;// Ignore repeat invocations
2028if(completed){return;}completed=true;// Clear timeout if it exists
2029if(timeoutTimer){window.clearTimeout(timeoutTimer);}// Dereference transport for early garbage collection
2030// (no matter how long the jqXHR object will be used)
2031transport=undefined;// Cache response headers
2032responseHeadersString=headers||"";// Set readyState
2033jqXHR.readyState=status>0?4:0;// Determine if successful
2034isSuccess=status>=200&&status<300||status===304;// Get response data
2035if(responses){response=ajaxHandleResponses(s,jqXHR,responses);}// Use a noop converter for missing script but not if jsonp
2036if(!isSuccess&&jQuery.inArray("script",s.dataTypes)>-1&&jQuery.inArray("json",s.dataTypes)<0){s.converters["text script"]=function(){};}// Convert no matter what (that way responseXXX fields are always set)
2037response=ajaxConvert(s,response,jqXHR,isSuccess);// If successful, handle type chaining
2038if(isSuccess){// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
2039if(s.ifModified){modified=jqXHR.getResponseHeader("Last-Modified");if(modified){jQuery.lastModified[cacheURL]=modified;}modified=jqXHR.getResponseHeader("etag");if(modified){jQuery.etag[cacheURL]=modified;}}// if no content
2040if(status===204||s.type==="HEAD"){statusText="nocontent";// if not modified
2041}else if(status===304){statusText="notmodified";// If we have data, let's convert it
2042}else{statusText=response.state;success=response.data;error=response.error;isSuccess=!error;}}else{// Extract error from statusText and normalize for non-aborts
2043error=statusText;if(status||!statusText){statusText="error";if(status<0){status=0;}}}// Set data for the fake xhr object
2044jqXHR.status=status;jqXHR.statusText=(nativeStatusText||statusText)+"";// Success/Error
2045if(isSuccess){deferred.resolveWith(callbackContext,[success,statusText,jqXHR]);}else{deferred.rejectWith(callbackContext,[jqXHR,statusText,error]);}// Status-dependent callbacks
2046jqXHR.statusCode(_statusCode);_statusCode=undefined;if(fireGlobals){globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]);}// Complete
2047completeDeferred.fireWith(callbackContext,[jqXHR,statusText]);if(fireGlobals){globalEventContext.trigger("ajaxComplete",[jqXHR,s]);// Handle the global AJAX counter
2048if(! --jQuery.active){jQuery.event.trigger("ajaxStop");}}}return jqXHR;},getJSON:function getJSON(url,data,callback){return jQuery.get(url,data,callback,"json");},getScript:function getScript(url,callback){return jQuery.get(url,undefined,callback,"script");}});jQuery.each(["get","post"],function(_i,method){jQuery[method]=function(url,data,callback,type){// Shift arguments if data argument was omitted
2049if(isFunction(data)){type=type||callback;callback=data;data=undefined;}// The url can be an options object (which then must have .url)
2050return jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url));};});jQuery.ajaxPrefilter(function(s){var i;for(i in s.headers){if(i.toLowerCase()==="content-type"){s.contentType=s.headers[i]||"";}}});jQuery._evalUrl=function(url,options,doc){return jQuery.ajax({url:url,// Make this explicit, since user can override this through ajaxSetup (trac-11264)
2051type:"GET",dataType:"script",cache:true,async:false,global:false,// Only evaluate the response if it is successful (gh-4126)
2052// dataFilter is not invoked for failure responses, so using it instead
2053// of the default converter is kludgy but it works.
2054converters:{"text script":function textScript(){}},dataFilter:function dataFilter(response){jQuery.globalEval(response,options,doc);}});};jQuery.fn.extend({wrapAll:function wrapAll(html){var wrap;if(this[0]){if(isFunction(html)){html=html.call(this[0]);}// The elements to wrap the target around
2055wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0]);}wrap.map(function(){var elem=this;while(elem.firstElementChild){elem=elem.firstElementChild;}return elem;}).append(this);}return this;},wrapInner:function wrapInner(html){if(isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i));});}return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html);}else{self.append(html);}});},wrap:function wrap(html){var htmlIsFunction=isFunction(html);return this.each(function(i){jQuery(this).wrapAll(htmlIsFunction?html.call(this,i):html);});},unwrap:function unwrap(selector){this.parent(selector).not("body").each(function(){jQuery(this).replaceWith(this.childNodes);});return this;}});jQuery.expr.pseudos.hidden=function(elem){return!jQuery.expr.pseudos.visible(elem);};jQuery.expr.pseudos.visible=function(elem){return!!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length);};jQuery.ajaxSettings.xhr=function(){try{return new window.XMLHttpRequest();}catch(e){}};var xhrSuccessStatus={// File protocol always yields status code 0, assume 200
20560:200,// Support: IE <=9 only
2057// trac-1450: sometimes IE returns 1223 when it should be 204
20581223:204},xhrSupported=jQuery.ajaxSettings.xhr();support.cors=!!xhrSupported&&"withCredentials"in xhrSupported;support.ajax=xhrSupported=!!xhrSupported;jQuery.ajaxTransport(function(options){var _callback,errorCallback;// Cross domain only allowed if supported through XMLHttpRequest
2059if(support.cors||xhrSupported&&!options.crossDomain){return{send:function send(headers,complete){var i,xhr=options.xhr();xhr.open(options.type,options.url,options.async,options.username,options.password);// Apply custom fields if provided
2060if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i];}}// Override mime type if needed
2061if(options.mimeType&&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType);}// X-Requested-With header
2062// For cross-domain requests, seeing as conditions for a preflight are
2063// akin to a jigsaw puzzle, we simply never set it to be sure.
2064// (it can always be set on a per-request basis or even using ajaxSetup)
2065// For same-domain requests, won't change header if already provided.
2066if(!options.crossDomain&&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest";}// Set headers
2067for(i in headers){xhr.setRequestHeader(i,headers[i]);}// Callback
2068_callback=function callback(type){return function(){if(_callback){_callback=errorCallback=xhr.onload=xhr.onerror=xhr.onabort=xhr.ontimeout=xhr.onreadystatechange=null;if(type==="abort"){xhr.abort();}else if(type==="error"){// Support: IE <=9 only
2069// On a manual native abort, IE9 throws
2070// errors on any property access that is not readyState
2071if(typeof xhr.status!=="number"){complete(0,"error");}else{complete(// File: protocol always yields status 0; see trac-8605, trac-14207
2072xhr.status,xhr.statusText);}}else{complete(xhrSuccessStatus[xhr.status]||xhr.status,xhr.statusText,// Support: IE <=9 only
2073// IE9 has no XHR2 but throws on binary (trac-11426)
2074// For XHR2 non-text, let the caller handle it (gh-2498)
2075(xhr.responseType||"text")!=="text"||typeof xhr.responseText!=="string"?{binary:xhr.response}:{text:xhr.responseText},xhr.getAllResponseHeaders());}}};};// Listen to events
2076xhr.onload=_callback();errorCallback=xhr.onerror=xhr.ontimeout=_callback("error");// Support: IE 9 only
2077// Use onreadystatechange to replace onabort
2078// to handle uncaught aborts
2079if(xhr.onabort!==undefined){xhr.onabort=errorCallback;}else{xhr.onreadystatechange=function(){// Check readyState before timeout as it changes
2080if(xhr.readyState===4){// Allow onerror to be called first,
2081// but that will not handle a native abort
2082// Also, save errorCallback to a variable
2083// as xhr.onerror cannot be accessed
2084window.setTimeout(function(){if(_callback){errorCallback();}});}};}// Create the abort callback
2085_callback=_callback("abort");try{// Do send the request (this may raise an exception)
2086xhr.send(options.hasContent&&options.data||null);}catch(e){// trac-14683: Only rethrow if this hasn't been notified as an error yet
2087if(_callback){throw e;}}},abort:function abort(){if(_callback){_callback();}}};}});// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
2088jQuery.ajaxPrefilter(function(s){if(s.crossDomain){s.contents.script=false;}});// Install script dataType
2089jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, "+"application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function textScript(text){jQuery.globalEval(text);return text;}}});// Handle cache's special case and crossDomain
2090jQuery.ajaxPrefilter("script",function(s){if(s.cache===undefined){s.cache=false;}if(s.crossDomain){s.type="GET";}});// Bind script tag hack transport
2091jQuery.ajaxTransport("script",function(s){// This transport only deals with cross domain or forced-by-attrs requests
2092if(s.crossDomain||s.scriptAttrs){var script,_callback2;return{send:function send(_,complete){script=jQuery("<script>").attr(s.scriptAttrs||{}).prop({charset:s.scriptCharset,src:s.url}).on("load error",_callback2=function callback(evt){script.remove();_callback2=null;if(evt){complete(evt.type==="error"?404:200,evt.type);}});// Use native DOM manipulation to avoid our domManip AJAX trickery
2093document.head.appendChild(script[0]);},abort:function abort(){if(_callback2){_callback2();}}};}});var oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;// Default jsonp settings
2094jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function jsonpCallback(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce.guid++;this[callback]=true;return callback;}});// Detect, normalize options and install callbacks for jsonp requests
2095jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=s.jsonp!==false&&(rjsonp.test(s.url)?"url":typeof s.data==="string"&&(s.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&rjsonp.test(s.data)&&"data");// Handle iff the expected data type is "jsonp" or we have a parameter to set
2096if(jsonProp||s.dataTypes[0]==="jsonp"){// Get callback name, remembering preexisting value associated with it
2097callbackName=s.jsonpCallback=isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback;// Insert callback into url or form data
2098if(jsonProp){s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName);}else if(s.jsonp!==false){s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName;}// Use data converter to retrieve json after script execution
2099s.converters["script json"]=function(){if(!responseContainer){jQuery.error(callbackName+" was not called");}return responseContainer[0];};// Force json dataType
2100s.dataTypes[0]="json";// Install callback
2101overwritten=window[callbackName];window[callbackName]=function(){responseContainer=arguments;};// Clean-up function (fires after converters)
2102jqXHR.always(function(){// If previous value didn't exist - remove it
2103if(overwritten===undefined){jQuery(window).removeProp(callbackName);// Otherwise restore preexisting value
2104}else{window[callbackName]=overwritten;}// Save back as free
2105if(s[callbackName]){// Make sure that re-using the options doesn't screw things around
2106s.jsonpCallback=originalSettings.jsonpCallback;// Save the callback name for future use
2107oldCallbacks.push(callbackName);}// Call if it was a function and we have a response
2108if(responseContainer&&isFunction(overwritten)){overwritten(responseContainer[0]);}responseContainer=overwritten=undefined;});// Delegate to script
2109return"script";}});// Support: Safari 8 only
2110// In Safari 8 documents created via document.implementation.createHTMLDocument
2111// collapse sibling forms: the second one becomes a child of the first one.
2112// Because of that, this security measure has to be disabled in Safari 8.
2113// https://bugs.webkit.org/show_bug.cgi?id=137337
2114support.createHTMLDocument=function(){var body=document.implementation.createHTMLDocument("").body;body.innerHTML="<form></form><form></form>";return body.childNodes.length===2;}();// Argument "data" should be string of html
2115// context (optional): If specified, the fragment will be created in this context,
2116// defaults to document
2117// keepScripts (optional): If true, will include scripts passed in the html string
2118jQuery.parseHTML=function(data,context,keepScripts){if(typeof data!=="str
vendor: 5,310 bytes, lines 2118-2157
2118ing"){return[];}if(typeof context==="boolean"){keepScripts=context;context=false;}var base,parsed,scripts;if(!context){// Stop scripts or inline event handlers from being executed immediately
2119// by using document.implementation
2120if(support.createHTMLDocument){context=document.implementation.createHTMLDocument("");// Set the base href for the created document
2121// so any parsed elements with URLs
2122// are based on the document's URL (gh-2965)
2123base=context.createElement("base");base.href=document.location.href;context.head.appendChild(base);}else{context=document;}}parsed=rsingleTag.exec(data);scripts=!keepScripts&&[];// Single tag
2124if(parsed){return[context.createElement(parsed[1])];}parsed=buildFragment([data],context,scripts);if(scripts&&scripts.length){jQuery(scripts).remove();}return jQuery.merge([],parsed.childNodes);};/**
2125 * Load a url into a page
2126 */jQuery.fn.load=function(url,params,callback){var selector,type,response,self=this,off=url.indexOf(" ");if(off>-1){selector=stripAndCollapse(url.slice(off));url=url.slice(0,off);}// If it's a function
2127if(isFunction(params)){// We assume that it's the callback
2128callback=params;params=undefined;// Otherwise, build a param string
2129}else if(params&&(typeof params==='undefined'?'undefined':_typeof(params))==="object"){type="POST";}// If we have elements to modify, make the request
2130if(self.length>0){jQuery.ajax({url:url,// If "type" variable is undefined, then "GET" method will be used.
2131// Make value of this field explicit since
2132// user can override it through ajaxSetup method
2133type:type||"GET",dataType:"html",data:params}).done(function(responseText){// Save response for use in complete callback
2134response=arguments;self.html(selector?// If a selector was specified, locate the right elements in a dummy div
2135// Exclude scripts to avoid IE 'Permission Denied' errors
2136jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):// Otherwise use the full result
2137responseText);// If the request succeeds, this function gets "data", "status", "jqXHR"
2138// but they are ignored because response was set above.
2139// If it fails, this function gets "jqXHR", "status", "error"
2140}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(this,response||[jqXHR.responseText,status,jqXHR]);});});}return this;};jQuery.expr.pseudos.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem;}).length;};jQuery.offset={setOffset:function setOffset(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,calculatePosition,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};// Set position first, in-case top/left are set even on static elem
2141if(position==="static"){elem.style.position="relative";}curOffset=curElem.offset();curCSSTop=jQuery.css(elem,"top");curCSSLeft=jQuery.css(elem,"left");calculatePosition=(position==="absolute"||position==="fixed")&&(curCSSTop+curCSSLeft).indexOf("auto")>-1;// Need to be able to calculate position if either
2142// top or left is auto and position is either absolute or fixed
2143if(calculatePosition){curPosition=curElem.position();curTop=curPosition.top;curLeft=curPosition.left;}else{curTop=parseFloat(curCSSTop)||0;curLeft=parseFloat(curCSSLeft)||0;}if(isFunction(options)){// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
2144options=options.call(elem,i,jQuery.extend({},curOffset));}if(options.top!=null){props.top=options.top-curOffset.top+curTop;}if(options.left!=null){props.left=options.left-curOffset.left+curLeft;}if("using"in options){options.using.call(elem,props);}else{curElem.css(props);}}};jQuery.fn.extend({// offset() relates an element's border box to the document origin
2145offset:function offset(options){// Preserve chaining for setter
2146if(arguments.length){return options===undefined?this:this.each(function(i){jQuery.offset.setOffset(this,options,i);});}var rect,win,elem=this[0];if(!elem){return;}// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
2147// Support: IE <=11 only
2148// Running getBoundingClientRect on a
2149// disconnected node in IE throws an error
2150if(!elem.getClientRects().length){return{top:0,left:0};}// Get document-relative position by adding viewport scroll to viewport-relative gBCR
2151rect=elem.getBoundingClientRect();win=elem.ownerDocument.defaultView;return{top:rect.top+win.pageYOffset,left:rect.left+win.pageXOffset};},// position() relates an element's margin box to its offset parent's padding box
2152// This corresponds to the behavior of CSS absolute positioning
2153position:function position(){if(!this[0]){return;}var offsetParent,offset,doc,elem=this[0],parentOffset={top:0,left:0};// position:fixed elements are offset from the viewport, which itself always has zero offset
2154if(jQuery.css(elem,"position")==="fixed"){// Assume position:fixed implies availability of getBoundingClientRect
2155offset=elem.getBoundingClientRect();}else{offset=this.offset();// Account for the *real* offset parent, which can be the document or its root element
2156// when a statically positioned element is identified
2157doc=elem.ownerDocument;offsetParent=elem.offsetParent||doc.documentElement;while(offsetParent&&(offsetParent===doc.body||offsetParent===doc.documentElement)&&jQuery.css(offsetParent,"position")==="static"){offsetParent=offsetParent.parentNode;}
vendor: 4,620 bytes, lines 2157-2187
2157if(offsetParent&&offsetParent!==elem&&offsetParent.nodeType===1){// Incorporate borders into its offset, since they are outside its content origin
2158parentOffset=jQuery(offsetParent).offset();parentOffset.top+=jQuery.css(offsetParent,"borderTopWidth",true);parentOffset.left+=jQuery.css(offsetParent,"borderLeftWidth",true);}}// Subtract parent offsets and element margins
2159return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",true),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",true)};},// This method will return documentElement in the following cases:
2160// 1) For the element inside the iframe without offsetParent, this method will return
2161//    documentElement of the parent window
2162// 2) For the hidden or detached element
2163// 3) For body or html element, i.e. in case of the html node - it will return itself
2164//
2165// but those exceptions were never presented as a real life use-cases
2166// and might be considered as more preferable results.
2167//
2168// This logic, however, is not guaranteed and can change at any point in the future
2169offsetParent:function offsetParent(){return this.map(function(){var offsetParent=this.offsetParent;while(offsetParent&&jQuery.css(offsetParent,"position")==="static"){offsetParent=offsetParent.offsetParent;}return offsetParent||documentElement;});}});// Create scrollLeft and scrollTop methods
2170jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top="pageYOffset"===prop;jQuery.fn[method]=function(val){return access(this,function(elem,method,val){// Coalesce documents and windows
2171var win;if(isWindow(elem)){win=elem;}else if(elem.nodeType===9){win=elem.defaultView;}if(val===undefined){return win?win[prop]:elem[method];}if(win){win.scrollTo(!top?val:win.pageXOffset,top?val:win.pageYOffset);}else{elem[method]=val;}},method,val,arguments.length);};});// Support: Safari <=7 - 9.1, Chrome <=37 - 49
2172// Add the top/left cssHooks using jQuery.fn.position
2173// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
2174// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
2175// getComputedStyle returns percent when specified for top/left/bottom/right;
2176// rather than make the css module depend on the offset module, just check for it here
2177jQuery.each(["top","left"],function(_i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed){computed=curCSS(elem,prop);// If curCSS returns percentage, fallback to offset
2178return rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed;}});});// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
2179jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){// Margin is only for outerHeight, outerWidth
2180jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||typeof margin!=="boolean"),extra=defaultExtra||(margin===true||value===true?"margin":"border");return access(this,function(elem,type,value){var doc;if(isWindow(elem)){// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
2181return funcName.indexOf("outer")===0?elem["inner"+name]:elem.document.documentElement["client"+name];}// Get document width or height
2182if(elem.nodeType===9){doc=elem.documentElement;// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
2183// whichever is greatest
2184return Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name]);}return value===undefined?// Get width or height on the element, requesting but not forcing parseFloat
2185jQuery.css(elem,type,extra):// Set width or height on the element
2186jQuery.style(elem,type,value,extra);},type,chainable?margin:undefined,chainable);};});});jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(_i,type){jQuery.fn[type]=function(fn){return this.on(type,fn);};});jQuery.fn.extend({bind:function bind(types,data,fn){return this.on(types,null,data,fn);},unbind:function unbind(types,fn){return this.off(types,null,fn);},delegate:function delegate(selector,types,data,fn){return this.on(types,selector,data,fn);},undelegate:function undelegate(selector,types,fn){// ( namespace ) or ( selector, types [, fn] )
2187return arguments.length===1?this.off(selector,"**"):this.off(types,selector||"**",fn);},hover:function hover(fnOver,fnOut){return this.on("mouseenter",fnOver).on("mouseleave",fnOut||fnOver);}});jQuery.each(("blur focus focusin focusout resize scroll click dblclick "+"mou
vendor: 4,300 bytes, lines 2187-2241
2187sedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+"change select submit keydown keypress keyup contextmenu").split(" "),function(_i,name){// Handle event binding
2188jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name);};});// Support: Android <=4.0 only
2189// Make sure we trim BOM and NBSP
2190// Require that the "whitespace run" starts from a non-whitespace
2191// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
2192var rtrim=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;// Bind a function to a context, optionally partially applying any
2193// arguments.
2194// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
2195// However, it is not slated for removal any time soon
2196jQuery.proxy=function(fn,context){var tmp,args,proxy;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp;}// Quick check to determine if target is callable, in the spec
2197// this throws a TypeError, but we will just return undefined.
2198if(!isFunction(fn)){return undefined;}// Simulated bind
2199args=_slice.call(arguments,2);proxy=function proxy(){return fn.apply(context||this,args.concat(_slice.call(arguments)));};// Set the guid of unique handler to the same of original handler, so it can be removed
2200proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy;};jQuery.holdReady=function(hold){if(hold){jQuery.readyWait++;}else{jQuery.ready(true);}};jQuery.isArray=Array.isArray;jQuery.parseJSON=JSON.parse;jQuery.nodeName=nodeName;jQuery.isFunction=isFunction;jQuery.isWindow=isWindow;jQuery.camelCase=camelCase;jQuery.type=toType;jQuery.now=Date.now;jQuery.isNumeric=function(obj){// As of jQuery 3.0, isNumeric is limited to
2201// strings and numbers (primitives or objects)
2202// that can be coerced to finite numbers (gh-2662)
2203var type=jQuery.type(obj);return(type==="number"||type==="string")&&// parseFloat NaNs numeric-cast false positives ("")
2204// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
2205// subtraction forces infinities to NaN
2206!isNaN(obj-parseFloat(obj));};jQuery.trim=function(text){return text==null?"":(text+"").replace(rtrim,"$1");};// Register as a named AMD module, since jQuery can be concatenated with other
2207// files that may use define, but not via a proper concatenation script that
2208// understands anonymous AMD modules. A named AMD is safest and most robust
2209// way to register. Lowercase jquery is used because AMD module names are
2210// derived from file names, and jQuery is normally delivered in a lowercase
2211// file name. Do this after creating the global so that if an AMD module wants
2212// to call noConflict to hide this version of jQuery, it will work.
2213// Note that for maximum portability, libraries that are not jQuery should
2214// declare themselves as anonymous modules, and avoid setting a global if an
2215// AMD loader is present. jQuery is a special case. For more information, see
2216// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
2217if(typeof define==="function"&&define.amd){define("jquery",[],function(){return jQuery;});}var// Map over jQuery in case of overwrite
2218_jQuery=window.jQuery,// Map over the $ in case of overwrite
2219_$=window.$;jQuery.noConflict=function(deep){if(window.$===jQuery){window.$=_$;}if(deep&&window.jQuery===jQuery){window.jQuery=_jQuery;}return jQuery;};// Expose jQuery and $ identifiers, even in AMD
2220// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
2221// and CommonJS for browser emulators (trac-13566)
2222if(typeof noGlobal==="undefined"){window.jQuery=window.$=jQuery;}return jQuery;});/*!
2223 * jQuery & Zepto Lazy - v1.7.10
2224 * http://jquery.eisbehr.de/lazy/
2225 *
2226 * Copyright 2012 - 2018, Daniel 'Eisbehr' Kern
2227 *
2228 * Dual licensed under the MIT and GPL-2.0 licenses:
2229 * http://www.opensource.org/licenses/mit-license.php
2230 * http://www.gnu.org/licenses/gpl-2.0.html
2231 *
2232 * $("img.lazy").lazy();
2233 */;(function(window,undefined){"use strict";// noinspection JSUnresolvedVariable
2234/**
2235     * library instance - here and not in construct to be shorter in minimization
2236     * @return void
2237     */var $=window.jQuery||window.Zepto,/**
2238     * unique plugin instance id counter
2239     * @type {number}
2240     */lazyInstanceId=0,/**
2241     * helper to register window load for jQuery 3
vendor: 18,918 bytes, lines 2242-2527
2242     * @type {boolean}
2243     */windowLoaded=false;/**
2244     * make lazy available to jquery - and make it a bit more case-insensitive :)
2245     * @access public
2246     * @type {function}
2247     * @param {object} settings
2248     * @return {LazyPlugin}
2249     */$.fn.Lazy=$.fn.lazy=function(settings){return new LazyPlugin(this,settings);};/**
2250     * helper to add plugins to lazy prototype configuration
2251     * @access public
2252     * @type {function}
2253     * @param {string|Array} names
2254     * @param {string|Array|function} [elements]
2255     * @param {function} loader
2256     * @return void
2257     */$.Lazy=$.lazy=function(names,elements,loader){// make second parameter optional
2258if($.isFunction(elements)){loader=elements;elements=[];}// exit here if parameter is not a callable function
2259if(!$.isFunction(loader)){return;}// make parameters an array of names to be sure
2260names=$.isArray(names)?names:[names];elements=$.isArray(elements)?elements:[elements];var config=LazyPlugin.prototype.config,forced=config._f||(config._f={});// add the loader plugin for every name
2261for(var i=0,l=names.length;i<l;i++){if(config[names[i]]===undefined||$.isFunction(config[names[i]])){config[names[i]]=loader;}}// add forced elements loader
2262for(var c=0,a=elements.length;c<a;c++){forced[elements[c]]=names[0];}};/**
2263     * contains all logic and the whole element handling
2264     * is packed in a private function outside class to reduce memory usage, because it will not be created on every plugin instance
2265     * @access private
2266     * @type {function}
2267     * @param {LazyPlugin} instance
2268     * @param {object} config
2269     * @param {object|Array} items
2270     * @param {object} events
2271     * @param {string} namespace
2272     * @return void
2273     */function _executeLazy(instance,config,items,events,namespace){/**
2274         * a helper to trigger the 'onFinishedAll' callback after all other events
2275         * @access private
2276         * @type {number}
2277         */var _awaitingAfterLoad=0,/**
2278         * visible content width
2279         * @access private
2280         * @type {number}
2281         */_actualWidth=-1,/**
2282         * visible content height
2283         * @access private
2284         * @type {number}
2285         */_actualHeight=-1,/**
2286         * determine possibly detected high pixel density
2287         * @access private
2288         * @type {boolean}
2289         */_isRetinaDisplay=false,/**
2290         * dictionary entry for better minimization
2291         * @access private
2292         * @type {string}
2293         */_afterLoad='afterLoad',/**
2294         * dictionary entry for better minimization
2295         * @access private
2296         * @type {string}
2297         */_load='load',/**
2298         * dictionary entry for better minimization
2299         * @access private
2300         * @type {string}
2301         */_error='error',/**
2302         * dictionary entry for better minimization
2303         * @access private
2304         * @type {string}
2305         */_img='img',/**
2306         * dictionary entry for better minimization
2307         * @access private
2308         * @type {string}
2309         */_src='src',/**
2310         * dictionary entry for better minimization
2311         * @access private
2312         * @type {string}
2313         */_srcset='srcset',/**
2314         * dictionary entry for better minimization
2315         * @access private
2316         * @type {string}
2317         */_sizes='sizes',/**
2318         * dictionary entry for better minimization
2319         * @access private
2320         * @type {string}
2321         */_backgroundImage='background-image';/**
2322         * initialize plugin
2323         * bind loading to events or set delay time to load all items at once
2324         * @access private
2325         * @return void
2326         */function _initialize(){// detect actual device pixel ratio
2327// noinspection JSUnresolvedVariable
2328_isRetinaDisplay=window.devicePixelRatio>1;// prepare all initial items
2329items=_prepareItems(items);// if delay time is set load all items at once after delay time
2330if(config.delay>=0){setTimeout(function(){_lazyLoadItems(true);},config.delay);}// if no delay is set or combine usage is active bind events
2331if(config.delay<0||config.combined){// create unique event function
2332events.e=_throttle(config.throttle,function(event){// reset detected window size on resize event
2333if(event.type==='resize'){_actualWidth=_actualHeight=-1;}// execute 'lazy magic'
2334_lazyLoadItems(event.all);});// create function to add new items to instance
2335events.a=function(additionalItems){additionalItems=_prepareItems(additionalItems);items.push.apply(items,additionalItems);};// create function to get all instance items left
2336events.g=function(){// filter loaded items before return in case internal filter was not running until now
2337return items=$(items).filter(function(){return!$(this).data(config.loadedName);});};// create function to force loading elements
2338events.f=function(forcedItems){for(var i=0;i<forcedItems.length;i++){// only handle item if available in current instance
2339// use a compare function, because Zepto can't handle object parameter for filter
2340// var item = items.filter(forcedItems[i]);
2341/* jshint loopfunc: true */var item=items.filter(function(){return this===forcedItems[i];});if(item.length){_lazyLoadItems(false,item);}}};// load initial items
2342_lazyLoadItems();// bind lazy load functions to scroll and resize event
2343// noinspection JSUnresolvedVariable
2344$(config.appendScroll).on('scroll.'+namespace+' resize.'+namespace,events.e);}}/**
2345         * prepare items before handle them
2346         * @access private
2347         * @param {Array|object|jQuery} items
2348         * @return {Array|object|jQuery}
2349         */function _prepareItems(items){// fetch used configurations before loops
2350var defaultImage=config.defaultImage,placeholder=config.placeholder,imageBase=config.imageBase,srcsetAttribute=config.srcsetAttribute,loaderAttribute=config.loaderAttribute,forcedTags=config._f||{};// filter items and only add those who not handled yet and got needed attributes available
2351items=$(items).filter(function(){var element=$(this),tag=_getElementTagName(this);return!element.data(config.handledName)&&(element.attr(config.attribute)||element.attr(srcsetAttribute)||element.attr(loaderAttribute)||forcedTags[tag]!==undefined);})// append plugin instance to all elements
2352.data('plugin_'+config.name,instance);for(var i=0,l=items.length;i<l;i++){var element=$(items[i]),tag=_getElementTagName(items[i]),elementImageBase=element.attr(config.imageBaseAttribute)||imageBase;// generate and update source set if an image base is set
2353if(tag===_img&&elementImageBase&&element.attr(srcsetAttribute)){element.attr(srcsetAttribute,_getCorrectedSrcSet(element.attr(srcsetAttribute),elementImageBase));}// add loader to forced element types
2354if(forcedTags[tag]!==undefined&&!element.attr(loaderAttribute)){element.attr(loaderAttribute,forcedTags[tag]);}// set default image on every element without source
2355if(tag===_img&&defaultImage&&!element.attr(_src)){element.attr(_src,defaultImage);}// set placeholder on every element without background image
2356else if(tag!==_img&&placeholder&&(!element.css(_backgroundImage)||element.css(_backgroundImage)==='none')){element.css(_backgroundImage,"url('"+placeholder+"')");}}return items;}/**
2357         * the 'lazy magic' - check all items
2358         * @access private
2359         * @param {boolean} [allItems]
2360         * @param {object} [forced]
2361         * @return void
2362         */function _lazyLoadItems(allItems,forced){// skip if no items where left
2363if(!items.length){// destroy instance if option is enabled
2364if(config.autoDestroy){// noinspection JSUnresolvedFunction
2365instance.destroy();}return;}var elements=forced||items,loadTriggered=false,imageBase=config.imageBase||'',srcsetAttribute=config.srcsetAttribute,handledName=config.handledName;// loop all available items
2366for(var i=0;i<elements.length;i++){// item is at least in loadable area
2367if(allItems||forced||_isInLoadableArea(elements[i])){var element=$(elements[i]),tag=_getElementTagName(elements[i]),attribute=element.attr(config.attribute),elementImageBase=element.attr(config.imageBaseAttribute)||imageBase,customLoader=element.attr(config.loaderAttribute);// is not already handled 
2368if(!element.data(handledName)&&(// and is visible or visibility doesn't matter
2369!config.visibleOnly||element.is(':visible'))&&(// and image source or source set attribute is available
2370(attribute||element.attr(srcsetAttribute))&&(// and is image tag where attribute is not equal source or source set
2371tag===_img&&(elementImageBase+attribute!==element.attr(_src)||element.attr(srcsetAttribute)!==element.attr(_srcset))||// or is non image tag where attribute is not equal background
2372tag!==_img&&elementImageBase+attribute!==element.css(_backgroundImage))||// or custom loader is available
2373customLoader)){// mark element always as handled as this point to prevent double handling
2374loadTriggered=true;element.data(handledName,true);// load item
2375_handleItem(element,tag,elementImageBase,customLoader);}}}// when something was loaded remove them from remaining items
2376if(loadTriggered){items=$(items).filter(function(){return!$(this).data(handledName);});}}/**
2377         * load the given element the lazy way
2378         * @access private
2379         * @param {object} element
2380         * @param {string} tag
2381         * @param {string} imageBase
2382         * @param {function} [customLoader]
2383         * @return void
2384         */function _handleItem(element,tag,imageBase,customLoader){// increment count of items waiting for after load
2385++_awaitingAfterLoad;// extended error callback for correct 'onFinishedAll' handling
2386var _errorCallback=function errorCallback(){_triggerCallback('onError',element);_reduceAwaiting();// prevent further callback calls
2387_errorCallback=$.noop;};// trigger function before loading image
2388_triggerCallback('beforeLoad',element);// fetch all double used data here for better code minimization
2389var srcAttribute=config.attribute,srcsetAttribute=config.srcsetAttribute,sizesAttribute=config.sizesAttribute,retinaAttribute=config.retinaAttribute,removeAttribute=config.removeAttribute,loadedName=config.loadedName,elementRetina=element.attr(retinaAttribute);// handle custom loader
2390if(customLoader){// on load callback
2391var _loadCallback=function loadCallback(){// remove attribute from element
2392if(removeAttribute){element.removeAttr(config.loaderAttribute);}// mark element as loaded
2393element.data(loadedName,true);// call after load event
2394_triggerCallback(_afterLoad,element);// remove item from waiting queue and possibly trigger finished event
2395// it's needed to be asynchronous to run after filter was in _lazyLoadItems
2396setTimeout(_reduceAwaiting,1);// prevent further callback calls
2397_loadCallback=$.noop;};// bind error event to trigger callback and reduce waiting amount
2398element.off(_error).one(_error,_errorCallback)// bind after load callback to element
2399.one(_load,_loadCallback);// trigger custom loader and handle response
2400if(!_triggerCallback(customLoader,element,function(response){if(response){element.off(_load);_loadCallback();}else{element.off(_error);_errorCallback();}})){element.trigger(_error);}}// handle images
2401else{// create image object
2402var imageObj=$(new Image());// bind error event to trigger callback and reduce waiting amount
2403imageObj.one(_error,_errorCallback)// bind after load callback to image
2404.one(_load,function(){// remove element from view
2405element.hide();// set image back to element
2406// do it as single 'attr' calls, to be sure 'src' is set after 'srcset'
2407if(tag===_img){element.attr(_sizes,imageObj.attr(_sizes)).attr(_srcset,imageObj.attr(_srcset)).attr(_src,imageObj.attr(_src));}else{element.css(_backgroundImage,"url('"+imageObj.attr(_src)+"')");}// bring it back with some effect!
2408element[config.effect](config.effectTime);// remove attribute from element
2409if(removeAttribute){element.removeAttr(srcAttribute+' '+srcsetAttribute+' '+retinaAttribute+' '+config.imageBaseAttribute);// only remove 'sizes' attribute, if it was a custom one
2410if(sizesAttribute!==_sizes){element.removeAttr(sizesAttribute);}}// mark element as loaded
2411element.data(loadedName,true);// call after load event
2412_triggerCallback(_afterLoad,element);// cleanup image object
2413imageObj.remove();// remove item from waiting queue and possibly trigger finished event
2414_reduceAwaiting();});// set sources
2415// do it as single 'attr' calls, to be sure 'src' is set after 'srcset'
2416var imageSrc=(_isRetinaDisplay&&elementRetina?elementRetina:element.attr(srcAttribute))||'';imageObj.attr(_sizes,element.attr(sizesAttribute)).attr(_srcset,element.attr(srcsetAttribute)).attr(_src,imageSrc?imageBase+imageSrc:null);// call after load even on cached image
2417imageObj.complete&&imageObj.trigger(_load);// jshint ignore : line
2418}}/**
2419         * check if the given element is inside the current viewport or threshold
2420         * @access private
2421         * @param {object} element
2422         * @return {boolean}
2423         */function _isInLoadableArea(element){var elementBound=element.getBoundingClientRect(),direction=config.scrollDirection,threshold=config.threshold,vertical=// check if element is in loadable area from top
2424_getActualHeight()+threshold>elementBound.top&&// check if element is even in loadable are from bottom
2425-threshold<elementBound.bottom,horizontal=// check if element is in loadable area from left
2426_getActualWidth()+threshold>elementBound.left&&// check if element is even in loadable area from right
2427-threshold<elementBound.right;if(direction==='vertical'){return vertical;}else if(direction==='horizontal'){return horizontal;}return vertical&&horizontal;}/**
2428         * receive the current viewed width of the browser
2429         * @access private
2430         * @return {number}
2431         */function _getActualWidth(){return _actualWidth>=0?_actualWidth:_actualWidth=$(window).width();}/**
2432         * receive the current viewed height of the browser
2433         * @access private
2434         * @return {number}
2435         */function _getActualHeight(){return _actualHeight>=0?_actualHeight:_actualHeight=$(window).height();}/**
2436         * get lowercase tag name of an element
2437         * @access private
2438         * @param {object} element
2439         * @returns {string}
2440         */function _getElementTagName(element){return element.tagName.toLowerCase();}/**
2441         * prepend image base to all srcset entries
2442         * @access private
2443         * @param {string} srcset
2444         * @param {string} imageBase
2445         * @returns {string}
2446         */function _getCorrectedSrcSet(srcset,imageBase){if(imageBase){// trim, remove unnecessary spaces and split entries
2447var entries=srcset.split(',');srcset='';for(var i=0,l=entries.length;i<l;i++){srcset+=imageBase+entries[i].trim()+(i!==l-1?',':'');}}return srcset;}/**
2448         * helper function to throttle down event triggering
2449         * @access private
2450         * @param {number} delay
2451         * @param {function} callback
2452         * @return {function}
2453         */function _throttle(delay,callback){var timeout,lastExecute=0;return function(event,ignoreThrottle){var elapsed=+new Date()-lastExecute;function run(){lastExecute=+new Date();// noinspection JSUnresolvedFunction
2454callback.call(instance,event);}timeout&&clearTimeout(timeout);// jshint ignore : line
2455if(elapsed>delay||!config.enableThrottle||ignoreThrottle){run();}else{timeout=setTimeout(run,delay-elapsed);}};}/**
2456         * reduce count of awaiting elements to 'afterLoad' event and fire 'onFinishedAll' if reached zero
2457         * @access private
2458         * @return void
2459         */function _reduceAwaiting(){--_awaitingAfterLoad;// if no items were left trigger finished event
2460if(!items.length&&!_awaitingAfterLoad){_triggerCallback('onFinishedAll');}}/**
2461         * single implementation to handle callbacks, pass element and set 'this' to current instance
2462         * @access private
2463         * @param {string|function} callback
2464         * @param {object} [element]
2465         * @param {*} [args]
2466         * @return {boolean}
2467         */function _triggerCallback(callback,element,args){if(callback=config[callback]){// jQuery's internal '$(arguments).slice(1)' are causing problems at least on old iPads
2468// below is shorthand of 'Array.prototype.slice.call(arguments, 1)'
2469callback.apply(instance,[].slice.call(arguments,1));return true;}return false;}// if event driven or window is already loaded don't wait for page loading
2470if(config.bind==='event'||windowLoaded){_initialize();}// otherwise load initial items and start lazy after page load
2471else{// noinspection JSUnresolvedVariable
2472$(window).on(_load+'.'+namespace,_initialize);}}/**
2473     * lazy plugin class constructor
2474     * @constructor
2475     * @access private
2476     * @param {object} elements
2477     * @param {object} settings
2478     * @return {object|LazyPlugin}
2479     */function LazyPlugin(elements,settings){/**
2480         * this lazy plugin instance
2481         * @access private
2482         * @type {object|LazyPlugin|LazyPlugin.prototype}
2483         */var _instance=this,/**
2484         * this lazy plugin instance configuration
2485         * @access private
2486         * @type {object}
2487         */_config=$.extend({},_instance.config,settings),/**
2488         * instance generated event executed on container scroll or resize
2489         * packed in an object to be referenceable and short named because properties will not be minified
2490         * @access private
2491         * @type {object}
2492         */_events={},/**
2493         * unique namespace for instance related events
2494         * @access private
2495         * @type {string}
2496         */_namespace=_config.name+'-'+ ++lazyInstanceId;// noinspection JSUndefinedPropertyAssignment
2497/**
2498         * wrapper to get or set an entry from plugin instance configuration
2499         * much smaller on minify as direct access
2500         * @access public
2501         * @type {function}
2502         * @param {string} entryName
2503         * @param {*} [value]
2504         * @return {LazyPlugin|*}
2505         */_instance.config=function(entryName,value){if(value===undefined){return _config[entryName];}_config[entryName]=value;return _instance;};// noinspection JSUndefinedPropertyAssignment
2506/**
2507         * add additional items to current instance
2508         * @access public
2509         * @param {Array|object|string} items
2510         * @return {LazyPlugin}
2511         */_instance.addItems=function(items){_events.a&&_events.a($.type(items)==='string'?$(items):items);// jshint ignore : line
2512return _instance;};// noinspection JSUndefinedPropertyAssignment
2513/**
2514         * get all left items of this instance
2515         * @access public
2516         * @returns {object}
2517         */_instance.getItems=function(){return _events.g?_events.g():{};};// noinspection JSUndefinedPropertyAssignment
2518/**
2519         * force lazy to load all items in loadable area right now
2520         * by default without throttle
2521         * @access public
2522         * @type {function}
2523         * @param {boolean} [useThrottle]
2524         * @return {LazyPlugin}
2525         */_instance.update=function(useThrottle){_events.e&&_events.e({},!useThrottle);// jshint ignore : line
2526return _instance;};// noinspection JSUndefinedPropertyAssignment
2527/**
2528         * force element(s) to load directly, ignoring the viewport
2529         * @access public
2530         * @param {Array|object|string} items
2531         * @return {LazyPlugin}
2532         */_instance.force=function(items){_events.f&&_events.f($.type(items)==='string'?$(items):items);// jshint ignore : line
2533return _instance;};// noinspection JSUndefinedPropertyAssignment
2534/**
2535         * force lazy to load all available items right now
2536         * this call ignores throttling
2537         * @access public
2538         * @type {function}
2539         * @return {LazyPlugin}
2540         */_instance.loadAll=function(){_events.e&&_events.e({all:true},true);// jshint ignore : line
2541return _instance;};// noinspection JSUndefinedPropertyAssignment
2542/**
2543         * destroy this plugin instance
2544         * @access public
2545         * @type {function}
2546         * @return undefined
2547         */_instance.destroy=function(){// unbind instance generated events
2548// noinspection JSUnresolvedFunction, JSUnresolvedVariable
2549$(_config.appendScroll).off('.'+_namespace,_events.e);// noinspection JSUnresolvedVariable
2550$(window).off('.'+_namespace);// clear events
2551_events={};return undefined;};// start using lazy and return all elements to be chainable or instance for further use
2552// noinspection JSUnresolvedVariable
2553_executeLazy(_instance,_config,elements,_events,_namespace);return _config.chainable?elements:_instance;}/**
2554     * settings and configuration data
2555     * @access public
2556     * @type {object|*}
2557     */LazyPlugin.prototype.config={// general
2558name:'lazy',chainable:true,autoDestroy:true,bind:'load',threshold:500,visibleOnly:false,appendScroll:window,scrollDirection:'both',imageBase:null,defaultImage:'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',placeholder:null,delay:-1,combined:false,// attributes
2559attribute:'data-src',srcsetAttribute:'data-srcset',sizesAttribute:'data-sizes',retinaAttribute:'data-retina',loaderAttribute:'data-loader',imageBaseAttribute:'data-imagebase',removeAttribute:true,handledName:'handled',loadedName:'loaded',// effect
2560effect:'show',effectTime:0,// throttle
2561enableThrottle:true,throttle:250,// callbacks
2562beforeLoad:undefined,afterLoad:undefined,onError:undefined,onFinishedAll:undefined};// register window load event globally to prevent not loading elements
2563// since jQuery 3.X ready state is fully async and may be executed after 'load' 
2564$(window).on('load',function(){windowLoaded=true;});})(window);(function(){var MutationObserver,Util,WeakMap,getComputedStyle,getComputedStyleRX,bind=function bind(fn,me){return function(){return fn.apply(me,arguments);};},indexOf=[].indexOf||function(item){for(var i=0,l=this.length;i<l;i++){if(i in this&&this[i]===item)return i;}return-1;};Util=function(){function Util(){}Util.prototype.extend=function(custom,defaults){var key,value;for(key in defaults){value=defaults[key];if(custom[key]==null){custom[key]=value;}}return custom;};Util.prototype.isMobile=function(agent){return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);};Util.prototype.createEvent=function(event,bubble,cancel,detail){var customEvent;if(bubble==null){bubble=false;}if(cancel==null){cancel=false;}if(detail==null){detail=null;}if(document.createEvent!=null){customEvent=document.createEvent('CustomEvent');customEvent.initCustomEvent(event,bubble,cancel,detail);}else if(document.createEventObject!=null){customEvent=document.createEventObject();customEvent.eventType=event;}else{customEvent.eventName=event;}return customEvent;};Util.prototype.emitEvent=function(elem,event){if(elem.dispatchEvent!=null){return elem.dispatchEvent(event);}else if(event in(elem!=null)){return elem[event]();}else if("on"+event in(elem!=null)){return elem["on"+event]();}};Util.prototype.addEvent=function(elem,event,fn){if(elem.addEventListener!=null){return elem.addEventListener(event,fn,false);}else if(elem.attachEvent!=null){return elem.attachEvent("on"+event,fn);}else{return elem[event]=fn;}};Util.prototype.removeEvent=function(elem,event,fn){if(elem.removeEventListener!=null){return elem.removeEventListener(event,fn,false);}else if(elem.detachEvent!=null){return elem.detachEvent("on"+event,fn);}else{return delete elem[event];}};
vendor: 6,396 bytes, line 2564
2564Util.prototype.innerHeight=function(){if('innerHeight'in window){return window.innerHeight;}else{return document.documentElement.clientHeight;}};return Util;}();WeakMap=this.WeakMap||this.MozWeakMap||(WeakMap=function(){function WeakMap(){this.keys=[];this.values=[];}WeakMap.prototype.get=function(key){var i,item,j,len,ref;ref=this.keys;for(i=j=0,len=ref.length;j<len;i=++j){item=ref[i];if(item===key){return this.values[i];}}};WeakMap.prototype.set=function(key,value){var i,item,j,len,ref;ref=this.keys;for(i=j=0,len=ref.length;j<len;i=++j){item=ref[i];if(item===key){this.values[i]=value;return;}}this.keys.push(key);return this.values.push(value);};return WeakMap;}());MutationObserver=this.MutationObserver||this.WebkitMutationObserver||this.MozMutationObserver||(MutationObserver=function(){function MutationObserver(){if(typeof console!=="undefined"&&console!==null){console.warn('MutationObserver is not supported by your browser.');}if(typeof console!=="undefined"&&console!==null){console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');}}MutationObserver.notSupported=true;MutationObserver.prototype.observe=function(){};return MutationObserver;}());getComputedStyle=this.getComputedStyle||function(el,pseudo){this.getPropertyValue=function(prop){var ref;if(prop==='float'){prop='styleFloat';}if(getComputedStyleRX.test(prop)){prop.replace(getComputedStyleRX,function(_,_char){return _char.toUpperCase();});}return((ref=el.currentStyle)!=null?ref[prop]:void 0)||null;};return this;};getComputedStyleRX=/(\-([a-z]){1})/g;this.WOW=function(){WOW.prototype.defaults={boxClass:'wow',animateClass:'animated',offset:0,mobile:true,live:true,callback:null};function WOW(options){if(options==null){options={};}this.scrollCallback=bind(this.scrollCallback,this);this.scrollHandler=bind(this.scrollHandler,this);this.resetAnimation=bind(this.resetAnimation,this);this.start=bind(this.start,this);this.scrolled=true;this.config=this.util().extend(options,this.defaults);this.animationNameCache=new WeakMap();this.wowEvent=this.util().createEvent(this.config.boxClass);}WOW.prototype.init=function(){var ref;this.element=window.document.documentElement;if((ref=document.readyState)==="interactive"||ref==="complete"){this.start();}else{this.util().addEvent(document,'DOMContentLoaded',this.start);}return this.finished=[];};WOW.prototype.start=function(){var box,j,len,ref;this.stopped=false;this.boxes=function(){var j,len,ref,results;ref=this.element.querySelectorAll("."+this.config.boxClass);results=[];for(j=0,len=ref.length;j<len;j++){box=ref[j];results.push(box);}return results;}.call(this);this.all=function(){var j,len,ref,results;ref=this.boxes;results=[];for(j=0,len=ref.length;j<len;j++){box=ref[j];results.push(box);}return results;}.call(this);if(this.boxes.length){if(this.disabled()){this.resetStyle();}else{ref=this.boxes;for(j=0,len=ref.length;j<len;j++){box=ref[j];this.applyStyle(box,true);}}}if(!this.disabled()){this.util().addEvent(window,'scroll',this.scrollHandler);this.util().addEvent(window,'resize',this.scrollHandler);this.interval=setInterval(this.scrollCallback,50);}if(this.config.live){return new MutationObserver(function(_this){return function(records){var k,len1,node,record,results;results=[];for(k=0,len1=records.length;k<len1;k++){record=records[k];results.push(function(){var l,len2,ref1,results1;ref1=record.addedNodes||[];results1=[];for(l=0,len2=ref1.length;l<len2;l++){node=ref1[l];results1.push(this.doSync(node));}return results1;}.call(_this));}return results;};}(this)).observe(document.body,{childList:true,subtree:true});}};WOW.prototype.stop=function(){this.stopped=true;this.util().removeEvent(window,'scroll',this.scrollHandler);this.util().removeEvent(window,'resize',this.scrollHandler);if(this.interval!=null){return clearInterval(this.interval);}};WOW.prototype.sync=function(element){if(MutationObserver.notSupported){return this.doSync(this.element);}};WOW.prototype.doSync=function(element){var box,j,len,ref,results;if(element==null){element=this.element;}if(element.nodeType!==1){return;}element=element.parentNode||element;ref=element.querySelectorAll("."+this.config.boxClass);results=[];for(j=0,len=ref.length;j<len;j++){box=ref[j];if(indexOf.call(this.all,box)<0){this.boxes.push(box);this.all.push(box);if(this.stopped||this.disabled()){this.resetStyle();}else{this.applyStyle(box,true);}results.push(this.scrolled=true);}else{results.push(void 0);}}return results;};WOW.prototype.show=function(box){this.applyStyle(box);box.className=box.className+" "+this.config.animateClass;if(this.config.callback!=null){this.config.callback(box);}this.util().emitEvent(box,this.wowEvent);this.util().addEvent(box,'animationend',this.resetAnimation);this.util().addEvent(box,'oanimationend',this.resetAnimation);this.util().addEvent(box,'webkitAnimationEnd',this.resetAnimation);this.util().addEvent(box,'MSAnimationEnd',this.resetAnimation);return box;};WOW.prototype.applyStyle=function(box,hidden){var delay,duration,iteration;duration=box.getAttribute('data-wow-duration');delay=box.getAttribute('data-wow-delay');iteration=box.getAttribute('data-wow-iteration');return this.animate(function(_this){return function(){return _this.customStyle(box,hidden,duration,delay,iteration);};}(this));};WOW.prototype.animate=function(){if('requestAnimationFrame'in window){return function(callback){return window.requestAnimationFrame(callback);};}else{return function(callback){return callback();};}}();WOW.prototype.resetStyle=function(){var box,j,len,ref,results;ref=this.boxes;results=[];for(j=0,len=ref.length;j<len;j++){box=ref[j];results.push(box.style.visibility='visible');}return results;};WOW.prototype.resetAnimation=function(event){var target;if(event.type.toLowerCase().indexOf('animationend')>=0){target=event.target||event.srcElement;return target.className=target.className.replace(this.config.animateClass,'').trim();}};WOW.prototype.customStyle=function(box,hidden,duration,delay,iteration){if(hidden){this.cacheAnimationName(box);}box.style.visibility=hidden?'hidden':'visible';if(duration){this.vendorSet(box.style,{animationDuration:duration});}if(delay){this.vendorSet(box.style,{animationDelay:delay});}if(iteration){this.vendorSet(box.style,{animationIterationCount:iteration});}this.vendorSet(box.style,{animationName:hidden?'none':this.cachedAnimationName(box)});return box;};
2564WOW.prototype.vendors=["moz","webkit"];WOW.prototype.vendorSet=function(elem,properties){var name,results,value,vendor;results=[];for(name in properties){value=properties[name];elem[""+name]=value;results.push(function(){var j,len,ref,results1;ref=this.vendors;results1=[];for(j=0,len=ref.length;j<len;j++){vendor=ref[j];results1.push(elem[""+vendor+name.charAt(0).toUpperCase()+name.substr(1)]=value);}return results1;}.call(this));}return results;};WOW.prototype.vendorCSS=function(elem,property){var j,len,ref,result,style,vendor;style=getComputedStyle(elem);result=style.getPropertyCSSValue(property);ref=this.vendors;for(j=0,len=ref.length;j<len;j++){vendor=ref[j];result=result||style.getPropertyCSSValue("-"+vendor+"-"+property);}return result;};WOW.prototype.animationName=function(box){var animationName;try{animationName=this.vendorCSS(box,'animation-name').cssText;}catch(_error){animationName=getComputedStyle(box).getPropertyValue('animation-name');}if(animationName==='none'){return'';}else{return animationName;}};WOW.prototype.cacheAnimationName=function(box){return this.animationNameCache.set(box,this.animationName(box));};WOW.prototype.cachedAnimationName=function(box){return this.animationNameCache.get(box);};WOW.prototype.scrollHandler=function(){return this.scrolled=true;};WOW.prototype.scrollCallback=function(){var box;if(this.scrolled){this.scrolled=false;this.boxes=function(){var j,len,ref,results;ref=this.boxes;results=[];for(j=0,len=ref.length;j<len;j++){box=ref[j];if(!box){continue;}if(this.isVisible(box)){this.show(box);continue;}results.push(box);}return results;}.call(this);if(!(this.boxes.length||this.config.live)){return this.stop();}}};WOW.prototype.offsetTop=function(element){var top;while(element.offsetTop===void 0){element=element.parentNode;}top=element.offsetTop;while(element=element.offsetParent){top+=element.offsetTop;}return top;};WOW.prototype.isVisible=function(box){var bottom,offset,top,viewBottom,viewTop;offset=box.getAttribute('data-wow-offset')||this.config.offset;viewTop=window.pageYOffset;viewBottom=viewTop+Math.min(this.element.clientHeight,this.util().innerHeight())-offset;top=this.offsetTop(box);bottom=top+box.clientHeight;return top<=viewBottom&&bottom>=viewTop;};WOW.prototype.util=function(){return this._util!=null?this._util:this._util=new Util();};WOW.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent);};return WOW;}();}).call(this);/*! Magnific Popup - v1.2.0 - 2024-06-08
2565* http://dimsemenov.com/plugins/magnific-popup/
2566* Copyright (c) 2024 Dmytro Semenov; */;(function(factory){if(typeof define==='function'&&define.amd){// AMD. Register as an anonymous module. 
2567define(['jquery'],factory);}else if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object'){// Node/CommonJS 
2568factory(require('jquery'));}else{// Browser globals 
2569factory(window.jQuery||window.Zepto);}})(function($){/*>>core*//**
2570 * 
2571 * Magnific Popup Core JS file
2572 * 
2573 *//**
2574 * Private static constants
2575 */var CLOSE_EVENT='Close',BEFORE_CLOSE_EVENT='BeforeClose',AFTER_CLOSE_EVENT='AfterClose',BEFORE_APPEND_EVENT='BeforeAppend',MARKUP_PARSE_EVENT='MarkupParse',OPEN_EVENT='Open',CHANGE_EVENT='Change',NS='mfp',EVENT_NS='.'+NS,READY_CLASS='mfp-ready',REMOVING_CLASS='mfp-removing',PREVENT_CLOSE_CLASS='mfp-prevent-close';/**
2576 * Private vars 
2577 *//*jshint -W079 */var mfp,// As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'
2578MagnificPopup=function MagnificPopup(){},_isJQ=!!window.jQuery,_prevStatus,_window=$(window),_document,_prevContentType,_wrapClasses,_currPopupType;/**
2579 * Private functions
2580 */var _mfpOn=function _mfpOn(name,f){mfp.ev.on(NS+name+EVENT_NS,f);},_getEl=function _getEl(className,appendTo,html,raw){var el=document.createElement('div');el.className='mfp-'+className;if(html){el.innerHTML=html;}if(!raw){el=$(el);if(appendTo){el.appendTo(appendTo);}}else if(appendTo){appendTo.appendChild(el);}return el;},_mfpTrigger=function _mfpTrigger(e,data){mfp.ev.triggerHandler(NS+e,data);if(mfp.st.callbacks){// converts "mfpEventName" to "eventName" callback and triggers it if it's present
2581e=e.charAt(0).toLowerCase()+e.slice(1);if(mfp.st.callbacks[e]){mfp.st.callbacks[e].apply(mfp,Array.isArray(data)?data:[data]);}}},_getCloseBtn=function _getCloseBtn(type){if(type!==_currPopupType||!mfp.currTemplate.closeBtn){mfp.currTemplate.closeBtn=$(mfp.st.closeMarkup.replace('%title%',mfp.st.tClose));_currPopupType=type;}return mfp.currTemplate.closeBtn;},// Initialize Magnific Popup only when called at least once
2582_checkInstance=function _checkInstance(){if(!$.magnificPopup.instance){/*jshint -W020 */mfp=new MagnificPopup();mfp.init();$.magnificPopup.instance=mfp;}},// CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr
2583supportsTransitions=function supportsTransitions(){var s=document.createElement('p').style,// 's' for style. better to create an element if body yet to exist
2584v=['ms','O','Moz','Webkit'];// 'v' for vendor
2585if(s['transition']!==undefined){return true;}while(v.length){if(v.pop()+'Transition'in s){return true;}}return false;};/**
2586 * Public functions
2587 */MagnificPopup.prototype={constructor:MagnificPopup,/**
2588	 * Initializes Magnific Popup plugin. 
2589	 * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed
vendor: 8,058 bytes, lines 2590-2633
2590	 */init:function init(){var appVersion=navigator.appVersion;mfp.isLowIE=mfp.isIE8=document.all&&!document.addEventListener;mfp.isAndroid=/android/gi.test(appVersion);mfp.isIOS=/iphone|ipad|ipod/gi.test(appVersion);mfp.supportsTransition=supportsTransitions();// We disable fixed positioned lightbox on devices that don't handle it nicely.
2591// If you know a better way of detecting this - let me know.
2592mfp.probablyMobile=mfp.isAndroid||mfp.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent);_document=$(document);mfp.popupsCache={};},/**
2593	 * Opens popup
2594	 * @param  data [description]
2595	 */open:function open(data){var i;if(data.isObj===false){// convert jQuery collection to array to avoid conflicts later
2596mfp.items=data.items.toArray();mfp.index=0;var items=data.items,item;for(i=0;i<items.length;i++){item=items[i];if(item.parsed){item=item.el[0];}if(item===data.el[0]){mfp.index=i;break;}}}else{mfp.items=Array.isArray(data.items)?data.items:[data.items];mfp.index=data.index||0;}// if popup is already opened - we just update the content
2597if(mfp.isOpen){mfp.updateItemHTML();return;}mfp.types=[];_wrapClasses='';if(data.mainEl&&data.mainEl.length){mfp.ev=data.mainEl.eq(0);}else{mfp.ev=_document;}if(data.key){if(!mfp.popupsCache[data.key]){mfp.popupsCache[data.key]={};}mfp.currTemplate=mfp.popupsCache[data.key];}else{mfp.currTemplate={};}mfp.st=$.extend(true,{},$.magnificPopup.defaults,data);mfp.fixedContentPos=mfp.st.fixedContentPos==='auto'?!mfp.probablyMobile:mfp.st.fixedContentPos;if(mfp.st.modal){mfp.st.closeOnContentClick=false;mfp.st.closeOnBgClick=false;mfp.st.showCloseBtn=false;mfp.st.enableEscapeKey=false;}// Building markup
2598// main containers are created only once
2599if(!mfp.bgOverlay){// Dark overlay
2600mfp.bgOverlay=_getEl('bg').on('click'+EVENT_NS,function(){mfp.close();});mfp.wrap=_getEl('wrap').attr('tabindex',-1).on('click'+EVENT_NS,function(e){if(mfp._checkIfClose(e.target)){mfp.close();}});mfp.container=_getEl('container',mfp.wrap);}mfp.contentContainer=_getEl('content');if(mfp.st.preloader){mfp.preloader=_getEl('preloader',mfp.container,mfp.st.tLoading);}// Initializing modules
2601var modules=$.magnificPopup.modules;for(i=0;i<modules.length;i++){var n=modules[i];n=n.charAt(0).toUpperCase()+n.slice(1);mfp['init'+n].call(mfp);}_mfpTrigger('BeforeOpen');if(mfp.st.showCloseBtn){// Close button
2602if(!mfp.st.closeBtnInside){mfp.wrap.append(_getCloseBtn());}else{_mfpOn(MARKUP_PARSE_EVENT,function(e,template,values,item){values.close_replaceWith=_getCloseBtn(item.type);});_wrapClasses+=' mfp-close-btn-in';}}if(mfp.st.alignTop){_wrapClasses+=' mfp-align-top';}if(mfp.fixedContentPos){mfp.wrap.css({overflow:mfp.st.overflowY,overflowX:'hidden',overflowY:mfp.st.overflowY});}else{mfp.wrap.css({top:_window.scrollTop(),position:'absolute'});}if(mfp.st.fixedBgPos===false||mfp.st.fixedBgPos==='auto'&&!mfp.fixedContentPos){mfp.bgOverlay.css({height:_document.height(),position:'absolute'});}if(mfp.st.enableEscapeKey){// Close on ESC key
2603_document.on('keyup'+EVENT_NS,function(e){if(e.keyCode===27){mfp.close();}});}_window.on('resize'+EVENT_NS,function(){mfp.updateSize();});if(!mfp.st.closeOnContentClick){_wrapClasses+=' mfp-auto-cursor';}if(_wrapClasses)mfp.wrap.addClass(_wrapClasses);// this triggers recalculation of layout, so we get it once to not to trigger twice
2604var windowHeight=mfp.wH=_window.height();var windowStyles={};if(mfp.fixedContentPos){if(mfp._hasScrollBar(windowHeight)){var s=mfp._getScrollbarSize();if(s){windowStyles.marginRight=s;}}}if(mfp.fixedContentPos){if(!mfp.isIE7){windowStyles.overflow='hidden';}else{// ie7 double-scroll bug
2605$('body, html').css('overflow','hidden');}}var classesToadd=mfp.st.mainClass;if(mfp.isIE7){classesToadd+=' mfp-ie7';}if(classesToadd){mfp._addClassToMFP(classesToadd);}// add content
2606mfp.updateItemHTML();_mfpTrigger('BuildControls');// remove scrollbar, add margin e.t.c
2607$('html').css(windowStyles);// add everything to DOM
2608mfp.bgOverlay.add(mfp.wrap).prependTo(mfp.st.prependTo||$(document.body));// Save last focused element
2609mfp._lastFocusedEl=document.activeElement;// Wait for next cycle to allow CSS transition
2610setTimeout(function(){if(mfp.content){mfp._addClassToMFP(READY_CLASS);mfp._setFocus();}else{// if content is not defined (not loaded e.t.c) we add class only for BG
2611mfp.bgOverlay.addClass(READY_CLASS);}// Trap the focus in popup
2612_document.on('focusin'+EVENT_NS,mfp._onFocusIn);},16);mfp.isOpen=true;mfp.updateSize(windowHeight);_mfpTrigger(OPEN_EVENT);return data;},/**
2613	 * Closes the popup
2614	 */close:function close(){if(!mfp.isOpen)return;_mfpTrigger(BEFORE_CLOSE_EVENT);mfp.isOpen=false;// for CSS3 animation
2615if(mfp.st.removalDelay&&!mfp.isLowIE&&mfp.supportsTransition){mfp._addClassToMFP(REMOVING_CLASS);setTimeout(function(){mfp._close();},mfp.st.removalDelay);}else{mfp._close();}},/**
2616	 * Helper for close() function
2617	 */_close:function _close(){_mfpTrigger(CLOSE_EVENT);var classesToRemove=REMOVING_CLASS+' '+READY_CLASS+' ';mfp.bgOverlay.detach();mfp.wrap.detach();mfp.container.empty();if(mfp.st.mainClass){classesToRemove+=mfp.st.mainClass+' ';}mfp._removeClassFromMFP(classesToRemove);if(mfp.fixedContentPos){var windowStyles={marginRight:''};if(mfp.isIE7){$('body, html').css('overflow','');}else{windowStyles.overflow='';}$('html').css(windowStyles);}_document.off('keyup'+EVENT_NS+' focusin'+EVENT_NS);mfp.ev.off(EVENT_NS);// clean up DOM elements that aren't removed
2618mfp.wrap.attr('class','mfp-wrap').removeAttr('style');mfp.bgOverlay.attr('class','mfp-bg');mfp.container.attr('class','mfp-container');// remove close button from target element
2619if(mfp.st.showCloseBtn&&(!mfp.st.closeBtnInside||mfp.currTemplate[mfp.currItem.type]===true)){if(mfp.currTemplate.closeBtn)mfp.currTemplate.closeBtn.detach();}if(mfp.st.autoFocusLast&&mfp._lastFocusedEl){$(mfp._lastFocusedEl).trigger('focus');// put tab focus back
2620}mfp.currItem=null;mfp.content=null;mfp.currTemplate=null;mfp.prevHeight=0;_mfpTrigger(AFTER_CLOSE_EVENT);},updateSize:function updateSize(winHeight){if(mfp.isIOS){// fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2
2621var zoomLevel=document.documentElement.clientWidth/window.innerWidth;var height=window.innerHeight*zoomLevel;mfp.wrap.css('height',height);mfp.wH=height;}else{mfp.wH=winHeight||_window.height();}// Fixes #84: popup incorrectly positioned with position:relative on body
2622if(!mfp.fixedContentPos){mfp.wrap.css('height',mfp.wH);}_mfpTrigger('Resize');},/**
2623	 * Set content of popup based on current index
2624	 */updateItemHTML:function updateItemHTML(){var item=mfp.items[mfp.index];// Detach and perform modifications
2625mfp.contentContainer.detach();if(mfp.content)mfp.content.detach();if(!item.parsed){item=mfp.parseEl(mfp.index);}var type=item.type;_mfpTrigger('BeforeChange',[mfp.currItem?mfp.currItem.type:'',type]);// BeforeChange event works like so:
2626// _mfpOn('BeforeChange', function(e, prevType, newType) { });
2627mfp.currItem=item;if(!mfp.currTemplate[type]){var markup=mfp.st[type]?mfp.st[type].markup:false;// allows to modify markup
2628_mfpTrigger('FirstMarkupParse',markup);if(markup){mfp.currTemplate[type]=$(markup);}else{// if there is no markup found we just define that template is parsed
2629mfp.currTemplate[type]=true;}}if(_prevContentType&&_prevContentType!==item.type){mfp.container.removeClass('mfp-'+_prevContentType+'-holder');}var newContent=mfp['get'+type.charAt(0).toUpperCase()+type.slice(1)](item,mfp.currTemplate[type]);mfp.appendContent(newContent,type);item.preloaded=true;_mfpTrigger(CHANGE_EVENT,item);_prevContentType=item.type;// Append container back after its content changed
2630mfp.container.prepend(mfp.contentContainer);_mfpTrigger('AfterChange');},/**
2631	 * Set HTML content of popup
2632	 */appendContent:function appendContent(newContent,type){mfp.content=newContent;if(newContent){if(mfp.st.showCloseBtn&&mfp.st.closeBtnInside&&mfp.currTemplate[type]===true){// if there is no markup, we just append close button element inside
2633if(!mfp.content.find('.mfp-close').length){mfp.content.append(_getCloseBtn());}}
2633else{mfp.content=newContent;}}else{mfp.content='';}_mfpTrigger(BEFORE_APPEND_EVENT);mfp.container.addClass('mfp-'+type+'-holder');mfp.contentContainer.append(mfp.content);},/**
2634	 * Creates Magnific Popup data object based on given data
2635	 * @param  {int} index Index of item to parse
2636	 */parseEl:function parseEl(index){var item=mfp.items[index],type;if(item.tagName){item={el:$(item)};}else{type=item.type;item={data:item,src:item.src};}if(item.el){var types=mfp.types;// check for 'mfp-TYPE' class
2637for(var i=0;i<types.length;i++){if(item.el.hasClass('mfp-'+types[i])){type=types[i];break;}}item.src=item.el.attr('data-mfp-src');if(!item.src){item.src=item.el.attr('href');}}item.type=type||mfp.st.type||'inline';item.index=index;item.parsed=true;mfp.items[index]=item;_mfpTrigger('ElementParse',item);return mfp.items[index];},/**
2638	 * Initializes single popup or a group of popups
2639	 */addGroup:function addGroup(el,options){var eHandler=function eHandler(e){e.mfpEl=this;mfp._openClick(e,el,options);};if(!options){options={};}var eName='click.magnificPopup';options.mainEl=el;if(options.items){options.isObj=true;el.off(eName).on(eName,eHandler);}else{options.isObj=false;if(options.delegate){el.off(eName).on(eName,options.delegate,eHandler);}else{options.items=el;el.off(eName).on(eName,eHandler);}}},_openClick:function _openClick(e,el,options){var midClick=options.midClick!==undefined?options.midClick:$.magnificPopup.defaults.midClick;if(!midClick&&(e.which===2||e.ctrlKey||e.metaKey||e.altKey||e.shiftKey)){return;}var disableOn=options.disableOn!==undefined?options.disableOn:$.magnificPopup.defaults.disableOn;if(disableOn){if(typeof disableOn==="function"){if(!disableOn.call(mfp)){return true;}}else{// else it's number
2640if(_window.width()<disableOn){return true;}}}if(e.type){e.preventDefault();// This will prevent popup from closing if element is inside and popup is already opened
2641if(mfp.isOpen){e.stopPropagation();}}options.el=$(e.mfpEl);if(options.delegate){options.items=el.find(options.delegate);}mfp.open(options);},/**
2642	 * Updates text on preloader
2643	 */updateStatus:function updateStatus(status,text){if(mfp.preloader){if(_prevStatus!==status){mfp.container.removeClass('mfp-s-'+_prevStatus);}if(!text&&status==='loading'){text=mfp.st.tLoading;}var data={status:status,text:text};// allows to modify status
2644_mfpTrigger('UpdateStatus',data);status=data.status;text=data.text;if(mfp.st.allowHTMLInStatusIndicator){mfp.preloader.html(text);}else{mfp.preloader.text(text);}mfp.preloader.find('a').on('click',function(e){e.stopImmediatePropagation();});mfp.container.addClass('mfp-s-'+status);_prevStatus=status;}},/*
2645		"Private" helpers that aren't private at all
2646	 */// Check to close popup or not
2647// "target" is an element that was clicked
2648_checkIfClose:function _checkIfClose(target){if($(target).closest('.'+PREVENT_CLOSE_CLASS).length){return;}var closeOnContent=mfp.st.closeOnContentClick;var closeOnBg=mfp.st.closeOnBgClick;if(closeOnContent&&closeOnBg){return true;}else{// We close the popup if click is on close button or on preloader. Or if there is no content.
2649if(!mfp.content||$(target).closest('.mfp-close').length||mfp.preloader&&target===mfp.preloader[0]){return true;}// if click is outside the content
2650if(target!==mfp.content[0]&&!$.contains(mfp.content[0],target)){if(closeOnBg){// last check, if the clicked element is in DOM, (in case it's removed onclick)
2651if($.contains(document,target)){return true;}}}else if(closeOnContent){return true;}}return false;},_addClassToMFP:function _addClassToMFP(cName){mfp.bgOverlay.addClass(cName);mfp.wrap.addClass(cName);},_removeClassFromMFP:function _removeClassFromMFP(cName){this.bgOverlay.removeClass(cName);mfp.wrap.removeClass(cName);},_hasScrollBar:function _hasScrollBar(winHeight){return(mfp.isIE7?_document.height():document.body.scrollHeight)>(winHeight||_window.height());},_setFocus:function _setFocus(){(mfp.st.focus?mfp.content.find(mfp.st.focus).eq(0):mfp.wrap).trigger('focus');},_onFocusIn:function _onFocusIn(e){if(e.target!==mfp.wrap[0]&&!$.contains(mfp.wrap[0],e.target)){mfp._setFocus();return false;}},_parseMarkup:function _parseMarkup(template,values,item){var arr;if(item.data){values=$.extend(item.data,values);}_mfpTrigger(MARKUP_PARSE_EVENT,[template,values,item]);$.each(values,function(key,value){if(value===undefined||value===false){return true;}arr=key.split('_');
vendor: 18,801 bytes, lines 2651-2699
2651if(arr.length>1){var el=template.find(EVENT_NS+'-'+arr[0]);if(el.length>0){var attr=arr[1];if(attr==='replaceWith'){if(el[0]!==value[0]){el.replaceWith(value);}}else if(attr==='img'){if(el.is('img')){el.attr('src',value);}else{el.replaceWith($('<img>').attr('src',value).attr('class',el.attr('class')));}}else{el.attr(arr[1],value);}}}else{if(mfp.st.allowHTMLInTemplate){template.find(EVENT_NS+'-'+key).html(value);}else{template.find(EVENT_NS+'-'+key).text(value);}}});},_getScrollbarSize:function _getScrollbarSize(){// thx David
2652if(mfp.scrollbarSize===undefined){var scrollDiv=document.createElement("div");scrollDiv.style.cssText='width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';document.body.appendChild(scrollDiv);mfp.scrollbarSize=scrollDiv.offsetWidth-scrollDiv.clientWidth;document.body.removeChild(scrollDiv);}return mfp.scrollbarSize;}};/* MagnificPopup core prototype end *//**
2653 * Public static functions
2654 */$.magnificPopup={instance:null,proto:MagnificPopup.prototype,modules:[],open:function open(options,index){_checkInstance();if(!options){options={};}else{options=$.extend(true,{},options);}options.isObj=true;options.index=index||0;return this.instance.open(options);},close:function close(){return $.magnificPopup.instance&&$.magnificPopup.instance.close();},registerModule:function registerModule(name,module){if(module.options){$.magnificPopup.defaults[name]=module.options;}$.extend(this.proto,module.proto);this.modules.push(name);},defaults:{// Info about options is in docs:
2655// http://dimsemenov.com/plugins/magnific-popup/documentation.html#options
2656disableOn:0,key:null,midClick:false,mainClass:'',preloader:true,focus:'',// CSS selector of input to focus after popup is opened
2657closeOnContentClick:false,closeOnBgClick:true,closeBtnInside:true,showCloseBtn:true,enableEscapeKey:true,modal:false,alignTop:false,removalDelay:0,prependTo:null,fixedContentPos:'auto',fixedBgPos:'auto',overflowY:'auto',closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:'Close (Esc)',tLoading:'Loading...',autoFocusLast:true,allowHTMLInStatusIndicator:false,allowHTMLInTemplate:false}};$.fn.magnificPopup=function(options){_checkInstance();var jqEl=$(this);// We call some API method of first param is a string
2658if(typeof options==="string"){if(options==='open'){var items,itemOpts=_isJQ?jqEl.data('magnificPopup'):jqEl[0].magnificPopup,index=parseInt(arguments[1],10)||0;if(itemOpts.items){items=itemOpts.items[index];}else{items=jqEl;if(itemOpts.delegate){items=items.find(itemOpts.delegate);}items=items.eq(index);}mfp._openClick({mfpEl:items},jqEl,itemOpts);}else{if(mfp.isOpen)mfp[options].apply(mfp,Array.prototype.slice.call(arguments,1));}}else{// clone options obj
2659options=$.extend(true,{},options);/*
2660		 * As Zepto doesn't support .data() method for objects
2661		 * and it works only in normal browsers
2662		 * we assign "options" object directly to the DOM element. FTW!
2663		 */if(_isJQ){jqEl.data('magnificPopup',options);}else{jqEl[0].magnificPopup=options;}mfp.addGroup(jqEl,options);}return jqEl;};/*>>core*//*>>inline*/var INLINE_NS='inline',_hiddenClass,_inlinePlaceholder,_lastInlineElement,_putInlineElementsBack=function _putInlineElementsBack(){if(_lastInlineElement){_inlinePlaceholder.after(_lastInlineElement.addClass(_hiddenClass)).detach();_lastInlineElement=null;}};$.magnificPopup.registerModule(INLINE_NS,{options:{hiddenClass:'hide',// will be appended with `mfp-` prefix
2664markup:'',tNotFound:'Content not found'},proto:{initInline:function initInline(){mfp.types.push(INLINE_NS);_mfpOn(CLOSE_EVENT+'.'+INLINE_NS,function(){_putInlineElementsBack();});},getInline:function getInline(item,template){_putInlineElementsBack();if(item.src){var inlineSt=mfp.st.inline,el=$(item.src);if(el.length){// If target element has parent - we replace it with placeholder and put it back after popup is closed
2665var parent=el[0].parentNode;if(parent&&parent.tagName){if(!_inlinePlaceholder){_hiddenClass=inlineSt.hiddenClass;_inlinePlaceholder=_getEl(_hiddenClass);_hiddenClass='mfp-'+_hiddenClass;}// replace target inline element with placeholder
2666_lastInlineElement=el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);}mfp.updateStatus('ready');}else{mfp.updateStatus('error',inlineSt.tNotFound);el=$('<div>');}item.inlineElement=el;return el;}mfp.updateStatus('ready');mfp._parseMarkup(template,{},item);return template;}}});/*>>inline*//*>>ajax*/var AJAX_NS='ajax',_ajaxCur,_removeAjaxCursor=function _removeAjaxCursor(){if(_ajaxCur){$(document.body).removeClass(_ajaxCur);}},_destroyAjaxRequest=function _destroyAjaxRequest(){_removeAjaxCursor();if(mfp.req){mfp.req.abort();}};$.magnificPopup.registerModule(AJAX_NS,{options:{settings:null,cursor:'mfp-ajax-cur',tError:'The content could not be loaded.'},proto:{initAjax:function initAjax(){mfp.types.push(AJAX_NS);_ajaxCur=mfp.st.ajax.cursor;_mfpOn(CLOSE_EVENT+'.'+AJAX_NS,_destroyAjaxRequest);_mfpOn('BeforeChange.'+AJAX_NS,_destroyAjaxRequest);},getAjax:function getAjax(item){if(_ajaxCur){$(document.body).addClass(_ajaxCur);}mfp.updateStatus('loading');var opts=$.extend({url:item.src,success:function success(data,textStatus,jqXHR){var temp={data:data,xhr:jqXHR};_mfpTrigger('ParseAjax',temp);mfp.appendContent($(temp.data),AJAX_NS);item.finished=true;_removeAjaxCursor();mfp._setFocus();setTimeout(function(){mfp.wrap.addClass(READY_CLASS);},16);mfp.updateStatus('ready');_mfpTrigger('AjaxContentAdded');},error:function error(){_removeAjaxCursor();item.finished=item.loadError=true;mfp.updateStatus('error',mfp.st.ajax.tError.replace('%url%',item.src));}},mfp.st.ajax.settings);mfp.req=$.ajax(opts);return'';}}});/*>>ajax*//*>>image*/var _imgInterval,_getTitle=function _getTitle(item){if(item.data&&item.data.title!==undefined)return item.data.title;var src=mfp.st.image.titleSrc;if(src){if(typeof src==="function"){return src.call(mfp,item);}else if(item.el){return item.el.attr(src)||'';}}return'';};$.magnificPopup.registerModule('image',{options:{markup:'<div class="mfp-figure">'+'<div class="mfp-close"></div>'+'<figure>'+'<div class="mfp-img"></div>'+'<figcaption>'+'<div class="mfp-bottom-bar">'+'<div class="mfp-title"></div>'+'<div class="mfp-counter"></div>'+'</div>'+'</figcaption>'+'</figure>'+'</div>',cursor:'mfp-zoom-out-cur',titleSrc:'title',verticalFit:true,tError:'The image could not be loaded.'},proto:{initImage:function initImage(){var imgSt=mfp.st.image,ns='.image';mfp.types.push('image');_mfpOn(OPEN_EVENT+ns,function(){if(mfp.currItem.type==='image'&&imgSt.cursor){$(document.body).addClass(imgSt.cursor);}});_mfpOn(CLOSE_EVENT+ns,function(){if(imgSt.cursor){$(document.body).removeClass(imgSt.cursor);}_window.off('resize'+EVENT_NS);});_mfpOn('Resize'+ns,mfp.resizeImage);if(mfp.isLowIE){_mfpOn('AfterChange',mfp.resizeImage);}},resizeImage:function resizeImage(){var item=mfp.currItem;if(!item||!item.img)return;if(mfp.st.image.verticalFit){var decr=0;// fix box-sizing in ie7/8
2667if(mfp.isLowIE){decr=parseInt(item.img.css('padding-top'),10)+parseInt(item.img.css('padding-bottom'),10);}item.img.css('max-height',mfp.wH-decr);}},_onImageHasSize:function _onImageHasSize(item){if(item.img){item.hasSize=true;if(_imgInterval){clearInterval(_imgInterval);}item.isCheckingImgSize=false;_mfpTrigger('ImageHasSize',item);if(item.imgHidden){if(mfp.content)mfp.content.removeClass('mfp-loading');item.imgHidden=false;}}},/**
2668		 * Function that loops until the image has size to display elements that rely on it asap
2669		 */findImageSize:function findImageSize(item){var counter=0,img=item.img[0],mfpSetInterval=function mfpSetInterval(delay){if(_imgInterval){clearInterval(_imgInterval);}// decelerating interval that checks for size of an image
2670_imgInterval=setInterval(function(){if(img.naturalWidth>0){mfp._onImageHasSize(item);return;}if(counter>200){clearInterval(_imgInterval);}counter++;if(counter===3){mfpSetInterval(10);}else if(counter===40){mfpSetInterval(50);}else if(counter===100){mfpSetInterval(500);}},delay);};mfpSetInterval(1);},getImage:function getImage(item,template){var guard=0,imgSt=mfp.st.image,// image error handler
2671onLoadError=function onLoadError(){if(item){item.img.off('.mfploader');if(item===mfp.currItem){mfp._onImageHasSize(item);mfp.updateStatus('error',imgSt.tError.replace('%url%',item.src));}item.hasSize=true;item.loaded=true;item.loadError=true;}},// image load complete handler
2672onLoadComplete=function onLoadComplete(){if(item){if(item.img[0].complete){item.img.off('.mfploader');if(item===mfp.currItem){mfp._onImageHasSize(item);mfp.updateStatus('ready');}item.hasSize=true;item.loaded=true;_mfpTrigger('ImageLoadComplete');}else{// if image complete check fails 200 times (20 sec), we assume that there was an error.
2673guard++;if(guard<200){setTimeout(onLoadComplete,100);}else{onLoadError();}}}};var el=template.find('.mfp-img');if(el.length){var img=document.createElement('img');img.className='mfp-img';if(item.el&&item.el.find('img').length){img.alt=item.el.find('img').attr('alt');}item.img=$(img).on('load.mfploader',onLoadComplete).on('error.mfploader',onLoadError);img.src=item.src;// without clone() "error" event is not firing when IMG is replaced by new IMG
2674// TODO: find a way to avoid such cloning
2675if(el.is('img')){item.img=item.img.clone();}img=item.img[0];if(img.naturalWidth>0){item.hasSize=true;}else if(!img.width){item.hasSize=false;}}mfp._parseMarkup(template,{title:_getTitle(item),img_replaceWith:item.img},item);mfp.resizeImage();if(item.hasSize){if(_imgInterval)clearInterval(_imgInterval);if(item.loadError){template.addClass('mfp-loading');mfp.updateStatus('error',imgSt.tError.replace('%url%',item.src));}else{template.removeClass('mfp-loading');mfp.updateStatus('ready');}return template;}mfp.updateStatus('loading');item.loading=true;if(!item.hasSize){item.imgHidden=true;template.addClass('mfp-loading');mfp.findImageSize(item);}return template;}}});/*>>image*//*>>zoom*/var hasMozTransform,getHasMozTransform=function getHasMozTransform(){if(hasMozTransform===undefined){hasMozTransform=document.createElement('p').style.MozTransform!==undefined;}return hasMozTransform;};$.magnificPopup.registerModule('zoom',{options:{enabled:false,easing:'ease-in-out',duration:300,opener:function opener(element){return element.is('img')?element:element.find('img');}},proto:{initZoom:function initZoom(){var zoomSt=mfp.st.zoom,ns='.zoom',image;if(!zoomSt.enabled||!mfp.supportsTransition){return;}var duration=zoomSt.duration,getElToAnimate=function getElToAnimate(image){var newImg=image.clone().removeAttr('style').removeAttr('class').addClass('mfp-animated-image'),transition='all '+zoomSt.duration/1000+'s '+zoomSt.easing,cssObj={position:'fixed',zIndex:9999,left:0,top:0,'-webkit-backface-visibility':'hidden'},t='transition';cssObj['-webkit-'+t]=cssObj['-moz-'+t]=cssObj['-o-'+t]=cssObj[t]=transition;newImg.css(cssObj);return newImg;},showMainContent=function showMainContent(){mfp.content.css('visibility','visible');},openTimeout,animatedImg;_mfpOn('BuildControls'+ns,function(){if(mfp._allowZoom()){clearTimeout(openTimeout);mfp.content.css('visibility','hidden');// Basically, all code below does is clones existing image, puts in on top of the current one and animated it
2676image=mfp._getItemToZoom();if(!image){showMainContent();return;}animatedImg=getElToAnimate(image);animatedImg.css(mfp._getOffset());mfp.wrap.append(animatedImg);openTimeout=setTimeout(function(){animatedImg.css(mfp._getOffset(true));openTimeout=setTimeout(function(){showMainContent();setTimeout(function(){animatedImg.remove();image=animatedImg=null;_mfpTrigger('ZoomAnimationEnded');},16);// avoid blink when switching images
2677},duration);// this timeout equals animation duration
2678},16);// by adding this timeout we avoid short glitch at the beginning of animation
2679// Lots of timeouts...
2680}});_mfpOn(BEFORE_CLOSE_EVENT+ns,function(){if(mfp._allowZoom()){clearTimeout(openTimeout);mfp.st.removalDelay=duration;if(!image){image=mfp._getItemToZoom();if(!image){return;}animatedImg=getElToAnimate(image);}animatedImg.css(mfp._getOffset(true));mfp.wrap.append(animatedImg);mfp.content.css('visibility','hidden');setTimeout(function(){animatedImg.css(mfp._getOffset());},16);}});_mfpOn(CLOSE_EVENT+ns,function(){if(mfp._allowZoom()){showMainContent();if(animatedImg){animatedImg.remove();}image=null;}});},_allowZoom:function _allowZoom(){return mfp.currItem.type==='image';},_getItemToZoom:function _getItemToZoom(){if(mfp.currItem.hasSize){return mfp.currItem.img;}else{return false;}},// Get element postion relative to viewport
2681_getOffset:function _getOffset(isLarge){var el;if(isLarge){el=mfp.currItem.img;}else{el=mfp.st.zoom.opener(mfp.currItem.el||mfp.currItem);}var offset=el.offset();var paddingTop=parseInt(el.css('padding-top'),10);var paddingBottom=parseInt(el.css('padding-bottom'),10);offset.top-=$(window).scrollTop()-paddingTop;/*
2682
2683			Animating left + top + width/height looks glitchy in Firefox, but perfect in Chrome. And vice-versa.
2684
2685			 */var obj={width:el.width(),// fix Zepto height+padding issue
2686height:(_isJQ?el.innerHeight():el[0].offsetHeight)-paddingBottom-paddingTop};// I hate to do this, but there is no another option
2687if(getHasMozTransform()){obj['-moz-transform']=obj['transform']='translate('+offset.left+'px,'+offset.top+'px)';}else{obj.left=offset.left;obj.top=offset.top;}return obj;}}});/*>>zoom*//*>>iframe*/var IFRAME_NS='iframe',_emptyPage='//about:blank',_fixIframeBugs=function _fixIframeBugs(isShowing){if(mfp.currTemplate[IFRAME_NS]){var el=mfp.currTemplate[IFRAME_NS].find('iframe');if(el.length){// reset src after the popup is closed to avoid "video keeps playing after popup is closed" bug
2688if(!isShowing){el[0].src=_emptyPage;}// IE8 black screen bug fix
2689if(mfp.isIE8){el.css('display',isShowing?'block':'none');}}}};$.magnificPopup.registerModule(IFRAME_NS,{options:{markup:'<div class="mfp-iframe-scaler">'+'<div class="mfp-close"></div>'+'<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>'+'</div>',srcAction:'iframe_src',// we don't care and support only one default type of URL by default
2690patterns:{youtube:{index:'youtube.com',id:'v=',src:'//www.youtube.com/embed/%id%?autoplay=1'},vimeo:{index:'vimeo.com/',id:'/',src:'//player.vimeo.com/video/%id%?autoplay=1'},gmaps:{index:'//maps.google.',src:'%id%&output=embed'}}},proto:{initIframe:function initIframe(){mfp.types.push(IFRAME_NS);_mfpOn('BeforeChange',function(e,prevType,newType){if(prevType!==newType){if(prevType===IFRAME_NS){_fixIframeBugs();// iframe if removed
2691}else if(newType===IFRAME_NS){_fixIframeBugs(true);// iframe is showing
2692}}// else {
2693// iframe source is switched, don't do anything
2694//}
2695});_mfpOn(CLOSE_EVENT+'.'+IFRAME_NS,function(){_fixIframeBugs();});},getIframe:function getIframe(item,template){var embedSrc=item.src;var iframeSt=mfp.st.iframe;$.each(iframeSt.patterns,function(){if(embedSrc.indexOf(this.index)>-1){if(this.id){if(typeof this.id==='string'){embedSrc=embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length,embedSrc.length);}else{embedSrc=this.id.call(this,embedSrc);}}embedSrc=this.src.replace('%id%',embedSrc);return false;// break;
2696}});var dataObj={};if(iframeSt.srcAction){dataObj[iframeSt.srcAction]=embedSrc;}mfp._parseMarkup(template,dataObj,item);mfp.updateStatus('ready');return template;}}});/*>>iframe*//*>>gallery*//**
2697 * Get looped index depending on number of slides
2698 */var _getLoopedId=function _getLoopedId(index){var numSlides=mfp.items.length;if(index>numSlides-1){return index-numSlides;}else if(index<0){return numSlides+index;}return index;},_replaceCurrTotal=function _replaceCurrTotal(text,curr,total){return text.replace(/%curr%/gi,curr+1).replace(/%total%/gi,total);};$.magnificPopup.registerModule('gallery',{options:{enabled:false,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:true,arrows:true,tPrev:'Previous (Left arrow key)',tNext:'Next (Right arrow key)',tCounter:'%curr% of %total%',langDir:null,loop:true},proto:{initGallery:function initGallery(){var gSt=mfp.st.gallery,ns='.mfp-gallery';mfp.direction=true;// true - next, false - prev
2699if(!gSt||!gSt.enabled)return false;if(!gSt.langDir){gSt.langDir=document.dir||'ltr';}_wrapClasses+=' mfp-gallery';_mfpOn(OPEN_EVENT+ns,function(){if(gSt.navigateByImgClick){mfp.wrap.on('click'+ns,'.mfp-img',function(){if(mfp.items.length>1){mfp.next();return false;}});}_document.on('keydown'+ns,function(e){if(e.keyCode===37){if(gSt.langDir==='rtl')mfp.next();else mfp.prev();}else if(e.keyCode===39){if(gSt.langDir==='rtl')mfp.prev();else mfp.next();}});mfp.updateGalleryButtons();});_mfpOn('UpdateStatus'+ns,function()/*e, data*/{mfp.updateGalleryButtons();});_mfpOn('UpdateStatus'+ns,function(e,data){if(data.text){data.text=_replaceCurrTotal(data.text,mfp.currItem.index,mfp.items.length);}});_mfpOn(MARKUP_PARSE_EVENT+ns,function(e,element,values,item){var l=mfp.items.length;values.counter=l>1?_replaceCurrTotal(gSt.tCounter,item.index,l):'';});_mfpOn('BuildControls'+ns,function(){if(mfp.items.length>1&&gSt.arrows&&!mfp.arrowLeft){var arrowLeftDesc,arrowRightDesc,arrowLeftAction,arrowRightAction;if(gSt.langDir==='rtl'){arrowLeftDesc=gSt.tNext;arrowRightDesc=gSt.tPrev;arrowLeftAction='next';arrowRightAction='prev';}else{arrowLeftDesc=gSt.tPrev;arrowRightDesc=gSt.tNext;arrowLeftAction='prev';arrowRightAction='next';}var markup=gSt.arrowMarkup,arrowLeft=mfp.arrowLeft=$(markup.replace(/%title%/gi,arrowLeftDesc).replace(/%action%/gi,arrowLeftAction).replace(/%dir%/gi,'left')).addClass(PREVENT_CLOSE_CLASS),arrowRight=mfp.arrowRight=$(markup.replace(/%title%/gi,arrowRightDesc).replace(/%action%/gi,arrowRightAction).replace(/%dir%/gi,'right')).addClass(PREVENT_CLOSE_CLASS);if(gSt.langDir==='rtl'){mfp.arrowNext=arrowLeft;mfp.arrowPrev=arrowRight;}else{mfp.arrowNext=arrowRight;mfp.arrowPrev=arrowLeft;}arrowLeft.on('click',function(){if(gSt.langDir==='rtl')mfp.next();else mfp.prev();});arrowRight.on('click',function(){if(gSt.langDir==='rtl')mfp.prev();else mfp.next();});mfp.container.append(arrowLeft.add(arrowRight));}});_mfpOn(CHANGE_EVENT+ns,function(){if(mfp._preloadTimeout)clearTimeout(mfp._preloadTimeout);mfp._preloadTimeout=setTimeout(function(){mfp.preloadNearbyImages();mfp._preloadTimeout=null;},16);});_mfpOn(CLOSE_EVENT+ns,function(){_document.off(ns);mfp.wrap.off('click'+ns);mfp.arrowRight=mfp.arrowLeft=null;});},next:function next(){var newIndex=_getLoopedId(mfp.index+1);if(!mfp.st.gallery.loop&&newIndex===0)return false;mfp.direction=true;mfp.index=newIndex;mfp.updateItemHTML();},prev:function prev(){var newIndex=mfp.index-1;if(!mfp.st.gallery.loop&&newIndex<0)return false;mfp.direction=false;mfp.index=_getLoopedId(newIndex);mfp.updateItemHTML();},goTo:function goTo(newIndex){mfp.direction=newIndex>
2699=mfp.index;mfp.index=newIndex;mfp.updateItemHTML();},preloadNearbyImages:function preloadNearbyImages(){var p=mfp.st.gallery.preload,preloadBefore=Math.min(p[0],mfp.items.length),preloadAfter=Math.min(p[1],mfp.items.length),i;for(i=1;i<=(mfp.direction?preloadAfter:preloadBefore);i++){mfp._preloadItem(mfp.index+i);}for(i=1;i<=(mfp.direction?preloadBefore:preloadAfter);i++){mfp._preloadItem(mfp.index-i);}},_preloadItem:function _preloadItem(index){index=_getLoopedId(index);if(mfp.items[index].preloaded){return;}var item=mfp.items[index];if(!item.parsed){item=mfp.parseEl(index);}_mfpTrigger('LazyLoad',item);if(item.type==='image'){item.img=$('<img class="mfp-img" />').on('load.mfploader',function(){item.hasSize=true;}).on('error.mfploader',function(){item.hasSize=true;item.loadError=true;_mfpTrigger('LazyLoadError',item);}).attr('src',item.src);}item.preloaded=true;},/**
2700		 * Show/hide the gallery prev/next buttons if we're at the start/end, if looping is turned off
2701		 * Added by Joloco for Veg
2702		 */updateGalleryButtons:function updateGalleryButtons(){if(!mfp.st.gallery.loop&&_typeof(mfp.arrowPrev)==='object'&&mfp.arrowPrev!==null){if(mfp.index===0)mfp.arrowPrev.hide();else mfp.arrowPrev.show();if(mfp.index===mfp.items.length-1)mfp.arrowNext.hide();else mfp.arrowNext.show();}}}});/*>>gallery*//*>>retina*/var RETINA_NS='retina';$.magnificPopup.registerModule(RETINA_NS,{options:{replaceSrc:function replaceSrc(item){return item.src.replace(/\.\w+$/,function(m){return'@2x'+m;});},ratio:1// Function or number.  Set to 1 to disable.
2703},proto:{initRetina:function initRetina(){if(window.devicePixelRatio>1){var st=mfp.st.retina,ratio=st.ratio;ratio=!isNaN(ratio)?ratio:ratio();if(ratio>1){_mfpOn('ImageHasSize'+'.'+RETINA_NS,function(e,item){item.img.css({'max-width':item.img[0].naturalWidth/ratio,'width':'100%'});});_mfpOn('ElementParse'+'.'+RETINA_NS,function(e,item){item.src=st.replaceSrc(item,ratio);});}}}}});/*>>retina*/_checkInstance();});/*
2704     _ _      _       _
2705 ___| (_) ___| | __  (_)___
2706/ __| | |/ __| |/ /  | / __|
2707\__ \ | | (__|   < _ | \__ \
2708|___/_|_|\___|_|\_(_)/ |___/
2709                   |__/
2710
2711 Version: 1.8.0
2712  Author: Ken Wheeler
2713 Website: http://kenwheeler.github.io
2714    Docs: http://kenwheeler.github.io/slick
2715    Repo: http://github.com/kenwheeler/slick
2716  Issues: http://github.com/kenwheeler/slick/issues
2717
2718 *//* global window, document, define, jQuery, setInterval, clearInterval */;(function(factory){'use strict';if(typeof define==='function'&&define.amd){define(['jquery'],factory);}else if(typeof exports!=='undefined'){module.exports=factory(require('jquery'));}else{factory(jQuery);}})(function($){'use strict';var Slick=window.Slick||{};Slick=function(){var instanceUid=0;function Slick(element,settings){var _=this,dataSettings;_.defaults={accessibility:true,adaptiveHeight:false,appendArrows:$(element),appendDots:$(element),arrows:true,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:false,autoplaySpeed:3000,centerMode:false,centerPadding:'50px',cssEase:'ease',customPaging:function customPaging(slider,i){return $('<button type="button" />').text(i+1);},dots:false,dotsClass:'slick-dots',draggable:true,easing:'linear',edgeFriction:0.35,fade:false,focusOnSelect:false,focusOnChange:false,infinite:true,initialSlide:0,lazyLoad:'ondemand',mobileFirst:false,pauseOnHover:true,pauseOnFocus:true,pauseOnDotsHover:false,respondTo:'window',responsive:null,rows:1,rtl:false,slide:'',slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:true,swipeToSlide:false,touchMove:true,touchThreshold:5,useCSS:true,useTransform:true,variableWidth:false,vertical:false,verticalSwiping:false,waitForAnimate:true,zIndex:1000};_.initials={animating:false,dragging:false,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:false,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,
vendor: 51,258 bytes, lines 2718-2746
2718sliding:false,slideOffset:0,swipeLeft:null,swiping:false,$list:null,touchObject:{},transformsEnabled:false,unslicked:false};$.extend(_,_.initials);_.activeBreakpoint=null;_.animType=null;_.animProp=null;_.breakpoints=[];_.breakpointSettings=[];_.cssTransitions=false;_.focussed=false;_.interrupted=false;_.hidden='hidden';_.paused=true;_.positionProp=null;_.respondTo=null;_.rowCount=1;_.shouldClick=true;_.$slider=$(element);_.$slidesCache=null;_.transformType=null;_.transitionType=null;_.visibilityChange='visibilitychange';_.windowWidth=0;_.windowTimer=null;dataSettings=$(element).data('slick')||{};_.options=$.extend({},_.defaults,settings,dataSettings);_.currentSlide=_.options.initialSlide;_.originalSettings=_.options;if(typeof document.mozHidden!=='undefined'){_.hidden='mozHidden';_.visibilityChange='mozvisibilitychange';}else if(typeof document.webkitHidden!=='undefined'){_.hidden='webkitHidden';_.visibilityChange='webkitvisibilitychange';}_.autoPlay=$.proxy(_.autoPlay,_);_.autoPlayClear=$.proxy(_.autoPlayClear,_);_.autoPlayIterator=$.proxy(_.autoPlayIterator,_);_.changeSlide=$.proxy(_.changeSlide,_);_.clickHandler=$.proxy(_.clickHandler,_);_.selectHandler=$.proxy(_.selectHandler,_);_.setPosition=$.proxy(_.setPosition,_);_.swipeHandler=$.proxy(_.swipeHandler,_);_.dragHandler=$.proxy(_.dragHandler,_);_.keyHandler=$.proxy(_.keyHandler,_);_.instanceUid=instanceUid++;// A simple way to check for HTML strings
2719// Strict HTML recognition (must start with <)
2720// Extracted from jQuery v1.11 source
2721_.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/;_.registerBreakpoints();_.init(true);}return Slick;}();Slick.prototype.activateADA=function(){var _=this;_.$slideTrack.find('.slick-active').attr({'aria-hidden':'false'}).find('a, input, button, select').attr({'tabindex':'0'});};Slick.prototype.addSlide=Slick.prototype.slickAdd=function(markup,index,addBefore){var _=this;if(typeof index==='boolean'){addBefore=index;index=null;}else if(index<0||index>=_.slideCount){return false;}_.unload();if(typeof index==='number'){if(index===0&&_.$slides.length===0){$(markup).appendTo(_.$slideTrack);}else if(addBefore){$(markup).insertBefore(_.$slides.eq(index));}else{$(markup).insertAfter(_.$slides.eq(index));}}else{if(addBefore===true){$(markup).prependTo(_.$slideTrack);}else{$(markup).appendTo(_.$slideTrack);}}_.$slides=_.$slideTrack.children(this.options.slide);_.$slideTrack.children(this.options.slide).detach();_.$slideTrack.append(_.$slides);_.$slides.each(function(index,element){$(element).attr('data-slick-index',index);});_.$slidesCache=_.$slides;_.reinit();};Slick.prototype.animateHeight=function(){var _=this;if(_.options.slidesToShow===1&&_.options.adaptiveHeight===true&&_.options.vertical===false){var targetHeight=_.$slides.eq(_.currentSlide).outerHeight(true);_.$list.animate({height:targetHeight},_.options.speed);}};Slick.prototype.animateSlide=function(targetLeft,callback){var animProps={},_=this;_.animateHeight();if(_.options.rtl===true&&_.options.vertical===false){targetLeft=-targetLeft;}if(_.transformsEnabled===false){if(_.options.vertical===false){_.$slideTrack.animate({left:targetLeft},_.options.speed,_.options.easing,callback);}else{_.$slideTrack.animate({top:targetLeft},_.options.speed,_.options.easing,callback);}}else{if(_.cssTransitions===false){if(_.options.rtl===true){_.currentLeft=-_.currentLeft;}$({animStart:_.currentLeft}).animate({animStart:targetLeft},{duration:_.options.speed,easing:_.options.easing,step:function step(now){now=Math.ceil(now);if(_.options.vertical===false){animProps[_.animType]='translate('+now+'px, 0px)';_.$slideTrack.css(animProps);}else{animProps[_.animType]='translate(0px,'+now+'px)';_.$slideTrack.css(animProps);}},complete:function complete(){if(callback){callback.call();}}});}else{_.applyTransition();targetLeft=Math.ceil(targetLeft);if(_.options.vertical===false){animProps[_.animType]='translate3d('+targetLeft+'px, 0px, 0px)';}else{animProps[_.animType]='translate3d(0px,'+targetLeft+'px, 0px)';}_.$slideTrack.css(animProps);if(callback){setTimeout(function(){_.disableTransition();callback.call();},_.options.speed);}}}};Slick.prototype.getNavTarget=function(){var _=this,asNavFor=_.options.asNavFor;if(asNavFor&&asNavFor!==null){asNavFor=$(asNavFor).not(_.$slider);}return asNavFor;};Slick.prototype.asNavFor=function(index){var _=this,asNavFor=_.getNavTarget();if(asNavFor!==null&&(typeof asNavFor==='undefined'?'undefined':_typeof(asNavFor))==='object'){asNavFor.each(function(){var target=$(this).slick('getSlick');if(!target.unslicked){target.slideHandler(index,true);}});}};Slick.prototype.applyTransition=function(slide){var _=this,transition={};if(_.options.fade===false){transition[_.transitionType]=_.transformType+' '+_.options.speed+'ms '+_.options.cssEase;}else{transition[_.transitionType]='opacity '+_.options.speed+'ms '+_.options.cssEase;}if(_.options.fade===false){_.$slideTrack.css(transition);}else{_.$slides.eq(slide).css(transition);}};Slick.prototype.autoPlay=function(){var _=this;_.autoPlayClear();if(_.slideCount>_.options.slidesToShow){_.autoPlayTimer=setInterval(_.autoPlayIterator,_.options.autoplaySpeed);}};Slick.prototype.autoPlayClear=function(){var _=this;if(_.autoPlayTimer){clearInterval(_.autoPlayTimer);}};Slick.prototype.autoPlayIterator=function(){var _=this,slideTo=_.currentSlide+_.options.slidesToScroll;if(!_.paused&&!_.interrupted&&!_.focussed){if(_.options.infinite===false){if(_.direction===1&&_.currentSlide+1===_.slideCount-1){_.direction=0;}else if(_.direction===0){slideTo=_.currentSlide-_.options.slidesToScroll;if(_.currentSlide-1===0){_.direction=1;}}}_.slideHandler(slideTo);}};Slick.prototype.buildArrows=function(){var _=this;if(_.options.arrows===true){_.$prevArrow=$(_.options.prevArrow).addClass('slick-arrow');_.$nextArrow=$(_.options.nextArrow).addClass('slick-arrow');if(_.slideCount>_.options.slidesToShow){_.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');_.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');if(_.htmlExpr.test(_.options.prevArrow)){_.$prevArrow.prependTo(_.options.appendArrows);}if(_.htmlExpr.test(_.options.nextArrow)){_.$nextArrow.appendTo(_.options.appendArrows);}if(_.options.infinite!==true){_.$prevArrow.addClass('slick-disabled').attr('aria-disabled','true');}}else{_.$prevArrow.add(_.$nextArrow).addClass('slick-hidden').attr({'aria-disabled':'true','tabindex':'-1'});}}};Slick.prototype.buildDots=function(){var _=this,i,dot;if(_.options.dots===true&&_.slideCount>_.options.slidesToShow){_.$slider.addClass('slick-dotted');dot=$('<ul />').addClass(_.options.dotsClass);for(i=0;i<=_.getDotCount();i+=1){dot.append($('<li />').append(_.options.customPaging.call(this,_,i)));}_.$dots=dot.appendTo(_.options.appendDots);_.$dots.find('li').first().addClass('slick-active');}};Slick.prototype.buildOut=function(){var _=this;_.$slides=_.$slider.children(_.options.slide+':not(.slick-cloned)').addClass('slick-slide');_.slideCount=_.$slides.length;_.$slides.each(function(index,element){$(element).attr('data-slick-index',index).data('originalStyling',$(element).attr('style')||'');});_.$slider.addClass('slick-slider');_.$slideTrack=_.slideCount===0?$('<div class="slick-track"/>').appendTo(_.$slider):_.$slides.wrapAll('<div class="slick-track"/>').parent();_.$list=_.$slideTrack.wrap('<div class="slick-list"/>').parent();_.$slideTrack.css('opacity',0);if(_.options.centerMode===true||_.options.swipeToSlide===true){_.options.slidesToScroll=1;}$('img[data-lazy]',_.$slider).not('[src]').addClass('slick-loading');_.setupInfinite();_.buildArrows();_.buildDots();_.updateDots();_.setSlideClasses(typeof _.currentSlide==='number'?_.currentSlide:0);if(_.options.draggable===true){_.$list.addClass('draggable');}};Slick.prototype.buildRows=function(){var _=this,a,b,c,newSlides,numOfSlides,originalSlides,slidesPerSection;newSlides=document.createDocumentFragment();originalSlides=_.$slider.children();if(_.options.rows>0){slidesPerSection=_.options.slidesPerRow*_.options.rows;numOfSlides=Math.ceil(originalSlides.length/slidesPerSection);for(a=0;a<numOfSlides;a++){var slide=document.createElement('div');for(b=0;b<_.options.rows;b++){var row=document.createElement('div');for(c=0;c<_.options.slidesPerRow;c++){var target=a*slidesPerSection+(b*_.options.slidesPerRow+c);if(originalSlides.get(target)){row.appendChild(originalSlides.get(target));}}slide.appendChild(row);}newSlides.appendChild(slide);}_.$slider.empty().append(newSlides);_.$slider.children().children().children().css({'width':100/_.options.slidesPerRow+'%','display':'inline-block'});}};Slick.prototype.checkResponsive=function(initial,forceUpdate){var _=this,breakpoint,targetBreakpoint,respondToWidth,triggerBreakpoint=false;var sliderWidth=_.$slider.width();var windowWidth=window.innerWidth||$(window).width();if(_.respondTo==='window'){respondToWidth=windowWidth;}else if(_.respondTo==='slider'){respondToWidth=sliderWidth;}else if(_.respondTo==='min'){respondToWidth=Math.min(windowWidth,sliderWidth);}if(_.options.responsive&&_.options.responsive.length&&_.options.responsive!==null){targetBreakpoint=null;for(breakpoint in _.breakpoints){if(_.breakpoints.hasOwnProperty(breakpoint)){if(_.originalSettings.mobileFirst===false){if(respondToWidth<_.breakpoints[breakpoint]){targetBreakpoint=_.breakpoints[breakpoint];}}else{if(respondToWidth>_.breakpoints[breakpoint]){targetBreakpoint=_.breakpoints[breakpoint];}}}}if(targetBreakpoint!==null){if(_.activeBreakpoint!==null){if(targetBreakpoint!==_.activeBreakpoint||forceUpdate){_.activeBreakpoint=targetBreakpoint;if(_.breakpointSettings[targetBreakpoint]==='unslick'){_.unslick(targetBreakpoint);}else{_.options=$.extend({},_.originalSettings,_.breakpointSettings[targetBreakpoint]);if(initial===true){_.currentSlide=_.options.initialSlide;}_.refresh(initial);}triggerBreakpoint=targetBreakpoint;}}else{_.activeBreakpoint=targetBreakpoint;if(_.breakpointSettings[targetBreakpoint]==='unslick'){_.unslick(targetBreakpoint);}else{_.options=$.extend({},_.originalSettings,_.breakpointSettings[targetBreakpoint]);if(initial===true){_.currentSlide=_.options.initialSlide;}_.refresh(initial);}triggerBreakpoint=targetBreakpoint;}}else{if(_.activeBreakpoint!==null){_.activeBreakpoint=null;_.options=_.originalSettings;if(initial===true){_.currentSlide=_.options.initialSlide;}_.refresh(initial);triggerBreakpoint=targetBreakpoint;}}// only trigger breakpoints during an actual break. not on initialize.
2722if(!initial&&triggerBreakpoint!==false){_.$slider.trigger('breakpoint',[_,triggerBreakpoint]);}}};Slick.prototype.changeSlide=function(event,dontAnimate){var _=this,$target=$(event.currentTarget),indexOffset,slideOffset,unevenOffset;// If target is a link, prevent default action.
2723if($target.is('a')){event.preventDefault();}// If target is not the <li> element (ie: a child), find the <li>.
2724if(!$target.is('li')){$target=$target.closest('li');}unevenOffset=_.slideCount%_.options.slidesToScroll!==0;indexOffset=unevenOffset?0:(_.slideCount-_.currentSlide)%_.options.slidesToScroll;switch(event.data.message){case'previous':slideOffset=indexOffset===0?_.options.slidesToScroll:_.options.slidesToShow-indexOffset;if(_.slideCount>_.options.slidesToShow){_.slideHandler(_.currentSlide-slideOffset,false,dontAnimate);}break;case'next':slideOffset=indexOffset===0?_.options.slidesToScroll:indexOffset;if(_.slideCount>_.options.slidesToShow){_.slideHandler(_.currentSlide+slideOffset,false,dontAnimate);}break;case'index':var index=event.data.index===0?0:event.data.index||$target.index()*_.options.slidesToScroll;_.slideHandler(_.checkNavigable(index),false,dontAnimate);$target.children().trigger('focus');break;default:return;}};Slick.prototype.checkNavigable=function(index){var _=this,navigables,prevNavigable;navigables=_.getNavigableIndexes();prevNavigable=0;if(index>navigables[navigables.length-1]){index=navigables[navigables.length-1];}else{for(var n in navigables){if(index<navigables[n]){index=prevNavigable;break;}prevNavigable=navigables[n];}}return index;};Slick.prototype.cleanUpEvents=function(){var _=this;if(_.options.dots&&_.$dots!==null){$('li',_.$dots).off('click.slick',_.changeSlide).off('mouseenter.slick',$.proxy(_.interrupt,_,true)).off('mouseleave.slick',$.proxy(_.interrupt,_,false));if(_.options.accessibility===true){_.$dots.off('keydown.slick',_.keyHandler);}}_.$slider.off('focus.slick blur.slick');if(_.options.arrows===true&&_.slideCount>_.options.slidesToShow){_.$prevArrow&&_.$prevArrow.off('click.slick',_.changeSlide);_.$nextArrow&&_.$nextArrow.off('click.slick',_.changeSlide);if(_.options.accessibility===true){_.$prevArrow&&_.$prevArrow.off('keydown.slick',_.keyHandler);_.$nextArrow&&_.$nextArrow.off('keydown.slick',_.keyHandler);}}_.$list.off('touchstart.slick mousedown.slick',_.swipeHandler);_.$list.off('touchmove.slick mousemove.slick',_.swipeHandler);_.$list.off('touchend.slick mouseup.slick',_.swipeHandler);_.$list.off('touchcancel.slick mouseleave.slick',_.swipeHandler);_.$list.off('click.slick',_.clickHandler);$(document).off(_.visibilityChange,_.visibility);_.cleanUpSlideEvents();if(_.options.accessibility===true){_.$list.off('keydown.slick',_.keyHandler);}if(_.options.focusOnSelect===true){$(_.$slideTrack).children().off('click.slick',_.selectHandler);}$(window).off('orientationchange.slick.slick-'+_.instanceUid,_.orientationChange);$(window).off('resize.slick.slick-'+_.instanceUid,_.resize);$('[draggable!=true]',_.$slideTrack).off('dragstart',_.preventDefault);$(window).off('load.slick.slick-'+_.instanceUid,_.setPosition);};Slick.prototype.cleanUpSlideEvents=function(){var _=this;_.$list.off('mouseenter.slick',$.proxy(_.interrupt,_,true));_.$list.off('mouseleave.slick',$.proxy(_.interrupt,_,false));};Slick.prototype.cleanUpRows=function(){var _=this,originalSlides;if(_.options.rows>0){originalSlides=_.$slides.children().children();originalSlides.removeAttr('style');_.$slider.empty().append(originalSlides);}};Slick.prototype.clickHandler=function(event){var _=this;if(_.shouldClick===false){event.stopImmediatePropagation();event.stopPropagation();event.preventDefault();}};Slick.prototype.destroy=function(refresh){var _=this;_.autoPlayClear();_.touchObject={};_.cleanUpEvents();$('.slick-cloned',_.$slider).detach();if(_.$dots){_.$dots.remove();}if(_.$prevArrow&&_.$prevArrow.length){_.$prevArrow.removeClass('slick-disabled slick-arrow slick-hidden').removeAttr('aria-hidden aria-disabled tabindex').css('display','');if(_.htmlExpr.test(_.options.prevArrow)){_.$prevArrow.remove();}}if(_.$nextArrow&&_.$nextArrow.length){_.$nextArrow.removeClass('slick-disabled slick-arrow slick-hidden').removeAttr('aria-hidden aria-disabled tabindex').css('display','');if(_.htmlExpr.test(_.options.nextArrow)){_.$nextArrow.remove();}}if(_.$slides){_.$slides.removeClass('slick-slide slick-active slick-center slick-visible slick-current').removeAttr('aria-hidden').removeAttr('data-slick-index').each(function(){$(this).attr('style',$(this).data('originalStyling'));});_.$slideTrack.children(this.options.slide).detach();_.$slideTrack.detach();_.$list.detach();_.$slider.append(_.$slides);}_.cleanUpRows();_.$slider.removeClass('slick-slider');_.$slider.removeClass('slick-initialized');_.$slider.removeClass('slick-dotted');_.unslicked=true;if(!refresh){_.$slider.trigger('destroy',[_]);}};Slick.prototype.disableTransition=function(slide){var _=this,transition={};transition[_.transitionType]='';if(_.options.fade===false){_.$slideTrack.css(transition);}else{_.$slides.eq(slide).css(transition);}};Slick.prototype.fadeSlide=function(slideIndex,callback){var _=this;if(_.cssTransitions===false){_.$slides.eq(slideIndex).css({zIndex:_.options.zIndex});_.$slides.eq(slideIndex).animate({opacity:1},_.options.speed,_.options.easing,callback);}else{_.applyTransition(slideIndex);_.$slides.eq(slideIndex).css({opacity:1,zIndex:_.options.zIndex});if(callback){setTimeout(function(){_.disableTransition(slideIndex);callback.call();},_.options.speed);}}};Slick.prototype.fadeSlideOut=function(slideIndex){var _=this;if(_.cssTransitions===false){_.$slides.eq(slideIndex).animate({opacity:0,zIndex:_.options.zIndex-2},_.options.speed,_.options.easing);}else{_.applyTransition(slideIndex);_.$slides.eq(slideIndex).css({opacity:0,zIndex:_.options.zIndex-2});}};Slick.prototype.filterSlides=Slick.prototype.slickFilter=function(filter){var _=this;if(filter!==null){_.$slidesCache=_.$slides;_.unload();_.$slideTrack.children(this.options.slide).detach();_.$slidesCache.filter(filter).appendTo(_.$slideTrack);_.reinit();}};Slick.prototype.focusHandler=function(){var _=this;_.$slider.off('focus.slick blur.slick').on('focus.slick blur.slick','*',function(event){event.stopImmediatePropagation();var $sf=$(this);setTimeout(function(){if(_.options.pauseOnFocus){_.focussed=$sf.is(':focus');_.autoPlay();}},0);});};Slick.prototype.getCurrent=Slick.prototype.slickCurrentSlide=function(){var _=this;return _.currentSlide;};Slick.prototype.getDotCount=function(){var _=this;var breakPoint=0;var counter=0;var pagerQty=0;if(_.options.infinite===true){if(_.slideCount<=_.options.slidesToShow){++pagerQty;}else{while(breakPoint<_.slideCount){++pagerQty;breakPoint=counter+_.options.slidesToScroll;counter+=_.options.slidesToScroll<=_.options.slidesToShow?_.options.slidesToScroll:_.options.slidesToShow;}}}else if(_.options.centerMode===true){pagerQty=_.slideCount;}else if(!_.options.asNavFor){pagerQty=1+Math.ceil((_.slideCount-_.options.slidesToShow)/_.options.slidesToScroll);}else{while(breakPoint<_.slideCount){++pagerQty;breakPoint=counter+_.options.slidesToScroll;counter+=_.options.slidesToScroll<=_.options.slidesToShow?_.options.slidesToScroll:_.options.slidesToShow;}}return pagerQty-1;};Slick.prototype.getLeft=function(slideIndex){var _=this,targetLeft,verticalHeight,verticalOffset=0,targetSlide,coef;_.slideOffset=0;verticalHeight=_.$slides.first().outerHeight(true);if(_.options.infinite===true){if(_.slideCount>_.options.slidesToShow){_.slideOffset=_.slideWidth*_.options.slidesToShow*-1;coef=-1;if(_.options.vertical===true&&_.options.centerMode===true){if(_.options.slidesToShow===2){coef=-1.5;}else if(_.options.slidesToShow===1){coef=-2;}}verticalOffset=verticalHeight*_.options.slidesToShow*coef;}if(_.slideCount%_.options.slidesToScroll!==0){if(slideIndex+_.options.slidesToScroll>_.slideCount&&_.slideCount>_.options.slidesToShow){if(slideIndex>_.slideCount){_.slideOffset=(_.options.slidesToShow-(slideIndex-_.slideCount))*_.slideWidth*-1;verticalOffset=(_.options.slidesToShow-(slideIndex-_.slideCount))*verticalHeight*-1;}else{_.slideOffset=_.slideCount%_.options.slidesToScroll*_.slideWidth*-1;verticalOffset=_.slideCount%_.options.slidesToScroll*verticalHeight*-1;}}}}else{if(slideIndex+_.options.slidesToShow>_.slideCount){_.slideOffset=(slideIndex+_.options.slidesToShow-_.slideCount)*_.slideWidth;verticalOffset=(slideIndex+_.options.slidesToShow-_.slideCount)*verticalHeight;}}if(_.slideCount<=_.options.slidesToShow){_.slideOffset=0;verticalOffset=0;}if(_.options.centerMode===true&&_.slideCount<=_.options.slidesToShow){_.slideOffset=_.slideWidth*Math.floor(_.options.slidesToShow)/2-_.slideWidth*_.slideCount/2;}else if(_.options.centerMode===true&&_.options.infinite===true){_.slideOffset+=_.slideWidth*Math.floor(_.options.slidesToShow/2)-_.slideWidth;}else if(_.options.centerMode===true){_.slideOffset=0;_.slideOffset+=_.slideWidth*Math.floor(_.options.slidesToShow/2);}if(_.options.vertical===false){targetLeft=slideIndex*_.slideWidth*-1+_.slideOffset;}else{targetLeft=slideIndex*verticalHeight*-1+verticalOffset;}if(_.options.variableWidth===true){if(_.slideCount<=_.options.slidesToShow||_.options.infinite===false){targetSlide=_.$slideTrack.children('.slick-slide').eq(slideIndex);}else{targetSlide=_.$slideTrack.children('.slick-slide').eq(slideIndex+_.options.slidesToShow);}if(_.options.rtl===true){if(targetSlide[0]){targetLeft=(_.$slideTrack.width()-targetSlide[0].offsetLeft-targetSlide.width())*-1;}else{targetLeft=0;}}else{targetLeft=targetSlide[0]?targetSlide[0].offsetLeft*-1:0;}if(_.options.centerMode===true){if(_.slideCount<=_.options.slidesToShow||_.options.infinite===false){targetSlide=_.$slideTrack.children('.slick-slide').eq(slideIndex);}else{targetSlide=_.$slideTrack.children('.slick-slide').eq(slideIndex+_.options.slidesToShow+1);}if(_.options.rtl===true){if(targetSlide[0]){targetLeft=(_.$slideTrack.width()-targetSlide[0].offsetLeft-targetSlide.width())*-1;}else{targetLeft=0;}}else{targetLeft=targetSlide[0]?targetSlide[0].offsetLeft*-1:0;}targetLeft+=(_.$list.width()-targetSlide.outerWidth())/2;}}return targetLeft;};Slick.prototype.getOption=Slick.prototype.slickGetOption=function(option){var _=this;return _.options[option];};Slick.prototype.getNavigableIndexes=function(){var _=this,breakPoint=0,counter=0,indexes=[],max;if(_.options.infinite===false){max=_.slideCount;}else{breakPoint=_.options.slidesToScroll*-1;counter=_.options.slidesToScroll*-1;max=_.slideCount*2;}while(breakPoint<max){indexes.push(breakPoint);breakPoint=counter+_.options.slidesToScroll;counter+=_.options.slidesToScroll<=_.options.slidesToShow?_.options.slidesToScroll:_.options.slidesToShow;}return indexes;};Slick.prototype.getSlick=function(){return this;};Slick.prototype.getSlideCount=function(){var _=this,slidesTraversed,swipedSlide,centerOffset;centerOffset=_.options.centerMode===true?_.slideWidth*Math.floor(_.options.slidesToShow/2):0;if(_.options.swipeToSlide===true){_.$slideTrack.find('.slick-slide').each(function(index,slide){if(slide.offsetLeft-centerOffset+$(slide).outerWidth()/2>_.swipeLeft*-1){swipedSlide=slide;return false;}});slidesTraversed=Math.abs($(swipedSlide).attr('data-slick-index')-_.currentSlide)||1;return slidesTraversed;}else{return _.options.slidesToScroll;}};Slick.prototype.goTo=Slick.prototype.slickGoTo=function(slide,dontAnimate){var _=this;_.changeSlide({data:{message:'index',index:parseInt(slide)}},dontAnimate);};Slick.prototype.init=function(creation){var _=this;if(!$(_.$slider).hasClass('slick-initialized')){$(_.$slider).addClass('slick-initialized');_.buildRows();_.buildOut();_.setProps();_.startLoad();_.loadSlider();_.initializeEvents();_.updateArrows();_.updateDots();_.checkResponsive(true);_.focusHandler();}if(creation){_.$slider.trigger('init',[_]);}if(_.options.accessibility===true){_.initADA();}if(_.options.autoplay){_.paused=false;_.autoPlay();}};Slick.prototype.initADA=function(){var _=this,numDotGroups=Math.ceil(_.slideCount/_.options.slidesToShow),tabControlIndexes=_.getNavigableIndexes().filter(function(val){return val>=0&&val<_.slideCount;});_.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({'aria-hidden':'true','tabindex':'-1'}).find('a, input, button, select').attr({'tabindex':'-1'});if(_.$dots!==null){_.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i){var slideControlIndex=tabControlIndexes.indexOf(i);$(this).attr({'role':'tabpanel','id':'slick-slide'+_.instanceUid+i,'tabindex':-1});if(slideControlIndex!==-1){var ariaButtonControl='slick-slide-control'+_.instanceUid+slideControlIndex;if($('#'+ariaButtonControl).length){$(this).attr({'aria-describedby':ariaButtonControl});}}});_.$dots.attr('role','tablist').find('li').each(function(i){var mappedSlideIndex=tabControlIndexes[i];$(this).attr({'role':'presentation'});$(this).find('button').first().attr({'role':'tab','id':'slick-slide-control'+_.instanceUid+i,'aria-controls':'slick-slide'+_.instanceUid+mappedSlideIndex,'aria-label':i+1+' of '+numDotGroups,'aria-selected':null,'tabindex':'-1'});}).eq(_.currentSlide).find('button').attr({'aria-selected':'true','tabindex':'0'}).end();}for(var i=_.currentSlide,max=i+_.options.slidesToShow;i<max;i++){if(_.options.focusOnChange){_.$slides.eq(i).attr({'tabindex':'0'});}else{_.$slides.eq(i).removeAttr('tabindex');}}_.activateADA();};Slick.prototype.initArrowEvents=function(){var _=this;if(_.options.arrows===true&&_.slideCount>_.options.slidesToShow){_.$prevArrow.off('click.slick').on('click.slick',{message:'previous'},_.changeSlide);_.$nextArrow.off('click.slick').on('click.slick',{message:'next'},_.changeSlide);if(_.options.accessibility===true){_.$prevArrow.on('keydown.slick',_.keyHandler);_.$nextArrow.on('keydown.slick',_.keyHandler);}}};Slick.prototype.initDotEvents=function(){var _=this;if(_.options.dots===true&&_.slideCount>_.options.slidesToShow){$('li',_.$dots).on('click.slick',{message:'index'},_.changeSlide);if(_.options.accessibility===true){_.$dots.on('keydown.slick',_.keyHandler);}}if(_.options.dots===true&&_.options.pauseOnDotsHover===true&&_.slideCount>_.options.slidesToShow){$('li',_.$dots).on('mouseenter.slick',$.proxy(_.interrupt,_,true)).on('mouseleave.slick',$.proxy(_.interrupt,_,false));}};Slick.prototype.initSlideEvents=function(){var _=this;if(_.options.pauseOnHover){_.$list.on('mouseenter.slick',$.proxy(_.interrupt,_,true));_.$list.on('mouseleave.slick',$.proxy(_.interrupt,_,false));}};Slick.prototype.initializeEvents=function(){var _=this;_.initArrowEvents();_.initDotEvents();_.initSlideEvents();_.$list.on('touchstart.slick mousedown.slick',{action:'start'},_.swipeHandler);_.$list.on('touchmove.slick mousemove.slick',{action:'move'},_.swipeHandler);_.$list.on('touchend.slick mouseup.slick',{action:'end'},_.swipeHandler);_.$list.on('touchcancel.slick mouseleave.slick',{action:'end'},_.swipeHandler);_.$list.on('click.slick',_.clickHandler);$(document).on(_.visibilityChange,$.proxy(_.visibility,_));if(_.options.accessibility===true){_.$list.on('keydown.slick',_.keyHandler);}if(_.options.focusOnSelect===true){$(_.$slideTrack).children().on('click.slick',_.selectHandler);}$(window).on('orientationchange.slick.slick-'+_.instanceUid,$.proxy(_.orientationChange,_));$(window).on('resize.slick.slick-'+_.instanceUid,$.proxy(_.resize,_));$('[draggable!=true]',_.$slideTrack).on('dragstart',_.preventDefault);$(window).on('load.slick.slick-'+_.instanceUid,_.setPosition);$(_.setPosition);};Slick.prototype.initUI=function(){var _=this;if(_.options.arrows===true&&_.slideCount>_.options.slidesToShow){_.$prevArrow.show();_.$nextArrow.show();}if(_.options.dots===true&&_.slideCount>_.options.slidesToShow){_.$dots.show();}};Slick.prototype.keyHandler=function(event){var _=this;//Dont slide if the cursor is inside the form fields and arrow keys are pressed
2725if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')){if(event.keyCode===37&&_.options.accessibility===true){_.changeSlide({data:{message:_.options.rtl===true?'next':'previous'}});}else if(event.keyCode===39&&_.options.accessibility===true){_.changeSlide({data:{message:_.options.rtl===true?'previous':'next'}});}}};Slick.prototype.lazyLoad=function(){var _=this,loadRange,cloneRange,rangeStart,rangeEnd;function loadImages(imagesScope){$('img[data-lazy]',imagesScope).each(function(){var image=$(this),imageSource=$(this).attr('data-lazy'),imageSrcSet=$(this).attr('data-srcset'),imageSizes=$(this).attr('data-sizes')||_.$slider.attr('data-sizes'),imageToLoad=document.createElement('img');imageToLoad.onload=function(){image.animate({opacity:0},100,function(){if(imageSrcSet){image.attr('srcset',imageSrcSet);if(imageSizes){image.attr('sizes',imageSizes);}}image.attr('src',imageSource).animate({opacity:1},200,function(){image.removeAttr('data-lazy data-srcset data-sizes').removeClass('slick-loading');});_.$slider.trigger('lazyLoaded',[_,image,imageSource]);});};imageToLoad.onerror=function(){image.removeAttr('data-lazy').removeClass('slick-loading').addClass('slick-lazyload-error');_.$slider.trigger('lazyLoadError',[_,image,imageSource]);};imageToLoad.src=imageSource;});}if(_.options.centerMode===true){if(_.options.infinite===true){rangeStart=_.currentSlide+(_.options.slidesToShow/2+1);rangeEnd=rangeStart+_.options.slidesToShow+2;}else{rangeStart=Math.max(0,_.currentSlide-(_.options.slidesToShow/2+1));rangeEnd=2+(_.options.slidesToShow/2+1)+_.currentSlide;}}else{rangeStart=_.options.infinite?_.options.slidesToShow+_.currentSlide:_.currentSlide;rangeEnd=Math.ceil(rangeStart+_.options.slidesToShow);if(_.options.fade===true){if(rangeStart>0)rangeStart--;if(rangeEnd<=_.slideCount)rangeEnd++;}}loadRange=_.$slider.find('.slick-slide').slice(rangeStart,rangeEnd);if(_.options.lazyLoad==='anticipated'){var prevSlide=rangeStart-1,nextSlide=rangeEnd,$slides=_.$slider.find('.slick-slide');for(var i=0;i<_.options.slidesToScroll;i++){if(prevSlide<0)prevSlide=_.slideCount-1;loadRange=loadRange.add($slides.eq(prevSlide));loadRange=loadRange.add($slides.eq(nextSlide));prevSlide--;nextSlide++;}}loadImages(loadRange);if(_.slideCount<=_.options.slidesToShow){cloneRange=_.$slider.find('.slick-slide');loadImages(cloneRange);}else if(_.currentSlide>=_.slideCount-_.options.slidesToShow){cloneRange=_.$slider.find('.slick-cloned').slice(0,_.options.slidesToShow);loadImages(cloneRange);}else if(_.currentSlide===0){cloneRange=_.$slider.find('.slick-cloned').slice(_.options.slidesToShow*-1);loadImages(cloneRange);}};Slick.prototype.loadSlider=function(){var _=this;_.setPosition();_.$slideTrack.css({opacity:1});_.$slider.removeClass('slick-loading');_.initUI();if(_.options.lazyLoad==='progressive'){_.progressiveLazyLoad();}};Slick.prototype.next=Slick.prototype.slickNext=function(){var _=this;_.changeSlide({data:{message:'next'}});};Slick.prototype.orientationChange=function(){var _=this;_.checkResponsive();_.setPosition();};Slick.prototype.pause=Slick.prototype.slickPause=function(){var _=this;_.autoPlayClear();_.paused=true;};Slick.prototype.play=Slick.prototype.slickPlay=function(){var _=this;_.autoPlay();_.options.autoplay=true;_.paused=false;_.focussed=false;_.interrupted=false;};Slick.prototype.postSlide=function(index){var _=this;if(!_.unslicked){_.$slider.trigger('afterChange',[_,index]);_.animating=false;if(_.slideCount>_.options.slidesToShow){_.setPosition();}_.swipeLeft=null;if(_.options.autoplay){_.autoPlay();}if(_.options.accessibility===true){_.initADA();if(_.options.focusOnChange){var $currentSlide=$(_.$slides.get(_.currentSlide));$currentSlide.attr('tabindex',0).focus();}}}};Slick.prototype.prev=Slick.prototype.slickPrev=function(){var _=this;_.changeSlide({data:{message:'previous'}});};Slick.prototype.preventDefault=function(event){event.preventDefault();};Slick.prototype.progressiveLazyLoad=function(tryCount){tryCount=tryCount||1;var _=this,$imgsToLoad=$('img[data-lazy]',_.$slider),image,imageSource,imageSrcSet,imageSizes,imageToLoad;if($imgsToLoad.length){image=$imgsToLoad.first();imageSource=image.attr('data-lazy');imageSrcSet=image.attr('data-srcset');imageSizes=image.attr('data-sizes')||_.$slider.attr('data-sizes');imageToLoad=document.createElement('img');imageToLoad.onload=function(){if(imageSrcSet){image.attr('srcset',imageSrcSet);if(imageSizes){image.attr('sizes',imageSizes);}}image.attr('src',imageSource).removeAttr('data-lazy data-srcset data-sizes').removeClass('slick-loading');if(_.options.adaptiveHeight===true){_.setPosition();}_.$slider.trigger('lazyLoaded',[_,image,imageSource]);_.progressiveLazyLoad();};imageToLoad.onerror=function(){if(tryCount<3){/**
2726                     * try to load the image 3 times,
2727                     * leave a slight delay so we don't get
2728                     * servers blocking the request.
2729                     */setTimeout(function(){_.progressiveLazyLoad(tryCount+1);},500);}else{image.removeAttr('data-lazy').removeClass('slick-loading').addClass('slick-lazyload-error');_.$slider.trigger('lazyLoadError',[_,image,imageSource]);_.progressiveLazyLoad();}};imageToLoad.src=imageSource;}else{_.$slider.trigger('allImagesLoaded',[_]);}};Slick.prototype.refresh=function(initializing){var _=this,currentSlide,lastVisibleIndex;lastVisibleIndex=_.slideCount-_.options.slidesToShow;// in non-infinite sliders, we don't want to go past the
2730// last visible index.
2731if(!_.options.infinite&&_.currentSlide>lastVisibleIndex){_.currentSlide=lastVisibleIndex;}// if less slides than to show, go to start.
2732if(_.slideCount<=_.options.slidesToShow){_.currentSlide=0;}currentSlide=_.currentSlide;_.destroy(true);$.extend(_,_.initials,{currentSlide:currentSlide});_.init();if(!initializing){_.changeSlide({data:{message:'index',index:currentSlide}},false);}};Slick.prototype.registerBreakpoints=function(){var _=this,breakpoint,currentBreakpoint,l,responsiveSettings=_.options.responsive||null;if($.type(responsiveSettings)==='array'&&responsiveSettings.length){_.respondTo=_.options.respondTo||'window';for(breakpoint in responsiveSettings){l=_.breakpoints.length-1;if(responsiveSettings.hasOwnProperty(breakpoint)){currentBreakpoint=responsiveSettings[breakpoint].breakpoint;// loop through the breakpoints and cut out any existing
2733// ones with the same breakpoint number, we don't want dupes.
2734while(l>=0){if(_.breakpoints[l]&&_.breakpoints[l]===currentBreakpoint){_.breakpoints.splice(l,1);}l--;}_.breakpoints.push(currentBreakpoint);_.breakpointSettings[currentBreakpoint]=responsiveSettings[breakpoint].settings;}}_.breakpoints.sort(function(a,b){return _.options.mobileFirst?a-b:b-a;});}};Slick.prototype.reinit=function(){var _=this;_.$slides=_.$slideTrack.children(_.options.slide).addClass('slick-slide');_.slideCount=_.$slides.length;if(_.currentSlide>=_.slideCount&&_.currentSlide!==0){_.currentSlide=_.currentSlide-_.options.slidesToScroll;}if(_.slideCount<=_.options.slidesToShow){_.currentSlide=0;}_.registerBreakpoints();_.setProps();_.setupInfinite();_.buildArrows();_.updateArrows();_.initArrowEvents();_.buildDots();_.updateDots();_.initDotEvents();_.cleanUpSlideEvents();_.initSlideEvents();_.checkResponsive(false,true);if(_.options.focusOnSelect===true){$(_.$slideTrack).children().on('click.slick',_.selectHandler);}_.setSlideClasses(typeof _.currentSlide==='number'?_.currentSlide:0);_.setPosition();_.focusHandler();_.paused=!_.options.autoplay;_.autoPlay();_.$slider.trigger('reInit',[_]);};Slick.prototype.resize=function(){var _=this;if($(window).width()!==_.windowWidth){clearTimeout(_.windowDelay);_.windowDelay=window.setTimeout(function(){_.windowWidth=$(window).width();_.checkResponsive();if(!_.unslicked){_.setPosition();}},50);}};Slick.prototype.removeSlide=Slick.prototype.slickRemove=function(index,removeBefore,removeAll){var _=this;if(typeof index==='boolean'){removeBefore=index;index=removeBefore===true?0:_.slideCount-1;}else{index=removeBefore===true?--index:index;}if(_.slideCount<1||index<0||index>_.slideCount-1){return false;}_.unload();if(removeAll===true){_.$slideTrack.children().remove();}else{_.$slideTrack.children(this.options.slide).eq(index).remove();}_.$slides=_.$slideTrack.children(this.options.slide);_.$slideTrack.children(this.options.slide).detach();_.$slideTrack.append(_.$slides);_.$slidesCache=_.$slides;_.reinit();};Slick.prototype.setCSS=function(position){var _=this,positionProps={},x,y;if(_.options.rtl===true){position=-position;}x=_.positionProp=='left'?Math.ceil(position)+'px':'0px';y=_.positionProp=='top'?Math.ceil(position)+'px':'0px';positionProps[_.positionProp]=position;if(_.transformsEnabled===false){_.$slideTrack.css(positionProps);}else{positionProps={};if(_.cssTransitions===false){positionProps[_.animType]='translate('+x+', '+y+')';_.$slideTrack.css(positionProps);}else{positionProps[_.animType]='translate3d('+x+', '+y+', 0px)';_.$slideTrack.css(positionProps);}}};Slick.prototype.setDimensions=function(){var _=this;if(_.options.vertical===false){if(_.options.centerMode===true){_.$list.css({padding:'0px '+_.options.centerPadding});}}else{_.$list.height(_.$slides.first().outerHeight(true)*_.options.slidesToShow);if(_.options.centerMode===true){_.$list.css({padding:_.options.centerPadding+' 0px'});}}_.listWidth=_.$list.width();_.listHeight=_.$list.height();if(_.options.vertical===false&&_.options.variableWidth===false){_.slideWidth=Math.ceil(_.listWidth/_.options.slidesToShow);_.$slideTrack.width(Math.ceil(_.slideWidth*_.$slideTrack.children('.slick-slide').length));}else if(_.options.variableWidth===true){_.$slideTrack.width(5000*_.slideCount);}else{_.slideWidth=Math.ceil(_.listWidth);_.$slideTrack.height(Math.ceil(_.$slides.first().outerHeight(true)*_.$slideTrack.children('.slick-slide').length));}var offset=_.$slides.first().outerWidth(true)-_.$slides.first().width();if(_.options.variableWidth===false)_.$slideTrack.children('.slick-slide').width(_.slideWidth-offset);};Slick.prototype.setFade=function(){var _=this,targetLeft;_.$slides.each(function(index,element){targetLeft=_.slideWidth*index*-1;if(_.options.rtl===true){$(element).css({position:'relative',right:targetLeft,top:0,zIndex:_.options.zIndex-2,opacity:0});}else{$(element).css({position:'relative',left:targetLeft,top:0,zIndex:_.options.zIndex-2,opacity:0});}});_.$slides.eq(_.currentSlide).css({zIndex:_.options.zIndex-1,opacity:1});};Slick.prototype.setHeight=function(){var _=this;if(_.options.slidesToShow===1&&_.options.adaptiveHeight===true&&_.options.vertical===false){var targetHeight=_.$slides.eq(_.currentSlide).outerHeight(true);_.$list.css('height',targetHeight);}};Slick.prototype.setOption=Slick.prototype.slickSetOption=function(){/**
2735         * accepts arguments in format of:
2736         *
2737         *  - for changing a single option's value:
2738         *     .slick("setOption", option, value, refresh )
2739         *
2740         *  - for changing a set of responsive options:
2741         *     .slick("setOption", 'responsive', [{}, ...], refresh )
2742         *
2743         *  - for updating multiple values at once (not responsive)
2744         *     .slick("setOption", { 'option': value, ... }, refresh )
2745         */var _=this,l,item,option,value,refresh=false,type;if($.type(arguments[0])==='object'){option=arguments[0];refresh=arguments[1];type='multiple';}else if($.type(arguments[0])==='string'){option=arguments[0];value=arguments[1];refresh=arguments[2];if(arguments[0]==='responsive'&&$.type(arguments[1])==='array'){type='responsive';}else if(typeof arguments[1]!=='undefined'){type='single';}}if(type==='single'){_.options[option]=value;}else if(type==='multiple'){$.each(option,function(opt,val){_.options[opt]=val;});}else if(type==='responsive'){for(item in value){if($.type(_.options.responsive)!=='array'){_.options.responsive=[value[item]];}else{l=_.options.responsive.length-1;// loop through the responsive object and splice out duplicates.
2746while(l>=0){if(_.options.responsive[l].breakpoint===value[item].breakpoint){_.options.responsive.splice(l,1);}l--;}_.options.responsive.push(value[item]);}}}if(refresh){_.unload();_.reinit();}};Slick.prototype.setPosition=function(){var _=this;_.setDimensions();_.setHeight();if(_.options.fade===false){_.setCSS(_.getLeft(_.currentSlide));}else{_.setFade();}_.$slider.trigger('setPosition',[_]);};Slick.prototype.setProps=function(){var _=this,bodyStyle=document.body.style;_.positionProp=_.options.vertical===true?'top':'left';if(_.positionProp==='top'){_.$slider.addClass('slick-vertical');}else{_.$slider.removeClass('slick-vertical');}if(bodyStyle.WebkitTransition!==undefined||bodyStyle.MozTransition!==undefined||bodyStyle.msTransition!==undefined){if(_.options.useCSS===true){_.cssTransitions=true;}}if(_.options.fade){if(typeof _.options.zIndex==='number'){if(_.options.zIndex<3){_.options.zIndex=3;}}else{_.options.zIndex=_.defaults.zIndex;}}if(bodyStyle.OTransform!==undefined){_.animType='OTransform';_.transformType='-o-transform';_.transitionType='OTransition';if(bodyStyle.perspectiveProperty===undefined&&bodyStyle.webkitPerspective===undefined)_.animType=false;}if(bodyStyle.MozTransform!==undefined){_.animType='MozTransform';_.transformType='-moz-transform';_.transitionType='MozTransition';if(bodyStyle.perspectiveProperty===undefined&&bodyStyle.MozPerspective===undefined)_.animType=false;}if(bodyStyle.webkitTransform!==undefined){_.animType='webkitTransform';_.transformType='-webkit-transform';_.transitionType='webkitTransition';if(bodyStyle.perspectiveProperty===undefined&&bodyStyle.webkitPerspective===undefined)_.animType=false;}if(bodyStyle.msTransform!==undefined){_.animType='msTransform';_.transformType='-ms-transform';_.transitionType='msTransition';if(bodyStyle.msTransform===undefined)_.animType=false;}if(bodyStyle.transform!==undefined&&_.animType!==false){_.animType='transform';_.transformType='transform';_.transitionType='transition';}_.transformsEnabled=_.options.useTransform&&_.animType!==null&&_.animType!==false;};Slick.prototype.setSlideClasses=function(index){var _=this,centerOffset,allSlides,indexOffset,remainder;allSlides=_.$slider.find('.slick-slide').removeClass('slick-active slick-center slick-current').attr('aria-hidden','true');_.$slides.eq(index).addClass('slick-current');if(_.options.centerMode===true){var evenCoef=_.options.slidesToShow%2===0?1:0;centerOffset=Math.floor(_.options.slidesToShow/2);if(_.options.infinite===true){if(index>=centerOffset&&index<=_.slideCount-1-centerOffset){_.$slides.slice(index-centerOffset+evenCoef,index+centerOffset+1).addClass('slick-active').attr('aria-hidden','false');}else{indexOffset=_.options.slidesToShow+index;allSlides.slice(indexOffset-centerOffset+1+evenCoef,indexOffset+centerOffset+2).addClass('slick-active').attr('aria-hidden','false');}if(index===0){allSlides.eq(allSlides.length-1-_.options.slidesToShow).addClass('slick-center');}else if(index===_.slideCount-1){allSlides.eq(_.options.slidesToShow).addClass('slick-center');}}_.$slides.eq(index).addClass('slick-center');}else{if(index>=0&&index<=_.slideCount-_.options.slidesToShow){_.$slides.slice(index,index+_.options.slidesToShow).addClass('slick-active').attr('aria-hidden','false');}else if(allSlides.length<=_.options.slidesToShow){allSlides.addClass('slick-active').attr('aria-hidden','false');}else{remainder=_.slideCount%_.options.slidesToShow;indexOffset=_.options.infinite===true?_.options.slidesToShow+index:index;if(_.options.slidesToShow==_.options.slidesToScroll&&_.slideCount-index<_.options.slidesToShow){allSlides.slice(indexOffset-(_.options.slidesToShow-remainder),indexOffset+remainder).addClass('slick-active').attr('aria-hidden','false');}else{allSlides.slice(indexOffset,indexOffset+_.options.slidesToShow).addClass('slick-active').attr('aria-hidden','false');}}}if(_.options.lazyLoad==='ondemand'||_.options.lazyLoad==='anticipated'){_.lazyLoad();}};Slick.prototype.setupInfinite=function(){var _=this,i,slideIndex,infiniteCount;if(_.options.fade===true){_.options.centerMode=false;}if(_.options.infinite===true&&_.options.fade===false){slideIndex=null;if(_.slideCount>_.options.slidesToShow){if(_.options.centerMode===true){infiniteCount=_.options.slidesToShow+1;}else{infiniteCount=_.options.slidesToShow;}for(i=_.slideCount;i>_.slideCount-infiniteCount;i-=1){slideIndex=i-1;$(_.$slides[slideIndex]).clone(true).attr('id','').attr('data-slick-index',slideIndex-_.slideCount).prependTo(_.$slideTrack).addClass('slick-cloned');}for(i=0;i<infiniteCount+_.slideCount;i+=1){slideIndex=i;$(_.$slides[slideIndex]).clone(true).attr('id','').attr('data-slick-index',slideIndex+_.slideCount).appendTo(_.$slideTrack).addClass('slick-cloned');}_.$slideTrack.find('.slick-cloned').find('[id]').each(function(){$(this).attr('id','');});}}};Slick.prototype.interrupt=function(toggle){var _=this;if(!toggle){_.autoPlay();}_.interrupted=toggle;};Slick.prototype.selectHandler=function(event){var _=this;var targetElement=$(event.target).is('.slick-slide')?$(event.target):$(event.target).parents('.slick-slide');var index=parseInt(targetElement.attr('data-slick-index'));if(!index)index=0;if(_.slideCount<=_.options.slidesToShow){_.slideHandler(index,false,true);return;}_.slideHandler(index);};Slick.prototype.slideHandler=function(index,sync,dontAnimate){var targetSlide,animSlide,oldSlide,slideLeft,targetLeft=null,_=this,navTarget;sync=sync||false;if(_.animating===true&&_.options.waitForAnimate===true){return;}if(_.options.fade===true&&_.currentSlide===index){return;}if(sync===false){_.asNavFor(index);}targetSlide=index;targetLeft=_.getLeft(targetSlide);slideLeft=_.getLeft(_.currentSlide);_.currentLeft=_.swipeLeft===null?slideLeft:_.swipeLeft;if(_.options.infinite===false&&_.options.centerMode===false&&(index<0||index>_.getDotCount()*_.options.slidesToScroll)){if(_.options.fade===false){targetSlide=_.currentSlide;if(dontAnimate!==true&&_.slideCount>_.options.slidesToShow){_.animateSlide(slideLeft,function(){_.postSlide(targetSlide);});}else{_.postSlide(targetSlide);}}return;}else if(_.options.infinite===false&&_.options.centerMode===true&&(index<0||index>_.slideCount-_.options.slidesToScroll)){if(_.options.fade===false){targetSlide=_.currentSlide;if(dontAnimate!==true&&_.slideCount>_.options.slidesToShow){_.animateSlide(slideLeft,function(){_.postSlide(targetSlide);});}else{_.postSlide(targetSlide);}}return;}if(_.options.autoplay){clearInterval(_.autoPlayTimer);}if(targetSlide<0){if(_.slideCount%_.options.slidesToScroll!==0){animSlide=_.slideCount-_.slideCount%_.options.slidesToScroll;}else{animSlide=_.slideCount+targetSlide;}}else if(targetSlide>=_.slideCount){if(_.slideCount%_.options.slidesToScroll!==0){animSlide=0;}else{animSlide=targetSlide-_.slideCount;}}else{animSlide=targetSlide;}_.animating=true;_.$slider.trigger('beforeChange',[_,_.currentSlide,animSlide]);oldSlide=_.currentSlide;_.currentSlide=animSlide;_.setSlideClasses(_.currentSlide);if(_.options.asNavFor){navTarget=_.getNavTarget();navTarget=navTarget.slick('getSlick');if(navTarget.slideCount<=navTarget.options.slidesToShow){navTarget.setSlideClasses(_.currentSlide);}}_.updateDots();_.updateArrows();if(_.options.fade===true){if(dontAnimate!==true){_.fadeSlideOut(oldSlide);_.fadeSlide(animSlide,function(){_.postSlide(animSlide);});}else{_.postSlide(animSlide);}_.animateHeight();return;}if(dontAnimate!==true&&_.slideCount>_.options.slidesToShow){_.animateSlide(targetLeft,function(){_.postSlide(animSlide);});}else{_.postSlide(animSlide);}};Slick.prototype.startLoad=function(){var _=this;if(_.options.arrows===true&&_.slideCount>_.options.slidesToShow){_.$prevArrow.hide();_.$nextArrow.hide();}if(_.options.dots===true&&_.slideCount>_.options.slidesToShow){_.$dots.hide();}_.$slider.addClass('slick-loading');};Slick.prototype.swipeDirection=function(){var xDist,yDist,r,swipeAngle,_=this;xDist=_.touchObject.startX-_.touchObject.curX;yDist=_.touchObject.startY-_.touchObject.curY;r=Math.atan2(yDist,xDist);swipeAngle=Math.round(r*180/Math.PI);if(swipeAngle<0){swipeAngle=360-Math.abs(swipeAngle);}if(swipeAngle<=45&&swipeAngle>=0){return _.options.rtl===false?'left':'right';}if(swipeAngle<=360&&swipeAngle>=315){return _.options.rtl===false?'left':'right';}if(swipeAngle>=135&&swipeAngle<=225){return _.options.rtl===false?'right':'left';}if(_.options.verticalSwiping===true){if(swipeAngle>=35&&swipeAngle<=135){return'down';}else{return'up';}}return'vertical';};Slick.prototype.swipeEnd=function(event){var _=this,slideCount,direction;_.dragging=false;_.swiping=false;if(_.scrolling){_.scrolling=false;return false;}_.interrupted=false;_.shouldClick=_.touchObject.swipeLength>10?false:true;if(_.touchObject.curX===undefined){return false;}if(_.touchObject.edgeHit===true){_.$slider.trigger('edge',[_,_.swipeDirection()]);}if(_.touchObject.swipeLength>=_.touchObject.minSwipe){direction=_.swipeDirection();switch(direction){case'left':case'down':slideCount=_.options.swipeToSlide?_.checkNavigable(_.currentSlide+_.getSlideCount()):_.currentSlide+_.getSlideCount();_.currentDirection=0;break;case'right':case'up':slideCount=_.options.swipeToSlide?_.checkNavigable(_.currentSlide-_.getSlideCount()):_.currentSlide-_.getSlideCount();_.currentDirection=1;break;default:}if(direction!='vertical'){_.slideHandler(slideCount);_.touchObject={};_.$slider.trigger('swipe',[_,direction]);}}else{if(_.touchObject.startX!==_.touchObject.curX){_.slideHandler(_.currentSlide);_.touchObject={};}}};Slick.prototype.swipeHandler=function(event){var _=this;if(_.options.swipe===false||'ontouchend'in document&&_.options.swipe===false){return;}else if(_.options.draggable===false&&event.type.indexOf('mouse')!==-1){return;}_.touchObject.fingerCount=event.originalEvent&&event.originalEvent.touches!==undefined?event.originalEvent.touches.length:1;_.touchObject.minSwipe=_.listWidth/_.options.touchThreshold;if(_.options.verticalSwiping===true){_.touchObject.minSwipe=_.listHeight/_.options.touchThreshold;}switch(event.data.action){case'start':_.swipeStart(event);break;case'move':_.swipeMove(event);break;case'end':_.swipeEnd(event);break;}};Slick.prototype.swipeMove=function(event){var _=this,edgeWasHit=false,curLeft,swipeDirection,swipeLength,positionOffset,touches,verticalSwipeLength;touches=event.originalEvent!==undefined?event.originalEvent.touches:null;if(!_.dragging||_.scrolling||touches&&touches.length!==1){return false;}curLeft=_.getLeft(_.currentSlide);_.touchObject.curX=touches!==undefined?touches[0].pageX:event.clientX;_.touchObject.curY=touches!==undefined?touches[0].pageY:event.clientY;_.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(_.touchObject.curX-_.touchObject.startX,2)));verticalSwipeLength=Math.round(Math.sqrt(Math.pow(_.touchObject.curY-_.touchObject.startY,2)));if(!_.options.verticalSwiping&&!_.swiping&&verticalSwipeLength>4){_.scrolling=true;return false;}if(_.options.verticalSwiping===true){_.touchObject.swipeLength=verticalSwipeLength;}swipeDirection=_.swipeDirection();if(event.originalEvent!==undefined&&_.touchObject.swipeLength>4){_.swiping=true;event.preventDefault();}positionOffset=(_.options.rtl===false?1:-1)*(_.touchObject.curX>_.touchObject.startX?1:-1);if(_.options.verticalSwiping===true){positionOffset=_.touchObject.curY>_.touchObject.startY?1:-1;}swipeLength=_.touchObject.swipeLength;_.touchObject.edgeHit=false;if(_.options.infinite===false){if(_.currentSlide===0&&swipeDirection==='right'||_.currentSlide>=_.getDotCount()&&swipeDirection==='left'){swipeLength=_.touchObject.swipeLength*_.options.edgeFriction;_.touchObject.edgeHit=true;}}if(_.options.vertical===false){_.swipeLeft=curLeft+swipeLength*positionOffset;}else{_.swipeLeft=curLeft+swipeLength*(_.$list.height()/_.listWidth)*positionOffset;}if(_.options.verticalSwiping===true){_.swipeLeft=curLeft+swipeLength*positionOffset;}if(_.options.fade===true||_.options.touchMove===false){return false;}if(_.animating===true){_.swipeLeft=null;return false;}_.setCSS(_.swipeLeft);};Slick.prototype.swipeStart=function(event){var _=this,touches;_.interrupted=true;if(_.touchObject.fingerCount!==1||_.slideCount<=_.options.slidesToShow){_.touchObject={};return false;}if(event.originalEvent!==undefined&&event.originalEvent.touches!==undefined){touches=event.originalEvent.touches[0];}_.touchObject.startX=_.touchObject.curX=touches!==undefined?touches.pageX:event.clientX;_.touchObject.startY=_.touchObject.curY=touches!==undefined?touches.pageY:event.clientY;_.dragging=true;};Slick.prototype.unfilterSlides=Slick.prototype.slickUnfilter=function(){var _=this;if(_.$slidesCache!==null){_.unload();_.$slideTrack.children(this.options.slide).detach();_.$slidesCache.appendTo(_.$slideTrack);_.reinit();}};Slick.prototype.unload=function(){var _=this;$('.slick-cloned',_.$slider).remove();if(_.$dots){_.$dots.remove();}if(_.$prevArrow&&_.htmlExpr.test(_.options.prevArrow)){_.$prevArrow.remove();}if(_.$nextArrow&&_.htmlExpr.test(_.options.nextArrow)){_.$nextArrow.remove();}_.$slides.removeClass('slick-slide slick-active slick-visible slick-current').attr('aria-hidden','true').css('width','');};
2746Slick.prototype.unslick=function(fromBreakpoint){var _=this;_.$slider.trigger('unslick',[_,fromBreakpoint]);_.destroy();};Slick.prototype.updateArrows=function(){var _=this,centerOffset;centerOffset=Math.floor(_.options.slidesToShow/2);if(_.options.arrows===true&&_.slideCount>_.options.slidesToShow&&!_.options.infinite){_.$prevArrow.removeClass('slick-disabled').attr('aria-disabled','false');_.$nextArrow.removeClass('slick-disabled').attr('aria-disabled','false');if(_.currentSlide===0){_.$prevArrow.addClass('slick-disabled').attr('aria-disabled','true');_.$nextArrow.removeClass('slick-disabled').attr('aria-disabled','false');}else if(_.currentSlide>=_.slideCount-_.options.slidesToShow&&_.options.centerMode===false){_.$nextArrow.addClass('slick-disabled').attr('aria-disabled','true');_.$prevArrow.removeClass('slick-disabled').attr('aria-disabled','false');}else if(_.currentSlide>=_.slideCount-1&&_.options.centerMode===true){_.$nextArrow.addClass('slick-disabled').attr('aria-disabled','true');_.$prevArrow.removeClass('slick-disabled').attr('aria-disabled','false');}}};Slick.prototype.updateDots=function(){var _=this;if(_.$dots!==null){_.$dots.find('li').removeClass('slick-active').end();_.$dots.find('li').eq(Math.floor(_.currentSlide/_.options.slidesToScroll)).addClass('slick-active');}};Slick.prototype.visibility=function(){var _=this;if(_.options.autoplay){if(document[_.hidden]){_.interrupted=true;}else{_.interrupted=false;}}};$.fn.slick=function(){var _=this,opt=arguments[0],args=Array.prototype.slice.call(arguments,1),l=_.length,i,ret;for(i=0;i<l;i++){if((typeof opt==='undefined'?'undefined':_typeof(opt))=='object'||typeof opt=='undefined')_[i].slick=new Slick(_[i],opt);else ret=_[i].slick[opt].apply(_[i].slick,args);if(typeof ret!='undefined')return ret;}return _;};});/*jshint browser:true *//*!
2747* FitVids 1.1
2748*
2749* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
2750* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
2751* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
2752*
2753*/;(function($){'use strict';$.fn.fitVids=function(options){var settings={customSelector:null,ignore:null};if(!document.getElementById('fit-vids-style')){// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
2754var head=document.head||document.getElementsByTagName('head')[0];var css='.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';var div=document.createElement("div");div.innerHTML='<p>x</p><style id="fit-vids-style">'+css+'</style>';head.appendChild(div.childNodes[1]);}if(options){$.extend(settings,options);}return this.each(function(){var selectors=['iframe[src*="player.vimeo.com"]','iframe[src*="youtube.com"]','iframe[src*="youtube-nocookie.com"]','iframe[src*="kickstarter.com"][src*="video.html"]','object','embed'];if(settings.customSelector){selectors.push(settings.customSelector);}var ignoreList='.fitvidsignore';if(settings.ignore){ignoreList=ignoreList+', '+settings.ignore;}var $allVideos=$(this).find(selectors.join(','));$allVideos=$allVideos.not('object object');// SwfObj conflict patch
2755$allVideos=$allVideos.not(ignoreList);// Disable FitVids on this video.
2756$allVideos.each(function(){var $this=$(this);if($this.parents(ignoreList).length>0){return;// Disable FitVids on this video.
2757}if(this.tagName.toLowerCase()==='embed'&&$this.parent('object').length||$this.parent('.fluid-width-video-wrapper').length){return;}if(!$this.css('height')&&!$this.css('width')&&(isNaN($this.attr('height'))||isNaN($this.attr('width')))){$this.attr('height',9);$this.attr('width',16);}var height=this.tagName.toLowerCase()==='object'||$this.attr('height')&&!isNaN(parseInt($this.attr('height'),10))?parseInt($this.attr('height'),10):$this.height(),width=!isNaN(parseInt($this.attr('width'),10))?parseInt($this.attr('width'),10):$this.width(),aspectRatio=height/width;if(!$this.attr('name')){var videoName='fitvid'+$.fn.fitVids._count;$this.attr('name',videoName);$.fn.fitVids._count++;}$this.wrap('<div class="fluid-width-video-wrapper"></div>').parent('.fluid-width-video-wrapper').css('padding-top',aspectRatio*100+'%');$this.removeAttr('height').removeAttr('width');});});};
vendor: 13,702 bytes, lines 2757-2871
2757// Internal counter for unique video names.
2758$.fn.fitVids._count=0;// Works with either jQuery or Zepto
2759})(window.jQuery||window.Zepto);/*
2760 * ScrollToFixed
2761 * https://github.com/bigspotteddog/ScrollToFixed
2762 *
2763 * Copyright (c) 2011 Joseph Cava-Lynch
2764 * MIT license
2765 */(function($){$.isScrollToFixed=function(el){return!!$(el).data('ScrollToFixed');};$.ScrollToFixed=function(el,options){// To avoid scope issues, use 'base' instead of 'this' to reference this
2766// class from internal events and functions.
2767var base=this;// Access to jQuery and DOM versions of element.
2768base.$el=$(el);base.el=el;// Add a reverse reference to the DOM object.
2769base.$el.data('ScrollToFixed',base);// A flag so we know if the scroll has been reset.
2770var isReset=false;// The element that was given to us to fix if scrolled above the top of
2771// the page.
2772var target=base.$el;var position;var originalPosition;var originalFloat;var originalOffsetTop;var originalZIndex;// The offset top of the element when resetScroll was called. This is
2773// used to determine if we have scrolled past the top of the element.
2774var offsetTop=0;// The offset left of the element when resetScroll was called. This is
2775// used to move the element left or right relative to the horizontal
2776// scroll.
2777var offsetLeft=0;var originalOffsetLeft=-1;// This last offset used to move the element horizontally. This is used
2778// to determine if we need to move the element because we would not want
2779// to do that for no reason.
2780var lastOffsetLeft=-1;// This is the element used to fill the void left by the target element
2781// when it goes fixed; otherwise, everything below it moves up the page.
2782var spacer=null;var spacerClass;var className;// Capture the original offsets for the target element. This needs to be
2783// called whenever the page size changes or when the page is first
2784// scrolled. For some reason, calling this before the page is first
2785// scrolled causes the element to become fixed too late.
2786function resetScroll(){// Set the element to it original positioning.
2787target.trigger('preUnfixed.ScrollToFixed');setUnfixed();target.trigger('unfixed.ScrollToFixed');// Reset the last offset used to determine if the page has moved
2788// horizontally.
2789lastOffsetLeft=-1;// Capture the offset top of the target element.
2790offsetTop=target.offset().top;// Capture the offset left of the target element.
2791offsetLeft=target.offset().left;// If the offsets option is on, alter the left offset.
2792if(base.options.offsets){offsetLeft+=target.offset().left-target.position().left;}if(originalOffsetLeft==-1){originalOffsetLeft=offsetLeft;}position=target.css('position');// Set that this has been called at least once.
2793isReset=true;if(base.options.bottom!=-1){target.trigger('preFixed.ScrollToFixed');setFixed();target.trigger('fixed.ScrollToFixed');}}function getLimit(){var limit=base.options.limit;if(!limit)return 0;if(typeof limit==='function'){return limit.apply(target);}return limit;}// Returns whether the target element is fixed or not.
2794function isFixed(){return position==='fixed';}// Returns whether the target element is absolute or not.
2795function isAbsolute(){return position==='absolute';}function isUnfixed(){return!(isFixed()||isAbsolute());}// Sets the target element to fixed. Also, sets the spacer to fill the
2796// void left by the target element.
2797function setFixed(){// Only fix the target element and the spacer if we need to.
2798if(!isFixed()){//get REAL dimensions (decimal fix)
2799//Ref. http://stackoverflow.com/questions/3603065/how-to-make-jquery-to-not-round-value-returned-by-width
2800var dimensions=target[0].getBoundingClientRect();// Set the spacer to fill the height and width of the target
2801// element, then display it.
2802spacer.css({'display':target.css('display'),'width':dimensions.width,'height':dimensions.height,'float':target.css('float')});// Set the target element to fixed and set its width so it does
2803// not fill the rest of the page horizontally. Also, set its top
2804// to the margin top specified in the options.
2805cssOptions={'z-index':base.options.zIndex,'position':'fixed','top':base.options.bottom==-1?getMarginTop():'','bottom':base.options.bottom==-1?'':base.options.bottom,'margin-left':'0px'};if(!base.options.dontSetWidth){cssOptions['width']=target.css('width');};target.css(cssOptions);target.addClass(base.options.baseClassName);if(base.options.className){target.addClass(base.options.className);}position='fixed';}}function setAbsolute(){var top=getLimit();var left=offsetLeft;if(base.options.removeOffsets){left='';top=top-offsetTop;}cssOptions={'position':'absolute','top':top,'left':left,'margin-left':'0px','bottom':''};if(!base.options.dontSetWidth){cssOptions['width']=target.css('width');};target.css(cssOptions);position='absolute';}// Sets the target element back to unfixed. Also, hides the spacer.
2806function setUnfixed(){// Only unfix the target element and the spacer if we need to.
2807if(!isUnfixed()){lastOffsetLeft=-1;// Hide the spacer now that the target element will fill the
2808// space.
2809spacer.css('display','none');// Remove the style attributes that were added to the target.
2810// This will reverse the target back to the its original style.
2811target.css({'z-index':originalZIndex,'width':'','position':originalPosition,'left':'','top':originalOffsetTop,'margin-left':''});target.removeClass('scroll-to-fixed-fixed');if(base.options.className){target.removeClass(base.options.className);}position=null;}}// Moves the target element left or right relative to the horizontal
2812// scroll position.
2813function setLeft(x){// Only if the scroll is not what it was last time we did this.
2814if(x!=lastOffsetLeft){// Move the target element horizontally relative to its original
2815// horizontal position.
2816target.css('left',offsetLeft-x);// Hold the last horizontal position set.
2817lastOffsetLeft=x;}}function getMarginTop(){var marginTop=base.options.marginTop;if(!marginTop)return 0;if(typeof marginTop==='function'){return marginTop.apply(target);}return marginTop;}// Checks to see if we need to do something based on new scroll position
2818// of the page.
2819function checkScroll(){if(!$.isScrollToFixed(target)||target.is(':hidden'))return;var wasReset=isReset;var wasUnfixed=isUnfixed();// If resetScroll has not yet been called, call it. This only
2820// happens once.
2821if(!isReset){resetScroll();}else if(isUnfixed()){// if the offset has changed since the last scroll,
2822// we need to get it again.
2823// Capture the offset top of the target element.
2824offsetTop=target.offset().top;// Capture the offset left of the target element.
2825offsetLeft=target.offset().left;}// Grab the current horizontal scroll position.
2826var x=$(window).scrollLeft();// Grab the current vertical scroll position.
2827var y=$(window).scrollTop();// Get the limit, if there is one.
2828var limit=getLimit();// If the vertical scroll position, plus the optional margin, would
2829// put the target element at the specified limit, set the target
2830// element to absolute.
2831if(base.options.minWidth&&$(window).width()<base.options.minWidth){if(!isUnfixed()||!wasReset){postPosition();target.trigger('preUnfixed.ScrollToFixed');setUnfixed();target.trigger('unfixed.ScrollToFixed');}}else if(base.options.maxWidth&&$(window).width()>base.options.maxWidth){if(!isUnfixed()||!wasReset){postPosition();target.trigger('preUnfixed.ScrollToFixed');setUnfixed();target.trigger('unfixed.ScrollToFixed');}}else if(base.options.bottom==-1){// If the vertical scroll position, plus the optional margin, would
2832// put the target element at the specified limit, set the target
2833// element to absolute.
2834if(limit>0&&y>=limit-getMarginTop()){if(!wasUnfixed&&(!isAbsolute()||!wasReset)){postPosition();target.trigger('preAbsolute.ScrollToFixed');setAbsolute();target.trigger('unfixed.ScrollToFixed');}// If the vertical scroll position, plus the optional margin, would
2835// put the target element above the top of the page, set the target
2836// element to fixed.
2837}else if(y>=offsetTop-getMarginTop()){if(!isFixed()||!wasReset){postPosition();target.trigger('preFixed.ScrollToFixed');// Set the target element to fixed.
2838setFixed();// Reset the last offset left because we just went fixed.
2839lastOffsetLeft=-1;target.trigger('fixed.ScrollToFixed');}// If the page has been scrolled horizontally as well, move the
2840// target element accordingly.
2841setLeft(x);}else{// Set the target element to unfixed, placing it where it was
2842// before.
2843if(!isUnfixed()||!wasReset){postPosition();target.trigger('preUnfixed.ScrollToFixed');setUnfixed();target.trigger('unfixed.ScrollToFixed');}}}else{if(limit>0){if(y+$(window).height()-target.outerHeight(true)>=limit-(getMarginTop()||-getBottom())){if(isFixed()){postPosition();target.trigger('preUnfixed.ScrollToFixed');if(originalPosition==='absolute'){setAbsolute();}else{setUnfixed();}target.trigger('unfixed.ScrollToFixed');}}else{if(!isFixed()){postPosition();target.trigger('preFixed.ScrollToFixed');setFixed();}setLeft(x);target.trigger('fixed.ScrollToFixed');}}else{setLeft(x);}}}function getBottom(){if(!base.options.bottom)return 0;return base.options.bottom;}function postPosition(){var position=target.css('position');if(position=='absolute'){target.trigger('postAbsolute.ScrollToFixed');}else if(position=='fixed'){target.trigger('postFixed.ScrollToFixed');}else{target.trigger('postUnfixed.ScrollToFixed');}}var windowResize=function windowResize(event){// Check if the element is visible before updating it's position, which
2844// improves behavior with responsive designs where this element is hidden.
2845if(target.is(':visible')){isReset=false;checkScroll();}else{// Ensure the spacer is hidden
2846setUnfixed();}};var windowScroll=function windowScroll(event){!!window.requestAnimationFrame?requestAnimationFrame(checkScroll):checkScroll();};// From: http://kangax.github.com/cft/#IS_POSITION_FIXED_SUPPORTED
2847var isPositionFixedSupported=function isPositionFixedSupported(){var container=document.body;if(document.createElement&&container&&container.appendChild&&container.removeChild){var el=document.createElement('div');if(!el.getBoundingClientRect)return null;el.innerHTML='x';el.style.cssText='position:fixed;top:100px;';container.appendChild(el);var originalHeight=container.style.height,originalScrollTop=container.scrollTop;container.style.height='3000px';container.scrollTop=500;var elementTop=el.getBoundingClientRect().top;container.style.height=originalHeight;var isSupported=elementTop===100;container.removeChild(el);container.scrollTop=originalScrollTop;return isSupported;}return null;};var preventDefault=function preventDefault(e){e=e||window.event;if(e.preventDefault){e.preventDefault();}e.returnValue=false;};// Initializes this plugin. Captures the options passed in, turns this
2848// off for devices that do not support fixed position, adds the spacer,
2849// and binds to the window scroll and resize events.
2850base.init=function(){// Capture the options for this plugin.
2851base.options=$.extend({},$.ScrollToFixed.defaultOptions,options);originalZIndex=target.css('z-index');// Turn off this functionality for devices that do not support it.
2852// if (!(base.options && base.options.dontCheckForPositionFixedSupport)) {
2853//     var fixedSupported = isPositionFixedSupported();
2854//     if (!fixedSupported) return;
2855// }
2856// Put the target element on top of everything that could be below
2857// it. This reduces flicker when the target element is transitioning
2858// to fixed.
2859base.$el.css('z-index',base.options.zIndex);// Create a spacer element to fill the void left by the target
2860// element when it goes fixed.
2861spacer=$('<div />');position=target.css('position');originalPosition=target.css('position');originalFloat=target.css('float');originalOffsetTop=target.css('top');// Place the spacer right after the target element.
2862if(isUnfixed())base.$el.after(spacer);// Reset the target element offsets when the window is resized, then
2863// check to see if we need to fix or unfix the target element.
2864$(window).bind('resize.ScrollToFixed',windowResize);// When the window scrolls, check to see if we need to fix or unfix
2865// the target element.
2866$(window).bind('scroll.ScrollToFixed',windowScroll);// For touch devices, call checkScroll directlly rather than
2867// rAF wrapped windowScroll to animate the element
2868if('ontouchmove'in window){$(window).bind('touchmove.ScrollToFixed',checkScroll);}if(base.options.preFixed){target.bind('preFixed.ScrollToFixed',base.options.preFixed);}if(base.options.postFixed){target.bind('postFixed.ScrollToFixed',base.options.postFixed);}if(base.options.preUnfixed){target.bind('preUnfixed.ScrollToFixed',base.options.preUnfixed);}if(base.options.postUnfixed){target.bind('postUnfixed.ScrollToFixed',base.options.postUnfixed);}if(base.options.preAbsolute){target.bind('preAbsolute.ScrollToFixed',base.options.preAbsolute);}if(base.options.postAbsolute){target.bind('postAbsolute.ScrollToFixed',base.options.postAbsolute);}if(base.options.fixed){target.bind('fixed.ScrollToFixed',base.options.fixed);}if(base.options.unfixed){target.bind('unfixed.ScrollToFixed',base.options.unfixed);}if(base.options.spacerClass){spacer.addClass(base.options.spacerClass);}target.bind('resize.ScrollToFixed',function(){spacer.height(target.height());});target.bind('scroll.ScrollToFixed',function(){target.trigger('preUnfixed.ScrollToFixed');setUnfixed();target.trigger('unfixed.ScrollToFixed');checkScroll();});target.bind('detach.ScrollToFixed',function(ev){preventDefault(ev);target.trigger('preUnfixed.ScrollToFixed');setUnfixed();target.trigger('unfixed.ScrollToFixed');$(window).unbind('resize.ScrollToFixed',windowResize);$(window).unbind('scroll.ScrollToFixed',windowScroll);target.unbind('.ScrollToFixed');//remove spacer from dom
2869spacer.remove();base.$el.removeData('ScrollToFixed');});// Reset everything.
2870windowResize();};// Initialize the plugin.
2871base.init();};
2871// Sets the option defaults.
2872$.ScrollToFixed.defaultOptions={marginTop:0,limit:0,bottom:-1,zIndex:1000,baseClassName:'scroll-to-fixed-fixed'};// Returns enhanced elements that will fix to the top of the page when the
2873// page is scrolled.
2874$.fn.scrollToFixed=function(options){return this.each(function(){new $.ScrollToFixed(this,options);});};})(jQuery);/*!
2875 * jQuery Cookiebar Plugin
2876 * https://github.com/carlwoodhouse/jquery.cookieBar
2877 *
2878 * Copyright 2012-17, Carl Woodhouse. the cookie function is inspired by https://github.com/carhartl/jquery-cookie
2879 * Disclaimer: if you still get fined for not complying with the eu cookielaw, it's not our fault.
2880 * Licence: MIT
2881 */(function($){$.cookie=function(key,value,options){if(arguments.length>1&&(!/Object/.test(Object.prototype.toString.call(value))||value===null||value===undefined)){options=$.extend({},options);if(value===null||value===undefined){options.expires=-1;}if(typeof options.expires==="number"){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days);}value=String(value);return document.cookie=[encodeURIComponent(key),"=",options.raw?value:encodeURIComponent(value),options.expires?"; expires="+options.expires.toUTCString():"",// max-age is not supported by IE
2882options.path?"; path="+options.path:"",options.domain?"; domain="+options.domain:"",options.secure?"; secure":""].join("");}options=value||{};var decode=options.raw?function(s){return s;}:decodeURIComponent;var pairs=document.cookie.split("; ");for(var i=0,pair;pair=pairs[i]&&pairs[i].split("=");i++){// IE
2883if(decode(pair[0])===key)return decode(pair[1]||"");}return null;};$.fn.cookieBar=function(options){var settings=$.extend({closeButton:"none",hideOnClose:true,secure:false,path:"/",domain:""},options);return this.each(function(){var cookiebar=$(this);// just in case they didnt hide it by default.
2884cookiebar.hide();// if close button not defined. define it!
2885if(settings.closeButton=="none"){cookiebar.append('<a class="cookiebar-close">Continue</a>');$.extend(settings,{closeButton:".cookiebar-close"});}if($.cookie("cookiebar")!="hide"){cookiebar.show();}cookiebar.find(settings.closeButton).click(function(){if(settings.hideOnClose){cookiebar.hide();}$.cookie("cookiebar","hide",{path:settings.path,secure:settings.secure,domain:settings.domain,expires:30});cookiebar.trigger("cookieBar-close");return false;});});};// self injection init
2886$.cookieBar=function(options){$("body").prepend('<div class="ui-widget"><div style="display: none;" class="cookie-message ui-widget-header blue"><p>By using this website you allow us to place cookies on your computer. They are harmless and never personally identify you.</p></div></div>');$(".cookie-message").cookieBar(options);};})(jQuery);/*!
2887 * JavaScript Cookie v2.2.1
2888 * https://github.com/js-cookie/js-cookie
2889 *
2890 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
2891 * Released under the MIT license
2892 */;(function(factory){var registeredInModuleLoader;if(typeof define==='function'&&define.amd){define(factory);registeredInModuleLoader=true;}if((typeof exports==='undefined'?'undefined':_typeof(exports))==='object'){module.exports=factory();registeredInModuleLoader=true;}if(!registeredInModuleLoader){var OldCookies=window.Cookies;var api=window.Cookies=factory();api.noConflict=function(){window.Cookies=OldCookies;return api;};}})(function(){function extend(){var i=0;var result={};for(;i<arguments.length;i++){var attributes=arguments[i];for(var key in attributes){result[key]=attributes[key];}}return result;}function decode(s){return s.replace(/(%[0-9A-Z]{2}
2892)+/g,decodeURIComponent);}function init(converter){function api(){}function set(key,value,attributes){if(typeof document==='undefined'){return;}attributes=extend({path:'/'},api.defaults,attributes);if(typeof attributes.expires==='number'){attributes.expires=new Date(new Date()*1+attributes.expires*864e+5);}// We're using "expires" because "max-age" is not supported by IE
2893attributes.expires=attributes.expires?attributes.expires.toUTCString():'';try{var result=JSON.stringify(value);if(/^[\{\[]/.test(result)){value=result;}}catch(e){}value=converter.write?converter.write(value,key):encodeURIComponent(String(value)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent);key=encodeURIComponent(String(key)).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent).replace(/[\(\)]/g,escape);var stringifiedAttributes='';for(var attributeName in attributes){if(!attributes[attributeName]){continue;}stringifiedAttributes+='; '+attributeName;if(attributes[attributeName]===true){continue;}// Considers RFC 6265 section 5.2:
2894// ...
2895// 3.  If the remaining unparsed-attributes contains a %x3B (";")
2896//     character:
2897// Consume the characters of the unparsed-attributes up to,
2898// not including, the first %x3B (";") character.
2899// ...
2900stringifiedAttributes+='='+attributes[attributeName].split(';')[0];}return document.cookie=key+'='+value+stringifiedAttributes;}function get(key,json){if(typeof document==='undefined'){return;}var jar={};// To prevent the for loop in the first place assign an empty array
2901// in case there are no cookies at all.
2902var cookies=document.cookie?document.cookie.split('; '):[];var i=0;for(;i<cookies.length;i++){var parts=cookies[i].split('=');var cookie=parts.slice(1).join('=');if(!json&&cookie.charAt(0)==='"'){cookie=cookie.slice(1,-1);}try{var name=decode(parts[0]);cookie=(converter.read||converter)(cookie,name)||decode(cookie);if(json){try{cookie=JSON.parse(cookie);}catch(e){}}jar[name]=cookie;if(key===name){break;}}catch(e){}}return key?jar[key]:jar;}api.set=set;api.get=function(key){return get(key,false/* read as raw */);};api.getJSON=function(key){return get(key,true/* read as json */);};api.remove=function(key,attributes){set(key,'',extend(attributes,{expires:-1}));};api.defaults={};api.withConverter=init;return api;}return init(function(){});});/* Modernizr 2.8.3 (Custom Build) | MIT & BSD
2903 * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-geolocation-inlinesvg-smil-svg-svgclippaths-touch-webgl-shiv-mq-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load
2904 */;window.Modernizr=function(a,b,c){function D(a){j.cssText=a;}function E(a,b){return D(n.join(a+";")+(b||""));}function F(a,b){return(typeof a==='undefined'?'undefined':_typeof(a))===b;}function G(a,b){return!!~(""+a).indexOf(b);}function H(a,b){for(var d in a){var e=a[d];if(!G(e,"-")&&j[e]!==c)return b=="pfx"?e:!0;}return!1;}function I(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:F(f,"function")?f.bind(d||b):f;}return!1;}function J(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return F(b,"string")||F(b,"undefined")?H(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),I(e,b,c));}function K(){e.input=function(c){for(var d=0,e=c.length;d<e;d++){u[c[d]]=c[d]in k;}return u.list&&(u.list=!!b.createElement("datalist")&&!!a.HTMLDataListElement),u;}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")),e.inputtypes=function(a){for(var d=0,e,f,h,i=a.length;d<i;d++){k.setAttribute("type",f=a[d]),e=k.type!=="text",e&&(k.value=l,k.style.cssText="position:absolute;visibility:hidden;",/^range$/.test(f)&&k.style.WebkitAppearance!==c?(g.appendChild(k),h=b.defaultView,e=h.getComputedStyle&&h.getComputedStyle(k,null).WebkitAppearance!=="textfield"&&k.offsetHeight!==0,g.removeChild(k)):/^(search|tel)$/.test(f)||(/^(url|email)$/.test(f)?e=k.checkValidity&&k.checkValidity()===!1:e=k.value!=l)),t[a[d]]=!!e;}return t;}("search tel url email datetime date month week time datetime-local number range color".split(" "));}var d="2.8.3",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k=b.createElement("input"),l=":)",m={}.toString,n=" -webkit- -moz- -o- -ms- ".split(" "),o="Webkit Moz O ms",p=o.split(" "),q=o.toLowerCase().split(" "),r={svg:"http://www.w3.org/2000/svg"},s={},t={},u={},v=[],w=v.slice,x,y=function y(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--){j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);}return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i;},z=function z(b){var c=a.matchMedia||a.msMatchMedia;
2904if(c)return c(b)&&c(b).matches||!1;var d;return y("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute";}),d;},A=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=F(e[d],"function"),F(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f;}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d;}(),B={}.hasOwnProperty,C;!F(B,"undefined")&&!F(B.call,"undefined")?C=function C(a,b){return B.call(a,b);}:C=function C(a,b){return b in a&&F(a.constructor.prototype[b],"undefined");},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError();var d=w.call(arguments,1),e=function e(){if(this instanceof e){var a=function a(){};a.prototype=c.prototype;var f=new a(),g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f;}return c.apply(b,d.concat(w.call(arguments)));};return e;}),s.flexbox=function(){return J("flexWrap");},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d");},s.canvastext=function(){return!!e.canvas&&!!F(b.createElement("canvas").getContext("2d").fillText,"function");},s.webgl=function(){return!!a.WebGLRenderingContext;},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9;}),c;},s.geolocation=function(){return"geolocation"in navigator;},s.postmessage=function(){return!!a.postMessage;},s.websqldatabase=function(){return!!a.openDatabase;},s.indexedDB=function(){return!!J("indexedDB",a);},s.hashchange=function(){return A("hashchange",a)&&(b.documentMode===c||b.documentMode>7);},s.history=function(){return!!a.history&&!!history.pushState;},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a;},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a;},s.rgba=function(){return D("background-color:rgba(150,255,150,.5)"),G(j.backgroundColor,"rgba");},s.hsla=function(){return D("background-color:hsla(120,40%,100%,.5)"),G(j.backgroundColor,"rgba")||G(j.backgroundColor,"hsla");},s.multiplebgs=function(){return D("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background);},s.backgroundsize=function(){return J("backgroundSize");},s.borderimage=function(){return J("borderImage");},s.borderradius=function(){return J("borderRadius");},s.boxshadow=function(){return J("boxShadow");},s.textshadow=function(){return b.createElement("div").style.textShadow==="";},s.opacity=function(){return E("opacity:.55"),/^0.55$/.test(j.opacity);},s.cssanimations=function(){return J("animationName");},s.csscolumns=function(){return J("columnCount");},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return D((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),G(j.backgroundImage,"gradient");},s.cssreflections=function(){return J("boxReflect");},s.csstransforms=function(){return!!J("transform");},s.csstransforms3d=function(){var a=!!J("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3;}),a;},s.csstransitions=function(){return J("transition");},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0;}),a;},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3;}),a;},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"");}catch(d){}return c;},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"");}catch(d){}return c;},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0;}catch(a){return!1;}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0;}catch(a){return!1;}},s.webworkers=function(){return!!a.Worker;},s.applicationcache=function(){return!!a.applicationCache;},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect;},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>
2904",(a.firstChild&&a.firstChild.namespaceURI)==r.svg;},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")));},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")));};for(var L in s){C(s,L)&&(x=L.toLowerCase(),e[x]=s[L](),v.push((e[x]?"":"no-")+x));}return e.input||K(),e.addTest=function(a,b){if((typeof a==='undefined'?'undefined':_typeof(a))=="object")for(var d in a){C(a,d)&&e.addTest(d,a[d]);}else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b;}return e;},D(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild);}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a;}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b;}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g;}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e<g;e++){d.createElement(f[e]);}return d;}function q(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return s.shivMethods?o(c,a,b):b.createElem(c);},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")';})+");return n}")(s,b.frag);}function r(a){a||(a=b);var c=n(a);return s.shivCSS&&!g&&!c.hasCSS&&(c.hasCSS=!!l(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),k||q(a,c),a;}var c="3.7.0",d=a.html5||{},e=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,f=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g,h="_html5shiv",i=0,j={},k;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined";}();}catch(c){g=!0,k=!0;}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b);}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.mq=z,e.hasEvent=A,e.testProp=function(a){return H([a]);},e.testAllProps=J,e.testStyles=y,e.prefixed=function(a,b,c){return b?J(a,b,c):J(a,"pfx");},g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e;}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a);}function e(a){return"string"==typeof a;}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a;}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?_B.injectCss:_B.injectJs)(a.s,0,a.a,a.x,a.e,1);},0):(a(),h()):q=0;}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l);},50);for(var d in y[c]){y[c].hasOwnProperty(d)&&y[c][d].onload();}}}var j=j||_B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r);},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l));}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this;}function k(){var a=_B;return a.loader={load:j,i:0},a;}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a);},x=[],y={},z={timeout:function timeout(a,b){return b.length&&(a.timeout=b[0]),a;}},_A,_B;_B=function B(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++){g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));}for(f=0;f<b;f++){c=x[f](c);}return c;}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2;}
2904)));}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function j(){var a=[].slice.call(arguments);k.apply(this,a),l();}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a){a.hasOwnProperty(c)&&b++;}return b;}(),a){a.hasOwnProperty(n)&&(!c&&! --m&&(d(j)?j=function j(){var a=[].slice.call(arguments);k.apply(this,a),l();}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l();};}(k[n])),g(a[n],j,b,n,h));}}else!c&&l();}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i);}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++){j=a[i],e(j)?g(j,0,l,0):w(j)?_B(j):Object(j)===j&&h(j,l);}else Object(a)===a&&h(a,l);},_B.addPrefix=function(a,b){z[a]=b;},_B.addFilter=function(a){x.push(a);},_B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",_A=function A(){b.removeEventListener("DOMContentLoaded",_A,0),b.readyState="complete";},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||_B.errorTimeout;k.src=a;for(o in d){k.setAttribute(o,d[o]);}c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null);},m(function(){l||(l=1,c(1));},e),i?k.onload():n.parentNode.insertBefore(k,n);},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d){e.setAttribute(j,d[j]);}g||(n.parentNode.insertBefore(e,n),m(c,0));};}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0));};/*!
2905 * Vue.js v2.5.0
2906 * (c) 2014-2017 Evan You
2907 * Released under the MIT License.
2908 */(function(global,factory){(typeof exports==='undefined'?'undefined':_typeof(exports))==='object'&&typeof module!=='undefined'?module.exports=factory():typeof define==='function'&&define.amd?define(factory):global.Vue=factory();})(this,function(){'use strict';/*  */// these helpers produces better vm code in JS engines due to their
2909// explicitness and function inlining
2910function isUndef(v){return v===undefined||v===null;}function isDef(v){return v!==undefined&&v!==null;}function isTrue(v){return v===true;}function isFalse(v){return v===false;}/**
2911 * Check if value is primitive
2912 */function isPrimitive(value){return typeof value==='string'||typeof value==='number'||typeof value==='boolean';}/**
2913 * Quick object check - this is primarily used to tell
2914 * Objects from primitive values when we know the value
2915 * is a JSON-compliant type.
2916 */function isObject(obj){return obj!==null&&(typeof obj==='undefined'?'undefined':_typeof(obj))==='object';}/**
2917 * Get the raw type string of a value e.g. [object Object]
2918 */var _toString=Object.prototype.toString;function toRawType(value){return _toString.call(value).slice(8,-1);}/**
2919 * Strict object type check. Only returns true
2920 * for plain JavaScript objects.
2921 */function isPlainObject(obj){return _toString.call(obj)==='[object Object]';}function isRegExp(v){return _toString.call(v)==='[object RegExp]';}/**
2922 * Check if val is a valid array index.
2923 */function isValidArrayIndex(val){var n=parseFloat(String(val));return n>=0&&Math.floor(n)===n&&isFinite(val);}/**
2924 * Convert a value to a string that is actually rendered.
2925 */function toString(val){return val==null?'':(typeof val==='undefined'?'undefined':_typeof(val))==='object'?JSON.stringify(val,null,2):String(val);}/**
2926 * Convert a input value to a number for persistence.
2927 * If the conversion fails, return original string.
2928 */function toNumber(val){var n=parseFloat(val);return isNaN(n)?val:n;}/**
2929 * Make a map and return a function for checking if a key
2930 * is in that map.
2931 */function makeMap(str,expectsLowerCase){var map=Object.create(null);var list=str.split(',');for(var i=0;i<list.length;i++){map[list[i]]=true;}return expectsLowerCase?function(val){return map[val.toLowerCase()];}:function(val){return map[val];};}/**
2932 * Check if a tag is a built-in tag.
2933 */var isBuiltInTag=makeMap('slot,component',true);/**
2934 * Check if a attribute is a reserved attribute.
2935 */var isReservedAttribute=makeMap('key,ref,slot,slot-scope,is');/**
2936 * Remove an item from an array
2937 */function remove(arr,item){if(arr.length){var index=arr.indexOf(item);if(index>-1){return arr.splice(index,1);}}}/**
2938 * Check whether the object has the property.
2939 */var hasOwnProperty=Object.prototype.hasOwnProperty;function hasOwn(obj,key){return hasOwnProperty.call(obj,key);}/**
2940 * Create a cached version of a pure function.
2941 */function cached(fn){var cache=Object.create(null);
2941return function cachedFn(str){var hit=cache[str];return hit||(cache[str]=fn(str));};}/**
2942 * Camelize a hyphen-delimited string.
2943 */var camelizeRE=/-(\w)/g;var camelize=cached(function(str){return str.replace(camelizeRE,function(_,c){return c?c.toUpperCase():'';});});/**
2944 * Capitalize a string.
2945 */var capitalize=cached(function(str){return str.charAt(0).toUpperCase()+str.slice(1);});/**
2946 * Hyphenate a camelCase string.
2947 */var hyphenateRE=/\B([A-Z])/g;var hyphenate=cached(function(str){return str.replace(hyphenateRE,'-$1').toLowerCase();});/**
2948 * Simple bind, faster than native
2949 */function bind(fn,ctx){function boundFn(a){var l=arguments.length;return l?l>1?fn.apply(ctx,arguments):fn.call(ctx,a):fn.call(ctx);}// record original fn length
2950boundFn._length=fn.length;return boundFn;}/**
2951 * Convert an Array-like object to a real Array.
2952 */function toArray(list,start){start=start||0;var i=list.length-start;var ret=new Array(i);while(i--){ret[i]=list[i+start];}return ret;}/**
2953 * Mix properties into target object.
2954 */function extend(to,_from){for(var key in _from){to[key]=_from[key];}return to;}/**
2955 * Merge an Array of Objects into a single Object.
2956 */function toObject(arr){var res={};for(var i=0;i<arr.length;i++){if(arr[i]){extend(res,arr[i]);}}return res;}/**
2957 * Perform no operation.
2958 * Stubbing args to make Flow happy without leaving useless transpiled code
2959 * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)
2960 */function noop(a,b,c){}/**
2961 * Always return false.
2962 */var no=function no(a,b,c){return false;};/**
2963 * Return same value
2964 */var identity=function identity(_){return _;};/**
2965 * Generate a static keys string from compiler modules.
2966 */function genStaticKeys(modules){return modules.reduce(function(keys,m){return keys.concat(m.staticKeys||[]);},[]).join(',');}/**
2967 * Check if two values are loosely equal - that is,
2968 * if they are plain objects, do they have the same shape?
2969 */function looseEqual(a,b){if(a===b){return true;}var isObjectA=isObject(a);var isObjectB=isObject(b);if(isObjectA&&isObjectB){try{var isArrayA=Array.isArray(a);var isArrayB=Array.isArray(b);if(isArrayA&&isArrayB){return a.length===b.length&&a.every(function(e,i){return looseEqual(e,b[i]);});}else if(!isArrayA&&!isArrayB){var keysA=Object.keys(a);var keysB=Object.keys(b);return keysA.length===keysB.length&&keysA.every(function(key){return looseEqual(a[key],b[key]);});}else{/* istanbul ignore next */return false;}}catch(e){/* istanbul ignore next */return false;}}else if(!isObjectA&&!isObjectB){return String(a)===String(b);}else{return false;}}function looseIndexOf(arr,val){for(var i=0;i<arr.length;i++){if(looseEqual(arr[i],val)){return i;}}return-1;}/**
2970 * Ensure a function is called only once.
2971 */function once(fn){var called=false;return function(){if(!called){called=true;fn.apply(this,arguments);}};}var SSR_ATTR='data-server-rendered';var ASSET_TYPES=['component','directive','filter'];var LIFECYCLE_HOOKS=['beforeCreate','created','beforeMount','mounted','beforeUpdate','updated','beforeDestroy','destroyed','activated','deactivated','errorCaptured'];/*  */var config={/**
2972   * Option merge strategies (used in core/util/options)
2973   */optionMergeStrategies:Object.create(null),/**
2974   * Whether to suppress warnings.
2975   */silent:false,/**
2976   * Show production mode tip message on boot?
2977   */productionTip:"development"!=='production',/**
2978   * Whether to enable devtools
2979   */devtools:"development"!=='production',/**
2980   * Whether to record perf
2981   */performance:false,/**
2982   * Error handler for watcher errors
2983   */errorHandler:null,/**
2984   * Warn handler for watcher warns
2985   */warnHandler:null,/**
2986   * Ignore certain custom elements
2987   */ignoredElements:[],/**
2988   * Custom user key aliases for v-on
2989   */keyCodes:Object.create(null),/**
2990   * Check if a tag is reserved so that it cannot be registered as a
2991   * component. This is platform-dependent and may be overwritten.
2992   */isReservedTag:no,/**
2993   * Check if an attribute is reserved so that it cannot be used as a component
2994   * prop. This is platform-dependent and may be overwritten.
2995   */isReservedAttr:no,/**
2996   * Check if a tag is an unknown element.
2997   * Platform-dependent.
2998   */isUnknownElement:no,/**
2999   * Get the namespace of an element
3000   */getTagNamespace:noop,/**
3001   * Parse the real tag name for the specific platform.
3002   */parsePlatformTagName:identity,/**
3003   * Check if an attribute must be bound using property, e.g. value
3004   * Platform-dependent.
3005   */mustUseProp:no,/**
3006   * Exposed for legacy reasons
3007   */_lifecycleHooks:LIFECYCLE_HOOKS};/*  */var emptyObject=Object.freeze({});/**
3008 * Check if a string starts with $ or _
3009 */function isReserved(str){var c=(str+'').charCodeAt(0);return c===0x24||c===0x5F;}/**
3010 * Define a property.
3011 */function def(obj,key,val,enumerable){Object.defineProperty(obj,key,{value:val,enumerable:!!enumerable,writable:true,configurable:true});}/**
3012 * Parse simple path.
3013 */var bailRE=/[^\w.$]/;function parsePath(path){if(bailRE.test(path)){return;}var segments=path.split('.');return function(obj){for(var i=0;i<segments.length;i++){if(!obj){return;}obj=obj[segments[i]];}return obj;};}/*  */var warn=noop;var tip=noop;var generateComponentTrace=noop;// work around flow check
3014var formatComponentName=noop;{var hasConsole=typeof console!=='undefined';var classifyRE=/(?:^|[-_])(\w)/g;var classify=function classify(str){return str.replace(classifyRE,function(c){return c.toUpperCase();}).replace(/[-_]/g,'');};
3014warn=function warn(msg,vm){var trace=vm?generateComponentTrace(vm):'';if(config.warnHandler){config.warnHandler.call(null,msg,vm,trace);}else if(hasConsole&&!config.silent){console.error("[Vue warn]: "+msg+trace);}};tip=function tip(msg,vm){if(hasConsole&&!config.silent){console.warn("[Vue tip]: "+msg+(vm?generateComponentTrace(vm):''));}};formatComponentName=function formatComponentName(vm,includeFile){if(vm.$root===vm){return'<Root>';}var options=typeof vm==='function'&&vm.cid!=null?vm.options:vm._isVue?vm.$options||vm.constructor.options:vm||{};var name=options.name||options._componentTag;var file=options.__file;if(!name&&file){var match=file.match(/([^/\\]+)\.vue$/);name=match&&match[1];}return(name?"<"+classify(name)+">":"<Anonymous>")+(file&&includeFile!==false?" at "+file:'');};var repeat=function repeat(str,n){var res='';while(n){if(n%2===1){res+=str;}if(n>1){str+=str;}n>>=1;}return res;};generateComponentTrace=function generateComponentTrace(vm){if(vm._isVue&&vm.$parent){var tree=[];var currentRecursiveSequence=0;while(vm){if(tree.length>0){var last=tree[tree.length-1];if(last.constructor===vm.constructor){currentRecursiveSequence++;vm=vm.$parent;continue;}else if(currentRecursiveSequence>0){tree[tree.length-1]=[last,currentRecursiveSequence];currentRecursiveSequence=0;}}tree.push(vm);vm=vm.$parent;}return'\n\nfound in\n\n'+tree.map(function(vm,i){return""+(i===0?'---> ':repeat(' ',5+i*2))+(Array.isArray(vm)?formatComponentName(vm[0])+"... ("+vm[1]+" recursive calls)":formatComponentName(vm));}).join('\n');}else{return"\n\n(found in "+formatComponentName(vm)+")";}};}/*  */function handleError(err,vm,info){if(vm){var cur=vm;while(cur=cur.$parent){var hooks=cur.$options.errorCaptured;if(hooks){for(var i=0;i<hooks.length;i++){try{var capture=hooks[i].call(cur,err,vm,info)===false;if(capture){return;}}catch(e){globalHandleError(e,cur,'errorCaptured hook');}}}}}globalHandleError(err,vm,info);}function globalHandleError(err,vm,info){if(config.errorHandler){try{return config.errorHandler.call(null,err,vm,info);}catch(e){logError(e,null,'config.errorHandler');}}logError(err,vm,info);}function logError(err,vm,info){{warn("Error in "+info+": \""+err.toString()+"\"",vm);}/* istanbul ignore else */if(inBrowser&&typeof console!=='undefined'){console.error(err);}else{throw err;}}/*  *//* globals MessageChannel */// can we use __proto__?
3015var hasProto='__proto__'in{};// Browser environment sniffing
3016var inBrowser=typeof window!=='undefined';var UA=inBrowser&&window.navigator.userAgent.toLowerCase();var isIE=UA&&/msie|trident/.test(UA);var isIE9=UA&&UA.indexOf('msie 9.0')>0;var isEdge=UA&&UA.indexOf('edge/')>0;var isAndroid=UA&&UA.indexOf('android')>0;var isIOS=UA&&/iphone|ipad|ipod|ios/.test(UA);var isChrome=UA&&/chrome\/\d+/.test(UA)&&!isEdge;// Firefox has a "watch" function on Object.prototype...
3017var nativeWatch={}.watch;var supportsPassive=false;if(inBrowser){try{var opts={};Object.defineProperty(opts,'passive',{get:function get(){/* istanbul ignore next */supportsPassive=true;}});// https://github.com/facebook/flow/issues/285
3018window.addEventListener('test-passive',null,opts);}catch(e){}}// this needs to be lazy-evaled because vue may be required before
3019// vue-server-renderer can set VUE_ENV
3020var _isServer;var isServerRendering=function isServerRendering(){if(_isServer===undefined){/* istanbul ignore if */if(!inBrowser&&typeof global!=='undefined'){// detect presence of vue-server-renderer and avoid
3021// Webpack shimming the process
3022_isServer=global['process'].env.VUE_ENV==='server';}else{_isServer=false;}}return _isServer;};// detect devtools
3023var devtools=inBrowser&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;/* istanbul ignore next */function isNative(Ctor){return typeof Ctor==='function'&&/native code/.test(Ctor.toString());}var hasSymbol=typeof Symbol!=='undefined'&&isNative(Symbol)&&typeof Reflect!=='undefined'&&isNative(Reflect.ownKeys);/**
3024 * Defer a task to execute it asynchronously.
3025 */var nextTick=function(){var callbacks=[];var pending=false;var timerFunc;function nextTickHandler(){pending=false;var copies=callbacks.slice(0);callbacks.length=0;for(var i=0;i<copies.length;i++){copies[i]();}}// An asynchronous deferring mechanism.
3026// In pre 2.4, we used to use microtasks (Promise/MutationObserver)
3027// but microtasks actually has too high a priority and fires in between
3028// supposedly sequential events (e.g. #4521, #6690) or even between
3029// bubbling of the same event (#6566). Technically setImmediate should be
3030// the ideal choice, but it's not available everywhere; and the only polyfill
3031// that consistently queues the callback after all DOM events triggered in the
3032// same loop is by using MessageChannel.
3033/* istanbul ignore if */if(typeof setImmediate!=='undefined'&&isNative(setImmediate)){timerFunc=function timerFunc(){setImmediate(nextTickHandler);};}else if(typeof MessageChannel!=='undefined'&&(isNative(MessageChannel)||// PhantomJS
3034MessageChannel.toString()==='[object MessageChannelConstructor]')){var channel=new MessageChannel();var port=channel.port2;channel.port1.onmessage=nextTickHandler;timerFunc=function timerFunc(){port.postMessage(1);};}else/* istanbul ignore next */if(typeof Promise!=='undefined'&&isNative(Promise)){// use microtask in non-DOM environments, e.g. Weex
3035var p=Promise.resolve();timerFunc=function timerFunc(){p.then(nextTickHandler);};}else{// fallback to setTimeout
3036timerFunc=function timerFunc(){setTimeout(nextTickHandler,0);};}return function queueNextTick(cb,ctx){var _resolve;callbacks.push(function(){if(cb){try{cb.call(ctx);}catch(e){handleError(e,ctx,'nextTick');}}else if(_resolve){_resolve(ctx);}});if(!pending){pending=true;timerFunc();}// $flow-disable-line
3037if(!cb&&typeof Promise!=='undefined'){return new Promise(function(resolve,reject){_resolve=resolve;});}};}();var _Set;/* istanbul ignore if */// $flow-disable-line
3038if(typeof Set!=='undefined'&&isNative(Set)){// use native Set when available.
3039_Set=Set;}else{// a non-standard Set polyfill that only works with primitive keys.
3040_Set=function(){function Set(){this.set=Object.create(null);}Set.prototype.has=function has(key){return this.set[key]===true;};Set.prototype.add=function add(key){this.set[key]=true;};Set.prototype.clear=function clear(){this.set=Object.create(null);};return Set;}();}/*  */var uid=0;/**
3041 * A dep is an observable that can have multiple
3042 * directives subscribing to it.
3043 */var Dep=function Dep(){this.id=uid++;this.subs=[];};Dep.prototype.addSub=function addSub(sub){this.subs.push(sub);};Dep.prototype.removeSub=function removeSub(sub){remove(this.subs,sub);};
3043Dep.prototype.depend=function depend(){if(Dep.target){Dep.target.addDep(this);}};Dep.prototype.notify=function notify(){// stabilize the subscriber list first
3044var subs=this.subs.slice();for(var i=0,l=subs.length;i<l;i++){subs[i].update();}};// the current target watcher being evaluated.
3045// this is globally unique because there could be only one
3046// watcher being evaluated at any time.
3047Dep.target=null;var targetStack=[];function pushTarget(_target){if(Dep.target){targetStack.push(Dep.target);}Dep.target=_target;}function popTarget(){Dep.target=targetStack.pop();}/*  */var VNode=function VNode(tag,data,children,text,elm,context,componentOptions,asyncFactory){this.tag=tag;this.data=data;this.children=children;this.text=text;this.elm=elm;this.ns=undefined;this.context=context;this.functionalContext=undefined;this.functionalOptions=undefined;this.functionalScopeId=undefined;this.key=data&&data.key;this.componentOptions=componentOptions;this.componentInstance=undefined;this.parent=undefined;this.raw=false;this.isStatic=false;this.isRootInsert=true;this.isComment=false;this.isCloned=false;this.isOnce=false;this.asyncFactory=asyncFactory;this.asyncMeta=undefined;this.isAsyncPlaceholder=false;};var prototypeAccessors={child:{configurable:true}};// DEPRECATED: alias for componentInstance for backwards compat.
3048/* istanbul ignore next */prototypeAccessors.child.get=function(){return this.componentInstance;};Object.defineProperties(VNode.prototype,prototypeAccessors);var createEmptyVNode=function createEmptyVNode(text){if(text===void 0)text='';var node=new VNode();node.text=text;node.isComment=true;return node;};function createTextVNode(val){return new VNode(undefined,undefined,undefined,String(val));}// optimized shallow clone
3049// used for static nodes and slot nodes because they may be reused across
3050// multiple renders, cloning them avoids errors when DOM manipulations rely
3051// on their elm reference.
3052function cloneVNode(vnode,deep){var cloned=new VNode(vnode.tag,vnode.data,vnode.children,vnode.text,vnode.elm,vnode.context,vnode.componentOptions,vnode.asyncFactory);cloned.ns=vnode.ns;cloned.isStatic=vnode.isStatic;cloned.key=vnode.key;cloned.isComment=vnode.isComment;cloned.isCloned=true;if(deep&&vnode.children){cloned.children=cloneVNodes(vnode.children);}return cloned;}function cloneVNodes(vnodes,deep){var len=vnodes.length;var res=new Array(len);for(var i=0;i<len;i++){res[i]=cloneVNode(vnodes[i],deep);}return res;}/*
3053 * not type checking this file because flow doesn't play well with
3054 * dynamically accessing methods on Array prototype
3055 */var arrayProto=Array.prototype;var arrayMethods=Object.create(arrayProto);['push','pop','shift','unshift','splice','sort','reverse'].forEach(function(method){// cache original method
3056var original=arrayProto[method];def(arrayMethods,method,function mutator(){var args=[],len=arguments.length;while(len--){args[len]=arguments[len];}var result=original.apply(this,args);var ob=this.__ob__;var inserted;switch(method){case'push':case'unshift':inserted=args;break;case'splice':inserted=args.slice(2);break;}if(inserted){ob.observeArray(inserted);}// notify change
3057ob.dep.notify();return result;});});/*  */var arrayKeys=Object.getOwnPropertyNames(arrayMethods);/**
3058 * By default, when a reactive property is set, the new value is
3059 * also converted to become reactive. However when passing down props,
3060 * we don't want to force conversion because the value may be a nested value
3061 * under a frozen data structure. Converting it would defeat the optimization.
3062 */var observerState={shouldConvert:true};/**
3063 * Observer class that are attached to each observed
3064 * object. Once attached, the observer converts target
3065 * object's property keys into getter/setters that
3066 * collect dependencies and dispatches updates.
3067 */var Observer=function Observer(value){this.value=value;this.dep=new Dep();this.vmCount=0;def(value,'__ob__',this);if(Array.isArray(value)){var augment=hasProto?protoAugment:copyAugment;augment(value,arrayMethods,arrayKeys);this.observeArray(value);}else{this.walk(value);}};/**
3068 * Walk through each property and convert them into
3069 * getter/setters. This method should only be called when
3070 * value type is Object.
3071 */Observer.prototype.walk=function walk(obj){var keys=Object.keys(obj);for(var i=0;i<keys.length;i++){defineReactive(obj,keys[i],obj[keys[i]]);}};/**
3072 * Observe a list of Array items.
3073 */Observer.prototype.observeArray=function observeArray(items){for(var i=0,l=items.length;i<l;i++){observe(items[i]);}};// helpers
3074/**
3075 * Augment an target Object or Array by intercepting
3076 * the prototype chain using __proto__
3077 */function protoAugment(target,src,keys){/* eslint-disable no-proto */target.__proto__=src;/* eslint-enable no-proto */}/**
3078 * Augment an target Object or Array by defining
3079 * hidden properties.
3080 *//* istanbul ignore next */function copyAugment(target,src,keys){for(var i=0,l=keys.length;i<l;i++){var key=keys[i];def(target,key,src[key]);}}/**
3081 * Attempt to create an observer instance for a value,
3082 * returns the new observer if successfully observed,
3083 * or the existing observer if the value already has one.
3084 */function observe(value,asRootData){if(!isObject(value)||value instanceof VNode){return;}var ob;if(hasOwn(value,'__ob__')&&value.__ob__ instanceof Observer){ob=value.__ob__;}else if(observerState.shouldConvert&&!isServerRendering()&&(Array.isArray(value)||isPlainObject(value))&&Object.isExtensible(value)&&!value._isVue){ob=new Observer(value);}if(asRootData&&ob){ob.vmCount++;}return ob;}/**
3085 * Define a reactive property on an Object.
3086 */function defineReactive(obj,key,val,customSetter,shallow){var dep=new Dep();var property=Object.getOwnPropertyDescriptor(obj,key);if(property&&property.configurable===false){return;}// cater for pre-defined getter/setters
3087var getter=property&&property.get;var setter=property&&property.set;
3087var childOb=!shallow&&observe(val);Object.defineProperty(obj,key,{enumerable:true,configurable:true,get:function reactiveGetter(){var value=getter?getter.call(obj):val;if(Dep.target){dep.depend();if(childOb){childOb.dep.depend();if(Array.isArray(value)){dependArray(value);}}}return value;},set:function reactiveSetter(newVal){var value=getter?getter.call(obj):val;/* eslint-disable no-self-compare */if(newVal===value||newVal!==newVal&&value!==value){return;}/* eslint-enable no-self-compare */if("development"!=='production'&&customSetter){customSetter();}if(setter){setter.call(obj,newVal);}else{val=newVal;}childOb=!shallow&&observe(newVal);dep.notify();}});}/**
3088 * Set a property on an object. Adds the new property and
3089 * triggers change notification if the property doesn't
3090 * already exist.
3091 */function set(target,key,val){if(Array.isArray(target)&&isValidArrayIndex(key)){target.length=Math.max(target.length,key);target.splice(key,1,val);return val;}if(hasOwn(target,key)){target[key]=val;return val;}var ob=target.__ob__;if(target._isVue||ob&&ob.vmCount){"development"!=='production'&&warn('Avoid adding reactive properties to a Vue instance or its root $data '+'at runtime - declare it upfront in the data option.');return val;}if(!ob){target[key]=val;return val;}defineReactive(ob.value,key,val);ob.dep.notify();return val;}/**
3092 * Delete a property and trigger change if necessary.
3093 */function del(target,key){if(Array.isArray(target)&&isValidArrayIndex(key)){target.splice(key,1);return;}var ob=target.__ob__;if(target._isVue||ob&&ob.vmCount){"development"!=='production'&&warn('Avoid deleting properties on a Vue instance or its root $data '+'- just set it to null.');return;}if(!hasOwn(target,key)){return;}delete target[key];if(!ob){return;}ob.dep.notify();}/**
3094 * Collect dependencies on array elements when the array is touched, since
3095 * we cannot intercept array element access like property getters.
3096 */function dependArray(value){for(var e=void 0,i=0,l=value.length;i<l;i++){e=value[i];e&&e.__ob__&&e.__ob__.dep.depend();if(Array.isArray(e)){dependArray(e);}}}/*  *//**
3097 * Option overwriting strategies are functions that handle
3098 * how to merge a parent option value and a child option
3099 * value into the final value.
3100 */var strats=config.optionMergeStrategies;/**
3101 * Options with restrictions
3102 */{strats.el=strats.propsData=function(parent,child,vm,key){if(!vm){warn("option \""+key+"\" can only be used during instance "+'creation with the `new` keyword.');}return defaultStrat(parent,child);};}/**
3103 * Helper that recursively merges two data objects together.
3104 */function mergeData(to,from){if(!from){return to;}var key,toVal,fromVal;var keys=Object.keys(from);for(var i=0;i<keys.length;i++){key=keys[i];toVal=to[key];fromVal=from[key];if(!hasOwn(to,key)){set(to,key,fromVal);}else if(isPlainObject(toVal)&&isPlainObject(fromVal)){mergeData(toVal,fromVal);}}return to;}/**
3105 * Data
3106 */function mergeDataOrFn(parentVal,childVal,vm){if(!vm){// in a Vue.extend merge, both should be functions
3107if(!childVal){return parentVal;}if(!parentVal){return childVal;}// when parentVal & childVal are both present,
3108// we need to return a function that returns the
3109// merged result of both functions... no need to
3110// check if parentVal is a function here because
3111// it has to be a function to pass previous merges.
3112return function mergedDataFn(){return mergeData(typeof childVal==='function'?childVal.call(this):childVal,typeof parentVal==='function'?parentVal.call(this):parentVal);};}else if(parentVal||childVal){return function mergedInstanceDataFn(){// instance merge
3113var instanceData=typeof childVal==='function'?childVal.call(vm):childVal;var defaultData=typeof parentVal==='function'?parentVal.call(vm):parentVal;if(instanceData){return mergeData(instanceData,defaultData);}else{return defaultData;}};}}strats.data=function(parentVal,childVal,vm){if(!vm){if(childVal&&typeof childVal!=='function'){"development"!=='production'&&warn('The "data" option should be a function '+'that returns a per-instance value in component '+'definitions.',vm);return parentVal;}return mergeDataOrFn.call(this,parentVal,childVal);}return mergeDataOrFn(parentVal,childVal,vm);};/**
3114 * Hooks and props are merged as arrays.
3115 */function mergeHook(parentVal,childVal){return childVal?parentVal?parentVal.concat(childVal):Array.isArray(childVal)?childVal:[childVal]:parentVal;}LIFECYCLE_HOOKS.forEach(function(hook){strats[hook]=mergeHook;});/**
3116 * Assets
3117 *
3118 * When a vm is present (instance creation), we need to do
3119 * a three-way merge between constructor options, instance
3120 * options and parent options.
3121 */function mergeAssets(parentVal,childVal,vm,key){var res=Object.create(parentVal||null);if(childVal){"development"!=='production'&&assertObjectType(key,childVal,vm);return extend(res,childVal);}else{return res;}}ASSET_TYPES.forEach(function(type){strats[type+'s']=mergeAssets;});/**
3122 * Watchers.
3123 *
3124 * Watchers hashes should not overwrite one
3125 * another, so we merge them as arrays.
3126 */strats.watch=function(parentVal,childVal,vm,key){// work around Firefox's Object.prototype.watch...
3127if(parentVal===nativeWatch){parentVal=undefined;}if(childVal===nativeWatch){childVal=undefined;}
3127/* istanbul ignore if */if(!childVal){return Object.create(parentVal||null);}{assertObjectType(key,childVal,vm);}if(!parentVal){return childVal;}var ret={};extend(ret,parentVal);for(var key$1 in childVal){var parent=ret[key$1];var child=childVal[key$1];if(parent&&!Array.isArray(parent)){parent=[parent];}ret[key$1]=parent?parent.concat(child):Array.isArray(child)?child:[child];}return ret;};/**
3128 * Other object hashes.
3129 */strats.props=strats.methods=strats.inject=strats.computed=function(parentVal,childVal,vm,key){if(childVal&&"development"!=='production'){assertObjectType(key,childVal,vm);}if(!parentVal){return childVal;}var ret=Object.create(null);extend(ret,parentVal);if(childVal){extend(ret,childVal);}return ret;};strats.provide=mergeDataOrFn;/**
3130 * Default strategy.
3131 */var defaultStrat=function defaultStrat(parentVal,childVal){return childVal===undefined?parentVal:childVal;};/**
3132 * Validate component names
3133 */function checkComponents(options){for(var key in options.components){var lower=key.toLowerCase();if(isBuiltInTag(lower)||config.isReservedTag(lower)){warn('Do not use built-in or reserved HTML elements as component '+'id: '+key);}}}/**
3134 * Ensure all props option syntax are normalized into the
3135 * Object-based format.
3136 */function normalizeProps(options,vm){var props=options.props;if(!props){return;}var res={};var i,val,name;if(Array.isArray(props)){i=props.length;while(i--){val=props[i];if(typeof val==='string'){name=camelize(val);res[name]={type:null};}else{warn('props must be strings when using array syntax.');}}}else if(isPlainObject(props)){for(var key in props){val=props[key];name=camelize(key);res[name]=isPlainObject(val)?val:{type:val};}}else if("development"!=='production'&&props){warn("Invalid value for option \"props\": expected an Array or an Object, "+"but got "+toRawType(props)+".",vm);}options.props=res;}/**
3137 * Normalize all injections into Object-based format
3138 */function normalizeInject(options,vm){var inject=options.inject;var normalized=options.inject={};if(Array.isArray(inject)){for(var i=0;i<inject.length;i++){normalized[inject[i]]={from:inject[i]};}}else if(isPlainObject(inject)){for(var key in inject){var val=inject[key];normalized[key]=isPlainObject(val)?extend({from:key},val):{from:val};}}else if("development"!=='production'&&inject){warn("Invalid value for option \"inject\": expected an Array or an Object, "+"but got "+toRawType(inject)+".",vm);}}/**
3139 * Normalize raw function directives into object format.
3140 */function normalizeDirectives(options){var dirs=options.directives;if(dirs){for(var key in dirs){var def=dirs[key];if(typeof def==='function'){dirs[key]={bind:def,update:def};}}}}function assertObjectType(name,value,vm){if(!isPlainObject(value)){warn("Invalid value for option \""+name+"\": expected an Object, "+"but got "+toRawType(value)+".",vm);}}/**
3141 * Merge two option objects into a new one.
3142 * Core utility used in both instantiation and inheritance.
3143 */function mergeOptions(parent,child,vm){{checkComponents(child);}if(typeof child==='function'){child=child.options;}normalizeProps(child,vm);normalizeInject(child,vm);normalizeDirectives(child);var extendsFrom=child.extends;if(extendsFrom){parent=mergeOptions(parent,extendsFrom,vm);}if(child.mixins){for(var i=0,l=child.mixins.length;i<l;i++){parent=mergeOptions(parent,child.mixins[i],vm);}}var options={};var key;for(key in parent){mergeField(key);}for(key in child){if(!hasOwn(parent,key)){mergeField(key);}}function mergeField(key){var strat=strats[key]||defaultStrat;options[key]=strat(parent[key],child[key],vm,key);}return options;}/**
3144 * Resolve an asset.
3145 * This function is used because child instances need access
3146 * to assets defined in its ancestor chain.
3147 */function resolveAsset(options,type,id,warnMissing){/* istanbul ignore if */if(typeof id!=='string'){return;}var assets=options[type];// check local registration variations first
3148if(hasOwn(assets,id)){return assets[id];}var camelizedId=camelize(id);if(hasOwn(assets,camelizedId)){return assets[camelizedId];}var PascalCaseId=capitalize(camelizedId);if(hasOwn(assets,PascalCaseId)){return assets[PascalCaseId];}// fallback to prototype chain
3149var res=assets[id]||assets[camelizedId]||assets[PascalCaseId];if("development"!=='production'&&warnMissing&&!res){warn('Failed to resolve '+type.slice(0,-1)+': '+id,options);}return res;}/*  */function validateProp(key,propOptions,propsData,vm){var prop=propOptions[key];var absent=!hasOwn(propsData,key);var value=propsData[key];// handle boolean props
3150if(isType(Boolean,prop.type)){if(absent&&!hasOwn(prop,'default')){value=false;}else if(!isType(String,prop.type)&&(value===''||value===hyphenate(key))){value=true;}}// check default value
3151if(value===undefined){value=getPropDefaultValue(vm,prop,key);// since the default value is a fresh copy,
3152// make sure to observe it.
3153var prevShouldConvert=observerState.shouldConvert;observerState.shouldConvert=true;observe(value);observerState.shouldConvert=prevShouldConvert;}{assertProp(prop,key,value,vm,absent);}return value;}/**
3154 * Get the default value of a prop.
3155 */function getPropDefaultValue(vm,prop,key){// no default, return undefined
3156if(!hasOwn(prop,'default')){return undefined;}var def=prop.default;// warn against non-factory defaults for Object & Array
3157if("development"!=='production'&&isObject(def)){warn('Invalid default value for prop "'+key+'": '+'Props with type Object/Array must use a factory function '+'to return the default value.',vm);}// the raw prop value was also undefined from previous render,
3158// return previous default value to avoid unnecessary watcher trigger
3159if(vm&&vm.$options.propsData&&vm.$options.propsData[key]===undefined&&vm._props[key]!==undefined){return vm._props[key];}// call factory function for non-Function types
3160// a value is Function if its prototype is function even across different execution context
3161return typeof def==='function'&&getType(prop.type)!=='Function'?def.call(vm):def;}/**
3162 * Assert whether a prop is valid.
3163 */function assertProp(prop,name,value,vm,absent){if(prop.required&&absent){warn('Missing required prop: "'+name+'"',vm);return;}if(value==null&&!prop.required){return;}var type=prop.type;var valid=!type||type===true;var expectedTypes=[];if(type){if(!Array.isArray(type)){type=[type];}for(var i=0;i<type.length&&!valid;i++){var assertedType=assertType(value,type[i]);expectedTypes.push(assertedType.expectedType||'');valid=assertedType.valid;}}if(!valid){warn("Invalid prop: type check failed for prop \""+name+"\"."+" Expected "+expectedTypes.map(capitalize).join(', ')+", got "+toRawType(value)+".",vm);return;}var validator=prop.validator;if(validator){if(!validator(value)){warn('Invalid prop: custom validator check failed for prop "'+name+'".',vm);}}}var simpleCheckRE=/^(String|Number|Boolean|Function|Symbol)$/;function assertType(value,type){var valid;var expectedType=getType(type);if(simpleCheckRE.test(expectedType)){var t=typeof value==='undefined'?'undefined':_typeof(value);valid=t===expectedType.toLowerCase();// for primitive wrapper objects
3164if(!valid&&t==='object'){valid=value instanceof type;}}else if(expectedType==='Object'){valid=isPlainObject(value);}else if(expectedType==='Array'){valid=Array.isArray(value);}else{valid=value instanceof type;}return{valid:valid,expectedType:expectedType};}/**
3165 * Use function string name to check built-in types,
3166 * because a simple equality check will fail when running
3167 * across different vms / iframes.
3168 */function getType(fn){var match=fn&&fn.toString().match(/^\s*function (\w+)/);return match?match[1]:'';}function isType(type,fn){if(!Array.isArray(fn)){return getType(fn)===getType(type);}for(var i=0,len=fn.length;i<len;i++){if(getType(fn[i])===getType(type)){return true;}}/* istanbul ignore next */return false;}/*  */var mark;var measure;{var perf=inBrowser&&window.performance;/* istanbul ignore if */if(perf&&perf.mark&&perf.measure&&perf.clearMarks&&perf.clearMeasures){mark=function mark(tag){return perf.mark(tag);};measure=function measure(name,startTag,endTag){perf.measure(name,startTag,endTag);perf.clearMarks(startTag);perf.clearMarks(endTag);perf.clearMeasures(name);};}}/* not type checking this file because flow doesn't play well with Proxy */var initProxy;{var allowedGlobals=makeMap('Infinity,undefined,NaN,isFinite,isNaN,'+'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,'+'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,'+'require'// for Webpack/Browserify
3169);var warnNonPresent=function warnNonPresent(target,key){warn("Property or method \""+key+"\" is not defined on the instance but "+'referenced during render. Make sure that this property is reactive, '+'either in the data option, or for class-based components, by '+'initializing the property. '+'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',target);};var hasProxy=typeof Proxy!=='undefined'&&Proxy.toString().match(/native code/);if(hasProxy){var isBuiltInModifier=makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');config.keyCodes=new Proxy(config.keyCodes,{set:function set(target,key,value){if(isBuiltInModifier(key)){warn("Avoid overwriting built-in modifier in config.keyCodes: ."+key);return false;}else{target[key]=value;return true;}}});}var hasHandler={has:function has(target,key){var has=key in target;var isAllowed=allowedGlobals(key)||key.charAt(0)==='_';if(!has&&!isAllowed){warnNonPresent(target,key);}return has||!isAllowed;}};var getHandler={get:function get(target,key){if(typeof key==='string'&&!(key in target)){warnNonPresent(target,key);}return target[key];}};initProxy=function initProxy(vm){if(hasProxy){// determine which proxy handler to use
3170var options=vm.$options;var handlers=options.render&&options.render._withStripped?getHandler:hasHandler;vm._renderProxy=new Proxy(vm,handlers);}else{vm._renderProxy=vm;}};}/*  */var normalizeEvent=cached(function(name){var passive=name.charAt(0)==='&';name=passive?name.slice(1):name;var once$$1=name.charAt(0)==='~';// Prefixed last, checked first
3171name=once$$1?name.slice(1):name;var capture=name.charAt(0)==='!';name=capture?name.slice(1):name;return{name:name,once:once$$1,capture:capture,passive:passive};});function createFnInvoker(fns){function invoker(){var arguments$1=arguments;var fns=invoker.fns;if(Array.isArray(fns)){var cloned=fns.slice();for(var i=0;i<cloned.length;i++){cloned[i].apply(null,arguments$1);}}else{// return handler return value for single handlers
3172return fns.apply(null,arguments);}}invoker.fns=fns;return invoker;}function updateListeners(on,oldOn,add,remove$$1,vm){var name,cur,old,event;for(name in on){cur=on[name];old=oldOn[name];event=normalizeEvent(name);if(isUndef(cur)){"development"!=='production'&&warn("Invalid handler for event \""+event.name+"\": got "+String(cur),vm);}else if(isUndef(old)){if(isUndef(cur.fns)){cur=on[name]=createFnInvoker(cur);}add(event.name,cur,event.once,event.capture,event.passive);}else if(cur!==old){old.fns=cur;on[name]=old;}}for(name in oldOn){if(isUndef(on[name])){event=normalizeEvent(name);remove$$1(event.name,oldOn[name],event.capture);}}}/*  */function mergeVNodeHook(def,hookKey,hook){var invoker;var oldHook=def[hookKey];function wrappedHook(){hook.apply(this,arguments);// important: remove merged hook to ensure it's called only once
3173// and prevent memory leak
3174remove(invoker.fns,wrappedHook);}if(isUndef(oldHook)){// no existing hook
3175invoker=createFnInvoker([wrappedHook]);}else{/* istanbul ignore if */if(isDef(oldHook.fns)&&isTrue(oldHook.merged)){// already a merged invoker
3176invoker=oldHook;invoker.fns.push(wrappedHook);}else{// existing plain hook
3177invoker=createFnInvoker([oldHook,wrappedHook]);}}invoker.merged=true;def[hookKey]=invoker;}/*  */function extractPropsFromVNodeData(data,Ctor,tag){// we are only extracting raw values here.
3178// validation and default values are handled in the child
3179// component itself.
3180var propOptions=Ctor.options.props;if(isUndef(propOptions)){return;}var res={};var attrs=data.attrs;var props=data.props;if(isDef(attrs)||isDef(props)){for(var key in propOptions){var altKey=hyphenate(key);{var keyInLowerCase=key.toLowerCase();if(key!==keyInLowerCase&&attrs&&hasOwn(attrs,keyInLowerCase)){tip("Prop \""+keyInLowerCase+"\" is passed to component "+formatComponentName(tag||Ctor)+", but the declared prop name is"+" \""+key+"\". "+"Note that HTML attributes are case-insensitive and camelCased "+"props need to use their kebab-case equivalents when using in-DOM "+"templates. You should probably use \""+altKey+"\" instead of \""+key+"\".");}}checkProp(res,props,key,altKey,true)||checkProp(res,attrs,key,altKey,false);}}return res;}
3180function checkProp(res,hash,key,altKey,preserve){if(isDef(hash)){if(hasOwn(hash,key)){res[key]=hash[key];if(!preserve){delete hash[key];}return true;}else if(hasOwn(hash,altKey)){res[key]=hash[altKey];if(!preserve){delete hash[altKey];}return true;}}return false;}/*  */// The template compiler attempts to minimize the need for normalization by
3181// statically analyzing the template at compile time.
3182//
3183// For plain HTML markup, normalization can be completely skipped because the
3184// generated render function is guaranteed to return Array<VNode>. There are
3185// two cases where extra normalization is needed:
3186// 1. When the children contains components - because a functional component
3187// may return an Array instead of a single root. In this case, just a simple
3188// normalization is needed - if any child is an Array, we flatten the whole
3189// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
3190// because functional components already normalize their own children.
3191function simpleNormalizeChildren(children){for(var i=0;i<children.length;i++){if(Array.isArray(children[i])){return Array.prototype.concat.apply([],children);}}return children;}// 2. When the children contains constructs that always generated nested Arrays,
3192// e.g. <template>, <slot>, v-for, or when the children is provided by user
3193// with hand-written render functions / JSX. In such cases a full normalization
3194// is needed to cater to all possible types of children values.
3195function normalizeChildren(children){return isPrimitive(children)?[createTextVNode(children)]:Array.isArray(children)?normalizeArrayChildren(children):undefined;}function isTextNode(node){return isDef(node)&&isDef(node.text)&&isFalse(node.isComment);}function normalizeArrayChildren(children,nestedIndex){var res=[];var i,c,lastIndex,last;for(i=0;i<children.length;i++){c=children[i];if(isUndef(c)||typeof c==='boolean'){continue;}lastIndex=res.length-1;last=res[lastIndex];//  nested
3196if(Array.isArray(c)&&c.length>0){c=normalizeArrayChildren(c,(nestedIndex||'')+"_"+i);// merge adjacent text nodes
3197if(isTextNode(c[0])&&isTextNode(last)){res[lastIndex]=createTextVNode(last.text+c[0].text);c.shift();}res.push.apply(res,c);}else if(isPrimitive(c)){if(isTextNode(last)){// merge adjacent text nodes
3198// this is necessary for SSR hydration because text nodes are
3199// essentially merged when rendered to HTML strings
3200res[lastIndex]=createTextVNode(last.text+c);}else if(c!==''){// convert primitive to vnode
3201res.push(createTextVNode(c));}}else{if(isTextNode(c)&&isTextNode(last)){// merge adjacent text nodes
3202res[lastIndex]=createTextVNode(last.text+c.text);}else{// default key for nested array children (likely generated by v-for)
3203if(isTrue(children._isVList)&&isDef(c.tag)&&isUndef(c.key)&&isDef(nestedIndex)){c.key="__vlist"+nestedIndex+"_"+i+"__";}res.push(c);}}}return res;}/*  */function ensureCtor(comp,base){if(comp.__esModule||hasSymbol&&comp[Symbol.toStringTag]==='Module'){comp=comp.default;}return isObject(comp)?base.extend(comp):comp;}function createAsyncPlaceholder(factory,data,context,children,tag){var node=createEmptyVNode();node.asyncFactory=factory;node.asyncMeta={data:data,context:context,children:children,tag:tag};return node;}function resolveAsyncComponent(factory,baseCtor,context){if(isTrue(factory.error)&&isDef(factory.errorComp)){return factory.errorComp;}if(isDef(factory.resolved)){return factory.resolved;}if(isTrue(factory.loading)&&isDef(factory.loadingComp)){return factory.loadingComp;}if(isDef(factory.contexts)){// already pending
3204factory.contexts.push(context);}else{var contexts=factory.contexts=[context];var sync=true;var forceRender=function forceRender(){for(var i=0,l=contexts.length;i<l;i++){contexts[i].$forceUpdate();}};var resolve=once(function(res){// cache resolved
3205factory.resolved=ensureCtor(res,baseCtor);// invoke callbacks only if this is not a synchronous resolve
3206// (async resolves are shimmed as synchronous during SSR)
3207if(!sync){forceRender();}});var reject=once(function(reason){"development"!=='production'&&warn("Failed to resolve async component: "+String(factory)+(reason?"\nReason: "+reason:''));if(isDef(factory.errorComp)){factory.error=true;forceRender();}});var res=factory(resolve,reject);
3207if(isObject(res)){if(typeof res.then==='function'){// () => Promise
3208if(isUndef(factory.resolved)){res.then(resolve,reject);}}else if(isDef(res.component)&&typeof res.component.then==='function'){res.component.then(resolve,reject);if(isDef(res.error)){factory.errorComp=ensureCtor(res.error,baseCtor);}if(isDef(res.loading)){factory.loadingComp=ensureCtor(res.loading,baseCtor);if(res.delay===0){factory.loading=true;}else{setTimeout(function(){if(isUndef(factory.resolved)&&isUndef(factory.error)){factory.loading=true;forceRender();}},res.delay||200);}}if(isDef(res.timeout)){setTimeout(function(){if(isUndef(factory.resolved)){reject("timeout ("+res.timeout+"ms)");}},res.timeout);}}}sync=false;// return in case resolved synchronously
3209return factory.loading?factory.loadingComp:factory.resolved;}}/*  */function isAsyncPlaceholder(node){return node.isComment&&node.asyncFactory;}/*  */function getFirstComponentChild(children){if(Array.isArray(children)){for(var i=0;i<children.length;i++){var c=children[i];if(isDef(c)&&(isDef(c.componentOptions)||isAsyncPlaceholder(c))){return c;}}}}/*  *//*  */function initEvents(vm){vm._events=Object.create(null);vm._hasHookEvent=false;// init parent attached events
3210var listeners=vm.$options._parentListeners;if(listeners){updateComponentListeners(vm,listeners);}}var target;function add(event,fn,once){if(once){target.$once(event,fn);}else{target.$on(event,fn);}}function remove$1(event,fn){target.$off(event,fn);}function updateComponentListeners(vm,listeners,oldListeners){target=vm;updateListeners(listeners,oldListeners||{},add,remove$1,vm);}function eventsMixin(Vue){var hookRE=/^hook:/;Vue.prototype.$on=function(event,fn){var this$1=this;var vm=this;if(Array.isArray(event)){for(var i=0,l=event.length;i<l;i++){this$1.$on(event[i],fn);}}else{(vm._events[event]||(vm._events[event]=[])).push(fn);// optimize hook:event cost by using a boolean flag marked at registration
3211// instead of a hash lookup
3212if(hookRE.test(event)){vm._hasHookEvent=true;}}return vm;};Vue.prototype.$once=function(event,fn){var vm=this;function on(){vm.$off(event,on);fn.apply(vm,arguments);}on.fn=fn;vm.$on(event,on);return vm;};Vue.prototype.$off=function(event,fn){var this$1=this;var vm=this;// all
3213if(!arguments.length){vm._events=Object.create(null);return vm;}// array of events
3214if(Array.isArray(event)){for(var i=0,l=event.length;i<l;i++){this$1.$off(event[i],fn);}return vm;}// specific event
3215var cbs=vm._events[event];if(!cbs){return vm;}if(arguments.length===1){vm._events[event]=null;return vm;}if(fn){// specific handler
3216var cb;var i$1=cbs.length;while(i$1--){cb=cbs[i$1];if(cb===fn||cb.fn===fn){cbs.splice(i$1,1);break;}}}return vm;};Vue.prototype.$emit=function(event){var vm=this;{var lowerCaseEvent=event.toLowerCase();if(lowerCaseEvent!==event&&vm._events[lowerCaseEvent]){tip("Event \""+lowerCaseEvent+"\" is emitted in component "+formatComponentName(vm)+" but the handler is registered for \""+event+"\". "+"Note that HTML attributes are case-insensitive and you cannot use "+"v-on to listen to camelCase events when using in-DOM templates. "+"You should probably use \""+hyphenate(event)+"\" instead of \""+event+"\".");}}var cbs=vm._events[event];if(cbs){cbs=cbs.length>1?toArray(cbs):cbs;var args=toArray(arguments,1);for(var i=0,l=cbs.length;i<l;i++){try{cbs[i].apply(vm,args);}catch(e){handleError(e,vm,"event handler for \""+event+"\"");}}}return vm;};}/*  *//**
3217 * Runtime helper for resolving raw children VNodes into a slot object.
3218 */function resolveSlots(children,context){var slots={};if(!children){return slots;}var defaultSlot=[];for(var i=0,l=children.length;i<l;i++){var child=children[i];var data=child.data;// remove slot attribute if the node is resolved as a Vue slot node
3219if(data&&data.attrs&&data.attrs.slot){delete data.attrs.slot;}// named slots should only be respected if the vnode was rendered in the
3220// same context.
3221if((child.context===context||child.functionalContext===context)&&data&&data.slot!=null){var name=child.data.slot;var slot=slots[name]||(slots[name]=[]);if(child.tag==='template'){slot.push.apply(slot,child.children);}else{slot.push(child);}}else{defaultSlot.push(child);}}
3221// ignore whitespace
3222if(!defaultSlot.every(isWhitespace)){slots.default=defaultSlot;}return slots;}function isWhitespace(node){return node.isComment||node.text===' ';}function resolveScopedSlots(fns,// see flow/vnode
3223res){res=res||{};for(var i=0;i<fns.length;i++){if(Array.isArray(fns[i])){resolveScopedSlots(fns[i],res);}else{res[fns[i].key]=fns[i].fn;}}return res;}/*  */var activeInstance=null;var isUpdatingChildComponent=false;function initLifecycle(vm){var options=vm.$options;// locate first non-abstract parent
3224var parent=options.parent;if(parent&&!options.abstract){while(parent.$options.abstract&&parent.$parent){parent=parent.$parent;}parent.$children.push(vm);}vm.$parent=parent;vm.$root=parent?parent.$root:vm;vm.$children=[];vm.$refs={};vm._watcher=null;vm._inactive=null;vm._directInactive=false;vm._isMounted=false;vm._isDestroyed=false;vm._isBeingDestroyed=false;}function lifecycleMixin(Vue){Vue.prototype._update=function(vnode,hydrating){var vm=this;if(vm._isMounted){callHook(vm,'beforeUpdate');}var prevEl=vm.$el;var prevVnode=vm._vnode;var prevActiveInstance=activeInstance;activeInstance=vm;vm._vnode=vnode;// Vue.prototype.__patch__ is injected in entry points
3225// based on the rendering backend used.
3226if(!prevVnode){// initial render
3227vm.$el=vm.__patch__(vm.$el,vnode,hydrating,false/* removeOnly */,vm.$options._parentElm,vm.$options._refElm);// no need for the ref nodes after initial patch
3228// this prevents keeping a detached DOM tree in memory (#5851)
3229vm.$options._parentElm=vm.$options._refElm=null;}else{// updates
3230vm.$el=vm.__patch__(prevVnode,vnode);}activeInstance=prevActiveInstance;// update __vue__ reference
3231if(prevEl){prevEl.__vue__=null;}if(vm.$el){vm.$el.__vue__=vm;}// if parent is an HOC, update its $el as well
3232if(vm.$vnode&&vm.$parent&&vm.$vnode===vm.$parent._vnode){vm.$parent.$el=vm.$el;}// updated hook is called by the scheduler to ensure that children are
3233// updated in a parent's updated hook.
3234};Vue.prototype.$forceUpdate=function(){var vm=this;if(vm._watcher){vm._watcher.update();}};Vue.prototype.$destroy=function(){var vm=this;if(vm._isBeingDestroyed){return;}callHook(vm,'beforeDestroy');vm._isBeingDestroyed=true;// remove self from parent
3235var parent=vm.$parent;if(parent&&!parent._isBeingDestroyed&&!vm.$options.abstract){remove(parent.$children,vm);}// teardown watchers
3236if(vm._watcher){vm._watcher.teardown();}var i=vm._watchers.length;while(i--){vm._watchers[i].teardown();}// remove reference from data ob
3237// frozen object may not have observer.
3238if(vm._data.__ob__){vm._data.__ob__.vmCount--;}// call the last hook...
3239vm._isDestroyed=true;// invoke destroy hooks on current rendered tree
3240vm.__patch__(vm._vnode,null);// fire destroyed hook
3241callHook(vm,'destroyed');// turn off all instance listeners.
3242vm.$off();// remove __vue__ reference
3243if(vm.$el){vm.$el.__vue__=null;}// release circular reference (#6759)
3244if(vm.$vnode){vm.$vnode.parent=null;}};}function mountComponent(vm,el,hydrating){vm.$el=el;if(!vm.$options.render){vm.$options.render=createEmptyVNode;{/* istanbul ignore if */if(vm.$options.template&&vm.$options.template.charAt(0)!=='#'||vm.$options.el||el){warn('You are using the runtime-only build of Vue where the template '+'compiler is not available. Either pre-compile the templates into '+'render functions, or use the compiler-included build.',vm);}else{warn('Failed to mount component: template or render function not defined.',vm);}}}callHook(vm,'beforeMount');var updateComponent;/* istanbul ignore if */if("development"!=='production'&&config.performance&&mark){updateComponent=function updateComponent(){var name=vm._name;var id=vm._uid;var startTag="vue-perf-start:"+id;var endTag="vue-perf-end:"+id;mark(startTag);var vnode=vm._render();mark(endTag);measure("vue "+name+" render",startTag,endTag);mark(startTag);vm._update(vnode,hydrating);mark(endTag);measure("vue "+name+" patch",startTag,endTag);};}else{updateComponent=function updateComponent(){vm._update(vm._render(),hydrating);};}vm._watcher=new Watcher(vm,updateComponent,noop);hydrating=false;// manually mounted instance, call mounted on self
3245// mounted is called for render-created child components in its inserted hook
3246if(vm.$vnode==null){vm._isMounted=true;callHook(vm,'mounted');}return vm;}function updateChildComponent(vm,propsData,listeners,parentVnode,renderChildren){{isUpdatingChildComponent=true;}// determine whether component has slot children
3247// we need to do this before overwriting $options._renderChildren
3248var hasChildren=!!(renderChildren||// has new static slots
3249vm.$options._renderChildren||// has old static slots
3250parentVnode.data.scopedSlots||// has new scoped slots
3251vm.$scopedSlots!==emptyObject// has old scoped slots
3252);vm.$options._parentVnode=parentVnode;vm.$vnode=parentVnode;// update vm's placeholder node without re-render
3253if(vm._vnode){// update child tree's parent
3254vm._vnode.parent=parentVnode;}vm.$options._renderChildren=renderChildren;// update $attrs and $listeners hash
3255// these are also reactive so they may trigger child update if the child
3256// used them during render
3257vm.$attrs=parentVnode.data&&parentVnode.data.attrs||emptyObject;vm.$listeners=listeners||emptyObject;// update props
3258if(propsData&&vm.$options.props){observerState.shouldConvert=false;var props=vm._props;var propKeys=vm.$options._propKeys||[];for(var i=0;i<propKeys.length;i++){var key=propKeys[i];props[key]=validateProp(key,vm.$options.props,propsData,vm);}observerState.shouldConvert=true;// keep a copy of raw propsData
3259vm.$options.propsData=propsData;}// update listeners
3260if(listeners){var oldListeners=vm.$options._parentListeners;vm.$options._parentListeners=listeners;updateComponentListeners(vm,listeners,oldListeners);}// resolve slots + force update if has children
3261if(hasChildren){vm.$slots=resolveSlots(renderChildren,parentVnode.context);vm.$forceUpdate();}{isUpdatingChildComponent=false;}}function isInInactiveTree(vm){while(vm&&(vm=vm.$parent)){if(vm._inactive){return true;}}return false;}function activateChildComponent(vm,direct){if(direct){vm._directInactive=false;if(isInInactiveTree(vm)){return;}}else if(vm._directInactive){return;}if(vm._inactive||vm._inactive===null){vm._inactive=false;for(var i=0;i<vm.$children.length;i++){activateChildComponent(vm.$children[i]);}callHook(vm,'activated');}}function deactivateChildComponent(vm,direct){if(direct){vm._directInactive=true;if(isInInactiveTree(vm)){return;}}if(!vm._inactive){vm._inactive=true;for(var i=0;i<vm.$children.length;i++){deactivateChildComponent(vm.$children[i]);}callHook(vm,'deactivated');}}function callHook(vm,hook){var handlers=vm.$options[hook];if(handlers){for(var i=0,j=handlers.length;i<j;i++){try{handlers[i].call(vm);}catch(e){handleError(e,vm,hook+" hook");}}}if(vm._hasHookEvent){vm.$emit('hook:'+hook);}}/*  */var MAX_UPDATE_COUNT=100;var queue=[];var activatedChildren=[];var has={};var circular={};var waiting=false;var flushing=false;var index=0;
vendor: 6,014 bytes, lines 3261-3321
3261/**
3262 * Reset the scheduler's state.
3263 */function resetSchedulerState(){index=queue.length=activatedChildren.length=0;has={};{circular={};}waiting=flushing=false;}/**
3264 * Flush both queues and run the watchers.
3265 */function flushSchedulerQueue(){flushing=true;var watcher,id;// Sort queue before flush.
3266// This ensures that:
3267// 1. Components are updated from parent to child. (because parent is always
3268//    created before the child)
3269// 2. A component's user watchers are run before its render watcher (because
3270//    user watchers are created before the render watcher)
3271// 3. If a component is destroyed during a parent component's watcher run,
3272//    its watchers can be skipped.
3273queue.sort(function(a,b){return a.id-b.id;});// do not cache length because more watchers might be pushed
3274// as we run existing watchers
3275for(index=0;index<queue.length;index++){watcher=queue[index];id=watcher.id;has[id]=null;watcher.run();// in dev build, check and stop circular updates.
3276if("development"!=='production'&&has[id]!=null){circular[id]=(circular[id]||0)+1;if(circular[id]>MAX_UPDATE_COUNT){warn('You may have an infinite update loop '+(watcher.user?"in watcher with expression \""+watcher.expression+"\"":"in a component render function."),watcher.vm);break;}}}// keep copies of post queues before resetting state
3277var activatedQueue=activatedChildren.slice();var updatedQueue=queue.slice();resetSchedulerState();// call component updated and activated hooks
3278callActivatedHooks(activatedQueue);callUpdatedHooks(updatedQueue);// devtool hook
3279/* istanbul ignore if */if(devtools&&config.devtools){devtools.emit('flush');}}function callUpdatedHooks(queue){var i=queue.length;while(i--){var watcher=queue[i];var vm=watcher.vm;if(vm._watcher===watcher&&vm._isMounted){callHook(vm,'updated');}}}/**
3280 * Queue a kept-alive component that was activated during patch.
3281 * The queue will be processed after the entire tree has been patched.
3282 */function queueActivatedComponent(vm){// setting _inactive to false here so that a render function can
3283// rely on checking whether it's in an inactive tree (e.g. router-view)
3284vm._inactive=false;activatedChildren.push(vm);}function callActivatedHooks(queue){for(var i=0;i<queue.length;i++){queue[i]._inactive=true;activateChildComponent(queue[i],true/* true */);}}/**
3285 * Push a watcher into the watcher queue.
3286 * Jobs with duplicate IDs will be skipped unless it's
3287 * pushed when the queue is being flushed.
3288 */function queueWatcher(watcher){var id=watcher.id;if(has[id]==null){has[id]=true;if(!flushing){queue.push(watcher);}else{// if already flushing, splice the watcher based on its id
3289// if already past its id, it will be run next immediately.
3290var i=queue.length-1;while(i>index&&queue[i].id>watcher.id){i--;}queue.splice(i+1,0,watcher);}// queue the flush
3291if(!waiting){waiting=true;nextTick(flushSchedulerQueue);}}}/*  */var uid$2=0;/**
3292 * A watcher parses an expression, collects dependencies,
3293 * and fires callback when the expression value changes.
3294 * This is used for both the $watch() api and directives.
3295 */var Watcher=function Watcher(vm,expOrFn,cb,options){this.vm=vm;vm._watchers.push(this);// options
3296if(options){this.deep=!!options.deep;this.user=!!options.user;this.lazy=!!options.lazy;this.sync=!!options.sync;}else{this.deep=this.user=this.lazy=this.sync=false;}this.cb=cb;this.id=++uid$2;// uid for batching
3297this.active=true;this.dirty=this.lazy;// for lazy watchers
3298this.deps=[];this.newDeps=[];this.depIds=new _Set();this.newDepIds=new _Set();this.expression=expOrFn.toString();// parse expression for getter
3299if(typeof expOrFn==='function'){this.getter=expOrFn;}else{this.getter=parsePath(expOrFn);if(!this.getter){this.getter=function(){};"development"!=='production'&&warn("Failed watching path: \""+expOrFn+"\" "+'Watcher only accepts simple dot-delimited paths. '+'For full control, use a function instead.',vm);}}this.value=this.lazy?undefined:this.get();};/**
3300 * Evaluate the getter, and re-collect dependencies.
3301 */Watcher.prototype.get=function get(){pushTarget(this);var value;var vm=this.vm;try{value=this.getter.call(vm,vm);}catch(e){if(this.user){handleError(e,vm,"getter for watcher \""+this.expression+"\"");}else{throw e;}}finally{// "touch" every property so they are all tracked as
3302// dependencies for deep watching
3303if(this.deep){traverse(value);}popTarget();this.cleanupDeps();}return value;};/**
3304 * Add a dependency to this directive.
3305 */Watcher.prototype.addDep=function addDep(dep){var id=dep.id;if(!this.newDepIds.has(id)){this.newDepIds.add(id);this.newDeps.push(dep);if(!this.depIds.has(id)){dep.addSub(this);}}};/**
3306 * Clean up for dependency collection.
3307 */Watcher.prototype.cleanupDeps=function cleanupDeps(){var this$1=this;var i=this.deps.length;while(i--){var dep=this$1.deps[i];if(!this$1.newDepIds.has(dep.id)){dep.removeSub(this$1);}}var tmp=this.depIds;this.depIds=this.newDepIds;this.newDepIds=tmp;this.newDepIds.clear();tmp=this.deps;this.deps=this.newDeps;this.newDeps=tmp;this.newDeps.length=0;};/**
3308 * Subscriber interface.
3309 * Will be called when a dependency changes.
3310 */Watcher.prototype.update=function update(){/* istanbul ignore else */if(this.lazy){this.dirty=true;}else if(this.sync){this.run();}else{queueWatcher(this);}};/**
3311 * Scheduler job interface.
3312 * Will be called by the scheduler.
3313 */Watcher.prototype.run=function run(){if(this.active){var value=this.get();if(value!==this.value||// Deep watchers and watchers on Object/Arrays should fire even
3314// when the value is the same, because the value may
3315// have mutated.
3316isObject(value)||this.deep){// set new value
3317var oldValue=this.value;this.value=value;if(this.user){try{this.cb.call(this.vm,value,oldValue);}catch(e){handleError(e,this.vm,"callback for watcher \""+this.expression+"\"");}}else{this.cb.call(this.vm,value,oldValue);}}}};/**
3318 * Evaluate the value of the watcher.
3319 * This only gets called for lazy watchers.
3320 */Watcher.prototype.evaluate=function evaluate(){this.value=this.get();this.dirty=false;};/**
3321 * Depend on all deps collected by this watcher.
3322 */Watcher.prototype.depend=function depend(){var this$1=this;var i=this.deps.length;while(i--){this$1.deps[i].depend();}};/**
3323 * Remove self from all dependencies' subscriber list.
3324 */Watcher.prototype.teardown=function teardown(){var this$1=this;if(this.active){// remove self from vm's watcher list
3325// this is a somewhat expensive operation so we skip it
3326// if the vm is being destroyed.
3327if(!this.vm._isBeingDestroyed){remove(this.vm._watchers,this);}var i=this.deps.length;while(i--){this$1.deps[i].removeSub(this$1);}this.active=false;}};/**
3328 * Recursively traverse an object to evoke all converted
3329 * getters, so that every nested property inside the object
3330 * is collected as a "deep" dependency.
3331 */var seenObjects=new _Set();function traverse(val){seenObjects.clear();_traverse(val,seenObjects);}function _traverse(val,seen){var i,keys;var isA=Array.isArray(val);if(!isA&&!isObject(val)||!Object.isExtensible(val)){return;}if(val.__ob__){var depId=val.__ob__.dep.id;if(seen.has(depId)){return;}seen.add(depId);}if(isA){i=val.length;while(i--){_traverse(val[i],seen);}}else{keys=Object.keys(val);i=keys.length;while(i--){_traverse(val[keys[i]],seen);}}}/*  */var sharedPropertyDefinition={enumerable:true,configurable:true,get:noop,set:noop};function proxy(target,sourceKey,key){sharedPropertyDefinition.get=function proxyGetter(){return this[sourceKey][key];};sharedPropertyDefinition.set=function proxySetter(val){this[sourceKey][key]=val;};Object.defineProperty(target,key,sharedPropertyDefinition);}function initState(vm){vm._watchers=[];var opts=vm.$options;if(opts.props){initProps(vm,opts.props);}if(opts.methods){initMethods(vm,opts.methods);}if(opts.data){initData(vm);}else{observe(vm._data={},true/* asRootData */);}if(opts.computed){initComputed(vm,opts.computed);}if(opts.watch&&opts.watch!==nativeWatch){initWatch(vm,opts.watch);}}function initProps(vm,propsOptions){var propsData=vm.$options.propsData||{};var props=vm._props={};// cache prop keys so that future props updates can iterate using Array
3332// instead of dynamic object key enumeration.
3333var keys=vm.$options._propKeys=[];var isRoot=!vm.$parent;// root instance props should be converted
3334observerState.shouldConvert=isRoot;var loop=function loop(key){keys.push(key);var value=validateProp(key,propsOptions,propsData,vm);/* istanbul ignore else */{var hyphenatedKey=hyphenate(key);if(isReservedAttribute(hyphenatedKey)||config.isReservedAttr(hyphenatedKey)){warn("\""+hyphenatedKey+"\" is a reserved attribute and cannot be used as component prop.",vm);}defineReactive(props,key,value,function(){if(vm.$parent&&!isUpdatingChildComponent){warn("Avoid mutating a prop directly since the value will be "+"overwritten whenever the parent component re-renders. "+"Instead, use a data or computed property based on the prop's "+"value. Prop being mutated: \""+key+"\"",vm);}});}// static props are already proxied on the component's prototype
3335// during Vue.extend(). We only need to proxy props defined at
3336// instantiation here.
3337if(!(key in vm)){proxy(vm,"_props",key);}};for(var key in propsOptions){loop(key);}observerState.shouldConvert=true;}function initData(vm){var data=vm.$options.data;data=vm._data=typeof data==='function'?getData(data,vm):data||{};if(!isPlainObject(data)){data={};"development"!=='production'&&warn('data functions should return an object:\n'+'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',vm);}// proxy data on instance
3338var keys=Object.keys(data);var props=vm.$options.props;var methods=vm.$options.methods;var i=keys.length;while(i--){var key=keys[i];{if(methods&&hasOwn(methods,key)){warn("Method \""+key+"\" has already been defined as a data property.",vm);}}if(props&&hasOwn(props,key)){"development"!=='production'&&warn("The data property \""+key+"\" is already declared as a prop. "+"Use prop default value instead.",vm);}else if(!isReserved(key)){proxy(vm,"_data",key);}}// observe data
3339observe(data,true/* asRootData */);}function getData(data,vm){try{return data.call(vm,vm);}catch(e){handleError(e,vm,"data()");return{};}}var computedWatcherOptions={lazy:true};function initComputed(vm,computed){var watchers=vm._computedWatchers=Object.create(null);// computed properties are just getters during SSR
3340var isSSR=isServerRendering();for(var key in computed){var userDef=computed[key];var getter=typeof userDef==='function'?userDef:userDef.get;if("development"!=='production'&&getter==null){warn("Getter is missing for computed property \""+key+"\".",vm);}if(!isSSR){// create internal watcher for the computed property.
3341watchers[key]=new Watcher(vm,getter||noop,noop,computedWatcherOptions);}// component-defined computed properties are already defined on the
3342// component prototype. We only need to define computed properties defined
3343// at instantiation here.
3344if(!(key in vm)){defineComputed(vm,key,userDef);}else{if(key in vm.$data){warn("The computed property \""+key+"\" is already defined in data.",vm);}else if(vm.$options.props&&key in vm.$options.props){warn("The computed property \""+key+"\" is already defined as a prop.",vm);}}}}function defineComputed(target,key,userDef){var shouldCache=!isServerRendering();if(typeof userDef==='function'){sharedPropertyDefinition.get=shouldCache?createComputedGetter(key):userDef;sharedPropertyDefinition.set=noop;}else{sharedPropertyDefinition.get=userDef.get?shouldCache&&userDef.cache!==false?createComputedGetter(key):userDef.get:noop;sharedPropertyDefinition.set=userDef.set?userDef.set:noop;}if("development"!=='production'&&sharedPropertyDefinition.set===noop){sharedPropertyDefinition.set=function(){warn("Computed property \""+key+"\" was assigned to but it has no setter.",this);};}Object.defineProperty(target,key,sharedPropertyDefinition);}function createComputedGetter(key){return function computedGetter(){var watcher=this._computedWatchers&&this._computedWatchers[key];
3344if(watcher){if(watcher.dirty){watcher.evaluate();}if(Dep.target){watcher.depend();}return watcher.value;}};}function initMethods(vm,methods){var props=vm.$options.props;for(var key in methods){{if(methods[key]==null){warn("Method \""+key+"\" has an undefined value in the component definition. "+"Did you reference the function correctly?",vm);}if(props&&hasOwn(props,key)){warn("Method \""+key+"\" has already been defined as a prop.",vm);}if(key in vm&&isReserved(key)){warn("Method \""+key+"\" conflicts with an existing Vue instance method. "+"Avoid defining component methods that start with _ or $.");}}vm[key]=methods[key]==null?noop:bind(methods[key],vm);}}function initWatch(vm,watch){for(var key in watch){var handler=watch[key];if(Array.isArray(handler)){for(var i=0;i<handler.length;i++){createWatcher(vm,key,handler[i]);}}else{createWatcher(vm,key,handler);}}}function createWatcher(vm,keyOrFn,handler,options){if(isPlainObject(handler)){options=handler;handler=handler.handler;}if(typeof handler==='string'){handler=vm[handler];}return vm.$watch(keyOrFn,handler,options);}function stateMixin(Vue){// flow somehow has problems with directly declared definition object
3345// when using Object.defineProperty, so we have to procedurally build up
3346// the object here.
3347var dataDef={};dataDef.get=function(){return this._data;};var propsDef={};propsDef.get=function(){return this._props;};{dataDef.set=function(newData){warn('Avoid replacing instance root $data. '+'Use nested data properties instead.',this);};propsDef.set=function(){warn("$props is readonly.",this);};}Object.defineProperty(Vue.prototype,'$data',dataDef);Object.defineProperty(Vue.prototype,'$props',propsDef);Vue.prototype.$set=set;Vue.prototype.$delete=del;Vue.prototype.$watch=function(expOrFn,cb,options){var vm=this;if(isPlainObject(cb)){return createWatcher(vm,expOrFn,cb,options);}options=options||{};options.user=true;var watcher=new Watcher(vm,expOrFn,cb,options);if(options.immediate){cb.call(vm,watcher.value);}return function unwatchFn(){watcher.teardown();};};}/*  */function initProvide(vm){var provide=vm.$options.provide;if(provide){vm._provided=typeof provide==='function'?provide.call(vm):provide;}}function initInjections(vm){var result=resolveInject(vm.$options.inject,vm);if(result){observerState.shouldConvert=false;Object.keys(result).forEach(function(key){/* istanbul ignore else */{defineReactive(vm,key,result[key],function(){warn("Avoid mutating an injected value directly since the changes will be "+"overwritten whenever the provided component re-renders. "+"injection being mutated: \""+key+"\"",vm);});}});observerState.shouldConvert=true;}}function resolveInject(inject,vm){if(inject){// inject is :any because flow is not smart enough to figure out cached
3348var result=Object.create(null);var keys=hasSymbol?Reflect.ownKeys(inject).filter(function(key){/* istanbul ignore next */return Object.getOwnPropertyDescriptor(inject,key).enumerable;}):Object.keys(inject);for(var i=0;i<keys.length;i++){var key=keys[i];var provideKey=inject[key].from;var source=vm;while(source){if(source._provided&&provideKey in source._provided){result[key]=source._provided[provideKey];break;}source=source.$parent;}if(!source){if('default'in inject[key]){var provideDefault=inject[key].default;result[key]=typeof provideDefault==='function'?provideDefault.call(vm):provideDefault;}else{warn("Injection \""+key+"\" not found",vm);}}}return result;}}/*  *//**
3349 * Runtime helper for rendering v-for lists.
3350 */function renderList(val,render){var ret,i,l,keys,key;if(Array.isArray(val)||typeof val==='string'){ret=new Array(val.length);for(i=0,l=val.length;i<l;i++){ret[i]=render(val[i],i);}}else if(typeof val==='number'){ret=new Array(val);for(i=0;i<val;i++){ret[i]=render(i+1,i);}}else if(isObject(val)){keys=Object.keys(val);ret=new Array(keys.length);for(i=0,l=keys.length;i<l;i++){key=keys[i];ret[i]=render(val[key],key,i);}}if(isDef(ret)){ret._isVList=true;}return ret;}/*  *//**
3351 * Runtime helper for rendering <slot>
3352 */function renderSlot(name,fallback,props,bindObject){var scopedSlotFn=this.$scopedSlots[name];if(scopedSlotFn){// scoped slot
3353props=props||{};if(bindObject){if("development"!=='production'&&!isObject(bindObject)){warn('slot v-bind without argument expects an Object',this);}props=extend(extend({},bindObject),props);}return scopedSlotFn(props)||fallback;}else{var slotNodes=this.$slots[name];// warn duplicate slot usage
3354if(slotNodes&&"development"!=='production'){slotNodes._rendered&&warn("Duplicate presence of slot \""+name+"\" found in the same render tree "+"- this will likely cause render errors.",this);slotNodes._rendered=true;}return slotNodes||fallback;}}/*  *//**
3355 * Runtime helper for resolving filters
3356 */function resolveFilter(id){return resolveAsset(this.$options,'filters',id,true)||identity;}/*  *//**
3357 * Runtime helper for checking keyCodes from config.
3358 * exposed as Vue.prototype._k
3359 * passing in eventKeyName as last argument separately for backwards compat
3360 */function checkKeyCodes(eventKeyCode,key,builtInAlias,eventKeyName){var keyCodes=config.keyCodes[key]||builtInAlias;if(keyCodes){if(Array.isArray(keyCodes)){return keyCodes.indexOf(eventKeyCode)===-1;}else{return keyCodes!==eventKeyCode;}}else if(eventKeyName){return hyphenate(eventKeyName)!==key;}}/*  *//**
3361 * Runtime helper for merging v-bind="object" into a VNode's data.
3362 */function bindObjectProps(data,tag,value,asProp,isSync){if(value){if(!isObject(value)){"development"!=='production'&&warn('v-bind without argument expects an Object or Array value',this);}else{if(Array.isArray(value)){value=toObject(value);}var hash;var loop=function loop(key){if(key==='class'||key==='style'||isReservedAttribute(key)){hash=data;}else{var type=data.attrs&&data.attrs.type;hash=asProp||config.mustUseProp(tag,type,key)?data.domProps||(data.domProps={}):data.attrs||(data.attrs={});}if(!(key in hash)){hash[key]=value[key];if(isSync){var on=data.on||(data.on={});on["update:"+key]=function($event){value[key]=$event;};}}};for(var key in value){loop(key);}}}return data;}/*  *//**
3363 * Runtime helper for rendering static trees.
3364 */function renderStatic(index,isInFor){// static trees can be rendered once and cached on the contructor options
3365// so every instance shares the same cached trees
3366var renderFns=this.$options.staticRenderFns;var cached=renderFns.cached||(renderFns.cached=[]);var tree=cached[index];// if has already-rendered static tree and not inside v-for,
3367// we can reuse the same tree by doing a shallow clone.
3368if(tree&&!isInFor){return Array.isArray(tree)?cloneVNodes(tree):cloneVNode(tree);}// otherwise, render a fresh tree.
3369tree=cached[index]=renderFns[index].call(this._renderProxy,null,this);markStatic(tree,"__static__"+index,false);return tree;}/**
3370 * Runtime helper for v-once.
3371 * Effectively it means marking the node as static with a unique key.
3372 */function markOnce(tree,index,key){markStatic(tree,"__once__"+index+(key?"_"+key:""),true);return tree;}function markStatic(tree,key,isOnce){if(Array.isArray(tree)){for(var i=0;i<tree.length;i++){if(tree[i]&&typeof tree[i]!=='string'){markStaticNode(tree[i],key+"_"+i,isOnce);}}}else{markStaticNode(tree,key,isOnce);}}function markStaticNode(node,key,isOnce){node.isStatic=true;node.key=key;node.isOnce=isOnce;}/*  */function bindObjectListeners(data,value){if(value){if(!isPlainObject(value)){"development"!=='production'&&warn('v-on without argument expects an Object value',this);}else{var on=data.on=data.on?extend({},data.on):{};for(var key in value){var existing=on[key];var ours=value[key];on[key]=existing?[].concat(ours,existing):ours;}}}return data;}/*  */function installRenderHelpers(target){target._o=markOnce;target._n=toNumber;target._s=toString;target._l=renderList;target._t=renderSlot;target._q=looseEqual;target._i=looseIndexOf;target._m=renderStatic;target._f=resolveFilter;target._k=checkKeyCodes;target._b=bindObjectProps;target._v=createTextVNode;target._e=createEmptyVNode;target._u=resolveScopedSlots;target._g=bindObjectListeners;}/*  */function FunctionalRenderContext(data,props,children,parent,Ctor){var options=Ctor.options;this.data=data;this.props=props;this.children=children;this.parent=parent;this.listeners=data.on||emptyObject;this.injections=resolveInject(options.inject,parent);this.slots=function(){return resolveSlots(children,parent);};// ensure the createElement function in functional components
3373// gets a unique context - this is necessary for correct named slot check
3374var contextVm=Object.create(parent);var isCompiled=isTrue(options._compiled);var needNormalization=!isCompiled;// support for compiled functional template
3375if(isCompiled){// exposing $options for renderStatic()
3376this.$options=options;// pre-resolve slots for renderSlot()
3377this.$slots=this.slots();this.$scopedSlots=data.scopedSlots||emptyObject;}if(options._scopeId){this._c=function(a,b,c,d){var vnode=createElement(contextVm,a,b,c,d,needNormalization);if(vnode){vnode.functionalScopeId=options._scopeId;vnode.functionalContext=parent;}return vnode;};}else{this._c=function(a,b,c,d){return createElement(contextVm,a,b,c,d,needNormalization);};}}installRenderHelpers(FunctionalRenderContext.prototype);function createFunctionalComponent(Ctor,propsData,data,contextVm,children){var options=Ctor.options;var props={};var propOptions=options.props;if(isDef(propOptions)){for(var key in propOptions){props[key]=validateProp(key,propOptions,propsData||emptyObject);}}else{if(isDef(data.attrs)){mergeProps(props,data.attrs);}if(isDef(data.props)){mergeProps(props,data.props);}}var renderContext=new FunctionalRenderContext(data,props,children,contextVm,Ctor);var vnode=options.render.call(null,renderContext._c,renderContext);if(vnode instanceof VNode){vnode.functionalContext=contextVm;vnode.functionalOptions=options;if(data.slot){(vnode.data||(vnode.data={})).slot=data.slot;}}return vnode;}function mergeProps(to,from){for(var key in from){to[camelize(key)]=from[key];}}/*  */// hooks to be invoked on component VNodes during patch
3378var componentVNodeHooks={init:function init(vnode,hydrating,parentElm,refElm){if(!vnode.componentInstance||vnode.componentInstance._isDestroyed){var child=vnode.componentInstance=createComponentInstanceForVnode(vnode,activeInstance,parentElm,refElm);child.$mount(hydrating?vnode.elm:undefined,hydrating);}else if(vnode.data.keepAlive){// kept-alive components, treat as a patch
3379var mountedNode=vnode;// work around flow
3380componentVNodeHooks.prepatch(mountedNode,mountedNode);}},prepatch:function prepatch(oldVnode,vnode){var options=vnode.componentOptions;
3380var child=vnode.componentInstance=oldVnode.componentInstance;updateChildComponent(child,options.propsData,// updated props
3381options.listeners,// updated listeners
3382vnode,// new parent vnode
3383options.children// new children
3384);},insert:function insert(vnode){var context=vnode.context;var componentInstance=vnode.componentInstance;if(!componentInstance._isMounted){componentInstance._isMounted=true;callHook(componentInstance,'mounted');}if(vnode.data.keepAlive){if(context._isMounted){// vue-router#1212
3385// During updates, a kept-alive component's child components may
3386// change, so directly walking the tree here may call activated hooks
3387// on incorrect children. Instead we push them into a queue which will
3388// be processed after the whole patch process ended.
3389queueActivatedComponent(componentInstance);}else{activateChildComponent(componentInstance,true/* direct */);}}},destroy:function destroy(vnode){var componentInstance=vnode.componentInstance;if(!componentInstance._isDestroyed){if(!vnode.data.keepAlive){componentInstance.$destroy();}else{deactivateChildComponent(componentInstance,true/* direct */);}}}};var hooksToMerge=Object.keys(componentVNodeHooks);function createComponent(Ctor,data,context,children,tag){if(isUndef(Ctor)){return;}var baseCtor=context.$options._base;// plain options object: turn it into a constructor
3390if(isObject(Ctor)){Ctor=baseCtor.extend(Ctor);}// if at this stage it's not a constructor or an async component factory,
3391// reject.
3392if(typeof Ctor!=='function'){{warn("Invalid Component definition: "+String(Ctor),context);}return;}// async component
3393var asyncFactory;if(isUndef(Ctor.cid)){asyncFactory=Ctor;Ctor=resolveAsyncComponent(asyncFactory,baseCtor,context);if(Ctor===undefined){// return a placeholder node for async component, which is rendered
3394// as a comment node but preserves all the raw information for the node.
3395// the information will be used for async server-rendering and hydration.
3396return createAsyncPlaceholder(asyncFactory,data,context,children,tag);}}data=data||{};// resolve constructor options in case global mixins are applied after
3397// component constructor creation
3398resolveConstructorOptions(Ctor);// transform component v-model data into props & events
3399if(isDef(data.model)){transformModel(Ctor.options,data);}// extract props
3400var propsData=extractPropsFromVNodeData(data,Ctor,tag);// functional component
3401if(isTrue(Ctor.options.functional)){return createFunctionalComponent(Ctor,propsData,data,context,children);}// extract listeners, since these needs to be treated as
3402// child component listeners instead of DOM listeners
3403var listeners=data.on;// replace with listeners with .native modifier
3404// so it gets processed during parent component patch.
3405data.on=data.nativeOn;if(isTrue(Ctor.options.abstract)){// abstract components do not keep anything
3406// other than props & listeners & slot
3407// work around flow
3408var slot=data.slot;data={};if(slot){data.slot=slot;}}// merge component management hooks onto the placeholder node
3409mergeHooks(data);// return a placeholder vnode
3410var name=Ctor.options.name||tag;var vnode=new VNode("vue-component-"+Ctor.cid+(name?"-"+name:''),data,undefined,undefined,undefined,context,{Ctor:Ctor,propsData:propsData,listeners:listeners,tag:tag,children:children},asyncFactory);return vnode;}function createComponentInstanceForVnode(vnode,// we know it's MountedComponentVNode but flow doesn't
3411parent,// activeInstance in lifecycle state
3412parentElm,refElm){var vnodeComponentOptions=vnode.componentOptions;var options={_isComponent:true,parent:parent,propsData:vnodeComponentOptions.propsData,_componentTag:vnodeComponentOptions.tag,_parentVnode:vnode,_parentListeners:vnodeComponentOptions.listeners,_renderChildren:vnodeComponentOptions.children,_parentElm:parentElm||null,_refElm:refElm||null};// check inline-template render functions
3413var inlineTemplate=vnode.data.inlineTemplate;if(isDef(inlineTemplate)){options.render=inlineTemplate.render;options.staticRenderFns=inlineTemplate.staticRenderFns;}return new vnodeComponentOptions.Ctor(options);}function mergeHooks(data){if(!data.hook){data.hook={};}for(var i=0;i<hooksToMerge.length;i++){var key=hooksToMerge[i];var fromParent=data.hook[key];var ours=componentVNodeHooks[key];data.hook[key]=fromParent?mergeHook$1(ours,fromParent):ours;}}function mergeHook$1(one,two){return function(a,b,c,d){one(a,b,c,d);two(a,b,c,d);};}// transform component v-model info (value and callback) into
3414// prop and event handler respectively.
3415function transformModel(options,data){var prop=options.model&&options.model.prop||'value';var event=options.model&&options.model.event||'input';(data.props||(data.props={}))[prop]=data.model.value;var on=data.on||(data.on={});if(isDef(on[event])){on[event]=[data.model.callback].concat(on[event]);}else{on[event]=data.model.callback;}}/*  */var SIMPLE_NORMALIZE=1;var ALWAYS_NORMALIZE=2;// wrapper function for providing a more flexible interface
3416// without getting yelled at by flow
3417function createElement(context,tag,data,children,normalizationType,alwaysNormalize){if(Array.isArray(data)||isPrimitive(data)){normalizationType=children;children=data;data=undefined;}if(isTrue(alwaysNormalize)){normalizationType=ALWAYS_NORMALIZE;}return _createElement(context,tag,data,children,normalizationType);}function _createElement(context,tag,data,children,normalizationType){if(isDef(data)&&isDef(data.__ob__)){"development"!=='production'&&warn("Avoid using observed data object as vnode data: "+JSON.stringify(data)+"\n"+'Always create fresh vnode data objects in each render!',context);return createEmptyVNode();}// object syntax in v-bind
3418if(isDef(data)&&isDef(data.is)){tag=data.is;}if(!tag){// in case of component :is set to falsy value
3419return createEmptyVNode();}// warn against non-primitive key
3420if("development"!=='production'&&isDef(data)&&isDef(data.key)&&!isPrimitive(data.key)){warn('Avoid using non-primitive value as key, '+'use string/number value instead.',context);}// support single function children as default scoped slot
3421if(Array.isArray(children)&&typeof children[0]==='function'){data=data||{};data.scopedSlots={default:children[0]};children.length=0;}if(normalizationType===ALWAYS_NORMALIZE){children=normalizeChildren(children);}else if(normalizationType===SIMPLE_NORMALIZE){children=simpleNormalizeChildren(children);}var vnode,ns;if(typeof tag==='string'){var Ctor;ns=context.$vnode&&context.$vnode.ns||config.getTagNamespace(tag);if(config.isReservedTag(tag)){// platform built-in elements
3422vnode=new VNode(config.parsePlatformTagName(tag),data,children,undefined,undefined,context);}else if(isDef(Ctor=resolveAsset(context.$options,'components',tag))){// component
3423vnode=createComponent(Ctor,data,context,children,tag);}else{// unknown or unlisted namespaced elements
3424// check at runtime because it may get assigned a namespace when its
3425// parent normalizes children
3426vnode=new VNode(tag,data,children,undefined,undefined,context);}}else{// direct component options / constructor
3427vnode=createComponent(tag,data,context,children);}if(isDef(vnode)){if(ns){applyNS(vnode,ns);}return vnode;}else{return createEmptyVNode();}}function applyNS(vnode,ns,force){vnode.ns=ns;if(vnode.tag==='foreignObject'){// use default namespace inside foreignObject
3428ns=undefined;force=true;}if(isDef(vnode.children)){for(var i=0,l=vnode.children.length;i<l;i++){var child=vnode.children[i];if(isDef(child.tag)&&(isUndef(child.ns)||isTrue(force))){applyNS(child,ns,force);}}}}/*  */function initRender(vm){vm._vnode=null;// the root of the child tree
3429var options=vm.$options;var parentVnode=vm.$vnode=options._parentVnode;// the placeholder node in parent tree
3430var renderContext=parentVnode&&parentVnode.context;vm.$slots=resolveSlots(options._renderChildren,renderContext);vm.$scopedSlots=emptyObject;// bind the createElement fn to this instance
3431// so that we get proper render context inside it.
3432// args order: tag, data, children, normalizationType, alwaysNormalize
3433// internal version is used by render functions compiled from templates
3434vm._c=function(a,b,c,d){return createElement(vm,a,b,c,d,false);};// normalization is always applied for the public version, used in
3435// user-written render functions.
3436vm.$createElement=function(a,b,c,d){return createElement(vm,a,b,c,d,true);};// $attrs & $listeners are exposed for easier HOC creation.
3437// they need to be reactive so that HOCs using them are always updated
3438var parentData=parentVnode&&parentVnode.data;/* istanbul ignore else */{defineReactive(vm,'$attrs',parentData&&parentData.attrs||emptyObject,function(){!isUpdatingChildComponent&&warn("$attrs is readonly.",vm);},true);defineReactive(vm,'$listeners',options._parentListeners||emptyObject,function(){!isUpdatingChildComponent&&warn("$listeners is readonly.",vm);},true);}}function renderMixin(Vue){// install runtime convenience helpers
3439installRenderHelpers(Vue.prototype);Vue.prototype.$nextTick=function(fn){return nextTick(fn,this);};Vue.prototype._render=function(){var vm=this;var ref=vm.$options;var render=ref.render;var _parentVnode=ref._parentVnode;if(vm._isMounted){// if the parent didn't update, the slot nodes will be the ones from
3440// last render. They need to be cloned to ensure "freshness" for this render.
3441for(var key in vm.$slots){var slot=vm.$slots[key];if(slot._rendered){vm.$slots[key]=cloneVNodes(slot,true/* deep */);}}}vm.$scopedSlots=_parentVnode&&_parentVnode.data.scopedSlots||emptyObject;// set parent vnode. this allows render functions to have access
3442// to the data on the placeholder node.
3443vm.$vnode=_parentVnode;// render self
3444var vnode;try{vnode=render.call(vm._renderProxy,vm.$createElement);}catch(e){handleError(e,vm,"render");// return error render result,
3445// or previous vnode to prevent render error causing blank component
3446/* istanbul ignore else */{if(vm.$options.renderError){try{vnode=vm.$options.renderError.call(vm._renderProxy,vm.$createElement,e);}catch(e){handleError(e,vm,"renderError");vnode=vm._vnode;}}else{vnode=vm._vnode;}}}// return empty vnode in case the render function errored out
3447if(!(vnode instanceof VNode)){if("development"!=='production'&&Array.isArray(vnode)){warn('Multiple root nodes returned from render function. Render function '+'should return a single root node.',vm);}vnode=createEmptyVNode();}// set parent
3448vnode.parent=_parentVnode;return vnode;};}/*  */var uid$1=0;function initMixin(Vue){Vue.prototype._init=function(options){var vm=this;// a uid
3449vm._uid=uid$1++;var startTag,endTag;/* istanbul ignore if */if("development"!=='production'&&config.performance&&mark){startTag="vue-perf-start:"+vm._uid;endTag="vue-perf-end:"+vm._uid;mark(startTag);}// a flag to avoid this being observed
3450vm._isVue=true;// merge options
3451if(options&&options._isComponent){// optimize internal component instantiation
3452// since dynamic options merging is pretty slow, and none of the
3453// internal component options needs special treatment.
3454initInternalComponent(vm,options);}else{vm.$options=mergeOptions(resolveConstructorOptions(vm.constructor),options||{},vm);}/* istanbul ignore else */{initProxy(vm);}// expose real self
3455vm._self=vm;initLifecycle(vm);initEvents(vm);initRender(vm);callHook(vm,'beforeCreate');initInjections(vm);// resolve injections before data/props
3456initState(vm);initProvide(vm);// resolve provide after data/props
3457callHook(vm,'created');/* istanbul ignore if */if("development"!=='production'&&config.performance&&mark){vm._name=formatComponentName(vm,false);mark(endTag);measure("vue "+vm._name+" init",startTag,endTag);}if(vm.$options.el){vm.$mount(vm.$options.el);}};}function initInternalComponent(vm,options){var opts=vm.$options=Object.create(vm.constructor.options);// doing this because it's faster than dynamic enumeration.
3458opts.parent=options.parent;opts.propsData=options.propsData;opts._parentVnode=options._parentVnode;opts._parentListeners=options._parentListeners;opts._renderChildren=options._renderChildren;opts._componentTag=options._componentTag;opts._parentElm=options._parentElm;opts._refElm=options._refElm;if(options.render){opts.render=options.render;opts.staticRenderFns=options.staticRenderFns;}}
3458function resolveConstructorOptions(Ctor){var options=Ctor.options;if(Ctor.super){var superOptions=resolveConstructorOptions(Ctor.super);var cachedSuperOptions=Ctor.superOptions;if(superOptions!==cachedSuperOptions){// super option changed,
3459// need to resolve new options.
3460Ctor.superOptions=superOptions;// check if there are any late-modified/attached options (#4976)
3461var modifiedOptions=resolveModifiedOptions(Ctor);// update base extend options
3462if(modifiedOptions){extend(Ctor.extendOptions,modifiedOptions);}options=Ctor.options=mergeOptions(superOptions,Ctor.extendOptions);if(options.name){options.components[options.name]=Ctor;}}}return options;}function resolveModifiedOptions(Ctor){var modified;var latest=Ctor.options;var extended=Ctor.extendOptions;var sealed=Ctor.sealedOptions;for(var key in latest){if(latest[key]!==sealed[key]){if(!modified){modified={};}modified[key]=dedupe(latest[key],extended[key],sealed[key]);}}return modified;}function dedupe(latest,extended,sealed){// compare latest and sealed to ensure lifecycle hooks won't be duplicated
3463// between merges
3464if(Array.isArray(latest)){var res=[];sealed=Array.isArray(sealed)?sealed:[sealed];extended=Array.isArray(extended)?extended:[extended];for(var i=0;i<latest.length;i++){// push original options and not sealed options to exclude duplicated options
3465if(extended.indexOf(latest[i])>=0||sealed.indexOf(latest[i])<0){res.push(latest[i]);}}return res;}else{return latest;}}function Vue$3(options){if("development"!=='production'&&!(this instanceof Vue$3)){warn('Vue is a constructor and should be called with the `new` keyword');}this._init(options);}initMixin(Vue$3);stateMixin(Vue$3);eventsMixin(Vue$3);lifecycleMixin(Vue$3);renderMixin(Vue$3);/*  */function initUse(Vue){Vue.use=function(plugin){var installedPlugins=this._installedPlugins||(this._installedPlugins=[]);if(installedPlugins.indexOf(plugin)>-1){return this;}// additional parameters
3466var args=toArray(arguments,1);args.unshift(this);if(typeof plugin.install==='function'){plugin.install.apply(plugin,args);}else if(typeof plugin==='function'){plugin.apply(null,args);}installedPlugins.push(plugin);return this;};}/*  */function initMixin$1(Vue){Vue.mixin=function(mixin){this.options=mergeOptions(this.options,mixin);return this;};}/*  */function initExtend(Vue){/**
3467   * Each instance constructor, including Vue, has a unique
3468   * cid. This enables us to create wrapped "child
3469   * constructors" for prototypal inheritance and cache them.
3470   */Vue.cid=0;var cid=1;/**
3471   * Class inheritance
3472   */Vue.extend=function(extendOptions){extendOptions=extendOptions||{};var Super=this;var SuperId=Super.cid;var cachedCtors=extendOptions._Ctor||(extendOptions._Ctor={});if(cachedCtors[SuperId]){return cachedCtors[SuperId];}var name=extendOptions.name||Super.options.name;
3472{if(!/^[a-zA-Z][\w-]*$/.test(name)){warn('Invalid component name: "'+name+'". Component names '+'can only contain alphanumeric characters and the hyphen, '+'and must start with a letter.');}}var Sub=function VueComponent(options){this._init(options);};Sub.prototype=Object.create(Super.prototype);Sub.prototype.constructor=Sub;Sub.cid=cid++;Sub.options=mergeOptions(Super.options,extendOptions);Sub['super']=Super;// For props and computed properties, we define the proxy getters on
3473// the Vue instances at extension time, on the extended prototype. This
3474// avoids Object.defineProperty calls for each instance created.
3475if(Sub.options.props){initProps$1(Sub);}if(Sub.options.computed){initComputed$1(Sub);}// allow further extension/mixin/plugin usage
3476Sub.extend=Super.extend;Sub.mixin=Super.mixin;Sub.use=Super.use;// create asset registers, so extended classes
3477// can have their private assets too.
3478ASSET_TYPES.forEach(function(type){Sub[type]=Super[type];});// enable recursive self-lookup
3479if(name){Sub.options.components[name]=Sub;}// keep a reference to the super options at extension time.
3480// later at instantiation we can check if Super's options have
3481// been updated.
3482Sub.superOptions=Super.options;Sub.extendOptions=extendOptions;Sub.sealedOptions=extend({},Sub.options);// cache constructor
3483cachedCtors[SuperId]=Sub;return Sub;};}function initProps$1(Comp){var props=Comp.options.props;for(var key in props){proxy(Comp.prototype,"_props",key);}}function initComputed$1(Comp){var computed=Comp.options.computed;for(var key in computed){defineComputed(Comp.prototype,key,computed[key]);}}/*  */function initAssetRegisters(Vue){/**
3484   * Create asset registration methods.
3485   */ASSET_TYPES.forEach(function(type){Vue[type]=function(id,definition){if(!definition){return this.options[type+'s'][id];}else{/* istanbul ignore if */{if(type==='component'&&config.isReservedTag(id)){warn('Do not use built-in or reserved HTML elements as component '+'id: '+id);}}if(type==='component'&&isPlainObject(definition)){definition.name=definition.name||id;definition=this.options._base.extend(definition);}if(type==='directive'&&typeof definition==='function'){definition={bind:definition,update:definition};}this.options[type+'s'][id]=definition;return definition;}};});}/*  */function getComponentName(opts){return opts&&(opts.Ctor.options.name||opts.tag);}function matches(pattern,name){if(Array.isArray(pattern)){return pattern.indexOf(name)>-1;}else if(typeof pattern==='string'){return pattern.split(',').indexOf(name)>-1;}else if(isRegExp(pattern)){return pattern.test(name);}/* istanbul ignore next */return false;}function pruneCache(keepAliveInstance,filter){var cache=keepAliveInstance.cache;var keys=keepAliveInstance.keys;var _vnode=keepAliveInstance._vnode;for(var key in cache){var cachedNode=cache[key];if(cachedNode){var name=getComponentName(cachedNode.componentOptions);if(name&&!filter(name)){pruneCacheEntry(cache,key,keys,_vnode);}}}}function pruneCacheEntry(cache,key,keys,current){var cached$$1=cache[key];
3485if(cached$$1&&cached$$1!==current){cached$$1.componentInstance.$destroy();}cache[key]=null;remove(keys,key);}var patternTypes=[String,RegExp,Array];var KeepAlive={name:'keep-alive',abstract:true,props:{include:patternTypes,exclude:patternTypes,max:[String,Number]},created:function created(){this.cache=Object.create(null);this.keys=[];},destroyed:function destroyed(){var this$1=this;for(var key in this$1.cache){pruneCacheEntry(this$1.cache,key,this$1.keys);}},watch:{include:function include(val){pruneCache(this,function(name){return matches(val,name);});},exclude:function exclude(val){pruneCache(this,function(name){return!matches(val,name);});}},render:function render(){var vnode=getFirstComponentChild(this.$slots.default);var componentOptions=vnode&&vnode.componentOptions;if(componentOptions){// check pattern
3486var name=getComponentName(componentOptions);if(name&&(this.include&&!matches(this.include,name)||this.exclude&&matches(this.exclude,name))){return vnode;}var ref=this;var cache=ref.cache;var keys=ref.keys;var key=vnode.key==null// same constructor may get registered as different local components
3487// so cid alone is not enough (#3269)
3488?componentOptions.Ctor.cid+(componentOptions.tag?"::"+componentOptions.tag:''):vnode.key;if(cache[key]){vnode.componentInstance=cache[key].componentInstance;// make current key freshest
3489remove(keys,key);keys.push(key);}else{cache[key]=vnode;keys.push(key);// prune oldest entry
3490if(this.max&&keys.length>parseInt(this.max)){pruneCacheEntry(cache,keys[0],keys,this._vnode);}}vnode.data.keepAlive=true;}return vnode;}};var builtInComponents={KeepAlive:KeepAlive};/*  */function initGlobalAPI(Vue){// config
3491var configDef={};configDef.get=function(){return config;};{configDef.set=function(){warn('Do not replace the Vue.config object, set individual fields instead.');};}Object.defineProperty(Vue,'config',configDef);// exposed util methods.
3492// NOTE: these are not considered part of the public API - avoid relying on
3493// them unless you are aware of the risk.
3494Vue.util={warn:warn,extend:extend,mergeOptions:mergeOptions,defineReactive:defineReactive};Vue.set=set;Vue.delete=del;Vue.nextTick=nextTick;Vue.options=Object.create(null);ASSET_TYPES.forEach(function(type){Vue.options[type+'s']=Object.create(null);});// this is used to identify the "base" constructor to extend all plain-object
3495// components with in Weex's multi-instance scenarios.
3496Vue.options._base=Vue;extend(Vue.options.components,builtInComponents);initUse(Vue);initMixin$1(Vue);initExtend(Vue);initAssetRegisters(Vue);}initGlobalAPI(Vue$3);Object.defineProperty(Vue$3.prototype,'$isServer',{get:isServerRendering});Object.defineProperty(Vue$3.prototype,'$ssrContext',{get:function get(){/* istanbul ignore next */return this.$vnode&&this.$vnode.ssrContext;}});Vue$3.version='2.5.0';/*  */// these are reserved for web because they are directly compiled away
3497// during template compilation
3498var isReservedAttr=makeMap('style,class');// attributes that should be using props for binding
3499var acceptValue=makeMap('input,textarea,option,select,progress');var mustUseProp=function mustUseProp(tag,type,attr){return attr==='value'&&acceptValue(tag)&&type!=='button'||attr==='selected'&&tag==='option'||attr==='checked'&&tag==='input'||attr==='muted'&&tag==='video';};var isEnumeratedAttr=makeMap('contenteditable,draggable,spellcheck');var isBooleanAttr=makeMap('allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,'+'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,'+'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,'+'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,'+'required,reversed,scoped,seamless,selected,sortable,translate,'+'truespeed,typemustmatch,visible');var xlinkNS='http://www.w3.org/1999/xlink';var isXlink=function isXlink(name){return name.charAt(5)===':'&&name.slice(0,5)==='xlink';};var getXlinkProp=function getXlinkProp(name){return isXlink(name)?name.slice(6,name.length):'';};var isFalsyAttrValue=function isFalsyAttrValue(val){return val==null||val===false;};/*  */function genClassForVnode(vnode){var data=vnode.data;var parentNode=vnode;var childNode=vnode;while(isDef(childNode.componentInstance)){childNode=childNode.componentInstance._vnode;if(childNode.data){data=mergeClassData(childNode.data,data);}}while(isDef(parentNode=parentNode.parent)){if(parentNode.data){data=mergeClassData(data,parentNode.data);}}return renderClass(data.staticClass,data.class);}function mergeClassData(child,parent){return{staticClass:concat(child.staticClass,parent.staticClass),class:isDef(child.class)?[child.class,parent.class]:parent.class};}
3499function renderClass(staticClass,dynamicClass){if(isDef(staticClass)||isDef(dynamicClass)){return concat(staticClass,stringifyClass(dynamicClass));}/* istanbul ignore next */return'';}function concat(a,b){return a?b?a+' '+b:a:b||'';}function stringifyClass(value){if(Array.isArray(value)){return stringifyArray(value);}if(isObject(value)){return stringifyObject(value);}if(typeof value==='string'){return value;}/* istanbul ignore next */return'';}function stringifyArray(value){var res='';var stringified;for(var i=0,l=value.length;i<l;i++){if(isDef(stringified=stringifyClass(value[i]))&&stringified!==''){if(res){res+=' ';}res+=stringified;}}return res;}function stringifyObject(value){var res='';for(var key in value){if(value[key]){if(res){res+=' ';}res+=key;}}return res;}/*  */var namespaceMap={svg:'http://www.w3.org/2000/svg',math:'http://www.w3.org/1998/Math/MathML'};var isHTMLTag=makeMap('html,body,base,head,link,meta,style,title,'+'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,'+'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,'+'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,'+'s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,'+'embed,object,param,source,canvas,script,noscript,del,ins,'+'caption,col,colgroup,table,thead,tbody,td,th,tr,'+'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,'+'output,progress,select,textarea,'+'details,dialog,menu,menuitem,summary,'+'content,element,shadow,template,blockquote,iframe,tfoot');// this map is intentionally selective, only covering SVG elements that may
3500// contain child elements.
3501var isSVG=makeMap('svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,'+'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,'+'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',true);var isPreTag=function isPreTag(tag){return tag==='pre';};var isReservedTag=function isReservedTag(tag){return isHTMLTag(tag)||isSVG(tag);};function getTagNamespace(tag){if(isSVG(tag)){return'svg';}// basic support for MathML
3502// note it doesn't support other MathML elements being component roots
3503if(tag==='math'){return'math';}}var unknownElementCache=Object.create(null);function isUnknownElement(tag){/* istanbul ignore if */if(!inBrowser){return true;}if(isReservedTag(tag)){return false;}tag=tag.toLowerCase();/* istanbul ignore if */if(unknownElementCache[tag]!=null){return unknownElementCache[tag];}var el=document.createElement(tag);if(tag.indexOf('-')>-1){// http://stackoverflow.com/a/28210364/1070244
3504return unknownElementCache[tag]=el.constructor===window.HTMLUnknownElement||el.constructor===window.HTMLElement;}else{return unknownElementCache[tag]=/HTMLUnknownElement/.test(el.toString());}}var isTextInputType=makeMap('text,number,password,search,email,tel,url');/*  *//**
3505 * Query an element selector if it's not an element already.
3506 */function query(el){if(typeof el==='string'){var selected=document.querySelector(el);if(!selected){"development"!=='production'&&warn('Cannot find element: '+el);return document.createElement('div');}return selected;}else{return el;}}/*  */function createElement$1(tagName,vnode){var elm=document.createElement(tagName);if(tagName!=='select'){return elm;}// false or null will remove the attribute but undefined will not
3507if(vnode.data&&vnode.data.attrs&&vnode.data.attrs.multiple!==undefined){elm.setAttribute('multiple','multiple');}return elm;}function createElementNS(namespace,tagName){return document.createElementNS(namespaceMap[namespace],tagName);}function createTextNode(text){return document.createTextNode(text);}function createComment(text){return document.createComment(text);}function insertBefore(parentNode,newNode,referenceNode){parentNode.insertBefore(newNode,referenceNode);}function removeChild(node,child){node.removeChild(child);}function appendChild(node,child){node.appendChild(child);}function parentNode(node){return node.parentNode;}function nextSibling(node){return node.nextSibling;}function tagName(node){return node.tagName;}function setTextContent(node,text){node.textContent=text;}
vendor: 8,012 bytes, lines 3507-3538
3507function setAttribute(node,key,val){node.setAttribute(key,val);}var nodeOps=Object.freeze({createElement:createElement$1,createElementNS:createElementNS,createTextNode:createTextNode,createComment:createComment,insertBefore:insertBefore,removeChild:removeChild,appendChild:appendChild,parentNode:parentNode,nextSibling:nextSibling,tagName:tagName,setTextContent:setTextContent,setAttribute:setAttribute});/*  */var ref={create:function create(_,vnode){registerRef(vnode);},update:function update(oldVnode,vnode){if(oldVnode.data.ref!==vnode.data.ref){registerRef(oldVnode,true);registerRef(vnode);}},destroy:function destroy(vnode){registerRef(vnode,true);}};function registerRef(vnode,isRemoval){var key=vnode.data.ref;if(!key){return;}var vm=vnode.context;var ref=vnode.componentInstance||vnode.elm;var refs=vm.$refs;if(isRemoval){if(Array.isArray(refs[key])){remove(refs[key],ref);}else if(refs[key]===ref){refs[key]=undefined;}}else{if(vnode.data.refInFor){if(!Array.isArray(refs[key])){refs[key]=[ref];}else if(refs[key].indexOf(ref)<0){// $flow-disable-line
3508refs[key].push(ref);}}else{refs[key]=ref;}}}/**
3509 * Virtual DOM patching algorithm based on Snabbdom by
3510 * Simon Friis Vindum (@paldepind)
3511 * Licensed under the MIT License
3512 * https://github.com/paldepind/snabbdom/blob/master/LICENSE
3513 *
3514 * modified by Evan You (@yyx990803)
3515 *
3516 * Not type-checking this because this file is perf-critical and the cost
3517 * of making flow understand it is not worth it.
3518 */var emptyNode=new VNode('',{},[]);var hooks=['create','activate','update','remove','destroy'];function sameVnode(a,b){return a.key===b.key&&(a.tag===b.tag&&a.isComment===b.isComment&&isDef(a.data)===isDef(b.data)&&sameInputType(a,b)||isTrue(a.isAsyncPlaceholder)&&a.asyncFactory===b.asyncFactory&&isUndef(b.asyncFactory.error));}function sameInputType(a,b){if(a.tag!=='input'){return true;}var i;var typeA=isDef(i=a.data)&&isDef(i=i.attrs)&&i.type;var typeB=isDef(i=b.data)&&isDef(i=i.attrs)&&i.type;return typeA===typeB||isTextInputType(typeA)&&isTextInputType(typeB);}function createKeyToOldIdx(children,beginIdx,endIdx){var i,key;var map={};for(i=beginIdx;i<=endIdx;++i){key=children[i].key;if(isDef(key)){map[key]=i;}}return map;}function createPatchFunction(backend){var i,j;var cbs={};var modules=backend.modules;var nodeOps=backend.nodeOps;for(i=0;i<hooks.length;++i){cbs[hooks[i]]=[];for(j=0;j<modules.length;++j){if(isDef(modules[j][hooks[i]])){cbs[hooks[i]].push(modules[j][hooks[i]]);}}}function emptyNodeAt(elm){return new VNode(nodeOps.tagName(elm).toLowerCase(),{},[],undefined,elm);}function createRmCb(childElm,listeners){function remove(){if(--remove.listeners===0){removeNode(childElm);}}remove.listeners=listeners;return remove;}function removeNode(el){var parent=nodeOps.parentNode(el);// element may have already been removed due to v-html / v-text
3519if(isDef(parent)){nodeOps.removeChild(parent,el);}}var inPre=0;function createElm(vnode,insertedVnodeQueue,parentElm,refElm,nested){vnode.isRootInsert=!nested;// for transition enter check
3520if(createComponent(vnode,insertedVnodeQueue,parentElm,refElm)){return;}var data=vnode.data;var children=vnode.children;var tag=vnode.tag;if(isDef(tag)){{if(data&&data.pre){inPre++;}if(!inPre&&!vnode.ns&&!(config.ignoredElements.length&&config.ignoredElements.some(function(ignore){return isRegExp(ignore)?ignore.test(tag):ignore===tag;}))&&config.isUnknownElement(tag)){warn('Unknown custom element: <'+tag+'> - did you '+'register the component correctly? For recursive components, '+'make sure to provide the "name" option.',vnode.context);}}vnode.elm=vnode.ns?nodeOps.createElementNS(vnode.ns,tag):nodeOps.createElement(tag,vnode);setScope(vnode);/* istanbul ignore if */{createChildren(vnode,children,insertedVnodeQueue);if(isDef(data)){invokeCreateHooks(vnode,insertedVnodeQueue);}insert(parentElm,vnode.elm,refElm);}if("development"!=='production'&&data&&data.pre){inPre--;}}else if(isTrue(vnode.isComment)){vnode.elm=nodeOps.createComment(vnode.text);insert(parentElm,vnode.elm,refElm);}else{vnode.elm=nodeOps.createTextNode(vnode.text);insert(parentElm,vnode.elm,refElm);}}function createComponent(vnode,insertedVnodeQueue,parentElm,refElm){var i=vnode.data;if(isDef(i)){var isReactivated=isDef(vnode.componentInstance)&&i.keepAlive;if(isDef(i=i.hook)&&isDef(i=i.init)){i(vnode,false/* hydrating */,parentElm,refElm);}// after calling the init hook, if the vnode is a child component
3521// it should've created a child instance and mounted it. the child
3522// component also has set the placeholder vnode's elm.
3523// in that case we can just return the element and be done.
3524if(isDef(vnode.componentInstance)){initComponent(vnode,insertedVnodeQueue);if(isTrue(isReactivated)){reactivateComponent(vnode,insertedVnodeQueue,parentElm,refElm);}return true;}}}function initComponent(vnode,insertedVnodeQueue){if(isDef(vnode.data.pendingInsert)){insertedVnodeQueue.push.apply(insertedVnodeQueue,vnode.data.pendingInsert);vnode.data.pendingInsert=null;}vnode.elm=vnode.componentInstance.$el;if(isPatchable(vnode)){invokeCreateHooks(vnode,insertedVnodeQueue);setScope(vnode);}else{// empty component root.
3525// skip all element-related modules except for ref (#3455)
3526registerRef(vnode);// make sure to invoke the insert hook
3527insertedVnodeQueue.push(vnode);}}function reactivateComponent(vnode,insertedVnodeQueue,parentElm,refElm){var i;// hack for #4339: a reactivated component with inner transition
3528// does not trigger because the inner node's created hooks are not called
3529// again. It's not ideal to involve module-specific logic in here but
3530// there doesn't seem to be a better way to do it.
3531var innerNode=vnode;while(innerNode.componentInstance){innerNode=innerNode.componentInstance._vnode;if(isDef(i=innerNode.data)&&isDef(i=i.transition)){for(i=0;i<cbs.activate.length;++i){cbs.activate[i](emptyNode,innerNode);}insertedVnodeQueue.push(innerNode);break;}}// unlike a newly created component,
3532// a reactivated keep-alive component doesn't insert itself
3533insert(parentElm,vnode.elm,refElm);}function insert(parent,elm,ref$$1){if(isDef(parent)){if(isDef(ref$$1)){if(ref$$1.parentNode===parent){nodeOps.insertBefore(parent,elm,ref$$1);}}else{nodeOps.appendChild(parent,elm);}}}function createChildren(vnode,children,insertedVnodeQueue){if(Array.isArray(children)){for(var i=0;i<children.length;++i){createElm(children[i],insertedVnodeQueue,vnode.elm,null,true);}}else if(isPrimitive(vnode.text)){nodeOps.appendChild(vnode.elm,nodeOps.createTextNode(vnode.text));}}function isPatchable(vnode){while(vnode.componentInstance){vnode=vnode.componentInstance._vnode;}return isDef(vnode.tag);}function invokeCreateHooks(vnode,insertedVnodeQueue){for(var i$1=0;i$1<cbs.create.length;++i$1){cbs.create[i$1](emptyNode,vnode);}i=vnode.data.hook;// Reuse variable
3534if(isDef(i)){if(isDef(i.create)){i.create(emptyNode,vnode);}if(isDef(i.insert)){insertedVnodeQueue.push(vnode);}}}// set scope id attribute for scoped CSS.
3535// this is implemented as a special case to avoid the overhead
3536// of going through the normal attribute patching process.
3537function setScope(vnode){var i;if(isDef(i=vnode.functionalScopeId)){nodeOps.setAttribute(vnode.elm,i,'');}else{var ancestor=vnode;while(ancestor){if(isDef(i=ancestor.context)&&isDef(i=i.$options._scopeId)){nodeOps.setAttribute(vnode.elm,i,'');}ancestor=ancestor.parent;}}// for slot content they should also get the scopeId from the host instance.
3538if(isDef(i=activeInstance)&&i!==vnode.context&&i!==vnode.functionalContext&&isDef(i=i.$options._scopeId)){nodeOps.setAttribute(vnode.elm,i,'');}}function addVnodes(parentElm,refElm,vnodes,startIdx,endIdx,insertedVnodeQueue){for(;startIdx<=endIdx;++startIdx){createElm(vnodes[startIdx],insertedVnodeQueue,parentElm,refElm);}}function invokeDestroyHook(vnode){var i,j;var data=vnode.data;if(isDef(data)){if(isDef(i=data.hook)&&isDef(i=i.destroy)){i(vnode);}for(i=0;i<cbs.destroy.length;++i){cbs.destroy[i](vnode);}}if(isDef(i=vnode.children)){for(j=0;j<vnode.children.length;++j){invokeDestroyHook(vnode.children[j]);}}
vendor: 5,268 bytes, lines 3538-3555
3538}function removeVnodes(parentElm,vnodes,startIdx,endIdx){for(;startIdx<=endIdx;++startIdx){var ch=vnodes[startIdx];if(isDef(ch)){if(isDef(ch.tag)){removeAndInvokeRemoveHook(ch);invokeDestroyHook(ch);}else{// Text node
3539removeNode(ch.elm);}}}}function removeAndInvokeRemoveHook(vnode,rm){if(isDef(rm)||isDef(vnode.data)){var i;var listeners=cbs.remove.length+1;if(isDef(rm)){// we have a recursively passed down rm callback
3540// increase the listeners count
3541rm.listeners+=listeners;}else{// directly removing
3542rm=createRmCb(vnode.elm,listeners);}// recursively invoke hooks on child component root node
3543if(isDef(i=vnode.componentInstance)&&isDef(i=i._vnode)&&isDef(i.data)){removeAndInvokeRemoveHook(i,rm);}for(i=0;i<cbs.remove.length;++i){cbs.remove[i](vnode,rm);}if(isDef(i=vnode.data.hook)&&isDef(i=i.remove)){i(vnode,rm);}else{rm();}}else{removeNode(vnode.elm);}}function updateChildren(parentElm,oldCh,newCh,insertedVnodeQueue,removeOnly){var oldStartIdx=0;var newStartIdx=0;var oldEndIdx=oldCh.length-1;var oldStartVnode=oldCh[0];var oldEndVnode=oldCh[oldEndIdx];var newEndIdx=newCh.length-1;var newStartVnode=newCh[0];var newEndVnode=newCh[newEndIdx];var oldKeyToIdx,idxInOld,vnodeToMove,refElm;// removeOnly is a special flag used only by <transition-group>
3544// to ensure removed elements stay in correct relative positions
3545// during leaving transitions
3546var canMove=!removeOnly;while(oldStartIdx<=oldEndIdx&&newStartIdx<=newEndIdx){if(isUndef(oldStartVnode)){oldStartVnode=oldCh[++oldStartIdx];// Vnode has been moved left
3547}else if(isUndef(oldEndVnode)){oldEndVnode=oldCh[--oldEndIdx];}else if(sameVnode(oldStartVnode,newStartVnode)){patchVnode(oldStartVnode,newStartVnode,insertedVnodeQueue);oldStartVnode=oldCh[++oldStartIdx];newStartVnode=newCh[++newStartIdx];}else if(sameVnode(oldEndVnode,newEndVnode)){patchVnode(oldEndVnode,newEndVnode,insertedVnodeQueue);oldEndVnode=oldCh[--oldEndIdx];newEndVnode=newCh[--newEndIdx];}else if(sameVnode(oldStartVnode,newEndVnode)){// Vnode moved right
3548patchVnode(oldStartVnode,newEndVnode,insertedVnodeQueue);canMove&&nodeOps.insertBefore(parentElm,oldStartVnode.elm,nodeOps.nextSibling(oldEndVnode.elm));oldStartVnode=oldCh[++oldStartIdx];newEndVnode=newCh[--newEndIdx];}else if(sameVnode(oldEndVnode,newStartVnode)){// Vnode moved left
3549patchVnode(oldEndVnode,newStartVnode,insertedVnodeQueue);canMove&&nodeOps.insertBefore(parentElm,oldEndVnode.elm,oldStartVnode.elm);oldEndVnode=oldCh[--oldEndIdx];newStartVnode=newCh[++newStartIdx];}else{if(isUndef(oldKeyToIdx)){oldKeyToIdx=createKeyToOldIdx(oldCh,oldStartIdx,oldEndIdx);}idxInOld=isDef(newStartVnode.key)?oldKeyToIdx[newStartVnode.key]:findIdxInOld(newStartVnode,oldCh,oldStartIdx,oldEndIdx);if(isUndef(idxInOld)){// New element
3550createElm(newStartVnode,insertedVnodeQueue,parentElm,oldStartVnode.elm);}else{vnodeToMove=oldCh[idxInOld];/* istanbul ignore if */if("development"!=='production'&&!vnodeToMove){warn('It seems there are duplicate keys that is causing an update error. '+'Make sure each v-for item has a unique key.');}if(sameVnode(vnodeToMove,newStartVnode)){patchVnode(vnodeToMove,newStartVnode,insertedVnodeQueue);oldCh[idxInOld]=undefined;canMove&&nodeOps.insertBefore(parentElm,vnodeToMove.elm,oldStartVnode.elm);}else{// same key but different element. treat as new element
3551createElm(newStartVnode,insertedVnodeQueue,parentElm,oldStartVnode.elm);}}newStartVnode=newCh[++newStartIdx];}}if(oldStartIdx>oldEndIdx){refElm=isUndef(newCh[newEndIdx+1])?null:newCh[newEndIdx+1].elm;addVnodes(parentElm,refElm,newCh,newStartIdx,newEndIdx,insertedVnodeQueue);}else if(newStartIdx>newEndIdx){removeVnodes(parentElm,oldCh,oldStartIdx,oldEndIdx);}}function findIdxInOld(node,oldCh,start,end){for(var i=start;i<end;i++){var c=oldCh[i];if(isDef(c)&&sameVnode(node,c)){return i;}}}function patchVnode(oldVnode,vnode,insertedVnodeQueue,removeOnly){if(oldVnode===vnode){return;}var elm=vnode.elm=oldVnode.elm;if(isTrue(oldVnode.isAsyncPlaceholder)){if(isDef(vnode.asyncFactory.resolved)){hydrate(oldVnode.elm,vnode,insertedVnodeQueue);}else{vnode.isAsyncPlaceholder=true;}return;}// reuse element for static trees.
3552// note we only do this if the vnode is cloned -
3553// if the new node is not cloned it means the render functions have been
3554// reset by the hot-reload-api and we need to do a proper re-render.
3555if(isTrue(vnode.isStatic)&&isTrue(oldVnode.isStatic)&&vnode.key===oldVnode.key&&(isTrue(vnode.isCloned)||isTrue(vnode.isOnce))){vnode.componentInstance=oldVnode.componentInstance;return;}var i;var data=vnode.data;if(isDef(data)&&isDef(i=data.hook)&&isDef(i=i.prepatch)){i(oldVnode,vnode);}var oldCh=oldVnode.children;var ch=vnode.children;if(isDef(data)&&isPatchable(vnode)){for(i=0;i<cbs.update.length;++i){cbs.update[i](oldVnode,vnode);}if(isDef(i=data.hook)&&isDef(i=i.update)){i(oldVnode,vnode);}}if(isUndef(vnode.text)){if(isDef(oldCh)&&isDef(ch)){if(oldCh!==ch){updateChildren(elm,oldCh,ch,insertedVnodeQueue,removeOnly);}}else if(isDef(ch)){if(isDef(oldVnode.text)){nodeOps.setTextContent(elm,'');}addVnodes(elm,null,ch,0,ch.length-1,insertedVnodeQueue);}else if(isDef(oldCh)){removeVnodes(elm,oldCh,0,oldCh.length-1);}else if(isDef(oldVnode.text)){nodeOps.setTextContent(elm,'');}}else if(oldVnode.text!==vnode.text){nodeOps.setTextContent(elm,vnode.text);}
3555if(isDef(data)){if(isDef(i=data.hook)&&isDef(i=i.postpatch)){i(oldVnode,vnode);}}}function invokeInsertHook(vnode,queue,initial){// delay insert hooks for component root nodes, invoke them after the
3556// element is really inserted
3557if(isTrue(initial)&&isDef(vnode.parent)){vnode.parent.data.pendingInsert=queue;}else{for(var i=0;i<queue.length;++i){queue[i].data.hook.insert(queue[i]);}}}var bailed=false;// list of modules that can skip create hook during hydration because they
3558// are already rendered on the client or has no need for initialization
3559var isRenderedModule=makeMap('attrs,style,class,staticClass,staticStyle,key');// Note: this is a browser-only function so we can assume elms are DOM nodes.
3560function hydrate(elm,vnode,insertedVnodeQueue){if(isTrue(vnode.isComment)&&isDef(vnode.asyncFactory)){vnode.elm=elm;vnode.isAsyncPlaceholder=true;return true;}{if(!assertNodeMatch(elm,vnode)){return false;}}vnode.elm=elm;var tag=vnode.tag;var data=vnode.data;var children=vnode.children;if(isDef(data)){if(isDef(i=data.hook)&&isDef(i=i.init)){i(vnode,true/* hydrating */);}if(isDef(i=vnode.componentInstance)){// child component. it should have hydrated its own tree.
3561initComponent(vnode,insertedVnodeQueue);return true;}}if(isDef(tag)){if(isDef(children)){// empty element, allow client to pick up and populate children
3562if(!elm.hasChildNodes()){createChildren(vnode,children,insertedVnodeQueue);}else{// v-html and domProps: innerHTML
3563if(isDef(i=data)&&isDef(i=i.domProps)&&isDef(i=i.innerHTML)){if(i!==elm.innerHTML){/* istanbul ignore if */if("development"!=='production'&&typeof console!=='undefined'&&!bailed){bailed=true;console.warn('Parent: ',elm);console.warn('server innerHTML: ',i);console.warn('client innerHTML: ',elm.innerHTML);}return false;}}else{// iterate and compare children lists
3564var childrenMatch=true;var childNode=elm.firstChild;for(var i$1=0;i$1<children.length;i$1++){if(!childNode||!hydrate(childNode,children[i$1],insertedVnodeQueue)){childrenMatch=false;break;}childNode=childNode.nextSibling;}// if childNode is not null, it means the actual childNodes list is
3565// longer than the virtual children list.
3566if(!childrenMatch||childNode){/* istanbul ignore if */if("development"!=='production'&&typeof console!=='undefined'&&!bailed){bailed=true;console.warn('Parent: ',elm);console.warn('Mismatching childNodes vs. VNodes: ',elm.childNodes,children);}return false;}}}}if(isDef(data)){for(var key in data){if(!isRenderedModule(key)){invokeCreateHooks(vnode,insertedVnodeQueue);break;}}}}else if(elm.data!==vnode.text){elm.data=vnode.text;}return true;}function assertNodeMatch(node,vnode){if(isDef(vnode.tag)){return vnode.tag.indexOf('vue-component')===0||vnode.tag.toLowerCase()===(node.tagName&&node.tagName.toLowerCase());}else{return node.nodeType===(vnode.isComment?8:3);}}return function patch(oldVnode,vnode,hydrating,removeOnly,parentElm,refElm){if(isUndef(vnode)){if(isDef(oldVnode)){invokeDestroyHook(oldVnode);}return;}var isInitialPatch=false;var insertedVnodeQueue=[];if(isUndef(oldVnode)){// empty mount (likely as component), create new root element
3567isInitialPatch=true;createElm(vnode,insertedVnodeQueue,parentElm,refElm);}else{var isRealElement=isDef(oldVnode.nodeType);if(!isRealElement&&sameVnode(oldVnode,vnode)){// patch existing root node
3568patchVnode(oldVnode,vnode,insertedVnodeQueue,removeOnly);}else{if(isRealElement){// mounting to a real element
3569// check if this is server-rendered content and if we can perform
3570// a successful hydration.
3571if(oldVnode.nodeType===1&&oldVnode.hasAttribute(SSR_ATTR)){oldVnode.removeAttribute(SSR_ATTR);hydrating=true;}if(isTrue(hydrating)){if(hydrate(oldVnode,vnode,insertedVnodeQueue)){invokeInsertHook(vnode,insertedVnodeQueue,true);return oldVnode;}else{warn('The client-side rendered virtual DOM tree is not matching '+'server-rendered content. This is likely caused by incorrect '+'HTML markup, for example nesting block-level elements inside '+'<p>, or missing <tbody>. Bailing hydration and performing '+'full client-side render.');}}// either not server-rendered, or hydration failed.
3572// create an empty node and replace it
3573oldVnode=emptyNodeAt(oldVnode);}// replacing existing element
3574var oldElm=oldVnode.elm;var parentElm$1=nodeOps.parentNode(oldElm);createElm(vnode,insertedVnodeQueue,// extremely rare edge case: do not insert if old element is in a
3575// leaving transition. Only happens when combining transition +
3576// keep-alive + HOCs. (#4590)
3577oldElm._leaveCb?null:parentElm$1,nodeOps.nextSibling(oldElm));
3577if(isDef(vnode.parent)){// component root element replaced.
3578// update parent placeholder node element, recursively
3579var ancestor=vnode.parent;var patchable=isPatchable(vnode);while(ancestor){for(var i=0;i<cbs.destroy.length;++i){cbs.destroy[i](ancestor);}ancestor.elm=vnode.elm;if(patchable){for(var i$1=0;i$1<cbs.create.length;++i$1){cbs.create[i$1](emptyNode,ancestor);}// #6513
3580// invoke insert hooks that may have been merged by create hooks.
3581// e.g. for directives that uses the "inserted" hook.
3582var insert=ancestor.data.hook.insert;if(insert.merged){// start at index 1 to avoid re-invoking component mounted hook
3583for(var i$2=1;i$2<insert.fns.length;i$2++){insert.fns[i$2]();}}}else{registerRef(ancestor);}ancestor=ancestor.parent;}}if(isDef(parentElm$1)){removeVnodes(parentElm$1,[oldVnode],0,0);}else if(isDef(oldVnode.tag)){invokeDestroyHook(oldVnode);}}}invokeInsertHook(vnode,insertedVnodeQueue,isInitialPatch);return vnode.elm;};}/*  */var directives={create:updateDirectives,update:updateDirectives,destroy:function unbindDirectives(vnode){updateDirectives(vnode,emptyNode);}};function updateDirectives(oldVnode,vnode){if(oldVnode.data.directives||vnode.data.directives){_update(oldVnode,vnode);}}function _update(oldVnode,vnode){var isCreate=oldVnode===emptyNode;var isDestroy=vnode===emptyNode;var oldDirs=normalizeDirectives$1(oldVnode.data.directives,oldVnode.context);var newDirs=normalizeDirectives$1(vnode.data.directives,vnode.context);var dirsWithInsert=[];var dirsWithPostpatch=[];var key,oldDir,dir;for(key in newDirs){oldDir=oldDirs[key];dir=newDirs[key];if(!oldDir){// new directive, bind
3584callHook$1(dir,'bind',vnode,oldVnode);if(dir.def&&dir.def.inserted){dirsWithInsert.push(dir);}}else{// existing directive, update
3585dir.oldValue=oldDir.value;callHook$1(dir,'update',vnode,oldVnode);if(dir.def&&dir.def.componentUpdated){dirsWithPostpatch.push(dir);}}}if(dirsWithInsert.length){var callInsert=function callInsert(){for(var i=0;i<dirsWithInsert.length;i++){callHook$1(dirsWithInsert[i],'inserted',vnode,oldVnode);}};if(isCreate){mergeVNodeHook(vnode.data.hook||(vnode.data.hook={}),'insert',callInsert);}else{callInsert();}}if(dirsWithPostpatch.length){mergeVNodeHook(vnode.data.hook||(vnode.data.hook={}),'postpatch',function(){for(var i=0;i<dirsWithPostpatch.length;i++){callHook$1(dirsWithPostpatch[i],'componentUpdated',vnode,oldVnode);}});}if(!isCreate){for(key in oldDirs){if(!newDirs[key]){// no longer present, unbind
3586callHook$1(oldDirs[key],'unbind',oldVnode,oldVnode,isDestroy);}}}}var emptyModifiers=Object.create(null);function normalizeDirectives$1(dirs,vm){var res=Object.create(null);if(!dirs){return res;}var i,dir;for(i=0;i<dirs.length;i++){dir=dirs[i];if(!dir.modifiers){dir.modifiers=emptyModifiers;}res[getRawDirName(dir)]=dir;dir.def=resolveAsset(vm.$options,'directives',dir.name,true);}return res;}function getRawDirName(dir){return dir.rawName||dir.name+"."+Object.keys(dir.modifiers||{}).join('.');}function callHook$1(dir,hook,vnode,oldVnode,isDestroy){var fn=dir.def&&dir.def[hook];if(fn){try{fn(vnode.elm,dir,vnode,oldVnode,isDestroy);}catch(e){handleError(e,vnode.context,"directive "+dir.name+" "+hook+" hook");}}}var baseModules=[ref,directives];/*  */function updateAttrs(oldVnode,vnode){var opts=vnode.componentOptions;if(isDef(opts)&&opts.Ctor.options.inheritAttrs===false){return;}if(isUndef(oldVnode.data.attrs)&&isUndef(vnode.data.attrs)){return;}var key,cur,old;var elm=vnode.elm;var oldAttrs=oldVnode.data.attrs||{};var attrs=vnode.data.attrs||{};// clone observed objects, as the user probably wants to mutate it
3587if(isDef(attrs.__ob__)){attrs=vnode.data.attrs=extend({},attrs);}for(key in attrs){cur=attrs[key];old=oldAttrs[key];if(old!==cur){setAttr(elm,key,cur);}}// #4391: in IE9, setting type can reset value for input[type=radio]
3588// #6666: IE/Edge forces progress value down to 1 before setting a max
3589/* istanbul ignore if */if((isIE9||isEdge)&&attrs.value!==oldAttrs.value){setAttr(elm,'value',attrs.value);}for(key in oldAttrs){if(isUndef(attrs[key])){if(isXlink(key)){elm.removeAttributeNS(xlinkNS,getXlinkProp(key));}else if(!isEnumeratedAttr(key)){elm.removeAttribute(key);}}}}function setAttr(el,key,value){if(isBooleanAttr(key)){// set attribute for blank value
3590// e.g. <option disabled>Select one</option>
3591if(isFalsyAttrValue(value)){el.removeAttribute(key);}else{// technically allowfullscreen is a boolean attribute for <iframe>,
3592// but Flash expects a value of "true" when used on <embed> tag
3593value=key==='allowfullscreen'&&el.tagName==='EMBED'?'true':key;el.setAttribute(key,value);}}else if(isEnumeratedAttr(key)){el.setAttribute(key,isFalsyAttrValue(value)||value==='false'?'false':'true');}else if(isXlink(key)){if(isFalsyAttrValue(value)){el.removeAttributeNS(xlinkNS,getXlinkProp(key));}else{el.setAttributeNS(xlinkNS,key,value);}}else{if(isFalsyAttrValue(value)){el.removeAttribute(key);}else{el.setAttribute(key,value);}}}var attrs={create:updateAttrs,update:updateAttrs};/*  */function updateClass(oldVnode,vnode){var el=vnode.elm;var data=vnode.data;var oldData=oldVnode.data;if(isUndef(data.staticClass)&&isUndef(data.class)&&(isUndef(oldData)||isUndef(oldData.staticClass)&&isUndef(oldData.class))){return;}var cls=genClassForVnode(vnode);// handle transition classes
3594var transitionClass=el._transitionClasses;if(isDef(transitionClass)){cls=concat(cls,stringifyClass(transitionClass));}// set the class
3595if(cls!==el._prevClass){el.setAttribute('class',cls);el._prevClass=cls;}}var klass={create:updateClass,update:updateClass};/*  */var validDivisionCharRE=/[\w).+\-_$\]]/;function parseFilters(exp){var inSingle=false;var inDouble=false;var inTemplateString=false;var inRegex=false;var curly=0;var square=0;var paren=0;var lastFilterIndex=0;var c,prev,i,expression,filters;for(i=0;i<exp.length;i++){prev=c;
3595c=exp.charCodeAt(i);if(inSingle){if(c===0x27&&prev!==0x5C){inSingle=false;}}else if(inDouble){if(c===0x22&&prev!==0x5C){inDouble=false;}}else if(inTemplateString){if(c===0x60&&prev!==0x5C){inTemplateString=false;}}else if(inRegex){if(c===0x2f&&prev!==0x5C){inRegex=false;}}else if(c===0x7C&&// pipe
3596exp.charCodeAt(i+1)!==0x7C&&exp.charCodeAt(i-1)!==0x7C&&!curly&&!square&&!paren){if(expression===undefined){// first filter, end of expression
3597lastFilterIndex=i+1;expression=exp.slice(0,i).trim();}else{pushFilter();}}else{switch(c){case 0x22:inDouble=true;break;// "
3598case 0x27:inSingle=true;break;// '
3599case 0x60:inTemplateString=true;break;// `
3600case 0x28:paren++;break;// (
3601case 0x29:paren--;break;// )
3602case 0x5B:square++;break;// [
3603case 0x5D:square--;break;// ]
3604case 0x7B:curly++;break;// {
3605case 0x7D:curly--;break;// }
3606}if(c===0x2f){// /
3607var j=i-1;var p=void 0;// find first non-whitespace prev char
3608for(;j>=0;j--){p=exp.charAt(j);if(p!==' '){break;}}if(!p||!validDivisionCharRE.test(p)){inRegex=true;}}}}if(expression===undefined){expression=exp.slice(0,i).trim();}else if(lastFilterIndex!==0){pushFilter();}function pushFilter(){(filters||(filters=[])).push(exp.slice(lastFilterIndex,i).trim());lastFilterIndex=i+1;}if(filters){for(i=0;i<filters.length;i++){expression=wrapFilter(expression,filters[i]);}}return expression;}function wrapFilter(exp,filter){var i=filter.indexOf('(');if(i<0){// _f: resolveFilter
3609return"_f(\""+filter+"\")("+exp+")";}else{var name=filter.slice(0,i);var args=filter.slice(i+1);return"_f(\""+name+"\")("+exp+","+args;}}/*  */function baseWarn(msg){console.error("[Vue compiler]: "+msg);}function pluckModuleFunction(modules,key){return modules?modules.map(function(m){return m[key];}).filter(function(_){return _;}):[];}function addProp(el,name,value){(el.props||(el.props=[])).push({name:name,value:value});}function addAttr(el,name,value){(el.attrs||(el.attrs=[])).push({name:name,value:value});}function addDirective(el,name,rawName,value,arg,modifiers){(el.directives||(el.directives=[])).push({name:name,rawName:rawName,value:value,arg:arg,modifiers:modifiers});}function addHandler(el,name,value,modifiers,important,warn){// warn prevent and passive modifier
3610/* istanbul ignore if */if("development"!=='production'&&warn&&modifiers&&modifiers.prevent&&modifiers.passive){warn('passive and prevent can\'t be used together. '+'Passive handler can\'t prevent default event.');}// check capture modifier
3611if(modifiers&&modifiers.capture){delete modifiers.capture;name='!'+name;// mark the event as captured
3612}if(modifiers&&modifiers.once){delete modifiers.once;name='~'+name;// mark the event as once
3613}/* istanbul ignore if */if(modifiers&&modifiers.passive){delete modifiers.passive;name='&'+name;// mark the event as passive
3614}var events;if(modifiers&&modifiers.native){delete modifiers.native;events=el.nativeEvents||(el.nativeEvents={});}else{events=el.events||(el.events={});}var newHandler={value:value,modifiers:modifiers};var handlers=events[name];/* istanbul ignore if */if(Array.isArray(handlers)){important?handlers.unshift(newHandler):handlers.push(newHandler);}else if(handlers){events[name]=important?[newHandler,handlers]:[handlers,newHandler];}else{events[name]=newHandler;}}function getBindingAttr(el,name,getStatic){var dynamicValue=getAndRemoveAttr(el,':'+name)||getAndRemoveAttr(el,'v-bind:'+name);if(dynamicValue!=null){return parseFilters(dynamicValue);}else if(getStatic!==false){var staticValue=getAndRemoveAttr(el,name);if(staticValue!=null){return JSON.stringify(staticValue);}}}// note: this only removes the attr from the Array (attrsList) so that it
3615// doesn't get processed by processAttrs.
3616// By default it does NOT remove it from the map (attrsMap) because the map is
3617// needed during codegen.
3618function getAndRemoveAttr(el,name,removeFromMap){var val;if((val=el.attrsMap[name])!=null){var list=el.attrsList;for(var i=0,l=list.length;i<l;i++){if(list[i].name===name){list.splice(i,1);break;}}}if(removeFromMap){delete el.attrsMap[name];}return val;}/*  *//**
3619 * Cross-platform code generation for component v-model
3620 */function genComponentModel(el,value,modifiers){var ref=modifiers||{};var number=ref.number;var trim=ref.trim;var baseValueExpression='$$v';var valueExpression=baseValueExpression;if(trim){valueExpression="(typeof "+baseValueExpression+" === 'string'"+"? "+baseValueExpression+".trim()"+": "+baseValueExpression+")";}if(number){valueExpression="_n("+valueExpression+")";}
3620var assignment=genAssignmentCode(value,valueExpression);el.model={value:"("+value+")",expression:"\""+value+"\"",callback:"function ("+baseValueExpression+") {"+assignment+"}"};}/**
3621 * Cross-platform codegen helper for generating v-model value assignment code.
3622 */function genAssignmentCode(value,assignment){var res=parseModel(value);if(res.key===null){return value+"="+assignment;}else{return"$set("+res.exp+", "+res.key+", "+assignment+")";}}/**
3623 * Parse a v-model expression into a base path and a final key segment.
3624 * Handles both dot-path and possible square brackets.
3625 *
3626 * Possible cases:
3627 *
3628 * - test
3629 * - test[key]
3630 * - test[test1[key]]
3631 * - test["a"][key]
3632 * - xxx.test[a[a].test1[key]]
3633 * - test.xxx.a["asa"][test1[key]]
3634 *
3635 */var len;var str;var chr;var index$1;var expressionPos;var expressionEndPos;function parseModel(val){len=val.length;if(val.indexOf('[')<0||val.lastIndexOf(']')<len-1){index$1=val.lastIndexOf('.');if(index$1>-1){return{exp:val.slice(0,index$1),key:'"'+val.slice(index$1+1)+'"'};}else{return{exp:val,key:null};}}str=val;index$1=expressionPos=expressionEndPos=0;while(!eof()){chr=next();/* istanbul ignore if */if(isStringStart(chr)){parseString(chr);}else if(chr===0x5B){parseBracket(chr);}}return{exp:val.slice(0,expressionPos),key:val.slice(expressionPos+1,expressionEndPos)};}function next(){return str.charCodeAt(++index$1);}function eof(){return index$1>=len;}function isStringStart(chr){return chr===0x22||chr===0x27;}function parseBracket(chr){var inBracket=1;expressionPos=index$1;while(!eof()){chr=next();if(isStringStart(chr)){parseString(chr);continue;}if(chr===0x5B){inBracket++;}if(chr===0x5D){inBracket--;}if(inBracket===0){expressionEndPos=index$1;break;}}}function parseString(chr){var stringQuote=chr;while(!eof()){chr=next();if(chr===stringQuote){break;}}}/*  */var warn$1;// in some cases, the event used has to be determined at runtime
3636// so we used some reserved tokens during compile.
3637var RANGE_TOKEN='__r';function model(el,dir,_warn){warn$1=_warn;var value=dir.value;var modifiers=dir.modifiers;var tag=el.tag;var type=el.attrsMap.type;{// inputs with type="file" are read only and setting the input's
3638// value will throw an error.
3639if(tag==='input'&&type==='file'){warn$1("<"+el.tag+" v-model=\""+value+"\" type=\"file\">:\n"+"File inputs are read only. Use a v-on:change listener instead.");}}if(el.component){genComponentModel(el,value,modifiers);// component v-model doesn't need extra runtime
3640return false;}else if(tag==='select'){genSelect(el,value,modifiers);}else if(tag==='input'&&type==='checkbox'){genCheckboxModel(el,value,modifiers);}else if(tag==='input'&&type==='radio'){genRadioModel(el,value,modifiers);}else if(tag==='input'||tag==='textarea'){genDefaultModel(el,value,modifiers);}else if(!config.isReservedTag(tag)){genComponentModel(el,value,modifiers);// component v-model doesn't need extra runtime
3641return false;}else{warn$1("<"+el.tag+" v-model=\""+value+"\">: "+"v-model is not supported on this element type. "+'If you are working with contenteditable, it\'s recommended to '+'wrap a library dedicated for that purpose inside a custom component.');}// ensure runtime directive metadata
3642return true;}function genCheckboxModel(el,value,modifiers){var number=modifiers&&modifiers.number;var valueBinding=getBindingAttr(el,'value')||'null';var trueValueBinding=getBindingAttr(el,'true-value')||'true';var falseValueBinding=getBindingAttr(el,'false-value')||'false';addProp(el,'checked',"Array.isArray("+value+")"+"?_i("+value+","+valueBinding+")>-1"+(trueValueBinding==='true'?":("+value+")":":_q("+value+","+trueValueBinding+")"));addHandler(el,'change',"var $$a="+value+","+'$$el=$event.target,'+"$$c=$$el.checked?("+trueValueBinding+"):("+falseValueBinding+");"+'if(Array.isArray($$a)){'+"var $$v="+(number?'_n('+valueBinding+')':valueBinding)+","+'$$i=_i($$a,$$v);'+"if($$el.checked){$$i<0&&("+value+"=$$a.concat([$$v]))}"+"else{$$i>-1&&("+value+"=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}"+"}else{"+genAssignmentCode(value,'$$c')+"}",null,true);}function genRadioModel(el,value,modifiers){var number=modifiers&&modifiers.number;var valueBinding=getBindingAttr(el,'value')||'null';valueBinding=number?"_n("+valueBinding+")":valueBinding;addProp(el,'checked',"_q("+value+","+valueBinding+")");
3642addHandler(el,'change',genAssignmentCode(value,valueBinding),null,true);}function genSelect(el,value,modifiers){var number=modifiers&&modifiers.number;var selectedVal="Array.prototype.filter"+".call($event.target.options,function(o){return o.selected})"+".map(function(o){var val = \"_value\" in o ? o._value : o.value;"+"return "+(number?'_n(val)':'val')+"})";var assignment='$event.target.multiple ? $$selectedVal : $$selectedVal[0]';var code="var $$selectedVal = "+selectedVal+";";code=code+" "+genAssignmentCode(value,assignment);addHandler(el,'change',code,null,true);}function genDefaultModel(el,value,modifiers){var type=el.attrsMap.type;var ref=modifiers||{};var lazy=ref.lazy;var number=ref.number;var trim=ref.trim;var needCompositionGuard=!lazy&&type!=='range';var event=lazy?'change':type==='range'?RANGE_TOKEN:'input';var valueExpression='$event.target.value';if(trim){valueExpression="$event.target.value.trim()";}if(number){valueExpression="_n("+valueExpression+")";}var code=genAssignmentCode(value,valueExpression);if(needCompositionGuard){code="if($event.target.composing)return;"+code;}addProp(el,'value',"("+value+")");addHandler(el,event,code,null,true);if(trim||number){addHandler(el,'blur','$forceUpdate()');}}/*  */// normalize v-model event tokens that can only be determined at runtime.
3643// it's important to place the event as the first in the array because
3644// the whole point is ensuring the v-model callback gets called before
3645// user-attached handlers.
3646function normalizeEvents(on){/* istanbul ignore if */if(isDef(on[RANGE_TOKEN])){// IE input[type=range] only supports `change` event
3647var event=isIE?'change':'input';on[event]=[].concat(on[RANGE_TOKEN],on[event]||[]);delete on[RANGE_TOKEN];}}var target$1;function add$1(event,_handler,once$$1,capture,passive){if(once$$1){var oldHandler=_handler;var _target=target$1;// save current target element in closure
3648_handler=function handler(ev){var res=arguments.length===1?oldHandler(ev):oldHandler.apply(null,arguments);if(res!==null){remove$2(event,_handler,capture,_target);}};}target$1.addEventListener(event,_handler,supportsPassive?{capture:capture,passive:passive}:capture);}function remove$2(event,handler,capture,_target){(_target||target$1).removeEventListener(event,handler,capture);}function updateDOMListeners(oldVnode,vnode){if(isUndef(oldVnode.data.on)&&isUndef(vnode.data.on)){return;}var on=vnode.data.on||{};var oldOn=oldVnode.data.on||{};target$1=vnode.elm;normalizeEvents(on);updateListeners(on,oldOn,add$1,remove$2,vnode.context);}var events={create:updateDOMListeners,update:updateDOMListeners};/*  */function updateDOMProps(oldVnode,vnode){if(isUndef(oldVnode.data.domProps)&&isUndef(vnode.data.domProps)){return;}var key,cur;var elm=vnode.elm;var oldProps=oldVnode.data.domProps||{};var props=vnode.data.domProps||{};// clone observed objects, as the user probably wants to mutate it
3649if(isDef(props.__ob__)){props=vnode.data.domProps=extend({},props);}for(key in oldProps){if(isUndef(props[key])){elm[key]='';}}for(key in props){cur=props[key];// ignore children if the node has textContent or innerHTML,
3650// as these will throw away existing DOM nodes and cause removal errors
3651// on subsequent patches (#3360)
3652if(key==='textContent'||key==='innerHTML'){if(vnode.children){vnode.children.length=0;}if(cur===oldProps[key]){continue;}// #6601 work around Chrome version <= 55 bug where single textNode
3653// replaced by innerHTML/textContent retains its parentNode property
3654if(elm.childNodes.length===1){elm.removeChild(elm.childNodes[0]);}}if(key==='value'){// store value as _value as well since
3655// non-string values will be stringified
3656elm._value=cur;// avoid resetting cursor position when value is the same
3657var strCur=isUndef(cur)?'':String(cur);if(shouldUpdateValue(elm,strCur)){elm.value=strCur;}}else{elm[key]=cur;}}}// check platforms/web/util/attrs.js acceptValue
3658function shouldUpdateValue(elm,checkVal){return!elm.composing&&(elm.tagName==='OPTION'||isDirty(elm,checkVal)||isInputChanged(elm,checkVal));}function isDirty(elm,checkVal){// return true when textbox (.number and .trim) loses focus and its value is
3659// not equal to the updated value
3660var notInFocus=true;// #6157
3661// work around IE bug when accessing document.activeElement in an iframe
3662try{notInFocus=document.activeElement!==elm;}catch(e){}return notInFocus&&elm.value!==checkVal;}function isInputChanged(elm,newVal){var value=elm.value;var modifiers=elm._vModifiers;// injected by v-model runtime
3663if(isDef(modifiers)&&modifiers.number){return toNumber(value)!==toNumber(newVal);}if(isDef(modifiers)&&modifiers.trim){return value.trim()!==newVal.trim();}return value!==newVal;}var domProps={create:updateDOMProps,update:updateDOMProps};/*  */var parseStyleText=cached(function(cssText){var res={};var listDelimiter=/;(?![^(]*\))/g;var propertyDelimiter=/:(.+)/;cssText.split(listDelimiter).forEach(function(item){if(item){var tmp=item.split(propertyDelimiter);tmp.length>1&&(res[tmp[0].trim()]=tmp[1].trim());}});return res;});// merge static and dynamic style data on the same vnode
3664function normalizeStyleData(data){var style=normalizeStyleBinding(data.style);// static style is pre-processed into an object during compilation
3665// and is always a fresh object, so it's safe to merge into it
3666return data.staticStyle?extend(data.staticStyle,style):style;}// normalize possible array / string values into Object
3667function normalizeStyleBinding(bindingStyle){if(Array.isArray(bindingStyle)){return toObject(bindingStyle);}if(typeof bindingStyle==='string'){return parseStyleText(bindingStyle);}return bindingStyle;}/**
3668 * parent component style should be after child's
3669 * so that parent component's style could override it
3670 */function getStyle(vnode,checkChild){var res={};var styleData;if(checkChild){var childNode=vnode;while(childNode.componentInstance){childNode=childNode.componentInstance._vnode;if(childNode.data&&(styleData=normalizeStyleData(childNode.data))){extend(res,styleData);}}}if(styleData=normalizeStyleData(vnode.data)){extend(res,styleData);}var parentNode=vnode;while(parentNode=parentNode.parent){if(parentNode.data&&(styleData=normalizeStyleData(parentNode.data))){extend(res,styleData);}}return res;}/*  */var cssVarRE=/^--/;var importantRE=/\s*!important$/;var setProp=function setProp(el,name,val){/* istanbul ignore if */if(cssVarRE.test(name)){el.style.setProperty(name,val);}else if(importantRE.test(val)){el.style.setProperty(name,val.replace(importantRE,''),'important');}else{var normalizedName=normalize(name);if(Array.isArray(val)){// Support values array created by autoprefixer, e.g.
3671// {display: ["-webkit-box", "-ms-flexbox", "flex"]}
3672// Set them one by one, and the browser will only set those it can recognize
3673for(var i=0,len=val.length;i<len;i++){el.style[normalizedName]=val[i];}}else{el.style[normalizedName]=val;}}};var vendorNames=['Webkit','Moz','ms'];var emptyStyle;var normalize=cached(function(prop){emptyStyle=emptyStyle||document.createElement('div').style;prop=camelize(prop);if(prop!=='filter'&&prop in emptyStyle){return prop;}var capName=prop.charAt(0).toUpperCase()+prop.slice(1);for(var i=0;i<vendorNames.length;i++){var name=vendorNames[i]+capName;if(name in emptyStyle){return name;}}});function updateStyle(oldVnode,vnode){var data=vnode.data;var oldData=oldVnode.data;if(isUndef(data.staticStyle)&&isUndef(data.style)&&isUndef(oldData.staticStyle)&&isUndef(oldData.style)){return;}var cur,name;var el=vnode.elm;var oldStaticStyle=oldData.staticStyle;var oldStyleBinding=oldData.normalizedStyle||oldData.style||{};// if static style exists, stylebinding already merged into it when doing normalizeStyleData
3674var oldStyle=oldStaticStyle||oldStyleBinding;var style=normalizeStyleBinding(vnode.data.style)||{};// store normalized style under a different key for next diff
3675// make sure to clone it if it's reactive, since the user likely wants
3676// to mutate it.
3677vnode.data.normalizedStyle=isDef(style.__ob__)?extend({},style):style;var newStyle=getStyle(vnode,true);for(name in oldStyle){if(isUndef(newStyle[name])){setProp(el,name,'');}}for(name in newStyle){cur=newStyle[name];if(cur!==oldStyle[name]){// ie9 setting to null has no effect, must use empty string
3678setProp(el,name,cur==null?'':cur);}}}var style={create:updateStyle,update:updateStyle};/*  *//**
3679 * Add class with compatibility for SVG since classList is not supported on
3680 * SVG elements in IE
3681 */function addClass(el,cls){/* istanbul ignore if */if(!cls||!(cls=cls.trim())){return;}/* istanbul ignore else */if(el.classList){if(cls.indexOf(' ')>-1){cls.split(/\s+/).forEach(function(c){return el.classList.add(c);});}else{el.classList.add(cls);}}else{var cur=" "+(el.getAttribute('class')||'')+" ";if(cur.indexOf(' '+cls+' ')<0){el.setAttribute('class',(cur+cls).trim());}}}/**
3682 * Remove class with compatibility for SVG since classList is not supported on
3683 * SVG elements in IE
3684 */function removeClass(el,cls){/* istanbul ignore if */if(!cls||!(cls=cls.trim())){return;}/* istanbul ignore else */if(el.classList){if(cls.indexOf(' ')>-1){cls.split(/\s+/).forEach(function(c){return el.classList.remove(c);});}else{el.classList.remove(cls);}if(!el.classList.length){el.removeAttribute('class');}}else{var cur=" "+(el.getAttribute('class')||'')+" ";var tar=' '+cls+' ';while(cur.indexOf(tar)>=0){cur=cur.replace(tar,' ');}cur=cur.trim();if(cur){el.setAttribute('class',cur);}else{el.removeAttribute('class');}}}/*  */function resolveTransition(def){if(!def){return;}/* istanbul ignore else */if((typeof def==='undefined'?'undefined':_typeof(def))==='object'){var res={};if(def.css!==false){extend(res,autoCssTransition(def.name||'v'));}extend(res,def);return res;}else if(typeof def==='string'){return autoCssTransition(def);}}var autoCssTransition=cached(function(name){return{enterClass:name+"-enter",enterToClass:name+"-enter-to",enterA
3684ctiveClass:name+"-enter-active",leaveClass:name+"-leave",leaveToClass:name+"-leave-to",leaveActiveClass:name+"-leave-active"};});var hasTransition=inBrowser&&!isIE9;var TRANSITION='transition';var ANIMATION='animation';// Transition property/event sniffing
3685var transitionProp='transition';var transitionEndEvent='transitionend';var animationProp='animation';var animationEndEvent='animationend';if(hasTransition){/* istanbul ignore if */if(window.ontransitionend===undefined&&window.onwebkittransitionend!==undefined){transitionProp='WebkitTransition';transitionEndEvent='webkitTransitionEnd';}if(window.onanimationend===undefined&&window.onwebkitanimationend!==undefined){animationProp='WebkitAnimation';animationEndEvent='webkitAnimationEnd';}}// binding to window is necessary to make hot reload work in IE in strict mode
3686var raf=inBrowser?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:/* istanbul ignore next */function(fn){return fn();};function nextFrame(fn){raf(function(){raf(fn);});}function addTransitionClass(el,cls){var transitionClasses=el._transitionClasses||(el._transitionClasses=[]);if(transitionClasses.indexOf(cls)<0){transitionClasses.push(cls);addClass(el,cls);}}function removeTransitionClass(el,cls){if(el._transitionClasses){remove(el._transitionClasses,cls);}removeClass(el,cls);}function whenTransitionEnds(el,expectedType,cb){var ref=getTransitionInfo(el,expectedType);var type=ref.type;var timeout=ref.timeout;var propCount=ref.propCount;if(!type){return cb();}var event=type===TRANSITION?transitionEndEvent:animationEndEvent;var ended=0;var end=function end(){el.removeEventListener(event,onEnd);cb();};var onEnd=function onEnd(e){if(e.target===el){if(++ended>=propCount){end();}}};setTimeout(function(){if(ended<propCount){end();}},timeout+1);el.addEventListener(event,onEnd);}var transformRE=/\b(transform|all)(,|$)/;function getTransitionInfo(el,expectedType){var styles=window.getComputedStyle(el);var transitionDelays=styles[transitionProp+'Delay'].split(', ');var transitionDurations=styles[transitionProp+'Duration'].split(', ');var transitionTimeout=getTimeout(transitionDelays,transitionDurations);var animationDelays=styles[animationProp+'Delay'].split(', ');var animationDurations=styles[animationProp+'Duration'].split(', ');var animationTimeout=getTimeout(animationDelays,animationDurations);var type;var timeout=0;var propCount=0;/* istanbul ignore if */if(expectedType===TRANSITION){if(transitionTimeout>0){type=TRANSITION;timeout=transitionTimeout;propCount=transitionDurations.length;}}else if(expectedType===ANIMATION){if(animationTimeout>0){type=ANIMATION;timeout=animationTimeout;propCount=animationDurations.length;}}else{timeout=Math.max(transitionTimeout,animationTimeout);type=timeout>0?transitionTimeout>animationTimeout?TRANSITION:ANIMATION:null;propCount=type?type===TRANSITION?transitionDurations.length:animationDurations.length:0;}var hasTransform=type===TRANSITION&&transformRE.test(styles[transitionProp+'Property']);return{type:type,timeout:timeout,propCount:propCount,hasTransform:hasTransform};}function getTimeout(delays,durations){/* istanbul ignore next */while(delays.length<durations.length){delays=delays.concat(delays);}return Math.max.apply(null,durations.map(function(d,i){return toMs(d)+toMs(delays[i]);}));}function toMs(s){return Number(s.slice(0,-1))*1000;}/*  */function enter(vnode,toggleDisplay){var el=vnode.elm;// call leave callback now
3687if(isDef(el._leaveCb)){el._leaveCb.cancelled=true;el._leaveCb();}var data=resolveTransition(vnode.data.transition);if(isUndef(data)){return;}/* istanbul ignore if */if(isDef(el._enterCb)||el.nodeType!==1){return;}var css=data.css;var type=data.type;var enterClass=data.enterClass;var enterToClass=data.enterToClass;var enterActiveClass=data.enterActiveClass;var appearClass=data.appearClass;var appearToClass=data.appearToClass;var appearActiveClass=data.appearActiveClass;var beforeEnter=data.beforeEnter;var enter=data.enter;var afterEnter=data.afterEnter;var enterCancelled=data.enterCancelled;var beforeAppear=data.beforeAppear;var appear=data.appear;var afterAppear=data.afterAppear;var appearCancelled=data.appearCancelled;var duration=data.duration;// activeInstance will always be the <transition> component managing this
3688// transition. One edge case to check is when the <transition> is placed
3689// as the root node of a child component. In that case we need to check
3690// <transition>'s parent for appear check.
3691var context=activeInstance;var transitionNode=activeInstance.$vnode;while(transitionNode&&transitionNode.parent){transitionNode=transitionNode.parent;context=transitionNode.context;}var isAppear=!context._isMounted||!vnode.isRootInsert;if(isAppear&&!appear&&appear!==''){return;}var startClass=isAppear&&appearClass?appearClass:enterClass;var activeClass=isAppear&&appearActiveClass?appearActiveClass:enterActiveClass;var toClass=isAppear&&appearToClass?appearToClass:enterToClass;var beforeEnterHook=isAppear?beforeAppear||beforeEnter:beforeEnter;var enterHook=isAppear?typeof appear==='function'?appear:enter:enter;var afterEnterHook=isAppear?afterAppear||afterEnter:afterEnter;var enterCancelledHook=isAppear?appearCancelled||enterCancelled:enterCancelled;var explicitEnterDuration=toNumber(isObject(duration)?duration.enter:duration);if("development"!=='production'&&explicitEnterDuration!=null){checkDuration(explicitEnterDuration,'enter',vnode);}var expectsCSS=css!==false&&!isIE9;var userWantsControl=getHookArgumentsLength(enterHook);var cb=el._enterCb=once(function(){if(expectsCSS){removeTransitionClass(el,toClass);removeTransitionClass(el,activeClass);}if(cb.cancelled){if(expectsCSS){removeTransitionClass(el,startClass);}enterCancelledHook&&enterCancelledHook(el);}
3691else{afterEnterHook&&afterEnterHook(el);}el._enterCb=null;});if(!vnode.data.show){// remove pending leave element on enter by injecting an insert hook
3692mergeVNodeHook(vnode.data.hook||(vnode.data.hook={}),'insert',function(){var parent=el.parentNode;var pendingNode=parent&&parent._pending&&parent._pending[vnode.key];if(pendingNode&&pendingNode.tag===vnode.tag&&pendingNode.elm._leaveCb){pendingNode.elm._leaveCb();}enterHook&&enterHook(el,cb);});}// start enter transition
3693beforeEnterHook&&beforeEnterHook(el);if(expectsCSS){addTransitionClass(el,startClass);addTransitionClass(el,activeClass);nextFrame(function(){addTransitionClass(el,toClass);removeTransitionClass(el,startClass);if(!cb.cancelled&&!userWantsControl){if(isValidDuration(explicitEnterDuration)){setTimeout(cb,explicitEnterDuration);}else{whenTransitionEnds(el,type,cb);}}});}if(vnode.data.show){toggleDisplay&&toggleDisplay();enterHook&&enterHook(el,cb);}if(!expectsCSS&&!userWantsControl){cb();}}function leave(vnode,rm){var el=vnode.elm;// call enter callback now
3694if(isDef(el._enterCb)){el._enterCb.cancelled=true;el._enterCb();}var data=resolveTransition(vnode.data.transition);if(isUndef(data)){return rm();}/* istanbul ignore if */if(isDef(el._leaveCb)||el.nodeType!==1){return;}var css=data.css;var type=data.type;var leaveClass=data.leaveClass;var leaveToClass=data.leaveToClass;var leaveActiveClass=data.leaveActiveClass;var beforeLeave=data.beforeLeave;var leave=data.leave;var afterLeave=data.afterLeave;var leaveCancelled=data.leaveCancelled;var delayLeave=data.delayLeave;var duration=data.duration;var expectsCSS=css!==false&&!isIE9;var userWantsControl=getHookArgumentsLength(leave);var explicitLeaveDuration=toNumber(isObject(duration)?duration.leave:duration);if("development"!=='production'&&isDef(explicitLeaveDuration)){checkDuration(explicitLeaveDuration,'leave',vnode);}var cb=el._leaveCb=once(function(){if(el.parentNode&&el.parentNode._pending){el.parentNode._pending[vnode.key]=null;}if(expectsCSS){removeTransitionClass(el,leaveToClass);removeTransitionClass(el,leaveActiveClass);}if(cb.cancelled){if(expectsCSS){removeTransitionClass(el,leaveClass);}leaveCancelled&&leaveCancelled(el);}else{rm();afterLeave&&afterLeave(el);}el._leaveCb=null;});if(delayLeave){delayLeave(performLeave);}else{performLeave();}function performLeave(){// the delayed leave may have already been cancelled
3695if(cb.cancelled){return;}// record leaving element
3696if(!vnode.data.show){(el.parentNode._pending||(el.parentNode._pending={}))[vnode.key]=vnode;}beforeLeave&&beforeLeave(el);if(expectsCSS){addTransitionClass(el,leaveClass);addTransitionClass(el,leaveActiveClass);nextFrame(function(){addTransitionClass(el,leaveToClass);removeTransitionClass(el,leaveClass);if(!cb.cancelled&&!userWantsControl){if(isValidDuration(explicitLeaveDuration)){setTimeout(cb,explicitLeaveDuration);}else{whenTransitionEnds(el,type,cb);}}});}leave&&leave(el,cb);if(!expectsCSS&&!userWantsControl){cb();}}}// only used in dev mode
3697function checkDuration(val,name,vnode){if(typeof val!=='number'){warn("<transition> explicit "+name+" duration is not a valid number - "+"got "+JSON.stringify(val)+".",vnode.context);}else if(isNaN(val)){warn("<transition> explicit "+name+" duration is NaN - "+'the duration expression might be incorrect.',vnode.context);}}function isValidDuration(val){return typeof val==='number'&&!isNaN(val);}/**
3698 * Normalize a transition hook's argument length. The hook may be:
3699 * - a merged hook (invoker) with the original in .fns
3700 * - a wrapped component method (check ._length)
3701 * - a plain function (.length)
3702 */function getHookArgumentsLength(fn){if(isUndef(fn)){return false;}var invokerFns=fn.fns;if(isDef(invokerFns)){// invoker
3703return getHookArgumentsLength(Array.isArray(invokerFns)?invokerFns[0]:invokerFns);}else{return(fn._length||fn.length)>1;}}function _enter(_,vnode){if(vnode.data.show!==true){enter(vnode);}}var transition=inBrowser?{create:_enter,activate:_enter,remove:function remove$$1(vnode,rm){/* istanbul ignore else */if(vnode.data.show!==true){leave(vnode,rm);}else{rm();}}}:{};var platformModules=[attrs,klass,events,domProps,style,transition];/*  */// the directive module should be applied last, after all
3704// built-in modules have been applied.
3705var modules=platformModules.concat(baseModules);var patch=createPatchFunction({nodeOps:nodeOps,modules:modules});/**
3706 * Not type checking this file because flow doesn't like attaching
3707 * properties to Elements.
3708 *//* istanbul ignore if */if(isIE9){// http://www.matts411.com/post/internet-explorer-9-oninput/
3709document.addEventListener('selectionchange',function(){var el=document.activeElement;if(el&&el.vmodel){trigger(el,'input');}});}var model$1={inserted:function inserted(el,binding,vnode){if(vnode.tag==='select'){setSelected(el,binding,vnode.context);el._vOptions=[].map.call(el.options,getValue);}else if(vnode.tag==='textarea'||isTextInputType(el.type)){el._vModifiers=binding.modifiers;if(!binding.modifiers.lazy){// Safari < 10.2 & UIWebView doesn't fire compositionend when
3710// switching focus before confirming composition choice
3711// this also fixes the issue where some browsers e.g. iOS Chrome
3712// fires "change" instead of "input" on autocomplete.
3713el.addEventListener('change',onCompositionEnd);if(!isAndroid){el.addEventListener('compositionstart',onCompositionStart);el.addEventListener('compositionend',onCompositionEnd);}/* istanbul ignore if */if(isIE9){el.vmodel=true;}}}},componentUpdated:function componentUpdated(el,binding,vnode){if(vnode.tag==='select'){setSelected(el,binding,vnode.context);// in case the options rendered by v-for have changed,
3714// it's possible that the value is out-of-sync with the rendered options.
3715// detect such cases and filter out values that no longer has a matching
3716// option in the DOM.
3717var prevOptions=el._vOptions;var curOptions=el._vOptions=[].map.call(el.options,getValue);if(curOptions.some(function(o,i){return!looseEqual(o,prevOptions[i]);})){// trigger change event if
3718// no matching option found for at least one value
3719var needReset=el.multiple?binding.value.some(function(v){return hasNoMatchingOption(v,curOptions);}):binding.value!==binding.oldValue&&hasNoMatchingOption(binding.value,curOptions);if(needReset){trigger(el,'change');}}}}};function setSelected(el,binding,vm){actuallySetSelected(el,binding,vm);/* istanbul ignore if */if(isIE||isEdge){setTimeout(function(){actuallySetSelected(el,binding,vm);},0);}}function actuallySetSelected(el,binding,vm){var value=binding.value;var isMultiple=el.multiple;if(isMultiple&&!Array.isArray(value)){"development"!=='production'&&warn("<select multiple v-model=\""+binding.expression+"\"> "+"expects an Array value for its binding, but got "+Object.prototype.toString.call(value).slice(8,-1),vm);return;}var selected,option;for(var i=0,l=el.options.length;i<l;i++){option=el.options[i];if(isMultiple){selected=looseIndexOf(value,getValue(option))>-1;if(option.selected!==selected){option.selected=selected;}}else{if(looseEqual(getValue(option),value)){if(el.selectedIndex!==i){el.selectedIndex=i;}return;}}}if(!isMultiple){el.selectedIndex=-1;}}function hasNoMatchingOption(value,options){return options.every(function(o){return!looseEqual(o,value);});}function getValue(option){return'_value'in option?option._value:option.value;}function onCompositionStart(e){e.target.composing=true;}function onCompositionEnd(e){// prevent triggering an input event for no reason
3720if(!e.target.composing){return;}e.target.composing=false;trigger(e.target,'input');}function trigger(el,type){var e=document.createEvent('HTMLEvents');e.initEvent(type,true,true);el.dispatchEvent(e);}/*  */// recursively search for possible transition defined inside the component root
3721function locateNode(vnode){return vnode.componentInstance&&(!vnode.data||!vnode.data.transition)?locateNode(vnode.componentInstance._vnode):vnode;}var show={bind:function bind(el,ref,vnode){var value=ref.value;vnode=locateNode(vnode);var transition$$1=vnode.data&&vnode.data.transition;var originalDisplay=el.__vOriginalDisplay=el.style.display==='none'?'':el.style.display;
3721if(value&&transition$$1){vnode.data.show=true;enter(vnode,function(){el.style.display=originalDisplay;});}else{el.style.display=value?originalDisplay:'none';}},update:function update(el,ref,vnode){var value=ref.value;var oldValue=ref.oldValue;/* istanbul ignore if */if(value===oldValue){return;}vnode=locateNode(vnode);var transition$$1=vnode.data&&vnode.data.transition;if(transition$$1){vnode.data.show=true;if(value){enter(vnode,function(){el.style.display=el.__vOriginalDisplay;});}else{leave(vnode,function(){el.style.display='none';});}}else{el.style.display=value?el.__vOriginalDisplay:'none';}},unbind:function unbind(el,binding,vnode,oldVnode,isDestroy){if(!isDestroy){el.style.display=el.__vOriginalDisplay;}}};var platformDirectives={model:model$1,show:show};/*  */// Provides transition support for a single element/component.
3722// supports transition mode (out-in / in-out)
3723var transitionProps={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};// in case the child is also an abstract component, e.g. <keep-alive>
3724// we want to recursively retrieve the real component to be rendered
3725function getRealChild(vnode){var compOptions=vnode&&vnode.componentOptions;if(compOptions&&compOptions.Ctor.options.abstract){return getRealChild(getFirstComponentChild(compOptions.children));}else{return vnode;}}function extractTransitionData(comp){var data={};var options=comp.$options;// props
3726for(var key in options.propsData){data[key]=comp[key];}// events.
3727// extract listeners and pass them directly to the transition methods
3728var listeners=options._parentListeners;for(var key$1 in listeners){data[camelize(key$1)]=listeners[key$1];}return data;}function placeholder(h,rawChild){if(/\d-keep-alive$/.test(rawChild.tag)){return h('keep-alive',{props:rawChild.componentOptions.propsData});}}function hasParentTransition(vnode){while(vnode=vnode.parent){if(vnode.data.transition){return true;}}}function isSameChild(child,oldChild){return oldChild.key===child.key&&oldChild.tag===child.tag;}var Transition={name:'transition',props:transitionProps,abstract:true,render:function render(h){var this$1=this;var children=this.$options._renderChildren;if(!children){return;}// filter out text nodes (possible whitespaces)
3729children=children.filter(function(c){return c.tag||isAsyncPlaceholder(c);});/* istanbul ignore if */if(!children.length){return;}// warn multiple elements
3730if("development"!=='production'&&children.length>1){warn('<transition> can only be used on a single element. Use '+'<transition-group> for lists.',this.$parent);}var mode=this.mode;// warn invalid mode
3731if("development"!=='production'&&mode&&mode!=='in-out'&&mode!=='out-in'){warn('invalid <transition> mode: '+mode,this.$parent);}var rawChild=children[0];// if this is a component root node and the component's
3732// parent container node also has transition, skip.
3733if(hasParentTransition(this.$vnode)){return rawChild;}// apply transition data to child
3734// use getRealChild() to ignore abstract components e.g. keep-alive
3735var child=getRealChild(rawChild);/* istanbul ignore if */if(!child){return rawChild;}if(this._leaving){return placeholder(h,rawChild);}// ensure a key that is unique to the vnode type and to this transition
3736// component instance. This key will be used to remove pending leaving nodes
3737// during entering.
3738var id="__transition-"+this._uid+"-";child.key=child.key==null?child.isComment?id+'comment':id+child.tag:isPrimitive(child.key)?String(child.key).indexOf(id)===0?child.key:id+child.key:child.key;var data=(child.data||(child.data={})).transition=extractTransitionData(this);var oldRawChild=this._vnode;var oldChild=getRealChild(oldRawChild);// mark v-show
3739// so that the transition module can hand over the control to the directive
3740if(child.data.directives&&child.data.directives.some(function(d){return d.name==='show';})){child.data.show=true;}if(oldChild&&oldChild.data&&!isSameChild(child,oldChild)&&!isAsyncPlaceholder(oldChild)){// replace old child transition data with fresh one
3741// important for dynamic transitions!
3742var oldData=oldChild.data.transition=extend({},data);// handle transition mode
3743if(mode==='out-in'){// return placeholder node and queue update when leave finishes
3744this._leaving=true;mergeVNodeHook(oldData,'afterLeave',function(){this$1._leaving=false;this$1.$forceUpdate();});return placeholder(h,rawChild);}else if(mode==='in-out'){if(isAsyncPlaceholder(child)){return oldRawChild;}var delayedLeave;var performLeave=function performLeave(){delayedLeave();};mergeVNodeHook(data,'afterEnter',performLeave);mergeVNodeHook(data,'enterCancelled',performLeave);mergeVNodeHook(oldData,'delayLeave',function(leave){delayedLeave=leave;});}}return rawChild;}};/*  */// Provides transition support for list items.
3745// supports move transitions using the FLIP technique.
3746// Because the vdom's children update algorithm is "unstable" - i.e.
3747// it doesn't guarantee the relative positioning of removed elements,
3748// we force transition-group to update its children into two passes:
3749// in the first pass, we remove all nodes that need to be removed,
3750// triggering their leaving transition; in the second pass, we insert/move
3751// into the final desired state. This way in the second pass removed
3752// nodes will remain where they should be.
3753var props=extend({tag:String,moveClass:String},transitionProps);delete props.mode;var TransitionGroup={props:props,render:function render(h){var tag=this.tag||this.$vnode.data.tag||'span';var map=Object.create(null);var prevChildren=this.prevChildren=this.children;var rawChildren=this.$slots.default||[];var children=this.children=[];var transitionData=extractTransitionData(this);for(var i=0;i<rawChildren.length;i++){var c=rawChildren[i];if(c.tag){if(c.key!=null&&String(c.key).indexOf('__vlist')!==0){children.push(c);map[c.key]=c;(c.data||(c.data={})).transition=transitionData;}else{var opts=c.componentOptions;var name=opts?opts.Ctor.options.name||opts.tag||'':c.tag;warn("<transition-group> children must be keyed: <"+name+">");}}}if(prevChildren){var kept=[];var removed=[];for(var i$1=0;i$1<prevChildren.length;i$1++){var c$1=prevChildren[i$1];c$1.data.transition=transitionData;c$1.data.pos=c$1.elm.getBoundingClientRect();if(map[c$1.key]){kept.push(c$1);}else{removed.push(c$1);}}this.kept=h(tag,null,kept);this.removed=removed;}return h(tag,null,children);},beforeUpdate:function beforeUpdate(){// force removing pass
3754this.__patch__(this._vnode,this.kept,false,// hydrating
3755true// removeOnly (!important, avoids unnecessary moves)
3756);this._vnode=this.kept;},updated:function updated(){var children=this.prevChildren;var moveClass=this.moveClass||(this.name||'v')+'-move';if(!children.length||!this.hasMove(children[0].elm,moveClass)){return;}// we divide the work into three loops to avoid mixing DOM reads and writes
3757// in each iteration - which helps prevent layout thrashing.
3758children.forEach(callPendingCbs);children.forEach(recordPosition);children.forEach(applyTranslation);// force reflow to put everything in position
3759children.forEach(function(c){if(c.data.moved){var el=c.elm;var s=el.style;addTransitionClass(el,moveClass);s.transform=s.WebkitTransform=s.transitionDuration='';el.addEventListener(transitionEndEvent,el._moveCb=function cb(e){if(!e||/transform$/.test(e.propertyName)){el.removeEventListener(transitionEndEvent,cb);el._moveCb=null;removeTransitionClass(el,moveClass);}});}});},methods:{hasMove:function hasMove(el,moveClass){/* istanbul ignore if */if(!hasTransition){return false;}/* istanbul ignore if */if(this._hasMove){return this._hasMove;}// Detect whether an element with the move class applied has
3760// CSS transitions. Since the element may be inside an entering
3761// transition at this very moment, we make a clone of it and remove
3762// all other transition classes applied to ensure only the move class
3763// is applied.
3764var clone=el.cloneNode();if(el._transitionClasses){el._transitionClasses.forEach(function(cls){removeClass(clone,cls);});}addClass(clone,moveClass);clone.style.display='none';this.$el.appendChild(clone);var info=getTransitionInfo(clone);this.$el.removeChild(clone);return this._hasMove=info.hasTransform;}}};function callPendingCbs(c){/* istanbul ignore if */if(c.elm._moveCb){c.elm._moveCb();}/* istanbul ignore if */if(c.elm._enterCb){c.elm._enterCb();}}function recordPosition(c){c.data.newPos=c.elm.getBoundingClientRect();}function applyTranslation(c){var oldPos=c.data.pos;var newPos=c.data.newPos;var dx=oldPos.left-newPos.left;var dy=oldPos.top-newPos.top;if(dx||dy){c.data.moved=true;var s=c.elm.style;s.transform=s.WebkitTransform="translate("+dx+"px,"+dy+"px)";s.transitionDuration='0s';}}var platformComponents={Transition:Transition,TransitionGroup:TransitionGroup};/*  */// install platform specific utils
3765Vue$3.config.mustUseProp=mustUseProp;Vue$3.config.isReservedTag=isReservedTag;Vue$3.config.isReservedAttr=isReservedAttr;Vue$3.config.getTagNamespace=getTagNamespace;Vue$3.config.isUnknownElement=isUnknownElement;// install platform runtime directives & components
3766extend(Vue$3.options.directives,platformDirectives);extend(Vue$3.options.components,platformComponents);// install platform patch function
3767Vue$3.prototype.__patch__=inBrowser?patch:noop;// public mount method
3768Vue$3.prototype.$mount=function(el,hydrating){el=el&&inBrowser?query(el):undefined;return mountComponent(this,el,hydrating);};// devtools global hook
3769/* istanbul ignore next */Vue$3.nextTick(function(){if(config.devtools){if(devtools){devtools.emit('init',Vue$3);}else if("development"!=='production'&&isChrome){console[console.info?'info':'log']('Download the Vue Devtools extension for a better development experience:\n'+'https://github.com/vuejs/vue-devtools');}}if("development"!=='production'&&config.productionTip!==false&&inBrowser&&typeof console!=='undefined'){console[console.info?'info':'log']("You are running Vue in development mode.\n"+"Make sure to turn on production mode when deploying for production.\n"+"See more tips at https://vuejs.org/guide/deployment.html");}},0);/*  */// check whether current browser encodes a char inside attribute values
3770function shouldDecode(content,encoded){var div=document.createElement('div');div.innerHTML="<div a=\""+content+"\"/>";return div.innerHTML.indexOf(encoded)>0;}// #3663
3771// IE encodes newlines inside attribute values while other browsers don't
3772var shouldDecodeNewlines=inBrowser?shouldDecode('\n','&#10;'):false;/*  */var defaultTagRE=/\{\{((?:.|\n)+?)\}\}/g;var regexEscapeRE=/[-.*+?^${}()|[\]\/\\]/g;var buildRegex=cached(function(delimiters){var open=delimiters[0].replace(regexEscapeRE,'\\$&');var close=delimiters[1].replace(regexEscapeRE,'\\$&');return new RegExp(open+'((?:.|\\n)+?)'+close,'g');});function parseText(text,delimiters){var tagRE=delimiters?buildRegex(delimiters):defaultTagRE;if(!tagRE.test(text)){return;}var tokens=[];var lastIndex=tagRE.lastIndex=0;var match,index;while(match=tagRE.exec(text)){index=match.index;// push text token
3773if(index>lastIndex){tokens.push(JSON.stringify(text.slice(lastIndex,index)));}// tag token
3774var exp=parseFilters(match[1].trim());tokens.push("_s("+exp+")");lastIndex=index+match[0].length;}if(lastIndex<text.length){tokens.push(JSON.stringify(text.slice(lastIndex)));}return tokens.join('+');}/*  */function transformNode(el,options){var warn=options.warn||baseWarn;var staticClass=getAndRemoveAttr(el,'class');if("development"!=='production'&&staticClass){var expression=parseText(staticClass,options.delimiters);if(expression){warn("class=\""+staticClass+"\": "+'Interpolation inside attributes has been removed. '+'Use v-bind or the colon shorthand instead. For example, '+'instead of <div class="{{ val }}">, use <div :class="val">.');}}if(staticClass){el.staticClass=JSON.stringify(staticClass);}
3774var classBinding=getBindingAttr(el,'class',false/* getStatic */);if(classBinding){el.classBinding=classBinding;}}function genData(el){var data='';if(el.staticClass){data+="staticClass:"+el.staticClass+",";}if(el.classBinding){data+="class:"+el.classBinding+",";}return data;}var klass$1={staticKeys:['staticClass'],transformNode:transformNode,genData:genData};/*  */function transformNode$1(el,options){var warn=options.warn||baseWarn;var staticStyle=getAndRemoveAttr(el,'style');if(staticStyle){/* istanbul ignore if */{var expression=parseText(staticStyle,options.delimiters);if(expression){warn("style=\""+staticStyle+"\": "+'Interpolation inside attributes has been removed. '+'Use v-bind or the colon shorthand instead. For example, '+'instead of <div style="{{ val }}">, use <div :style="val">.');}}el.staticStyle=JSON.stringify(parseStyleText(staticStyle));}var styleBinding=getBindingAttr(el,'style',false/* getStatic */);if(styleBinding){el.styleBinding=styleBinding;}}function genData$1(el){var data='';if(el.staticStyle){data+="staticStyle:"+el.staticStyle+",";}if(el.styleBinding){data+="style:("+el.styleBinding+"),";}return data;}var style$1={staticKeys:['staticStyle'],transformNode:transformNode$1,genData:genData$1};/*  */var decoder;var he={decode:function decode(html){decoder=decoder||document.createElement('div');decoder.innerHTML=html;return decoder.textContent;}};/*  */var isUnaryTag=makeMap('area,base,br,col,embed,frame,hr,img,input,isindex,keygen,'+'link,meta,param,source,track,wbr');// Elements that you can, intentionally, leave open
3775// (and which close themselves)
3776var canBeLeftOpenTag=makeMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source');// HTML5 tags https://html.spec.whatwg.org/multipage/indices.html#elements-3
3777// Phrasing Content https://html.spec.whatwg.org/multipage/dom.html#phrasing-content
3778var isNonPhrasingTag=makeMap('address,article,aside,base,blockquote,body,caption,col,colgroup,dd,'+'details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,'+'h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,'+'optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,'+'title,tr,track');/**
3779 * Not type-checking this file because it's mostly vendor code.
3780 *//*!
3781 * HTML Parser By John Resig (ejohn.org)
3782 * Modified by Juriy "kangax" Zaytsev
3783 * Original code by Erik Arvidsson, Mozilla Public License
3784 * http://erik.eae.net/simplehtmlparser/simplehtmlparser.js
3785 */// Regular Expressions for parsing tags and attributes
3786var attribute=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/;// could use https://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName
3787// but for Vue templates we can enforce a simple charset
3788var ncname='[a-zA-Z_][\\w\\-\\.]*';var qnameCapture="((?:"+ncname+"\\:)?"+ncname+")";var startTagOpen=new RegExp("^<"+qnameCapture);var startTagClose=/^\s*(\/?)>/;var endTag=new RegExp("^<\\/"+qnameCapture+"[^>]*>");var doctype=/^<!DOCTYPE [^>]+>/i;var comment=/^<!--/;var conditionalComment=/^<!\[/;var IS_REGEX_CAPTURING_BROKEN=false;'x'.replace(/x(.)?/g,function(m,g){IS_REGEX_CAPTURING_BROKEN=g==='';});// Special Elements (can contain anything)
3789var isPlainTextElement=makeMap('script,style,textarea',true);var reCache={};var decodingMap={'&lt;':'<','&gt;':'>','&quot;':'"','&amp;':'&','&#10;':'\n'};var encodedAttr=/&(?:lt|gt|quot|amp);/g;var encodedAttrWithNewLines=/&(?:lt|gt|quot|amp|#10);/g;// #5992
3790var isIgnoreNewlineTag=makeMap('pre,textarea',true);var shouldIgnoreFirstNewline=function shouldIgnoreFirstNewline(tag,html){return tag&&isIgnoreNewlineTag(tag)&&html[0]==='\n';};function decodeAttr(value,shouldDecodeNewlines){var re=shouldDecodeNewlines?encodedAttrWithNewLines:encodedAttr;return value.replace(re,function(match){return decodingMap[match];});}function parseHTML(html,options){var stack=[];var expectHTML=options.expectHTML;var isUnaryTag$$1=options.isUnaryTag||no;var canBeLeftOpenTag$$1=options.canBeLeftOpenTag||no;var index=0;var last,lastTag;while(html){last=html;// Make sure we're not in a plaintext content element like script/style
3791if(!lastTag||!isPlainTextElement(lastTag)){var textEnd=html.indexOf('<');if(textEnd===0){// Comment:
3792if(comment.test(html)){var commentEnd=html.indexOf('-->');if(commentEnd>=0){if(options.shouldKeepComment){options.comment(html.substring(4,commentEnd));}advance(commentEnd+3);continue;}}// http://en.wikipedia.org/wiki/Conditional_comment#Downlevel-revealed_conditional_comment
3793if(conditionalComment.test(html)){var conditionalEnd=html.indexOf(']>');if(conditionalEnd>=0){advance(conditionalEnd+2);continue;}}// Doctype:
3794var doctypeMatch=html.match(doctype);if(doctypeMatch){advance(doctypeMatch[0].length);continue;}// End tag:
3795var endTagMatch=html.match(endTag);
3795if(endTagMatch){var curIndex=index;advance(endTagMatch[0].length);parseEndTag(endTagMatch[1],curIndex,index);continue;}// Start tag:
3796var startTagMatch=parseStartTag();if(startTagMatch){handleStartTag(startTagMatch);if(shouldIgnoreFirstNewline(lastTag,html)){advance(1);}continue;}}var text=void 0,rest=void 0,next=void 0;if(textEnd>=0){rest=html.slice(textEnd);while(!endTag.test(rest)&&!startTagOpen.test(rest)&&!comment.test(rest)&&!conditionalComment.test(rest)){// < in plain text, be forgiving and treat it as text
3797next=rest.indexOf('<',1);if(next<0){break;}textEnd+=next;rest=html.slice(textEnd);}text=html.substring(0,textEnd);advance(textEnd);}if(textEnd<0){text=html;html='';}if(options.chars&&text){options.chars(text);}}else{var endTagLength=0;var stackedTag=lastTag.toLowerCase();var reStackedTag=reCache[stackedTag]||(reCache[stackedTag]=new RegExp('([\\s\\S]*?)(</'+stackedTag+'[^>]*>)','i'));var rest$1=html.replace(reStackedTag,function(all,text,endTag){endTagLength=endTag.length;if(!isPlainTextElement(stackedTag)&&stackedTag!=='noscript'){text=text.replace(/<!--([\s\S]*?)-->/g,'$1').replace(/<!\[CDATA\[([\s\S]*?)]]>/g,'$1');}if(shouldIgnoreFirstNewline(stackedTag,text)){text=text.slice(1);}if(options.chars){options.chars(text);}return'';});index+=html.length-rest$1.length;html=rest$1;parseEndTag(stackedTag,index-endTagLength,index);}if(html===last){options.chars&&options.chars(html);if("development"!=='production'&&!stack.length&&options.warn){options.warn("Mal-formatted tag at end of template: \""+html+"\"");}break;}}// Clean up any remaining tags
3798parseEndTag();function advance(n){index+=n;html=html.substring(n);}function parseStartTag(){var start=html.match(startTagOpen);if(start){var match={tagName:start[1],attrs:[],start:index};advance(start[0].length);var end,attr;while(!(end=html.match(startTagClose))&&(attr=html.match(attribute))){advance(attr[0].length);match.attrs.push(attr);}if(end){match.unarySlash=end[1];advance(end[0].length);match.end=index;return match;}}}function handleStartTag(match){var tagName=match.tagName;var unarySlash=match.unarySlash;if(expectHTML){if(lastTag==='p'&&isNonPhrasingTag(tagName)){parseEndTag(lastTag);}if(canBeLeftOpenTag$$1(tagName)&&lastTag===tagName){parseEndTag(tagName);}}var unary=isUnaryTag$$1(tagName)||!!unarySlash;var l=match.attrs.length;var attrs=new Array(l);for(var i=0;i<l;i++){var args=match.attrs[i];// hackish work around FF bug https://bugzilla.mozilla.org/show_bug.cgi?id=369778
3799if(IS_REGEX_CAPTURING_BROKEN&&args[0].indexOf('""')===-1){if(args[3]===''){delete args[3];}if(args[4]===''){delete args[4];}if(args[5]===''){delete args[5];}}var value=args[3]||args[4]||args[5]||'';attrs[i]={name:args[1],value:decodeAttr(value,options.shouldDecodeNewlines)};}if(!unary){stack.push({tag:tagName,lowerCasedTag:tagName.toLowerCase(),attrs:attrs});lastTag=tagName;}if(options.start){options.start(tagName,attrs,unary,match.start,match.end);}}function parseEndTag(tagName,start,end){var pos,lowerCasedTagName;if(start==null){start=index;}if(end==null){end=index;}if(tagName){lowerCasedTagName=tagName.toLowerCase();}// Find the closest opened tag of the same type
3800if(tagName){for(pos=stack.length-1;pos>=0;pos--){if(stack[pos].lowerCasedTag===lowerCasedTagName){break;}}}else{// If no tag name is provided, clean shop
3801pos=0;}if(pos>=0){// Close all the open elements, up the stack
3802for(var i=stack.length-1;i>=pos;i--){if("development"!=='production'&&(i>pos||!tagName)&&options.warn){options.warn("tag <"+stack[i].tag+"> has no matching end tag.");}if(options.end){options.end(stack[i].tag,start,end);}}// Remove the open elements from the stack
3803stack.length=pos;lastTag=pos&&stack[pos-1].tag;}else if(lowerCasedTagName==='br'){if(options.start){options.start(tagName,[],true,start,end);}}else if(lowerCasedTagName==='p'){if(options.start){options.start(tagName,[],false,start,end);}if(options.end){options.end(tagName,start,end);}}}}/*  */var onRE=/^@|^v-on:/;var dirRE=/^v-|^@|^:/;var forAliasRE=/(.*?)\s+(?:in|of)\s+(.*)/;var forIteratorRE=/\((\{[^}]*\}|[^,]*),([^,]*)(?:,([^,]*))?\)/;var argRE=/:(.*)$/;var bindRE=/^:|^v-bind:/;var modifierRE=/\.[^.]+/g;var decodeHTMLCached=cached(he.decode);// configurable state
3804var warn$2;var delimiters;var transforms;var preTransforms;var postTransforms;var platformIsPreTag;var platformMustUseProp;var platformGetTagNamespace;function createASTElement(tag,attrs,parent){return{type:1,tag:tag,attrsList:attrs,attrsMap:makeAttrsMap(attrs),parent:parent,children:[]};}/**
3805 * Convert HTML string to AST.
3806 */function parse(template,options){warn$2=options.warn||baseWarn;platformIsPreTag=options.isPreTag||no;platformMustUseProp=options.mustUseProp||no;platformGetTagNamespace=options.getTagNamespace||no;transforms=pluckModuleFunction(options.modules,'transformNode');preTransforms=pluckModuleFunction(options.modules,'preTransformNode');postTransforms=pluckModuleFunction(options.modules,'postTransformNode');delimiters=options.delimiters;var stack=[];var preserveWhitespace=options.preserveWhitespace!==false;var root;var currentParent;var inVPre=false;var inPre=false;var warned=false;function warnOnce(msg){if(!warned){warned=true;warn$2(msg);}}function endPre(element){// check pre state
3807if(element.pre){inVPre=false;}if(platformIsPreTag(element.tag)){inPre=false;}}parseHTML(template,{warn:warn$2,expectHTML:options.expectHTML,isUnaryTag:options.isUnaryTag,canBeLeftOpenTag:options.canBeLeftOpenTag,shouldDecodeNewlines:options.shouldDecodeNewlines,shouldKeepComment:options.comments,start:function start(tag,attrs,unary){// check namespace.
3808// inherit parent ns if there is one
3809var ns=currentParent&&currentParent.ns||platformGetTagNamespace(tag);// handle IE svg bug
3810/* istanbul ignore if */if(isIE&&ns==='svg'){attrs=guardIESVGBug(attrs);}var element=createASTElement(tag,attrs,currentParent);if(ns){element.ns=ns;}if(isForbiddenTag(element)&&!isServerRendering()){element.forbidden=true;"development"!=='production'&&warn$2('Templates should only be responsible for mapping the state to the '+'UI. Avoid placing tags with side-effects in your templates, such as '+"<"+tag+">"+', as they will not be parsed.');}// apply pre-transforms
3811for(var i=0;i<preTransforms.length;i++){element=preTransforms[i](element,options)||element;}if(!inVPre){processPre(element);if(element.pre){inVPre=true;}}if(platformIsPreTag(element.tag)){inPre=true;}if(inVPre){processRawAttrs(element);}else if(!element.processed){// structural directives
3812processFor(element);processIf(element);processOnce(element);// element-scope stuff
3813processElement(element,options);}function checkRootConstraints(el){{if(el.tag==='slot'||el.tag==='template'){warnOnce("Cannot use <"+el.tag+"> as component root element because it may "+'contain multiple nodes.');}if(el.attrsMap.hasOwnProperty('v-for')){warnOnce('Cannot use v-for on stateful component root element because '+'it renders multiple elements.');}}}// tree management
3814if(!root){root=element;checkRootConstraints(root);}else if(!stack.length){// allow root elements with v-if, v-else-if and v-else
3815if(root.if&&(element.elseif||element.else)){checkRootConstraints(element);addIfCondition(root,{exp:element.elseif,block:element});}else{warnOnce("Component template should contain exactly one root element. "+"If you are using v-if on multiple elements, "+"use v-else-if to chain them instead.");}}if(currentParent&&!element.forbidden){if(element.elseif||element.else){processIfConditions(element,currentParent);}else if(element.slotScope){// scoped slot
3816currentParent.plain=false;var name=element.slotTarget||'"default"';(currentParent.scopedSlots||(currentParent.scopedSlots={}))[name]=element;}else{currentParent.children.push(element);element.parent=currentParent;}}if(!unary){currentParent=element;stack.push(element);}else{endPre(element);}// apply post-transforms
3817for(var i$1=0;i$1<postTransforms.length;i$1++){postTransforms[i$1](element,options);}},end:function end(){// remove trailing whitespace
3818var element=stack[stack.length-1];var lastNode=element.children[element.children.length-1];if(lastNode&&lastNode.type===3&&lastNode.text===' '&&!inPre){element.children.pop();}// pop stack
3819stack.length-=1;currentParent=stack[stack.length-1];endPre(element);},chars:function chars(text){if(!currentParent){{if(text===template){warnOnce('Component template requires a root element, rather than just text.');}else if(text=text.trim()){warnOnce("text \""+text+"\" outside root element will be ignored.");}}return;}// IE textarea placeholder bug
3820/* istanbul ignore if */if(isIE&&currentParent.tag==='textarea'&&currentParent.attrsMap.placeholder===text){return;}var children=currentParent.children;text=inPre||text.trim()?isTextTag(currentParent)?text:decodeHTMLCached(text)// only preserve whitespace if its not right after a starting tag
3821:preserveWhitespace&&children.length?' ':'';if(text){var expression;if(!inVPre&&text!==' '&&(expression=parseText(text,delimiters))){children.push({type:2,expression:expression,text:text});}else if(text!==' '||!children.length||children[children.length-1].text!==' '){children.push({type:3,text:text});}}},comment:function comment(text){currentParent.children.push({type:3,text:text,isComment:true});}});return root;}function processPre(el){if(getAndRemoveAttr(el,'v-pre')!=null){el.pre=true;}}function processRawAttrs(el){var l=el.attrsList.length;if(l){var attrs=el.attrs=new Array(l);for(var i=0;i<l;i++){attrs[i]={name:el.attrsList[i].name,value:JSON.stringify(el.attrsList[i].value)};}}
3821else if(!el.pre){// non root node in pre blocks with no attributes
3822el.plain=true;}}function processElement(element,options){processKey(element);// determine whether this is a plain element after
3823// removing structural attributes
3824element.plain=!element.key&&!element.attrsList.length;processRef(element);processSlot(element);processComponent(element);for(var i=0;i<transforms.length;i++){element=transforms[i](element,options)||element;}processAttrs(element);}function processKey(el){var exp=getBindingAttr(el,'key');if(exp){if("development"!=='production'&&el.tag==='template'){warn$2("<template> cannot be keyed. Place the key on real elements instead.");}el.key=exp;}}function processRef(el){var ref=getBindingAttr(el,'ref');if(ref){el.ref=ref;el.refInFor=checkInFor(el);}}function processFor(el){var exp;if(exp=getAndRemoveAttr(el,'v-for')){var inMatch=exp.match(forAliasRE);if(!inMatch){"development"!=='production'&&warn$2("Invalid v-for expression: "+exp);return;}el.for=inMatch[2].trim();var alias=inMatch[1].trim();var iteratorMatch=alias.match(forIteratorRE);if(iteratorMatch){el.alias=iteratorMatch[1].trim();el.iterator1=iteratorMatch[2].trim();if(iteratorMatch[3]){el.iterator2=iteratorMatch[3].trim();}}else{el.alias=alias;}}}function processIf(el){var exp=getAndRemoveAttr(el,'v-if');if(exp){el.if=exp;addIfCondition(el,{exp:exp,block:el});}else{if(getAndRemoveAttr(el,'v-else')!=null){el.else=true;}var elseif=getAndRemoveAttr(el,'v-else-if');if(elseif){el.elseif=elseif;}}}function processIfConditions(el,parent){var prev=findPrevElement(parent.children);if(prev&&prev.if){addIfCondition(prev,{exp:el.elseif,block:el});}else{warn$2("v-"+(el.elseif?'else-if="'+el.elseif+'"':'else')+" "+"used on element <"+el.tag+"> without corresponding v-if.");}}function findPrevElement(children){var i=children.length;while(i--){if(children[i].type===1){return children[i];}else{if("development"!=='production'&&children[i].text!==' '){warn$2("text \""+children[i].text.trim()+"\" between v-if and v-else(-if) "+"will be ignored.");}children.pop();}}}function addIfCondition(el,condition){if(!el.ifConditions){el.ifConditions=[];}el.ifConditions.push(condition);}function processOnce(el){var once$$1=getAndRemoveAttr(el,'v-once');if(once$$1!=null){el.once=true;}}function processSlot(el){if(el.tag==='slot'){el.slotName=getBindingAttr(el,'name');if("development"!=='production'&&el.key){warn$2("`key` does not work on <slot> because slots are abstract outlets "+"and can possibly expand into multiple elements. "+"Use the key on a wrapping element instead.");}}else{var slotScope;if(el.tag==='template'){slotScope=getAndRemoveAttr(el,'scope');/* istanbul ignore if */if("development"!=='production'&&slotScope){warn$2("the \"scope\" attribute for scoped slots have been deprecated and "+"replaced by \"slot-scope\" since 2.5. The new \"slot-scope\" attribute "+"can also be used on plain elements in addition to <template> to "+"denote scoped slots.",true);}el.slotScope=slotScope||getAndRemoveAttr(el,'slot-scope');}else if(slotScope=getAndRemoveAttr(el,'slot-scope')){el.slotScope=slotScope;}var slotTarget=getBindingAttr(el,'slot');if(slotTarget){el.slotTarget=slotTarget==='""'?'"default"':slotTarget;// preserve slot as an attribute for native shadow DOM compat
3825// only for non-scoped slots.
3826if(!el.slotScope){addAttr(el,'slot',slotTarget);}}}}function processComponent(el){var binding;if(binding=getBindingAttr(el,'is')){el.component=binding;}if(getAndRemoveAttr(el,'inline-template')!=null){el.inlineTemplate=true;}}function processAttrs(el){var list=el.attrsList;var i,l,name,rawName,value,modifiers,isProp;for(i=0,l=list.length;i<l;i++){name=rawName=list[i].name;value=list[i].value;if(dirRE.test(name)){// mark element as dynamic
3827el.hasBindings=true;// modifiers
3828modifiers=parseModifiers(name);if(modifiers){name=name.replace(modifierRE,'');}if(bindRE.test(name)){// v-bind
3829name=name.replace(bindRE,'');value=parseFilters(value);isProp=false;if(modifiers){if(modifiers.prop){isProp=true;name=camelize(name);if(name==='innerHtml'){name='innerHTML';}}if(modifiers.camel){name=camelize(name);}if(modifiers.sync){addHandler(el,"update:"+camelize(name),genAssignmentC
3829ode(value,"$event"));}}if(isProp||!el.component&&platformMustUseProp(el.tag,el.attrsMap.type,name)){addProp(el,name,value);}else{addAttr(el,name,value);}}else if(onRE.test(name)){// v-on
3830name=name.replace(onRE,'');addHandler(el,name,value,modifiers,false,warn$2);}else{// normal directives
3831name=name.replace(dirRE,'');// parse arg
3832var argMatch=name.match(argRE);var arg=argMatch&&argMatch[1];if(arg){name=name.slice(0,-(arg.length+1));}addDirective(el,name,rawName,value,arg,modifiers);if("development"!=='production'&&name==='model'){checkForAliasModel(el,value);}}}else{// literal attribute
3833{var expression=parseText(value,delimiters);if(expression){warn$2(name+"=\""+value+"\": "+'Interpolation inside attributes has been removed. '+'Use v-bind or the colon shorthand instead. For example, '+'instead of <div id="{{ val }}">, use <div :id="val">.');}}addAttr(el,name,JSON.stringify(value));}}}function checkInFor(el){var parent=el;while(parent){if(parent.for!==undefined){return true;}parent=parent.parent;}return false;}function parseModifiers(name){var match=name.match(modifierRE);if(match){var ret={};match.forEach(function(m){ret[m.slice(1)]=true;});return ret;}}function makeAttrsMap(attrs){var map={};for(var i=0,l=attrs.length;i<l;i++){if("development"!=='production'&&map[attrs[i].name]&&!isIE&&!isEdge){warn$2('duplicate attribute: '+attrs[i].name);}map[attrs[i].name]=attrs[i].value;}return map;}// for script (e.g. type="x/template") or style, do not decode content
3834function isTextTag(el){return el.tag==='script'||el.tag==='style';}function isForbiddenTag(el){return el.tag==='style'||el.tag==='script'&&(!el.attrsMap.type||el.attrsMap.type==='text/javascript');}var ieNSBug=/^xmlns:NS\d+/;var ieNSPrefix=/^NS\d+:/;/* istanbul ignore next */function guardIESVGBug(attrs){var res=[];for(var i=0;i<attrs.length;i++){var attr=attrs[i];if(!ieNSBug.test(attr.name)){attr.name=attr.name.replace(ieNSPrefix,'');res.push(attr);}}return res;}function checkForAliasModel(el,value){var _el=el;while(_el){if(_el.for&&_el.alias===value){warn$2("<"+el.tag+" v-model=\""+value+"\">: "+"You are binding v-model directly to a v-for iteration alias. "+"This will not be able to modify the v-for source array because "+"writing to the alias is like modifying a function local variable. "+"Consider using an array of objects and use v-model on an object property instead.");}_el=_el.parent;}}/*  *//**
3835 * Expand input[v-model] with dyanmic type bindings into v-if-else chains
3836 * Turn this:
3837 *   <input v-model="data[type]" :type="type">
3838 * into this:
3839 *   <input v-if="type === 'checkbox'" type="checkbox" v-model="data[type]">
3840 *   <input v-else-if="type === 'radio'" type="radio" v-model="data[type]">
3841 *   <input v-else :type="type" v-model="data[type]">
3842 */function preTransformNode(el,options){if(el.tag==='input'){var map=el.attrsMap;if(map['v-model']&&(map['v-bind:type']||map[':type'])){var typeBinding=getBindingAttr(el,'type');var ifCondition=getAndRemoveAttr(el,'v-if',true);var ifConditionExtra=ifCondition?"&&("+ifCondition+")":"";// 1. checkbox
3843var branch0=cloneASTElement(el);// process for on the main node
3844processFor(branch0);addRawAttr(branch0,'type','checkbox');processElement(branch0,options);branch0.processed=true;// prevent it from double-processed
3845branch0.if="type==='checkbox'"+ifConditionExtra;addIfCondition(branch0,{exp:branch0.if,block:branch0});// 2. add radio else-if condition
3846var branch1=cloneASTElement(el);getAndRemoveAttr(branch1,'v-for',true);addRawAttr(branch1,'type','radio');processElement(branch1,options);addIfCondition(branch0,{exp:"type==='radio'"+ifConditionExtra,block:branch1});// 3. other
3847var branch2=cloneASTElement(el);getAndRemoveAttr(branch2,'v-for',true);addRawAttr(branch2,':type',typeBinding);processElement(branch2,options);addIfCondition(branch0,{exp:ifCondition,block:branch2});return branch0;}}}function cloneASTElement(el){return createASTElement(el.tag,el.attrsList.slice(),el.parent);}function addRawAttr(el,name,value){el.attrsMap[name]=value;el.attrsList.push({name:name,value:value});}var model$2={preTransformNode:preTransformNode};var modules$1=[klass$1,style$1,model$2];/*  */function text(el,dir){if(dir.value){addProp(el,'textContent',"_s("+dir.value+")");}}/*  */function html(el,dir){if(dir.value){addProp(el,'innerHTML',"_s("+dir.value+")");}}var directives$1={model:model,text:text,html:html};/*  */var baseOptions={expectHTML:true,modules:modules$1,directives:directives$1,isPreTag:isPreTag,isUnaryTag:isUnaryTag,mustUseProp:mustUseProp,canBeLeftOpenTag:canBeLeftOpenTag,isReservedTag:isReservedTag,getTagNamespace:getTagNamespace,staticKeys:genStaticKeys(modules$1)};/*  */var isStaticKey;var isPlatformReservedTag;var genStaticKeysCached=cached(genStaticKeys$1);/**
3848 * Goal of the optimizer: walk the generated template AST tree
3849 * and detect sub-trees that are purely static, i.e. parts of
3850 * the DOM that never needs to change.
3851 *
3852 * Once we detect these sub-trees, we can:
3853 *
3854 * 1. Hoist them into constants, so that we no longer need to
3855 *    create fresh nodes for them on each re-render;
3856 * 2. Completely skip them in the patching process.
3857 */function optimize(root,options){if(!root){return;}isStaticKey=genStaticKeysCached(options.staticKeys||'');isPlatformReservedTag=options.isReservedTag||no;// first pass: mark all non-static nodes.
3858markStatic$1(root);// second pass: mark static roots.
3859markStaticRoots(root,false);}function genStaticKeys$1(keys){return makeMap('type,tag,attrsList,attrsMap,plain,parent,children,attrs'+(keys?','+keys:''));}function markStatic$1(node){node.static=isStatic(node);if(node.type===1){// do not make component slot content static. this avoids
3860// 1. components not able to mutate slot nodes
3861// 2. static slot content fails for hot-reloading
3862if(!isPlatformReservedTag(node.tag)&&node.tag!=='slot'&&node.attrsMap['inline-template']==null){return;}for(var i=0,l=node.children.length;i<l;i++){var child=node.children[i];markStatic$1(child);if(!child.static){node.static=false;}}if(node.ifConditions){for(var i$1=1,l$1=node.ifConditions.length;i$1<l$1;i$1++){var block=node.ifConditions[i$1].block;markStatic$1(block);if(!block.static){node.static=false;}}}}}function markStaticRoots(node,isInFor){if(node.type===1){if(node.static||node.once){node.staticInFor=isInFor;}// For a node to qualify as a static root, it should have children that
3863// are not just static text. Otherwise the cost of hoisting out will
3864// outweigh the benefits and it's better off to just always render it fresh.
3865if(node.static&&node.children.length&&!(node.children.length===1&&node.children[0].type===3)){node.staticRoot=true;return;}else{node.staticRoot=false;}if(node.children){for(var i=0,l=node.children.length;i<l;i++){markStaticRoots(node.children[i],isInFor||!!node.for);}}if(node.ifConditions){for(var i$1=1,l$1=node.ifConditions.length;i$1<l$1;i$1++){markStaticRoots(node.ifConditions[i$1].block,isInFor);}}}}function isStatic(node){if(node.type===2){// expression
3866return false;}if(node.type===3){// text
3867return true;}return!!(node.pre||!node.hasBindings&&// no dynamic bindings
3868!node.if&&!node.for&&// not v-if or v-for or v-else
3869!isBuiltInTag(node.tag)&&// not a built-in
3870isPlatformReservedTag(node.tag)&&// not a component
3871!isDirectChildOfTemplateFor(node)&&Object.keys(node).every(isStaticKey));}function isDirectChildOfTemplateFor(node){while(node.parent){node=node.parent;if(node.tag!=='template'){return false;}if(node.for){return true;}}return false;}/*  */var fnExpRE=/^\s*([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/;var simplePathRE=/^\s*[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?']|\[".*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*\s*$/;// keyCode aliases
3872var keyCodes={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,'delete':[8,46]};// #4868: modifiers that prevent the execution of the listener
3873// need to explicitly return null so that we can determine whether to remove
3874// the listener for .once
3875var genGuard=function genGuard(condition){return"if("+condition+")return null;";};var modifierCode={stop:'$event.stopPropagation();',prevent:'$event.preventDefault();',self:genGuard("$event.target !== $event.currentTarget"),ctrl:genGuard("!$event.ctrlKey"),shift:genGuard("!$event.shiftKey"),alt:genGuard("!$event.altKey"),meta:genGuard("!$event.metaKey"),left:genGuard("'button' in $event && $event.button !== 0"),middle:genGuard("'button' in $event && $event.button !== 1"),right:genGuard("'button' in $event && $event.button !== 2")};function genHandlers(events,isNative,warn){var res=isNative?'nativeOn:{':'on:{';for(var name in events){var handler=events[name];// #5330: warn click.right, since right clicks do not actually fire click events.
3876if("development"!=='production'&&name==='click'&&handler&&handler.modifiers&&handler.modifiers.right){warn("Use \"contextmenu\" instead of \"click.right\" since right clicks "+"do not actually fire \"click\" events.");}res+="\""+name+"\":"+genHandler(name,handler)+",";}return res.slice(0,-1)+'}';}function genHandler(name,handler){if(!handler){return'function(){}';}if(Array.isArray(handler)){return"["+handler.map(function(handler){return genHandler(name,handler);}).join(',')+"]";}var isMethodPath=simplePathRE.test(handler.value);var isFunctionExpression=fnExpRE.test(handler.value);
3876if(!handler.modifiers){return isMethodPath||isFunctionExpression?handler.value:"function($event){"+handler.value+"}";// inline statement
3877}else{var code='';var genModifierCode='';var keys=[];for(var key in handler.modifiers){if(modifierCode[key]){genModifierCode+=modifierCode[key];// left/right
3878if(keyCodes[key]){keys.push(key);}}else if(key==='exact'){var modifiers=handler.modifiers;genModifierCode+=genGuard(['ctrl','shift','alt','meta'].filter(function(keyModifier){return!modifiers[keyModifier];}).map(function(keyModifier){return"$event."+keyModifier+"Key";}).join('||'));}else{keys.push(key);}}if(keys.length){code+=genKeyFilter(keys);}// Make sure modifiers like prevent and stop get executed after key filtering
3879if(genModifierCode){code+=genModifierCode;}var handlerCode=isMethodPath?handler.value+'($event)':isFunctionExpression?"("+handler.value+")($event)":handler.value;return"function($event){"+code+handlerCode+"}";}}function genKeyFilter(keys){return"if(!('button' in $event)&&"+keys.map(genFilterCode).join('&&')+")return null;";}function genFilterCode(key){var keyVal=parseInt(key,10);if(keyVal){return"$event.keyCode!=="+keyVal;}var code=keyCodes[key];return"_k($event.keyCode,"+JSON.stringify(key)+","+JSON.stringify(code)+","+"$event.key)";}/*  */function on(el,dir){if("development"!=='production'&&dir.modifiers){warn("v-on without argument does not support modifiers.");}el.wrapListeners=function(code){return"_g("+code+","+dir.value+")";};}/*  */function bind$1(el,dir){el.wrapData=function(code){return"_b("+code+",'"+el.tag+"',"+dir.value+","+(dir.modifiers&&dir.modifiers.prop?'true':'false')+(dir.modifiers&&dir.modifiers.sync?',true':'')+")";};}/*  */var baseDirectives={on:on,bind:bind$1,cloak:noop};/*  */var CodegenState=function CodegenState(options){this.options=options;this.warn=options.warn||baseWarn;this.transforms=pluckModuleFunction(options.modules,'transformCode');this.dataGenFns=pluckModuleFunction(options.modules,'genData');this.directives=extend(extend({},baseDirectives),options.directives);var isReservedTag=options.isReservedTag||no;this.maybeComponent=function(el){return!isReservedTag(el.tag);};this.onceId=0;this.staticRenderFns=[];};function generate(ast,options){var state=new CodegenState(options);var code=ast?genElement(ast,state):'_c("div")';return{render:"with(this){return "+code+"}",staticRenderFns:state.staticRenderFns};}function genElement(el,state){if(el.staticRoot&&!el.staticProcessed){return genStatic(el,state);}else if(el.once&&!el.onceProcessed){return genOnce(el,state);}else if(el.for&&!el.forProcessed){return genFor(el,state);}else if(el.if&&!el.ifProcessed){return genIf(el,state);}else if(el.tag==='template'&&!el.slotTarget){return genChildren(el,state)||'void 0';}else if(el.tag==='slot'){return genSlot(el,state);}else{// component or element
3880var code;if(el.component){code=genComponent(el.component,el,state);}else{var data=el.plain?undefined:genData$2(el,state);var children=el.inlineTemplate?null:genChildren(el,state,true);code="_c('"+el.tag+"'"+(data?","+data:'')+(children?","+children:'')+")";}// module transforms
3881for(var i=0;i<state.transforms.length;i++){code=state.transforms[i](el,code);}return code;}}// hoist static sub-trees out
3882function genStatic(el,state){el.staticProcessed=true;state.staticRenderFns.push("with(this){return "+genElement(el,state)+"}");return"_m("+(state.staticRenderFns.length-1)+(el.staticInFor?',true':'')+")";}// v-once
3883function genOnce(el,state){el.onceProcessed=true;if(el.if&&!el.ifProcessed){return genIf(el,state);}else if(el.staticInFor){var key='';var parent=el.parent;while(parent){if(parent.for){key=parent.key;break;}parent=parent.parent;}if(!key){"development"!=='production'&&state.warn("v-once can only be used inside v-for that is keyed. ");return genElement(el,state);}return"_o("+genElement(el,state)+","+state.onceId++ +","+key+")";}else{return genStatic(el,state);}}function genIf(el,state,altGen,altEmpty){el.ifProcessed=true;// avoid recursion
3884return genIfConditions(el.ifConditions.slice(),state,altGen,altEmpty);}function genIfConditions(conditions,state,altGen,altEmpty){if(!conditions.length){return altEmpty||'_e()';}
3884var condition=conditions.shift();if(condition.exp){return"("+condition.exp+")?"+genTernaryExp(condition.block)+":"+genIfConditions(conditions,state,altGen,altEmpty);}else{return""+genTernaryExp(condition.block);}// v-if with v-once should generate code like (a)?_m(0):_m(1)
3885function genTernaryExp(el){return altGen?altGen(el,state):el.once?genOnce(el,state):genElement(el,state);}}function genFor(el,state,altGen,altHelper){var exp=el.for;var alias=el.alias;var iterator1=el.iterator1?","+el.iterator1:'';var iterator2=el.iterator2?","+el.iterator2:'';if("development"!=='production'&&state.maybeComponent(el)&&el.tag!=='slot'&&el.tag!=='template'&&!el.key){state.warn("<"+el.tag+" v-for=\""+alias+" in "+exp+"\">: component lists rendered with "+"v-for should have explicit keys. "+"See https://vuejs.org/guide/list.html#key for more info.",true/* tip */);}el.forProcessed=true;// avoid recursion
3886return(altHelper||'_l')+"(("+exp+"),"+"function("+alias+iterator1+iterator2+"){"+"return "+(altGen||genElement)(el,state)+'})';}function genData$2(el,state){var data='{';// directives first.
3887// directives may mutate the el's other properties before they are generated.
3888var dirs=genDirectives(el,state);if(dirs){data+=dirs+',';}// key
3889if(el.key){data+="key:"+el.key+",";}// ref
3890if(el.ref){data+="ref:"+el.ref+",";}if(el.refInFor){data+="refInFor:true,";}// pre
3891if(el.pre){data+="pre:true,";}// record original tag name for components using "is" attribute
3892if(el.component){data+="tag:\""+el.tag+"\",";}// module data generation functions
3893for(var i=0;i<state.dataGenFns.length;i++){data+=state.dataGenFns[i](el);}// attributes
3894if(el.attrs){data+="attrs:{"+genProps(el.attrs)+"},";}// DOM props
3895if(el.props){data+="domProps:{"+genProps(el.props)+"},";}// event handlers
3896if(el.events){data+=genHandlers(el.events,false,state.warn)+",";}if(el.nativeEvents){data+=genHandlers(el.nativeEvents,true,state.warn)+",";}// slot target
3897// only for non-scoped slots
3898if(el.slotTarget&&!el.slotScope){data+="slot:"+el.slotTarget+",";}// scoped slots
3899if(el.scopedSlots){data+=genScopedSlots(el.scopedSlots,state)+",";}// component v-model
3900if(el.model){data+="model:{value:"+el.model.value+",callback:"+el.model.callback+",expression:"+el.model.expression+"},";}// inline-template
3901if(el.inlineTemplate){var inlineTemplate=genInlineTemplate(el,state);if(inlineTemplate){data+=inlineTemplate+",";}}data=data.replace(/,$/,'')+'}';// v-bind data wrap
3902if(el.wrapData){data=el.wrapData(data);}// v-on data wrap
3903if(el.wrapListeners){data=el.wrapListeners(data);}return data;}function genDirectives(el,state){var dirs=el.directives;if(!dirs){return;}var res='directives:[';var hasRuntime=false;var i,l,dir,needRuntime;for(i=0,l=dirs.length;i<l;i++){dir=dirs[i];needRuntime=true;var gen=state.directives[dir.name];if(gen){// compile-time directive that manipulates AST.
3904// returns true if it also needs a runtime counterpart.
3905needRuntime=!!gen(el,dir,state.warn);}if(needRuntime){hasRuntime=true;res+="{name:\""+dir.name+"\",rawName:\""+dir.rawName+"\""+(dir.value?",value:("+dir.value+"),expression:"+JSON.stringify(dir.value):'')+(dir.arg?",arg:\""+dir.arg+"\"":'')+(dir.modifiers?",modifiers:"+JSON.stringify(dir.modifiers):'')+"},";}}if(hasRuntime){return res.slice(0,-1)+']';}}function genInlineTemplate(el,state){var ast=el.children[0];if("development"!=='production'&&(el.children.length!==1||ast.type!==1)){state.warn('Inline-template components must have exactly one child element.');}if(ast.type===1){var inlineRenderFns=generate(ast,state.options);return"inlineTemplate:{render:function(){"+inlineRenderFns.render+"}
3905,staticRenderFns:["+inlineRenderFns.staticRenderFns.map(function(code){return"function(){"+code+"}";}).join(',')+"]}";}}function genScopedSlots(slots,state){return"scopedSlots:_u(["+Object.keys(slots).map(function(key){return genScopedSlot(key,slots[key],state);}).join(',')+"])";}function genScopedSlot(key,el,state){if(el.for&&!el.forProcessed){return genForScopedSlot(key,el,state);}var fn="function("+String(el.slotScope)+"){"+"return "+(el.tag==='template'?el.if?el.if+"?"+(genChildren(el,state)||'undefined')+":undefined":genChildren(el,state)||'undefined':genElement(el,state))+"}";return"{key:"+key+",fn:"+fn+"}";}function genForScopedSlot(key,el,state){var exp=el.for;var alias=el.alias;var iterator1=el.iterator1?","+el.iterator1:'';var iterator2=el.iterator2?","+el.iterator2:'';el.forProcessed=true;// avoid recursion
3906return"_l(("+exp+"),"+"function("+alias+iterator1+iterator2+"){"+"return "+genScopedSlot(key,el,state)+'})';}function genChildren(el,state,checkSkip,altGenElement,altGenNode){var children=el.children;if(children.length){var el$1=children[0];// optimize single v-for
3907if(children.length===1&&el$1.for&&el$1.tag!=='template'&&el$1.tag!=='slot'){return(altGenElement||genElement)(el$1,state);}var normalizationType=checkSkip?getNormalizationType(children,state.maybeComponent):0;var gen=altGenNode||genNode;return"["+children.map(function(c){return gen(c,state);}).join(',')+"]"+(normalizationType?","+normalizationType:'');}}// determine the normalization needed for the children array.
3908// 0: no normalization needed
3909// 1: simple normalization needed (possible 1-level deep nested array)
3910// 2: full normalization needed
3911function getNormalizationType(children,maybeComponent){var res=0;for(var i=0;i<children.length;i++){var el=children[i];if(el.type!==1){continue;}if(needsNormalization(el)||el.ifConditions&&el.ifConditions.some(function(c){return needsNormalization(c.block);})){res=2;break;}if(maybeComponent(el)||el.ifConditions&&el.ifConditions.some(function(c){return maybeComponent(c.block);})){res=1;}}return res;}function needsNormalization(el){return el.for!==undefined||el.tag==='template'||el.tag==='slot';}function genNode(node,state){if(node.type===1){return genElement(node,state);}if(node.type===3&&node.isComment){return genComment(node);}else{return genText(node);}}function genText(text){return"_v("+(text.type===2?text.expression// no need for () because already wrapped in _s()
3912:transformSpecialNewlines(JSON.stringify(text.text)))+")";}function genComment(comment){return"_e("+JSON.stringify(comment.text)+")";}function genSlot(el,state){var slotName=el.slotName||'"default"';var children=genChildren(el,state);var res="_t("+slotName+(children?","+children:'');var attrs=el.attrs&&"{"+el.attrs.map(function(a){return camelize(a.name)+":"+a.value;}).join(',')+"}";var bind$$1=el.attrsMap['v-bind'];if((attrs||bind$$1)&&!children){res+=",null";}if(attrs){res+=","+attrs;}if(bind$$1){res+=(attrs?'':',null')+","+bind$$1;}return res+')';}// componentName is el.component, take it as argument to shun flow's pessimistic refinement
3913function genComponent(componentName,el,state){var children=el.inlineTemplate?null:genChildren(el,state,true);return"_c("+componentName+","+genData$2(el,state)+(children?","+children:'')+")";}function genProps(props){var res='';for(var i=0;i<props.length;i++){var prop=props[i];res+="\""+prop.name+"\":"+transformSpecialNewlines(prop.value)+",";}return res.slice(0,-1);}// #3895, #4268
3914function transformSpecialNewlines(text){return text.replace(/\u2028/g,'\\u2028').replace(/\u2029/g,'\\u2029');}/*  */// these keywords should not appear inside expressions, but operators like
3915// typeof, instanceof and in are allowed
3916var prohibitedKeywordRE=new RegExp('\\b'+('do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,'+'super,throw,while,yield,delete,export,import,return,switch,default,'+'extends,finally,continue,debugger,function,arguments').split(',').join('\\b|\\b')+'\\b');// these unary operators should not be used as property/method names
3917var unaryOperatorsRE=new RegExp('\\b'+'delete,typeof,void'.split(',').join('\\s*\\([^\\)]*\\)|\\b')+'\\s*\\([^\\)]*\\)');// check valid identifier for v-for
3918var identRE=/[A-Za-z_$][\w$]*/;// strip strings in expressions
3919var stripStringRE=/'(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`/g;// detect problematic expressions in a template
3920function detectErrors(ast){var errors=[];if(ast){checkNode(ast,errors);}return errors;}function checkNode(node,errors){if(node.type===1){for(var name in node.attrsMap){if(dirRE.test(name)){var value=node.attrsMap[name];if(value){if(name==='v-for'){checkFor(node,"v-for=\""+value+"\"",errors);}else if(onRE.test(name)){checkEvent(value,name+"=\""+value+"\"",errors);}else{checkExpression(value,name+"=\""+value+"\"",errors);}}}}if(node.children){for(var i=0;i<node.children.length;i++){checkNode(node.children[i],errors);}}}else if(node.type===2){checkExpression(node.expression,node.text,errors);}}function checkEvent(exp,text,errors){var stipped=exp.replace(stripStringRE,'');var keywordMatch=stipped.match(unaryOperatorsRE);if(keywordMatch&&stipped.charAt(keywordMatch.index-1)!=='$'){errors.push("avoid using JavaScript unary operator as property name: "+"\""+keywordMatch[0]+"\" in expression "+text.trim());}checkExpression(exp,text,errors);}function checkFor(node,text,errors){checkExpression(node.for||'',text,errors);checkIdentifier(node.alias,'v-for alias',text,errors);checkIdentifier(node.iterator1,'v-for iterator',text,errors);checkIdentifier(node.iterator2,'v-for iterator',text,errors);}function checkIdentifier(ident,type,text,errors){if(typeof ident==='string'&&!identRE.test(ident)){errors.push("invalid "+type+" \""+ident+"\" in expression: "+text.trim());}}function checkExpression(exp,text,errors){try{new Function("return "+exp);}catch(e){var keywordMatch=exp.replace(stripStringRE,'').match(prohibitedKeywordRE);if(keywordMatch){errors.push("avoid using JavaScript keyword as property name: "+"\""+keywordMatch[0]+"\"\n  Raw expression: "+text.trim());}else{errors.push("invalid expression: "+e.message+" in\n\n"+"    "+exp+"\n\n"+"  Raw expression: "+text.trim()+"\n");}}}/*  */function createFunction(code,errors){try{return new Function(code);}catch(err){errors.push({err:err,code:code});return noop;}}function createCompileToFunctionFn(compile){var cache=Object.create(null);return function compileToFunctions(template,options,vm){options=extend({},options);var warn$$1=options.warn||warn;delete options.warn;/* istanbul ignore if */{// detect possible CSP restriction
3921try{new Function('return 1');}catch(e){if(e.toString().match(/unsafe-eval|CSP/)){warn$$1('It seems you are using the standalone build of Vue.js in an '+'environment with Content Security Policy that prohibits unsafe-eval. '+'The template compiler cannot work in this environment. Consider '+'relaxing the policy to allow unsafe-eval or pre-compiling your '+'templates into render functions.');}}}// check cache
3922var key=options.delimiters?String(options.delimiters)+template:template;if(cache[key]){return cache[key];}// compile
3923var compiled=compile(template,options);// check compilation errors/tips
3924{if(compiled.errors&&compiled.errors.length){warn$$1("Error compiling template:\n\n"+template+"\n\n"+compiled.errors.map(function(e){return"- "+e;}).join('\n')+'\n',vm);}if(compiled.tips&&compiled.tips.length){compiled.tips.forEach(function(msg){return tip(msg,vm);});}}// turn code into functions
3925var res={};var fnGenErrors=[];res.render=createFunction(compiled.render,fnGenErrors);res.staticRenderFns=compiled.staticRenderFns.map(function(code){return createFunction(code,fnGenErrors);});// check function generation errors.
3926// this should only happen if there is a bug in the compiler itself.
3927// mostly for codegen development use
3928/* istanbul ignore if */{if((!compiled.errors||!compiled.errors.length)&&fnGenErrors.length){warn$$1("Failed to generate render function:\n\n"+fnGenErrors.map(function(ref){var err=ref.err;var code=ref.code;return err.toString()+" in\n\n"+code+"\n";}).join('\n'),vm);}}return cache[key]=res;};}/*  */function createCompilerCreator(baseCompile){return function createCompiler(baseOptions){function compile(template,options){var finalOptions=Object.create(baseOptions);var errors=[];var tips=[];finalOptions.warn=function(msg,tip){(tip?tips:errors).push(msg);};if(options){// merge custom modules
3929if(options.modules){finalOptions.modules=(baseOptions.modules||[]).concat(options.modules);}// merge custom directives
3930if(options.directives){finalOptions.directives=extend(Object.create(baseOptions.directives),options.directives);}// copy other options
3931for(var key in options){if(key!=='modules'&&key!=='directives'){finalOptions[key]=options[key];}}}var compiled=baseCompile(template,finalOptions);{errors.push.apply(errors,detectErrors(compiled.ast));}compiled.errors=errors;compiled.tips=tips;return compiled;}return{compile:compile,compileToFunctions:createCompileToFunctionFn(compile)};};}/*  */// `createCompilerCreator` allows creating compilers that use alternative
3932// parser/optimizer/codegen, e.g the SSR optimizing compiler.
3933// Here we just export a default compiler using the default parts.
3934var createCompiler=createCompilerCreator(function baseCompile(template,options){var ast=parse(template.trim(),options);optimize(ast,options);var code=generate(ast,options);return{ast:ast,render:code.render,staticRenderFns:code.staticRenderFns};});/*  */var ref$1=createCompiler(baseOptions);var compileToFunctions=ref$1.compileToFunctions;/*  */var idToTemplate=cached(function(id){var el=query(id);return el&&el.innerHTML;});var mount=Vue$3.prototype.$mount;Vue$3.prototype.$mount=function(el,hydrating){el=el&&query(el);/* istanbul ignore if */if(el===document.body||el===document.documentElement){"development"!=='production'&&warn("Do not mount Vue to <html> or <body> - mount to normal elements instead.");return this;}var options=this.$options;// resolve template/el and convert to render function
3935if(!options.render){var template=options.template;if(template){if(typeof template==='string'){if(template.charAt(0)==='#'){template=idToTemplate(template);/* istanbul ignore if */if("development"!=='production'&&!template){warn("Template element not found or is empty: "+options.template,this);}}}else if(template.nodeType){template=template.innerHTML;}else{{warn('invalid template option:'+template,this);}return this;}}else if(el){template=getOuterHTML(el);}if(template){/* istanbul ignore if */if("development"!=='production'&&config.performance&&mark){mark('compile');}var ref=compileToFunctions(template,{shouldDecodeNewlines:shouldDecodeNewlines,delimiters:options.delimiters,comments:options.comments},this);var render=ref.render;var staticRenderFns=ref.staticRenderFns;options.render=render;options.staticRenderFns=staticRenderFns;/* istanbul ignore if */if("development"!=='production'&&config.performance&&mark){mark('compile end');measure("vue "+this._name+" compile",'compile','compile end');}}}return mount.call(this,el,hydrating);};/**
3936 * Get outerHTML of elements, taking care
3937 * of SVG elements in IE as well.
3938 */function getOuterHTML(el){if(el.outerHTML){return el.outerHTML;}else{var container=document.createElement('div');container.appendChild(el.cloneNode(true));return container.innerHTML;}}Vue$3.compile=compileToFunctions;return Vue$3;});// console.log("Loading booking modals");
3939Vue.component('book-modal',{props:['showId','stylesheetUri','audiodescribed','bslsignlanguage','captioned','relaxed','is_accessible'],data:function data(){return{instances:[]};},mounted:function mounted(){var self=this;// console.log('About to run the query', '/api/' + this.showId);
3940axios.get('/api/'+this.showId).then(function(response){console.log('Got a response!',response);self.instances=response.data.instances;});},computed:{hasAudiodescribed:function hasAudiodescribed(){var found=this.instances.filter(function(item){return item.audiodescribed=="1";});// console.log('audiodescribed', found);
3941return found.length>0;},hasBslsignlanguage:function hasBslsignlanguage(){var found=this.instances.filter(function(item){return item.bslsignlanguage=="1";});// console.log('bslsignlanguage', found);
3942return found.length>0;},hasCaptioned:function hasCaptioned(){var found=this.instances.filter(function(item){return item.captioned=="1";});// console.log('captioned', found);
3943return found.length>0;},hasRelaxed:function hasRelaxed(){var found=this.instances.filter(function(item){return item.relaxed=="1";});// console.log('relaxed', found);
3944return found.length>0;},hasIs_accessible:function hasIs_accessible(){var found=this.instances.filter(function(item){item.is_accessible=="1";});return found.length>0;},filteredInstances:function filteredInstances(){var instances=this.instances;if(this.audiodescribed){instances=instances.filter(function(item){return item.audiodescribed=="1";});}if(this.is_accessible){instances=instances.filter(function(item){return item.is_accessible=="1";});}if(this.bslsignlanguage){instances=instances.filter(function(item){return item.bslsignlanguage=="1";});}if(this.captioned){instances=instances.filter(function(item){return item.captioned=="1";});}if(this.relaxed){instances=instances.filter(function(item){return item.relaxed=="1";});}return instances;}},methods:{priceRange:function priceRange(instance){var min=instance['attributes']['price-min'];var max=instance['attributes']['price-max'];if(typeof min=='undefined'||typeof max=='undefined'){return'–';}if(min==max){if(min==0){return'Free';}return"£"+min;}return"£"+min+" – "+"£"+max;},getBookButton:function getBookButton(instance){}},template:'\n  <div>\n    <div class="col-md-10 col-md-offset-1 search-filters">\n\n      <div class="checkboxes">\n        <input type="checkbox" id="age" v-model="captioned">\n        <label v-if="hasCaptioned" for="age">\n          Captioned\n        </label>\n        \n        <input type="checkbox" id="audiodescribed" v-model="audiodescribed">\n        <label v-if="hasAudiodescribed" for="audiodescribed">\n          Audio described\n        </label>\n        \n        <input type="checkbox" id="bslsignlanguage" v-model="bslsignlanguage">\n        <label v-if="hasBslsignlanguage" for="bslsignlanguage">\n          BSL Sign Language\n        </label>\n        \n        <input type="checkbox" id="relaxed" v-model="relaxed">\n        <label v-if="hasRelaxed" for="relaxed">\n          Relaxed performances\n        </label>\n      </div>\n      \n    </div>\n    <div class="col-sm-12 titles">\n      <div class="grey-bg">\n        <div class="row">\n          <div class="col-sm-3 col-md-2 col-md-offset-1">\n            Date &amp; time\n          </div>\n          <div class="col-sm-2 col-md-1">\n            Price\n          </div>\n          <div class="col-sm-3 col-md-2">\n            Venue\n          </div>\n          <div class="col-sm-4 col-md-2">\n            \n          </div>\n        </div>\n      </div>\n    </div>\n    <div class="col-sm-12">\n        <div class="no-performances-match" v-if="filteredInstances.length == 0">\n          <p>Sorry, no performances match your search</p>\n        </div>\n        <div v-else>\n          <div v-for="(instance, index) in filteredInstances" class="instance-wrapper">\n            <div class="row event-row">\n              <div class="col-sm-3 col-md-2 col-md-offset-1">\n                <p class="small"><span v-html="instance.date"></span><br />
3944\n                <span v-html="instance.time"></span></p>\n              </div>\n              <div class="col-sm-2 col-md-1">\n                <p class="small" v-html="priceRange(instance)"></p>\n              </div>\n              <div class="col-sm-3 col-md-2">\n                <p class="small" v-html="instance.location"></p>\n              </div>\n              <div class="col-sm-4 col-md-2 relative">\n\n                  <img :src="stylesheetUri + \'/img/icons/access/hearing-assist.svg\'" alt="" v-if="instance.audiodescribed == \'1\'">\n                  <div class="tool-tip wysiwyg">\n                    <h3>Audio described</h3>\n                    <p>The signer stands stage left\n                    (auditorium right) to interpret the\n                    dialogue.</p>\n                  </div>\n\n                  <img :src="stylesheetUri + \'/img/icons/access/bsl.svg\'" alt="" v-if="instance.bslsignlanguage == \'1\'">\n                  <div class="tool-tip wysiwyg">\n                    <h3>BSL Sign Language</h3>\n                    <p>The signer stands stage left\n                    (auditorium right) to interpret the\n                    dialogue.</p>\n                  </div>\n\n\n                  <img :src="stylesheetUri + \'/img/icons/access/captioned.svg\'" alt="" v-if="instance.captioned == \'1\'">\n                  <div class="tool-tip wysiwyg ">\n                    <h3>Captioned</h3>\n                    <p>The signer stands stage left\n                    (auditorium right) to interpret the\n                    dialogue.</p>\n                  </div>\n                \n                  <img :src="stylesheetUri + \'/img/icons/access/relaxed.svg\'" alt="" v-if="instance.relaxed == \'1\'">\n                  <div class="tool-tip wysiwyg">\n                    <h3>Relaxed</h3>\n                    <p>Specially designed for people with autism, \n                    a sensory or communication disorder, or anyone \n                    else who would find a typical theatre setting \n                      a challenging environment.</p>\n                  </div>\n                \n              </div>\n              <div class="col-sm-12 col-md-3">\n                <span v-if="instance.booking.toLowerCase() == \'sold out\'" class="button button--block sold-out open-modal" v-html="instance.booking"></span>\n                <a v-else :href="\'/book-online/\' + instance.iframeId" class="button button--block black" v-html="instance.booking"></a>\n              </div>\n            </div>\n            <div class="row">\n              <div class="col-md-10 col-md-offset-1">\n                <hr>\n              </div>\n            </div>\n          </div>\n        </div>\n    </div>\n  </div>'});Vue.component('drop-down',{props:['options','initialSelected','listClass','pleaseSelect','query','name','url'],data:function data(){if(0&&'location'==this.name){var option=this.options.find(function(item){return item.value=='at-takeoff';});return{selected:option,showing:false};}else{return{selected:this.initialSelected,showing:false};}},created:function created(){if('location'==this.name){var _this=this;var hash=window.location.hash;var match=hash.match(/#(.+)/);var option=this.options.find(function(item){// console.log(item);
3945if(match[1]&&item.value==match[1]){setTimeout(function(){_this.select(item);},100);}});}},computed:{dropDownCss:function dropDownCss(){return this.showing?'display:block;':'display:none;';},active:function active(){return this.dropDownText!=this.pleaseSelect;},dropDownText:function dropDownText(){if(!(this.name in this.query)){return this.pleaseSelect;}var self=this;var option=this.options.find(function(item){return item.value==self.query[self.name];});if(option){return option.label;}return this.pleaseSelect;}},methods:{copy:function copy(item){return JSON.parse(JSON.stringify(item));},showList:function showList(e){e.preventDefault();this.$emit('openDropdown');this.showing=!this.showing;this.tabindex=this.showing?0:-1;// console.log(this.tabindex);
3946},select:function select(option){// console.log(option);
3947this.showing=false;this.selected=option;this.goOptionUrl(option.value);},goOptionUrl:function goOptionUrl(value){var newQuery=this.copy(this.query);newQuery[this.name]=value;if(value=='__REMOVE__'){delete newQuery[this.name];}if(newQuery.location){window.location.hash=''+newQuery.location;}else{var url=new URL(window.location);url.hash='';history.replaceState(null,document.title,url);}// console.log(this)
3948return this.$emit('search',{'query':newQuery});},getRemovedOptionUrl:function getRemovedOptionUrl(){var newQuery=this.copy(this.query);delete newQuery[this.filter.slug];return this.makeUrlFromObject(newQuery);}},template:'<ul :class="listClass">\n    <li class="selector" :class="{ active : active }">\n\t\t\t<a href="#" @click="showList($event)" v-html="dropDownText"></a>\n\t\t\t<ul :class="listClass" :style="dropDownCss">\n\t\t\t\t<li v-for="option in options" >\n                  <a href="#/" v-html="option.label" @click="select(option)"></a>\n                </li>\n\t\t\t</ul>\n\t\t</li>\n\t</ul>'});Vue.component('link-drop-down',{props:['options','initialSelected','listClass','pleaseSelect','query','name','url'],data:function data(){return{selected:this.initialSelected,showing:false};},mounted:function mounted(){// console.log(this.query)
3949},computed:{dropDownCss:function dropDownCss(){return this.showing?'display:block;':'display:none;';},dropDownText:function dropDownText(){if(!(this.name in this.query)){return this.pleaseSelect;}var self=this;var option=this.options.find(function(item){return item.value==self.query[self.name];});if(option){return option.label;}return this.pleaseSelect;}},methods:{copy:function copy(item){return JSON.parse(JSON.stringify(item));},showList:function showList(e){e.preventDefault();this.showing=!this.showing;},select:function select(option){this.showing=false;this.selected=option;this.goOptionUrl(option.value);},goOptionUrl:function goOptionUrl(value){if(value=='__REMOVE__'){return window.location.href=this.url;}return window.location.href=this.url+'?age='+value;},getRemovedOptionUrl:function getRemovedOptionUrl(){var newQuery=this.copy(this.query);delete newQuery[this.filter.slug];return this.makeUrlFromObject(newQuery);}},template:'<ul :class="listClass">\n    <li class="selector">\n\t\t\t<a href="#" @click="showList($event)" v-html="dropDownText"></a>\n\t\t\t<ul :class="listClass" :style="dropDownCss">\n\t\t\t\t<li v-for="option in options" @click="select(option)">
3949\n          <span v-html="option.label"></span>\n        </li>\n\t\t\t</ul>\n\t\t</li>\n\t</ul>'});Vue.component('show-listing',{props:['show'],data:function data(){return{};},computed:{},methods:{bgImage:function bgImage(){if(this.show.image!='false'&&this.show.image){return this.show.image;}return'';}},mounted:function mounted(){// console.log(this.show);
3950},template:'\n    <div class="col-sm-6 col-md-4 show-block">\n        <a :href="show.url" class="show-block-link">\n\n        <div v-if="show.fields.free_event" class="small-badge free-badge top-left" style="z-index: 10;">Free</div>\n\n        <div class="sixteen-nine" :style="{ backgroundImage: \'url(\' + bgImage() + \')\' }" :class="show.fields.page_colour">\n          \n        </div>\n        \n        <div class="show-block-content">\n            <h3 class="h4 test">\n              <span v-html="show.post_title"></span>\n            </h3>\n            \n            <p class="small"><strong>{{ show.dateRange }}\n              <br />{{ show.location }}</strong></p>\n            <hr>\n            <p v-html="show.fields.intro"></p>     \n            <div class="badge">\n                  <span>Ages</span>\n                  {{ show.ages }}\n            </div>   \n        </div>\n        \n    \n        <div v-if="show.fields.add_badge == \'Friends of ours\'" class="small-badge bright-green-bg top-left">{{show.fields.add_badge}}</div>\n        <div v-else-if="show.fields.add_badge == \'On tour\'" class="small-badge on-tour-badge top-left">{{show.fields.add_badge}}</div>\n        <div v-else-if="show.fields.add_badge == \'Pre-book\'" class="small-badge pre-book-badge top-left"><span>Pre-</span><br /><span>Book</span></div>\n        <div v-else-if="show.fields.add_badge == \'Free\'" class="small-badge free-badge top-left">{{show.fields.add_badge}}</div>\n\n      \n      </a>\n      <a :href="show.url" class="button button--arrow" v-if="show.post_type == \'assass\'">More info</a>\n      <a :href="show.url" class="button button--arrow" v-else-if="show.fields.hide_booking_buttons">More info</a>\n      <a :href="show.url + \'#book\'" class="button button--arrow" v-else>Book now</a>\n    </div>\n  '});var maps=[];var mapStyle=[{"featureType":"administrative","elementType":"geometry.fill","stylers":[{"color":"#7f2200"},{"visibility":"off"}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"visibility":"on"},{"color":"#87ae79"}]},{"featureType":"administrative","elementType":"labels.text.fill","stylers":[{"color":"#495421"}]},{"featureType":"administrative","elementType":"labels.text.stroke","stylers":[{"color":"#ffffff"},{"visibility":"on"},{"weight":4.1}]},{"featureType":"administrative.neighborhood","elementType":"labels","stylers":[{"visibility":"off"}]},{"featureType":"landscape","elementType":"geometry.fill","stylers":[{"color":"#abce83"}]},{"featureType":"poi","elementType":"geometry.fill","stylers":[{"color":"#769E72"}]},{"featureType":"poi","elementType":"labels.text.fill","stylers":[{"color":"#7B8758"}]},{"featureType":"poi","elementType":"labels.text.stroke","stylers":[{"color":"#EBF4A4"}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"visibility":"simplified"},{"color":"#8dab68"}]},{"featureType":"road","elementType":"geometry.fill","stylers":[{"visibility":"simplified"}]},{"featureType":"road","elementType":"labels.text.fill","stylers":[{"color":"#5B5B3F"}]},{"featureType":"road","elementType":"labels.text.stroke","stylers":[{"color":"#ABCE83"}]},{"featureType":"road","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"road.highway","elementType":"geometry","stylers":[{"color":"#EBF4A4"}]},{"featureType":"road.arterial","elementType":"geometry","stylers":[{"color":"#9BBF72"}]},{"featureType":"road.arterial","elementType":"geometry.fill","stylers":[{"visibility":"on"}]},{"featureType":"road.local","elementType":"geometry","stylers":[{"color":"#A4C67D"}]},{"featureType":"road.local","elementType":"geometry.fill","stylers":[{"visibility":"on"}]},{"featureType":"transit","elementType":"all","stylers":[{"visibility":"off"}]},{"featureType":"water","elementType":"geometry","stylers":[{"visibility":"on"},{"color":"#aee2e0"}]}];var markerImage={url:STYLESHEET_DIRECTORY_URI+'/img/icons/map-icon.png',// size: new google.maps.Point(248, 364),
3951scaledSize:new google.maps.Size(124,182),origin:new google.maps.Point(0,0),anchor:new google.maps.Point(62,182)};$('.create-google-map').each(function(){var $map=$(this);var center={lat:parseFloat($map.attr('data-lat')),lng:parseFloat($map.attr('data-lng'))};$map.map=new google.maps.Map($map[0],{center:center,styles:mapStyle,zoom:18});var markerIcon=new google.maps.Marker({position:{lat:parseFloat($map.attr('data-lat')),lng:parseFloat($map.attr('data-lng'))},map:$map.map,icon:markerImage});maps.push($map.map);});/*
3952
39531. Helpers
39542. Video formatting
39553. Vendor functions
39564. jQuery click handlers
39575. Custom dropdowns
39586. Scroll to anchor on click
39598. Mobile menu toggle
396010. Shows page Vue application
396111. Booking modal
396212. Custom donation styling
396313. Footer
3964
3965*/// 1. Helpers
3966var query,bookModalVueInstance;/*
3967  Get the URL (get) query START
3968  =============================
3969  Get the query ?shows=all&relaxed=true and turn it into something
3970  we can use like {shows : 'all', relaxed : true}
3971*/function getQuery(){var a=window.location.search.substr(1).split("&");if(a=="")return{};var b={};for(var i=0;i<a.length;++i){var p=a[i].split("=",2);if(p.length==1){b[p[0]]="";}else{b[p[0]]=decodeURIComponent(p[1].replace(/\+/g," "));}}return b;}query=getQuery();/*
3972  =============================
3973  Get the URL (get) query STOP
3974*/function idExists(id){return!!document.getElementById(id);}jQuery(document).ready(function($){/*
3975    2. Video formatting START
3976    =======================
3977    We load videos as static images, then use these functions
3978    create embeds when the images are clicked
3979  */function adaptiveTitleFontSize(){var title_length=$('h1').text().length;if($(window).width()<768)return false;// if(title_length >= 21 && title_length <= 40){
3980//   $('h1').css({
3981//     'font-size': '130px',
3982//     'line-height': '120px'
3983//   })
3984// } else if(title_length > 40){
3985//   $('h1').css({
3986//     'font-size': '100px',
3987//     'line-height': '90px'
3988//   })
3989// }
3990}adaptiveTitleFontSize();// Finds thumbnails from youtube or vimeo
3991function setVideoThumbnail(vidDiv){if(vidDiv.dataset.vidhost==="vimeo"){var x=new XMLHttpRequest();x.open("GET","https://vimeo.com/api/v2/video/"+vidDiv.dataset.embed+".xml",true);x.onreadystatechange=function(){if(x.readyState==4&&x.status==200){var doc=x.responseXML;source=doc.getElementsByTagName("thumbnail_large")[0].innerHTML;var image=new Image();image.src=source;image.style.top="0%";image.addEventListener("load",function(){vidDiv.appendChild(image);});}};x.send(null);}else{var source="https://img.youtube.com/vi/"+vidDiv.dataset.embed+"/sddefault.jpg";var image=new Image();image.src=source;image.addEventListener("load",function(){vidDiv.appendChild(image);});}}// When you click a video image it turns
3992// it into a video iframe
3993function setClickResponseFunction(vidDiv){var embedSrc;if(vidDiv.dataset.vidhost==="vimeo"){embedSrc="https://player.vimeo.com/video/"+vidDiv.dataset.embed+"?autoplay=0";}else{embedSrc="https://www.youtube.com/embed/"+vidDiv.dataset.embed+"?rel=0&showinfo=0";}vidDiv.addEventListener("click",function(){var iframe=document.createElement("iframe");iframe.setAttribute("frameborder","0");iframe.setAttribute("allowfullscreen","");iframe.setAttribute("src",embedSrc);this.innerHTML="";this.appendChild(iframe);});}function loadLazyVideos(){var youtube=document.querySelectorAll(".youtube");for(var i=0;i<youtube.length;i++){//setVideoThumbnail(youtube[i]);
3994setClickResponseFunction(youtube[i]);}}loadLazyVideos();/*
3995    =======================
3996    2. Video formatting STOP
3997  *//*
3998    3. Vendor functions START
3999    ======================
4000
4001    There are a number of plugins we are using that
4002    need to be initialised.
4003  */// Fitvids
4004$("#fitvids").fitVids();// WOW js
4005wow=new WOW({mobile:false// default
4006});wow.init();// Cookie Message
4007$(".cookie-message").cookieBar({closeButton:".my-close-button"});// Parrallax headers
4008function headerParallax(){var scrolled=$(window).scrollTop();$(".event-bg").css({transform:"translate3d(0,-"+scrolled*0.4+"px, 0)"});}$(window).scrollTop();$(window).scroll(function(){headerParallax();});// Lazy load images
4009$(".sixteen-nine, .image-contain").lazy({effect:"fadeIn"});// Sticky navigation
4010$("#sticky-nav").scrollToFixed({//marginTop: 50,
4011});/*
4012    =====================
4013    3. Vendor functions STOP
4014  *//*
4015    4. jQuery click handlers START
4016    ==============================
4017  */$("body").on("click",".tour-show-before-leave",function(e){e.preventDefault();$("#tour-show-leave-site").attr("href",$(this).attr("href"));$("#tour-show-leave-site-area").show();$("#tour-show-booking-links-area, .titles.on-tour-listing").hide();});$(".route-activity-title").click(function(){$(this).next(".route-activity-dropdown").slideToggle();});$(".footer-toggle").click(function(e){e.preventDefault();$("body").toggleClass("footer-open");});$(".home-slide-in .toggle-slide").click(function(e){e.preventDefault();$("body").toggleClass("no-scroll");$(".home-slide-in, .home-slide-in-overlay").toggleClass("open");});$('[data-toggle="collapse"]').click(function(e){$(this).siblings('.read-more-content').slideToggle();var expanded=$(this).attr('aria-expanded')==='true'||false;$(this).attr('aria-expanded',!expanded);$(this).next().attr('aria-expanded',!expanded);});$(document).on('click','.video-controls .play-pause-video',function(e){e.preventDefault();var $b=$(e.currentTarget);if($('.home-intro iframe').length){var video=document.querySelector('.home-intro iframe');var player=new Vimeo.Player(video);if($b.hasClass('paused')){player.play();$b.removeClass('paused');}else{player.pause();$b.addClass('paused');}}if($('.home-intro video').length){if($b.hasClass('paused')){$('.home-intro video')[0].play();$b.removeClass('paused');}else{$('.home-intro video')[0].pause();$b.addClass('paused');}}});$(".toggle-important-list").click(function(e){e.preventDefault();$(".important-list").slideToggle();});$(".menu-toggle, .in-page-nav-toggle").click(function(e){e.preventDefault();$("body, html").toggleClass("menu-is-open");});$(window).scroll(function(){if($(window).scrollTop()>100){$(".menu-header").addClass("visible");}else{$(".menu-header").removeClass("visible");}if($(window).scrollTop()>200){$(".book-button-wrap").addClass("visible");}else{$(".book-button-wrap").removeClass("visible");}});/*
4018    ==============================
4019    4. jQuery click handlers STOP
4020  *//*
4021    5. Custom dropdowns START
4022    =========================
4023  */$("body").on("click","li.selector a",function(event){event.stopPropagation();var $options=$(this).next("ul");
4023if($options.hasClass("open")){$options.removeClass("open");return;}$("ul.big-dropdown, ul.small-dropdown").each(function(){if($(this).hasClass("open")){$(this).removeClass("open");}});$options.addClass("open");});$("body").on("click",function(event){$("ul.big-dropdown, ul.small-dropdown").not(this).removeClass("open");});/*
4024    =========================
4025    5. Custom dropdowns STOP
4026  *//*
4027    6. Scroll to anchor on click START
4028    ==================================
4029  */$("a.smooth-scroll").on("click",function(e){e.preventDefault();var target=this.hash;var $target=$(target);$("html, body").stop().animate({scrollTop:$target.offset().top},900,"swing",function(){window.location.hash=target;});});/*
4030    =================================
4031    6. Scroll to anchor on click STOP
4032  *//*
4033    8. Mobile menu toggle START
4034    ============================
4035  */function mobileToggle(){$(".menu-toggle, .in-page-nav-toggle").click(function(e){e.preventDefault();$(".header-nav ul.menu > li").each(function(i,element){$(this).stop().delay(i*150).queue(function(next){$(this).toggleClass("visible");next();});});});}mobileToggle();/*
4036    =======================
4037    8.Mobile menu toggle STOP
4038  *//*
4039    9. Home page Vue application START
4040    ================================
4041    On the home page we have a couple of bits of interactivity. We use
4042    a vue app to mnanage this, which lets us also use components
4043  */if(idExists("home-search")){new Vue({el:"#home-search",data:{query:query}});}/*
4044    ================================
4045    9. Home page Vue application STOP
4046  *//*
4047    11. Booking modal START
4048    ===============================
4049    The booking modal also needs a way to filter results, only
4050    show certain performance types etc. It has its own Vue app
4051    here, and uses a Vue component found in the js/ folder.
4052  */if($("#book-modal").length){bookModalVueInstance=new Vue({el:"#book-modal",data:{instances:[],bslsignlanguage:false,relaxed:false,audiodescribed:false,captioned:false}});}/*
4053    ===============================
4054    11. Booking modal STOP
4055  */// Spektrix
4056if($(".spektrix-frame").length){var eventMethod=window.addEventListener?"addEventListener":"attachEvent";var eventer=window[eventMethod];var messageEvent=eventMethod=="attachEvent"?"onmessage":"message";eventer(messageEvent,function(e){console.log('parent received message!: ',e.data);if(e.data.page_title){message=e.data.page_title.trim();$('h1.visuallyhidden').text(message);}});}if($(".spektrix-frame").hasClass("donation")&&$("#amount").is("input")){$(".spektrix-frame iframe").on('load',function(){// var iframe = document.querySelector("iframe").contentWindow;
4057var iframe=document.getElementById('SpektrixIFrame');// iframe.postMessage($("#amount").val(), "*");
4058iframe.contentWindow.postMessage({donationAmount:$("#amount").val()},'*');});}$(".donation-toggle").click(function(e){e.preventDefault();$(".donation-station-amounts").slideToggle();});$(".donation-amount").click(function(){$(".amount-selected").addClass('remove-selected');});$(".amount-select").click(function(){$(".amount-selected").removeClass('remove-selected');});/*
4059    12. Custom donation styling START
4060    =============================
4061  */var changeDontationAmount=function changeDontationAmount($this,$amountSelects,$input){$amountSelects.removeClass("amount-selected");var $amount=$this.addClass("amount-selected");var amount=$amount.attr("data-amount");$input.val(amount);};$(".donation-station").each(function(){var $donation=$(this);var $input=$donation.find(".donation-amount");var $amountSelects=$donation.find(".amount-select");$amountSelects.click(function(){changeDontationAmount($(this),$amountSelects,$input);});$amountSelects.keypress(function(e){if(e.which==13||e.which==32){e.preventDefault();changeDontationAmount($(this),$amountSelects,$input);}});});/*
4062    =============================
4063    12. Custom donation styling STOP
4064  *//*
4065    13. Footer START
4066    ==================
4067  */$("#footer-tabs-content .footer-tabs-single-content:gt(0)").hide();$("#footer-tabs-nav a").click(function(e){e.preventDefault();var $link=$(this);var $content=$($link.attr("href"));$("#footer-tabs-nav li").removeClass("active");$("#footer-tabs-content .footer-tabs-single-content").hide();$link.closest("li").addClass("active");$content.fadeIn();if(typeof maps!="undefined"){for(var i=0;i<maps.length;i++){google.maps.event.trigger(maps[i],"resize");}}$("html, body").animate({scrollTop:$content.offset().top-100},200);});/*
4068    ==================
4069    13. Footer STOP
4070  */$(".quote-slider").slick({rows:0,responsive:[{breakpoint:767,settings:{arrows:false}}]});
4070$("a[data-slide]").click(function(e){e.preventDefault();var slideno=$(this).data("slide");$(".search-slide").slick("slickGoTo",slideno-1);});$(".gallery-slide-wrap").slick({centerMode:true,slidesToShow:1,variableWidth:true,appendArrows:".arrow-inner",rows:0,responsive:[{breakpoint:767,settings:{slidesToShow:1,arrows:false,variableWidth:false,centerMode:false}}]});$("li.search a").click(function(){//e.preventDefault();
4071$(".header-nav form").toggleClass("visible");$(".header-nav").toggleClass("expand");});//$('.small-dropdown').select2();
4072$(".gallery-slide-wrap").each(function(){// the containers for all your galleries
4073$(this).magnificPopup({delegate:".image-link",// the selector for gallery item
4074type:"image",gallery:{enabled:true},image:{titleSrc:"data-title"// this tells the script which attribute has your caption
4075}});});$(".open-book-modal").magnificPopup({type:"inline",midClick:true,fixedContentPos:true,removalDelay:200,closeOnBgClick:false,callbacks:{beforeOpen:function beforeOpen(){$("#tour-show-leave-site-area").hide();$("#tour-show-booking-links-area").show();this.contentContainer.addClass("modalAnimation");},open:function open(){// console.log('opening modal!');
4076bookModalVueInstance.instances=[1,2,3];$(".mfp-close").wrap('<div class="mfp-close-wrap"></div>');if($("body").hasClass("postid-152")){$('.event-row p.small:contains("Sat 16 Dec 6.00pm")').closest(".instance-wrapper").hide();$('.event-row p.small:contains("Fri 15 Dec 6.00pm")').closest(".instance-wrapper").hide();$('.event-row p.small:contains("Sun 24 Dec 6.00pm")').closest(".instance-wrapper").hide();}},beforeClose:function beforeClose(){this.contentContainer.addClass("fadeOutDown");}}});if(window.location.hash){//Puts hash in variable, and removes the # character
4077var hash=window.location.hash.substring(1);// console.log(hash);
4078if(hash=="book"&&$(".book-modal").length){$(".open-book-modal").magnificPopup("open");}if(hash=="buy-gift-voucher"){$.magnificPopup.open({items:{src:$("#buy-a-gift-voucher-modal"),type:"inline"}});}}$(".open-modal").magnificPopup({type:"inline",fixedContentPos:true,removalDelay:200,//delay removal by X to allow out-animation
4079midClick:true,// Allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source in href.
4080callbacks:{beforeOpen:function beforeOpen(){this.contentContainer.addClass("modalAnimation");},beforeClose:function beforeClose(){this.contentContainer.removeClass("modalAnimationOut");}//mainClass: 'mfp-fade'
4081}});$(".video-modal").click(function(e){e.preventDefault();var self=this;$.magnificPopup.close();setTimeout(function(){$.magnificPopup.open({items:{src:$(self).attr("href"),type:"iframe",midClick:true}});},5);});$(".job-title").click(function(){$(this).closest(".single-job").find(".job-details").slideToggle();});if(location.href.match(/\?Success=/)!=null){$("html, body").animate({scrollTop:$("#newsletter").offset().top-150},1000);$(".newsletter-wrap").hide();$(".signup-success").show();}$(".toggle-newsletter").click(function(e){e.preventDefault();$(this).hide();$("form.newsletter").slideToggle(200);});$(document).on('change input','#donation-slider',function(){$('.step').removeClass('current');$('[data-amount="'+this.value+'"]').addClass('current');});$(document).on('click','[data-donate-amount]',function(){$('[data-submit-donation]').trigger('click');});$(document).on('click','[data-value]',function(){$('#donation-slider').val($(this).data('value'));$('#donation-slider').trigger('change');});$(document).on('click','[data-toggle="modal"]',function(){var el=$(this);var modal=$(el.attr('href'));var video=$('.video-embed',el).clone();var title=$('h3',el.parent().next()).text();$('.modal-title h4',modal).text(title);$.magnificPopup.open({items:{src:modal,type:"inline"},callbacks:{open:function open(){$('.video-source',modal).html(video.html().replace('autoplay=0','autoplay=0'));// Will fire when this exact popup is opened
4082// this - is Magnific Popup object
4083},close:function close(){$('.video-source',$('.video-modal')).html('');}}});return false;});if($('#support-modal').length&&!Cookies.get('support-message')){$.magnificPopup.open({items:{src:$('#support-modal'),type:"inline"}});Cookies.set('support-message',true);}});if(idExists("festival-shows")){new Vue({el:"#festival-shows",data:{query:{search:""},liveSearch:"",accessibleOnly:false,shows:[],loadingShows:true,filtersVisible:false,apiUrl:"/api/festival/"+$('#festival-shows').data('location')},computed:{filtering:function filtering(){// We need to whizz through all the options
4084// and check if they are happening...
4085var checks=["age","audiodescribed","bslsignlanguage","captioned","date","location","relaxed"];for(var c=0;c<checks.length;c++){var check=checks[c];if(this.query.hasOwnProperty(check)&&this.query[check]){return true;}}// Check through the search option as well
4086if(this.query.hasOwnProperty("search")&&this.query.search!=""){return true;}return false;},noShows:function noShows(){return!this.loadingShows&&!this.shows.length;},showRows:function showRows(){if(!this.shows.length){return[];}var i,j,temparray,chunk=3;var rows=[];for(i=0,j=this.shows.length;i<j;i+=chunk){rows.push(this.shows.slice(i,i+chunk));}return rows;}},watch:{accessibleOnly:function accessibleOnly(accessible){console.log("triggered");if(!accessible){var checks=["audiodescribed","bslsignlanguage","captioned","relaxed"];for(var c=0;c<checks.length;c++){Vue.set(this.query,checks[c],false);}}}
4086,query:{handler:function handler(){this.getShows();},deep:true},liveSearch:function liveSearch(){var vm=this;if(this.searchTimeout){clearTimeout(this.searchTimeout);}this.searchTimeout=setTimeout(function(){Vue.set(vm.query,"search",vm.liveSearch);},800);}},methods:{toggleFiltersVisible:function toggleFiltersVisible($event){$event.preventDefault();jQuery("#filter-wrap").slideToggle();},getShows:function getShows(){// if( ! this.query || Object.keys(this.query).length === 0 ) return false;
4087var getURL=this.makeUrlFromObject(this.query);// console.log('getURL', getURL);
4088var self=this;self.loadingShows=true;axios.get(getURL).then(function(response){// console.log('response.data', response.data);
4089self.loadingShows=false;self.shows=response.data;});},updateQuery:function updateQuery(args){this.query=args.query;},makeUrlFromObject:function makeUrlFromObject(query){if(Object.keys(query).length===0){return this.apiUrl;}var queryArray=[];for(var prop in query){if(!query.hasOwnProperty(prop))continue;if(prop=="s"&&query[prop]=="")continue;queryArray.push(prop+"="+query[prop]);}var url=this.apiUrl+"?"+queryArray.join("&");return url;},reset:function reset(){Vue.set(this,"query",{search:""});Vue.set(this,"accessibleOnly",false);}},mounted:function mounted(){this.query=query;var hash=window.location.hash;if("search"in this.query){this.liveSearch=this.query.search;}var checks=["audiodescribed","bslsignlanguage","captioned","relaxed"];for(var c=0;c<checks.length;c++){if(checks[c]in this.query){Vue.set(this,"accessibleOnly",true);}}this.getShows();$(".search-slide").slick({arrows:false,infinite:false});if("search"in this.query){$(".search-slide").slick("slickNext");}}});}jQuery(document).ready(function(){function debounce(fn,delay){var timer=null;return function(){var context=this,args=arguments;clearTimeout(timer);timer=setTimeout(function(){fn.apply(context,args);},delay);};}$(".in-page").each(function(){var speed=200;var distance=200;var $menu=$(this);var offset=$menu.height();// distance above the element to stop scrolling
4090var $list=$menu.find("ul");var $right=$menu.find(".horizontal-menu-chevron-right");var $left=$menu.find(".horizontal-menu-chevron-left");var pagePositions=[];// called on load, makes a list of positions
4091// so that when you scroll passed them their
4092// link becomes active
4093function setPagePositions(){pagePositions=[];$menu.find("li").not(".modal-navigation").each(function(){var $link=$(this);console.log($link);var target=$link.find("a").attr("href");var $target=$(target);pagePositions.push({offset:$target.offset().top-offset,el:$link});});}// called on scroll
4094function setActiveMenuLink(){var windowScrollTop=$(window).scrollTop();if(!pagePositions.length){return;}var $active=pagePositions[0].el;for(var i=0;i<pagePositions.length;i++){var pos=pagePositions[i];if(windowScrollTop>=pos.offset){$active=pos.el;}}$list.find("li").removeClass("active");$active.addClass("active");}$menu.find("li:not(.modal-navigation) a").each(function(){var $link=$(this);var target=$link.attr("href");var $target=$(target);$link.click(function(e){e.preventDefault();$("html, body").animate({scrollTop:$target.offset().top-offset+2},1000);});});function checkWhatToHide(){var listScrollLeft=$list.scrollLeft();var listScrollableWidth=$list[0].scrollWidth;var menuWidth=$menu.width();if(listScrollLeft==0){$left.hide();}else{$left.show();}if(listScrollLeft+menuWidth==listScrollableWidth){$right.hide();}else{$right.show();}}$right.click(function(){$list.animate({scrollLeft:$list.scrollLeft()+distance},speed);});$left.click(function(){$list.animate({scrollLeft:$list.scrollLeft()-distance},speed);});checkWhatToHide();$(window).on("load",function(){// console.log('Page loaded. Set menu positions.');
4095setPagePositions();});$list.on("scroll",debounce(checkWhatToHide,50));$(window).on("resize",debounce(checkWhatToHide,50));$(window).on("resize",debounce(setPagePositions,50));$(window).on("scroll",debounce(setActiveMenuLink,10));setPagePositions();});});if(idExists("shows")){new Vue({el:"#shows",data:{query:{search:""},liveSearch:"",accessibleOnly:false,shows:[],loadingShows:true,filtersVisible:false,apiUrl:"/api/all"},computed:{filtering:function filtering(){// We need to whizz through all the options
4096// and check if they are happening...
4097var checks=["age","audiodescribed","bslsignlanguage","captioned","date","forGrownUps","location","relaxed"];for(var c=0;c<checks.length;c++){var check=checks[c];if(this.query.hasOwnProperty(check)&&this.query[check]){return true;}}// Check through the search option as well
4098if(this.query.hasOwnProperty("search")&&this.query.search!=""){return true;}return false;},noShows:function noShows(){return!this.loadingShows&&!this.shows.length;},showRows:function showRows(){if(!this.shows.length){return[];}var i,j,temparray,chunk=3;var rows=[];for(i=0,j=this.shows.length;i<j;i+=chunk){rows.push(this.shows.slice(i,i+chunk));}return rows;}},watch:{accessibleOnly:function accessibleOnly(accessible){console.log("triggered");if(!accessible){var checks=["audiodescribed","bslsignlanguage","captioned","relaxed"];for(var c=0;c<checks.length;c++){Vue.set(this.query,checks[c],false);}}}
4098,query:{handler:function handler(){this.getShows();},deep:true},liveSearch:function liveSearch(){var vm=this;if(this.searchTimeout){clearTimeout(this.searchTimeout);}this.searchTimeout=setTimeout(function(){Vue.set(vm.query,"search",vm.liveSearch);},800);}},methods:{toggleFiltersVisible:function toggleFiltersVisible($event){$event.preventDefault();jQuery("#filter-wrap").slideToggle();},getShows:function getShows(){// if( ! this.query || Object.keys(this.query).length === 0 ) return false;
4099var getURL=this.makeUrlFromObject(this.query);// console.log('getURL', getURL);
4100var self=this;self.loadingShows=true;axios.get(getURL).then(function(response){// console.log('response.data', response.data);
4101self.loadingShows=false;self.shows=response.data;});},updateQuery:function updateQuery(args){this.query=args.query;},makeUrlFromObject:function makeUrlFromObject(query){if(Object.keys(query).length===0){return this.apiUrl;}var queryArray=[];for(var prop in query){if(!query.hasOwnProperty(prop))continue;if(prop=="s"&&query[prop]=="")continue;queryArray.push(prop+"="+query[prop]);}var url=this.apiUrl+"?"+queryArray.join("&");return url;},reset:function reset(){Vue.set(this,"query",{search:""});Vue.set(this,"accessibleOnly",false);}},mounted:function mounted(){this.query=query;var hash=window.location.hash;if("search"in this.query){this.liveSearch=this.query.search;}var checks=["audiodescribed","bslsignlanguage","captioned","relaxed"];for(var c=0;c<checks.length;c++){if(checks[c]in this.query){Vue.set(this,"accessibleOnly",true);}}this.getShows();$(".search-slide").slick({arrows:false,infinite:false});if("search"in this.query){$(".search-slide").slick("slickNext");}}});}

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.