PageSourceSearch

https://www.catolicoperiodico.com/o/aoc-publication-theme/js/main.…=js&languageId=es_MX&t=1789765106000

js catolicoperiodico.com collected 2026-09-25 01:07:00 UTC 1,186,692 bytes, 16,822 lines download raw bytes

1/*1789765106000*/
vendor: 87,533 bytes, lines 2-3
2/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
3!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:"jQuery"+(t+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==i.call(e))&&(!(t=r(e))||"function"==typeof(n=ue.call(t,"constructor")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n="",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||"HTML")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),"function"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge="[\\x20\\t\\r\\n\\f]",ve=new RegExp("^"+ge+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ge+"+$","g");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;function p(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e}ce.escapeSelector=function(e){return(e+"").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",t="(?:\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",p="\\["+ge+"*("+t+")(?:"+ge+"*([*^$|!~]?=)"+ge+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+t+"))|)"+ge+"*\\]",g=":("+t+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+p+")*)|.*)\\)|)",v=new RegExp(ge+"+","g"),y=new RegExp("^"+ge+"*,"+ge+"*"),m=new RegExp("^"+ge+"*([>+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="<a id='"+S+"' href='' disabled='disabled'></a><select id='"+S+"-\r\\' disabled='disabled'><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(v," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(d,e,t,h,g){var v="nth"!==d.slice(0,3),y="last"!==d.slice(-4),m="of-type"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?"nextSibling":"previousSibling",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u="only"===d&&!s&&"nextSibling"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,"$1"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||"")||I.error("unsupported lang: "+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,"input")&&!!e.checked||fe(e,"option")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,"input")&&"button"===e.type||fe(e,"button")},text:function(e){var t;return fe(e,"input")&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:X(function(){return[0]}),last:X(function(e,t){return[t-1]}),eq:X(function(e,t,n){return[n<0?n+t:n]}),even:X(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:X(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:X(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:X(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve," ")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&"parentNode"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(ve,"$1"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+" "];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&U(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&U(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split("").sort(l).join("")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement("fieldset"))}),ce.find=I,ce.expr[":"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,"string"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,"parentNode")},parentsUntil:function(e,t,n){return d(e,"parentNode",n)},next:function(e){return A(e,"nextSibling")},prev:function(e){return A(e,"previousSibling")},nextAll:function(e){return d(e,"nextSibling")},prevAll:function(e){return d(e,"previousSibling")},nextUntil:function(e,t,n){return d(e,"nextSibling",n)},prevUntil:function(e,t,n){return d(e,"previousSibling",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,"template")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\x20\t\r\n\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[["notify","progress",ce.Callbacks("memory"),ce.Callbacks("memory"),2],["resolve","done",ce.Callbacks("once memory"),ce.Callbacks("once memory"),0,"resolved"],["reject","fail",ce.Callbacks("once memory"),ce.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener("DOMContentLoaded",P),ie.removeEventListener("load",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)["catch"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,"complete"===C.readyState||"loading"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener("DOMContentLoaded",P),ie.addEventListener("load",P));var M=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n))for(s in i=!0,n)M(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},R=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(R,"ms-").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,z=new B,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,U=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(U,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:X.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){z.set(this,n)}):M(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks("once memory").add(function(){_.remove(e,[t+"queue",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=_.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Y=new RegExp("^(?:([+-])=|)("+G+")([a-z%]*)$","i"),Q=["Top","Right","Bottom","Left"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&K(e)&&"none"===ce.css(e,"display")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,"")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?"":"px"),c=e.nodeType&&(ce.cssNumber[t]||"px"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=_.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ne[s]=u)))):"none"!==n&&(l[c]="none",_.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="<textarea>x</textarea>",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="<option></option>",le.option=!!xe.lastChild;var ke={thead:[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,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],"globalEval",!t||_.get(t[n],"globalEval"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,"<select multiple='multiple'>","</select>"]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement("div")),s=(Te.exec(o)||["",""])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),"script"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||"")&&n.push(o)}return f}var De=/^([^.]*)(?:\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(D)||[""]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(D)||[""]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,"events")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,"input")&&He(t,"click"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,"input")&&_.get(t,"click")||fe(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:"focusin",blur:"focusout"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,"handle"),n=ce.event.fix(e);n.type="focusin"===e.type?"focus":"blur",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\s*(?:[^=]|=\s*.checked.)/i,Me=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&"string"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,"script"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||"")&&!_.access(u,"globalEval")&&ce.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):m(u.textContent.replace(Me,""),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,"script")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,"script")).length&&Ee(a,!f&&Se(e,"script")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return M(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return M(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||["",""])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp("^("+G+")(?!px)[a-z%]+$","i"),ze=/^--/,Xe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join("|"),"i");function Ge(e,t,n){var r,i,o,a,s=ze.test(t),u=e.style;return(n=n||Xe(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,"$1")||void 0),""!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement("div"),l=C.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",le.clearCloneStyle="content-box"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement("table"),t=C.createElement("tr"),n=C.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="box-sizing:content-box;border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=["Webkit","Moz","ms"],Je=C.createElement("div").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:"absolute",visibility:"hidden",display:"block"},nt={letterSpacing:"0",fontWeight:"400"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function it(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0,l=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?("content"===n&&(u-=ce.css(e,"padding"+Q[a],!0,i)),"margin"!==n&&(u-=ce.css(e,"border"+Q[a]+"Width",!0,i))):(u+=ce.css(e,"padding"+Q[a],!0,i),"padding"!==n?u+=ce.css(e,"border"+Q[a]+"Width",!0,i):s+=ce.css(e,"border"+Q[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Xe(e),i=(!le.boxSizingReliable()||n)&&"border-box"===ce.css(e,"boxSizing",!1,r),o=i,a=Ge(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a="auto"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===ce.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===ce.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?"border":"content"),o,r,a)+"px"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=ze.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?"":"px")),le.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return ze.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),"normal"===i&&t in nt&&(i=nt[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each(["height","width"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):Ue(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Xe(e),o=!le.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===ce.css(e,"boxSizing",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,"border",!1,i)-.5)),s&&(r=Y.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),ce.each({margin:"",padding:"",border:"Width"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return M(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Xe(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?"":"px")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=Q[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=["*"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,"fxshow");for(r in n.queue||(null==(a=ce._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,"display")),"none"===(c=ce.css(e,"display"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,"display"),re([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===ce.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=_.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,"fxshow"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&"object"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=_.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each(["toggle","show","hide"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt("show"),slideUp:gt("hide"),slideToggle:gt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement("input"),ct=C.createElement("select").appendChild(C.createElement("option")),lt.type="checkbox",le.checkOn=""!==lt.value,le.optSelected=ct.selected,(lt=C.createElement("input")).value="t",lt.type="radio",le.radioValue="t"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return M(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&"radio"===t&&fe(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(" ")}function Ct(e){return e.getAttribute&&e.getAttribute("class")||""}function kt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return M(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,"tabindex");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&" "+Tt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=Tt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=Ct(this))&&_.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":_.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+Tt(Ct(n))+" ").indexOf(t))return!0;return!1}});var St=/\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?"":e+""})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(St,""):null==e?"":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,"value");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,"optgroup"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each(["radio","checkbox"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\?/;ce.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||ce.error("Invalid XML: "+(n?ce.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,"type")?e.type:e,h=ue.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[ce.expando]?e:new ce.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,"events")||Object.create(null))[e.type]&&_.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\[\]$/,Lt=/\r?\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==x(e))i(n,e);else for(t in e)Pt(n+"["+t+"]",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join("&")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,"elements");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(":disabled")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,"\r\n")}}):{name:t.name,value:n.replace(Lt,"\r\n")}}).get()}});var Mt=/%20/g,Rt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\/\//,Bt={},_t={},zt="*/".concat("*"),Xt=C.createElement("a");function Ut(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Xt.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":zt,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"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(_t),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace($t,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(D)||[""],null==v.crossDomain){r=C.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Xt.protocol+"//"+Xt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Rt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Mt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(At.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,"$1"),o=(At.test(f)?"&":"?")+"_="+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader("If-Modified-Since",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader("If-None-Match",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+zt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray("script",v.dataTypes)&&ce.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(ce.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--ce.active||ce.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,"json")},getScript:function(e,t){return ce.get(e,void 0,t,"script")}}),ce.each(["get","post"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&"withCredentials"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),ce.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&ce.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?ce("<div>").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?"":(e+"").replace(en,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},"undefined"==typeof e&&(ie.jQuery=ie.$=ce),ce});
vendor: 10,197 bytes, lines 4-10
4
5/**
6 * Owl Carousel v2.3.4
7 * Copyright 2013-2018 David Deutsch
8 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
9 */
10!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:["busy"],animating:["busy"],dragging:["interacting"]}},a.each(["onResize","onThrottledResize"],a.proxy(function(b,c){this._handlers[c]=a.proxy(this[c],this)},this)),a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a.charAt(0).toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Workers,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}e.Defaults={items:3,loop:!1,center:!1,rewind:!1,checkVisibility:!0,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,fallbackEasing:"swing",slideTransition:"",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",refreshClass:"owl-refresh",loadedClass:"owl-loaded",loadingClass:"owl-loading",rtlClass:"owl-rtl",responsiveClass:"owl-responsive",dragClass:"owl-drag",itemClass:"owl-item",stageClass:"owl-stage",stageOuterClass:"owl-stage-outer",grabClass:"owl-grab"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Type={Event:"event",State:"state"},e.Plugins={},e.Workers=[{filter:["width","settings"],run:function(){this._width=this.$element.width()}},{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){this.$stage.children(".cloned").remove()}},{filter:["width","items","settings"],run:function(a){var b=this.settings.margin||"",c=!this.settings.autoWidth,d=this.settings.rtl,e={width:"auto","margin-left":d?b:"","margin-right":d?"":b};!c&&this.$stage.children().css(e),a.css=e}},{filter:["width","items","settings"],run:function(a){var b=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,c=null,d=this._items.length,e=!this.settings.autoWidth,f=[];for(a.items={merge:!1,width:b};d--;)c=this._mergers[d],c=this.settings.mergeFit&&Math.min(c,this.settings.items)||c,a.items.merge=c>1||a.items.merge,f[d]=e?b*c:this._items[d].width();this._widths=f}},{filter:["items","settings"],run:function(){var b=[],c=this._items,d=this.settings,e=Math.max(2*d.items,4),f=2*Math.ceil(c.length/2),g=d.loop&&c.length?d.rewind?e:Math.max(e,f):0,h="",i="";for(g/=2;g>0;)b.push(this.normalize(b.length/2,!0)),h+=c[b[b.length-1]][0].outerHTML,b.push(this.normalize(c.length-1-(b.length-1)/2,!0)),i=c[b[b.length-1]][0].outerHTML+i,g-=1;this._clones=b,a(h).addClass("cloned").appendTo(this.$stage),a(i).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var a=this.settings.rtl?1:-1,b=this._clones.length+this._items.length,c=-1,d=0,e=0,f=[];++c<b;)d=f[c-1]||0,e=this._widths[this.relative(c)]+this.settings.margin,f.push(d+e*a);this._coordinates=f}},{filter:["width","items","settings"],run:function(){var a=this.settings.stagePadding,b=this._coordinates,c={width:Math.ceil(Math.abs(b[b.length-1]))+2*a,"padding-left":a||"","padding-right":a||""};this.$stage.css(c)}},{filter:["width","items","settings"],run:function(a){var b=this._coordinates.length,c=!this.settings.autoWidth,d=this.$stage.children();if(c&&a.items.merge)for(;b--;)a.css.width=this._widths[this.relative(b)],d.eq(b).css(a.css);else c&&(a.css.width=a.items.width,d.css(a.css))}},{filter:["items"],run:function(){this._coordinates.length<1&&this.$stage.removeAttr("style")}},{filter:["width","items","settings"],run:function(a){a.current=a.current?this.$stage.children().index(a.current):0,a.current=Math.max(this.minimum(),Math.min(this.maximum(),a.current)),this.reset(a.current)}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;c<d;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass("active"),this.$stage.children(".center").removeClass("center"),this.settings.center&&this.$stage.children().eq(this.current()).addClass("center")}}],e.prototype.initializeStage=function(){this.$stage=this.$element.find("."+this.settings.stageClass),this.$stage.length||(this.$element.addClass(this.options.loadingClass),this.$stage=a("<"+this.settings.stageElement+">",{class:this.settings.stageClass}).wrap(a("<div/>",{class:this.settings.stageOuterClass})),this.$element.append(this.$stage.parent()))},e.prototype.initializeItems=function(){var b=this.$element.find(".owl-item");if(b.length)return this._items=b.get().map(function(b){return a(b)}),this._mergers=this._items.map(function(){return 1}),void this.refresh();this.replace(this.$element.children().not(this.$stage.parent())),this.isVisible()?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)},e.prototype.initialize=function(){if(this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")){var a,b,c;a=this.$element.find("img"),b=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,c=this.$element.children(b).width(),a.length&&c<=0&&this.preloadAutoWidthImages(a)}this.initializeStage(),this.initializeItems(),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},e.prototype.isVisible=function(){return!this.settings.checkVisibility||this.$element.is(":visible")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){a<=b&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),"function"==typeof e.stagePadding&&(e.stagePadding=e.stagePadding()),delete e.responsive,e.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+d))):e=a.extend({},this.options),this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}})},e.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};b<c;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={},!this.is("valid")&&this.enter("valid")},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return!!this._items.length&&(this._width!==this.$element.width()&&(!!this.isVisible()&&(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized")))))},e.prototype.registerEventHandlers=function(){a.support.transition&&this.$stage.on(a.support.transition.end+".owl.core",a.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(b,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",function(){return!1})),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",a.proxy(this.onDragEnd,this)))},e.prototype.onDragStart=function(b){var d=null;3!==b.which&&(a.support.transform?(d=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","),d={x:d[16===d.length?12:4],y:d[16===d.length?13:5]}):(d=this.$stage.position(),d={x:this.settings.rtl?d.left+this.$stage.width()-this.width()+this.settings.margin:d.left,y:d.top}),this.is("animating")&&(a.support.transform?this.animate(d.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===b.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=a(b.target),this._drag.stage.start=d,this._drag.stage.current=d,this._drag.pointer=this.pointer(b),a(c).on("mouseup.owl.core touchend.owl.core",a.proxy(this.onDragEnd,this)),a(c).one("mousemove.owl.core touchmove.owl.core",a.proxy(function(b){var d=this.difference(this._drag.pointer,this.pointer(b));a(c).on("mousem
10ove.owl.core touchmove.owl.core",a.proxy(this.onDragMove,this)),Math.abs(d.x)<Math.abs(d.y)&&this.is("valid")||(b.preventDefault(),this.enter("dragging"),this.trigger("drag"))},this)))},e.prototype.onDragMove=function(a){var b=null,c=null,d=null,e=this.difference(this._drag.pointer,this.pointer(a)),f=this.difference(this._drag.stage.start,e);this.is("dragging")&&(a.preventDefault(),this.settings.loop?(b=this.coordinates(this.minimum()),c=this.coordinates(this.maximum()+1)-b,f.x=((f.x-b)%c+c)%c+b):(b=this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum()),c=this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum()),d=this.settings.pullDrag?-1*e.x/5:0,f.x=Math.max(Math.min(f.x,b+d),c+d)),this._drag.stage.current=f,this.animate(f.x))},e.prototype.onDragEnd=function(b){var d=this.difference(this._drag.pointer,this.pointer(b)),e=this._drag.stage.current,f=d.x>0^this.settings.rtl?"left":"right";a(c).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==d.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(e.x,0!==d.x?f:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=f,(Math.abs(d.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",function(){return!1})),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},e.prototype.closest=function(b,c){var e=-1,f=30,g=this.width(),h=this.coordinates();return this.settings.freeDrag||a.each(h,a.proxy(function(a,i){return"left"===c&&b>i-f&&b<i+f?e=a:"right"===c&&b>i-g-f&&b<i-g+f?e=a+1:this.op(b,"<",i)&&this.op(b,">",h[a+1]!==d?h[a+1]:i-g)&&(e="left"===c?a+1:a),-1===e},this)),this.settings.loop||(this.op(b,">",h[this.minimum()])?e=b=this.minimum():this.op(b,"<",h[this.maximum()])&&(e=b=this.maximum())),e},e.prototype.animate=function(b){var c=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),c&&(this.enter("animating"),this.trigger("translate")),a.support.transform3d&&a.support.transition?this.$stage.css({transform:"translate3d("+b+"px,0px,0px)",transition:this.speed()/1e3+"s"+(this.settings.slideTransition?" "+this.settings.slideTransition:"")}):c?this.$stage.animate({left:b+"px"},this.speed(),this.settings.fallbackEasing,a.proxy(this.onTransitionEnd,this)):this.$stage.css({left:b+"px"})},e.prototype.is=function(a){return this._states.current[a]&&this._states.current[a]>0},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(b){return"string"===a.type(b)&&(this._invalidated[b]=!0,this.is("valid")&&this.leave("valid")),a.map(this._invalidated,function(a,b){return b})},e.prototype.reset=function(a){(a=this.normalize(a))!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(a,b){var c=this._items.length,e=b?0:this._clones.length;return!this.isNumeric(a)||c<1?a=d:(a<0||a>=c+e)&&(a=((a-e/2)%c+c)%c+e/2),a},e.prototype.relative=function(a){return a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=this.settings,f=this._coordinates.length;if(e.loop)f=this._clones.length/2+this._items.length-1;else if(e.autoWidth||e.merge){if(b=this._items.length)for(c=this._items[--b].width(),d=this.$element.width();b--&&!((c+=this._items[b].width()+this.settings.margin)>d););f=b+1}else f=e.center?this._items.length-1:this._items.length-e.items;return a&&(f-=this._clones.length/2),Math.max(f,0)},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2==0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c,e=1,f=b-1;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(this.settings.rtl&&(e=-1,f=b+1),c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[f]||0))/2*e):c=this._coordinates[f]||0,c=Math.ceil(c))},e.prototype.duration=function(a,b,c){return 0===c?0:Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(a,b){var c=this.current(),d=null,e=a-this.relative(c),f=(e>0)-(e<0),g=this._items.length,h=this.minimum(),i=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(e)>g/2&&(e+=-1*f*g),a=c+e,(d=((a-h)%g+g)%g+h)!==a&&d-e<=i&&d-e>0&&(c=d-e,a=d,this.reset(c))):this.settings.rewind?(i+=1,a=(a%i+i)%i):a=Math.max(h,Math.min(i,a)),this.speed(this.duration(c,a,b)),this.current(a),this.isVisible()&&this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)}
vendor: 4,770 bytes, line 10
10,e.prototype.onTransitionEnd=function(a){if(a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0)))return!1;this.leave("animating"),this.trigger("translated")},e.prototype.viewport=function(){var d;return this.options.responsiveBaseElement!==b?d=a(this.options.responsiveBaseElement).width():b.innerWidth?d=b.innerWidth:c.documentElement&&c.documentElement.clientWidth?d=c.documentElement.clientWidth:console.warn("Can not detect viewport width."),d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)},this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(b,c){var e=this.relative(this._current);c=c===d?this._items.length:this.normalize(c,!0),b=b instanceof jQuery?b:a(b),this.trigger("add",{content:b,position:c}),b=this.prepare(b),0===this._items.length||c===this._items.length?(0===this._items.length&&this.$stage.append(b),0!==this._items.length&&this._items[c-1].after(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)):(this._items[c].before(b),this._items.splice(c,0,b),this._mergers.splice(c,0,1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)),this._items[e]&&this.reset(this._items[e].index()),this.invalidate("items"),this.trigger("added",{content:b,position:c})},e.prototype.remove=function(a){(a=this.normalize(a,!0))!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.preloadAutoWidthImages=function(b){b.each(a.proxy(function(b,c){this.enter("pre-loading"),c=a(c),a(new Image).one("load",a.proxy(function(a){c.attr("src",a.target.src),c.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()},this)).attr("src",c.attr("src")||c.attr("data-src")||c.attr("data-src-retina"))},this))},e.prototype.destroy=function(){this.$element.off(".owl.core"),this.$stage.off(".owl.core"),a(c).off(".owl.core"),!1!==this.settings.responsive&&(b.clearTimeout(this.resizeTimer),this.off(b,"resize",this._handlers.onThrottledResize));for(var d in this._plugins)this._plugins[d].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.remove(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:a<c;case">":return d?a<c:a>c;case">=":return d?a<=c:a>=c;case"<=":return d?a>=c:a<=c}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d,f,g){var h={item:{count:this._items.length,index:this.current()}},i=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),j=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},h,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(j)}),this.register({type:e.Type.Event,name:b}),this.$element.trigger(j),this.settings&&"function"==typeof this.settings[i]&&this.settings[i].call(this,j)),j},e.prototype.enter=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]===d&&(this._states.current[b]=0),this._states.current[b]++},this))},e.prototype.leave=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]--},this))},e.prototype.register=function(b){if(b.type===e.Type.Event){if(a.event.special[b.name]||(a.event.special[b.name]={}),!a.event.special[b.name].owl){var c=a.event.special[b.name]._default;a.event.special[b.name]._default=function(a){return!c||!c.apply||a.namespace&&-1!==a.namespace.indexOf("owl")
vendor: 1,311 bytes, line 10
10?a.namespace&&a.namespace.indexOf("owl")>-1:c.apply(this,arguments)},a.event.special[b.name].owl=!0}}else b.type===e.Type.State&&(this._states.tags[b.name]?this._states.tags[b.name]=this._states.tags[b.name].concat(b.tags):this._states.tags[b.name]=b.tags,this._states.tags[b.name]=a.grep(this._states.tags[b.name],a.proxy(function(c,d){return a.inArray(c,this._states.tags[b.name])===d},this)))},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.pointer=function(a){var c={x:null,y:null};return a=a.originalEvent||a||b.event,a=a.touches&&a.touches.length?a.touches[0]:a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:a,a.pageX?(c.x=a.pageX,c.y=a.pageY):(c.x=a.clientX,c.y=a.clientY),c},e.prototype.isNumeric=function(a){return!isNaN(parseFloat(a))},e.prototype.difference=function(a,b){return{x:a.x-b.x,y:a.y-b.y}},a.fn.owlCarousel=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),f=d.data("owl.carousel");f||(f=new e(this,"object"==typeof b&&b),d.data("owl.carousel",f),a.each(["next","prev","to","destroy","refresh","replace","add","remove"],function(b,c){f.register({type:e.Type.Event,name:c}
vendor: 14,213 bytes, lines 10-11
10),f.$element.on(c+".owl.carousel.core",a.proxy(function(a){a.namespace&&a.relatedTarget!==this&&(this.suppress([c]),f[c].apply(this,[].slice.call(arguments,1)),this.release([c]))},f))})),"string"==typeof b&&"_"!==b.charAt(0)&&f[b].apply(f,c)})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoRefresh:!0,autoRefreshInterval:500},e.prototype.watch=function(){this._interval||(this._visible=this._core.isVisible(),this._interval=b.setInterval(a.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},e.prototype.refresh=function(){this._core.isVisible()!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},e.prototype.destroy=function(){var a,c;b.clearInterval(this._interval);for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoRefresh=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel resized.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type)){var c=this._core.settings,e=c.center&&Math.ceil(c.items/2)||c.items,f=c.center&&-1*e||0,g=(b.property&&b.property.value!==d?b.property.value:this._core.current())+f,h=this._core.clones().length,i=a.proxy(function(a,b){this.load(b)},this);for(c.lazyLoadEager>0&&(e+=c.lazyLoadEager,c.loop&&(g-=c.lazyLoadEager,e++));f++<e;)this.load(h/2+this._core.relative(g)),h&&a.each(this._core.clones(this._core.relative(g)),i),g++}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={lazyLoad:!1,lazyLoadEager:0},e.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(".owl-lazy");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src")||f.attr("data-srcset");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):f.is("source")?f.one("load.owl.lazy",a.proxy(function(){this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("srcset",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":'url("'+g+'")',opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(c){this._core=c,this._previousHeight=null,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&"position"===a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._intervalId=null;var d=this;a(b).on("load",function(){d._core.settings.autoHeight&&d.update()}),a(b).resize(function(){d._core.settings.autoHeight&&(null!=d._intervalId&&clearTimeout(d._intervalId),d._intervalId=setTimeout(function(){d.update()},250))})};e.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},e.prototype.update=function(){var b=this._core._current,c=b+this._core.settings.items,d=this._core.settings.lazyLoad,e=this._core.$stage.children().toArray().slice(b,c),f=[],g=0;a.each(e,function(b,c){f.push(a(c).height())}),g=Math.max.apply(null,f),g<=1&&d&&this._previousHeight&&(g=this._previousHeight),this._previousHeight=g,this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass)},e.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})},this),"resize.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.video&&this.isInFullScreen()&&a.preventDefault()},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .owl-video-frame").remove()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"===a.property.name&&this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(".owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};e.Defaults={video:!1,videoHeight:!1,videoWidth:!1},e.prototype.fetch=function(a,b){var c=function(){return a.attr("data-vimeo-id")?"vimeo":a.attr("data-vzaar-id")?"vzaar":"youtube"}(),d=a.attr("data-vimeo-id")||a.attr("data-youtube-id")||a.attr("data-vzaar-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else if(d[3].indexOf("vimeo")>-1)c="vimeo";else{if(!(d[3].indexOf("vzaar")>-1))throw new Error("Video URL not supported.");c="vzaar"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},e.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?"width:"+c.width+"px;height:"+c.height+"px;":"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(c){e='<div class="owl-video-play-icon"></div>',d=k.lazyLoad?a("<div/>",{class:"owl-video-tn "+j,srcType:c}):a("<div/>",{class:"owl-video-tn",style:"opacity:1;background-image:url("+c+")"}),b.after(d),b.after(e)};if(b.wrap(a("<div/>",{class:"owl-video-wrapper",style:g})),this._core.settings.lazyLoad&&(i="data-src",j="owl-lazy"),h.length)return l(h.attr(i)),h.remove(),!1;"youtube"===c.type?(f="//img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type?a.ajax({type:"GET",url:"//vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}):"vzaar"===c.type&&a.ajax({type:"GET",url:"//vzaar.com/api/videos/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a.framegrab_url,l(f)}})},e.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},e.prototype.play=function(b){var c,d=a(b.target),e=d.closest("."+this._core.settings.itemClass),f=this._videos[e.attr("data-video")],g=f.width||"100%",h=f.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),e=this._core.items(this._core.relative(e.index())),this._core.reset(e.index()),c=a('<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>'),c.attr("height",h),c.attr("width",g),"youtube"===f.type?c.attr("src","//www.youtube.com/embed/"+f.id+"?autoplay=1&rel=0&v="+f.id):"vimeo"===f.type?c.attr("src","//player.vimeo.com/video/"+f.id+"?autoplay=1"):"vzaar"===f.type&&c.attr("src","//view.vzaar.com/"+f.id+"/player?autoplay=true"),a(c).wrap('<div class="owl-video-frame" />').insertAfter(e.find(".owl-video")),this._playing=e.addClass("owl-video-playing"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass("owl-video-frame")},e.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace&&(this.swapping="translated"==a.type)},this),"translate.owl.carousel":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,
11animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g)),f&&e.one(a.support.animation.end,c).addClass("animated owl-animated-in").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={"changed.owl.carousel":a.proxy(function(a){a.namespace&&"settings"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&"position"===a.property.name&&this._paused&&(this._time=0)},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(a){a.namespace&&this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype._next=function(d){this._call=b.setTimeout(a.proxy(this._next,this,d),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is("interacting")||c.hidden||this._core.next(d||this._core.settings.autoplaySpeed)},e.prototype.read=function(){return(new Date).getTime()-this._time},e.prototype.play=function(c,d){var e;this._core.is("rotating")||this._core.enter("rotating"),c=c||this._core.settings.autoplayTimeout,e=Math.min(this._time%(this._timeout||c),c),this._paused?(this._time=this.read(),this._paused=!1):b.clearTimeout(this._call),this._time+=this.read()%c-e,this._timeout=c,this._call=b.setTimeout(a.proxy(this._next,this,d),c-e)},e.prototype.stop=function(){this._core.is("rotating")&&(this._time=0,this._paused=!0,b.clearTimeout(this._call),this._core.leave("rotating"))},e.prototype.pause=function(){this._core.is("rotating")&&!this._paused&&(this._time=this.read(),this._paused=!0,b.clearTimeout(this._call))},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to}
vendor: 5,569 bytes, line 11
11,this._handlers={"prepared.owl.carousel":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('<div class="'+this._core.settings.dotClass+'">'+a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"</div>")},this),"added.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),"remove.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&this.draw()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:['<span aria-label="Previous">&#x2039;</span>','<span aria-label="Next">&#x203a;</span>'],navSpeed:!1,navElement:'button type="button" role="presentation"',navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a("<div>").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=a("<"+c.navElement+">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a("<"+c.navElement+">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a('<button role="button">').addClass(c.dotClass).append(a("<span>")).prop("outerHTML")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a("<div>").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","button",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d,e;e=this._core.settings;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)"$relative"===b&&e.navContainer?this._controls[b].html(""):this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if("page"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||"page"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;a<e;a++){if(b>=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass("disabled",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass("disabled",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join("")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):b<0&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass("active"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;!d&&this._pages.length?(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c)):a.proxy(this._overrides.to,this._core)(b,c)},a.fn.owlCarousel.Constructor.Plugins.Navigation=e}(
11window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(c){c.namespace&&"URLHash"===this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");if(!c)return;this._hashes[c]=b.content}},this),"changed.owl.carousel":a.proxy(function(c){if(c.namespace&&"position"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+" "+h.join(f+" ")+f).split(" "),function(a,b){if(g[b]!==d)return e=!c||b,!1}),e}function f(a){return e(a,!0)}var g=a("<support>").get(0).style,h="Webkit Moz O ms".split(" "),i={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},j={csstransforms:function(){return!!e("transform")},csstransforms3d:function(){return!!e("perspective")},csstransitions:function(){return!!e("transition")},cssanimations:function(){return!!e("animation")}};j.csstransitions()&&(a.support.transition=new String(f("transition")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f("animation")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f("transform")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document);
12!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('<button type="button" />').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,
vendor: 6,594 bytes, line 12
12sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("<ul />").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i("<li />").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find("li").first().addClass("slick-active")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+":not(.slick-cloned)").addClass("slick-slide"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr("data-slick-index",e).data("originalStyling",i(t).attr("style")||"")}),e.$slider.addClass("slick-slider"),e.$slideTrack=0===e.slideCount?i('<div class="slick-track"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class="slick-track"/>').parent(),e.$list=e.$slideTrack.wrap('<div class="slick-list"/>').parent(),e.$slideTrack.css("opacity",0),!0!==e.options.centerMode&&!0!==e.options.swipeToSlide||(e.options.slidesToScroll=1),i("img[data-lazy]",e.$slider).not("[src]").addClass("slick-loading"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),!0===e.options.draggable&&e.$list.addClass("draggable")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.o
vendor: 3,442 bytes, line 12
12ptions.rows>1){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement("div");for(e=0;e<l.options.rows;e++){var a=document.createElement("div");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if("window"===r.respondTo?n=a:"slider"===r.respondTo?n=d:"min"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(!1===r.originalSettings.mobileFirst?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||!1===l||r.$slider.trigger("breakpoint",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is("a")&&e.preventDefault(),l.is("li")||(l=l.closest("li")),n=r.slideCount%r.options.slidesToScroll!=0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case"previous":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case"next":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case"index":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger("focus");break;default:return}},e.prototype.checkNavigable=function(i){var e,t;if(e=this.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i("li",e.$dots).off("click.slick",e.changeSlide).off("mouseenter.slick",i.proxy(e.interrupt,e,!0)).off("mouseleave.slick",i.proxy(e.interrupt,e,!1)),!0===e.options.accessibility&&e.$dots.off("keydown.slick",e.keyHandler)),e.$slider.off("focus.slick blur.slick"),!0===e.options.arrows&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off("click.slick",e.changeSlide),e.$nextArrow&&e.$nextArrow.off("click.slick",e.changeSlide),!0===e.options.accessibility&&(e.$prevArrow&&e.$prevArrow.off("keydown.slick",e.keyHandler),e.$nextArrow&&e.$nextArrow.off("keydown.slick",e.keyHandler))),e.$list.off("touchstart.slick mousedown.slick",e.swipeHandler),e.$list.off("touchmove.slick mousemove.slick",e.swipeHandler),e.$list.off("touchend.slick mouseup.slick",e.swipeHandler),e.$list.off("touchcancel.slick mouseleave.
12slick",e.swipeHandler),e.$list.off("click.slick",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),!0===e.options.accessibility&&e.$list.off("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().off("click.slick",e.selectHandler),i(window).off("orientationchange.slick.slick-"+e.instanceUid,e.orientationChange),i(window).off("resize.slick.slick-"+e.instanceUid,e.resize),i("[draggable!=true]",e.$slideTrack).off("dragstart",e.preventDefault),i(window).off("load.slick.slick-"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.off("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>1&&((i=e.$slides.children().children()).removeAttr("style"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(".slick-cloned",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){i(this).attr("style",i(this).data("originalStyling"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass("slick-slider"),t.$slider.removeClass("slick-initialized"),t.$slider.removeClass("slick-dotted"),t.unslicked=!0,e||t.$slider.trigger("destroy",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]="",!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&(e.focussed=o.is(":focus"),e.autoPlay())},0)})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){return this.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){return this.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(!1===e.options.infinite?i=e.slideCount:(t=-1*e.options.slidesToScroll,o=-1*e.options.slidesToScroll,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o=this;return t=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(s,n){if(n.offsetLeft-t+i(n).outerWidth()/2>-1*o.swipeLeft)return e=n,!1}),Math.abs(i(e).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:
12parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass("slick-initialized")||(i(t.$slider).addClass("slick-initialized"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger("init",[t]),!0===t.options.accessibility&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function(t){var s=o.indexOf(t);i(this).attr({role:"tabpanel",id:"slick-slide"+e.instanceUid+t,tabindex:-1}),-1!==s&&i(this).attr({"aria-describedby":"slick-slide-control"+e.instanceUid+s})}),e.$dots.attr("role","tablist").find("li").each(function(s){var n=o[s];i(this).attr({role:"presentation"}),i(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+e.instanceUid+s,"aria-controls":"slick-slide"+e.instanceUid+n,"aria-label":s+1+" of "+t,"aria-selected":null,tabindex:"-1"})}).eq(e.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.$slides.eq(s).attr("tabindex",0);e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide),!0===i.options.accessibility&&(i.$prevArrow.on("keydown.slick",i.keyHandler),i.$nextArrow.on("keydown.slick",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;!0===e.options.dots&&(i("li",e.$dots).on("click.slick",{message:"index"},e.changeSlide),!0===e.options.accessibility&&e.$dots.on("keydown.slick",e.keyHandler)),!0===e.options.dots&&!0===e.options.pauseOnDotsHover&&i("li",e.$dots).on("mouseenter.slick",i.proxy(e.interrupt,e,!0)).on("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.on("mouseleave.slick",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on("touchstart.slick mousedown.slick",{action:"start"},e.swipeHandler),e.$list.on("touchmove.slick mousemove.slick",{action:"move"},e.swipeHandler),e.$list.on("touchend.slick mouseup.slick",{action:"end"}
12,e.swipeHandler),e.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},e.swipeHandler),e.$list.on("click.slick",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),!0===e.options.accessibility&&e.$list.on("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),i(window).on("orientationchange.slick.slick-"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on("resize.slick.slick-"+e.instanceUid,i.proxy(e.resize,e)),i("[draggable!=true]",e.$slideTrack).on("dragstart",e.preventDefault),i(window).on("load.slick.slick-"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===i.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===i.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},e.prototype.lazyLoad=function(){function e(e){i("img[data-lazy]",e).each(function(){var e=i(this),t=i(this).attr("data-lazy"),o=i(this).attr("data-srcset"),s=i(this).attr("data-sizes")||n.$slider.attr("data-sizes"),r=document.createElement("img");r.onload=function(){e.animate({opacity:0}
vendor: 5,619 bytes, line 12
12,100,function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).animate({opacity:1},200,function(){e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,e,t])})},r.onerror=function(){e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,e,t])},r.src=t})}var t,o,s,n=this;if(!0===n.options.centerMode?!0===n.options.infinite?s=(o=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(o=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),s=n.options.slidesToShow/2+1+2+n.currentSlide):(o=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,s=Math.ceil(o+n.options.slidesToShow),!0===n.options.fade&&(o>0&&o--,s<=n.slideCount&&s++)),t=n.$slider.find(".slick-slide").slice(o,s),"anticipated"===n.options.lazyLoad)for(var r=o-1,l=s,d=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)r<0&&(r=n.slideCount-1),t=(t=t.add(d.eq(r))).add(d.eq(l)),r--,l++;e(t),n.slideCount<=n.options.slidesToShow?e(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?e(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&e(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;t.unslicked||(t.$slider.trigger("afterChange",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),!0===t.options.accessibility&&(t.initADA(),t.options.focusOnChange&&i(t.$slides.get(t.currentSlide)).attr("tabindex",0).focus()))},e.prototype.prev=e.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i("img[data-lazy]",l.$slider);d.length?(t=d.first(),o=t.attr("data-lazy"),s=t.attr("data-srcset"),n=t.attr("data-sizes")||l.$slider.attr("data-sizes"),(r=document.createElement("img")).onload=function(){s&&(t.attr("srcset",s),n&&t.attr("sizes",n)),t.attr("src",o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger("allImagesLoaded",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:"index",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if("array"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||"window";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass("slick-slide"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger("reInit",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},e.prototype.setCSS=function(i){var e,t,o=this,s={};
12!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled?o.$slideTrack.css(s):(s={},!1===o.cssTransitions?(s[o.animType]="translate("+e+", "+t+")",o.$slideTrack.css(s)):(s[o.animType]="translate3d("+e+", "+t+", 0px)",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,!0===t.options.rtl?i(s).css({position:"relative",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}
12):i(s).css({position:"relative",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css("height",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if("object"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n="multiple"):"string"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],"responsive"===arguments[0]&&"array"===i.type(arguments[1])?n="responsive":void 0!==arguments[1]&&(n="single")),"single"===n)r.options[o]=s;else if("multiple"===n)i.each(o,function(i,e){r.options[i]=e});else if("responsive"===n)for(t in s)if("array"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass("slick-active").attr("aria-hidden","false"):t.slice(o,o+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){i(this).attr("id","")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(".slick-slide")?i(e.target):i(e.target).parents(".slick-slide"),s=parseInt(o.attr("data-slick-index"));s||(s=0),t.slideCount<=t.options.slidesToShow?t.slideHandler(s,!1,!0):t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(!0===a.animating&&!0===a.options.waitForAnimate||!0===a.options.fade&&a.currentSlide===i))if(!1===e&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,!1===a.options.infinite&&!1===a.options.centerMode&&(i<0||i>a.getDotCount()*a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else if(!1===a.options.infinite&&!0===a.options.centerMode&&(i<0||i>a.slideCount-a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else{if(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!=0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+
12o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!=0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger("beforeChange",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=(l=a.getNavTarget()).slick("getSlick")).slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide),a.updateDots(),a.updateArrows(),!0===a.options.fade)return!0!==t?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight();!0!==t?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)}},e.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),(o=Math.round(180*t/Math.PI))<0&&(o=360-Math.abs(o)),o<=45&&o>=0?!1===s.options.rtl?"left":"right":o<=360&&o>=315?!1===s.options.rtl?"left":"right":o>=135&&o<=225?!1===s.options.rtl?"right":"left":!0===s.options.verticalSwiping?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,!1===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return t.touchObject={},!1;void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")}
vendor: 9,057 bytes, lines 12-14
12,e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode?(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode&&(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if("object"==typeof s||void 0===s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),void 0!==t)return t;return o}});
13
14"use strict";!function(t){var i,n;i=function(){function i(i,n){var o;this.options=n,this.$element=t(i),this.didInit=!1,o=this,this.$element.on("click.slickLightbox",this.options.itemSelector,function(i){var n,e;if(i.preventDefault(),n=t(this),n.blur(),"function"!=typeof o.options.shouldOpen||o.options.shouldOpen(o,n,i))return e=o.$element.find(o.options.itemSelector),o.elementIsSlick()&&(e=o.filterOutSlickClones(e),n=o.handlePossibleCloneClick(n,e)),o.init(e.index(n))})}return i.prototype.init=function(t){return this.didInit=!0,this.detectIE(),this.createModal(),this.bindEvents(),this.initSlick(t),this.open()},i.prototype.createModalItems=function(){var i,n,o,e,s,l;return e=this.options.lazyPlaceholder||"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",o=function(t,i,n){return'<div class="slick-lightbox-slick-item">\n  <div class="slick-lightbox-slick-item-inner">\n    <img class="slick-lightbox-slick-img" '+(!0===n?' data-lazy="'+t+'" src="'+e+'" ':' src="'+t+'" ')+" />\n    "+i+"\n  </div>\n</div>"},this.options.images?l=t.map(this.options.images,function(t){return function(i){return o(i,t.options.lazy)}}(this)):(i=this.filterOutSlickClones(this.$element.find(this.options.itemSelector)),s=i.length,n=function(t){return function(i,n){var e,l,r;return l={index:n,length:s},e=t.getElementCaption(i,l),r=t.getElementSrc(i),o(r,e,t.options.lazy)}}(this),l=t.map(i,n)),l},i.prototype.createModal=function(){var i,n;return n=this.createModalItems(),i='<div class="slick-lightbox slick-lightbox-hide-init'+(this.isIE?" slick-lightbox-ie":"")+'" style="background: '+this.options.background+';">\n  <div class="slick-lightbox-inner">\n    <div class="slick-lightbox-slick slick-caption-'+this.options.captionPosition+'">'+n.join("")+"</div>\n  <div>\n<div>",this.$modalElement=t(i),this.$parts={},this.$parts.closeButton=t(this.options.layouts.closeButton),this.$modalElement.find(".slick-lightbox-inner").append(this.$parts.closeButton),t("body").append(this.$modalElement)},i.prototype.initSlick=function(i){var n;return n={initialSlide:i},this.options.lazy&&(n.lazyLoad="ondemand"),null!=this.options.slick?"function"==typeof this.options.slick?this.slick=this.options.slick(this.$modalElement):this.slick=this.$modalElement.find(".slick-lightbox-slick").slick(t.extend({},this.options.slick,n)):this.slick=this.$modalElement.find(".slick-lightbox-slick").slick(n),this.$modalElement.trigger("init.slickLightbox")},i.prototype.open=function(){return this.options.useHistoryApi&&this.writeHistory(),this.$element.trigger("show.slickLightbox"),setTimeout(function(t){return function(){return t.$element.trigger("shown.slickLightbox")}}(this),this.getTransitionDuration()),this.$modalElement.removeClass("slick-lightbox-hide-init")},i.prototype.close=function(){return this.$element.trigger("hide.slickLightbox"),setTimeout(function(t){return function(){return t.$element.trigger("hidden.slickLightbox")}}(this),this.getTransitionDuration()),this.$modalElement.addClass("slick-lightbox-hide"),this.destroy()},i.prototype.bindEvents=function(){var i;if(i=function(t){return function(){var i;return i=t.$modalElement.find(".slick-lightbox-inner").height(),t.$modalElement.find(".slick-lightbox-slick-item").height(i),t.$modalElement.find(".slick-lightbox-slick-img, .slick-lightbox-slick-item-inner").css("max-height",Math.round(t.options.imageMaxHeight*i))}}(this),t(window).on("orientationchange.slickLightbox resize.slickLightbox",i),this.options.useHistoryApi&&t(window).on("popstate.slickLightbox",function(t){return function(){return t.close()}}(this)),this.$modalElement.on("init.slickLightbox",i),this.$modalElement.on("destroy.slickLightbox",function(t){return function(){return t.destroy()}}(this)),this.$element.on("destroy.slickLightbox",function(t){return function(){return t.destroy(!0)}}(this)),this.$parts.closeButton.on("click.slickLightbox touchstart.slickLightbox",function(t){return function(i){return i.preventDefault(),t.close()}}(this)),(this.options.closeOnEscape||this.options.navigateByKeyboard)&&t(document).on("keydown.slickLightbox",function(t){return function(i){var n;if(n=i.keyCode?i.keyCode:i.which,t.options.navigateByKeyboard&&(37===n?t.slideSlick("left"):39===n&&t.slideSlick("right")),t.options.closeOnEscape&&27===n)return t.close()}}(this)),this.options.closeOnBackdropClick)return this.$modalElement.on("click.slickLightbox touchstart.slickLightbox",".slick-lightbox-slick-img",function(t){return t.stopPropagation()}),this.$modalElement.on("click.slickLightbox",".slick-lightbox-slick-item",function(t){return function(i){return i.preventDefault(),t.close()}}(this))},i.prototype.slideSlick=function(t){return"left"===t?this.slick.slick("slickPrev"):this.slick.slick("slickNext")},i.prototype.detectIE=function(){if(this.isIE=!1,/MSIE (\d+\.\d+);/.test(navigator.userAgent)&&new Number(RegExp.$1)<9)return this.isIE=!0},i.prototype.getElementCaption=function(i,n){return this.options.caption?'<span class="slick-lightbox-slick-caption">'+function(){switch(typeof this.options.caption){case"function":return this.options.caption(i,n);case"string":return t(i).data(this.options.caption)}}.call(this)+"</span>":""},i.prototype.getElementSrc=function(i){switch(typeof this.options.src){case"function":return this.options.src(i);case"string":return t(i).attr(this.options.src);default:return i.href}},i.prototype.unbindEvents=function(){return t(window).off(".slickLightbox"),t(document).off(".slickLightbox"),this.$modalElement.off(".slickLightbox")},i.prototype.destroy=function(t){if(null==t&&(t=!1),this.didInit&&(this.unbindEvents(),setTimeout(function(t){return function(){return t.$modalElement.remove()}}(this),this.options.destroyTimeout)),t)return this.$element.off(".slickLightbox"),this.$element.off(".slickLightbox",this.options.itemSelector)},i.prototype.destroyPrevious=function(){return t("body").children(".slick-lightbox").trigger("destroy.slickLightbox")},i.prototype.getTransitionDuration=function(){var t;return this.transitionDuration?this.transitionDuration:(t=this.$modalElement.css("transition-duration"),this.transitionDuration=void 0===t?500:t.indexOf("ms")>-1?parseFloat(t):1e3*parseFloat(t))},i.prototype.writeHistory=function(){return"undefined"!=typeof history&&null!==history&&"function"==typeof history.pushState?history.pushState(null,null,""):void 0},i.prototype.filterOutSlickClones=function(i){return this.elementIsSlick()?i=i.filter(function(){var i;return i=t(this),!i.hasClass("slick-cloned")&&0===i.parents(".slick-cloned").length}):i},i.prototype.handlePossibleCloneClick=function(i,n){var o;return this.elementIsSlick()&&i.closest(".slick-slide").hasClass("slick-cloned")?(o=i.attr("href"),n.filter(function(){return t(this).attr("href")===o}).first()):i},i.prototype.elementIsSlick=function(){return this.$element.hasClass("slick-slider")},i}(),n={background:"rgba(0,0,0,.8)",closeOnEscape:!0,closeOnBackdropClick:!0,destroyTimeout:500,itemSelector:"a",navigateByKeyboard:!0,src:!1,caption:!1,captionPosition:"dynamic",images:!1,slick:{},useHistoryApi:!1,layouts:{closeButton:'<button type="button" class="slick-lightbox-close"></button>'},shouldOpen:null,imageMaxHeight:.9,lazy:!1},t.fn.slickLightbox=function(o){return o=t.extend({},n,o),t(this).each(function(){return this.slickLightbox=new i(this,o)}),this},t.fn.unslickLightbox=function(){return t(this).trigger("destroy.slickLightbox").each(function(){return this.slickLightbox=null})}}(jQuery);
vendor: 10,986 bytes, lines 15-362
15//# sourceMappingURL=slick-lightbox.min.js.map
16// Sticky Plugin v1.0.4 for jQuery
17// =============
18// Author: Anthony Garand
19// Improvements by German M. Bravo (Kronuz) and Ruud Kamphuis (ruudk)
20// Improvements by Leonardo C. Daronco (daronco)
21// Created: 02/14/2011
22// Date: 07/20/2015
23// Website: http://stickyjs.com/
24// Description: Makes an element on the page stick on the screen as you scroll
25//              It will only set the 'top' and 'position' of your element, you
26//              might need to adjust the width in some cases.
27
28(function (factory) {
29    if (typeof define === 'function' && define.amd) {
30        // AMD. Register as an anonymous module.
31        define(['jquery'], factory);
32    } else if (typeof module === 'object' && module.exports) {
33        // Node/CommonJS
34        module.exports = factory(require('jquery'));
35    } else {
36        // Browser globals
37        factory(jQuery);
38    }
39}(function ($) {
40    var slice = Array.prototype.slice; // save ref to original slice()
41    var splice = Array.prototype.splice; // save ref to original slice()
42
43  var defaults = {
44      topSpacing: 0,
45      bottomSpacing: 0,
46      className: 'is-sticky',
47      wrapperClassName: 'sticky-wrapper',
48      center: false,
49      getWidthFrom: '',
50      widthFromWrapper: true, // works only when .getWidthFrom is empty
51      responsiveWidth: false,
52      zIndex: 'auto'
53    },
54    $window = $(window),
55    $document = $(document),
56    sticked = [],
57    windowHeight = $window.height(),
58    scroller = function() {
59      var scrollTop = $window.scrollTop(),
60        documentHeight = $document.height(),
61        dwh = documentHeight - windowHeight,
62        extra = (scrollTop > dwh) ? dwh - scrollTop : 0;
63
64      for (var i = 0, l = sticked.length; i < l; i++) {
65        var s = sticked[i],
66          elementTop = s.stickyWrapper.offset().top,
67          etse = elementTop - s.topSpacing - extra;
68
69        //update height in case of dynamic content
70        s.stickyWrapper.css('height', s.stickyElement.outerHeight());
71
72        if (scrollTop <= etse) {
73          if (s.currentTop !== null) {
74            s.stickyElement
75              .css({
76                'width': '',
77                'position': '',
78                'top': '',
79                'z-index': ''
80              });
81            s.stickyElement.parent().removeClass(s.className);
82            s.stickyElement.trigger('sticky-end', [s]);
83            s.currentTop = null;
84          }
85        }
86        else {
87          var newTop = documentHeight - s.stickyElement.outerHeight()
88            - s.topSpacing - s.bottomSpacing - scrollTop - extra;
89          if (newTop < 0) {
90            newTop = newTop + s.topSpacing;
91          } else {
92            newTop = s.topSpacing;
93          }
94          if (s.currentTop !== newTop) {
95            var newWidth;
96            if (s.getWidthFrom) {
97                newWidth = $(s.getWidthFrom).width() || null;
98            } else if (s.widthFromWrapper) {
99                newWidth = s.stickyWrapper.width();
100            }
101            if (newWidth == null) {
102                newWidth = s.stickyElement.width();
103            }
104            s.stickyElement
105              .css('width', newWidth)
106              .css('position', 'fixed')
107              .css('top', newTop)
108              .css('z-index', s.zIndex);
109
110            s.stickyElement.parent().addClass(s.className);
111
112            if (s.currentTop === null) {
113              s.stickyElement.trigger('sticky-start', [s]);
114            } else {
115              // sticky is started but it have to be repositioned
116              s.stickyElement.trigger('sticky-update', [s]);
117            }
118
119            if (s.currentTop === s.topSpacing && s.currentTop > newTop || s.currentTop === null && newTop < s.topSpacing) {
120              // just reached bottom || just started to stick but bottom is already reached
121              s.stickyElement.trigger('sticky-bottom-reached', [s]);
122            } else if(s.currentTop !== null && newTop === s.topSpacing && s.currentTop < newTop) {
123              // sticky is started && sticked at topSpacing && overflowing from top just finished
124              s.stickyElement.trigger('sticky-bottom-unreached', [s]);
125            }
126
127            s.currentTop = newTop;
128          }
129
130          // Check if sticky has reached end of container and stop sticking
131          var stickyWrapperContainer = s.stickyWrapper.parent();
132          var unstick = (s.stickyElement.offset().top + s.stickyElement.outerHeight() >= stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight()) && (s.stickyElement.offset().top <= s.topSpacing);
133
134          if( unstick ) {
135            s.stickyElement
136              .css('position', 'absolute')
137              .css('top', '')
138              .css('bottom', 0)
139              .css('z-index', '');
140          } else {
141            s.stickyElement
142              .css('position', 'fixed')
143              .css('top', newTop)
144              .css('bottom', '')
145              .css('z-index', s.zIndex);
146          }
147        }
148      }
149    },
150    resizer = function() {
151      windowHeight = $window.height();
152
153      for (var i = 0, l = sticked.length; i < l; i++) {
154        var s = sticked[i];
155        var newWidth = null;
156        if (s.getWidthFrom) {
157            if (s.responsiveWidth) {
158                newWidth = $(s.getWidthFrom).width();
159            }
160        } else if(s.widthFromWrapper) {
161            newWidth = s.stickyWrapper.width();
162        }
163        if (newWidth != null) {
164            s.stickyElement.css('width', newWidth);
165        }
166      }
167    },
168    methods = {
169      init: function(options) {
170        var o = $.extend({}, defaults, options);
171        return this.each(function() {
172          var stickyElement = $(this);
173
174          var stickyId = stickyElement.attr('id');
175          var wrapperId = stickyId ? stickyId + '-' + defaults.wrapperClassName : defaults.wrapperClassName;
176          var wrapper = $('<div></div>')
177            .attr('id', wrapperId)
178            .addClass(o.wrapperClassName);
179
180          stickyElement.wrapAll(wrapper);
181
182          var stickyWrapper = stickyElement.parent();
183
184          if (o.center) {
185            stickyWrapper.css({width:stickyElement.outerWidth(),marginLeft:"auto",marginRight:"auto"});
186          }
187
188          if (stickyElement.css("float") === "right") {
189            stickyElement.css({"float":"none"}).parent().css({"float":"right"});
190          }
191
192          o.stickyElement = stickyElement;
193          o.stickyWrapper = stickyWrapper;
194          o.currentTop    = null;
195
196          sticked.push(o);
197
198          methods.setWrapperHeight(this);
199          methods.setupChangeListeners(this);
200        });
201      },
202
203      setWrapperHeight: function(stickyElement) {
204        var element = $(stickyElement);
205        var stickyWrapper = element.parent();
206        if (stickyWrapper) {
207          stickyWrapper.css('height', element.outerHeight());
208        }
209      },
210
211      setupChangeListeners: function(stickyElement) {
212        if (window.MutationObserver) {
213          var mutationObserver = new window.MutationObserver(function(mutations) {
214            if (mutations[0].addedNodes.length || mutations[0].removedNodes.length) {
215              methods.setWrapperHeight(stickyElement);
216            }
217          });
218          mutationObserver.observe(stickyElement, {subtree: true, childList: true});
219        } else {
220          stickyElement.addEventListener('DOMNodeInserted', function() {
221            methods.setWrapperHeight(stickyElement);
222          }, false);
223          stickyElement.addEventListener('DOMNodeRemoved', function() {
224            methods.setWrapperHeight(stickyElement);
225          }, false);
226        }
227      },
228      update: scroller,
229      unstick: function(options) {
230        return this.each(function() {
231          var that = this;
232          var unstickyElement = $(that);
233
234          var removeIdx = -1;
235          var i = sticked.length;
236          while (i-- > 0) {
237            if (sticked[i].stickyElement.get(0) === that) {
238                splice.call(sticked,i,1);
239                removeIdx = i;
240            }
241          }
242          if(removeIdx !== -1) {
243            unstickyElement.unwrap();
244            unstickyElement
245              .css({
246                'width': '',
247                'position': '',
248                'top': '',
249                'float': '',
250                'z-index': ''
251              })
252            ;
253          }
254        });
255      }
256    };
257
258  // should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):
259  if (window.addEventListener) {
260    window.addEventListener('scroll', scroller, false);
261    window.addEventListener('resize', resizer, false);
262  } else if (window.attachEvent) {
263    window.attachEvent('onscroll', scroller);
264    window.attachEvent('onresize', resizer);
265  }
266
267  $.fn.sticky = function(method) {
268    if (methods[method]) {
269      return methods[method].apply(this, slice.call(arguments, 1));
270    } else if (typeof method === 'object' || !method ) {
271      return methods.init.apply( this, arguments );
272    } else {
273      $.error('Method ' + method + ' does not exist on jQuery.sticky');
274    }
275  };
276
277  $.fn.unstick = function(method) {
278    if (methods[method]) {
279      return methods[method].apply(this, slice.call(arguments, 1));
280    } else if (typeof method === 'object' || !method ) {
281      return methods.unstick.apply( this, arguments );
282    } else {
283      $.error('Method ' + method + ' does not exist on jQuery.sticky');
284    }
285  };
286  $(function() {
287    setTimeout(scroller, 0);
288  });
289}));
290
291/*jslint browser: true*/
292/*jslint jquery: true*/
293
294/*
295 * jQuery Hotkeys Plugin
296 * Copyright 2010, John Resig
297 * Dual licensed under the MIT or GPL Version 2 licenses.
298 *
299 * Based upon the plugin by Tzury Bar Yochay:
300 * https://github.com/tzuryby/jquery.hotkeys
301 *
302 * Original idea by:
303 * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
304 */
305
306/*
307 * One small change is: now keys are passed by object { keys: '...' }
308 * Might be useful, when you want to pass some other data to your handler
309 */
310
311(function(jQuery) {
312
313  jQuery.hotkeys = {
314    version: "0.2.0",
315
316    specialKeys: {
317      8: "backspace",
318      9: "tab",
319      10: "return",
320      13: "return",
321      16: "shift",
322      17: "ctrl",
323      18: "alt",
324      19: "pause",
325      20: "capslock",
326      27: "esc",
327      32: "space",
328      33: "pageup",
329      34: "pagedown",
330      35: "end",
331      36: "home",
332      37: "left",
333      38: "up",
334      39: "right",
335      40: "down",
336      45: "insert",
337      46: "del",
338      59: ";",
339      61: "=",
340      96: "0",
341      97: "1",
342      98: "2",
343      99: "3",
344      100: "4",
345      101: "5",
346      102: "6",
347      103: "7",
348      104: "8",
349      105: "9",
350      106: "*",
351      107: "+",
352      109: "-",
353      110: ".",
354      111: "/",
355      112: "f1",
356      113: "f2",
357      114: "f3",
358      115: "f4",
359      116: "f5",
360      117: "f6",
361      118: "f7",
362      119: "f8",
363      120: "f9",
364      121: "f10",
365      122: "f11",
366      123: "f12",
367      144: "numlock",
368      145: "scroll",
369      173: "-",
370      186: ";",
371      187: "=",
372      188: ",",
373      189: "-",
374      190: ".",
375      191: "/",
376      192: "`",
377      219: "[",
378      220: "\\",
379      221: "]",
380      222: "'"
381    },
382
383    shiftNums: {
384      "`": "~",
385      "1": "!",
386      "2": "@",
387      "3": "#",
388      "4": "$",
389      "5": "%",
390      "6": "^",
391      "7": "&",
392      "8": "*",
393      "9": "(",
394      "0": ")",
395      "-": "_",
396      "=": "+",
397      ";": ": ",
398      "'": "\"",
399      ",": "<",
400      ".": ">",
401      "/": "?",
402      "\\": "|"
403    },
404
405    // excludes: button, checkbox, file, hidden, image, password, radio, reset, search, submit, url
406    textAcceptingInputTypes: [
407      "text", "password", "number", "email", "url", "range", "date", "month", "week", "time", "datetime",
408      "datetime-local", "search", "color", "tel"],
409
410    // default input types not to bind to unless bound directly
411    textInputTypes: /textarea|input|select/i,
412
413    options: {
414      filterInputAcceptingElements: true,
415      filterTextInputs: true,
416      filterContentEditable: true
417    }
418  };
419
420  function keyHandler(handleObj) {
421    if (typeof handleObj.data === "string") {
422      handleObj.data = {
423        keys: handleObj.data
424      };
425    }
426
427    // Only care when a possible input has been specified
428    if (!handleObj.data || !handleObj.data.keys || typeof handleObj.data.keys !== "string") {
429      return;
430    }
431
432    var origHandler = handleObj.handler,
433      keys = handleObj.data.keys.toLowerCase().split(" ");
434
435    handleObj.handler = function(event) {
436      //      Don't fire in text-accepting inputs that we didn't directly bind to
437      if (this !== event.target &&
438        (jQuery.hotkeys.options.filterInputAcceptingElements &&
439          jQuery.hotkeys.textInputTypes.test(event.target.nodeName) ||
440          (jQuery.hotkeys.options.filterContentEditable && jQuery(event.target).attr('contenteditable')) ||
441          (jQuery.hotkeys.options.filterTextInputs &&
442            jQuery.inArray(event.target.type, jQuery.hotkeys.textAcceptingInputTypes) > -1))) {
443        return;
444      }
445
446      var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[event.which],
447        character = String.fromCharCode(event.which).toLowerCase(),
448        modif = "",
449        possible = {};
450
451      jQuery.each(["alt", "ctrl", "shift"], function(index, specialKey) {
452
453        if (event[specialKey + 'Key'] && special !== specialKey) {
454          modif += specialKey + '+';
455        }
456      });
457
458      // metaKey is triggered off ctrlKey erronously
459      if (event.metaKey && !event.ctrlKey && special !== "meta") {
460        modif += "meta+";
461      }
462
463      if (event.metaKey && special !== "meta" && modif.indexOf("alt+ctrl+shift+") > -1) {
464        modif = modif.replace("alt+ctrl+shift+", "hyper+");
465      }
466
467      if (special) {
468        possible[modif + special] = true;
469      }
470      else {
471        possible[modif + character] = true;
472        possible[modif + jQuery.hotkeys.shiftNums[character]] = true;
473
474        // "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
475        if (modif === "shift+") {
476          possible[jQuery.hotkeys.shiftNums[character]] = true;
477        }
478      }
479
480      for (var i = 0, l = keys.length; i < l; i++) {
481        if (possible[keys[i]]) {
482          return origHandler.apply(this, arguments);
483        }
484      }
485    };
486  }
487
488  jQuery.each(["keydown", "keyup", "keypress"], function() {
489    jQuery.event.special[this] = {
490      add: keyHandler
491    };
492  });
493
494})(jQuery || this.jQuery || window.jQuery);
495
496!function(a,b){"function"==typeof define&&define.amd?define([],function(){return a.svg4everybody=b()}):"object"==typeof module&&module.exports?module.exports=b():a.svg4everybody=b()}(this,function(){function a(a,b,c){if(c){var d=document.createDocumentFragment(),e=!b.hasAttribute("viewBox")&&c.getAttribute("viewBox");e&&b.setAttribute("viewBox",e);for(var f=c.cloneNode(!0);f.childNodes.length;)d.appendChild(f.firstChild);a.appendChild(d)}}function b(b){b.onreadystatechange=function(){if(4===b.readyState){var c=b._cachedDocument;c||(c=b._cachedDocument=document.implementation.createHTMLDocument(""),c.body.innerHTML=b.responseText,b._cachedTarget={}),b._embeds.splice(0).map(function(d){var e=b._cachedTarget[d.id];e||(e=b._cachedTarget[d.id]=c.getElementById(d.id)),a(d.parent,d.svg,e)})}},b.onreadystatechange()}function c(c){function e(){for(var c=0;c<o.length;){var h=o[c],i=h.parentNode,j=d(i),k=h.getAttribute("xlink:href")||h.getAttribute("href");if(!k&&g.attributeName&&(k=h.getAttribute(g.attributeName)),j&&k){if(f)if(!g.validate||g.validate(k,j,h)){i.removeChild(h);var l=k.split("#"),q=l.shift(),r=l.join("#");if(q.length){var s=m[q];
vendor: 745 bytes, line 496
496s||(s=m[q]=new XMLHttpRequest,s.open("GET",q),s.send(),s._embeds=[]),s._embeds.push({parent:i,svg:j,id:r}),b(s)}else a(i,j,document.getElementById(r))}else++c,++p}else++c}(!o.length||o.length-p>0)&&n(e,67)}var f,g=Object(c),h=/\bTrident\/[567]\b|\bMSIE (?:9|10)\.0\b/,i=/\bAppleWebKit\/(\d+)\b/,j=/\bEdge\/12\.(\d+)\b/,k=/\bEdge\/.(\d+)\b/,l=window.top!==window.self;f="polyfill"in g?g.polyfill:h.test(navigator.userAgent)||(navigator.userAgent.match(j)||[])[1]<10547||(navigator.userAgent.match(i)||[])[1]<537||k.test(navigator.userAgent)&&l;var m={},n=window.requestAnimationFrame||setTimeout,o=document.getElementsByTagName("use"),p=0;f&&e()}function d(a){for(var b=a;"svg"!==b.nodeName.toLowerCase()&&(b=b.parentNode););return b}return c});
vendor: 60,887 bytes, lines 497-505
497//! moment.js
498//! version : 2.31.0
499//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
500//! license : MIT
501//! momentjs.com
502((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()})(this,function(){var U;function y(){return U.apply(null,arguments)}function g(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function F(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function c(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function L(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;for(var t in e)if(c(e,t))return;return 1}function w(e){return void 0===e}function p(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function V(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function G(e,t){for(var n=[],s=e.length,i=0;i<s;++i)n.push(t(e[i],i));return n}function k(e,t){for(var n in t)c(t,n)&&(e[n]=t[n]);return c(t,"toString")&&(e.toString=t.toString),c(t,"valueOf")&&(e.valueOf=t.valueOf),e}function l(e,t,n,s){return Lt(e,t,n,s,!0).utc()}function M(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidOffset:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function E(e){var t,n,s=e._d&&!isNaN(e._d.getTime());return s&&(t=M(e),n=I.call(t.parsedDateParts,function(e){return null!=e}),s=t.overflow<0&&!t.empty&&!t.invalidEra&&!t.invalidMonth&&!t.invalidOffset&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||(t.meridiem,n)),e._strict)&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e)?s:(e._isValid=s,e._isValid)}function A(e){var t=l(NaN);return null!=e?k(M(t),e):M(t).userInvalidated=!0,t}var I=Array.prototype.some||function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1},j=y.momentProperties=[],z=!1;function Z(e,t){var n,s,i,r=j.length;if(w(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),w(t._i)||(e._i=t._i),w(t._f)||(e._f=t._f),w(t._l)||(e._l=t._l),w(t._strict)||(e._strict=t._strict),w(t._tzm)||(e._tzm=t._tzm),w(t._isUTC)||(e._isUTC=t._isUTC),w(t._offset)||(e._offset=t._offset),w(t._pf)||(e._pf=M(t)),w(t._locale)||(e._locale=t._locale),0<r)for(n=0;n<r;n++)w(i=t[s=j[n]])||(e[s]=i);return e}function $(e){Z(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===z&&(z=!0,y.updateOffset(this),z=!1)}function D(e){return e instanceof $||null!=e&&null!=e._isAMomentObject}function q(e){!1===y.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function e(r,a){var o=!0;return k(function(){if(null!=y.deprecationHandler&&y.deprecationHandler(null,r),o){for(var e,t,n=[],s=arguments.length,i=0;i<s;i++){if(e="","object"==typeof arguments[i]){for(t in e+="\n["+i+"] ",arguments[0])c(arguments[0],t)&&(e+=t+": "+arguments[0][t]+", ");e=e.slice(0,-2)}else e=arguments[i];n.push(e)}q(r+"\nArguments: "+Array.prototype.slice.call(n).join("")+"\n"+(new Error).stack),o=!1}return a.apply(this,arguments)},a)}var B={};function J(e,t){null!=y.deprecationHandler&&y.deprecationHandler(e,t),B[e]||(q(t+"\n"+(new Error).stack),B[e]=!0)}function h(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}y.suppressDeprecationWarnings=!1,y.deprecationHandler=null;var Q={D:"date",dates:"date",date:"date",d:"day",days:"day",day:"day",e:"weekday",weekdays:"weekday",weekday:"weekday",E:"isoWeekday",isoweekdays:"isoWeekday",isoweekday:"isoWeekday",DDD:"dayOfYear",dayofyears:"dayOfYear",dayofyear:"dayOfYear",h:"hour",hours:"hour",hour:"hour",ms:"millisecond",milliseconds:"millisecond",millisecond:"millisecond",m:"minute",minutes:"minute",minute:"minute",M:"month",months:"month",month:"month",Q:"quarter",quarters:"quarter",quarter:"quarter",s:"second",seconds:"second",second:"second",gg:"weekYear",weekyears:"weekYear",weekyear:"weekYear",GG:"isoWeekYear",isoweekyears:"isoWeekYear",isoweekyear:"isoWeekYear",w:"week",weeks:"week",week:"week",W:"isoWeek",isoweeks:"isoWeek",isoweek:"isoWeek",y:"year",years:"year",year:"year"};function a(e){return"string"==typeof e?Q[e]||Q[e.toLowerCase()]:void 0}function X(e){var t,n,s={};for(n in e)c(e,n)&&(t=a(n))&&(s[t]=e[n]);return s}var K={date:9,day:11,weekday:11,isoWeekday:11,dayOfYear:4,hour:13,millisecond:16,minute:14,month:8,quarter:7,second:15,weekYear:1,isoWeekYear:1,week:5,isoWeek:5,year:1};function r(e,t,n){var s=""+Math.abs(e);return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,t-s.length)).toString().substr(1)+s}var ee=/(\[[^\[]*\])|(\\e)|(\\)?(eHHmm|[Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,te=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,ne={},se={};function s(e,t,n,s){var i="string"==typeof s?function(){return this[s]()}:s;e&&(se[e]=i),t&&(se[t[0]]=function(){return r(i.apply(this,arguments),t[1],t[2])}),n&&(se[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function ie(e,t){var n;return e.isValid()?(n="$"+(t=re(t,e.localeData())),c(ne,n)||(ne[n]=(s=>{for(var e,i=s.match(ee),t=0,r=i.length;t<r;t++)se[i[t]]?i[t]=se[i[t]]:i[t]=(e=i[t]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var t="",n=0;n<r;n++)t+=h(i[n])?i[n].call(e,s):i[n];return t}})(t)),ne[n](e)):e.localeData().invalidDate()}function re(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(te.lastIndex=0;0<=n&&te.test(e);)e=e.replace(te,s),te.lastIndex=0,--n;return e}var ae=/\d/,t=/\d\d/,oe=/\d{3}/,ue=/\d{4}/,le=/[+-]?\d{6}/,n=/\d\d?/,de=/\d\d\d\d?/,he=/\d\d\d\d\d\d?/,ce=/\d{1,3}/,fe=/\d{1,4}/,me=/[+-]?\d{1,6}/,_e=/\d+/,ye=/[+-]?\d+/,ge=/Z|[+-]\d\d:?\d\d/gi,we=/Z|[+-]\d\d(?::?\d\d)?/gi,i=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,o=/^[1-9]\d?/,u=/^([1-9]\d|\d)/;function d(e,n,s){ke[e]=h(n)?n:function(e,t){return e&&s?s:n}}function pe(e,t){return c(ke,e)?ke[e](t._strict,t._locale):new RegExp(f(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function f(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function m(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function _(e){var e=+e,t=0;return t=0!=e&&isFinite(e)?m(e):t}var ke={},Me={};function v(e,n){var t,s,i=n;for("string"==typeof e&&(e=[e]),p(n)&&(i=function(e,t){t[n]=_(e)}),s=e.length,t=0;t<s;t++)Me[e[t]]=i}function De(e,i){v(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}function ve(e){return e%4==0&&e%100!=0||e%400==0}var S=0,Y=1,O=2,b=3,x=4,T=5,Se=6,Ye=7,Oe=8;function be(e){return ve(e)?366:365}s("Y",0,0,function(){var e=this.year();return e<=9999?r(e,4):"+"+e}),s(0,["YY",2],0,function(){return this.year()%100}),s(0,["YYYY",4],0,"year"),s(0,["YYYYY",5],0,"year"),s(0,["YYYYYY",6,!0],0,"year"),d("Y",ye),d("YY",n,t),d("YYYY",fe,ue),d("YYYYY",me,le),d("YYYYYY",me,le),v(["YYYYY","YYYYYY"],S),v("YYYY",function(e,t){t[S]=2===e.length?y.parseTwoDigitYear(e):_(e)}),v("YY",function(e,t){t[S]=y.parseTwoDigitYear(e)}),v("Y",function(e,t){t[S]=parseInt(e,10)}),y.parseTwoDigitYear=function(e){return _(e)+(68<_(e)?1900:2e3)};var N,xe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(Pe(this,t,e),y.updateOffset(this,n),this):Ne(this,t)}}function Ne(e,t){if(!e.isValid())return NaN;var n=e._d,s=e._isUTC;switch(t){case"Milliseconds":return s?n.getUTCMilliseconds():n.getMilliseconds();case"Seconds":return s?n.getUTCSeconds():n.getSeconds();case"Minutes":return s?n.getUTCMinutes():n.getMinutes();case"Hours":return s?n.getUTCHours():n.getHours();case"Date":return s?n.getUTCDate():n.getDate();case"Day":return s?n.getUTCDay():n.getDay();case"Month":return s?n.getUTCMonth():n.getMonth();case"FullYear":return s?n.getUTCFullYear():n.getFullYear();default:return NaN}}function Pe(e,t,n){var s,i,r;if(e.isValid()&&!isNaN(n)){switch(s=e._d,i=e._isUTC,t){case"Milliseconds":return i?s.setUTCMilliseconds(n):s.setMilliseconds(n);case"Seconds":return i?s.setUTCSeconds(n):s.setSeconds(n);case"Minutes":return i?s.setUTCMinutes(n):s.setMinutes(n);case"Hours":return i?s.setUTCHours(n):s.setHours(n);case"Date":return i?s.setUTCDate(n):s.setDate(n);case"FullYear":break;default:return}t=n,r=e.month(),e=29!==(e=e.date())||1!==r||ve(t)?e:28,i?s.setUTCFullYear(t,r,e):s.setFullYear(t,r,e)}}function We(e,t){var n;return isNaN(e)||isNaN(t)?NaN:(n=(t%(n=12)+n)%n,e+=(t-n)/12,1==n?ve(e)?29:28:31-n%7%2)}N=Array.prototype.indexOf||function(e){for(var t=0;t<this.length;++t)if(this[t]===e)return t;return-1},s("M",["MM",2],"Mo",function(){return this.month()+1}),s("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),s("MMMM",0,0,function(e){return this.localeData().months(this,e)}),d("M",n,o),d("MM",n,t),d("MMM",function(e,t){return t.monthsShortRegex(e)}),d("MMMM",function(e,t){return t.monthsRegex(e)}),v(["M","MM"],function(e,t){t[Y]=_(e)-1}),v(["MMM","MMMM"],function(e,t,n,s){s=n._locale.monthsParse(e,s,n._strict);null!=s?t[Y]=s:M(n).invalidMonth=e});var Re="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),Ce="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),He=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Ue=i,Fe=i,Le=["monthsParse","longMonthsParse","shortMonthsParse","monthsRegex","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex"];function Ve(e,t){if(e.isValid()){if("string"==typeof t)if(/^\d+$/.test(t))t=_(t);else if(!p(t=e.localeData().monthsParse(t)))return;var n=(n=e.date())<29?n:Math.min(n,We(e.year(),t));e._isUTC?e._d.setUTCMonth(t,n):e._d.setMonth(t,n)}}function Ge(e){return null!=e?(Ve(this,e),y.updateOffset(this,!0),this):Ne(this,"Month")}function Ee(){function e(e,t){return t.length-e.length}for(var t,n,s=[],i=[],r=[],a=0;a<12;a++)n=l([2e3,a]),t=f(this.monthsShort(n,"")),n=f(this.months(n,"")),s.push(t),i.push(n),r.push(n),r.push(t);s.sort(e),i.sort(e),r.sort(e),this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ae(e,t){return e.slice(t,7).concat(e.slice(0,t))}s("d",0,"do","day"),s("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),s("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),s("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),s("e",0,0,"weekday"),s("E",0,0,"isoWeekday"),s("eHHmm",0,0,function(){return""+this.weekday()+r(this.hours(),2)+r(this.minutes(),2)}),d("d",n),d("e",n),d("E",n),d("eHHmm",he),d("dd",function(e,t){return t.weekdaysMinRegex(e)}),d("ddd",function(e,t){return t.weekdaysShortRegex(e)}),d("dddd",function(e,t){return t.weekdaysRegex(e)}),De(["dd","ddd","dddd"],function(e,t,n,s){s=n._locale.weekdaysParse(e,s,n._strict);null!=s?t.d=s:M(n).invalidWeekday=e}),De(["d","e","E"],function(e,t,n,s){t[s]=_(e)}),De("eHHmm",function(e,t,n){var s=e.length-4;t.e=_(e.substr(0,s)),n._a[b]=_(e.substr(s,2)),n._a[x]=_(e.substr(2+s))});var Ie="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),je="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Ze=i,$e=i,qe=i,Be=["weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","weekdaysRegex","weekdaysShortRegex","weekdaysMinRegex","weekdaysStrictRegex","weekdaysShortStrictRegex","weekdaysMinStrictRegex"];function Je(){function e(e,t){return t.length-e.length}for(var t,n,s,i=[],r=[],a=[],o=[],u=0;u<7;u++)s=l([2e3,1]).day(u),t=f(this.weekdaysMin(s,"")),n=f(this.weekdaysShort(s,"")),s=f(this.weekdays(s,"")),i.push(t),r.push(n),a.push(s),o.push(t),o.push(n),o.push(s);i.sort(e),r.sort(e),a.sort(e),o.sort(e),this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+i.join("|")+")","i")}function Qe(e,t){var n,s=k({},e);for(n in t)c(t,n)&&(F(e[n])&&F(t[n])?(s[n]={},k(s[n],e[n]),k(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)c(e,n)&&!c(t,n)&&F(e[n])&&(s[n]=k({},s[n]));return s}function Xe(e){null!=e&&this.set(e)}var Ke=Object.keys||function(e){var t,n=[];for(t in e)c(e,t)&&n.push(t);return n};function et(e,t,n,s){var i=this._relativeTime[n];return h(i)?i(e,t,n,s):i.replace(/%d/i,e)}function tt(e,t){e=this._relativeTime[0<e?"future":"past"];return h(e)?e(t):e.replace(/%s/i,t)}function nt(e,t,n,s,i,r,a){var o;return e<100&&0<=e?(o=new Date(e+400,t,n,s,i,r,a),isFinite(o.getFullYear())&&o.setFullYear(e)):o=new Date(e,t,n,s,i,r,a),o}function st(e){var t;return e<100&&0<=e?((t=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,t)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function it(e,t,n){n=7+t-n;return n-(7+st(e,0,n).getUTCDay()-t)%7-1}function rt(e,t,n,s,i){var r,t=1+7*(t-1)+(7+n-s)%7+it(e,s,i),n=t<=0?be(r=e-1)+t:t>be(e)?(r=e+1,t-be(e)):(r=e,t);return{year:r,dayOfYear:n}}function at(e,t,n,s){var i,r,a=it(e,n,s),t=Math.floor((t-a-1)/7)+1;return t<1?i=t+P(r=e-1,n,s):t>P(e,n,s)?(i=t-P(e,n,s),r=e+1):(r=e,i=t),{week:i,year:r}}function ot(e,t,n){return at(e.year(),e.dayOfYear(),t,n)}function ut(e,t,n,s,i){return at(e,Math.round((st(e,t,n)-st(e,0,1))/864e5)+1,s,i)}function P(e,t,n){var s=it(e,t,n),t=it(e+1,t,n);return(be(e)-s+t)/7}s("w",["ww",2],"wo","week"),s("W",["WW",2],"Wo","isoWeek"),d("w",n,o),d("ww",n,t),d("W",n,o),d("WW",n,t),De(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=_(e)});function lt(){return this.hours()%12||12}function dt(e,t){s(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function ht(e,t){return t._meridiemParse}s("H",["HH",2],0,"hour"),s("h",["hh",2],0,lt),s("k",["kk",2],0,function(){return this.hours()||24}),s("hmm",0,0,function(){return""+lt.apply(this)+r(this.minutes(),2)}),s("hmmss",0,0,function(){return""+lt.apply(this)+r(this.minutes(),2)+r(this.seconds(),2)}),s("Hmm",0,0,function(){return""+this.hours()+r(this.minutes(),2)}),s("Hmmss",0,0,function(){return""+this.hours()+r(this.minutes(),2)+r(this.seconds(),2)}),dt("a",!0),dt("A",!1),d("a",ht),d("A",ht),d("H",n,u),d("h",n,o),d("k",n,o),d("HH",n,t),d("hh",n,t),d("kk",n,t),d("hmm",de),d("hmmss",he),d("Hmm",de),d("Hmmss",he),v(["H","HH"],b),v(["k","kk"],function(e,t,n){e=_(e);t[b]=24===e?0:e}),v(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),v(["h","hh"],function(e,t,n){t[b]=_(e),M(n).bigHour=!0}),v("hmm",function(e,t,n){var s=e.length-2;t[b]=_(e.substr(0,s)),t[x]=_(e.substr(s)),M(n).bigHour=!0}),v("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[b]=_(e.substr(0,s)),t[x]=_(e.substr(s,2)),t[T]=_(e.substr(i)),M(n).bigHour=!0}),v("Hmm",function(e,t,n){var s=e.length-2;t[b]=_(e.substr(0,s)),t[x]=_(e.substr(s))}),v("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[b]=_(e.substr(0,s)),t[x]=_(e.substr(s,2)),t[T]=_(e.substr(i))});i=Te("Hours",!0);var ct,ft={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Re,monthsShort:Ce,week:{dow:0,doy:6},weekdays:Ie,weekdaysMin:ze,weekdaysShort:je,meridiemParse:/[ap]\.?m?\.?/i},W={},mt={};function _t(e){return e&&e.toLowerCase().replace("_","-")}function yt(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=_t(e[r]).split("-")).length,n=(n=_t(e[r+1]))?n.split("-"):null;0<t;){if(s=gt(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&((e,t)=>{for(var n=Math.min(e.length,t.length),s=0;s<n;s+=1)if(e[s]!==t[s])return s;return n})(i,n)>=t-1)break;t--}r++}return ct}function gt(t){var e,n;if(c(W,t))return W[t];if(t=_t(t),c(W,t))return W[t];if("undefined"!=typeof module&&module&&module.exports&&"string"==typeof(n=t)&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(n))try{e=ct._abbr,require("./locale/"+t),wt(e)}catch(e){W[t]=null}return c(W,t)?W[t]:void 0}function wt(e,t){return e&&((t=w(t)?kt(e):pt(e,t))?ct=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ct._abbr}function pt(e,t){if(null===t)return delete W[e],null;var n,s=ft;if(t.abbr=e,null!=W[e])J("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=W[e]._config;else if(null!=t.parentLocale)if(null!=W[t.parentLocale])s=W[t.parentLocale]._config;else{if(null==(n=gt(t.parentLocale)))return mt[t.parentLocale]||(mt[t.parentLocale]=[]),mt[t.parentLocale].push({name:e,config:t}),null;s=n._config}return W[e]=new Xe(Qe(s,t)),mt[e]&&mt[e].forEach(function(e){pt(e.name,e.config)}),wt(e),W[e]}function kt(e){var t;if(!(e=e&&e._locale&&e._locale._abbr?e._locale._abbr:e))return ct;if(!g(e)){if(t=gt(e))return t;e=[e]}return yt(e)}function Mt(e){var t=e._a;return t&&-2===M(e).overflow&&(t=t[Y]<0||11<t[Y]?Y:t[O]<1||t[O]>We(t[S],t[Y])?O:t[b]<0||24<t[b]||24===t[b]&&(0!==t[x]||0!==t[T]||0!==t[Se])?b:t[x]<0||59<t[x]?x:t[T]<0||59<t[T]?T:t[Se]<0||999<t[Se]?Se:-1,M(e)._overflowDayOfYear&&(t<S||O<t)&&(t=O),M(e)._overflowWeeks&&-1===t&&(t=Ye),M(e)._overflowWeekday&&-1===t&&(t=Oe),M(e).overflow=t),e}var Dt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,vt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,St=/Z|[+-]\d\d(?::?\d\d)?/,Yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Ot=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],bt=/^\/?Date\((-?\d+)/i,xt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,Tt={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Nt(e){var t,n,s,i,r,a,o=e._i,u=Dt.exec(o)||vt.exec(o),o=Yt.length,l=Ot.length;if(u){for(M(e).iso=!0,t=0,n=o;t<n;t++)if(Yt[t][1].exec(u[1])){i=Yt[t][0],s=!1!==Yt[t][2];break}if(null==i)e._isValid=!1;else{if(u[3]){for(t=0,n=l;t<n;t++)if(Ot[t][1].exec(u[3])){r=(u[2]||" ")+Ot[t][0];break}if(null==r)return void(e._isValid=!1)}if(s||null==r){if(u[4]){if(!St.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),Ut(e)}else e._isValid=!1}}else e._isValid=!1}function Pt(e,t,n,s,i,r){e=[(e=>(e=parseInt(e,10))<=49?2e3+e:e<=999?1900+e:e)(e),Ce.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&e.push(parseInt(r,10)),e}function Wt(e){var t,n,s=xt.exec(e._i.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));s?(t=Pt(s[4],s[3],s[2],s[5],s[6],s[7]),((e,t,n)=>{if(!e||je.indexOf(e)===new Date(t[0],t[1],t[2]).getDay())return 1;M(n).weekdayMismatch=!0,n._isValid=!1})(s[1],t,e)&&(e._a=t,e._tzm=(t=s[8],n=s[9],s=s[10],t?Tt[t]:n?0:60*(((t=parseInt(s,10))-(n=t%100))/100)+n),e._d=st.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),M(e).rfc2822=!0)):e._isValid=!1}function Rt(e,t,n){return null!=e?e:null!=t?t:n}function Ct(e,t,n){var s=Object.prototype.hasOwnProperty.call(e,"_isDefaultDatePartsForWeek"),i=e._isDefaultDatePartsForWeek;e._isDefaultDatePartsForWeek=!!n;try{return y._getDefaultDateParts(e,t,n)}finally{s?e._isDefaultDatePartsForWeek=i:delete e._isDefaultDatePartsForWeek}}function Ht(e){var t,n,s,i,r,a,o,u,l,d,h,c,f=[];if(!e._d){for(null!=e._a[S]&&null!=e._a[Y]&&null!=e._a[O]||(n=Ct(s=e,s=(s=s._defaultDatePartsNow)?(s.hasValue||(s.value=y.now(),s.hasValue=!0),s.value):y.now())),e._w&&null==e._a[O]&&null==e._a[Y]&&(r=Ct(i=e,s,!0),null!=(a=i._w).GG||null!=a.W||null!=a.E?(d=1,h=4,o=Rt(a.GG,i._a[S],ut(r[S],r[Y],r[O],1,4).year),u=Rt(a.W,1),((l=Rt(a.E,1))<1||7<l)&&(c=!0)):(d=i._locale._week.dow,h=i._locale._week.doy,r=ut(r[S],r[Y],r[O],d,h),o=Rt(a.gg,i._a[S],r.year),u=Rt(a.w,r.week),null!=a.d?((l=a.d)<0||6<l)&&(c=!0):null!=a.e?(l=a.e+d,(a.e<0||6<a.e)&&(c=!0)):l=d),u<1||u>P(o,d,h)?M(i)._overflowWeeks=!0:null!=c?M(i)._overflowWeekday=!0:(r=rt(o,u,l,d,h),i._a[S]=r.year,i._dayOfYear=r.dayOfYear)),null!=e._dayOfYear&&(a=(null!=e._a[S]?e._a:n)[S],(e._dayOfYear>be(a)||0===e._dayOfYear)&&(M(e)._overflowDayOfYear=!0),c=st(a,0,e._dayOfYear),e._a[Y]=c.getUTCMonth(),e._a[O]=c.getUTCDate()),o=null==e._a[S]||null==e._a[Y]||null==e._a[O],t=0;t<3&&null==e._a[t];++t)e._a[t]=f[t]=n[t];for(;t<7;t++)e._a[t]=f[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[b]&&0===e._a[x]&&0===e._a[T]&&0===e._a[Se]&&(e._nextDay=!0,e._a[b]=0),e._d=(e._useUTC?st:nt).apply(null,f),u=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[b]=24),e._w&&void 0!==e._w.d&&!o&&e._w.d!==u&&(M(e).weekdayMismatch=!0)}}function Ut(e){if(e._f===y.ISO_8601)Nt(e);else if(e._f===y.RFC_2822)Wt(e);else{e._a=[],M(e).empty=!0;for(var t,n,s,i,r,a=""+e._i,o=a.length,u=0,l=re(e._f,e._locale).match(ee)||[],d=l.length,h=0;h<d;h++)n=l[h],(t=(a.match(pe(n,e))||[])[0])&&(0<(s=a.substr(0,a.indexOf(t))).length&&M(e).unusedInput.push(s),a=a.slice(a.indexOf(t)+t.length),u+=t.length),se[n]?(t?M(e).empty=!1:M(e).unusedTokens.push(n),s=n,r=e,null!=(i=t)&&c(Me,s)&&Me[s](i,r._a,r,s)):e._strict&&!t&&M(e).unusedTokens.push(n);M(e).charsLeftOver=o-u,0<a.length&&M(e).unusedInput.push(a),e._a[b]<=12&&!0===M(e).bigHour&&0<e._a[b]&&(M(e).bigHour=void 0),M(e).parsedDateParts=e._a.slice(0),M(e).meridiem=e._meridiem,e._a[b]=((e,t,n)=>null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((e=e.isPM(n))&&t<12&&(t+=12),t=e||12!==t?t:0):t)(e._locale,e._a[b],e._meridiem),null!==(o=M(e).era)&&(e._a[S]=e._locale.erasConvertYear(o,e._a[S])),Ht(e),Mt(e)}}function Ft(e){var t,n,s,i=e._i,r=e._f;if(e._locale=e._locale||kt(e._l),null===i||void 0===r&&""===i)return A({nullInput:!0});if("string"==typeof i&&(e._i=i=e._locale.preparse(i)),D(i))return new $(Mt(i));if(V(i))e._d=i;else if(g(r)){var a,o,u,l,d,h,c=e,f=!1,m={},_=c._f.length;if(0===_)M(c).invalidFormat=!0,c._d=new Date(NaN);else{for(l=0;l<_;l++)d=0,h=!1,a=Z({},c),null!=c._useUTC&&(a._useUTC=c._useUTC),a._defaultDatePartsNow=m,a._f=c._f[l],Ut(a),E(a)&&(h=!0),d=(d+=M(a).charsLeftOver)+10*M(a).unusedTokens.length,M(a).score=d,f?d<u&&(u=d,o=a):(null==u||d<u||h)&&(u=d,o=a,h)&&(f=!0);k(c,o||a)}}else if(r)Ut(e);else if(w(r=(i=e)._i))i._d=new Date(y.now());else V(r)?i._d=new Date(r.valueOf()):"string"==typeof r?(n=i,null!==(t=bt.exec(n._i))?n._d=new Date(+t[1]):(Nt(n),!1===n._isValid&&(delete n._isValid,Wt(n),!1===n._isValid)&&(delete n._isValid,n._strict?n._isValid=!1:y.createFromInputFallback(n)))):g(r)?(i._a=G(r.slice(0),function(e){return parseInt(e,10)}),Ht(i)):F(r)?(t=i)._d||(s=void 0===(n=X(t._i)).day?n.date:n.day,t._a=G([n.year,n.month,s,n.hour,n.minute,n.second,n.millisecond],function(e){return e&&parseInt(e,10)}),Ht(t)):p(r)?i._d=new Date(r):y.createFromInputFallback(i);return E(e)||(e._d=null),e}function Lt(e,t,n,s,i){var r={};return!0!==t&&!1!==t||(s=t,t=void 0),!0!==n&&!1!==n||(s=n,n=void 0),(F(e)&&L(e)||g(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=i,r._l=n,r._i=e,r._f=t,r._strict=s,(i=new $(Mt(Ft(i=r))))._nextDay&&(i.add(1,"d"),i._nextDay=void 0),i}function R(e,t,n,s){return Lt(e,t,n,s,!1)}y.createFromInputFallback=e("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),y._getDefaultDateParts=function(e,t,n){return n=n||e._isDefaultDatePartsForWeek,t=n?R(t):new Date(t),n?[t.year(),t.month(),t.date()]:e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]},y.ISO_8601=function(){},y.RFC_2822=function(){};de=e("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=R.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:A()}),he=e("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=R.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:A()});function Vt(e,t){var n,s;if(!(t=1===t.length&&g(t[0])?t[0]:t).length)return R();for(s=0;s<t.length;++s)if(D(t[s])){n=t[s];break}if(!n)return A();for(++s;s<t.length;++s)!D(t[s])||t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Gt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Et(e){var e=X(e),t=e.year||0,n=e.quarter||0,s=e.month||0,i=e.week||e.isoWeek||0,r=e.day||0,a=e.hour||0,o=e.minute||0,u=e.second||0,l=e.millisecond||0;this._isValid=(e=>{var t,n,s=!1,i=Gt.length;for(t in e)if(c(e,t)&&(-1===N.call(Gt,t)||null!=e[t]&&isNaN(e[t])))return!1;for(n=0;n<i;++n)if(e[Gt[n]]){if(s)return!1;parseFloat(e[Gt[n]])!==_(e[Gt[n]])&&(s=!0)}return!0})(e),this._milliseconds=+l+1e3*u+6e4*o+1e3*a*60*60,this._days=+r+7*i,this._months=+s+3*n+12*t,this._data={},this._locale=kt(),this._bubble()}function At(e){return e instanceof Et}function It(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function jt(e,n){s(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+r(~~(e/60),2)+n+r(~~e%60,2)})}jt("Z",":"),jt("ZZ",""),d("Z",we),d("ZZ",we),v(["Z","ZZ"],function(e,t,n){var s=Zt(we,e);n._useUTC=!0,null===(n._tzm=s)&&(M(n).invalidOffset=e)});var zt=/([\+\-]|\d\d)/gi;function Zt(e,t){var t=(t||"").match(e);return null===t||(t=60*(e=((t[t.length-1]||[])+"").match(zt)||["-",0,0])[1]+_(e[2]),59<_(e[2]))||("+"===e[0]?840<t:720<t)?null:0===t?0:"+"===e[0]?t:-t}function $t(e,t){var n;return t._isUTC?(t=t.clone(),n=(D(e)||V(e)?e:R(e)).valueOf()-t.valueOf(),t._d.setTime(t._d.valueOf()+n),y.updateOffset(t,!1),t):R(e).local()}function qt(e){return-Math.round(e._d.getTimezoneOffset())}function Bt(){return!!this.isValid()&&this._isUTC&&0===this._offset}y.updateOffset=function(){};var Jt=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Qt=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function C(e,t){var n,s=e;return At(e)?s={ms:e._milliseconds,d:e._days,M:e._months}:p(e)||!isNaN(+e)?(s={},t?s[t]=+e:s.milliseconds=+e):(t=Jt.exec(e))?(n="-"===t[1]?-1:1,s={y:0,d:_(t[O])*n,h:_(t[b])*n,m:_(t[x])*n,s:_(t[T])*n,ms:_(It(1e3*t[Se]))*n}):(t=Qt.exec(e))?(n="-"===t[1]?-1:1,s={y:Xt(t[2],n),M:Xt(t[3],n),w:Xt(t[4],n),d:Xt(t[5],n),h:Xt(t[6],n),m:Xt(t[7],n),s:Xt(t[8],n)}):null==s?s={}:"object"==typeof s&&("from"in s||"to"in s)&&(t=((e,t)=>{var n;return e.isValid()&&t.isValid()?(t=$t(t,e),e.isBefore(t)?n=Kt(e,t):((n=Kt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}})(R(s.from),R(s.to)),(s={}).ms=t.milliseconds,s.M=t.months),n=new Et(s),At(e)&&c(e,"_locale")&&(n._locale=e._locale),At(e)&&c(e,"_isValid")&&(n._isValid=e._isValid),n}function Xt(e,t){e=e&&parseFloat(e.replace(",","."));return(isNaN(e)?0:e)*t}function Kt(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function en(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(J(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),tn(this,C(e,t),s),this}}function tn(e,t,n,s){var i=t._milliseconds,r=It(t._days),t=It(t._months);e.isValid()&&(s=null==s||s,t&&Ve(e,Ne(e,"Month")+t*n),r&&Pe(e,"Date",Ne(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s)&&y.updateOffset(e,r||t)}C.fn=Et.prototype,C.invalid=function(){return C(NaN)};Re=en(1,"add"),Ie=en(-1,"subtract");function nn(e){return"string"==typeof e||e instanceof String}function sn(e){return D(e)||V(e)||nn(e)||p(e)||(t=>{var e=g(t),n=!1;return e&&(n=0===t.filter(function(e){return!p(e)&&nn(t)}).length),e&&n})(e)||(e=>{var t,n,s=F(e)&&!L(e),i=!1,r=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],a=r.length;for(t=0;t<a;t+=1)n=r[t],i=i||c(e,n);return s&&i})(e)||null==e}function rn(e,t){var n,s;return e.date()<t.date()?-rn(t,e):-((n=12*(t.year()-e.year())+(t.month()-e.month()))+(t-(s=e.clone().add(n,"months"))<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(1+n,"months")-s)))||0}function an(e){return void 0===e?this._locale._abbr:(null!=(e=kt(e))&&(this._locale=e),this)}y.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",y.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";ze=e("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function on(){return this._locale}var un=126227808e5;function ln(e,t){return(e%t+t)%t}function dn(e,t,n){return e<100&&0<=e?new Date(e+400,t,n)-un:new Date(e,t,n).valueOf()}function hn(e,t,n){return e<100&&0<=e?Date.UTC(e+400,t,n)-un:Date.UTC(e,t,n)}function cn(e,t){return t.erasAbbrRegex(e)}function fn(){for(var e,t,n,s=[],i=[],r=[],a=[],o=this.eras(),u=0,l=o.length;u<l;++u)e=f(o[u].name),t=f(o[u].abbr),n=f(o[u].narrow),i.push(e),s.push(t),r.push(n),a.push(e),a.push(t),a.push(n);this._erasRegex=new RegExp("^("+a.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+i.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+s.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+r.join("|")+")","i")}function mn(e,t){s(0,[e,e.length],0,t)}function _n(e,t,n,s,i){var r;return null==e?ot(this,s,i).year:(r=P(e,s,i),function(e,t,n,s,i){e=rt(e,t,n,s,i),t=st(e.year,0,e.dayOfYear);return this.year(t.getUTCFullYear()),this.month(t.getUTCMonth()),this.date(t.getUTCDate()),this}.call(this,e,t=r<t?r:t,n,s,i))}s("N",0,0,"eraAbbr"),s("NN",0,0,"eraAbbr"),s("NNN",0,0,"eraAbbr"),s("NNNN",0,0,"eraName"),s("NNNNN",0,0,"eraNarrow"),s("y",["y",1],"yo","eraYear"),s("y",["yy",2],0,"eraYear"),s("y",["yyy",3],0,"eraYear"),s("y",["yyyy",4],0,"eraYear"),d("N",cn),d("NN",cn),d("NNN",cn),d("NNNN",function(e,t){return t.erasNameRegex(e)}),d("NNNNN",function(e,t){return t.erasNarrowRegex(e)}),v(["N","NN","NNN","NNNN","NNNNN"],function(e,t,n,s){s=n._locale.erasParse(e,s,n._strict);s?M(n).era=s:M(n).invalidEra=e}),d("y",_e),d("yy",_e),d("yyy",_e),d("yyyy",_e),d("yo",function(e,t){return t._eraYearOrdinalRegex||_e}),v(["y","yy","yyy","yyyy"],S),v(["yo"],function(e,t,n,s){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[S]=n._locale.eraYearOrdinalParse(e,i):t[S]=parseInt(e,10)}),s(0,["gg",2],0,function(){return this.weekYear()%100}),s(0,["GG",2],0,function(){return this.isoWeekYear()%100}),mn("gggg","weekYear"),mn("ggggg","weekYear"),mn("GGGG","isoWeekYear"),mn("GGGGG","isoWeekYear"),d("G",ye),d("g",ye),d("GG",n,t),d("gg",n,t),d("GGGG",fe,ue),d("gggg",fe,ue),d("GGGGG",me,le),d("ggggg",me,le),De(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=_(e)}),De(["gg","GG"],function(e,t,n,s){t[s]=y.parseTwoDigitYear(e)}),s("Q",0,"Qo","quarter"),d("Q",ae),v("Q",function(e,t){t[Y]=3*(_(e)-1)}),s("D",["DD",2],"Do","date"),d("D",n,o),d("DD",n,t),d("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),v(["D","DD"],O),v("Do",function(e,t){t[O]=_(e.match(n)[0])});fe=Te("Date",!0);s("DDD",["DDDD",3],"DDDo","dayOfYear"),d("DDD",ce),d("DDDD",oe),v(["DDD","DDDD"],function(e,t,n){n._dayOfYear=_(e)}),s("m",["mm",2],0,"minute"),d("m",n,u),d("mm",n,t),v(["m","mm"],x);var yn,ue=Te("Minutes",!1),me=(s("s",["ss",2],0,"second"),d("s",n,u),d("ss",n,t),v(["s","ss"],T),Te("Seconds",!1));for(s("S",0,0,function(){return~~(this.millisecond()/100)}),s(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),s(0,["SSS",3],0,"millisecond"),s(0,["SSSS",4],0,function(){return 10*this.millisecond()}),s(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),s(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),s(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),s(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),s(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),d("S",ce,ae),d("SS",ce,t),d("SSS",ce,oe),yn="SSSS";yn.length<=9;yn+="S")d(yn,_e);function gn(e,t){t[Se]=_(1e3*("0."+e))}for(yn="S";yn.length<=9;yn+="S")v(yn,gn);le=Te("Milliseconds",!1),s("z",0,0,"zoneAbbr"),s("zz",0,0,"zoneName");o=$.prototype;function wn(e){return e}o.add=Re,o.calendar=function(e,t){1===arguments.length&&(arguments[0]?sn(arguments[0])?(e=arguments[0],t=void 0):(e=>{for(var t=F(e)&&!L(e),n=!1,s=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],i=0;i<s.length;i+=1)n=n||c(e,s[i]);return t&&n})(arguments[0])&&(t=arguments[0],e=void 0):t=e=void 0);var e=e||R(),n=$t(e,this).startOf("day"),n=y.calendarFormat(this,n)||"sameElse",t=t&&(h(t[n])?t[n].call(this,e):t[n]);return this.format(t||this.localeData().calendar(n,this,R(e)))},o.clone=function(){return new $(this)},o.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=$t(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=a(t)){case"year":r=rn(this,s)/12;break;case"month":r=rn(this,s);break;case"quarter":r=rn(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:m(r)},o.endOf=function(e){var t,n;if(void 0!==(e=a(e))&&"millisecond"!==e&&this.isValid()){switch(n=this._isUTC?hn:dn,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=36e5-ln(t+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":t=this._d.valueOf(),t+=6e4-ln(t,6e4)-1;break;case"second":t=this._d.valueOf(),t+=1e3-ln(t,1e3)-1;break}this._d.setTime(t),y.updateOffset(this,!0)}return this},o.format=function(e){return e=e||(this.isUtc()?y.defaultFormatUtc:y.defaultFormat),e=ie(this,e),this.localeData().postformat(e)},o.from=function(e,t){return this.isValid()&&(D(e)&&e.isValid()||R(e).isValid())?C({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},o.fromNow=function(e){return this.from(R(),e)},o.to=function(e,t){return this.isValid()&&(D(e)&&e.isValid()||R(e).isValid())?C({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},o.toNow=function(e){return this.to(R(),e)},o.get=function(e){return h(this[e=a(e)])?this[e]():this},o.invalidAt=function(){return M(this).overflow},o.isAfter=function(e,t){return e=D(e)?e:R(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=a(t)||"millisecond")?this.valueOf()>e.valueOf():e.valueOf()<this.clone().startOf(t).valueOf())},o.isBefore=function(e,t){return e=D(e)?e:R(e),!(!this.isValid()||!e.isValid())&&("millisecond"===(t=a(t)||"millisecond")?this.valueOf()<e.valueOf():this.clone().endOf(t).valueOf()<e.valueOf())},o.isBetween=function(e,t,n,s){return e=D(e)?e:R(e),t=D(t)?t:R(t),!!(this.isValid()&&e.isValid()&&t.isValid())&&("("===(s=s||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n))},o.isSame=function(e,t){var e=D(e)?e:R(e);return!(!this.isValid()||!e.isValid())&&("millisecond"===(t=a(t)||"millisecond")?this.valueOf()===e.valueOf():(e=e.valueOf(),this.clone().startOf(t).valueOf()<=e&&e<=this.clone().endOf(t).valueOf()))},o.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},o.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},o.isValid=function(){return E(this)},o.lang=ze,o.locale=an,o.localeData=on,o.max=he,o.min=de,o.parsingFlags=function(){return k({},M(this))},o.set=function(e,t){if("object"==typeof e)for(var n=(e=>{var t,n=[];for(t in e)c(e,t)&&n.push({unit:t,priority:K[t]});return n.sort(function(e,t){return e.priority-t.priority}),n})(e=X(e)),s=n.length,i=0;i<s;i++)this[n[i].unit](e[n[i].unit]);else if(h(this[e=a(e)]))return this[e](t);return this},o.startOf=function(e){var t,n;if(void 0!==(e=a(e))&&"millisecond"!==e&&this.isValid()){switch(n=this._isUTC?hn:dn,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=ln(t+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":t=this._d.valueOf(),t-=ln(t,6e4);break;case"second":t=this._d.valueOf(),t-=ln(t,1e3);break}this._d.setTime(t),y.updateOffset(this,!0)}return this},o.subtract=Ie,o.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},o.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},o.toDate=function(){return new Date(this.valueOf())},o.toISOString=function(e){var t;return this.isValid()?(t=(e=!0!==e)?this.clone().utc():this).year()<0||9999<t.year()?ie(t,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):h(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",ie(t,"Z")):ie(t,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ"):null},o.inspect=function(){var e,t,n;return this.isValid()?(t="moment",e="",this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z"),t="["+t+'("]',n=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",this.format(t+n+"-MM-DD[T]HH:mm:ss.SSS"+(e+'[")]'))):"moment.invalid(/* "+this._i+" */)"},"undefined"!=typeof Symbol&&null!=Symbol.for&&(o[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),o.toJSON=function(){return this.isValid()?this.toISOString():null},o.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},o.unix=function(){return Math.floor(this.valueOf()/1e3)},o.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},o.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},o.eraName=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].name;if(t[n].until<=e&&e<=t[n].since)return t[n].name}return""},o.eraNarrow=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].narrow;if(t[n].until<=e&&e<=t[n].since)return t[n].narrow}return""},o.eraAbbr=function(){for(var e,t=this.localeData().eras(),n=0,s=t.length;n<s;++n){if(e=this.clone().startOf("day").valueOf(),t[n].since<=e&&e<=t[n].until)return t[n].abbr;if(t[n].until<=e&&e<=t[n].since)return t[n].abbr}return""},o.eraYear=function(){for(var e,t,n=this.localeData().eras(),s=0,i=n.length;s<i;++s)if(e=n[s].since<=n[s].until?1:-1,t=this.clone().startOf("day").valueOf(),n[s].since<=t&&t<=n[s].until||n[s].until<=t&&t<=n[s].since)return(this.year()-y(n[s].since).year())*e+n[s].offset;return this.year()},o.year=xe,o.isLeapYear=function(){return ve(this.year())},o.weekYear=function(e){return _n.call(this,e,this.week(),this.weekday()+this.localeData()._week.dow,this.localeData()._week.dow,this.localeData()._week.doy)},o.isoWeekYear=function(e){return _n.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},o.quarter=o.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},o.month=Ge,o.daysInMonth=function(){return We(this.year(),this.month())},o.week=o.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},o.isoWeek=o.isoWeeks=function(e){var t=ot(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},o.weeksInYear=function(){var e=this.localeData()._week;return P(this.year(),e.dow,e.doy)},o.weeksInWeekYear=function(){var e=this.localeData()._week;return P(this.weekYear(),e.dow,e.doy)},o.isoWeeksInYear=function(){return P(this.year(),1,4)},o.isoWeeksInISOWeekYear=function(){return P(this.isoWeekYear(),1,4)},o.date=fe,o.day=o.days=function(e){var t,n,s;return this.isValid()?(t=Ne(this,"Day"),null!=e?(n=e,s=this.localeData(),e="string"!=typeof n?n:isNaN(n)?"number"==typeof(n=s.weekdaysParse(n))?n:null:parseInt(n,10),this.add(e-t,"d")):t):null!=e?this:NaN},o.weekday=function(e){var t;return this.isValid()?(t=(this.day()+7-this.localeData()._week.dow)%7,null==e?t:this.add(e-t,"d")):null!=e?this:NaN},o.isoWeekday=function(e){var t,n;return this.isValid()?null!=e?(t=e,n=this.localeData(),n="string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t,this.day(this.day()%7?n:n-7)):this.day()||7:null!=e?this:NaN},o.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},o.hour=o.hours=i,o.minute=o.minutes=ue,o.second=o.seconds=me,o.millisecond=o.milliseconds=le,o.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:qt(this);if("string"==typeof e){if(null===(e=Zt(we,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=qt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?tn(this,C(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,y.updateOffset(this,!0),this._changeInProgress=null)),this},o.utc=function(e){return this.utcOffset(0,e)},o.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e)&&this.subtract(qt(this),"m"),this},o.parseZone=function(){var e;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(e=Zt(ge,this._i))?this.utcOffset(e):this.utcOffset(0,!0)),this},o.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?R(e).utcOffset():0,(this.utcOffset()-e)%60==0)},o.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},o.isLocal=function(){return!!this.isValid()&&!this._isUTC},o.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},o.isUtc=Bt,o.isUTC=Bt,o.zoneAbbr=function(){return this._isUTC?"UTC":""},o.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},o.dates=e("dates accessor is deprecated. Use date instead.",fe),o.months=e("months accessor is deprecated. Use month instead",Ge),o.years=e("years accessor is deprecated. Use year instead",xe),o.zone=e("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?(this.utcOffset(e="string"!=typeof e?-e:e,t),this):-this.utcOffset()}),o.isDSTShifted=e("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){var e,t;return w(this._isDSTShifted)&&(Z(e={},this),(e=Ft(e))._a?(t=(e._isUTC?l:R)(e._a),this._isDSTShifted=this.isValid()&&0<((e,t)=>{for(var n=Math.min(e.length,t.length),s=Math.abs(e.length-t.length),i=0,r=0;r<n;r++)_(e[r])!==_(t[r])&&i++;return i+s})(e._a,t.toArray())):this._isDSTShifted=!1),this._isDSTShifted});u=Xe.prototype;function pn(e,t,n,s){var i=kt(),s=l().set(s,t);return i[n](s,e)}function kn(e,t,n){if(p(e)&&(t=e,e=void 0),e=e||"",null!=t)return pn(e,t,n,"month");for(var s=[],i=0;i<12;i++)s[i]=pn(e,i,n,"month");return s}function Mn(e,t,n,s){t=("boolean"==typeof e?p(t)&&(n=t,t=void 0):(t=e,e=!1,p(n=t)&&(n=t,t=void 0)),t||"");var i,r=kt(),a=e?r._week.dow:0,o=[];if(null!=n)return pn(t,(n+a)%7,s,"day");for(i=0;i<7;i++)o[i]=pn(t,(i+a)%7,s,"day");return o}u.calendar=function(e,t,n){return h(e=this._calendar[e]||this._calendar.sameElse)?e.call(t,n):e},u.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()],s=this._longDateFormatCache;if(!t&&n){if(s&&s[e]&&s[e].formatUpper===n)return s[e].format;t=n.match(ee).map(function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e}).join(""),(s=s||(this._longDateFormatCache={}))[e]={formatUpper:n,format:t}}return t},u.invalidDate=function(){return this._invalidDate},u.ordinal=function(e){return this._ordinal.replace("%d",e)},u.preparse=wn,u.postformat=wn,u.relativeTime=function(e,t,n,s){return this.postformat(et.call(this,e,t,n,s))},u.pastFuture=function(e,t){return this.postformat(tt.call(this,e,t))},u.set=function(e){for(var t,n,s,i=this,r=e,a=0;a<Le.length;a++)c(r,s=Le[a])||delete i["_"+s];for(var o,u=this,l=e,d=0;d<Be.length;d++)c(l,o=Be[d])||delete u["_"+o];for(n in e)c(e,n)&&(h(t=e[n])?this[n]=t:this["_"+n]=t);this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},u.eras=function(e,t){for(var n,s=this._eras||kt("en")._eras,i=0,r=s.length;i<r;++i){switch(typeof s[i].since){case"string":n=y(s[i].since).startOf("day"),s[i].since=n.valueOf();break}switch(typeof s[i].until){case"undefined":s[i].until=1/0;break;case"string":n=y(s[i].until).startOf("day").valueOf(),s[i].until=n.valueOf();break}}return s},u.erasParse=function(e,t,n){var s,i,r,a,o,u=this.eras();for(e=e.toUpperCase(),s=0,i=u.length;s<i;++s)if(r=u[s].name.toUpperCase(),a=u[s].abbr.toUpperCase(),o=u[s].narrow.toUpperCase(),n)switch(t){case"N":case"NN":case"NNN":if(a===e)return u[s];break;case"NNNN":if(r===e)return u[s];break;case"NNNNN":if(o===e)return u[s];break}else if(0<=[r,a,o].indexOf(e))return u[s]},u.erasConvertYear=function(e,t){var n=e.since<=e.until?1:-1;return void 0===t?y(e.since).year():y(e.since).year()+(t-e.offset)*n},u.erasAbbrRegex=function(e){return c(this,"_erasAbbrRegex")||fn.call(this),e?this._erasAbbrRegex:this._erasRegex},u.erasNameRegex=function(e){return c(this,"_erasNameRegex")||fn.call(this),e?this._erasNameRegex:this._erasRegex},u.erasNarrowRegex=function(e){return c(this,"_erasNarrowRegex")||fn.call(this),e?this._erasNarrowRegex:this._erasRegex},u.months=function(e,t){return e?(g(this._months)?this._months:this._months[(this._months.isFormat||He).test(t)?"format":"standalone"])[e.month()]:g(this._months)?this._months:this._months.standalone},u.monthsShort=function(e,t){return e?(g(this._monthsShort)?this._monthsShort:this._monthsShort[He.test(t)?"format":"standalone"])[e.month()]:g(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},u.monthsParse=function(e,t,n){var s,i;if(this._monthsParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=l([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=N.call(this._shortMonthsParse,e))?i:null:-1!==(i=N.call(this._longMonthsParse,e))?i:null:"MMM"===t?-1!==(i=N.call(this._shortMonthsParse,e))||-1!==(i=N.call(this._longMonthsParse,e))?i:null:-1!==(i=N.call(this._longMonthsParse,e))||-1!==(i=N.call(this._shortMonthsParse,e))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=l([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(i="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(i.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},u.monthsRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsStrictRegex:this._monthsRegex):(c(this,"_monthsRegex")||(this._monthsRegex=Fe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},u.monthsShortRegex=function(e){return this._monthsParseExact?(c(this,"_monthsRegex")||Ee.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(c(this,"_monthsShortRegex")||(this._monthsShortRegex=Ue),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},u.week=function(e){return ot(e,this._week.dow,this._week.doy).week},u.firstDayOfYear=function(){return this._week.doy},u.firstDayOfWeek=function(){return this._week.dow},u.weekdays=function(e,t){return t=g(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"],!0===e?Ae(t,this._week.dow):e?t[e.day()]:t},u.weekdaysMin=function(e){return!0===e?Ae(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},u.weekdaysShort=function(e){return!0===e?Ae(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},u.weekdaysParse=function(e,t,n){var s,i;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,e=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=l([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=N.call(this._weekdaysParse,e))?i:null:"ddd"===t?-1!==(i=N.call(this._shortWeekdaysParse,e))?i:null:-1!==(i=N.call(this._minWeekdaysParse,e))?i:null:"dddd"===t?-1!==(i=N.call(this._weekdaysParse,e))||-1!==(i=N.call(this._shortWeekdaysParse,e))||-1!==(i=N.call(this._minWeekdaysParse,e))?i:null:"ddd"===t?-1!==(i=N.call(this._shortWeekdaysParse,e))||-1!==(i=N.call(this._weekdaysParse,e))||-1!==(i=N.call(this._minWeekdaysParse,e))?i:null:-1!==(i=N.call(this._minWeekdaysParse,e))||-1!==(i=N.call(this._weekdaysParse,e))||-1!==(i=N.call(this._shortWeekdaysParse,e))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=l([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(i="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(i.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},u.weekdaysRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Je.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(c(this,"_weekdaysRegex")||(this._weekdaysRegex=Ze),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},u.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Je.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(c(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=$e),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},u.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(c(this,"_weekdaysRegex")||Je.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(c(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=qe),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},u.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},u.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},wt("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===_(e%100/10)?"th":1==t?"st":2==t?"nd":3==t?"rd":"th")}}),y.lang=e("moment.lang is deprecated. Use moment.locale instead.",wt),y.langData=e("moment.langData is deprecated. Use moment.localeData instead.",kt);var Dn=Math.abs;function vn(e,t,n,s){t=C(t,n);return e._milliseconds+=s*t._milliseconds,e._days+=s*t._days,e._months+=s*t._months,e._bubble()}function Sn(e){return e<0?Math.floor(e):Math.ceil(e)}function Yn(e){return 4800*e/146097}function On(e){return 146097*e/4800}function bn(e){return function(){return this.as(e)}}ae=bn("ms"),t=bn("s"),ce=bn("m"),oe=bn("h"),Re=bn("d"),he=bn("w"),de=bn("M"),Ie=bn("Q"),i=bn("y"),ue=ae;function xn(e){return function(){return this.isValid()?this._data[e]:NaN}}var me=xn("milliseconds"),le=xn("seconds"),fe=xn("minutes"),xe=xn("hours"),u=xn("days"),Tn=xn("months"),Nn=xn("years");var Pn=Math.round,Wn={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function Rn(e,t,n,s){var i=C(e).abs(),r=Pn(i.as("s")),a=Pn(i.as("m")),o=Pn(i.as("h")),u=Pn(i.as("d")),l=Pn(i.as("M")),d=Pn(i.as("w")),i=Pn(i.as("y")),r=(r<=n.ss?["s",r]:r<n.s&&["ss",r])||(a<=1?["m"]:a<n.m&&["mm",a])||(o<=1?["h"]:o<n.h&&["hh",o])||(u<=1?["d"]:u<n.d&&["dd",u]);return(r=(r=null!=n.w?r||(d<=1?["w"]:d<n.w&&["ww",d]):r)||(l<=1?["M"]:l<n.M&&["MM",l])||(i<=1?["y"]:["yy",i]))[2]=t,r[3]=0<+e,r[4]=s,function(e,t,n,s,i){return et.call(i,t||1,!!n,e,s)}.apply(null,r)}var Cn=Math.abs;function Hn(e){return(0<e)-(e<0)||+e}function Un(){var e,t,n,s,i,r,a,o,u,l,d;return this.isValid()?(e=Cn(this._milliseconds)/1e3,t=Cn(this._days),n=Cn(this._months),(o=this.asSeconds())?(s=m(e/60),i=m(s/60),e%=60,s%=60,r=m(n/12),n%=12,a=e?e.toFixed(3).replace(/\.?0+$/,""):"",u=Hn(this._months)!==Hn(o)?"-":"",l=Hn(this._days)!==Hn(o)?"-":"",d=Hn(this._milliseconds)!==Hn(o)?"-":"",(o<0?"-":"")+"P"+(r?u+r+"Y":"")+(n?u+n+"M":"")+(t?l+t+"D":"")+(i||s||e?"T":"")+(i?d+i+"H":"")+(s?d+s+"M":"")+(e?d+a+"S":"")):"P0D"):this.localeData().invalidDate()}var H=Et.prototype;return H.isValid=function(){return this._isValid},H.abs=function(){var e=this._data;return this._milliseconds=Dn(this._milliseconds),this._days=Dn(this._days),this._months=Dn(this._months),e.milliseconds=Dn(e.milliseconds),e.seconds=Dn(e.seconds),e.minutes=Dn(e.minutes),e.hours=Dn(e.hours),e.months=Dn(e.months),e.years=Dn(e.years),this},H.add=function(e,t){return vn(this,e,t,1)},H.subtract=function(e,t){return vn(this,e,t,-1)},H.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=a(e))||"quarter"===e||"year"===e)switch(t=this._days+s/864e5,n=this._months+Yn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(On(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},H.asMilliseconds=ae,H.asSeconds=t,H.asMinutes=ce,H.asHours=oe,H.asDays=Re,H.asWeeks=he,H.asMonths=de,H.asQuarters=Ie,H.asYears=i,H.valueOf=ue,H._bubble=function(){var e=this._milliseconds,t=this._days,n=this._months,s=this._data;return 0<=e&&0<=t&&0<=n||e<=0&&t<=0&&n<=0||(e+=864e5*Sn(On(n)+t),n=t=0),s.milliseconds=e%1e3,e=m(e/1e3),s.seconds=e%60,e=m(e/60),s.minutes=e%60,e=m(e/60),s.hours=e%24,t+=m(e/24),n+=e=m(Yn(t)),t-=Sn(On(e)),e=m(n/12),n%=12,s.days=t,s.months=n,s.years=e,this},H.clone=function(){return C(this)},H.get=function(e){return e=a(e),this.isValid()?this[e+"s"]():NaN},H.milliseconds=me,H.seconds=le,H.minutes=fe,H.hours=xe,H.days=u,H.weeks=function(){return m(this.days()/7)},H.months=Tn,H.years=Nn,H.humanize=function(e,t){var n,s;return this.isValid()?(n=!1,s=Wn,"object"==typeof e&&(t=e,e=!1),"boolean"==typeof e&&(n=e),"object"==typeof t&&(s=k(k({},Wn),t||{}),null!=t.s)&&null==t.ss&&(s.ss=t.s-1),e=this.localeData(),t=Rn(this,!n,s,e),n&&(t=tt.call(e,+this,t)),e.postformat(t)):this.localeData().invalidDate()},H.toISOString=Un,H.toString=Un,H.toJSON=Un,H.locale=an,H.localeData=on,H.toIsoString=e("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Un),H.lang=ze,s("X",0,0,"unix"),s("x",0,0,"valueOf"),d("x",ye),d("X",/[+-]?\d+(\.\d{1,3})?/),v("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e))}),v("x",function(e,t,n){n._d=new Date(_(e))}),
503//! moment.js
504y.version="2.31.0",U=R,y.fn=o,y.min=function(){return Vt("isBefore",[].slice.call(arguments,0))},y.max=function(){return Vt("isAfter",[].slice.call(arguments,0))},y.now=function(){return Date.now?Date.now():+new Date},y.utc=l,y.unix=function(e){return R(1e3*e)},y.months=function(e,t){return kn(e,t,"months")},y.isDate=V,y.locale=wt,y.invalid=A,y.duration=C,y.isMoment=D,y.weekdays=function(e,t,n){return Mn(e,t,n,"weekdays")},y.parseZone=function(){return R.apply(null,arguments).parseZone()},y.localeData=kt,y.isDuration=At,y.monthsShort=function(e,t){return kn(e,t,"monthsShort")},y.weekdaysMin=function(e,t,n){return Mn(e,t,n,"weekdaysMin")},y.defineLocale=pt,y.updateLocale=function(e,t){var n=gt(e),s=ft;return null!=n&&(e=n._abbr),null!=t?(null!=W[e]&&null!=W[e].parentLocale?W[e].set(Qe(W[e]._config,t)):(t=Qe(s=null!=n?n._config:s,t),null==n&&(t.abbr=e),(s=new Xe(t)).parentLocale=W[e],W[e]=s),wt(e)):null!=W[e]&&(null!=W[e].parentLocale?(W[e]=W[e].parentLocale,e===wt()&&wt(e)):null!=W[e]&&delete W[e]),W[e]},y.locales=function(){return Ke(W)},y.weekdaysShort=function(e,t,n){return Mn(e,t,n,"weekdaysShort")},y.normalizeUnits=a,y.relativeTimeRounding=function(e){return void 0===e?Pn:"function"==typeof e&&(Pn=e,!0)},y.relativeTimeThreshold=function(e,t){return void 0!==Wn[e]&&(void 0===t?Wn[e]:(Wn[e]=t,"s"===e&&(Wn.ss=t-1),!0))},y.calendarFormat=function(e,t){return(e=e.diff(t,"days",!0))<-6?"sameElse":e<-1?"lastWeek":e<0?"lastDay":e<1?"sameDay":e<2?"nextDay":e<7?"nextWeek":"sameElse"},y.prototype=o,y.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},y});
505//# sourceMappingURL=moment.min.js.map
vendor: 1,465 bytes, lines 505-542
505
506/*!
507 * FullCalendar v3.10.5
508 * Docs & License: https://fullcalendar.io/
509 * (c) 2019 Adam Shaw
510 */
511(function webpackUniversalModuleDefinition(root, factory) {
512	if(typeof exports === 'object' && typeof module === 'object')
513		module.exports = factory(require("moment"), require("jquery"));
514	else if(typeof define === 'function' && define.amd)
515		define(["moment", "jquery"], factory);
516	else if(typeof exports === 'object')
517		exports["FullCalendar"] = factory(require("moment"), require("jquery"));
518	else
519		root["FullCalendar"] = factory(root["moment"], root["jQuery"]);
520})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_0__, __WEBPACK_EXTERNAL_MODULE_3__) {
521return /******/ (function(modules) { // webpackBootstrap
522/******/ 	// The module cache
523/******/ 	var installedModules = {};
524/******/
525/******/ 	// The require function
526/******/ 	function __webpack_require__(moduleId) {
527/******/
528/******/ 		// Check if module is in cache
529/******/ 		if(installedModules[moduleId]) {
530/******/ 			return installedModules[moduleId].exports;
531/******/ 		}
532/******/ 		// Create a new module (and put it into the cache)
533/******/ 		var module = installedModules[moduleId] = {
534/******/ 			i: moduleId,
535/******/ 			l: false,
536/******/ 			exports: {}
537/******/ 		};
538/******/
539/******/ 		// Execute the module function
540/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
541/******/
542/******/ 		// Flag the module as loaded
543/******/ 		module.l = true;
544/******/
545/******/ 		// Return the exports of the module
546/******/ 		return module.exports;
547/******/ 	}
548/******/
549/******/
550/******/ 	// expose the modules object (__webpack_modules__)
551/******/ 	__webpack_require__.m = modules;
552/******/
553/******/ 	// expose the module cache
554/******/ 	__webpack_require__.c = installedModules;
555/******/
556/******/ 	// define getter function for harmony exports
557/******/ 	__webpack_require__.d = function(exports, name, getter) {
558/******/ 		if(!__webpack_require__.o(exports, name)) {
559/******/ 			Object.defineProperty(exports, name, {
560/******/ 				configurable: false,
561/******/ 				enumerable: true,
562/******/ 				get: getter
563/******/ 			});
564/******/ 		}
565/******/ 	};
566/******/
567/******/ 	// getDefaultExport function for compatibility with non-harmony modules
568/******/ 	__webpack_require__.n = function(module) {
569/******/ 		var getter = module && module.__esModule ?
570/******/ 			function getDefault() { return module['default']; } :
571/******/ 			function getModuleExports() { return module; };
572/******/ 		__webpack_require__.d(getter, 'a', getter);
573/******/ 		return getter;
574/******/ 	};
575/******/
576/******/ 	// Object.prototype.hasOwnProperty.call
577/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
578/******/
579/******/ 	// __webpack_public_path__
580/******/ 	__webpack_require__.p = "";
581/******/
582/******/ 	// Load entry module and return exports
583/******/ 	return __webpack_require__(__webpack_require__.s = 256);
584/******/ })
585/************************************************************************/
586/******/ ([
587/* 0 */
588/***/ (function(module, exports) {
589
590module.exports = __WEBPACK_EXTERNAL_MODULE_0__;
591
592/***/ }),
593/* 1 */,
594/* 2 */
595/***/ (function(module, exports) {
596
597/*
598derived from:
599https://github.com/Microsoft/tslib/blob/v1.6.0/tslib.js
600
601only include the helpers we need, to keep down filesize
602*/
603var extendStatics = Object.setPrototypeOf ||
604    ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
605    function (d, b) { for (var p in b)
606        if (b.hasOwnProperty(p))
607            d[p] = b[p]; };
608exports.__extends = function (d, b) {
609    extendStatics(d, b);
610    function __() { this.constructor = d; }
611    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
612};
613
614
615/***/ }),
616/* 3 */
617/***/ (function(module, exports) {
618
619module.exports = __WEBPACK_EXTERNAL_MODULE_3__;
620
621/***/ }),
622/* 4 */
623/***/ (function(module, exports, __webpack_require__) {
624
625Object.defineProperty(exports, "__esModule", { value: true });
626var moment = __webpack_require__(0);
627var $ = __webpack_require__(3);
628/* FullCalendar-specific DOM Utilities
629----------------------------------------------------------------------------------------------------------------------*/
630// Given the scrollbar widths of some other container, create borders/margins on rowEls in order to match the left
631// and right space that was offset by the scrollbars. A 1-pixel border first, then margin beyond that.
632function compensateScroll(rowEls, scrollbarWidths) {
633    if (scrollbarWidths.left) {
634        rowEls.css({
635            'border-left-width': 1,
636            'margin-left': scrollbarWidths.left - 1
637        });
638    }
639    if (scrollbarWidths.right) {
640        rowEls.css({
641            'border-right-width': 1,
642            'margin-right': scrollbarWidths.right - 1
643        });
644    }
645}
646exports.compensateScroll = compensateScroll;
647// Undoes compensateScroll and restores all borders/margins
648function uncompensateScroll(rowEls) {
649    rowEls.css({
650        'margin-left': '',
651        'margin-right': '',
652        'border-left-width': '',
653        'border-right-width': ''
654    });
655}
656exports.uncompensateScroll = uncompensateScroll;
657// Make the mouse cursor express that an event is not allowed in the current area
658function disableCursor() {
659    $('body').addClass('fc-not-allowed');
660}
661exports.disableCursor = disableCursor;
662// Returns the mouse cursor to its original look
663function enableCursor() {
664    $('body').removeClass('fc-not-allowed');
665}
666exports.enableCursor = enableCursor;
667// Given a total available height to fill, have `els` (essentially child rows) expand to accomodate.
668// By default, all elements that are shorter than the recommended height are expanded uniformly, not considering
669// any other els that are already too tall. if `shouldRedistribute` is on, it considers these tall rows and
670// reduces the available height.
671function distributeHeight(els, availableHeight, shouldRedistribute) {
672    // *FLOORING NOTE*: we floor in certain places because zoom can give inaccurate floating-point dimensions,
673    // and it is better to be shorter than taller, to avoid creating unnecessary scrollbars.
674    var minOffset1 = Math.floor(availableHeight / els.length); // for non-last element
675    var minOffset2 = Math.floor(availableHeight - minOffset1 * (els.length - 1)); // for last element *FLOORING NOTE*
676    var flexEls = []; // elements that are allowed to expand. array of DOM nodes
677    var flexOffsets = []; // amount of vertical space it takes up
678    var flexHeights = []; // actual css height
679    var usedHeight = 0;
680    undistributeHeight(els); // give all elements their natural height
681    // find elements that are below the recommended height (expandable).
682    // important to query for heights in a single first pass (to avoid reflow oscillation).
683    els.each(function (i, el) {
684        var minOffset = i === els.length - 1 ? minOffset2 : minOffset1;
685        var naturalOffset = $(el).outerHeight(true);
686        if (naturalOffset < minOffset) {
687            flexEls.push(el);
688            flexOffsets.push(naturalOffset);
689            flexHeights.push($(el).height());
690        }
691        else {
692            // this element stretches past recommended height (non-expandable). mark the space as occupied.
693            usedHeight += naturalOffset;
694        }
695    });
696    // readjust the recommended height to only consider the height available to non-maxed-out rows.
697    if (shouldRedistribute) {
698        availableHeight -= usedHeight;
699        minOffset1 = Math.floor(availableHeight / flexEls.length);
700        minOffset2 = Math.floor(availableHeight - minOffset1 * (flexEls.length - 1)); // *FLOORING NOTE*
701    }
702    // assign heights to all expandable elements
703    $(flexEls).each(function (i, el) {
704        var minOffset = i === flexEls.length - 1 ? minOffset2 : minOffset1;
705        var naturalOffset = flexOffsets[i];
706        var naturalHeight = flexHeights[i];
707        var newHeight = minOffset - (naturalOffset - naturalHeight); // subtract the margin/padding
708        if (naturalOffset < minOffset) { // we check this again because redistribution might have changed things
709            $(el).height(newHeight);
710        }
711    });
712}
713exports.distributeHeight = distributeHeight;
714// Undoes distrubuteHeight, restoring all els to their natural height
715function undistributeHeight(els) {
716    els.height('');
717}
718exports.undistributeHeight = undistributeHeight;
719// Given `els`, a jQuery set of <td> cells, find the cell with the largest natural width and set the widths of all the
720// cells to be that width.
721// PREREQUISITE: if you want a cell to take up width, it needs to have a single inner element w/ display:inline
722function matchCellWidths(els) {
723    var maxInnerWidth = 0;
724    els.find('> *').each(function (i, innerEl) {
725        var innerWidth = $(innerEl).outerWidth();
726        if (innerWidth > maxInnerWidth) {
727            maxInnerWidth = innerWidth;
728        }
729    });
730    maxInnerWidth++; // sometimes not accurate of width the text needs to stay on one line. insurance
731    els.width(maxInnerWidth);
732    return maxInnerWidth;
733}
734exports.matchCellWidths = matchCellWidths;
735// Given one element that resides inside another,
736// Subtracts the height of the inner element from the outer element.
737function subtractInnerElHeight(outerEl, innerEl) {
738    var both = outerEl.add(innerEl);
739    var diff;
740    // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked
741    both.css({
742        position: 'relative',
743        left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll
744    });
745    diff = outerEl.outerHeight() - innerEl.outerHeight(); // grab the dimensions
746    both.css({ position: '', left: '' }); // undo hack
747    return diff;
748}
749exports.subtractInnerElHeight = subtractInnerElHeight;
750/* Element Geom Utilities
751----------------------------------------------------------------------------------------------------------------------*/
752// borrowed from https://github.com/jquery/jquery-ui/blob/1.11.0/ui/core.js#L51
753function getScrollParent(el) {
754    var position = el.css('position');
755    var scrollParent = el.parents().filter(function () {
756        var parent = $(this);
757        return (/(auto|scroll)/).test(parent.css('overflow') + parent.css('overflow-y') + parent.css('overflow-x'));
758    }).eq(0);
759    return position === 'fixed' || !scrollParent.length ? $(el[0].ownerDocument || document) : scrollParent;
760}
761exports.getScrollParent = getScrollParent;
762// Queries the outer bounding area of a jQuery element.
763// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).
764// Origin is optional.
765function getOuterRect(el, origin) {
766    var offset = el.offset();
767    var left = offset.left - (origin ? origin.left : 0);
768    var top = offset.top - (origin ? origin.top : 0);
769    return {
770        left: left,
771        right: left + el.outerWidth(),
772        top: top,
773        bottom: top + el.outerHeight()
774    };
775}
776exports.getOuterRect = getOuterRect;
777// Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding.
778// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).
779// Origin is optional.
780// WARNING: given element can't have borders
781// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.
782function getClientRect(el, origin) {
783    var offset = el.offset();
784    var scrollbarWidths = getScrollbarWidths(el);
785    var left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left - (origin ? origin.left : 0);
786    var top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top - (origin ? origin.top : 0);
787    return {
788        left: left,
789        right: left + el[0].clientWidth,
790        top: top,
791        bottom: top + el[0].clientHeight // clientHeight includes padding but NOT scrollbars
792    };
793}
794exports.getClientRect = getClientRect;
795// Queries the area within the margin/border/padding of a jQuery element. Assumed not to have scrollbars.
796// Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive).
797// Origin is optional.
798function getContentRect(el, origin) {
799    var offset = el.offset(); // just outside of border, margin not included
800    var left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left') -
801        (origin ? origin.left : 0);
802    var top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top') -
803        (origin ? origin.top : 0);
804    return {
805        left: left,
806        right: left + el.width(),
807        top: top,
808        bottom: top + el.height()
809    };
810}
811exports.getContentRect = getContentRect;
812// Returns the computed left/right/top/bottom scrollbar widths for the given jQuery element.
813// WARNING: given element can't have borders (which will cause offsetWidth/offsetHeight to be larger).
814// NOTE: should use clientLeft/clientTop, but very unreliable cross-browser.
815function getScrollbarWidths(el) {
816    var leftRightWidth = el[0].offsetWidth - el[0].clientWidth;
817    var bottomWidth = el[0].offsetHeight - el[0].clientHeight;
818    var widths;
819    leftRightWidth = sanitizeScrollbarWidth(leftRightWidth);
820    bottomWidth = sanitizeScrollbarWidth(bottomWidth);
821    widths = { left: 0, right: 0, top: 0, bottom: bottomWidth };
822    if (getIsLeftRtlScrollbars() && el.css('direction') === 'rtl') { // is the scrollbar on the left side?
823        widths.left = leftRightWidth;
824    }
825    else {
826        widths.right = leftRightWidth;
827    }
828    return widths;
829}
830exports.getScrollbarWidths = getScrollbarWidths;
831// The scrollbar width computations in getScrollbarWidths are sometimes flawed when it comes to
832// retina displays, rounding, and IE11. Massage them into a usable value.
833function sanitizeScrollbarWidth(width) {
834    width = Math.max(0, width); // no negatives
835    width = Math.round(width);
836    return width;
837}
838// Logic for determining if, when the element is right-to-left, the scrollbar appears on the left side
839var _isLeftRtlScrollbars = null;
840function getIsLeftRtlScrollbars() {
841    if (_isLeftRtlScrollbars === null) {
842        _isLeftRtlScrollbars = computeIsLeftRtlScrollbars();
843    }
844    return _isLeftRtlScrollbars;
845}
846function computeIsLeftRtlScrollbars() {
847    var el = $('<div><div></div></div>')
848        .css({
849        position: 'absolute',
850        top: -1000,
851        left: 0,
852        border: 0,
853        padding: 0,
854        overflow: 'scroll',
855        direction: 'rtl'
856    })
857        .appendTo('body');
858    var innerEl = el.children();
859    var res = innerEl.offset().left > el.offset().left; // is the inner div shifted to accommodate a left scrollbar?
860    el.remove();
861    return res;
862}
863// Retrieves a jQuery element's computed CSS value as a floating-point number.
864// If the queried value is non-numeric (ex: IE can return "medium" for border width), will just return zero.
865function getCssFloat(el, prop) {
866    return parseFloat(el.css(prop)) || 0;
867}
868/* Mouse / Touch Utilities
869----------------------------------------------------------------------------------------------------------------------*/
870// Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac)
871function isPrimaryMouseButton(ev) {
872    return ev.which === 1 && !ev.ctrlKey;
873}
874exports.isPrimaryMouseButton = isPrimaryMouseButton;
875function getEvX(ev) {
876    var touches = ev.originalEvent.touches;
877    // on mobile FF, pageX for touch events is present, but incorrect,
878    // so, look at touch coordinates first.
879    if (touches && touches.length) {
880        return touches[0].pageX;
881    }
882    return ev.pageX;
883}
884exports.getEvX = getEvX;
885function getEvY(ev) {
886    var touches = ev.originalEvent.touches;
887    // on mobile FF, pageX for touch events is present, but incorrect,
888    // so, look at touch coordinates first.
889    if (touches && touches.length) {
890        return touches[0].pageY;
891    }
892    return ev.pageY;
893}
894exports.getEvY = getEvY;
895function getEvIsTouch(ev) {
896    return /^touch/.test(ev.type);
897}
898exports.getEvIsTouch = getEvIsTouch;
899function preventSelection(el) {
900    el.addClass('fc-unselectable')
901        .on('selectstart', preventDefault);
902}
903exports.preventSelection = preventSelection;
904function allowSelection(el) {
905    el.removeClass('fc-unselectable')
906        .off('selectstart', preventDefault);
907}
908exports.allowSelection = allowSelection;
909// Stops a mouse/touch event from doing it's native browser action
910function preventDefault(ev) {
911    ev.preventDefault();
912}
913exports.preventDefault = preventDefault;
914/* General Geometry Utils
915----------------------------------------------------------------------------------------------------------------------*/
916// Returns a new rectangle that is the intersection of the two rectangles. If they don't intersect, returns false
917function intersectRects(rect1, rect2) {
918    var res = {
919        left: Math.max(rect1.left, rect2.left),
920        right: Math.min(rect1.right, rect2.right),
921        top: Math.max(rect1.top, rect2.top),
922        bottom: Math.min(rect1.bottom, rect2.bottom)
923    };
924    if (res.left < res.right && res.top < res.bottom) {
925        return res;
926    }
927    return false;
928}
929exports.intersectRects = intersectRects;
930// Returns a new point that will have been moved to reside within the given rectangle
931function constrainPoint(point, rect) {
932    return {
933        left: Math.min(Math.max(point.left, rect.left), rect.right),
934        top: Math.min(Math.max(point.top, rect.top), rect.bottom)
935    };
936}
937exports.constrainPoint = constrainPoint;
938// Returns a point that is the center of the given rectangle
939function getRectCenter(rect) {
940    return {
941        left: (rect.left + rect.right) / 2,
942        top: (rect.top + rect.bottom) / 2
943    };
944}
945exports.getRectCenter = getRectCenter;
946// Subtracts point2's coordinates from point1's coordinates, returning a delta
947function diffPoints(point1, point2) {
948    return {
949        left: point1.left - point2.left,
950        top: point1.top - point2.top
951    };
952}
953exports.diffPoints = diffPoints;
954/* Object Ordering by Field
955----------------------------------------------------------------------------------------------------------------------*/
956function parseFieldSpecs(input) {
957    var specs = [];
958    var tokens = [];
959    var i;
960    var token;
961    if (typeof input === 'string') {
962        tokens = input.split(/\s*,\s*/);
963    }
964    else if (typeof input === 'function') {
965        tokens = [input];
966    }
967    else if ($.isArray(input)) {
968        tokens = input;
969    }
970    for (i = 0; i < tokens.length; i++) {
971        token = tokens[i];
972        if (typeof token === 'string') {
973            specs.push(token.charAt(0) === '-' ?
974                { field: token.substring(1), order: -1 } :
975                { field: token, order: 1 });
976        }
977        else if (typeof token === 'function') {
978            specs.push({ func: token });
979        }
980    }
981    return specs;
982}
983exports.parseFieldSpecs = parseFieldSpecs;
984function compareByFieldSpecs(obj1, obj2, fieldSpecs, obj1fallback, obj2fallback) {
985    var i;
986    var cmp;
987    for (i = 0; i < fieldSpecs.length; i++) {
988        cmp = compareByFieldSpec(obj1, obj2, fieldSpecs[i], obj1fallback, obj2fallback);
989        if (cmp) {
990            return cmp;
991        }
992    }
993    return 0;
994}
995exports.compareByFieldSpecs = compareByFieldSpecs;
996function compareByFieldSpec(obj1, obj2, fieldSpec, obj1fallback, obj2fallback) {
997    if (fieldSpec.func) {
998        return fieldSpec.func(obj1, obj2);
999    }
1000    var val1 = obj1[fieldSpec.field];
1001    var val2 = obj2[fieldSpec.field];
1002    if (val1 == null && obj1fallback) {
1003        val1 = obj1fallback[fieldSpec.field];
1004    }
1005    if (val2 == null && obj2fallback) {
1006        val2 = obj2fallback[fieldSpec.field];
1007    }
1008    return flexibleCompare(val1, val2) * (fieldSpec.order || 1);
1009}
1010exports.compareByFieldSpec = compareByFieldSpec;
1011function flexibleCompare(a, b) {
1012    if (!a && !b) {
1013        return 0;
1014    }
1015    if (b == null) {
1016        return -1;
1017    }
1018    if (a == null) {
1019        return 1;
1020    }
1021    if ($.type(a) === 'string' || $.type(b) === 'string') {
1022        return String(a).localeCompare(String(b));
1023    }
1024    return a - b;
1025}
1026exports.flexibleCompare = flexibleCompare;
1027/* Date Utilities
1028----------------------------------------------------------------------------------------------------------------------*/
1029exports.dayIDs = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
1030exports.unitsDesc = ['year', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
1030 // descending
1031// Diffs the two moments into a Duration where full-days are recorded first, then the remaining time.
1032// Moments will have their timezones normalized.
1033function diffDayTime(a, b) {
1034    return moment.duration({
1035        days: a.clone().stripTime().diff(b.clone().stripTime(), 'days'),
1036        ms: a.time() - b.time() // time-of-day from day start. disregards timezone
1037    });
1038}
1039exports.diffDayTime = diffDayTime;
1040// Diffs the two moments via their start-of-day (regardless of timezone). Produces whole-day durations.
1041function diffDay(a, b) {
1042    return moment.duration({
1043        days: a.clone().stripTime().diff(b.clone().stripTime(), 'days')
1044    });
1045}
1046exports.diffDay = diffDay;
1047// Diffs two moments, producing a duration, made of a whole-unit-increment of the given unit. Uses rounding.
1048function diffByUnit(a, b, unit) {
1049    return moment.duration(Math.round(a.diff(b, unit, true)), // returnFloat=true
1050    unit);
1051}
1052exports.diffByUnit = diffByUnit;
1053// Computes the unit name of the largest whole-unit period of time.
1054// For example, 48 hours will be "days" whereas 49 hours will be "hours".
1055// Accepts start/end, a range object, or an original duration object.
1056function computeGreatestUnit(start, end) {
1057    var i;
1058    var unit;
1059    var val;
1060    for (i = 0; i < exports.unitsDesc.length; i++) {
1061        unit = exports.unitsDesc[i];
1062        val = computeRangeAs(unit, start, end);
1063        if (val >= 1 && isInt(val)) {
1064            break;
1065        }
1066    }
1067    return unit; // will be "milliseconds" if nothing else matches
1068}
1069exports.computeGreatestUnit = computeGreatestUnit;
1070// like computeGreatestUnit, but has special abilities to interpret the source input for clues
1071function computeDurationGreatestUnit(duration, durationInput) {
1072    var unit = computeGreatestUnit(duration);
1073    // prevent days:7 from being interpreted as a week
1074    if (unit === 'week' && typeof durationInput === 'object' && durationInput.days) {
1075        unit = 'day';
1076    }
1077    return unit;
1078}
1079exports.computeDurationGreatestUnit = computeDurationGreatestUnit;
1080// Computes the number of units (like "hours") in the given range.
1081// Range can be a {start,end} object, separate start/end args, or a Duration.
1082// Results are based on Moment's .as() and .diff() methods, so results can depend on internal handling
1083// of month-diffing logic (which tends to vary from version to version).
1084function computeRangeAs(unit, start, end) {
1085    if (end != null) { // given start, end
1086        return end.diff(start, unit, true);
1087    }
1088    else if (moment.isDuration(start)) { // given duration
1089        return start.as(unit);
1090    }
1091    else { // given { start, end } range object
1092        return start.end.diff(start.start, unit, true);
1093    }
1094}
1095// Intelligently divides a range (specified by a start/end params) by a duration
1096function divideRangeByDuration(start, end, dur) {
1097    var months;
1098    if (durationHasTime(dur)) {
1099        return (end - start) / dur;
1100    }
1101    months = dur.asMonths();
1102    if (Math.abs(months) >= 1 && isInt(months)) {
1103        return end.diff(start, 'months', true) / months;
1104    }
1105    return end.diff(start, 'days', true) / dur.asDays();
1106}
1107exports.divideRangeByDuration = divideRangeByDuration;
1108// Intelligently divides one duration by another
1109function divideDurationByDuration(dur1, dur2) {
1110    var months1;
1111    var months2;
1112    if (durationHasTime(dur1) || durationHasTime(dur2)) {
1113        return dur1 / dur2;
1114    }
1115    months1 = dur1.asMonths();
1116    months2 = dur2.asMonths();
1117    if (Math.abs(months1) >= 1 && isInt(months1) &&
1118        Math.abs(months2) >= 1 && isInt(months2)) {
1119        return months1 / months2;
1120    }
1121    return dur1.asDays() / dur2.asDays();
1122}
1123exports.divideDurationByDuration = divideDurationByDuration;
1124// Intelligently multiplies a duration by a number
1125function multiplyDuration(dur, n) {
1126    var months;
1127    if (durationHasTime(dur)) {
1128        return moment.duration(dur * n);
1129    }
1130    months = dur.asMonths();
1131    if (Math.abs(months) >= 1 && isInt(months)) {
1132        return moment.duration({ months: months * n });
1133    }
1134    return moment.duration({ days: dur.asDays() * n });
1135}
1136exports.multiplyDuration = multiplyDuration;
1137// Returns a boolean about whether the given duration has any time parts (hours/minutes/seconds/ms)
1138function durationHasTime(dur) {
1139    return Boolean(dur.hours() || dur.minutes() || dur.seconds() || dur.milliseconds());
1140}
1141exports.durationHasTime = durationHasTime;
1142function isNativeDate(input) {
1143    return Object.prototype.toString.call(input) === '[object Date]' || input instanceof Date;
1144}
1145exports.isNativeDate = isNativeDate;
1146// Returns a boolean about whether the given input is a time string, like "06:40:00" or "06:00"
1147function isTimeString(str) {
1148    return typeof str === 'string' &&
1149        /^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(str);
1150}
1151exports.isTimeString = isTimeString;
1152/* Logging and Debug
1153----------------------------------------------------------------------------------------------------------------------*/
1154function log() {
1155    var args = [];
1156    for (var _i = 0; _i < arguments.length; _i++) {
1157        args[_i] = arguments[_i];
1158    }
1159    var console = window.console;
1160    if (console && console.log) {
1161        return console.log.apply(console, args);
1162    }
1163}
1164exports.log = log;
1165function warn() {
1166    var args = [];
1167    for (var _i = 0; _i < arguments.length; _i++) {
1168        args[_i] = arguments[_i];
1169    }
1170    var console = window.console;
1171    if (console && console.warn) {
1172        return console.warn.apply(console, args);
1173    }
1174    else {
1175        return log.apply(null, args);
1176    }
1177}
1178exports.warn = warn;
1179/* General Utilities
1180----------------------------------------------------------------------------------------------------------------------*/
1181var hasOwnPropMethod = {}.hasOwnProperty;
1182// Merges an array of objects into a single object.
1183// The second argument allows for an array of property names who's object values will be merged together.
1184function mergeProps(propObjs, complexProps) {
1185    var dest = {};
1186    var i;
1187    var name;
1188    var complexObjs;
1189    var j;
1190    var val;
1191    var props;
1192    if (complexProps) {
1193        for (i = 0; i < complexProps.length; i++) {
1194            name = complexProps[i];
1195            complexObjs = [];
1196            // collect the trailing object values, stopping when a non-object is discovered
1197            for (j = propObjs.length - 1; j >= 0; j--) {
1198                val = propObjs[j][name];
1199                if (typeof val === 'object') {
1200                    complexObjs.unshift(val);
1201                }
1202                else if (val !== undefined) {
1203                    dest[name] = val; // if there were no objects, this value will be used
1204                    break;
1205                }
1206            }
1207            // if the trailing values were objects, use the merged value
1208            if (complexObjs.length) {
1209                dest[name] = mergeProps(complexObjs);
1210            }
1211        }
1212    }
1213    // copy values into the destination, going from last to first
1214    for (i = propObjs.length - 1; i >= 0; i--) {
1215        props = propObjs[i];
1216        for (name in props) {
1217            if (!(name in dest)) { // if already assigned by previous props or complex props, don't reassign
1218                dest[name] = props[name];
1219            }
1220        }
1221    }
1222    return dest;
1223}
1224exports.mergeProps = mergeProps;
1225function copyOwnProps(src, dest) {
1226    for (var name_1 in src) {
1227        if (hasOwnProp(src, name_1)) {
1228            dest[name_1] = src[name_1];
1229        }
1230    }
1231}
1232exports.copyOwnProps = copyOwnProps;
1233function hasOwnProp(obj, name) {
1234    return hasOwnPropMethod.call(obj, name);
1235}
1236exports.hasOwnProp = hasOwnProp;
1237function applyAll(functions, thisObj, args) {
1238    if ($.isFunction(functions)) {
1239        functions = [functions];
1240    }
1241    if (functions) {
1242        var i = void 0;
1243        var ret = void 0;
1244        for (i = 0; i < functions.length; i++) {
1245            ret = functions[i].apply(thisObj, args) || ret;
1246        }
1247        return ret;
1248    }
1249}
1250exports.applyAll = applyAll;
1251function removeMatching(array, testFunc) {
1252    var removeCnt = 0;
1253    var i = 0;
1254    while (i < array.length) {
1255        if (testFunc(array[i])) { // truthy value means *remove*
1256            array.splice(i, 1);
1257            removeCnt++;
1258        }
1259        else {
1260            i++;
1261        }
1262    }
1263    return removeCnt;
1264}
1265exports.removeMatching = removeMatching;
1266function removeExact(array, exactVal) {
1267    var removeCnt = 0;
1268    var i = 0;
1269    while (i < array.length) {
1270        if (array[i] === exactVal) {
1271            array.splice(i, 1);
1272            removeCnt++;
1273        }
1274        else {
1275            i++;
1276        }
1277    }
1278    return removeCnt;
1279}
1280exports.removeExact = removeExact;
1281function isArraysEqual(a0, a1) {
1282    var len = a0.length;
1283    var i;
1284    if (len == null || len !== a1.length) { // not array? or not same length?
1285        return false;
1286    }
1287    for (i = 0; i < len; i++) {
1288        if (a0[i] !== a1[i]) {
1289            return false;
1290        }
1291    }
1292    return true;
1293}
1294exports.isArraysEqual = isArraysEqual;
1295function firstDefined() {
1296    var args = [];
1297    for (var _i = 0; _i < arguments.length; _i++) {
1298        args[_i] = arguments[_i];
1299    }
1300    for (var i = 0; i < args.length; i++) {
1301        if (args[i] !== undefined) {
1302            return args[i];
1303        }
1304    }
1305}
1306exports.firstDefined = firstDefined;
1307function htmlEscape(s) {
1308    return (s + '').replace(/&/g, '&amp;')
1309        .replace(/</g, '&lt;')
1310        .replace(/>/g, '&gt;')
1311        .replace(/'/g, '&#039;')
1312        .replace(/"/g, '&quot;')
1313        .replace(/\n/g, '<br>');
1314}
1315exports.htmlEscape = htmlEscape;
1316function stripHtmlEntities(text) {
1317    return text.replace(/&.*?;/g, '');
1318}
1319exports.stripHtmlEntities = stripHtmlEntities;
1320// Given a hash of CSS properties, returns a string of CSS.
1321// Uses property names as-is (no camel-case conversion). Will not make statements for null/undefined values.
1322function cssToStr(cssProps) {
1323    var statements = [];
1324    $.each(cssProps, function (name, val) {
1325        if (val != null) {
1326            statements.push(name + ':' + val);
1327        }
1328    });
1329    return statements.join(';');
1330}
1331exports.cssToStr = cssToStr;
1332// Given an object hash of HTML attribute names to values,
1333// generates a string that can be injected between < > in HTML
1334function attrsToStr(attrs) {
1335    var parts = [];
1336    $.each(attrs, function (name, val) {
1337        if (val != null) {
1338            parts.push(name + '="' + htmlEscape(val) + '"');
1339        }
1340    });
1341    return parts.join(' ');
1342}
1343exports.attrsToStr = attrsToStr;
1344function capitaliseFirstLetter(str) {
1345    return str.charAt(0).toUpperCase() + str.slice(1);
1346}
1347exports.capitaliseFirstLetter = capitaliseFirstLetter;
1348function compareNumbers(a, b) {
1349    return a - b;
1350}
1351exports.compareNumbers = compareNumbers;
1352function isInt(n) {
1353    return n % 1 === 0;
1354}
1355exports.isInt = isInt;
1356// Returns a method bound to the given object context.
1357// Just like one of the jQuery.proxy signatures, but without the undesired behavior of treating the same method with
1358// different contexts as identical when binding/unbinding events.
1359function proxy(obj, methodName) {
1360    var method = obj[methodName];
1361    return function () {
1362        return method.apply(obj, arguments);
1363    };
1364}
1365exports.proxy = proxy;
1366// Returns a function, that, as long as it continues to be invoked, will not
1367// be triggered. The function will be called after it stops being called for
1368// N milliseconds. If `immediate` is passed, trigger the function on the
1369// leading edge, instead of the trailing.
1370// https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714
1371function debounce(func, wait, immediate) {
1372    if (immediate === void 0) { immediate = false; }
1373    var timeout;
1374    var args;
1375    var context;
1376    var timestamp;
1377    var result;
1378    var later = function () {
1379        var last = +new Date() - timestamp;
1380        if (last < wait) {
1381            timeout = setTimeout(later, wait - last);
1382        }
1383        else {
1384            timeout = null;
1385            if (!immediate) {
1386                result = func.apply(context, args);
1387                context = args = null;
1388            }
1389        }
1390    };
1391    return function () {
1392        context = this;
1393        args = arguments;
1394        timestamp = +new Date();
1395        var callNow = immediate && !timeout;
1396        if (!timeout) {
1397            timeout = setTimeout(later, wait);
1398        }
1399        if (callNow) {
1400            result = func.apply(context, args);
1401            context = args = null;
1402        }
1403        return result;
1404    };
1405}
1406exports.debounce = debounce;
1407
1408
1409/***/ }),
1410/* 5 */
1411/***/ (function(module, exports, __webpack_require__) {
1412
1413Object.defineProperty(exports, "__esModule", { value: true });
1414var moment = __webpack_require__(0);
1415var moment_ext_1 = __webpack_require__(11);
1416var UnzonedRange = /** @class */ (function () {
1417    function UnzonedRange(startInput, endInput) {
1418        // TODO: move these into footprint.
1419        // Especially, doesn't make sense for null startMs/endMs.
1420        this.isStart = true;
1421        this.isEnd = true;
1422        if (moment.isMoment(startInput)) {
1423            startInput = startInput.clone().stripZone();
1424        }
1425        if (moment.isMoment(endInput)) {
1426            endInput = endInput.clone().stripZone();
1427        }
1428        if (startInput) {
1429            this.startMs = startInput.valueOf();
1430        }
1431        if (endInput) {
1432            this.endMs = endInput.valueOf();
1433        }
1434    }
1435    /*
1436    SIDEEFFECT: will mutate eventRanges.
1437    Will return a new array result.
1438    Only works for non-open-ended ranges.
1439    */
1440    UnzonedRange.invertRanges = function (ranges, constraintRange) {
1441        var invertedRanges = [];
1442        var startMs = constraintRange.startMs; // the end of the previous range. the start of the new range
1443        var i;
1444        var dateRange;
1445        // ranges need to be in order. required for our date-walking algorithm
1446        ranges.sort(compareUnzonedRanges);
1447        for (i = 0; i < ranges.length; i++) {
1448            dateRange = ranges[i];
1449            // add the span of time before the event (if there is any)
1450            if (dateRange.startMs > startMs) { // compare millisecond time (skip any ambig logic)
1451                invertedRanges.push(new UnzonedRange(startMs, dateRange.startMs));
1452            }
1453            if (dateRange.endMs > startMs) {
1454                startMs = dateRange.endMs;
1455            }
1456        }
1457        // add the span of time after the last event (if there is any)
1458        if (startMs < constraintRange.endMs) { // compare millisecond time (skip any ambig logic)
1459            invertedRanges.push(new UnzonedRange(startMs, constraintRange.endMs));
1460        }
1461        return invertedRanges;
1462    };
1463    UnzonedRange.prototype.intersect = function (otherRange) {
1464        var startMs = this.startMs;
1465        var endMs = this.endMs;
1466        var newRange = null;
1467        if (otherRange.startMs != null) {
1468            if (startMs == null) {
1469                startMs = otherRange.startMs;
1470            }
1471            else {
1472                startMs = Math.max(startMs, otherRange.startMs);
1473            }
1474        }
1475        if (otherRange.endMs != null) {
1476            if (endMs == null) {
1477                endMs = otherRange.endMs;
1478            }
1479            else {
1480                endMs = Math.min(endMs, otherRange.endMs);
1481            }
1482        }
1483        if (startMs == null || endMs == null || startMs < endMs) {
1484            newRange = new UnzonedRange(startMs, endMs);
1485            newRange.isStart = this.isStart && startMs === this.startMs;
1486            newRange.isEnd = this.isEnd && endMs === this.endMs;
1487        }
1488        return newRange;
1489    };
1490    UnzonedRange.prototype.intersectsWith = function (otherRange) {
1491        return (this.endMs == null || otherRange.startMs == null || this.endMs > otherRange.startMs) &&
1492            (this.startMs == null || otherRange.endMs == null || this.startMs < otherRange.endMs);
1493    };
1494    UnzonedRange.prototype.containsRange = function (innerRange) {
1495        return (this.startMs == null || (innerRange.startMs != null && innerRange.startMs >= this.startMs)) &&
1496            (this.endMs == null || (innerRange.endMs != null && innerRange.endMs <= this.endMs));
1497    };
1498    // `date` can be a moment, a Date, or a millisecond time.
1499    UnzonedRange.prototype.containsDate = function (date) {
1500        var ms = date.valueOf();
1501        return (this.startMs == null || ms >= this.startMs) &&
1502            (this.endMs == null || ms < this.endMs);
1503    };
1504    // If the given date is not within the given range, move it inside.
1505    // (If it's past the end, make it one millisecond before the end).
1506    // `date` can be a moment, a Date, or a millisecond time.
1507    // Returns a MS-time.
1508    UnzonedRange.prototype.constrainDate = function (date) {
1509        var ms = date.valueOf();
1510        if (this.startMs != null && ms < this.startMs) {
1511            ms = this.startMs;
1512        }
1513        if (this.endMs != null && ms >= this.endMs) {
1514            ms = this.endMs - 1;
1515        }
1516        return ms;
1517    };
1518    UnzonedRange.prototype.equals = function (otherRange) {
1519        return this.startMs === otherRange.startMs && this.endMs === otherRange.endMs;
1520    };
1521    UnzonedRange.prototype.clone = function () {
1522        var range = new UnzonedRange(this.startMs, this.endMs);
1523        range.isStart = this.isStart;
1524        range.isEnd = this.isEnd;
1525        return range;
1526    };
1527    // Returns an ambig-zoned moment from startMs.
1528    // BEWARE: returned moment is not localized.
1529    // Formatting and start-of-week will be default.
1530    UnzonedRange.prototype.getStart = function () {
1531        if (this.startMs != null) {
1532            return moment_ext_1.default.utc(this.startMs).stripZone();
1533        }
1534        return null;
1535    };
1536    // Returns an ambig-zoned moment from startMs.
1537    // BEWARE: returned moment is not localized.
1538    // Formatting and start-of-week will be default.
1539    UnzonedRange.prototype.getEnd = function () {
1540        if (this.endMs != null) {
1541            return moment_ext_1.default.utc(this.endMs).stripZone();
1542        }
1543        return null;
1544    };
1545    UnzonedRange.prototype.as = function (unit) {
1546        return moment.utc(this.endMs).diff(moment.utc(this.startMs), unit, true);
1547    };
1548    return UnzonedRange;
1549}());
1550exports.default = UnzonedRange;
1551/*
1552Only works for non-open-ended ranges.
1553*/
1554function compareUnzonedRanges(range1, range2) {
1555    return range1.startMs - range2.startMs; // earlier ranges go first
1556}
1557
1558
1559/***/ }),
1560/* 6 */
1561/***/ (function(module, exports, __webpack_require__) {
1562
1563Object.defineProperty(exports, "__esModule", { value: true });
1564var tslib_1 = __webpack_require__(2);
1565var $ = __webpack_require__(3);
1566var ParsableModelMixin_1 = __webpack_require__(52);
1567var Class_1 = __webpack_require__(35);
1568var EventDefParser_1 = __webpack_require__(36);
1569var EventSource = /** @class */ (function (_super) {
1570    tslib_1.__extends(EventSource, _super);
1571    // can we do away with calendar? at least for the abstract?
1572    // useful for buildEventDef
1573    function EventSource(calendar) {
1574        var _this = _super.call(this) || this;
1575        _this.calendar = calendar;
1576        _this.className = [];
1577        _this.uid = String(EventSource.uuid++);
1578        return _this;
1579    }
1580    /*
1581    rawInput can be any data type!
1582    */
1583    EventSource.parse = function (rawInput, calendar) {
1584        var source = new this(calendar);
1585        if (typeof rawInput === 'object') {
1586            if (source.applyProps(rawInput)) {
1587                return source;
1588            }
1589        }
1590        return false;
1591    };
1592    EventSource.normalizeId = function (id) {
1593        if (id) {
1594            return String(id);
1595        }
1596        return null;
1597    };
1598    EventSource.prototype.fetch = function (start, end, timezone) {
1599        // subclasses must implement. must return a promise.
1600    };
1601    EventSource.prototype.removeEventDefsById = function (eventDefId) {
1602        // optional for subclasses to implement
1603    };
1604    EventSource.prototype.removeAllEventDefs = function () {
1605        // optional for subclasses to implement
1606    };
1607    /*
1608    For compairing/matching
1609    */
1610    EventSource.prototype.getPrimitive = function (otherSource) {
1611        // subclasses must implement
1612    };
1613    EventSource.prototype.parseEventDefs = function (rawEventDefs) {
1614        var i;
1615        var eventDef;
1616        var eventDefs = [];
1617        for (i = 0; i < rawEventDefs.length; i++) {
1618            eventDef = this.parseEventDef(rawEventDefs[i]);
1619            if (eventDef) {
1620                eventDefs.push(eventDef);
1621            }
1622        }
1623        return eventDefs;
1624    };
1625    EventSource.prototype.parseEventDef = function (rawInput) {
1626        var calendarTransform = this.calendar.opt('eventDataTransform');
1627        var sourceTransform = this.eventDataTransform;
1628        if (calendarTransform) {
1629            rawInput = calendarTransform(rawInput, this.calendar);
1630        }
1631        if (sourceTransform) {
1632            rawInput = sourceTransform(rawInput, this.calendar);
1633        }
1634        return EventDefParser_1.default.parse(rawInput, this);
1635    };
1636    EventSource.prototype.applyManualStandardProps = function (rawProps) {
1637        if (rawProps.id != null) {
1638            this.id = EventSource.normalizeId(rawProps.id);
1639        }
1640        // TODO: converge with EventDef
1641        if ($.isArray(rawProps.className)) {
1642            this.className = rawProps.className;
1643        }
1644        else if (typeof rawProps.className === 'string') {
1645            this.className = rawProps.className.split(/\s+/);
1646        }
1647        return true;
1648    };
1649    EventSource.uuid = 0;
1650    EventSource.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps;
1651    EventSource.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps;
1652    return EventSource;
1653}(Class_1.default));
1654exports.default = EventSource;
1655ParsableModelMixin_1.default.mixInto(EventSource);
1656// Parsing
1657// ---------------------------------------------------------------------------------------------------------------------
1658EventSource.defineStandardProps({
1659    // manually process...
1660    id: false,
1661    className: false,
1662    // automatically transfer...
1663    color: true,
1664    backgroundColor: true,
1665    borderColor: true,
1666    textColor: true,
1667    editable: true,
1668    startEditable: true,
1669    durationEditable: true,
1670    rendering: true,
1671    overlap: true,
1672    constraint: true,
1673    allDayDefault: true,
1674    eventDataTransform: true
1675});
1676
1677
1678/***/ }),
1679/* 7 */
1680/***/ (function(module, exports, __webpack_require__) {
1681
1682/*
1683Utility methods for easily listening to events on another object,
1684and more importantly, easily unlistening from them.
1685
1686USAGE:
1687  import { default as ListenerMixin, ListenerInterface } from './ListenerMixin'
1688in class:
1689  listenTo: ListenerInterface['listenTo']
1690  stopListeningTo: ListenerInterface['stopListeningTo']
1691after class:
1692  ListenerMixin.mixInto(TheClass)
1693*/
1694Object.defineProperty(exports, "__esModule", { value: true });
1695var tslib_1 = __webpack_require__(2);
1696var $ = __webpack_require__(3);
1697var Mixin_1 = __webpack_require__(15);
1698var guid = 0;
1699var ListenerMixin = /** @class */ (function (_super) {
1700    tslib_1.__extends(ListenerMixin, _super);
1701    function ListenerMixin() {
1702        return _super !== null && _super.apply(this, arguments) || this;
1703    }
1704    /*
1705    Given an `other` object that has on/off methods, bind the given `callback` to an event by the given name.
1706    The `callback` will be called with the `this` context of the object that .listenTo is being called on.
1707    Can be called:
1708      .listenTo(other, eventName, callback)
1709    OR
1710      .listenTo(other, {
1711        eventName1: callback1,
1712        eventName2: callback2
1713      })
1714    */
1715    ListenerMixin.prototype.listenTo = function (other, arg, callback) {
1716        if (typeof arg === 'object') { // given dictionary of callbacks
1717            for (var eventName in arg) {
1718                if (arg.hasOwnProperty(eventName)) {
1719                    this.listenTo(other, eventName, arg[eventName]);
1720                }
1721            }
1722        }
1723        else if (typeof arg === 'string') {
1724            other.on(arg + '.' + this.getListenerNamespace(), // use event namespacing to identify this object
1725            $.proxy(callback, this) // always use `this` context
1726            // the usually-undesired jQuery guid behavior doesn't matter,
1727            // because we always unbind via namespace
1728            );
1729        }
1730    };
1731    /*
1732    Causes the current object to stop listening to events on the `other` object.
1733    `eventName` is optional. If omitted, will stop listening to ALL events on `other`.
1734    */
1735    ListenerMixin.prototype.stopListeningTo = function (other, eventName) {
1736        other.off((eventName || '') + '.' + this.getListenerNamespace());
1737    };
1738    /*
1739    Returns a string, unique to this object, to be used for event namespacing
1740    */
1741    ListenerMixin.prototype.getListenerNamespace = function () {
1742        if (this.listenerId == null) {
1743            this.listenerId = guid++;
1744        }
1745        return '_listener' + this.listenerId;
1746    };
1747    return ListenerMixin;
1748}(Mixin_1.default));
1749exports.default = ListenerMixin;
1750
1751
1752/***/ }),
1753/* 8 */,
1754/* 9 */
1755/***/ (function(module, exports, __webpack_require__) {
1756
1757Object.defineProperty(exports, "__esModule", { value: true });
1758var tslib_1 = __webpack_require__(2);
1759var EventDef_1 = __webpack_require__(37);
1760var EventInstance_1 = __webpack_require__(53);
1761var EventDateProfile_1 = __webpack_require__(16);
1762var SingleEventDef = /** @class */ (function (_super) {
1763    tslib_1.__extends(SingleEventDef, _super);
1764    function SingleEventDef() {
1765        return _super !== null && _super.apply(this, arguments) || this;
1766    }
1767    /*
1768    Will receive start/end params, but will be ignored.
1769    */
1770    SingleEventDef.prototype.buildInstances = function () {
1771        return [this.buildInstance()];
1772    };
1773    SingleEventDef.prototype.buildInstance = function () {
1774        return new EventInstance_1.default(this, // definition
1775        this.dateProfile);
1776    };
1777    SingleEventDef.prototype.isAllDay = function () {
1778        return this.dateProfile.isAllDay();
1779    };
1780    SingleEventDef.prototype.clone = function () {
1781        var def = _super.prototype.clone.call(this);
1782        def.dateProfile = this.dateProfile;
1783        return def;
1784    };
1785    SingleEventDef.prototype.rezone = function () {
1786        var calendar = this.source.calendar;
1787        var dateProfile = this.dateProfile;
1788        this.dateProfile = new EventDateProfile_1.default(calendar.moment(dateProfile.start), dateProfile.end ? calendar.moment(dateProfile.end) : null, calendar);
1789    };
1790    /*
1791    NOTE: if super-method fails, should still attempt to apply
1792    */
1793    SingleEventDef.prototype.applyManualStandardProps = function (rawProps) {
1794        var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps);
1795        var dateProfile = EventDateProfile_1.default.parse(rawProps, this.source); // returns null on failure
1796        if (dateProfile) {
1797            this.dateProfile = dateProfile;
1798            // make sure `date` shows up in the legacy event objects as-is
1799            if (rawProps.date != null) {
1800                this.miscProps.date = rawProps.date;
1801            }
1802            return superSuccess;
1803        }
1804        else {
1805            return false;
1806        }
1807    };
1808    return SingleEventDef;
1809}(EventDef_1.default));
1810exports.default = SingleEventDef;
1811// Parsing
1812// ---------------------------------------------------------------------------------------------------------------------
1813SingleEventDef.defineStandardProps({
1814    start: false,
1815    date: false,
1816    end: false,
1817    allDay: false
1818});
1819
1820
1821/***/ }),
1822/* 10 */,
1823/* 11 */
1824/***/ (function(module, exports, __webpack_require__) {
1825
1826Object.defineProperty(exports, "__esModule", { value: true });
1827var moment = __webpack_require__(0);
1828var $ = __webpack_require__(3);
1829var util_1 = __webpack_require__(4);
1830var ambigDateOfMonthRegex = /^\s*\d{4}-\d\d$/;
1831var ambigTimeOrZoneRegex = /^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/;
1832var newMomentProto = moment.fn; // where we will attach our new methods
1833exports.newMomentProto = newMomentProto;
1834var oldMomentProto = $.extend({}, newMomentProto); // copy of original moment methods
1835exports.oldMomentProto = oldMomentProto;
1836// tell momentjs to transfer these properties upon clone
1837var momentProperties = moment.momentProperties;
1838momentProperties.push('_fullCalendar');
1839momentProperties.push('_ambigTime');
1840momentProperties.push('_ambigZone');
1841/*
1842Call this if you want Moment's original format method to be used
1843*/
1844function oldMomentFormat(mom, formatStr) {
1845    return oldMomentProto.format.call(mom, formatStr); // oldMomentProto defined in moment-ext.js
1846}
1847exports.oldMomentFormat = oldMomentFormat;
1848// Creating
1849// -------------------------------------------------------------------------------------------------
1850// Creates a new moment, similar to the vanilla moment(...) constructor, but with
1851// extra features (ambiguous time, enhanced formatting). When given an existing moment,
1852// it will function as a clone (and retain the zone of the moment). Anything else will
1853// result in a moment in the local zone.
1854var momentExt = function () {
1855    return makeMoment(arguments);
1856};
1857exports.default = momentExt;
1858// Sames as momentExt, but forces the resulting moment to be in the UTC timezone.
1859momentExt.utc = function () {
1860    var mom = makeMoment(arguments, true);
1861    // Force it into UTC because makeMoment doesn't guarantee it
1862    // (if given a pre-existing moment for example)
1863    if (mom.hasTime()) { // don't give ambiguously-timed moments a UTC zone
1864        mom.utc();
1865    }
1866    return mom;
1867};
1868// Same as momentExt, but when given an ISO8601 string, the timezone offset is preserved.
1869// ISO8601 strings with no timezone offset will become ambiguously zoned.
1870momentExt.parseZone = function () {
1871    return makeMoment(arguments, true, true);
1872};
1873// Builds an enhanced moment from args. When given an existing moment, it clones. When given a
1874// native Date, or called with no arguments (the current time), the resulting moment will be local.
1875// Anything else needs to be "parsed" (a string or an array), and will be affected by:
1876//    parseAsUTC - if there is no zone information, should we parse the input in UTC?
1877//    parseZone - if there is zone information, should we force the zone of the moment?
1878function makeMoment(args, parseAsUTC, parseZone) {
1879    if (parseAsUTC === void 0) { parseAsUTC = false; }
1880    if (parseZone === void 0) { parseZone = false; }
1881    var input = args[0];
1882    var isSingleString = args.length === 1 && typeof input === 'string';
1883    var isAmbigTime;
1884    var isAmbigZone;
1885    var ambigMatch;
1886    var mom;
1887    if (moment.isMoment(input) || util_1.isNativeDate(input) || input === undefined) {
1888        mom = moment.apply(null, args);
1889    }
1890    else { // "parsing" is required
1891        isAmbigTime = false;
1892        isAmbigZone = false;
1893        if (isSingleString) {
1894            if (ambigDateOfMonthRegex.test(input)) {
1895                // accept strings like '2014-05', but convert to the first of the month
1896                input += '-01';
1897                args = [input]; // for when we pass it on to moment's constructor
1898                isAmbigTime = true;
1899                isAmbigZone = true;
1900            }
1901            else if ((ambigMatch = ambigTimeOrZoneRegex.exec(input))) {
1902                isAmbigTime = !ambigMatch[5]; // no time part?
1903                isAmbigZone = true;
1904            }
1905        }
1906        else if ($.isArray(input)) {
1907            // arrays have no timezone information, so assume ambiguous zone
1908            isAmbigZone = true;
1909        }
1910        // otherwise, probably a string with a format
1911        if (parseAsUTC || isAmbigTime) {
1912            mom = moment.utc.apply(moment, args);
1913        }
1914        else {
1915            mom = moment.apply(null, args);
1916        }
1917        if (isAmbigTime) {
1918            mom._ambigTime = true;
1919            mom._ambigZone = true; // ambiguous time always means ambiguous zone
1920        }
1921        else if (parseZone) { // let's record the inputted zone somehow
1922            if (isAmbigZone) {
1923                mom._ambigZone = true;
1924            }
1925            else if (isSingleString) {
1926                mom.utcOffset(input); // if not a valid zone, will assign UTC
1927            }
1928        }
1929    }
1930    mom._fullCalendar = true; // flag for extended functionality
1931    return mom;
1932}
1933// Week Number
1934// -------------------------------------------------------------------------------------------------
1935// Returns the week number, considering the locale's custom week number calcuation
1936// `weeks` is an alias for `week`
1937newMomentProto.week = newMomentProto.weeks = function (input) {
1938    var weekCalc = this._locale._fullCalendar_weekCalc;
1939    if (input == null && typeof weekCalc === 'function') { // custom function only works for getter
1940        return weekCalc(this);
1941    }
1942    else if (weekCalc === 'ISO') {
1943        return oldMomentProto.isoWeek.apply(this, arguments); // ISO getter/setter
1944    }
1945    return oldMomentProto.week.apply(this, arguments); // local getter/setter
1946};
1947// Time-of-day
1948// -------------------------------------------------------------------------------------------------
1949// GETTER
1950// Returns a Duration with the hours/minutes/seconds/ms values of the moment.
1951// If the moment has an ambiguous time, a duration of 00:00 will be returned.
1952//
1953// SETTER
1954// You can supply a Duration, a Moment, or a Duration-like argument.
1955// When setting the time, and the moment has an ambiguous time, it then becomes unambiguous.
1956newMomentProto.time = function (time) {
1957    // Fallback to the original method (if there is one) if this moment wasn't created via FullCalendar.
1958    // `time` is a generic enough method name where this precaution is necessary to avoid collisions w/ other plugins.
1959    if (!this._fullCalendar) {
1960        return oldMomentProto.time.apply(this, arguments);
1961    }
1962    if (time == null) { // getter
1963        return moment.duration({
1964            hours: this.hours(),
1965            minutes: this.minutes(),
1966            seconds: this.seconds(),
1967            milliseconds: this.milliseconds()
1968        });
1969    }
1970    else { // setter
1971        this._ambigTime = false; // mark that the moment now has a time
1972        if (!moment.isDuration(time) && !moment.isMoment(time)) {
1973            time = moment.duration(time);
1974        }
1975        // The day value should cause overflow (so 24 hours becomes 00:00:00 of next day).
1976        // Only for Duration times, not Moment times.
1977        var dayHours = 0;
1978        if (moment.isDuration(time)) {
1979            dayHours = Math.floor(time.asDays()) * 24;
1980        }
1981        // We need to set the individual fields.
1982        // Can't use startOf('day') then add duration. In case of DST at start of day.
1983        return this.hours(dayHours + time.hours())
1984            .minutes(time.minutes())
1985            .seconds(time.seconds())
1986            .milliseconds(time.milliseconds());
1987    }
1988};
1989// Converts the moment to UTC, stripping out its time-of-day and timezone offset,
1990// but preserving its YMD. A moment with a stripped time will display no time
1991// nor timezone offset when .format() is called.
1992newMomentProto.stripTime = function () {
1993    if (!this._ambigTime) {
1994        this.utc(true); // keepLocalTime=true (for keeping *date* value)
1995        // set time to zero
1996        this.set({
1997            hours: 0,
1998            minutes: 0,
1999            seconds: 0,
2000            ms: 0
2001        });
2002        // Mark the time as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),
2003        // which clears all ambig flags.
2004        this._ambigTime = true;
2005        this._ambigZone = true; // if ambiguous time, also ambiguous timezone offset
2006    }
2007    return this; // for chaining
2008};
2009// Returns if the moment has a non-ambiguous time (boolean)
2010newMomentProto.hasTime = function () {
2011    return !this._ambigTime;
2012};
2013// Timezone
2014// -------------------------------------------------------------------------------------------------
2015// Converts the moment to UTC, stripping out its timezone offset, but preserving its
2016// YMD and time-of-day. A moment with a stripped timezone offset will display no
2017// timezone offset when .format() is called.
2018newMomentProto.stripZone = function () {
2019    var wasAmbigTime;
2020    if (!this._ambigZone) {
2021        wasAmbigTime = this._ambigTime;
2022        this.utc(true); // keepLocalTime=true (for keeping date and time values)
2023        // the above call to .utc()/.utcOffset() unfortunately might clear the ambig flags, so restore
2024        this._ambigTime = wasAmbigTime || false;
2025        // Mark the zone as ambiguous. This needs to happen after the .utc() call, which might call .utcOffset(),
2026        // which clears the ambig flags.
2027        this._ambigZone = true;
2028    }
2029    return this; // for chaining
2030};
2031// Returns of the moment has a non-ambiguous timezone offset (boolean)
2032newMomentProto.hasZone = function () {
2033    return !this._ambigZone;
2034};
2035// implicitly marks a zone
2036newMomentProto.local = function (keepLocalTime) {
2037    // for when converting from ambiguously-zoned to local,
2038    // keep the time values when converting from UTC -> local
2039    oldMomentProto.local.call(this, this._ambigZone || keepLocalTime);
2040    // ensure non-ambiguous
2041    // this probably already happened via local() -> utcOffset(), but don't rely on Moment's internals
2042    this._ambigTime = false;
2043    this._ambigZone = false;
2044    return this; // for chaining
2045};
2046// implicitly marks a zone
2047newMomentProto.utc = function (keepLocalTime) {
2048    oldMomentProto.utc.call(this, keepLocalTime);
2049    // ensure non-ambiguous
2050    // this probably already happened via utc() -> utcOffset(), but don't rely on Moment's internals
2051    this._ambigTime = false;
2052    this._ambigZone = false;
2053    return this;
2054};
2055// implicitly marks a zone (will probably get called upon .utc() and .local())
2056newMomentProto.utcOffset = function (tzo) {
2057    if (tzo != null) { // setter
2058        // these assignments needs to happen before the original zone method is called.
2059        // I forget why, something to do with a browser crash.
2060        this._ambigTime = false;
2061        this._ambigZone = false;
2062    }
2063    return oldMomentProto.utcOffset.apply(this, arguments);
2064};
2065
2066
2067/***/ }),
2068/* 12 */
2069/***/ (function(module, exports) {
2070
2071Object.defineProperty(exports, "__esModule", { value: true });
2072/*
2073Meant to be immutable
2074*/
2075var ComponentFootprint = /** @class */ (function () {
2076    function ComponentFootprint(unzonedRange, isAllDay) {
2077        this.isAllDay = false; // component can choose to ignore this
2078        this.unzonedRange = unzonedRange;
2079        this.isAllDay = isAllDay;
2080    }
2081    /*
2082    Only works for non-open-ended ranges.
2083    */
2084    ComponentFootprint.prototype.toLegacy = function (calendar) {
2085        return {
2086            start: calendar.msToMoment(this.unzonedRange.startMs, this.isAllDay),
2087            end: calendar.msToMoment(this.unzonedRange.endMs, this.isAllDay)
2088        };
2089    };
2090    return ComponentFootprint;
2091}());
2092exports.default = ComponentFootprint;
2093
2094
2095/***/ }),
2096/* 13 */
2097/***/ (function(module, exports, __webpack_require__) {
2098
2099/*
2100USAGE:
2101  import { default as EmitterMixin, EmitterInterface } from './EmitterMixin'
2102in class:
2103  on: EmitterInterface['on']
2104  one: EmitterInterface['one']
2105  off: EmitterInterface['off']
2106  trigger: EmitterInterface['trigger']
2107  triggerWith: EmitterInterface['triggerWith']
2108  hasHandlers: EmitterInterface['hasHandlers']
2109after class:
2110  EmitterMixin.mixInto(TheClass)
2111*/
2112Object.defineProperty(exports, "__esModule", { value: true });
2113var tslib_1 = __webpack_require__(2);
2114var $ = __webpack_require__(3);
2115var Mixin_1 = __webpack_require__(15);
2116var EmitterMixin = /** @class */ (function (_super) {
2117    tslib_1.__extends(EmitterMixin, _super);
2118    function EmitterMixin() {
2119        return _super !== null && _super.apply(this, arguments) || this;
2120    }
2121    // jQuery-ification via $(this) allows a non-DOM object to have
2122    // the same event handling capabilities (including namespaces).
2123    EmitterMixin.prototype.on = function (types, handler) {
2124        $(this).on(types, this._prepareIntercept(handler));
2125        return this; // for chaining
2126    };
2127    EmitterMixin.prototype.one = function (types, handler) {
2128        $(this).one(types, this._prepareIntercept(handler));
2129        return this; // for chaining
2130    };
2131    EmitterMixin.prototype._prepareIntercept = function (handler) {
2132        // handlers are always called with an "event" object as their first param.
2133        // sneak the `this` context and arguments into the extra parameter object
2134        // and forward them on to the original handler.
2135        var intercept = function (ev, extra) {
2136            return handler.apply(extra.context || this, extra.args || []);
2137        };
2138        // mimick jQuery's internal "proxy" system (risky, I know)
2139        // causing all functions with the same .guid to appear to be the same.
2140        // https://github.com/jquery/jquery/blob/2.2.4/src/core.js#L448
2141        // this is needed for calling .off with the original non-intercept handler.
2142        if (!handler.guid) {
2143            handler.guid = $.guid++;
2144        }
2145        intercept.guid = handler.guid;
2146        return intercept;
2147    };
2148    EmitterMixin.prototype.off = function (types, handler) {
2149        $(this).off(types, handler);
2150        return this; // for chaining
2151    };
2152    EmitterMixin.prototype.trigger = function (types) {
2153        var args = [];
2154        for (var _i = 1; _i < arguments.length; _i++) {
2155            args[_i - 1] = arguments[_i];
2156        }
2157        // pass in "extra" info to the intercept
2158        $(this).triggerHandler(types, { args: args });
2159        return this; // for chaining
2160    };
2161    EmitterMixin.prototype.triggerWith = function (types, context, args
2161) {
2162        // `triggerHandler` is less reliant on the DOM compared to `trigger`.
2163        // pass in "extra" info to the intercept.
2164        $(this).triggerHandler(types, { context: context, args: args });
2165        return this; // for chaining
2166    };
2167    EmitterMixin.prototype.hasHandlers = function (type) {
2168        var hash = $._data(this, 'events'); // http://blog.jquery.com/2012/08/09/jquery-1-8-released/
2169        return hash && hash[type] && hash[type].length > 0;
2170    };
2171    return EmitterMixin;
2172}(Mixin_1.default));
2173exports.default = EmitterMixin;
2174
2175
2176/***/ }),
2177/* 14 */
2178/***/ (function(module, exports) {
2179
2180Object.defineProperty(exports, "__esModule", { value: true });
2181var Interaction = /** @class */ (function () {
2182    function Interaction(component) {
2183        this.view = component._getView();
2184        this.component = component;
2185    }
2186    Interaction.prototype.opt = function (name) {
2187        return this.view.opt(name);
2188    };
2189    Interaction.prototype.end = function () {
2190        // subclasses can implement
2191    };
2192    return Interaction;
2193}());
2194exports.default = Interaction;
2195
2196
2197/***/ }),
2198/* 15 */
2199/***/ (function(module, exports) {
2200
2201Object.defineProperty(exports, "__esModule", { value: true });
2202var Mixin = /** @class */ (function () {
2203    function Mixin() {
2204    }
2205    Mixin.mixInto = function (destClass) {
2206        var _this = this;
2207        Object.getOwnPropertyNames(this.prototype).forEach(function (name) {
2208            if (!destClass.prototype[name]) { // if destination class doesn't already define it
2209                destClass.prototype[name] = _this.prototype[name];
2210            }
2211        });
2212    };
2213    /*
2214    will override existing methods
2215    TODO: remove! not used anymore
2216    */
2217    Mixin.mixOver = function (destClass) {
2218        var _this = this;
2219        Object.getOwnPropertyNames(this.prototype).forEach(function (name) {
2220            destClass.prototype[name] = _this.prototype[name];
2221        });
2222    };
2223    return Mixin;
2224}());
2225exports.default = Mixin;
2226
2227
2228/***/ }),
2229/* 16 */
2230/***/ (function(module, exports, __webpack_require__) {
2231
2232Object.defineProperty(exports, "__esModule", { value: true });
2233var UnzonedRange_1 = __webpack_require__(5);
2234/*
2235Meant to be immutable
2236*/
2237var EventDateProfile = /** @class */ (function () {
2238    function EventDateProfile(start, end, calendar) {
2239        this.start = start;
2240        this.end = end || null;
2241        this.unzonedRange = this.buildUnzonedRange(calendar);
2242    }
2243    /*
2244    Needs an EventSource object
2245    */
2246    EventDateProfile.parse = function (rawProps, source) {
2247        var startInput = rawProps.start || rawProps.date;
2248        var endInput = rawProps.end;
2249        if (!startInput) {
2250            return false;
2251        }
2252        var calendar = source.calendar;
2253        var start = calendar.moment(startInput);
2254        var end = endInput ? calendar.moment(endInput) : null;
2255        var forcedAllDay = rawProps.allDay;
2256        var forceEventDuration = calendar.opt('forceEventDuration');
2257        if (!start.isValid()) {
2258            return false;
2259        }
2260        if (forcedAllDay == null) {
2261            forcedAllDay = source.allDayDefault;
2262            if (forcedAllDay == null) {
2263                forcedAllDay = calendar.opt('allDayDefault');
2264            }
2265        }
2266        if (forcedAllDay === true) {
2267            start.stripTime();
2268            if (end) {
2269                end.stripTime();
2270            }
2271        }
2272        else if (forcedAllDay === false) {
2273            if (!start.hasTime()) {
2274                start.time(0);
2275            }
2276            if (end && !end.hasTime()) {
2277                end.time(0);
2278            }
2279        }
2280        if (end && (!end.isValid() || !end.isAfter(start))) {
2281            end = null;
2282        }
2283        if (!end && forceEventDuration) {
2284            end = calendar.getDefaultEventEnd(!start.hasTime(), start);
2285        }
2286        return new EventDateProfile(start, end, calendar);
2287    };
2288    EventDateProfile.isStandardProp = function (propName) {
2289        return propName === 'start' || propName === 'date' || propName === 'end' || propName === 'allDay';
2290    };
2291    EventDateProfile.prototype.isAllDay = function () {
2292        return !(this.start.hasTime() || (this.end && this.end.hasTime()));
2293    };
2294    /*
2295    Needs a Calendar object
2296    */
2297    EventDateProfile.prototype.buildUnzonedRange = function (calendar) {
2298        var startMs = this.start.clone().stripZone().valueOf();
2299        var endMs = this.getEnd(calendar).stripZone().valueOf();
2300        return new UnzonedRange_1.default(startMs, endMs);
2301    };
2302    /*
2303    Needs a Calendar object
2304    */
2305    EventDateProfile.prototype.getEnd = function (calendar) {
2306        return this.end ?
2307            this.end.clone() :
2308            // derive the end from the start and allDay. compute allDay if necessary
2309            calendar.getDefaultEventEnd(this.isAllDay(), this.start);
2310    };
2311    return EventDateProfile;
2312}());
2313exports.default = EventDateProfile;
2314
2315
2316/***/ }),
2317/* 17 */
2318/***/ (function(module, exports, __webpack_require__) {
2319
2320Object.defineProperty(exports, "__esModule", { value: true });
2321var tslib_1 = __webpack_require__(2);
2322var util_1 = __webpack_require__(4);
2323var DragListener_1 = __webpack_require__(59);
2324/* Tracks mouse movements over a component and raises events about which hit the mouse is over.
2325------------------------------------------------------------------------------------------------------------------------
2326options:
2327- subjectEl
2328- subjectCenter
2329*/
2330var HitDragListener = /** @class */ (function (_super) {
2331    tslib_1.__extends(HitDragListener, _super);
2332    function HitDragListener(component, options) {
2333        var _this = _super.call(this, options) || this;
2334        _this.component = component;
2335        return _this;
2336    }
2337    // Called when drag listening starts (but a real drag has not necessarily began).
2338    // ev might be undefined if dragging was started manually.
2339    HitDragListener.prototype.handleInteractionStart = function (ev) {
2340        var subjectEl = this.subjectEl;
2341        var subjectRect;
2342        var origPoint;
2343        var point;
2344        this.component.hitsNeeded();
2345        this.computeScrollBounds(); // for autoscroll
2346        if (ev) {
2347            origPoint = { left: util_1.getEvX(ev), top: util_1.getEvY(ev) };
2348            point = origPoint;
2349            // constrain the point to bounds of the element being dragged
2350            if (subjectEl) {
2351                subjectRect = util_1.getOuterRect(subjectEl); // used for centering as well
2352                point = util_1.constrainPoint(point, subjectRect);
2353            }
2354            this.origHit = this.queryHit(point.left, point.top);
2355            // treat the center of the subject as the collision point?
2356            if (subjectEl && this.options.subjectCenter) {
2357                // only consider the area the subject overlaps the hit. best for large subjects.
2358                // TODO: skip this if hit didn't supply left/right/top/bottom
2359                if (this.origHit) {
2360                    subjectRect = util_1.intersectRects(this.origHit, subjectRect) ||
2361                        subjectRect; // in case there is no intersection
2362                }
2363                point = util_1.getRectCenter(subjectRect);
2364            }
2365            this.coordAdjust = util_1.diffPoints(point, origPoint); // point - origPoint
2366        }
2367        else {
2368            this.origHit = null;
2369            this.coordAdjust = null;
2370        }
2371        // call the super-method. do it after origHit has been computed
2372        _super.prototype.handleInteractionStart.call(this, ev);
2373    };
2374    // Called when the actual drag has started
2375    HitDragListener.prototype.handleDragStart = function (ev) {
2376        var hit;
2377        _super.prototype.handleDragStart.call(this, ev);
2378        // might be different from this.origHit if the min-distance is large
2379        hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev));
2380        // report the initial hit the mouse is over
2381        // especially important if no min-distance and drag starts immediately
2382        if (hit) {
2383            this.handleHitOver(hit);
2384        }
2385    };
2386    // Called when the drag moves
2387    HitDragListener.prototype.handleDrag = function (dx, dy, ev) {
2388        var hit;
2389        _super.prototype.handleDrag.call(this, dx, dy, ev);
2390        hit = this.queryHit(util_1.getEvX(ev), util_1.getEvY(ev));
2391        if (!isHitsEqual(hit, this.hit)) { // a different hit than before?
2392            if (this.hit) {
2393                this.handleHitOut();
2394            }
2395            if (hit) {
2396                this.handleHitOver(hit);
2397            }
2398        }
2399    };
2400    // Called when dragging has been stopped
2401    HitDragListener.prototype.handleDragEnd = function (ev) {
2402        this.handleHitDone();
2403        _super.prototype.handleDragEnd.call(this, ev);
2404    };
2405    // Called when a the mouse has just moved over a new hit
2406    HitDragListener.prototype.handleHitOver = function (hit) {
2407        var isOrig = isHitsEqual(hit, this.origHit);
2408        this.hit = hit;
2409        this.trigger('hitOver', this.hit, isOrig, this.origHit);
2410    };
2411    // Called when the mouse has just moved out of a hit
2412    HitDragListener.prototype.handleHitOut = function () {
2413        if (this.hit) {
2414            this.trigger('hitOut', this.hit);
2415            this.handleHitDone();
2416            this.hit = null;
2417        }
2418    };
2419    // Called after a hitOut. Also called before a dragStop
2420    HitDragListener.prototype.handleHitDone = function () {
2421        if (this.hit) {
2422            this.trigger('hitDone', this.hit);
2423        }
2424    };
2425    // Called when the interaction ends, whether there was a real drag or not
2426    HitDragListener.prototype.handleInteractionEnd = function (ev, isCancelled) {
2427        _super.prototype.handleInteractionEnd.call(this, ev, isCancelled);
2428        this.origHit = null;
2429        this.hit = null;
2430        this.component.hitsNotNeeded();
2431    };
2432    // Called when scrolling has stopped, whether through auto scroll, or the user scrolling
2433    HitDragListener.prototype.handleScrollEnd = function () {
2434        _super.prototype.handleScrollEnd.call(this);
2435        // hits' absolute positions will be in new places after a user's scroll.
2436        // HACK for recomputing.
2437        if (this.isDragging) {
2438            this.component.releaseHits();
2439            this.component.prepareHits();
2440        }
2441    };
2442    // Gets the hit underneath the coordinates for the given mouse event
2443    HitDragListener.prototype.queryHit = function (left, top) {
2444        if (this.coordAdjust) {
2445            left += this.coordAdjust.left;
2446            top += this.coordAdjust.top;
2447        }
2448        return this.component.queryHit(left, top);
2449    };
2450    return HitDragListener;
2451}(DragListener_1.default));
2452exports.default = HitDragListener;
2453// Returns `true` if the hits are identically equal. `false` otherwise. Must be from the same component.
2454// Two null values will be considered equal, as two "out of the component" states are the same.
2455function isHitsEqual(hit0, hit1) {
2456    if (!hit0 && !hit1) {
2457        return true;
2458    }
2459    if (hit0 && hit1) {
2460        return hit0.component === hit1.component &&
2461            isHitPropsWithin(hit0, hit1) &&
2462            isHitPropsWithin(hit1, hit0); // ensures all props are identical
2463    }
2464    return false;
2465}
2466// Returns true if all of subHit's non-standard properties are within superHit
2467function isHitPropsWithin(subHit, superHit) {
2468    for (var propName in subHit) {
2469        if (!/^(component|left|right|top|bottom)$/.test(propName)) {
2470            if (subHit[propName] !== superHit[propName]) {
2471                return false;
2472            }
2473        }
2474    }
2475    return true;
2476}
2477
2478
2479/***/ }),
2480/* 18 */
2481/***/ (function(module, exports, __webpack_require__) {
2482
2483Object.defineProperty(exports, "__esModule", { value: true });
2484exports.version = '3.10.5';
2485// When introducing internal API incompatibilities (where fullcalendar plugins would break),
2486// the minor version of the calendar should be upped (ex: 2.7.2 -> 2.8.0)
2487// and the below integer should be incremented.
2488exports.internalApiVersion = 12;
2489var util_1 = __webpack_require__(4);
2490exports.applyAll = util_1.applyAll;
2491exports.debounce = util_1.debounce;
2492exports.isInt = util_1.isInt;
2493exports.htmlEscape = util_1.htmlEscape;
2494exports.cssToStr = util_1.cssToStr;
2495exports.proxy = util_1.proxy;
2496exports.capitaliseFirstLetter = util_1.capitaliseFirstLetter;
2497exports.getOuterRect = util_1.getOuterRect;
2498exports.getClientRect = util_1.getClientRect;
2499exports.getContentRect = util_1.getContentRect;
2500exports.getScrollbarWidths = util_1.getScrollbarWidths;
2501exports.preventDefault = util_1.preventDefault;
2502exports.parseFieldSpecs = util_1.parseFieldSpecs;
2503exports.compareByFieldSpecs = util_1.compareByFieldSpecs;
2504exports.compareByFieldSpec = util_1.compareByFieldSpec;
2505exports.flexibleCompare = util_1.flexibleCompare;
2506exports.computeGreatestUnit = util_1.computeGreatestUnit;
2507exports.divideRangeByDuration = util_1.divideRangeByDuration;
2508exports.divideDurationByDuration = util_1.divideDurationByDuration;
2509exports.multiplyDuration = util_1.multiplyDuration;
2510exports.durationHasTime = util_1.durationHasTime;
2511exports.log = util_1.log;
2512exports.warn = util_1.warn;
2513exports.removeExact = util_1.removeExact;
2514exports.intersectRects = util_1.intersectRects;
2515exports.allowSelection = util_1.allowSelection;
2516exports.attrsToStr = util_1.attrsToStr;
2517exports.compareNumbers = util_1.compareNumbers;
2518exports.compensateScroll = util_1.compensateScroll;
2519exports.computeDurationGreatestUnit = util_1.computeDurationGreatestUnit;
2520exports.constrainPoint = util_1.constrainPoint;
2521exports.copyOwnProps = util_1.copyOwnProps;
2522exports.diffByUnit = util_1.diffByUnit;
2523exports.diffDay = util_1.diffDay;
2524exports.diffDayTime = util_1.diffDayTime;
2525exports.diffPoints = util_1.diffPoints;
2526exports.disableCursor = util_1.disableCursor;
2527exports.distributeHeight = util_1.distributeHeight;
2528exports.enableCursor = util_1.enableCursor;
2529exports.firstDefined = util_1.firstDefined;
2530exports.getEvIsTouch = util_1.getEvIsTouch;
2531exports.getEvX = util_1.getEvX;
2532exports.getEvY = util_1.getEvY;
2533exports.getRectCenter = util_1.getRectCenter;
2534exports.getScrollParent = util_1.getScrollParent;
2535exports.hasOwnProp = util_1.hasOwnProp;
2536exports.isArraysEqual = util_1.isArraysEqual;
2537exports.isNativeDate = util_1.isNativeDate;
2538exports.isPrimaryMouseButton = util_1.isPrimaryMouseButton;
2539exports.isTimeString = util_1.isTimeString;
2540exports.matchCellWidths = util_1.matchCellWidths;
2541exports.mergeProps = util_1.mergeProps;
2542exports.preventSelection = util_1.preventSelection;
2543exports.removeMatching = util_1.removeMatching;
2544exports.stripHtmlEntities = util_1.stripHtmlEntities;
2545exports.subtractInnerElHeight = util_1.subtractInnerElHeight;
2546exports.uncompensateScroll = util_1.uncompensateScroll;
2547exports.undistributeHeight = util_1.undistributeHeight;
2548exports.dayIDs = util_1.dayIDs;
2549exports.unitsDesc = util_1.unitsDesc;
2550var date_formatting_1 = __webpack_require__(49);
2551exports.formatDate = date_formatting_1.formatDate;
2552exports.formatRange = date_formatting_1.formatRange;
2553exports.queryMostGranularFormatUnit = date_formatting_1.queryMostGranularFormatUnit;
2554var locale_1 = __webpack_require__(32);
2555exports.datepickerLocale = locale_1.datepickerLocale;
2556exports.locale = locale_1.locale;
2557exports.getMomentLocaleData = locale_1.getMomentLocaleData;
2558exports.populateInstanceComputableOptions = locale_1.populateInstanceComputableOptions;
2559var util_2 = __webpack_require__(19);
2560exports.eventDefsToEventInstances = util_2.eventDefsToEventInstances;
2561exports.eventFootprintToComponentFootprint = util_2.eventFootprintToComponentFootprint;
2562exports.eventInstanceToEventRange = util_2.eventInstanceToEventRange;
2563exports.eventInstanceToUnzonedRange = util_2.eventInstanceToUnzonedRange;
2564exports.eventRangeToEventFootprint = util_2.eventRangeToEventFootprint;
2565var moment_ext_1 = __webpack_require__(11);
2566exports.moment = moment_ext_1.default;
2567var EmitterMixin_1 = __webpack_require__(13);
2568exports.EmitterMixin = EmitterMixin_1.default;
2569var ListenerMixin_1 = __webpack_require__(7);
2570exports.ListenerMixin = ListenerMixin_1.default;
2571var Model_1 = __webpack_require__(51);
2572exports.Model = Model_1.default;
2573var Constraints_1 = __webpack_require__(217);
2574exports.Constraints = Constraints_1.default;
2575var DateProfileGenerator_1 = __webpack_require__(55);
2576exports.DateProfileGenerator = DateProfileGenerator_1.default;
2577var UnzonedRange_1 = __webpack_require__(5);
2578exports.UnzonedRange = UnzonedRange_1.default;
2579var ComponentFootprint_1 = __webpack_require__(12);
2580exports.ComponentFootprint = ComponentFootprint_1.default;
2581var BusinessHourGenerator_1 = __webpack_require__(218);
2582exports.BusinessHourGenerator = BusinessHourGenerator_1.default;
2583var EventPeriod_1 = __webpack_require__(219);
2584exports.EventPeriod = EventPeriod_1.default;
2585var EventManager_1 = __webpack_require__(220);
2586exports.EventManager = EventManager_1.default;
2587var EventDef_1 = __webpack_require__(37);
2588exports.EventDef = EventDef_1.default;
2589var EventDefMutation_1 = __webpack_require__(39);
2590exports.EventDefMutation = EventDefMutation_1.default;
2591var EventDefParser_1 = __webpack_require__(36);
2592exports.EventDefParser = EventDefParser_1.default;
2593var EventInstance_1 = __webpack_require__(53);
2594exports.EventInstance = EventInstance_1.default;
2595var EventRange_1 = __webpack_require__(50);
2596exports.EventRange = EventRange_1.default;
2597var RecurringEventDef_1 = __webpack_require__(54);
2598exports.RecurringEventDef = RecurringEventDef_1.default;
2599var SingleEventDef_1 = __webpack_require__(9);
2600exports.SingleEventDef = SingleEventDef_1.default;
2601var EventDefDateMutation_1 = __webpack_require__(40);
2602exports.EventDefDateMutation = EventDefDateMutation_1.default;
2603var EventDateProfile_1 = __webpack_require__(16);
2604exports.EventDateProfile = EventDateProfile_1.default;
2605var EventSourceParser_1 = __webpack_require__(38);
2606exports.EventSourceParser = EventSourceParser_1.default;
2607var EventSource_1 = __webpack_require__(6);
2608exports.EventSource = EventSource_1.default;
2609var ThemeRegistry_1 = __webpack_require__(57);
2610exports.defineThemeSystem = ThemeRegistry_1.defineThemeSystem;
2611exports.getThemeSystemClass = ThemeRegistry_1.getThemeSystemClass;
2612var EventInstanceGroup_1 = __webpack_require__(20);
2613exports.EventInstanceGroup = EventInstanceGroup_1.default;
2614var ArrayEventSource_1 = __webpack_require__(56);
2615exports.ArrayEventSource = ArrayEventSource_1.default;
2616var FuncEventSource_1 = __webpack_require__(223);
2617exports.FuncEventSource = FuncEventSource_1.default;
2618var JsonFeedEventSource_1 = __webpack_require__(224);
2619exports.JsonFeedEventSource = JsonFeedEventSource_1.default;
2620var EventFootprint_1 = __webpack_require__(34);
2621exports.EventFootprint = EventFootprint_1.default;
2622var Class_1 = __webpack_require__(35);
2623exports.Class = Class_1.default;
2624var Mixin_1 = __webpack_require__(15);
2625exports.Mixin = Mixin_1.default;
2626var CoordCache_1 = __webpack_require__(58);
2627exports.CoordCache = CoordCache_1.default;
2628var Iterator_1 = __webpack_require__(225);
2629exports.Iterator = Iterator_1.default;
2630var DragListener_1 = __webpack_require__(59);
2631exports.DragListener = DragListener_1.default;
2632var HitDragListener_1 = __webpack_require__(17);
2633exports.HitDragListener = HitDragListener_1.default;
2634var MouseFollower_1 = __webpack_require__(226);
2635exports.MouseFollower = MouseFollower_1.default;
2636var ParsableModelMixin_1 = __webpack_require__(52);
2637exports.ParsableModelMixin = ParsableModelMixin_1.default;
2638var Popover_1 = __webpack_require__(227);
2639exports.Popover = Popover_1.default;
2640var Promise_1 = __webpack_require__(21);
2641exports.Promise = Promise_1.default;
2642var TaskQueue_1 = __webpack_require__(228);
2643exports.TaskQueue = TaskQueue_1.default;
2644var RenderQueue_1 = __webpack_require__(229);
2645exports.RenderQueue = RenderQueue_1.default;
2646var Scroller_1 = __webpack_require__(41);
2647exports.Scroller = Scroller_1.default;
2648var Theme_1 = __webpack_require__(22);
2649exports.Theme = Theme_1.default;
2650var Component_1 = __webpack_require__(230);
2651exports.Component = Component_1.default;
2652var DateComponent_1 = __webpack_require__(231);
2653exports.DateComponent = DateComponent_1.default;
2654var InteractiveDateComponent_1 = __webpack_require__(42);
2655exports.InteractiveDateComponent = InteractiveDateComponent_1.default;
2656var Calendar_1 = __webpack_require__(232);
2657exports.Calendar = Calendar_1.default;
2658var View_1 = __webpack_require__(43);
2659exports.View = View_1.default;
2660var ViewRegistry_1 = __webpack_require__(24);
2661exports.defineView = ViewRegistry_1.defineView;
2662exports.getViewConfig = ViewRegistry_1.getViewConfig;
2663var DayTableMixin_1 = __webpack_require__(60);
2664exports.DayTableMixin = DayTableMixin_1.default;
2665var BusinessHourRenderer_1 = __webpack_require__(61);
2666exports.BusinessHourRenderer = BusinessHourRenderer_1.default;
2667var EventRenderer_1 = __webpack_require__(44);
2668exports.EventRenderer = EventRenderer_1.default;
2669var FillRenderer_1 = __webpack_require__(62);
2670exports.FillRenderer = FillRenderer_1.default;
2671var HelperRenderer_1 = __webpack_require__(63);
2672exports.HelperRenderer = HelperRenderer_1.default;
2673var ExternalDropping_1 = __webpack_require__(233);
2674exports.ExternalDropping = ExternalDropping_1.default;
2675var EventResizing_1 = __webpack_require__(234);
2676exports.EventResizing = EventResizing_1.default;
2677var EventPointing_1 = __webpack_require__(64);
2678exports.EventPointing = EventPointing_1.default;
2679var EventDragging_1 = __webpack_require__(235);
2680exports.EventDragging = EventDragging_1.default;
2681var DateSelecting_1 = __webpack_require__(236);
2682exports.DateSelecting = DateSelecting_1.default;
2683var DateClicking_1 = __webpack_require__(237);
2684exports.DateClicking = DateClicking_1.default;
2685var Interaction_1 = __webpack_require__(14);
2686exports.Interaction = Interaction_1.default;
2687var StandardInteractionsMixin_1 = __webpack_require__(65);
2688exports.StandardInteractionsMixin = StandardInteractionsMixin_1.default;
2689var AgendaView_1 = __webpack_require__(238);
2690exports.AgendaView = AgendaView_1.default;
2691var TimeGrid_1 = __webpack_require__(239);
2692exports.TimeGrid = TimeGrid_1.default;
2693var TimeGridEventRenderer_1 = __webpack_require__(240);
2694exports.TimeGridEventRenderer = TimeGridEventRenderer_1.default;
2695var TimeGridFillRenderer_1 = __webpack_require__(242);
2696exports.TimeGridFillRenderer = TimeGridFillRenderer_1.default;
2697var TimeGridHelperRenderer_1 = __webpack_require__(241);
2698exports.TimeGridHelperRenderer = TimeGridHelperRenderer_1.default;
2699var DayGrid_1 = __webpack_require__(66);
2700exports.DayGrid = DayGrid_1.default;
2701var DayGridEventRenderer_1 = __webpack_require__(243);
2702exports.DayGridEventRenderer = DayGridEventRenderer_1.default;
2703var DayGridFillRenderer_1 = __webpack_require__(245);
2704exports.DayGridFillRenderer = DayGridFillRenderer_1.default;
2705var DayGridHelperRenderer_1 = __webpack_require__(244);
2706exports.DayGridHelperRenderer = DayGridHelperRenderer_1.default;
2707var BasicView_1 = __webpack_require__(67);
2708exports.BasicView = BasicView_1.default;
2709var BasicViewDateProfileGenerator_1 = __webpack_require__(68);
2710exports.BasicViewDateProfileGenerator = BasicViewDateProfileGenerator_1.default;
2711var MonthView_1 = __webpack_require__(246);
2712exports.MonthView = MonthView_1.default;
2713var MonthViewDateProfileGenerator_1 = __webpack_require__(247);
2714exports.MonthViewDateProfileGenerator = MonthViewDateProfileGenerator_1.default;
2715var ListView_1 = __webpack_require__(248);
2716exports.ListView = ListView_1.default;
2717var ListEventPointing_1 = __webpack_require__(250);
2718exports.ListEventPointing = ListEventPointing_1.default;
2719var ListEventRenderer_1 = __webpack_require__(249);
2720exports.ListEventRenderer = ListEventRenderer_1.default;
2721
2722
2723/***/ }),
2724/* 19 */
2725/***/ (function(module, exports, __webpack_require__) {
2726
2727Object.defineProperty(exports, "__esModule", { value: true });
2728var EventRange_1 = __webpack_require__(50);
2729var EventFootprint_1 = __webpack_require__(34);
2730var ComponentFootprint_1 = __webpack_require__(12);
2731function eventDefsToEventInstances(eventDefs, unzonedRange) {
2732    var eventInstances = [];
2733    var i;
2734    for (i = 0; i < eventDefs.length; i++) {
2735        eventInstances.push.apply(eventInstances, // append
2736        eventDefs[i].buildInstances(unzonedRange));
2737    }
2738    return eventInstances;
2739}
2740exports.eventDefsToEventInstances = eventDefsToEventInstances;
2741function eventInstanceToEventRange(eventInstance) {
2742    return new EventRange_1.default(eventInstance.dateProfile.unzonedRange, eventInstance.def, eventInstance);
2743}
2744exports.eventInstanceToEventRange = eventInstanceToEventRange;
2745function eventRangeToEventFootprint(eventRange) {
2746    return new EventFootprint_1.default(new ComponentFootprint_1.default(eventRange.unzonedRange, eventRange.eventDef.isAllDay()), eventRange.eventDef, eventRange.eventInstance // might not exist
2747    );
2748}
2749exports.eventRangeToEventFootprint = eventRangeToEventFootprint;
2750function eventInstanceToUnzonedRange(eventInstance) {
2751    return eventInstance.dateProfile.unzonedRange;
2752}
2753exports.eventInstanceToUnzonedRange = eventInstanceToUnzonedRange;
2754function eventFootprintToComponentFootprint(eventFootprint) {
2755    return eventFootprint.componentFootprint;
2756}
2757exports.eventFootprintToComponentFootprint = eventFootprintToComponentFootprint;
2758
2759
2760/***/ }),
2761/* 20 */
2762/***/ (function(module, exports, __webpack_require__) {
2763
2764Object.defineProperty(exports, "__esModule", { value: true });
2765var UnzonedRange_1 = __webpack_require__(5);
2766var util_1 = __webpack_require__(19);
2767var EventRange_1 = __webpack_require__(50);
2768/*
2769It's expected that there will be at least one EventInstance,
2770OR that an explicitEventDef is assigned.
2771*/
2772var EventInstanceGroup = /** @class */ (function () {
2773    function EventInstanceGroup(eventInstances) {
2774        this.eventInstances = eventInstances || [];
2775    }
2776    EventInstanceGroup.prototype.getAllEventRanges = function (constraintRange) {
2777        if (constraintRange) {
2778            return this.sliceNormalRenderRanges(constraintRange);
2779        }
2780        else {
2781            return this.eventInstances.map(util_1.eventInstanceToEventRange);
2782        }
2783    };
2784    EventInstanceGroup.prototype.sliceRenderRanges = function (constraintRange) {
2785        if (this.isInverse()) {
2786            return this.sliceInverseRenderRanges(constraintRange);
2787        }
2788        else {
2789            return this.sliceNormalRenderRanges(constraintRange);
2790        }
2791    };
2792    EventInstanceGroup.prototype.sliceNormalRenderRanges = function (constraintRange) {
2793        var eventInstances = this.eventInstances;
2794        var i;
2795        var eventInstance;
2796        var slicedRange;
2797        var slicedEventRanges = [];
2798        for (i = 0; i < eventInstances.length; i++) {
2799            eventInstance = eventInstances[i];
2800            slicedRange = eventInstance.dateProfile.unzonedRange.intersect(constraintRange);
2801            if (slicedRange) {
2802                slicedEventRanges.push(new EventRange_1.default(slicedRange, eventInstance.def, eventInstance));
2803            }
2804        }
2805        return slicedEventRanges;
2806    };
2807    EventInstanceGroup.prototype.sliceInverseRenderRanges = function (constraintRange) {
2808        var unzonedRanges = this.eventInstances.map(util_1.eventInstanceToUnzonedRange);
2809        var ownerDef = this.getEventDef();
2810        unzonedRanges = UnzonedRange_1.default.invertRanges(unzonedRanges, constraintRange);
2811        return unzonedRanges.map(function (unzonedRange) {
2812            return new EventRange_1.default(unzonedRange, ownerDef); // don't give an EventInstance
2813        });
2814    };
2815    EventInstanceGroup.prototype.isInverse = function () {
2816        return this.getEventDef().hasInverseRendering();
2817    };
2818    EventInstanceGroup.prototype.getEventDef = function () {
2819        return this.explicitEventDef || this.eventInstances[0].def;
2820    };
2821    return EventInstanceGroup;
2822}());
2823exports.default = EventInstanceGroup;
2824
2825
2826/***/ }),
2827/* 21 */
2828/***/ (function(module, exports, __webpack_require__) {
2829
2830Object.defineProperty(exports, "__esModule", { value: true });
2831var $ = __webpack_require__(3);
2832var PromiseStub = {
2833    construct: function (executor) {
2834        var deferred = $.Deferred();
2835        var promise = deferred.promise();
2836        if (typeof executor === 'function') {
2837            executor(function (val) {
2838                deferred.resolve(val);
2839                attachImmediatelyResolvingThen(promise, val);
2840            }, function () {
2841                deferred.reject();
2842                attachImmediatelyRejectingThen(promise);
2843            });
2844        }
2845        return promise;
2846    },
2847    resolve: function (val) {
2848        var deferred = $.Deferred().resolve(val);
2849        var promise = deferred.promise();
2850        attachImmediatelyResolvingThen(promise, val);
2851        return promise;
2852    },
2853    reject: function () {
2854        var deferred = $.Deferred().reject();
2855        var promise = deferred.promise();
2856        attachImmediatelyRejectingThen(promise);
2857        return promise;
2858    }
2859};
2860exports.default = PromiseStub;
2861function attachImmediatelyResolvingThen(promise, val) {
2862    promise.then = function (onResolve) {
2863        if (typeof onResolve === 'function') {
2864            return PromiseStub.resolve(onResolve(val));
2865        }
2866        return promise;
2867    };
2868}
2869function attachImmediatelyRejectingThen(promise) {
2870    promise.then = function (onResolve, onReject) {
2871        if (typeof onReject === 'function') {
2872            onReject();
2873        }
2874        return promise;
2875    };
2876}
2877
2878
2879/***/ }),
2880/* 22 */
2881/***/ (function(module, exports, __webpack_require__) {
2882
2883Object.defineProperty(exports, "__esModule", { value: true });
2884var $ = __webpack_require__(3);
2885var Theme = /** @class */ (function () {
2886    function Theme(optionsManager) {
2887        this.optionsManager = optionsManager;
2888        this.processIconOverride();
2889    }
2890    Theme.prototype.processIconOverride = function () {
2891        if (this.iconOverrideOption) {
2892            this.setIconOverride(this.optionsManager.get(this.iconOverrideOption));
2893        }
2894    };
2895    Theme.prototype.setIconOverride = function (iconOverrideHash) {
2896        var iconClassesCopy;
2897        var buttonName;
2898        if ($.isPlainObject(iconOverrideHash)) {
2899            iconClassesCopy = $.extend({}, this.iconClasses);
2900            for (buttonName in iconOverrideHash) {
2901                iconClassesCopy[buttonName] = this.applyIconOverridePrefix(iconOverrideHash[buttonName]);
2902            }
2903            this.iconClasses = iconClassesCopy;
2904        }
2905        else if (iconOverrideHash === false) {
2906            this.iconClasses = {};
2907        }
2908    };
2909    Theme.prototype.applyIconOverridePrefix = function (className) {
2910        var prefix = this.iconOverridePrefix;
2911        if (prefix && className.indexOf(prefix) !== 0) { // if not already present
2912            className = prefix + className;
2913        }
2914        return className;
2915    };
2916    Theme.prototype.getClass = function (key) {
2917        return this.classes[key] || '';
2918    };
2919    Theme.prototype.getIconClass = function (buttonName) {
2920        var className = this.iconClasses[buttonName];
2921        if (className) {
2922            return this.baseIconClass + ' ' + className;
2923        }
2924        return '';
2925    };
2926    Theme.prototype.getCustomButtonIconClass = function (customButtonProps) {
2927        var className;
2928        if (this.iconOverrideCustomButtonOption) {
2929            className = customButtonProps[this.iconOverrideCustomButtonOption];
2930            if (className) {
2931                return this.baseIconClass + ' ' + this.applyIconOverridePrefix(className);
2932            }
2933        }
2934        return '';
2935    };
2936    return Theme;
2937}());
2938exports.default = Theme;
2939Theme.prototype.classes = {};
2940Theme.prototype.iconClasses = {};
2941Theme.prototype.baseIconClass = '';
2942Theme.prototype.iconOverridePrefix = '';
2943
2944
2945/***/ }),
2946/* 23 */
2947/***/ (function(module, exports, __webpack_require__) {
2948
2949Object.defineProperty(exports, "__esModule", { value: true });
2950var $ = __webpack_require__(3);
2951var exportHooks = __webpack_require__(18);
2952var EmitterMixin_1 = __webpack_require__(13);
2953var ListenerMixin_1 = __webpack_require__(7);
2954exportHooks.touchMouseIgnoreWait = 500;
2955var globalEmitter = null;
2956var neededCount = 0;
2957/*
2958Listens to document and window-level user-interaction events, like touch events and mouse events,
2959and fires these events as-is to whoever is observing a GlobalEmitter.
2960Best when used as a singleton via GlobalEmitter.get()
2961
2962Normalizes mouse/touch events. For examples:
2963- ignores the the simulated mouse events that happen after a quick tap: mousemove+mousedown+mouseup+click
2964- compensates for various buggy scenarios where a touchend does not fire
2965*/
2966var GlobalEmitter = /** @class */ (function () {
2967    function GlobalEmitter() {
2968        this.isTouching = false;
2969        this.mouseIgnoreDepth = 0;
2970    }
2971    // gets the singleton
2972    GlobalEmitter.get = function () {
2973        if (!globalEmitter) {
2974            globalEmitter = new GlobalEmitter();
2975            globalEmitter.bind();
2976        }
2977        return globalEmitter;
2978    };
2979    // called when an object knows it will need a GlobalEmitter in the near future.
2980    GlobalEmitter.needed = function () {
2981        GlobalEmitter.get(); // ensures globalEmitter
2982        neededCount++;
2983    };
2984    // called when the object that originally called needed() doesn't need a GlobalEmitter anymore.
2985    GlobalEmitter.unneeded = function () {
2986        neededCount--;
2987        if (!neededCount) { // nobody else needs it
2988            globalEmitter.unbind();
2989            globalEmitter = null;
2990        }
2991    };
2992    GlobalEmitter.prototype.bind = function () {
2993        var _this = this;
2994        this.listenTo($(document), {
2995            touchstart: this.handleTouchStart,
2996            touchcancel: this.handleTouchCancel,
2997            touchend: this.handleTouchEnd,
2998            mousedown: this.handleMouseDown,
2999            mousemove: this.handleMouseMove,
3000            mouseup: this.handleMouseUp,
3001            click: this.handleClick,
3002            selectstart: this.handleSelectStart,
3003            contextmenu: this.handleContextMenu
3004        });
3005        // because we need to call preventDefault
3006        // because https://www.chromestatus.com/features/5093566007214080
3007        // TODO: investigate performance because this is a global handler
3008        window.addEventListener('touchmove', this.handleTouchMoveProxy = function (ev) {
3009            _this.handleTouchMove($.Event(ev));
3010        }, { passive: false } // allows preventDefault()
3011        );
3012        // attach a handler to get called when ANY scroll action happens on the page.
3013        // this was impossible to do with normal on/off because 'scroll' doesn't bubble.
3014        // http://stackoverflow.com/a/32954565/96342
3015        window.addEventListener('scroll', this.handleScrollProxy = function (ev) {
3016            _this.handleScroll($.Event(ev));
3017        }, true // useCapture
3018        );
3019    };
3020    GlobalEmitter.prototype.unbind = function () {
3021        this.stopListeningTo($(document));
3022        window.removeEventListener('touchmove', this.handleTouchMoveProxy, { passive: false } // use same options as addEventListener
3023        );
3024        window.removeEventListener('scroll', this.handleScrollProxy, true // useCapture
3025        );
3026    };
3027    // Touch Handlers
3028    // -----------------------------------------------------------------------------------------------------------------
3029    GlobalEmitter.prototype.handleTouchStart = function (ev) {
3030        // if a previous touch interaction never ended with a touchend, then implicitly end it,
3031        // but since a new touch interaction is about to begin, don't start the mouse ignore period.
3032        this.stopTouch(ev, true); // skipMouseIgnore=true
3033        this.isTouching = true;
3034        this.trigger('touchstart', ev);
3035    };
3036    GlobalEmitter.prototype.handleTouchMove = function (ev) {
3037        if (this.isTouching) {
3038            this.trigger('touchmove', ev);
3039        }
3040    };
3041    GlobalEmitter.prototype.handleTouchCancel = function (ev) {
3042        if (this.isTouching) {
3043            this.trigger('touchcancel', ev);
3044            // Have touchcancel fire an artificial touchend. That way, handlers won't need to listen to both.
3045            // If touchend fires later, it won't have any effect b/c isTouching will be false.
3046            this.stopTouch(ev);
3047        }
3048    };
3049    GlobalEmitter.prototype.handleTouchEnd = function (ev) {
3050        this.stopTouch(ev);
3051    };
3052    // Mouse Handlers
3053    // -----------------------------------------------------------------------------------------------------------------
3054    GlobalEmitter.prototype.handleMouseDown = function (ev) {
3055        if (!this.shouldIgnoreMouse()) {
3056            this.trigger('mousedown', ev);
3057        }
3058    };
3059    GlobalEmitter.prototype.handleMouseMove = function (ev) {
3060        if (!this.shouldIgnoreMouse()) {
3061            this.trigger('mousemove', ev);
3062        }
3063    };
3064    GlobalEmitter.prototype.handleMouseUp = function (ev) {
3065        if (!this.shouldIgnoreMouse()) {
3066            this.trigger('mouseup', ev);
3067        }
3068    };
3069    GlobalEmitter.prototype.handleClick = function (ev) {
3070        if (!this.shouldIgnoreMouse()) {
3071            this.trigger('click', ev);
3072        }
3073    };
3074    // Misc Handlers
3075    // -----------------------------------------------------------------------------------------------------------------
3076    GlobalEmitter.prototype.handleSelectStart = function (ev) {
3077        this.trigger('selectstart', ev);
3078    };
3079    GlobalEmitter.prototype.handleContextMenu = function (ev) {
3080        this.trigger('contextmenu', ev);
3081    };
3082    GlobalEmitter.prototype.handleScroll = function (ev) {
3083        this.trigger('scroll', ev);
3084    };
3085    // Utils
3086    // -----------------------------------------------------------------------------------------------------------------
3087    GlobalEmitter.prototype.stopTouch = function (ev, skipMouseIgnore) {
3088        if (skipMouseIgnore === void 0) { skipMouseIgnore = false; }
3089        if (this.isTouching) {
3090            this.isTouching = false;
3091            this.trigger('touchend', ev);
3092            if (!skipMouseIgnore) {
3093                this.startTouchMouseIgnore();
3094            }
3095        }
3096    };
3097    GlobalEmitter.prototype.startTouchMouseIgnore = function () {
3098        var _this = this;
3099        var wait = exportHooks.touchMouseIgnoreWait;
3100        if (wait) {
3101            this.mouseIgnoreDepth++;
3102            setTimeout(function () {
3103                _this.mouseIgnoreDepth--;
3104            }, wait);
3105        }
3106    };
3107    GlobalEmitter.prototype.shouldIgnoreMouse = function () {
3108        return this.isTouching || Boolean(this.mouseIgnoreDepth);
3109    };
3110    return GlobalEmitter;
3111}());
3112exports.default = GlobalEmitter;
3113ListenerMixin_1.default.mixInto(GlobalEmitter);
3114EmitterMixin_1.default.mixInto(GlobalEmitter);
3115
3116
3117/***/ }),
3118/* 24 */
3119/***/ (function(module, exports, __webpack_require__) {
3120
3121Object.defineProperty(exports, "__esModule", { value: true });
3122var exportHooks = __webpack_require__(18);
3123exports.viewHash = {};
3124exportHooks.views = exports.viewHash;
3125function defineView(viewName, viewConfig) {
3126    exports.viewHash[viewName] = viewConfig;
3127}
3128exports.defineView = defineView;
3129function getViewConfig(viewName) {
3130    return exports.viewHash[viewName];
3131}
3132exports.getViewConfig = getViewConfig;
3133
3134
3135/***/ }),
3136/* 25 */,
3137/* 26 */,
3138/* 27 */,
3139/* 28 */,
3140/* 29 */,
3141/* 30 */,
3142/* 31 */,
3143/* 32 */
3144/***/ (function(module, exports, __webpack_require__) {
3145
3146Object.defineProperty(exports, "__esModule", { value: true });
3147var $ = __webpack_require__(3);
3148var moment = __webpack_require__(0);
3149var exportHooks = __webpack_require__(18);
3150var options_1 = __webpack_require__(33);
3151var util_1 = __webpack_require__(4);
3152exports.localeOptionHash = {};
3153exportHooks.locales = exports.localeOptionHash;
3154// NOTE: can't guarantee any of these computations will run because not every locale has datepicker
3155// configs, so make sure there are English fallbacks for these in the defaults file.
3156var dpComputableOptions = {
3157    buttonText: function (dpOptions) {
3158        return {
3159            // the translations sometimes wrongly contain HTML entities
3160            prev: util_1.stripHtmlEntities(dpOptions.prevText),
3161            next: util_1.stripHtmlEntities(dpOptions.nextText),
3162            today: util_1.stripHtmlEntities(dpOptions.currentText)
3163        };
3164    },
3165    // Produces format strings like "MMMM YYYY" -> "September 2014"
3166    monthYearFormat: function (dpOptions) {
3167        return dpOptions.showMonthAfterYear ?
3168            'YYYY[' + dpOptions.yearSuffix + '] MMMM' :
3169            'MMMM YYYY[' + dpOptions.yearSuffix + ']';
3170    }
3171};
3172var momComputableOptions = {
3173    // Produces format strings like "ddd M/D" -> "Fri 9/15"
3174    dayOfMonthFormat: function (momOptions, fcOptions) {
3175        var format = momOptions.longDateFormat('l'); // for the format like "M/D/YYYY"
3176        // strip the year off the edge, as well as other misc non-whitespace chars
3177        format = format.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g, '');
3178        if (fcOptions.isRTL) {
3179            format += ' ddd'; // for RTL, add day-of-week to end
3180        }
3181        else {
3182            format = 'ddd ' + format; // for LTR, add day-of-week to beginning
3183        }
3184        return format;
3185    },
3186    // Produces format strings like "h:mma" -> "6:00pm"
3187    mediumTimeFormat: function (momOptions) {
3188        return momOptions.longDateFormat('LT')
3189            .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand
3190    },
3191    // Produces format strings like "h(:mm)a" -> "6pm" / "6:30pm"
3192    smallTimeFormat: function (momOptions) {
3193        return momOptions.longDateFormat('LT')
3194            .replace(':mm', '(:mm)')
3195            .replace(/(\Wmm)$/, '($1)') // like above, but for foreign locales
3196            .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand
3197    },
3198    // Produces format strings like "h(:mm)t" -> "6p" / "6:30p"
3199    extraSmallTimeFormat: function (momOptions) {
3200        return momOptions.longDateFormat('LT')
3201            .replace(':mm', '(:mm)')
3202            .replace(/(\Wmm)$/, '($1)') // like above, but for foreign locales
3203            .replace(/\s*a$/i, 't'); // convert to AM/PM/am/pm to lowercase one-letter. remove any spaces beforehand
3204    },
3205    // Produces format strings like "ha" / "H" -> "6pm" / "18"
3206    hourFormat: function (momOptions) {
3207        return momOptions.longDateFormat('LT')
3208            .replace(':mm', '')
3209            .replace(/(\Wmm)$/, '') // like above, but for foreign locales
3210            .replace(/\s*a$/i, 'a'); // convert AM/PM/am/pm to lowercase. remove any spaces beforehand
3211    },
3212    // Produces format strings like "h:mm" -> "6:30" (with no AM/PM)
3213    noMeridiemTimeFormat: function (momOptions) {
3214        return momOptions.longDateFormat('LT')
3215            .replace(/\s*a$/i, ''); // remove trailing AM/PM
3216    }
3217};
3218// options that should be computed off live calendar options (considers override options)
3219// TODO: best place for this? related to locale?
3220// TODO: flipping text based on isRTL is a bad idea because the CSS `direction` might want to handle it
3221var instanceComputableOptions = {
3222    // Produces format strings for results like "Mo 16"
3223    smallDayDateFormat: function (options) {
3224        return options.isRTL ?
3225            'D dd' :
3226            'dd D';
3227    },
3228    // Produces format strings for results like "Wk 5"
3229    weekFormat: function (options) {
3230        return options.isRTL ?
3231            'w[ ' + options.weekNumberTitle + ']' :
3232            '[' + options.weekNumberTitle + ' ]w';
3233    },
3234    // Produces format strings for results like "Wk5"
3235    smallWeekFormat: function (options) {
3236        return options.isRTL ?
3237            'w[' + options.weekNumberTitle + ']' :
3238            '[' + options.weekNumberTitle + ']w';
3239    }
3240};
3241// TODO: make these computable properties in optionsManager
3242function populateInstanceComputableOptions(options) {
3243    $.each(instanceComputableOptions, function (name, func) {
3244        if (options[name] == null) {
3245            options[name] = func(options);
3246        }
3247    });
3248}
3249exports.populateInstanceComputableOptions = populateInstanceComputableOptions;
3250// Initialize jQuery UI datepicker translations while using some of the translations
3251// Will set this as the default locales for datepicker.
3252function datepickerLocale(localeCode, dpLocaleCode, dpOptions) {
3253    // get the FullCalendar internal option hash for this locale. create if necessary
3254    var fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {});
3255    // transfer some simple options from datepicker to fc
3256    fcOptions.isRTL = dpOptions.isRTL;
3257    fcOptions.weekNumberTitle = dpOptions.weekHeader;
3258    // compute some more complex options from datepicker
3259    $.each(dpComputableOptions, function (name, func) {
3260        fcOptions[name] = func(dpOptions);
3261    });
3262    var jqDatePicker = $.datepicker;
3263    // is jQuery UI Datepicker is on the page?
3264    if (jqDatePicker) {
3265        // Register the locale data.
3266        // FullCalendar and MomentJS use locale codes like "pt-br" but Datepicker
3267        // does it like "pt-BR" or if it doesn't have the locale, maybe just "pt".
3268        // Make an alias so the locale can be referenced either way.
3269        jqDatePicker.regional[dpLocaleCode] =
3270            jqDatePicker.regional[localeCode] = // alias
3271                dpOptions;
3272        // Alias 'en' to the default locale data. Do this every time.
3273        jqDatePicker.regional.en = jqDatePicker.regional[''];
3274        // Set as Datepicker's global defaults.
3275        jqDatePicker.setDefaults(dpOptions);
3276    }
3277}
3278exports.datepickerLocale = datepickerLocale;
3279// Sets FullCalendar-specific translations. Will set the locales as the global default.
3280function locale(localeCode, newFcOptions) {
3281    var fcOptions;
3282    var momOptions;
3283    // get the FullCalendar internal option hash for this locale. create if necessary
3284    fcOptions = exports.localeOptionHash[localeCode] || (exports.localeOptionHash[localeCode] = {});
3285    // provided new options for this locales? merge them in
3286    if (newFcOptions) {
3287        fcOptions = exports.localeOptionHash[localeCode] = options_1.mergeOptions([fcOptions, newFcOptions]);
3288    }
3289    // compute locale options that weren't defined.
3290    // always do this. newFcOptions can be undefined when initializing from i18n file,
3291    // so no way to tell if this is an initialization or a default-setting.
3292    momOptions = getMomentLocaleData(localeCode); // will fall back to en
3293    $.each(momComputableOptions, function (name, func) {
3294        if (fcOptions[name] == null) {
3295            fcOptions[name] = (func)(momOptions, fcOptions);
3296        }
3297    });
3298    // set it as the default locale for FullCalendar
3299    options_1.globalDefaults.locale = localeCode;
3300}
3301exports.locale = locale;
3302// Returns moment's internal locale data. If doesn't exist, returns English.
3303function getMomentLocaleData(localeCode) {
3304    return moment.localeData(localeCode) || moment.localeData('en');
3305}
3306exports.getMomentLocaleData = getMomentLocaleData;
3307// Initialize English by forcing computation of moment-derived options.
3308// Also, sets it as the default.
3309locale('en', options_1.englishDefaults);
3310
3311
3312/***/ }),
3313/* 33 */
3314/***/ (function(module, exports, __webpack_require__) {
3315
3316Object.defineProperty(exports, "__esModule", { value: true });
3317var util_1 = __webpack_require__(4);
3318exports.globalDefaults = {
3319    titleRangeSeparator: ' \u2013 ',
3320    monthYearFormat: 'MMMM YYYY',
3321    defaultTimedEventDuration: '02:00:00',
3322    defaultAllDayEventDuration: { days: 1 },
3323    forceEventDuration: false,
3324    nextDayThreshold: '09:00:00',
3325    // display
3326    columnHeader: true,
3327    defaultView: 'month',
3328    aspectRatio: 1.35,
3329    header: {
3330        left: 'title',
3331        center: '',
3332        right: 'today prev,next'
3333    },
3334    weekends: true,
3335    weekNumbers: false,
3336    weekNumberTitle: 'W',
3337    weekNumberCalculation: 'local',
3338    // editable: false,
3339    // nowIndicator: false,
3340    scrollTime: '06:00:00',
3341    minTime: '00:00:00',
3342    maxTime: '24:00:00',
3343    showNonCurrentDates: true,
3344    // event ajax
3345    lazyFetching: true,
3346    startParam: 'start',
3347    endParam: 'end',
3348    timezoneParam: 'timezone',
3349    timezone: false,
3350    // allDayDefault: undefined,
3351    // locale
3352    locale: null,
3353    isRTL: false,
3354    buttonText: {
3355        prev: 'prev',
3356        next: 'next',
3357        prevYear: 'prev year',
3358        nextYear: 'next year',
3359        year: 'year',
3360        today: 'today',
3361        month: 'month',
3362        week: 'week',
3363        day: 'day'
3364    },
3365    // buttonIcons: null,
3366    allDayText: 'all-day',
3367    // allows setting a min-height to the event segment to prevent short events overlapping each other
3368    agendaEventMinHeight: 0,
3369    // jquery-ui theming
3370    theme: false,
3371    // themeButtonIcons: null,
3372    // eventResizableFromStart: false,
3373    dragOpacity: .75,
3374    dragRevertDuration: 500,
3375    dragScroll: true,
3376    // selectable: false,
3377    unselectAuto: true,
3378    // selectMinDistance: 0,
3379    dropAccept: '*',
3380    eventOrder: 'title',
3381    // eventRenderWait: null,
3382    eventLimit: false,
3383    eventLimitText: 'more',
3384    eventLimitClick: 'popover',
3385    dayPopoverFormat: 'LL',
3386    handleWindowResize: true,
3387    windowResizeDelay: 100,
3388    longPressDelay: 1000
3389};
3390exports.englishDefaults = {
3391    dayPopoverFormat: 'dddd, MMMM D'
3392};
3393exports.rtlDefaults = {
3394    header: {
3395        left: 'next,prev today',
3396        center: '',
3397        right: 'title'
3398    },
3399    buttonIcons: {
3400        prev: 'right-single-arrow',
3401        next: 'left-single-arrow',
3402        prevYear: 'right-double-arrow',
3403        nextYear: 'left-double-arrow'
3404    },
3405    themeButtonIcons: {
3406        prev: 'circle-triangle-e',
3407        next: 'circle-triangle-w',
3408        nextYear: 'seek-prev',
3409        prevYear: 'seek-next'
3410    }
3411};
3412var complexOptions = [
3413    'header',
3414    'footer',
3415    'buttonText',
3416    'buttonIcons',
3417    'themeButtonIcons'
3418];
3419// Merges an array of option objects into a single object
3420function mergeOptions(optionObjs) {
3421    return util_1.mergeProps(optionObjs, complexOptions);
3422}
3423exports.mergeOptions = mergeOptions;
3424
3425
3426/***/ }),
3427/* 34 */
3428/***/ (function(module, exports) {
3429
3430Object.defineProperty(exports, "__esModule", { value: true });
3431var EventFootprint = /** @class */ (function () {
3432    function EventFootprint(componentFootprint, eventDef, eventInstance) {
3433        this.componentFootprint = componentFootprint;
3434        this.eventDef = eventDef;
3435        if (eventInstance) {
3436            this.eventInstance = eventInstance;
3437        }
3438    }
3439    EventFootprint.prototype.getEventLegacy = function () {
3440        return (this.eventInstance || this.eventDef).toLegacy();
3441    };
3442    return EventFootprint;
3443}());
3444exports.default = EventFootprint;
3445
3446
3447/***/ }),
3448/* 35 */
3449/***/ (function(module, exports, __webpack_require__) {
3450
3451Object.defineProperty(exports, "__esModule", { value: true });
3452var tslib_1 = __webpack_require__(2);
3453var util_1 = __webpack_require__(4);
3454// Class that all other classes will inherit from
3455var Class = /** @class */ (function () {
3456    function Class() {
3457    }
3458    // Called on a class to create a subclass.
3459    // LIMITATION: cannot provide a constructor!
3460    Class.extend = function (members) {
3461        var SubClass = /** @class */ (function (_super) {
3462            tslib_1.__extends(SubClass, _super);
3463            function SubClass() {
3464                return _super !== null && _super.apply(this, arguments) || this;
3465            }
3466            return SubClass;
3467        }(this));
3468        util_1.copyOwnProps(members, SubClass.prototype);
3469        return SubClass;
3470    };
3471    // Adds new member variables/methods to the class's prototype.
3472    // Can be called with another class, or a plain object hash containing new members.
3473    Class.mixin = function (members) {
3474        util_1.copyOwnProps(members, this.prototype);
3475    };
3476    return Class;
3477}());
3478exports.default = Class;
3479
3480
3481/***/ }),
3482/* 36 */
3483/***/ (function(module, exports, __webpack_require__) {
3484
3485Object.defineProperty(exports, "__esModule", { value: true });
3486var moment = __webpack_require__(0);
3487var util_1 = __webpack_require__(4);
3488var SingleEventDef_1 = __webpack_require__(9);
3489var RecurringEventDef_1 = __webpack_require__(54);
3490exports.default = {
3491    parse: function (eventInput, source) {
3492        if (util_1.isTimeString(eventInput.start) || moment.isDuration(eventInput.start) ||
3493            util_1.isTimeString(eventInput.end) || moment.isDuration(eventInput.end)) {
3494            return RecurringEventDef_1.default.parse(eventInput, source);
3495        }
3496        else {
3497            return SingleEventDef_1.default.parse(eventInput, source);
3498        }
3499    }
3500};
3501
3502
3503/***/ }),
3504/* 37 */
3505/***/ (function(module, exports, __webpack_require__) {
3506
3507Object.defineProperty(exports, "__esModule", { value: true });
3508var $ = __webpack_require__(3);
3509var ParsableModelMixin_1 = __webpack_require__(52);
3510var EventDef = /** @class */ (function () {
3511    function EventDef(source) {
3512        this.source = source;
3513        this.className = [];
3514        this.miscProps = {};
3515    }
3516    EventDef.parse = function (rawInput, source) {
3517        var def = new this(source);
3518        if (def.applyProps(rawInput)) {
3519            return def;
3520        }
3521        return false;
3522    };
3523    EventDef.normalizeId = function (id) {
3524        return String(id);
3525    };
3526    EventDef.generateId = function () {
3527        return '_fc' + (EventDef.uuid++);
3528    };
3529    EventDef.prototype.clone = function () {
3530        var copy = new this.constructor(this.source);
3531        copy.id = this.id;
3532        copy.rawId = this.rawId;
3533        copy.uid = this.uid; // not really unique anymore :(
3534        EventDef.copyVerbatimStandardProps(this, copy);
3535        copy.className = this.className.slice(); // copy
3536        copy.miscProps = $.extend({}, this.miscProps);
3537        return copy;
3538    };
3539    EventDef.prototype.hasInverseRendering = function () {
3540        return this.getRendering() === 'inverse-background';
3541    };
3542    EventDef.prototype.hasBgRendering = function () {
3543        var rendering = this.getRendering();
3544        return rendering === 'inverse-background' || rendering === 'background';
3545    };
3546    EventDef.prototype.getRendering = function () {
3547        if (this.rendering != null) {
3548            return this.rendering;
3549        }
3550        return this.source.rendering;
3551    };
3552    EventDef.prototype.getConstraint = function () {
3553        if (this.constraint != null) {
3554            return this.constraint;
3555        }
3556        if (this.source.constraint != null) {
3557            return this.source.constraint;
3558        }
3559        return this.source.calendar.opt('eventConstraint'); // what about View option?
3560    };
3561    EventDef.prototype.getOverlap = function () {
3562        if (this.overlap != null) {
3563            return this.overlap;
3564        }
3565        if (this.source.overlap != null) {
3566            return this.source.overlap;
3567        }
3568        return this.source.calendar.opt('eventOverlap'); // what about View option?
3569    };
3570    EventDef.prototype.isStartExplicitlyEditable = function () {
3571        if (this.startEditable != null) {
3572            return this.startEditable;
3573        }
3574        return this.source.startEditable;
3575    };
3576    EventDef.prototype.isDurationExplicitlyEditable = function () {
3577        if (this.durationEditable != null) {
3578            return this.durationEditable;
3579        }
3580        return this.source.durationEditable;
3581    };
3582    EventDef.prototype.isExplicitlyEditable = function () {
3583        if (this.editable != null) {
3584            return this.editable;
3585        }
3586        return this.source.editable;
3587    };
3588    EventDef.prototype.toLegacy = function () {
3589        var obj = $.extend({}, this.miscProps);
3590        obj._id = this.uid;
3591        obj.source = this.source;
3592        obj.className = this.className.slice(); // copy
3593        obj.allDay = this.isAllDay();
3594        if (this.rawId != null) {
3595            obj.id = this.rawId;
3596        }
3597        EventDef.copyVerbatimStandardProps(this, obj);
3598        return obj;
3599    };
3600    EventDef.prototype.applyManualStandardProps = function (rawProps) {
3601        if (rawProps.id != null) {
3602            this.id = EventDef.normalizeId((this.rawId = rawProps.id));
3603        }
3604        else {
3605            this.id = EventDef.generateId();
3606        }
3607        if (rawProps._id != null) { // accept this prop, even tho somewhat internal
3608            this.uid = String(rawProps._id);
3609        }
3610        else {
3611            this.uid = EventDef.generateId();
3612        }
3613        // TODO: converge with EventSource
3614        if ($.isArray(rawProps.className)) {
3615            this.className = rawProps.className;
3616        }
3617        if (typeof rawProps.className === 'string') {
3618            this.className = rawProps.className.split(/\s+/);
3619        }
3620        return true;
3621    };
3622    EventDef.prototype.applyMiscProps = function (rawProps) {
3623        $.extend(this.miscProps, rawProps);
3624    };
3625    EventDef.uuid = 0;
3626    EventDef.defineStandardProps = ParsableModelMixin_1.default.defineStandardProps;
3627    EventDef.copyVerbatimStandardProps = ParsableModelMixin_1.default.copyVerbatimStandardProps;
3628    return EventDef;
3629}());
3630exports.default = EventDef;
3631ParsableModelMixin_1.default.mixInto(EventDef);
3632EventDef.defineStandardProps({
3633    // not automatically assigned (`false`)
3634    _id: false,
3635    id: false,
3636    className: false,
3637    source: false,
3638    // automatically assigned (`true`)
3639    title: true,
3640    url: true,
3641    rendering: true,
3642    constraint: true,
3643    overlap: true,
3644    editable: true,
3645    startEditable: true,
3646    durationEditable: true,
3647    color: true,
3648    backgroundColor: true,
3649    borderColor: true,
3650    textColor: true
3651});
3652
3653
3654/***/ }),
3655/* 38 */
3656/***/ (function(module, exports) {
3657
3658Object.defineProperty(exports, "__esModule", { value: true });
3659exports.default = {
3660    sourceClasses: [],
3661    registerClass: function (EventSourceClass) {
3662        this.sourceClasses.unshift(EventSourceClass); // give highest priority
3663    },
3664    parse: function (rawInput, calendar) {
3665        var sourceClasses = this.sourceClasses;
3666        var i;
3667        var eventSource;
3668        for (i = 0; i < sourceClasses.length; i++) {
3669            eventSource = sourceClasses[i].parse(rawInput, calendar);
3670            if (eventSource) {
3671                return eventSource;
3672            }
3673        }
3674    }
3675};
3676
3677
3678/***/ }),
3679/* 39 */
3680/***/ (function(module, exports, __webpack_require__) {
3681
3682Object.defineProperty(exports, "__esModule", { value: true });
3683var util_1 = __webpack_require__(4);
3684var EventDateProfile_1 = __webpack_require__(16);
3685var EventDef_1 = __webpack_require__(37);
3686var EventDefDateMutation_1 = __webpack_require__(40);
3687var SingleEventDef_1 = __webpack_require__(9);
3688var EventDefMutation = /** @class */ (function () {
3689    function EventDefMutation() {
3690    }
3691    EventDefMutation.createFromRawProps = function (eventInstance, rawProps, largeUnit) {
3692        var eventDef = eventInstance.def;
3693        var dateProps = {};
3694        var standardProps = {};
3695        var miscProps = {};
3696        var verbatimStandardProps = {};
3697        var eventDefId = null;
3698        var className = null;
3699        var propName;
3700        var dateProfile;
3701        var dateMutation;
3702        var defMutation;
3703        for (propName in rawProps) {
3704            if (EventDateProfile_1.default.isStandardProp(propName)) {
3705                dateProps[propName] = rawProps[propName];
3706            }
3707            else if (eventDef.isStandardProp(propName)) {
3708                standardProps[propName] = rawProps[propName];
3709            }
3710            else if (eventDef.miscProps[propName] !== rawProps[propName]) { // only if changed
3711                miscProps[propName] = rawProps[propName];
3712            }
3713        }
3714        dateProfile = EventDateProfile_1.default.parse(dateProps, eventDef.source);
3715        if (dateProfile) { // no failure?
3716            dateMutation = EventDefDateMutation_1.default.createFromDiff(eventInstance.dateProfile, dateProfile, largeUnit);
3717        }
3718        if (standardProps.id !== eventDef.id) {
3719            eventDefId = standardProps.id; // only apply if there's a change
3720        }
3721        if (!util_1.isArraysEqual(standardProps.className, eventDef.className)) {
3722            className = standardProps.className; // only apply if there's a change
3723        }
3724        EventDef_1.default.copyVerbatimStandardProps(standardProps, // src
3725        verbatimStandardProps // dest
3726        );
3727        defMutation = new EventDefMutation();
3728        defMutation.eventDefId = eventDefId;
3729        defMutation.className = className;
3730        defMutation.verbatimStandardProps = verbatimStandardProps;
3731        defMutation.miscProps = miscProps;
3732        if (dateMutation) {
3733            defMutation.dateMutation = dateMutation;
3734        }
3735        return defMutation;
3736    };
3737    /*
3738    eventDef assumed to be a SingleEventDef.
3739    returns an undo function.
3740    */
3741    EventDefMutation.prototype.mutateSingle = function (eventDef) {
3742        var origDateProfile;
3743        if (this.dateMutation) {
3744            origDateProfile = eventDef.dateProfile;
3745            eventDef.dateProfile = this.dateMutation.buildNewDateProfile(origDateProfile, eventDef.source.calendar);
3746        }
3747        // can't undo
3748        // TODO: more DRY with EventDef::applyManualStandardProps
3749        if (this.eventDefId != null) {
3750            eventDef.id = EventDef_1.default.normalizeId((eventDef.rawId = this.eventDefId));
3751        }
3752        // can't undo
3753        // TODO: more DRY with EventDef::applyManualStandardProps
3754        if (this.className) {
3755            eventDef.className = this.className;
3756        }
3757        // can't undo
3758        if (this.verbatimStandardProps) {
3759            SingleEventDef_1.default.copyVerbatimStandardProps(this.verbatimStandardProps, // src
3760            eventDef // dest
3761            );
3762        }
3763        // can't undo
3764        if (this.miscProps) {
3765            eventDef.applyMiscProps(this.miscProps);
3766        }
3767        if (origDateProfile) {
3768            return function () {
3769                eventDef.dateProfile = origDateProfile;
3770            };
3771        }
3772        else {
3773            return function () { };
3774        }
3775    };
3776    EventDefMutation.prototype.setDateMutation = function (dateMutation) {
3777        if (dateMutation && !dateMutation.isEmpty()) {
3778            this.dateMutation = dateMutation;
3779        }
3780        else {
3781            this.dateMutation = null;
3782        }
3783    };
3784    EventDefMutation.prototype.isEmpty = function () {
3785        return !this.dateMutation;
3786    };
3787    return EventDefMutation;
3788}());
3789exports.default = EventDefMutation;
3790
3791
3792/***/ }),
3793/* 40 */
3794/***/ (function(module, exports, __webpack_require__) {
3795
3796Object.defineProperty(exports, "__esModule", { value: true });
3797var util_1 = __webpack_require__(4);
3798var EventDateProfile_1 = __webpack_require__(16);
3799var EventDefDateMutation = /** @class */ (function () {
3800    function EventDefDateMutation() {
3801        this.clearEnd = false;
3802        this.forceTimed = false;
3803        this.forceAllDay = false;
3804    }
3805    EventDefDateMutation.createFromDiff = function (dateProfile0, dateProfile1, largeUnit) {
3806        var clearEnd = dateProfile0.end && !dateProfile1.end;
3807        var forceTimed = dateProfile0.isAllDay() && !dateProfile1.isAllDay();
3808        var forceAllDay = !dateProfile0.isAllDay() && dateProfile1.isAllDay();
3809        var dateDelta;
3810        var endDiff;
3811        var endDelta;
3812        var mutation;
3813        // subtracts the dates in the appropriate way, returning a duration
3814        function subtractDates(date1, date0) {
3815            if (largeUnit) {
3816                return util_1.diffByUnit(date1, date0, largeUnit); // poorly named
3817            }
3818            else if (dateProfile1.isAllDay()) {
3819                return util_1.diffDay(date1, date0); // poorly named
3820            }
3821            else {
3822                return util_1.diffDayTime(date1, date0); // poorly named
3823            }
3824        }
3825        dateDelta = subtractDates(dateProfile1.start, dateProfile0.start);
3826        if (dateProfile1.end) {
3827            // use unzonedRanges because dateProfile0.end might be null
3828            endDiff = subtractDates(dateProfile1.unzonedRange.getEnd(), dateProfile0.unzonedRange.getEnd());
3829            endDelta = endDiff.subtract(dateDelta);
3830        }
3831        mutation = new EventDefDateMutation();
3832        mutation.clearEnd = clearEnd;
3833        mutation.forceTimed = forceTimed;
3834        mutation.forceAllDay = forceAllDay;
3835        mutation.setDateDelta(dateDelta);
3836        mutation.setEndDelta(endDelta);
3837        return mutation;
3838    };
3839    /*
3840    returns an undo function.
3841    */
3842    EventDefDateMutation.prototype.buildNewDateProfile = function (eventDateProfile, calendar) {
3843        var start = eventDateProfile.start.clone();
3844        var end = null;
3845        var shouldRezone = false;
3846        if (eventDateProfile.end && !this.clearEnd) {
3847            end = eventDateProfile.end.clone();
3848        }
3849        else if (this.endDelta && !end) {
3850            end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start);
3851        }
3852        if (this.forceTimed) {
3853            shouldRezone = true;
3854            if (!start.hasTime()) {
3855                start.time(0);
3856            }
3857            if (end && !end.hasTime()) {
3858                end.time(0);
3859            }
3860        }
3861        else if (this.forceAllDay) {
3862            if (start.hasTime()) {
3863                start.stripTime();
3864            }
3865            if (end && end.hasTime()) {
3866                end.stripTime();
3867            }
3868        }
3869        if (this.dateDelta) {
3870            shouldRezone = true;
3871            start.add(this.dateDelta);
3872            if (end) {
3873                end.add(this.dateDelta);
3874            }
3875        }
3876        // do this before adding startDelta to start, so we can work off of start
3877        if (this.endDelta) {
3878            shouldRezone = true;
3879            end.add(this.endDelta);
3880        }
3881        if (this.startDelta) {
3882            shouldRezone = true;
3883            start.add(this.startDelta);
3884        }
3885        if (shouldRezone) {
3886            start = calendar.applyTimezone(start);
3887            if (end) {
3888                end = calendar.applyTimezone(end);
3889            }
3890        }
3891        // TODO: okay to access calendar option?
3892        if (!end && calendar.opt('forceEventDuration')) {
3893            end = calendar.getDefaultEventEnd(eventDateProfile.isAllDay(), start);
3894        }
3895        return new EventDateProfile_1.default(start, end, calendar);
3896    };
3897    EventDefDateMutation.prototype.setDateDelta = function (dateDelta) {
3898        if (dateDelta && dateDelta.valueOf()) {
3899            this.dateDelta = dateDelta;
3900        }
3901        else {
3902            this.dateDelta = null;
3903        }
3904    };
3905    EventDefDateMutation.prototype.setStartDelta = function (startDelta) {
3906        if (startDelta && startDelta.valueOf()) {
3907            this.startDelta = startDelta;
3908        }
3909        else {
3910            this.startDelta = null;
3911        }
3912    };
3913    EventDefDateMutation.prototype.setEndDelta = function (endDelta) {
3914        if (endDelta && endDelta.valueOf()) {
3915            this.endDelta = endDelta;
3916        }
3917        else {
3918            this.endDelta = null;
3919        }
3920    };
3921    EventDefDateMutation.prototype.isEmpty = function () {
3922        return !this.clearEnd && !this.forceTimed && !this.forceAllDay &&
3923            !this.dateDelta && !this.startDelta && !this.endDelta;
3924    };
3925    return EventDefDateMutation;
3926}());
3927exports.default = EventDefDateMutation;
3928
3929
3930/***/ }),
3931/* 41 */
3932/***/ (function(module, exports, __webpack_require__) {
3933
3934Object.defineProperty(exports, "__esModule", { value: true });
3935var tslib_1 = __webpack_require__(2);
3936var $ = __webpack_require__(3);
3937var util_1 = __webpack_require__(4);
3938var Class_1 = __webpack_require__(35);
3939/*
3940Embodies a div that has potential scrollbars
3941*/
3942var Scroller = /** @class */ (function (_super) {
3943    tslib_1.__extends(Scroller, _super);
3944    function Scroller(options) {
3945        var _this = _super.call(this) || this;
3946        options = options || {};
3947        _this.overflowX = options.overflowX || options.overflow || 'auto';
3948        _this.overflowY = options.overflowY || options.overflow || 'auto';
3949        return _this;
3950    }
3951    Scroller.prototype.render = function () {
3952        this.el = this.renderEl();
3953        this.applyOverflow();
3954    };
3955    Scroller.prototype.renderEl = function () {
3956        return (this.scrollEl = $('<div class="fc-scroller"></div>'));
3957    };
3958    // sets to natural height, unlocks overflow
3959    Scroller.prototype.clear = function () {
3960        this.setHeight('auto');
3961        this.applyOverflow();
3962    };
3963    Scroller.prototype.destroy = function () {
3964        this.el.remove();
3965    };
3966    // Overflow
3967    // -----------------------------------------------------------------------------------------------------------------
3968    Scroller.prototype.applyOverflow = function () {
3969        this.scrollEl.css({
3970            'overflow-x': this.overflowX,
3971            'overflow-y': this.overflowY
3972        });
3973    };
3974    // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'.
3975    // Useful for preserving scrollbar widths regardless of future resizes.
3976    // Can pass in scrollbarWidths for optimization.
3977    Scroller.prototype.lockOverflow = function (scrollbarWidths) {
3978        var overflowX = this.overflowX;
3979        var overflowY = this.overflowY;
3980        scrollbarWidths = scrollbarWidths || this.getScrollbarWidths();
3981        if (overflowX === 'auto') {
3982            overflowX = (scrollbarWidths.top || scrollbarWidths.bottom || // horizontal scrollbars?
3983                // OR scrolling pane with massless scrollbars?
3984                this.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth
3985            // subtract 1 because of IE off-by-one issue
3986            ) ? 'scroll' : 'hidden';
3987        }
3988        if (overflowY === 'auto') {
3989            overflowY = (scrollbarWidths.left || scrollbarWidths.right || // vertical scrollbars?
3990                // OR scrolling pane with massless scrollbars?
3991                this.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight
3992            // subtract 1 because of IE off-by-one issue
3993            ) ? 'scroll' : 'hidden';
3994        }
3995        this.scrollEl.css({ 'overflow-x': overflowX, 'overflow-y': overflowY });
3996    };
3997    // Getters / Setters
3998    // -----------------------------------------------------------------------------------------------------------------
3999    Scroller.prototype.setHeight = function (height) {
4000        this.scrollEl.height(height);
4001    };
4002    Scroller.prototype.getScrollTop = function () {
4003        return this.scrollEl.scrollTop();
4004    };
4005    Scroller.prototype.setScrollTop = function (top) {
4006        this.scrollEl.scrollTop(top);
4007    };
4008    Scroller.prototype.getClientWidth = function () {
4009        return this.scrollEl[0].clientWidth;
4010    };
4011    Scroller.prototype.getClientHeight = function () {
4012        return this.scrollEl[0].clientHeight;
4013    };
4014    Scroller.prototype.getScrollbarWidths = function () {
4015        return util_1.getScrollbarWidths(this.scrollEl);
4016    };
4017    return Scroller;
4018}(Class_1.default));
4019exports.default = Scroller;
4020
4021
4022/***/ }),
4023/* 42 */
4024/***/ (function(module, exports, __webpack_require__) {
4025
4026Object.defineProperty(exports, "__esModule", { value: true });
4027var tslib_1 = __webpack_require__(2);
4028var $ = __webpack_require__(3);
4029var util_1 = __webpack_require__(4);
4030var DateComponent_1 = __webpack_require__(231);
4031var GlobalEmitter_1 = __webpack_require__(23);
4032var InteractiveDateComponent = /** @class */ (function (_super) {
4033    tslib_1.__extends(InteractiveDateComponent, _super);
4034    function InteractiveDateComponent(_view, _options) {
4035        var _this = _super.call(this, _view, _options) || this;
4036        // self-config, overridable by subclasses
4037        _this.segSelector = '.fc-event-container > *'; // what constitutes an event element?
4038        if (_this.dateSelectingClass) {
4039            _this.dateClicking = new _this.dateClickingClass(_this);
4040        }
4041        if (_this.dateSelectingClass) {
4042            _this.dateSelecting = new _this.dateSelectingClass(_this);
4043        }
4044        if (_this.eventPointingClass) {
4045            _this.eventPointing = new _this.eventPointingClass(_this);
4046        }
4047        if (_this.eventDraggingClass && _this.eventPointing) {
4048            _this.eventDragging = new _this.eventDraggingClass(_this, _this.eventPointing);
4049        }
4050        if (_this.eventResizingClass && _this.eventPointing) {
4051            _this.eventResizing = new _this.eventResizingClass(_this, _this.eventPointing);
4052        }
4053        if (_this.externalDroppingClass) {
4054            _this.externalDropping = new _this.externalDroppingClass(_this);
4055        }
4056        return _this;
4057    }
4058    // Sets the container element that the view should render inside of, does global DOM-related initializations,
4059    // and renders all the non-date-related content inside.
4060    InteractiveDateComponent.prototype.setElement = function (el) {
4061        _super.prototype.setElement.call(this, el);
4062        if (this.dateClicking) {
4063            this.dateClicking.bindToEl(el);
4064        }
4065        if (this.dateSelecting) {
4066            this.dateSelecting.bindToEl(el);
4067        }
4068        this.bindAllSegHandlersToEl(el);
4069    };
4070    InteractiveDateComponent.prototype.removeElement = function () {
4071        this.endInteractions();
4072        _super.prototype.removeElement.call(this);
4073    };
4074    InteractiveDateComponent.prototype.executeEventUnrender = function () {
4075        this.endInteractions();
4076        _super.prototype.executeEventUnrender.call(this);
4077    };
4078    InteractiveDateComponent.prototype.bindGlobalHandlers = function () {
4079        _super.prototype.bindGlobalHandlers.call(this);
4080        if (this.externalDropping) {
4081            this.externalDropping.bindToDocument();
4082        }
4083    };
4084    InteractiveDateComponent.prototype.unbindGlobalHandlers = function () {
4085        _super.prototype.unbindGlobalHandlers.call(this);
4086        if (this.externalDropping) {
4087            this.externalDropping.unbindFromDocument();
4088        }
4089    };
4090    InteractiveDateComponent.prototype.bindDateHandlerToEl = function (el, name, handler) {
4091        var _this = this;
4092        // attach a handler to the grid's root element.
4093        // jQuery will take care of unregistering them when removeElement gets called.
4094        this.el.on(name, function (ev) {
4095            if (!$(ev.target).is(_this.segSelector + ':not(.fc-helper),' + // directly on an event element
4096                _this.segSelector + ':not(.fc-helper) *,' + // within an event element
4097                '.fc-more,' + // a "more.." link
4098                'a[data-goto]' // a clickable nav link
4099            )) {
4100                return handler.call(_this, ev);
4101            }
4102        });
4103    };
4104    InteractiveDateComponent.prototype.bindAllSegHandlersToEl = function (el) {
4105        [
4106            this.eventPointing,
4107            this.eventDragging,
4108            this.eventResizing
4109        ].forEach(function (eventInteraction) {
4110            if (eventInteraction) {
4111                eventInteraction.bindToEl(el);
4112            }
4113        });
4114    };
4115    InteractiveDateComponent.prototype.bindSegHandlerToEl = function (el, name, handler) {
4116        var _this = this;
4117        el.on(name, this.segSelector, function (ev) {
4118            var segEl = $(ev.currentTarget);
4119            if (!segEl.is('.fc-helper')) {
4120                var seg = segEl.data('fc-seg'); // grab segment data. put there by View::renderEventsPayload
4121                if (seg && !_this.shouldIgnoreEventPointing()) {
4122                    return handler.call(_this, seg, ev); // context will be the Grid
4123                }
4124            }
4125        });
4126    };
4127    InteractiveDateComponent.prototype.shouldIgnoreMouse = function () {
4128        // HACK
4129        // This will still work even though bindDateHandlerToEl doesn't use GlobalEmitter.
4130        return GlobalEmitter_1.default.get().shouldIgnoreMouse();
4131    };
4132    InteractiveDateComponent.prototype.shouldIgnoreTouch = function () {
4133        var view = this._getView();
4134        // On iOS (and Android?) when a new selection is initiated overtop another selection,
4135        // the touchend never fires because the elements gets removed mid-touch-interaction (my theory).
4136        // HACK: simply don't allow this to happen.
4137        // ALSO: prevent selection when an *event* is already raised.
4138        return view.isSelected || view.selectedEvent;
4139    };
4140    InteractiveDateComponent.prototype.shouldIgnoreEventPointing = function () {
4141        // only call the handlers if there is not a drag/resize in progress
4142        return (this.eventDragging && this.eventDragging.isDragging) ||
4143            (this.eventResizing && this.eventResizing.isResizing);
4144    };
4145    InteractiveDateComponent.prototype.canStartSelection = function (seg, ev) {
4146        return util_1.getEvIsTouch(ev) &&
4147            !this.canStartResize(seg, ev) &&
4148            (this.isEventDefDraggable(seg.footprint.eventDef) ||
4149                this.isEventDefResizable(seg.footprint.eventDef));
4150    };
4151    InteractiveDateComponent.prototype.canStartDrag = function (seg, ev) {
4152        return !this.canStartResize(seg, ev) &&
4153            this.isEventDefDraggable(seg.footprint.eventDef);
4154    };
4155    InteractiveDateComponent.prototype.canStartResize = function (seg, ev) {
4156        var view = this._getView();
4157        var eventDef = seg.footprint.eventDef;
4158        return (!util_1.getEvIsTouch(ev) || view.isEventDefSelected(eventDef)) &&
4159            this.isEventDefResizable(eventDef) &&
4160            $(ev.target).is('.fc-resizer');
4161    };
4162    // Kills all in-progress dragging.
4163    // Useful for when public API methods that result in re-rendering are invoked during a drag.
4164    // Also useful for when touch devices misbehave and don't fire their touchend.
4165    InteractiveDateComponent.prototype.endInteractions = function () {
4166        [
4167            this.dateClicking,
4168            this.dateSelecting,
4169            this.eventPointing,
4170            this.eventDragging,
4171            this.eventResizing
4172        ].forEach(function (interaction) {
4173            if (interaction) {
4174                interaction.end();
4175            }
4176        });
4177    };
4178    // Event Drag-n-Drop
4179    // ---------------------------------------------------------------------------------------------------------------
4180    // Computes if the given event is allowed to be dragged by the user
4181    InteractiveDateComponent.prototype.isEventDefDraggable = function (eventDef) {
4182        return this.isEventDefStartEditable(eventDef);
4183    };
4184    InteractiveDateComponent.prototype.isEventDefStartEditable = function (eventDef) {
4185        var isEditable = eventDef.isStartExplicitlyEditable();
4186        if (isEditable == null) {
4187            isEditable = this.opt('eventStartEditable');
4188            if (isEditable == null) {
4189                isEditable = this.isEventDefGenerallyEditable(eventDef);
4190            }
4191        }
4192        return isEditable;
4193    };
4194    InteractiveDateComponent.prototype.isEventDefGenerallyEditable = function (eventDef) {
4195        var isEditable = eventDef.isExplicitlyEditable();
4196        if (isEditable == null) {
4197            isEditable = this.opt('editable');
4198        }
4199        return isEditable;
4200    };
4201    // Event Resizing
4202    // ---------------------------------------------------------------------------------------------------------------
4203    // Computes if the given event is allowed to be resized from its starting edge
4204    InteractiveDateComponent.prototype.isEventDefResizableFromStart = function (eventDef) {
4205        return this.opt('eventResizableFromStart') && this.isEventDefResizable(eventDef);
4206    };
4207    // Computes if the given event is allowed to be resized from its ending edge
4208    InteractiveDateComponent.prototype.isEventDefResizableFromEnd = function (eventDef) {
4209        return this.isEventDefResizable(eventDef);
4210    };
4211    // Computes if the given event is allowed to be resized by the user at all
4212    InteractiveDateComponent.prototype.isEventDefResizable = function (eventDef) {
4213        var isResizable = eventDef.isDurationExplicitlyEditable();
4214        if (isResizable == null) {
4215            isResizable = this.opt('eventDurationEditable');
4216            if (isResizable == null) {
4217                isResizable = this.isEventDefGenerallyEditable(eventDef);
4218            }
4219        }
4220        return isResizable;
4221    };
4222    // Event Mutation / Constraints
4223    // ---------------------------------------------------------------------------------------------------------------
4224    // Diffs the two dates, returning a duration, based on granularity of the grid
4225    // TODO: port isTimeScale into this system?
4226    InteractiveDateComponent.prototype.diffDates = function (a, b) {
4227        if (this.largeUnit) {
4228            return util_1.diffByUnit(a, b, this.largeUnit);
4229        }
4230        else {
4231            return util_1.diffDayTime(a, b);
4232        }
4233    };
4234    // is it allowed, in relation to the view's validRange?
4235    // NOTE: very similar to isExternalInstanceGroupAllowed
4236    InteractiveDateComponent.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) {
4237        var view = this._getView();
4238        var dateProfile = this.dateProfile;
4239        var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges());
4240        var i;
4241        for (i = 0; i < eventFootprints.length; i++) {
4242            // TODO: just use getAllEventRanges directly
4243            if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) {
4244                return false;
4245            }
4246        }
4247        return view.calendar.constraints.isEventInstanceGroupAllowed(eventInstanceGroup);
4248    };
4249    // NOTE: very similar to isEventInstanceGroupAllowed
4250    // when it's a completely anonymous external drag, no event.
4251    InteractiveDateComponent.prototype.isExternalInstanceGroupAllowed = function (eventInstanceGroup) {
4252        var view = this._getView();
4253        var dateProfile = this.dateProfile;
4254        var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges());
4255        var i;
4256        for (i = 0; i < eventFootprints.length; i++) {
4257            if (!dateProfile.validUnzonedRange.containsRange(eventFootprints[i].componentFootprint.unzonedRange)) {
4258                return false;
4259            }
4260        }
4261        for (i = 0; i < eventFootprints.length; i++) {
4262            // treat it as a selection
4263            // TODO: pass in eventInstanceGroup instead
4264            //  because we don't want calendar's constraint system to depend on a component's
4265            //  determination of footprints.
4266            if (!view.calendar.constraints.isSelectionFootprintAllowed(eventFootprints[i].componentFootprint)) {
4267                return false;
4268            }
4269        }
4270        return true;
4271    };
4272    return InteractiveDateComponent;
4273}(DateComponent_1.default));
4274exports.default = InteractiveDateComponent;
4275
4276
4277/***/ }),
4278/* 43 */
4279/***/ (function(module, exports, __webpack_require__) {
4280
4281Object.defineProperty(exports, "__esModule", { value: true });
4282var tslib_1 = __webpack_require__(2);
4283var $ = __webpack_require__(3);
4284var moment = __webpack_require__(0);
4285var util_1 = __webpack_require__(4);
4286var RenderQueue_1 = __webpack_require__(229);
4287var DateProfileGenerator_1 = __webpack_require__(55);
4288var InteractiveDateComponent_1 = __webpack_require__(42);
4289var GlobalEmitter_1 = __webpack_require__(23);
4290var UnzonedRange_1 = __webpack_require__(5);
4291/* An abstract class from which other views inherit from
4292----------------------------------------------------------------------------------------------------------------------*/
4293var View = /** @class */ (function (_super) {
4294    tslib_1.__extends(View, _super);
4295    function View(calendar, viewSpec) {
4296        var _this = _super.call(this, null, viewSpec.options) || this;
4297        _this.batchRenderDepth = 0;
4298        _this.isSelected = false; // boolean whether a range of time is user-selected or not
4299        _this.calendar = calendar;
4300        _this.viewSpec = viewSpec;
4301        // shortcuts
4302        _this.type = viewSpec.type;
4303        // .name is deprecated
4304        _this.name = _this.type;
4305        _this.initRenderQueue();
4306        _this.initHiddenDays();
4307        _this.dateProfileGenerator = new _this.dateProfileGeneratorClass(_this);
4308        _this.bindBaseRenderHandlers();
4309        _this.eventOrderSpecs = util_1.parseFieldSpecs(_this.opt('eventOrder'));
4310        // legacy
4311        if (_this['initialize']) {
4312            _this['initialize']();
4313        }
4314        return _this;
4315    }
4316    View.prototype._getView = function () {
4317        return this;
4318    };
4319    // Retrieves an option with the given name
4320    View.prototype.opt = function (name) {
4321        return this.options[name];
4322    };
4323    /* Render Queue
4324    ------------------------------------------------------------------------------------------------------------------*/
4325    View.prototype.initRenderQueue = function () {
4326        this.renderQueue = new RenderQueue_1.default({
4327            event: this.opt('eventRenderWait')
4328        });
4329        this.renderQueue.on('start', this.onRenderQueueStart.bind(this));
4330        this.renderQueue.on('stop', this.onRenderQueueStop.bind(this));
4331        this.on('before:change', this.startBatchRender);
4332        this.on('change', this.stopBatchRender);
4333    };
4334    View.prototype.onRenderQueueStart = function () {
4335        this.calendar.freezeContentHeight();
4336        this.addScroll(this.queryScroll());
4337    };
4338    View.prototype.onRenderQueueStop = function () {
4339        if (this.calendar.updateViewSize()) { // success?
4340            this.popScroll();
4341        }
4342        this.calendar.thawContentHeight();
4343    };
4344    View.prototype.startBatchRender = function () {
4345        if (!(this.batchRenderDepth++)) {
4346            this.renderQueue.pause();
4347        }
4348    };
4349    View.prototype.stopBatchRender = function () {
4350        if (!(--this.batchRenderDepth)) {
4351            this.renderQueue.resume();
4352        }
4353    };
4354    View.prototype.requestRender = function (func, namespace, actionType) {
4355        this.renderQueue.queue(func, namespace, actionType);
4356    };
4357    // given func will auto-bind to `this`
4358    View.prototype.whenSizeUpdated = function (func) {
4359        if (this.renderQueue.isRunning) {
4360            this.renderQueue.one('stop', func.bind(this));
4361        }
4362        else {
4363            func.call(this);
4364        }
4365    };
4366    /* Title and Date Formatting
4367    ------------------------------------------------------------------------------------------------------------------*/
4368    // Computes what the title at the top of the calendar should be for this view
4369    View.prototype.computeTitle = function (dateProfile) {
4370        var unzonedRange;
4371        // for views that span a large unit of time, show the proper interval, ignoring stray days before and after
4372        if (/^(year|month)$/.test(dateProfile.currentRangeUnit)) {
4373            unzonedRange = dateProfile.currentUnzonedRange;
4374        }
4375        else { // for day units or smaller, use the actual day range
4376            unzonedRange = dateProfile.activeUnzonedRange;
4377        }
4378        return this.formatRange({
4379            start: this.calendar.msToMoment(unzonedRange.startMs, dateProfile.isRangeAllDay),
4380            end: this.calendar.msToMoment(unzonedRange.endMs, dateProfile.isRangeAllDay)
4381        }, dateProfile.isRangeAllDay, this.opt('titleFormat') || this.computeTitleFormat(dateProfile), this.opt('titleRangeSeparator'));
4382    };
4383    // Generates the format string that should be used to generate the title for the current date range.
4384    // Attempts to compute the most appropriate format if not explicitly specified with `titleFormat`.
4385    View.prototype.computeTitleFormat = function (dateProfile) {
4386        var currentRangeUnit = dateProfile.currentRangeUnit;
4387        if (currentRangeUnit === 'year') {
4388            return 'YYYY';
4389        }
4390        else if (currentRangeUnit === 'month') {
4391            return this.opt('monthYearFormat'); // like "September 2014"
4392        }
4393        else if (dateProfile.currentUnzonedRange.as('days') > 1) {
4394            return 'll'; // multi-day range. shorter, like "Sep 9 - 10 2014"
4395        }
4396        else {
4397            return 'LL'; // one day. longer, like "September 9 2014"
4398        }
4399    };
4400    // Date Setting/Unsetting
4401    // -----------------------------------------------------------------------------------------------------------------
4402    View.prototype.setDate = function (date) {
4403        var currentDateProfile = this.get('dateProfile');
4404        var newDateProfile = this.dateProfileGenerator.build(date, undefined, true); // forceToValid=true
4405        if (!currentDateProfile ||
4406            !currentDateProfile.activeUnzonedRange.equals(newDateProfile.activeUnzonedRange)) {
4407            this.set('dateProfile', newDateProfile);
4408        }
4409    };
4410    View.prototype.unsetDate = function () {
4411        this.unset('dateProfile');
4412    };
4413    // Event Data
4414    // -----------------------------------------------------------------------------------------------------------------
4415    View.prototype.fetchInitialEvents = function (dateProfile) {
4416        var calendar = this.calendar;
4417        var forceAllDay = dateProfile.isRangeAllDay && !this.usesMinMaxTime;
4418        return calendar.requestEvents(calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, forceAllDay), calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, forceAllDay));
4419    };
4420    View.prototype.bindEventChanges = function () {
4421        this.listenTo(this.calendar, 'eventsReset', this.resetEvents); // TODO: make this a real event
4422    };
4423    View.prototype.unbindEventChanges = function () {
4424        this.stopListeningTo(this.calendar, 'eventsReset');
4425    };
4426    View.prototype.setEvents = function (eventsPayload) {
4427        this.set('currentEvents', eventsPayload);
4428        this.set('hasEvents', true);
4429    };
4430    View.prototype.unsetEvents = function () {
4431        this.unset('currentEvents');
4432        this.unset('hasEvents');
4433    };
4434    View.prototype.resetEvents = function (eventsPayload) {
4435        this.startBatchRender();
4436        this.unsetEvents();
4437        this.setEvents(eventsPayload);
4438        this.stopBatchRender();
4439    };
4440    // Date High-level Rendering
4441    // -----------------------------------------------------------------------------------------------------------------
4442    View.prototype.requestDateRender = function (dateProfile) {
4443        var _this = this;
4444        this.requestRender(function () {
4445            _this.executeDateRender(dateProfile);
4446        }, 'date', 'init');
4447    };
4448    View.prototype.requestDateUnrender = function () {
4449        var _this = this;
4450        this.requestRender(function () {
4451            _this.executeDateUnrender();
4452        }, 'date', 'destroy');
4453    };
4454    // if dateProfile not specified, uses current
4455    View.prototype.executeDateRender = function (dateProfile) {
4456        _super.prototype.executeDateRender.call(this, dateProfile);
4457        if (this['render']) {
4458            this['render'](); // TODO: deprecate
4459        }
4460        this.trigger('datesRendered');
4461        this.addScroll({ isDateInit: true });
4462        this.startNowIndicator(); // shouldn't render yet because updateSize will be called soon
4463    };
4464    View.prototype.executeDateUnrender = function () {
4465        this.unselect();
4466        this.stopNowIndicator();
4467        this.trigger('before:datesUnrendered');
4468        if (this['destroy']) {
4469            this['destroy'](); // TODO: deprecate
4470        }
4471        _super.prototype.executeDateUnrender.call(this);
4472    };
4473    // "Base" rendering
4474    // -----------------------------------------------------------------------------------------------------------------
4475    View.prototype.bindBaseRenderHandlers = function () {
4476        var _this = this;
4477        this.on('datesRendered', function () {
4478            _this.whenSizeUpdated(_this.triggerViewRender);
4479        });
4480        this.on('before:datesUnrendered', function () {
4481            _this.triggerViewDestroy();
4482        });
4483    };
4484    View.prototype.triggerViewRender = function () {
4485        this.publiclyTrigger('viewRender', {
4486            context: this,
4487            args: [this, this.el]
4488        });
4489    };
4490    View.prototype.triggerViewDestroy = function () {
4491        this.publiclyTrigger('viewDestroy', {
4492            context: this,
4493            args: [this, this.el]
4494        });
4495    };
4496    // Event High-level Rendering
4497    // -----------------------------------------------------------------------------------------------------------------
4498    View.prototype.requestEventsRender = function (eventsPayload) {
4499        var _this = this;
4500        this.requestRender(function () {
4501            _this.executeEventRender(eventsPayload);
4502            _this.whenSizeUpdated(_this.triggerAfterEventsRendered);
4503        }, 'event', 'init');
4504    };
4505    View.prototype.requestEventsUnrender = function () {
4506        var _this = this;
4507        this.requestRender(function () {
4508            _this.triggerBeforeEventsDestroyed();
4509            _this.executeEventUnrender();
4510        }, 'event', 'destroy');
4511    };
4512    // Business Hour High-level Rendering
4513    // -----------------------------------------------------------------------------------------------------------------
4514    View.prototype.requestBusinessHoursRender = function (businessHourGenerator) {
4515        var _this = this;
4516        this.requestRender(function () {
4517            _this.renderBusinessHours(businessHourGenerator);
4518        }, 'businessHours', 'init');
4519    };
4520    View.prototype.requestBusinessHoursUnrender = function () {
4521        var _this = this;
4522        this.requestRender(function () {
4523            _this.unrenderBusinessHours();
4524        }, 'businessHours', 'destroy');
4525    };
4526    // Misc view rendering utils
4527    // -----------------------------------------------------------------------------------------------------------------
4528    // Binds DOM handlers to elements that reside outside the view container, such as the document
4529    View.prototype.bindGlobalHandlers = function () {
4530        _super.prototype.bindGlobalHandlers.call(this);
4531        this.listenTo(GlobalEmitter_1.default.get(), {
4532            touchstart: this.processUnselect,
4533            mousedown: this.handleDocumentMousedown
4534        });
4535    };
4536    // Unbinds DOM handlers from elements that reside outside the view container
4537    View.prototype.unbindGlobalHandlers = function () {
4538        _super.prototype.unbindGlobalHandlers.call(this);
4539        this.stopListeningTo(GlobalEmitter_1.default.get());
4540    };
4541    /* Now Indicator
4542    ------------------------------------------------------------------------------------------------------------------*/
4543    // Immediately render the current time indicator and begins re-rendering it at an interval,
4544    // which is defined by this.getNowIndicatorUnit().
4545    // TODO: somehow do this for the current whole day's background too
4546    View.prototype.startNowIndicator = function () {
4547        var _this = this;
4548        var unit;
4549        var update;
4550        var delay; // ms wait value
4551        if (this.opt('nowIndicator')) {
4552            unit = this.getNowIndicatorUnit();
4553            if (unit) {
4554                update = util_1.proxy(this, 'updateNowIndicator'); // bind to `this`
4555                this.initialNowDate = this.calendar.getNow();
4556                this.initialNowQueriedMs = new Date().valueOf();
4557                // wait until the beginning of the next interval
4558                delay = this.initialNowDate.clone().startOf(unit).add(1, unit).valueOf() - this.initialNowDate.valueOf();
4559                this.nowIndicatorTimeoutID = setTimeout(function () {
4560                    _this.nowIndicatorTimeoutID = null;
4561                    update();
4562                    delay = +moment.duration(1, unit);
4563                    delay = Math.max(100, delay); // prevent too frequent
4564                    _this.nowIndicatorIntervalID = setInterval(update, delay); // update every interval
4565                }, delay);
4566            }
4567            // rendering will be initiated in updateSize
4568        }
4569    };
4570    // rerenders the now indicator, computing the new current time from the amount of time that has passed
4571    // since the initial getNow call.
4572    View.prototype.updateNowIndicator = function () {
4573        if (this.isDatesRendered &&
4574            this.initialNowDate // activated before?
4575        ) {
4576            this.unrenderNowIndicator(); // won't unrender if unnecessary
4577            this.renderNowIndicator(this.initialNowDate.clone().add(new Date().valueOf() - this.initialNowQueriedMs) // add ms
4578            );
4579            this.isNowIndicatorRendered = true;
4580        }
4581    };
4582    // Immediately unrenders the view's current time indicator and stops any re-rendering timers.
4583    // Won't cause side effects if indicator isn't rendered.
4584    View.prototype.stopNowIndicator = function () {
4585        if (this.isNowIndicatorRendered) {
4586            if (this.nowIndicatorTimeoutID) {
4587                clearTimeout(this.nowIndicatorTimeoutID);
4588                this.nowIndicatorTimeoutID = null;
4589            }
4590            if (this.nowIndicatorIntervalID) {
4591                clearInterval(this.nowIndicatorIntervalID);
4592                this.nowIndicatorIntervalID = null;
4593            }
4594            this.unrenderNowIndicator();
4595            this.isNowIndicatorRendered = false;
4596        }
4597    };
4598    /* Dimensions
4599    ------------------------------------------------------------------------------------------------------------------*/
4600    View.prototype.updateSize = function (totalHeight, isAuto, isResize) {
4601        if (this['setHeight']) { // for legacy API
4602            this['setHeight'](totalHeight, isAuto);
4603        }
4604        else {
4605            _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);
4606        }
4607        this.updateNowIndicator();
4608    };
4609    /* Scroller
4610    ------------------------------------------------------------------------------------------------------------------*/
4611    View.prototype.addScroll = function (scroll) {
4612        var queuedScroll = this.queuedScroll || (this.queuedScroll = {});
4613        $.extend(queuedScroll, scroll);
4614    };
4615    View.prototype.popScroll = function () {
4616        this.applyQueuedScroll();
4617        this.queuedScroll = null;
4618    };
4619    View.prototype.applyQueuedScroll = function () {
4620        if (this.queuedScroll) {
4621            this.applyScroll(this.queuedScroll);
4622        }
4623    };
4624    View.prototype.queryScroll = function () {
4625        var scroll = {};
4626        if (this.isDatesRendered) {
4627            $.extend(scroll, this.queryDateScroll());
4628        }
4629        return scroll;
4630    };
4631    View.prototype.applyScroll = function (scroll) {
4632        if (scroll.isDateInit && this.isDatesRendered) {
4633            $.extend(scroll, this.computeInitialDateScroll());
4634        }
4635        if (this.isDatesRendered) {
4636            this.applyDateScroll(scroll);
4637        }
4638    };
4639    View.prototype.computeInitialDateScroll = function () {
4640        return {}; // subclasses must implement
4641    };
4642    View.prototype.queryDateScroll = function () {
4643        return {}; // subclasses must implement
4644    };
4645    View.prototype.applyDateScroll = function (scroll) {
4646        // subclasses must implement
4647    };
4648    /* Event Drag-n-Drop
4649    ------------------------------------------------------------------------------------------------------------------*/
4650    View.prototype.reportEventDrop = function (eventInstance, eventMutation, el, ev) {
4651        var eventManager = this.calendar.eventManager;
4652        var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation);
4653        var dateMutation = eventMutation.dateMutation;
4654        // update the EventInstance, for handlers
4655        if (dateMutation) {
4656            eventInstance.dateProfile = dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar);
4657        }
4658        this.triggerEventDrop(eventInstance, 
4659        // a drop doesn't necessarily mean a date mutation (ex: resource change)
4660        (dateMutation && dateMutation.dateDelta) || moment.duration(), undoFunc, el, ev);
4661    };
4662    // Triggers event-drop handlers that have subscribed via the API
4663    View.prototype.triggerEventDrop = function (eventInstance, dateDelta, undoFunc, el, ev) {
4664        this.publiclyTrigger('eventDrop', {
4665            context: el[0],
4666            args: [
4667                eventInstance.toLegacy(),
4668                dateDelta,
4669                undoFunc,
4670                ev,
4671                {},
4672                this
4673            ]
4674        });
4675    };
4676    /* External Element Drag-n-Drop
4677    ------------------------------------------------------------------------------------------------------------------*/
4678    // Must be called when an external element, via jQuery UI, has been dropped onto the calendar.
4679    // `meta` is the parsed data that has been embedded into the dragging event.
4680    // `dropLocation` is an object that contains the new zoned start/end/allDay values for the event.
4681    View.prototype.reportExternalDrop = function (singleEventDef, isEvent, isSticky, el, ev, ui) {
4682        if (isEvent) {
4683            this.calendar.eventManager.addEventDef(singleEventDef, isSticky);
4684        }
4685        this.triggerExternalDrop(singleEventDef, isEvent, el, ev, ui);
4686    };
4687    // Triggers external-drop handlers that have subscribed via the API
4688    View.prototype.triggerExternalDrop = function (singleEventDef, isEvent, el, ev, ui) {
4689        // trigger 'drop' regardless of whether element represents an event
4690        this.publiclyTrigger('drop', {
4691            context: el[0],
4692            args: [
4693                singleEventDef.dateProfile.start.clone(),
4694                ev,
4695                ui,
4696                this
4697            ]
4698        });
4699        if (isEvent) {
4700            // signal an external event landed
4701            this.publiclyTrigger('eventReceive', {
4702                context: this,
4703                args: [
4704                    singleEventDef.buildInstance().toLegacy(),
4705                    this
4706                ]
4707            });
4708        }
4709    };
4710    /* Event Resizing
4711    ------------------------------------------------------------------------------------------------------------------*/
4712    // Must be called when an event in the view has been resized to a new length
4713    View.prototype.reportEventResize = function (eventInstance, eventMutation, el, ev) {
4714        var eventManager = this.calendar.eventManager;
4715        var undoFunc = eventManager.mutateEventsWithId(eventInstance.def.id, eventMutation);
4716        // update the EventInstance, for handlers
4717        eventInstance.dateProfile = eventMutation.dateMutation.buildNewDateProfile(eventInstance.dateProfile, this.calendar);
4718        var resizeDelta = eventMutation.dateMutation.endDelta || eventMutation.dateMutation.startDelta;
4719        this.triggerEventResize(eventInstance, resizeDelta, undoFunc, el, ev);
4720    };
4721    // Triggers event-resize handlers that have subscribed via the API
4722    View.prototype.triggerEventResize = function (eventInstance, resizeDelta, undoFunc, el, ev) {
4723        this.publiclyTrigger('eventResize', {
4724            context: el[0],
4725            args: [
4726                eventInstance.toLegacy(),
4727                resizeDelta,
4728                undoFunc,
4729                ev,
4730                {},
4731                this
4732            ]
4733        });
4734    };
4735    /* Selection (time range)
4736    ------------------------------------------------------------------------------------------------------------------*/
4737    // Selects a date span on the view. `start` and `end` are both Moments.
4738    // `ev` is the native mouse event that begin the interaction.
4739    View.prototype.select = function (footprint, ev) {
4740        this.unselect(ev);
4741        this.renderSelectionFootprint(footprint);
4742        this.reportSelection(footprint, ev);
4743    };
4744    View.prototype.renderSelectionFootprint = function (footprint) {
4745        if (this['renderSelection']) { // legacy method in custom view classes
4746            this['renderSelection'](footprint.toLegacy(this.calendar));
4747        }
4748        else {
4749            _super.prototype.renderSelectionFootprint.call(this, footprint);
4750        }
4751    };
4752    // Called when a new selection is made. Updates internal state and triggers handlers.
4753    View.prototype.reportSelection = function (footprint, ev) {
4754        this.isSelected = true;
4755        this.triggerSelect(footprint, ev);
4756    };
4757    // Triggers handlers to 'select'
4758    View.prototype.triggerSelect = function (footprint, ev) {
4759        var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of "Event"DateProfile?
4760        this.publiclyTrigger('select', {
4761            context: this,
4762            args: [
4763                dateProfile.start,
4764                dateProfile.end,
4765                ev,
4766                this
4767            ]
4768        });
4769    };
4770    // Undoes a selection. updates in the internal state and triggers handlers.
4771    // `ev` is the native mouse event that began the interaction.
4772    View.prototype.unselect = function (ev) {
4773        if (this.isSelected) {
4774            this.isSelected = false;
4775            if (this['destroySelection']) {
4776                this['destroySelection'](); // TODO: deprecate
4777            }
4778            this.unrenderSelection();
4779            this.publiclyTrigger('unselect', {
4780                context: this,
4781                args: [ev, this]
4782            });
4783        }
4784    };
4785    /* Event Selection
4786    ------------------------------------------------------------------------------------------------------------------*/
4787    View.prototype.selectEventInstance = function (eventInstance) {
4788        if (!this.selectedEventInstance ||
4789            this.selectedEventInstance !== eventInstance) {
4790            this.unselectEventInstance();
4791            this.getEventSegs().forEach(function (seg) {
4792                if (seg.footprint.eventInstance === eventInstance &&
4793                    seg.el // necessary?
4794                ) {
4795                    seg.el.addClass('fc-selected');
4796                }
4797            });
4798            this.selectedEventInstance = eventInstance;
4799        }
4800    };
4801    View.prototype.unselectEventInstance = function () {
4802        if (this.selectedEventInstance) {
4803            this.getEventSegs().forEach(function (seg) {
4804                if (seg.el) { // necessary?
4805                    seg.el.removeClass('fc-selected');
4806                }
4807            });
4808            this.selectedEventInstance = null;
4809        }
4810    };
4811    View.prototype.isEventDefSelected = function (eventDef) {
4812        // event references might change on refetchEvents(), while selectedEventInstance doesn't,
4813        // so compare IDs
4814        return this.selectedEventInstance && this.selectedEventInstance.def.id === eventDef.id;
4815    };
4816    /* Mouse / Touch Unselecting (time range & event unselection)
4817    ------------------------------------------------------------------------------------------------------------------*/
4818    // TODO: move consistently to down/start or up/end?
4819    // TODO: don't kill previous selection if touch scrolling
4820    View.prototype.handleDocumentMousedown = function (ev) {
4821        if (util_1.isPrimaryMouseButton(ev)) {
4822            this.processUnselect(ev);
4823        }
4824    };
4825    View.prototype.processUnselect = function (ev) {
4826        this.processRangeUnselect(ev);
4827        this.processEventUnselect(ev);
4828    };
4829    View.prototype.processRangeUnselect = function (ev) {
4830        var ignore;
4831        // is there a time-range selection?
4832        if (this.isSelected && this.opt('unselectAuto')) {
4833            // only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element
4834            ignore = this.opt('unselectCancel');
4835            if (!ignore || !$(ev.target).closest(ignore).length) {
4836                this.unselect(ev);
4837            }
4838        }
4839    };
4840    View.prototype.processEventUnselect = function (ev) {
4841        if (this.selectedEventInstance) {
4842            if (!$(ev.target).closest('.fc-selected').length) {
4843                this.unselectEventInstance();
4844            }
4845        }
4846    };
4847    /* Triggers
4848    ------------------------------------------------------------------------------------------------------------------*/
4849    View.prototype.triggerBaseRendered = function () {
4850        this.publiclyTrigger('viewRender', {
4851            context: this,
4852            args: [this, this.el]
4853        });
4854    };
4855    View.prototype.triggerBaseUnrendered = function () {
4856        this.publiclyTrigger('viewDestroy', {
4857            context: this,
4858            args: [this, this.el]
4859        });
4860    };
4861    // Triggers handlers to 'dayClick'
4862    // Span has start/end of the clicked area. Only the start is useful.
4863    View.prototype.triggerDayClick = function (footprint, dayEl, ev) {
4864        var dateProfile = this.calendar.footprintToDateProfile(footprint); // abuse of "Event"DateProfile?
4865        this.publiclyTrigger('dayClick', {
4866            context: dayEl,
4867            args: [dateProfile.start, ev, this]
4868        });
4869    };
4870    /* Date Utils
4871    ------------------------------------------------------------------------------------------------------------------*/
4872    // For DateComponent::getDayClasses
4873    View.prototype.isDateInOtherMonth = function (date, dateProfile) {
4874        return false;
4875    };
4876    // Arguments after name will be forwarded to a hypothetical function value
4877    // WARNING: passed-in arguments will be given to generator functions as-is and can cause side-effects.
4878    // Always clone your objects if you fear mutation.
4879    View.prototype.getUnzonedRangeOption = function (name) {
4880        var val = this.opt(name);
4881        if (typeof val === 'function') {
4882            val = val.apply(null, Array.prototype.slice.call(arguments, 1));
4883        }
4884        if (val) {
4885            return this.calendar.parseUnzonedRange(val);
4886        }
4887    };
4888    /* Hidden Days
4889    ------------------------------------------------------------------------------------------------------------------*/
4890    // Initializes internal variables related to calculating hidden days-of-week
4891    View.prototype.initHiddenDays = function () {
4892        var hiddenDays = this.opt('hiddenDays') || []; // array of day-of-week indices that are hidden
4893        var isHiddenDayHash = []; // is the day-of-week hidden? (hash with day-of-week-index -> bool)
4894        var dayCnt = 0;
4895        var i;
4896        if (this.opt('weekends') === false) {
4897            hiddenDays.push(0, 6); // 0=sunday, 6=saturday
4898        }
4899        for (i = 0; i < 7; i++) {
4900            if (!(isHiddenDayHash[i] = $.inArray(i, hiddenDays) !== -1)) {
4901                dayCnt++;
4902            }
4903        }
4904        if (!dayCnt) {
4905            throw new Error('invalid hiddenDays'); // all days were hidden? bad.
4906        }
4907        this.isHiddenDayHash = isHiddenDayHash;
4908    };
4909    // Remove days from the beginning and end of the range that are computed as hidden.
4910    // If the whole range is trimmed off, returns null
4911    View.prototype.trimHiddenDays = function (inputUnzonedRange) {
4912        var start = inputUnzonedRange.getStart();
4913        var end = inputUnzonedRange.getEnd();
4914        if (start) {
4915            start = this.skipHiddenDays(start);
4916        }
4917        if (end) {
4918            end = this.skipHiddenDays(end, -1, true);
4919        }
4920        if (start === null || end === null || start < end) {
4921            return new UnzonedRange_1.default(start, end);
4922        }
4923        return null;
4924    };
4925    // Is the current day hidden?
4926    // `day` is a day-of-week index (0-6), or a Moment
4927    View.prototype.isHiddenDay = function (day) {
4928        if (moment.isMoment(day)) {
4929            day = day.day();
4930        }
4931        return this.isHiddenDayHash[day];
4932    };
4933    // Incrementing the current day until it is no longer a hidden day, returning a copy.
4934    // DOES NOT CONSIDER validUnzonedRange!
4935    // If the initial value of `date` is not a hidden day, don't do anything.
4936    // Pass `isExclusive` as `true` if you are dealing with an end date.
4937    // `inc` defaults to `1` (increment one day forward each time)
4938    View.prototype.skipHiddenDays = function (date, inc, isExclusive) {
4939        if (inc === void 0) { inc = 1; }
4940        if (isExclusive === void 0) { isExclusive = false; }
4941        var out = date.clone();
4942        while (this.isHiddenDayHash[(out.day() + (isExclusive ? inc : 0) + 7) % 7]) {
4943            out.add(inc, 'days');
4944        }
4945        return out;
4946    };
4947    return View;
4948}(InteractiveDateComponent_1.default));
4949exports.default = View;
4950View.prototype.usesMinMaxTime = false;
4951View.prototype.dateProfileGeneratorClass = DateProfileGenerator_1.default;
4952View.watch('displayingDates', ['isInDom', 'dateProfile'], function (deps) {
4953    this.requestDateRender(deps.dateProfile);
4954}, function () {
4955    this.requestDateUnrender();
4956});
4957View.watch('displayingBusinessHours', ['displayingDates', 'businessHourGenerator'], function (deps) {
4958    this.requestBusinessHoursRender(deps.businessHourGenerator);
4959}, function () {
4960    this.requestBusinessHoursUnrender();
4961});
4962View.watch('initialEvents', ['dateProfile'], function (deps) {
4963    return this.fetchInitialEvents(deps.dateProfile);
4964});
4965View.watch('bindingEvents', ['initialEvents'], function (deps) {
4966    this.setEvents(deps.initialEvents);
4967    this.bindEventChanges();
4968}, function () {
4969    this.unbindEventChanges();
4970    this.unsetEvents();
4971});
4972View.watch('displayingEvents', ['displayingDates', 'hasEvents'], function () {
4973    this.requestEventsRender(this.get('currentEvents'));
4974}, function () {
4975    this.requestEventsUnrender();
4976});
4977View.watch('title', ['dateProfile'], function (deps) {
4978    return (this.title = this.computeTitle(deps.dateProfile)); // assign to View for legacy reasons
4979});
4980View.watch('legacyDateProps', ['dateProfile'], function (deps) {
4981    var calendar = this.calendar;
4982    var dateProfile = deps.dateProfile;
4983    // DEPRECATED, but we need to keep it updated...
4984    this.start = calendar.msToMoment(dateProfile.activeUnzonedRange.startMs, dateProfile.isRangeAllDay);
4985    this.end = calendar.msToMoment(dateProfile.activeUnzonedRange.endMs, dateProfile.isRangeAllDay);
4986    this.intervalStart = calendar.msToMoment(dateProfile.currentUnzonedRange.startMs, dateProfile.isRangeAllDay);
4987    this.intervalEnd = calendar.msToMoment(dateProfile.currentUnzonedRange.endMs, dateProfile.isRangeAllDay);
4988});
4989
4990
4991/***/ }),
4992/* 44 */
4993/***/ (function(module, exports, __webpack_require__) {
4994
4995Object.defineProperty(exports, "__esModule", { value: true });
4996var $ = __webpack_require__(3);
4997var util_1 = __webpack_require__(4);
4998var EventRenderer = /** @class */ (function () {
4999    function EventRenderer(component, fillRenderer) {
5000        this.view = component._getView();
5001        this.component = component;
5002        this.fillRenderer = fillRenderer;
5003    }
5004    EventRenderer.prototype.opt = function (name) {
5005        return this.view.opt(name);
5006    };
5007    // Updates values that rely on options and also relate to range
5008    EventRenderer.prototype.rangeUpdated = function () {
5009        var displayEventTime;
5010        var displayEventEnd;
5011        this.eventTimeFormat =
5012            this.opt('eventTimeFormat') ||
5013                this.opt('timeFormat') || // deprecated
5014                this.computeEventTimeFormat();
5015        displayEventTime = this.opt('displayEventTime');
5016        if (displayEventTime == null) {
5017            displayEventTime = this.computeDisplayEventTime(); // might be based off of range
5018        }
5019        displayEventEnd = this.opt('displayEventEnd');
5020        if (displayEventEnd == null) {
5021            displayEventEnd = this.computeDisplayEventEnd(); // might be based off of range
5022        }
5023        this.displayEventTime = displayEventTime;
5024        this.displayEventEnd = displayEventEnd;
5025    };
5026    EventRenderer.prototype.render = function (eventsPayload) {
5027        var dateProfile = this.component._getDateProfile();
5028        var eventDefId;
5029        var instanceGroup;
5030        var eventRanges;
5031        var bgRanges = [];
5032        var fgRanges = [];
5033        for (eventDefId in eventsPayload) {
5034            instanceGroup = eventsPayload[eventDefId];
5035            eventRanges = instanceGroup.sliceRenderRanges(dateProfile.activeUnzonedRange);
5036            if (instanceGroup.getEventDef().hasBgRendering()) {
5037                bgRanges.push.apply(bgRanges, eventRanges);
5038            }
5039            else {
5040                fgRanges.push.apply(fgRanges, eventRanges);
5041            }
5042        }
5043        this.renderBgRanges(bgRanges);
5044        this.renderFgRanges(fgRanges);
5045    };
5046    EventRenderer.prototype.unrender = function () {
5047        this.unrenderBgRanges();
5048        this.unrenderFgRanges();
5049    };
5050    EventRenderer.prototype.renderFgRanges = function (eventRanges) {
5051        var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges);
5052        var segs = this.component.eventFootprintsToSegs(eventFootprints);
5053        // render an `.el` on each seg
5054        // returns a subset of the segs. segs that were actually rendered
5055        segs = this.renderFgSegEls(segs);
5056        if (this.renderFgSegs(segs) !== false) { // no failure?
5057            this.fgSegs = segs;
5058        }
5059    };
5060    EventRenderer.prototype.unrenderFgRanges = function () {
5061        this.unrenderFgSegs(this.fgSegs || []);
5062        this.fgSegs = null;
5063    };
5064    EventRenderer.prototype.renderBgRanges = function (eventRanges) {
5065        var eventFootprints = this.component.eventRangesToEventFootprints(eventRanges);
5066        var segs = this.component.eventFootprintsToSegs(eventFootprints);
5067        if (this.renderBgSegs(segs) !== false) { // no failure?
5068            this.bgSegs = segs;
5069        }
5070    };
5071    EventRenderer.prototype.unrenderBgRanges = function () {
5072        this.unrenderBgSegs();
5073        this.bgSegs = null;
5074    };
5075    EventRenderer.prototype.getSegs = function () {
5076        return (this.bgSegs || []).concat(this.fgSegs || []);
5077    };
5078    // Renders foreground event segments onto the grid
5079    EventRenderer.prototype.renderFgSegs = function (segs) {
5080        // subclasses must implement
5081        // segs already has rendered els, and has been filtered.
5082        return false; // signal failure if not implemented
5083    };
5084    // Unrenders all currently rendered foreground segments
5085    EventRenderer.prototype.unrenderFgSegs = function (segs) {
5086        // subclasses must implement
5087    };
5088    EventRenderer.prototype.renderBgSegs = function (segs) {
5089        var _this = this;
5090        if (this.fillRenderer) {
5091            this.fillRenderer.renderSegs('bgEvent', segs, {
5092                getClasses: function (seg) {
5093                    return _this.getBgClasses(seg.footprint.eventDef);
5094                },
5095                getCss: function (seg) {
5096                    return {
5097                        'background-color': _this.getBgColor(seg.footprint.eventDef)
5098                    };
5099                },
5100                filterEl: function (seg, el) {
5101                    return _this.filterEventRenderEl(seg.footprint, el);
5102                }
5103            });
5104        }
5105        else {
5106            return false; // signal failure if no fillRenderer
5107        }
5108    };
5109    EventRenderer.prototype.unrenderBgSegs = function () {
5110        if (this.fillRenderer) {
5111            this.fillRenderer.unrender('bgEvent');
5112        }
5113    };
5114    // Renders and assigns an `el` property for each foreground event segment.
5115    // Only returns segments that successfully rendered.
5116    EventRenderer.prototype.renderFgSegEls = function (segs, disableResizing) {
5117        var _this = this;
5118        if (disableResizing === void 0) { disableResizing = false; }
5119        var hasEventRenderHandlers = this.view.hasPublicHandlers('eventRender');
5120        var html = '';
5121        var renderedSegs = [];
5122        var i;
5123        if (segs.length) { // don't build an empty html string
5124            // build a large concatenation of event segment HTML
5125            for (i = 0; i < segs.length; i++) {
5126                this.beforeFgSegHtml(segs[i]);
5127                html += this.fgSegHtml(segs[i], disableResizing);
5128            }
5129            // Grab individual elements from the combined HTML string. Use each as the default rendering.
5130            // Then, compute the 'el' for each segment. An el might be null if the eventRender callback returned false.
5131            $(html).each(function (i, node) {
5132                var seg = segs[i];
5133                var el = $(node);
5134                if (hasEventRenderHandlers) { // optimization
5135                    el = _this.filterEventRenderEl(seg.footprint, el);
5136                }
5137                if (el) {
5138                    el.data('fc-seg', seg); // used by handlers
5139                    seg.el = el;
5140                    renderedSegs.push(seg);
5141                }
5142            });
5143        }
5144        return renderedSegs;
5145    };
5146    EventRenderer.prototype.beforeFgSegHtml = function (seg) {
5147    };
5148    // Generates the HTML for the default rendering of a foreground event segment. Used by renderFgSegEls()
5149    EventRenderer.prototype.fgSegHtml = function (seg, disableResizing) {
5150        // subclasses should implement
5151    };
5152    // Generic utility for generating the HTML classNames for an event segment's element
5153    EventRenderer.prototype.getSegClasses = function (seg, isDraggable, isResizable) {
5154        var classes = [
5155            'fc-event',
5156            seg.isStart ? 'fc-start' : 'fc-not-start',
5157            seg.isEnd ? 'fc-end' : 'fc-not-end'
5158        ].concat(this.getClasses(seg.footprint.eventDef));
5159        if (isDraggable) {
5160            classes.push('fc-draggable');
5161        }
5162        if (isResizable) {
5163            classes.push('fc-resizable');
5164        }
5165        // event is currently selected? attach a className.
5166        if (this.view.isEventDefSelected(seg.footprint.eventDef)) {
5167            classes.push('fc-selected');
5168        }
5169        return classes;
5170    };
5171    // Given an event and the default element used for rendering, returns the element that should actually be used.
5172    // Basically runs events and elements through the eventRender hook.
5173    EventRenderer.prototype.filterEventRenderEl = function (eventFootprint, el) {
5174        var legacy = eventFootprint.getEventLegacy();
5175        var custom = this.view.publiclyTrigger('eventRender', {
5176            context: legacy,
5177            args: [legacy, el, this.view]
5178        });
5179        if (custom === false) { // means don't render at all
5180            el = null;
5181        }
5182        else if (custom && custom !== true) {
5183            el = $(custom);
5184        }
5185        return el;
5186    };
5187    // Compute the text that should be displayed on an event's element.
5188    // `range` can be the Event object itself, or something range-like, with at least a `start`.
5189    // If event times are disabled, or the event has no time, will return a blank string.
5190    // If not specified, formatStr will default to the eventTimeFormat setting,
5191    // and displayEnd will default to the displayEventEnd setting.
5192    EventRenderer.prototype.getTimeText = function (eventFootprint, formatStr, displayEnd) {
5193        return this._getTimeText(eventFootprint.eventInstance.dateProfile.start, eventFootprint.eventInstance.dateProfile.end, eventFootprint.componentFootprint.isAllDay, formatStr, displayEnd);
5194    };
5195    EventRenderer.prototype._getTimeText = function (start, end, isAllDay, formatStr, displayEnd) {
5196        if (formatStr == null) {
5197            formatStr = this.eventTimeFormat;
5198        }
5199        if (displayEnd == null) {
5200            displayEnd = this.displayEventEnd;
5201        }
5202        if (this.displayEventTime && !isAllDay) {
5203            if (displayEnd && end) {
5204                return this.view.formatRange({ start: start, end: end }, false, // allDay
5205                formatStr);
5206            }
5207            else {
5208                return start.format(formatStr);
5209            }
5210        }
5211        return '';
5212    };
5213    EventRenderer.prototype.computeEventTimeFormat = function () {
5214        return this.opt('smallTimeFormat');
5215    };
5216    EventRenderer.prototype.computeDisplayEventTime = function () {
5217        return true;
5218    };
5219    EventRenderer.prototype.computeDisplayEventEnd = function () {
5220        return true;
5221    };
5222    EventRenderer.prototype.getBgClasses = function (eventDef) {
5223        var classNames = this.getClasses(eventDef);
5224        classNames.push('fc-bgevent');
5225        return classNames;
5226    };
5227    EventRenderer.prototype.getClasses = function (eventDef) {
5228        var objs = this.getStylingObjs(eventDef);
5229        var i;
5230        var classNames = [];
5231        for (i = 0; i < objs.length; i++) {
5232            classNames.push.apply(// append
5233            classNames, objs[i].eventClassName || objs[i].className || []);
5234        }
5235        return classNames;
5236    };
5237    // Utility for generating event skin-related CSS properties
5238    EventRenderer.prototype.getSkinCss = function (eventDef) {
5239        return {
5240            'background-color': this.getBgColor(eventDef),
5241            'border-color': this.getBorderColor(eventDef),
5242            color: this.getTextColor(eventDef)
5243        };
5244    };
5245    // Queries for caller-specified color, then falls back to default
5246    EventRenderer.prototype.getBgColor = function (eventDef) {
5247        var objs = this.getStylingObjs(eventDef);
5248        var i;
5249        var val;
5250        for (i = 0; i < objs.length && !val; i++) {
5251            val = objs[i].eventBackgroundColor || objs[i].eventColor ||
5252                objs[i].backgroundColor || objs[i].color;
5253        }
5254        if (!val) {
5255            val = this.opt('eventBackgroundColor') || this.opt('eventColor');
5256        }
5257        return val;
5258    };
5259    // Queries for caller-specified color, then falls back to default
5260    EventRenderer.prototype.getBorderColor = function (eventDef) {
5261        var objs = this.getStylingObjs(eventDef);
5262        var i;
5263        var val;
5264        for (i = 0; i < objs.length && !val; i++) {
5265            val = objs[i].eventBorderColor || objs[i].eventColor ||
5266                objs[i].borderColor || objs[i].color;
5267        }
5268        if (!val) {
5269            val = this.opt('eventBorderColor') || this.opt('eventColor');
5270        }
5271        return val;
5272    };
5273    // Queries for caller-specified color, then falls back to default
5274    EventRenderer.prototype.getTextColor = function (eventDef) {
5275        var objs = this.getStylingObjs(eventDef);
5276        var i;
5277        var val;
5278        for (i = 0; i < objs.length && !val; i++) {
5279            val = objs[i].eventTextColor ||
5280                objs[i].textColor;
5281        }
5282        if (!val) {
5283            val = this.opt('eventTextColor');
5284        }
5285        return val;
5286    };
5287    EventRenderer.prototype.getStylingObjs = function (eventDef) {
5288        var objs = this.getFallbackStylingObjs(eventDef);
5289        objs.unshift(eventDef);
5290        return objs;
5291    };
5292    EventRenderer.prototype.getFallbackStylingObjs = function (eventDef) {
5293        return [eventDef.source];
5294    };
5295    EventRenderer.prototype.sortEventSegs = function (segs) {
5296        segs.sort(util_1.proxy(this, 'compareEventSegs'));
5297    };
5298    // A cmp function for determining which segments should take visual priority
5299    EventRenderer.prototype.compareEventSegs = function (seg1, seg2) {
5300        var f1 = seg1.footprint;
5301        var f2 = seg2.footprint;
5302        var cf1 = f1.componentFootprint;
5303        var cf2 = f2.componentFootprint;
5304        var r1 = cf1.unzonedRange;
5305        var r2 = cf2.unzonedRange;
5306        return r1.startMs - r2.startMs || // earlier events go first
5307            (r2.endMs - r2.startMs) - (r1.endMs - r1.startMs) || // tie? longer events go first
5308            cf2.isAllDay - cf1.isAllDay || // tie? put all-day events first (booleans cast to 0/1)
5309            util_1.compareByFieldSpecs(f1.eventDef, f2.eventDef, this.view.eventOrderSpecs, f1.eventDef.miscProps, f2.eventDef.miscProps);
5310    };
5311    return EventRenderer;
5312}());
5313exports.default = EventRenderer;
5314
5315
5316/***/ }),
5317/* 45 */,
5318/* 46 */,
5319/* 47 */,
5320/* 48 */,
5321/* 49 */
5322/***/ (function(module, exports, __webpack_require__) {
5323
5324Object.defineProperty(exports, "__esModule", { value: true });
5325var moment_ext_1 = __webpack_require__(11);
5326// Plugin
5327// -------------------------------------------------------------------------------------------------
5328moment_ext_1.newMomentProto.format = function () {
5329    if (this._fullCalendar && arguments[0]) { // an enhanced moment? and a format string provided?
5330        return formatDate(this, arguments[0]); // our extended formatting
5331    }
5332    if (this._ambigTime) {
5333        return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD');
5334    }
5335    if (this._ambigZone) {
5336        return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss');
5337    }
5338    if (this._fullCalendar) { // enhanced non-ambig moment?
5339        // moment.format() doesn't ensure english, but we want to.
5340        return moment_ext_1.oldMomentFormat(englishMoment(this));
5341    }
5342    return moment_ext_1.oldMomentProto.format.apply(this, arguments);
5343};
5344moment_ext_1.newMomentProto.toISOString = function () {
5345    if (this._ambigTime) {
5346        return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD');
5347    }
5348    if (this._ambigZone) {
5349        return moment_ext_1.oldMomentFormat(englishMoment(this), 'YYYY-MM-DD[T]HH:mm:ss');
5350    }
5351    if (this._fullCalendar) { // enhanced non-ambig moment?
5352        // depending on browser, moment might not output english. ensure english.
5353        // https://github.com/moment/moment/blob/2.18.1/src/lib/moment/format.js#L22
5354        return moment_ext_1.oldMomentProto.toISOString.apply(englishMoment(this), arguments);
5355    }
5356    return moment_ext_1.oldMomentProto.toISOString.apply(this, arguments);
5357};
5358function englishMoment(mom) {
5359    if (mom.locale() !== 'en') {
5360        return mom.clone().locale('en');
5361    }
5362    return mom;
5363}
5364// Config
5365// ---------------------------------------------------------------------------------------------------------------------
5366/*
5367Inserted between chunks in the fake ("intermediate") formatting string.
5368Important that it passes as whitespace (\s) because moment often identifies non-standalone months
5369via a regexp with an \s.
5370*/
5371var PART_SEPARATOR = '\u000b'; // vertical tab
5372/*
5373Inserted as the first character of a literal-text chunk to indicate that the literal text is not actually literal text,
5374but rather, a "special" token that has custom rendering (see specialTokens map).
5375*/
5376var SPECIAL_TOKEN_MARKER = '\u001f'; // information separator 1
5377/*
5378Inserted at the beginning and end of a span of text that must have non-zero numeric characters.
5379Handling of these markers is done in a post-processing step at the very end of text rendering.
5380*/
5381var MAYBE_MARKER = '\u001e'; // information separator 2
5382var MAYBE_REGEXP = new RegExp(MAYBE_MARKER + '([^' + MAYBE_MARKER + ']*)' + MAYBE_MARKER, 'g'); // must be global
5383/*
5384Addition formatting tokens we want recognized
5385*/
5386var specialTokens = {
5387    t: function (date) {
5388        return moment_ext_1.oldMomentFormat(date, 'a').charAt(0);
5389    },
5390    T: function (date) {
5391        return moment_ext_1.oldMomentFormat(date, 'A').charAt(0);
5392    }
5393};
5394/*
5395The first characters of formatting tokens for units that are 1 day or larger.
5396`value` is for ranking relative size (lower means bigger).
5397`unit` is a normalized unit, used for comparing moments.
5398*/
5399var largeTokenMap = {
5400    Y: { value: 1, unit: 'year' },
5401    M: { value: 2, unit: 'month' },
5402    W: { value: 3, unit: 'week' },
5403    w: { value: 3, unit: 'week' },
5404    D: { value: 4, unit: 'day' },
5405    d: { value: 4, unit: 'day' } // day of week
5406};
5407// Single Date Formatting
5408// ---------------------------------------------------------------------------------------------------------------------
5409/*
5410Formats `date` with a Moment formatting string, but allow our non-zero areas and special token
5411*/
5412function formatDate(date, formatStr) {
5413    return renderFakeFormatString(getParsedFormatString(formatStr).fakeFormatString, date);
5414}
5415exports.formatDate = formatDate;
5416// Date Range Formatting
5417// -------------------------------------------------------------------------------------------------
5418// TODO: make it work with timezone offset
5419/*
5420Using a formatting string meant for a single date, generate a range string, like
5421"Sep 2 - 9 2013", that intelligently inserts a separator where the dates differ.
5422If the dates are the same as far as the format string is concerned, just return a single
5423rendering of one date, without any separator.
5424*/
5425function formatRange(date1, date2, formatStr, separator, isRTL) {
5426    var localeData;
5427    date1 = moment_ext_1.default.parseZone(date1);
5428    date2 = moment_ext_1.default.parseZone(date2);
5429    localeData = date1.localeData();
5430    // Expand localized format strings, like "LL" -> "MMMM D YYYY".
5431    // BTW, this is not important for `formatDate` because it is impossible to put custom tokens
5432    // or non-zero areas in Moment's localized format strings.
5433    formatStr = localeData.longDateFormat(formatStr) || formatStr;
5434    return renderParsedFormat(getParsedFormatString(formatStr), date1, date2, separator || ' - ', isRTL);
5435}
5436exports.formatRange = formatRange;
5437/*
5438Renders a range with an already-parsed format string.
5439*/
5440function renderParsedFormat(parsedFormat, date1, date2, separator, isRTL) {
5441    var sameUnits = parsedFormat.sameUnits;
5442    var unzonedDate1 = date1.clone().stripZone(); // for same-unit comparisons
5443    var unzonedDate2 = date2.clone().stripZone(); // "
5444    var renderedParts1 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date1);
5445    var renderedParts2 = renderFakeFormatStringParts(parsedFormat.fakeFormatString, date2);
5446    var leftI;
5447    var leftStr = '';
5448    var rightI;
5449    var rightStr = '';
5450    var middleI;
5451    var middleStr1 = '';
5452    var middleStr2 = '';
5453    var middleStr = '';
5454    // Start at the leftmost side of the formatting string and continue until you hit a token
5455    // that is not the same between dates.
5456    for (leftI = 0; leftI < sameUnits.length && (!sameUnits[leftI] || unzonedDate1.isSame(unzonedDate2, sameUnits[leftI])); leftI++) {
5457        leftStr += renderedParts1[leftI];
5458    }
5459    // Similarly, start at the rightmost side of the formatting string and move left
5460    for (rightI = sameUnits.length - 1; rightI > leftI && (!sameUnits[rightI] || unzonedDate1.isSame(unzonedDate2, sameUnits[rightI])); rightI--) {
5461        // If current chunk is on the boundary of unique date-content, and is a special-case
5462        // date-formatting postfix character, then don't consume it. Consider it unique date-content.
5463        // TODO: make configurable
5464        if (rightI - 1 === leftI && renderedParts1[rightI] === '.') {
5465            break;
5466        }
5467        rightStr = renderedParts1[rightI] + rightStr;
5468    }
5469    // The area in the middle is different for both of the dates.
5470    // Collect them distinctly so we can jam them together later.
5471    for (middleI = leftI; middleI <= rightI; middleI++) {
5472        middleStr1 += renderedParts1[middleI];
5473        middleStr2 += renderedParts2[middleI];
5474    }
5475    if (middleStr1 || middleStr2) {
5476        if (isRTL) {
5477            middleStr = middleStr2 + separator + middleStr1;
5478        }
5479        else {
5480            middleStr = middleStr1 + separator + middleStr2;
5481        }
5482    }
5483    return processMaybeMarkers(leftStr + middleStr + rightStr);
5484}
5485// Format String Parsing
5486// ---------------------------------------------------------------------------------------------------------------------
5487var parsedFormatStrCache = {};
5488/*
5489Returns a parsed format string, leveraging a cache.
5490*/
5491function getParsedFormatString(formatStr) {
5492    return parsedFormatStrCache[formatStr] ||
5493        (parsedFormatStrCache[formatStr] = parseFormatString(formatStr));
5494}
5495/*
5496Parses a format string into the following:
5497- fakeFormatString: a momentJS formatting string, littered with special control characters that get post-processed.
5498- sameUnits: for every part in fakeFormatString, if the part is a token, the value will be a unit string (like "day"),
5499  that indicates how similar a range's start & end must be in order to share the same formatted text.
5500  If not a token, then the value is null.
5501  Always a flat array (not nested liked "chunks").
5502*/
5503function parseFormatString(formatStr) {
5504    var chunks = chunkFormatString(formatStr);
5505    return {
5506        fakeFormatString: buildFakeFormatString(chunks),
5507        sameUnits: buildSameUnits(chunks)
5508    };
5509}
5510/*
5511Break the formatting string into an array of chunks.
5512A 'maybe' chunk will have nested chunks.
5513*/
5514function chunkFormatString(formatStr) {
5515    var chunks = [];
5516    var match;
5517    // TODO: more descrimination
5518    // \4 is a backreference to the first character of a multi-character set.
5519    var chunker = /\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;
5520    while ((match = chunker.exec(formatStr))) {
5521        if (match[1]) { // a literal string inside [ ... ]
5522            chunks.push.apply(chunks, // append
5523            splitStringLiteral(match[1]));
5524        }
5525        else if (match[2]) { // non-zero formatting inside ( ... )
5526            chunks.push({ maybe: chunkFormatString(match[2]) });
5527        }
5528        else if (match[3]) { // a formatting token
5529            chunks.push({ token: match[3] });
5530        }
5531        else if (match[5]) { // an unenclosed literal string
5532            chunks.push.apply(chunks, // append
5533            splitStringLiteral(match[5]));
5534        }
5535    }
5536    return chunks;
5537}
5538/*
5539Potentially splits a literal-text string into multiple parts. For special cases.
5540*/
5541function splitStringLiteral(s) {
5542    if (s === '. ') {
5543        return ['.', ' ']; // for locales with periods bound to the end of each year/month/date
5544    }
5545    else {
5546        return [s];
5547    }
5548}
5549/*
5550Given chunks parsed from a real format string, generate a fake (aka "intermediate") format string with special control
5551characters that will eventually be given to moment for formatting, and then post-processed.
5552*/
5553function buildFakeFormatString(chunks) {
5554    var parts = [];
5555    var i;
5556    var chunk;
5557    for (i = 0; i < chunks.length; i++) {
5558        chunk = chunks[i];
5559        if (typeof chunk === 'string') {
5560            parts.push('[' + chunk + ']');
5561        }
5562        else if (chunk.token) {
5563            if (chunk.token in specialTokens) {
5564                parts.push(SPECIAL_TOKEN_MARKER + // useful during post-processing
5565                    '[' + chunk.token + ']' // preserve as literal text
5566                );
5567            }
5568            else {
5569                parts.push(chunk.token); // unprotected text implies a format string
5570            }
5571        }
5572        else if (chunk.maybe) {
5573            parts.push(MAYBE_MARKER + // useful during post-processing
5574                buildFakeFormatString(chunk.maybe) +
5575                MAYBE_MARKER);
5576        }
5577    }
5578    return parts.join(PART_SEPARATOR);
5579}
5580/*
5581Given parsed chunks from a real formatting string, generates an array of unit strings (like "day") that indicate
5582in which regard two dates must be similar in order to share range formatting text.
5583The `chunks` can be nested (because of "maybe" chunks), however, the returned array will be flat.
5584*/
5585function buildSameUnits(chunks) {
5586    var units = [];
5587    var i;
5588    var chunk;
5589    var tokenInfo;
5590    for (i = 0; i < chunks.length; i++) {
5591        chunk = chunks[i];
5592        if (chunk.token) {
5593            tokenInfo = largeTokenMap[chunk.token.charAt(0)];
5594            units.push(tokenInfo ? tokenInfo.unit : 'second'); // default to a very strict same-second
5595        }
5596        else if (chunk.maybe) {
5597            units.push.apply(units, // append
5598            buildSameUnits(chunk.maybe));
5599        }
5600        else {
5601            units.push(null);
5602        }
5603    }
5604    return units;
5605}
5606// Rendering to text
5607// ---------------------------------------------------------------------------------------------------------------------
5608/*
5609Formats a date with a fake format string, post-processes the control characters, then returns.
5610*/
5611function renderFakeFormatString(fakeFormatString, date) {
5612    return processMaybeMarkers(renderFakeFormatStringParts(fakeFormatString, date).join(''));
5613}
5614/*
5615Formats a date into parts that will have been post-processed, EXCEPT for the "maybe" markers.
5616*/
5617function renderFakeFormatStringParts(fakeFormatString, date) {
5618    var parts = [];
5619    var fakeRender = moment_ext_1.oldMomentFormat(date, fakeFormatString);
5620    var fakeParts = fakeRender.split(PART_SEPARATOR);
5621    var i;
5622    var fakePart;
5623    for (i = 0; i < fakeParts.length; i++) {
5624        fakePart = fakeParts[i];
5625        if (fakePart.charAt(0) === SPECIAL_TOKEN_MARKER) {
5626            parts.push(
5627            // the literal string IS the token's name.
5628            // call special token's registered function.
5629            specialTokens[fakePart.substring(1)](date));
5630        }
5631        else {
5632            parts.push(fakePart);
5633        }
5634    }
5635    return parts;
5636}
5637/*
5638Accepts an almost-finally-formatted string and processes the "maybe" control characters, returning a new string.
5639*/
5640function processMaybeMarkers(s) {
5641    return s.replace(MAYBE_REGEXP, function (m0, m1) {
5642        if (m1.match(/[1-9]/)) { // any non-zero numeric characters?
5643            return m1;
5644        }
5645        else {
5646            return '';
5647        }
5648    });
5649}
5650// Misc Utils
5651// -------------------------------------------------------------------------------------------------
5652/*
5653Returns a unit string, either 'year', 'month', 'day', or null for the most granular formatting token in the string.
5654*/
5655function queryMostGranularFormatUnit(formatStr) {
5656    var chunks = chunkFormatString(formatStr);
5657    var i;
5658    var chunk;
5659    var candidate;
5660    var best;
5661    for (i = 0; i < chunks.length; i++) {
5662        chunk = chunks[i];
5663        if (chunk.token) {
5664            candidate = largeTokenMap[chunk.token.charAt(0)];
5665            if (candidate) {
5666                if (!best || candidate.value > best.value) {
5667                    best = candidate;
5668                }
5669            }
5670        }
5671    }
5672    if (best) {
5673        return best.unit;
5674    }
5675    return null;
5676}
5677exports.queryMostGranularFormatUnit = queryMostGranularFormatUnit;
5678
5679
5680/***/ }),
5681/* 50 */
5682/***/ (function(module, exports) {
5683
5684Object.defineProperty(exports, "__esModule", { value: true });
5685var EventRange = /** @class */ (function () {
5686    function EventRange(unzonedRange, eventDef, eventInstance) {
5687        this.unzonedRange = unzonedRange;
5688        this.eventDef = eventDef;
5689        if (eventInstance) {
5690            this.eventInstance = eventInstance;
5691        }
5692    }
5693    return EventRange;
5694}());
5695exports.default = EventRange;
5696
5697
5698/***/ }),
5699/* 51 */
5700/***/ (function(module, exports, __webpack_require__) {
5701
5702Object.defineProperty(exports, "__esModule", { value: true });
5703var tslib_1 = __webpack_require__(2);
5704var Class_1 = __webpack_require__(35);
5705var EmitterMixin_1 = __webpack_require__(13);
5706var ListenerMixin_1 = __webpack_require__(7);
5707var Model = /** @class */ (function (_super) {
5708    tslib_1.__extends(Model, _super);
5709    function Model() {
5710        var _this = _super.call(this) || this;
5711        _this._watchers = {};
5712        _this._props = {};
5713        _this.applyGlobalWatchers();
5714        _this.constructed();
5715        return _this;
5716    }
5717    Model.watch = function (name) {
5718        var args = [];
5719        for (var _i = 1; _i < arguments.length; _i++) {
5720            args[_i - 1] = arguments[_i];
5721        }
5722        // subclasses should make a masked-copy of the superclass's map
5723        // TODO: write test
5724        if (!this.prototype.hasOwnProperty('_globalWatchArgs')) {
5725            this.prototype._globalWatchArgs = Object.create(this.prototype._globalWatchArgs);
5726        }
5727        this.prototype._globalWatchArgs[name] = args;
5728    };
5729    Model.prototype.constructed = function () {
5730        // useful for monkeypatching. TODO: BaseClass?
5731    };
5732    Model.prototype.applyGlobalWatchers = function () {
5733        var map = this._globalWatchArgs;
5734        var name;
5735        for (name in map) {
5736            this.watch.apply(this, [name].concat(map[name]));
5737        }
5738    };
5739    Model.prototype.has = function (name) {
5740        return name in this._props;
5741    };
5742    Model.prototype.get = function (name) {
5743        if (name === undefined) {
5744            return this._props;
5745        }
5746        return this._props[name];
5747    };
5748    Model.prototype.set = function (name, val) {
5749        var newProps;
5750        if (typeof name === 'string') {
5751            newProps = {};
5752            newProps[name] = val === undefined ? null : val;
5753        }
5754        else {
5755            newProps = name;
5756        }
5757        this.setProps(newProps);
5758    };
5759    Model.prototype.reset = function (newProps) {
5760        var oldProps = this._props;
5761        var changeset = {}; // will have undefined's to signal unsets
5762        var name;
5763        for (name in oldProps) {
5764            changeset[name] = undefined;
5765        }
5766        for (name in newProps) {
5767            changeset[name] = newProps[name];
5768        }
5769        this.setProps(changeset);
5770    };
5771    Model.prototype.unset = function (name) {
5772        var newProps = {};
5773        var names;
5774        var i;
5775        if (typeof name === 'string') {
5776            names = [name];
5777        }
5778        else {
5779            names = name;
5780        }
5781        for (i = 0; i < names.length; i++) {
5782            newProps[names[i]] = undefined;
5783        }
5784        this.setProps(newProps);
5785    };
5786    Model.prototype.setProps = function (newProps) {
5787        var changedProps = {};
5788        var changedCnt = 0;
5789        var name;
5790        var val;
5791        for (name in newProps) {
5792            val = newProps[name];
5793            // a change in value?
5794            // if an object, don't check equality, because might have been mutated internally.
5795            // TODO: eventually enforce immutability.
5796            if (typeof val === 'object' ||
5797                val !== this._props[name]) {
5798                changedProps[name] = val;
5799                changedCnt++;
5800            }
5801        }
5802        if (changedCnt) {
5803            this.trigger('before:batchChange', changedProps);
5804            for (name in changedProps) {
5805                val = changedProps[name];
5806                this.trigger('before:change', name, val);
5807                this.trigger('before:change:' + name, val);
5808            }
5809            for (name in changedProps) {
5810                val = changedProps[name];
5811                if (val === undefined) {
5812                    delete this._props[name];
5813                }
5814                else {
5815                    this._props[name] = val;
5816                }
5817                this.trigger('change:' + name, val);
5818                this.trigger('change', name, val);
5819            }
5820            this.trigger('batchChange', changedProps);
5821        }
5822    };
5823    Model.prototype.watch = function (name, depList, startFunc, stopFunc) {
5824        var _this = this;
5825        this.unwatch(name);
5826        this._watchers[name] = this._watchDeps(depList, function (deps) {
5827            var res = startFunc.call(_this, deps);
5828            if (res && res.then) {
5829                _this.unset(name); // put in an unset state while resolving
5830                res.then(function (val) {
5831                    _this.set(name, val);
5832                });
5833            }
5834            else {
5835                _this.set(name, res);
5836            }
5837        }, function (deps) {
5838            _this.unset(name);
5839            if (stopFunc) {
5840                stopFunc.call(_this, deps);
5841            }
5842        });
5843    };
5844    Model.prototype.unwatch = function (name) {
5845        var watcher = this._watchers[name];
5846        if (watcher) {
5847            delete this._watchers[name];
5848            watcher.teardown();
5849        }
5850    };
5851    Model.prototype._watchDeps = function (depList, startFunc, stopFunc) {
5852        var _this = this;
5853        var queuedChangeCnt = 0;
5854        var depCnt = depList.length;
5855        var satisfyCnt = 0;
5856        var values = {}; // what's passed as the `deps` arguments
5857        var bindTuples = []; // array of [ eventName, handlerFunc ] arrays
5858        var isCallingStop = false;
5859        var onBeforeDepChange = function (depName, val, isOptional) {
5860            queuedChangeCnt++;
5861            if (queuedChangeCnt === 1) { // first change to cause a "stop" ?
5862                if (satisfyCnt === depCnt) { // all deps previously satisfied?
5863                    isCallingStop = true;
5864                    stopFunc(values);
5865                    isCallingStop = false;
5866                }
5867            }
5868        };
5869        var onDepChange = function (depName, val, isOptional) {
5870            if (val === undefined) { // unsetting a value?
5871                // required dependency that was previously set?
5872                if (!isOptional && values[depName] !== undefined) {
5873                    satisfyCnt--;
5874                }
5875                delete values[depName];
5876            }
5877            else { // setting a value?
5878                // required dependency that was previously unset?
5879                if (!isOptional && values[depName] === undefined) {
5880                    satisfyCnt++;
5881                }
5882                values[depName] = val;
5883            }
5884            queuedChangeCnt--;
5885            if (!queuedChangeCnt) { // last change to cause a "start"?
5886                // now finally satisfied or satisfied all along?
5887                if (satisfyCnt === depCnt) {
5888                    // if the stopFunc initiated another value change, ignore it.
5889                    // it will be processed by another change event anyway.
5890                    if (!isCallingStop) {
5891                        startFunc(values);
5892                    }
5893                }
5894            }
5895        };
5896        // intercept for .on() that remembers handlers
5897        var bind = function (eventName, handler) {
5898            _this.on(eventName, handler);
5899            bindTuples.push([eventName, handler]);
5900        };
5901        // listen to dependency changes
5902        depList.forEach(function (depName) {
5903            var isOptional = false;
5904            if (depName.charAt(0) === '?') { // TODO: more DRY
5905                depName = depName.substring(1);
5906                isOptional = true;
5907            }
5908            bind('before:change:' + depName, function (val) {
5909                onBeforeDepChange(depName, val, isOptional);
5910            });
5911            bind('change:' + depName, function (val) {
5912                onDepChange(depName, val, isOptional);
5913            });
5914        });
5915        // process current dependency values
5916        depList.forEach(function (depName) {
5917            var isOptional = false;
5918            if (depName.charAt(0) === '?') { // TODO: more DRY
5919                depName = depName.substring(1);
5920                isOptional = true;
5921            }
5922            if (_this.has(depName)) {
5923                values[depName] = _this.get(depName);
5924                satisfyCnt++;
5925            }
5926            else if (isOptional) {
5927                satisfyCnt++;
5928            }
5929        });
5930        // initially satisfied
5931        if (satisfyCnt === depCnt) {
5932            startFunc(values);
5933        }
5934        return {
5935            teardown: function () {
5936                // remove all handlers
5937                for (var i = 0; i < bindTuples.length; i++) {
5938                    _this.off(bindTuples[i][0], bindTuples[i][1]);
5939                }
5940                bindTuples = null;
5941                // was satisfied, so call stopFunc
5942                if (satisfyCnt === depCnt) {
5943                    stopFunc();
5944                }
5945            },
5946            flash: function () {
5947                if (satisfyCnt === depCnt) {
5948                    stopFunc();
5949                    startFunc(values);
5950                }
5951            }
5952        };
5953    };
5954    Model.prototype.flash = function (name) {
5955        var watcher = this._watchers[name];
5956        if (watcher) {
5957            watcher.flash();
5958        }
5959    };
5960    return Model;
5961}(Class_1.default));
5962exports.default = Model;
5963Model.prototype._globalWatchArgs = {}; // mutation protection in Model.watch
5964EmitterMixin_1.default.mixInto(Model);
5965ListenerMixin_1.default.mixInto(Model);
5966
5967
5968/***/ }),
5969/* 52 */
5970/***/ (function(module, exports, __webpack_require__) {
5971
5972/*
5973USAGE:
5974  import { default as ParsableModelMixin, ParsableModelInterface } from './ParsableModelMixin'
5975in class:
5976  applyProps: ParsableModelInterface['applyProps']
5977  applyManualStandardProps: ParsableModelInterface['applyManualStandardProps']
5978  applyMiscProps: ParsableModelInterface['applyMiscProps']
5979  isStandardProp: ParsableModelInterface['isStandardProp']
5980  static defineStandardProps = ParsableModelMixin.defineStandardProps
5981  static copyVerbatimStandardProps = ParsableModelMixin.copyVerbatimStandardProps
5982after class:
5983  ParsableModelMixin.mixInto(TheClass)
5984*/
5985Object.defineProperty(exports, "__esModule", { value: true });
5986var tslib_1 = __webpack_require__(2);
5987var util_1 = __webpack_require__(4);
5988var Mixin_1 = __webpack_require__(15);
5989var ParsableModelMixin = /** @class */ (function (_super) {
5990    tslib_1.__extends(ParsableModelMixin, _super);
5991    function ParsableModelMixin() {
5992        return _super !== null && _super.apply(this, arguments) || this;
5993    }
5994    ParsableModelMixin.defineStandardProps = function (propDefs) {
5995        var proto = this.prototype;
5996        if (!proto.hasOwnProperty('standardPropMap')) {
5997            proto.standardPropMap = Object.create(proto.standardPropMap);
5998        }
5999        util_1.copyOwnProps(propDefs, proto.standardPropMap);
6000    };
6001    ParsableModelMixin.copyVerbatimStandardProps = function (src, dest) {
6002        var map = this.prototype.standardPropMap;
6003        var propName;
6004        for (propName in map) {
6005            if (src[propName] != null && // in the src object?
6006                map[propName] === true // false means "copy verbatim"
6007            ) {
6008                dest[propName] = src[propName];
6009            }
6010        }
6011    };
6012    /*
6013    Returns true/false for success.
6014    Meant to be only called ONCE, at object creation.
6015    */
6016    ParsableModelMixin.prototype.applyProps = function (rawProps) {
6017        var standardPropMap = this.standardPropMap;
6018        var manualProps = {};
6019        var miscProps = {};
6020        var propName;
6021        for (propName in rawProps) {
6022            if (standardPropMap[propName] === true) { // copy verbatim
6023                this[propName] = rawProps[propName];
6024            }
6025            else if (standardPropMap[propName] === false) {
6026                manualProps[propName] = rawProps[propName];
6027            }
6028            else {
6029                miscProps[propName] = rawProps[propName];
6030            }
6031        }
6032        this.applyMiscProps(miscProps);
6033        return this.applyManualStandardProps(manualProps);
6034    };
6035    /*
6036    If subclasses override, they must call this supermethod and return the boolean response.
6037    Meant to be only called ONCE, at object creation.
6038    */
6039    ParsableModelMixin.prototype.applyManualStandardProps = function (rawProps) {
6040        return true;
6041    };
6042    /*
6043    Can be called even after initial object creation.
6044    */
6045    ParsableModelMixin.prototype.applyMiscProps = function (rawProps) {
6046        // subclasses can implement
6047    };
6048    /*
6049    TODO: why is this a method when defineStandardProps is static
6050    */
6051    ParsableModelMixin.prototype.isStandardProp = function (propName) {
6052        return propName in this.standardPropMap;
6053    };
6054    return ParsableModelMixin;
6055}(Mixin_1.default));
6056exports.default = ParsableModelMixin;
6057ParsableModelMixin.prototype.standardPropMap = {}; // will be cloned by defineStandardProps
6058
6059
6060/***/ }),
6061/* 53 */
6062/***/ (function(module, exports) {
6063
6064Object.defineProperty(exports, "__esModule", { value: true });
6065var EventInstance = /** @class */ (function () {
6066    function EventInstance(def, dateProfile) {
6067        this.def = def;
6068        this.dateProfile = dateProfile;
6069    }
6070    EventInstance.prototype.toLegacy = function () {
6071        var dateProfile = this.dateProfile;
6072        var obj = this.def.toLegacy();
6073        obj.start = dateProfile.start.clone();
6074        obj.end = dateProfile.end ? dateProfile.end.clone() : null;
6075        return obj;
6076    };
6077    return EventInstance;
6078}());
6079exports.default = EventInstance;
6080
6081
6082/***/ }),
6083/* 54 */
6084/***/ (function(module, exports, __webpack_require__) {
6085
6086Object.defineProperty(exports, "__esModule", { value: true });
6087var tslib_1 = __webpack_require__(2);
6088var $ = __webpack_require__(3);
6089var moment = __webpack_require__(0);
6090var EventDef_1 = __webpack_require__(37);
6091var EventInstance_1 = __webpack_require__(53);
6092var EventDateProfile_1 = __webpack_require__(16);
6093var RecurringEventDef = /** @class */ (function (_super) {
6094    tslib_1.__extends(RecurringEventDef, _super);
6095    function RecurringEventDef() {
6096        return _super !== null && _super.apply(this, arguments) || this;
6097    }
6098    RecurringEventDef.prototype.isAllDay = function () {
6099        return !this.startTime && !this.endTime;
6100    };
6101    RecurringEventDef.prototype.buildInstances = function (unzonedRange) {
6102        var calendar = this.source.calendar;
6103        var unzonedDate = unzonedRange.getStart();
6104        var unzonedEnd = unzonedRange.getEnd();
6105        var zonedDayStart;
6106        var instanceStart;
6107        var instanceEnd;
6108        var instances = [];
6109        while (unzonedDate.isBefore(unzonedEnd)) {
6110            // if everyday, or this particular day-of-week
6111            if (!this.dowHash || this.dowHash[unzonedDate.day()]) {
6112                zonedDayStart = calendar.applyTimezone(unzonedDate);
6113                instanceStart = zonedDayStart.clone();
6114                instanceEnd = null;
6115                if (this.startTime) {
6116                    instanceStart.time(this.startTime);
6117                }
6118                else {
6119                    instanceStart.stripTime();
6120                }
6121                if (this.endTime) {
6122                    instanceEnd = zonedDayStart.clone().time(this.endTime);
6123                }
6124                instances.push(new EventInstance_1.default(this, // definition
6125                new EventDateProfile_1.default(instanceStart, instanceEnd, calendar)));
6126            }
6127            unzonedDate.add(1, 'days');
6128        }
6129        return instances;
6130    };
6131    RecurringEventDef.prototype.setDow = function (dowNumbers) {
6132        if (!this.dowHash) {
6133            this.dowHash = {};
6134        }
6135        for (var i = 0; i < dowNumbers.length; i++) {
6136            this.dowHash[dowNumbers[i]] = true;
6137        }
6138    };
6139    RecurringEventDef.prototype.clone = function () {
6140        var def = _super.prototype.clone.call(this);
6141        if (def.startTime) {
6142            def.startTime = moment.duration(this.startTime);
6143        }
6144        if (def.endTime) {
6145            def.endTime = moment.duration(this.endTime);
6146        }
6147        if (this.dowHash) {
6148            def.dowHash = $.extend({}, this.dowHash);
6149        }
6150        return def;
6151    };
6152    return RecurringEventDef;
6153}(EventDef_1.default));
6154exports.default = RecurringEventDef;
6155/*
6156HACK to work with TypeScript mixins
6157NOTE: if super-method fails, should still attempt to apply
6158*/
6159RecurringEventDef.prototype.applyProps = function (rawProps) {
6160    var superSuccess = EventDef_1.default.prototype.applyProps.call(this, rawProps);
6161    if (rawProps.start) {
6162        this.startTime = moment.duration(rawProps.start);
6163    }
6164    if (rawProps.end) {
6165        this.endTime = moment.duration(rawProps.end);
6166    }
6167    if (rawProps.dow) {
6168        this.setDow(rawProps.dow);
6169    }
6170    return superSuccess;
6171};
6172// Parsing
6173// ---------------------------------------------------------------------------------------------------------------------
6174RecurringEventDef.defineStandardProps({
6175    start: false,
6176    end: false,
6177    dow: false
6178});
6179
6180
6181/***/ }),
6182/* 55 */
6183/***/ (function(module, exports, __webpack_require__) {
6184
6185Object.defineProperty(exports, "__esModule", { value: true });
6186var moment = __webpack_require__(0);
6187var util_1 = __webpack_require__(4);
6188var UnzonedRange_1 = __webpack_require__(5);
6189var DateProfileGenerator = /** @class */ (function () {
6190    function DateProfileGenerator(_view) {
6191        this._view = _view;
6192    }
6193    DateProfileGenerator.prototype.opt = function (name) {
6194        return this._view.opt(name);
6195    };
6196    DateProfileGenerator.prototype.trimHiddenDays = function (unzonedRange) {
6197        return this._view.trimHiddenDays(unzonedRange);
6198    };
6199    DateProfileGenerator.prototype.msToUtcMoment = function (ms, forceAllDay) {
6200        return this._view.calendar.msToUtcMoment(ms, forceAllDay);
6201    };
6202    /* Date Range Computation
6203    ------------------------------------------------------------------------------------------------------------------*/
6204    // Builds a structure with info about what the dates/ranges will be for the "prev" view.
6205    DateProfileGenerator.prototype.buildPrev = function (currentDateProfile) {
6206        var prevDate = currentDateProfile.date.clone()
6207            .startOf(currentDateProfile.currentRangeUnit)
6208            .subtract(currentDateProfile.dateIncrement);
6209        return this.build(prevDate, -1);
6210    };
6211    // Builds a structure with info about what the dates/ranges will be for the "next" view.
6212    DateProfileGenerator.prototype.buildNext = function (currentDateProfile) {
6213        var nextDate = currentDateProfile.date.clone()
6214            .startOf(currentDateProfile.currentRangeUnit)
6215            .add(currentDateProfile.dateIncrement);
6216        return this.build(nextDate, 1);
6217    };
6218    // Builds a structure holding dates/ranges for rendering around the given date.
6219    // Optional direction param indicates whether the date is being incremented/decremented
6220    // from its previous value. decremented = -1, incremented = 1 (default).
6221    DateProfileGenerator.prototype.build = function (date, direction, forceToValid) {
6222        if (forceToValid === void 0) { forceToValid = false; }
6223        var isDateAllDay = !date.hasTime();
6224        var validUnzonedRange;
6225        var minTime = null;
6226        var maxTime = null;
6227        var currentInfo;
6228        var isRangeAllDay;
6229        var renderUnzonedRange;
6230        var activeUnzonedRange;
6231        var isValid;
6232        validUnzonedRange = this.buildValidRange();
6233        validUnzonedRange = this.trimHiddenDays(validUnzonedRange);
6234        if (forceToValid) {
6235            date = this.msToUtcMoment(validUnzonedRange.constrainDate(date), // returns MS
6236            isDateAllDay);
6237        }
6238        currentInfo = this.buildCurrentRangeInfo(date, direction);
6239        isRangeAllDay = /^(year|month|week|day)$/.test(currentInfo.unit);
6240        renderUnzonedRange = this.buildRenderRange(this.trimHiddenDays(currentInfo.unzonedRange), currentInfo.unit, isRangeAllDay);
6241        renderUnzonedRange = this.trimHiddenDays(renderUnzonedRange);
6242        activeUnzonedRange = renderUnzonedRange.clone();
6243        if (!this.opt('showNonCurrentDates')) {
6244            activeUnzonedRange = activeUnzonedRange.intersect(currentInfo.unzonedRange);
6245        }
6246        minTime = moment.duration(this.opt('minTime'));
6247        maxTime = moment.duration(this.opt('maxTime'));
6248        activeUnzonedRange = this.adjustActiveRange(activeUnzonedRange, minTime, maxTime);
6249        activeUnzonedRange = activeUnzonedRange.intersect(validUnzonedRange); // might return null
6250        if (activeUnzonedRange) {
6251            date = this.msToUtcMoment(activeUnzonedRange.constrainDate(date), // returns MS
6252            isDateAllDay);
6253        }
6254        // it's invalid if the originally requested date is not contained,
6255        // or if the range is completely outside of the valid range.
6256        isValid = currentInfo.unzonedRange.intersectsWith(validUnzonedRange);
6257        return {
6258            // constraint for where prev/next operations can go and where events can be dragged/resized to.
6259            // an object with optional start and end properties.
6260            validUnzonedRange: validUnzonedRange,
6261            // range the view is formally responsible for.
6262            // for example, a month view might have 1st-31st, excluding padded dates
6263            currentUnzonedRange: currentInfo.unzonedRange,
6264            // name of largest unit being displayed, like "month" or "week"
6265            currentRangeUnit: currentInfo.unit,
6266            isRangeAllDay: isRangeAllDay,
6267            // dates that display events and accept drag-n-drop
6268            // will be `null` if no dates accept events
6269            activeUnzonedRange: activeUnzonedRange,
6270            // date range with a rendered skeleton
6271            // includes not-active days that need some sort of DOM
6272            renderUnzonedRange: renderUnzonedRange,
6273            // Duration object that denotes the first visible time of any given day
6274            minTime: minTime,
6275            // Duration object that denotes the exclusive visible end time of any given day
6276            maxTime: maxTime,
6277            isValid: isValid,
6278            date: date,
6279            // how far the current date will move for a prev/next operation
6280            dateIncrement: this.buildDateIncrement(currentInfo.duration)
6281            // pass a fallback (might be null) ^
6282        };
6283    };
6284    // Builds an object with optional start/end properties.
6285    // Indicates the minimum/maximum dates to display.
6286    // not responsible for trimming hidden days.
6287    DateProfileGenerator.prototype.buildValidRange = function () {
6288        return this._view.getUnzonedRangeOption('validRange', this._view.calendar.getNow()) ||
6289            new UnzonedRange_1.default(); // completely open-ended
6290    };
6291    // Builds a structure with info about the "current" range, the range that is
6292    // highlighted as being the current month for example.
6293    // See build() for a description of `direction`.
6294    // Guaranteed to have `range` and `unit` properties. `duration` is optional.
6295    // TODO: accept a MS-time instead of a moment `date`?
6296    DateProfileGenerator.prototype.buildCurrentRangeInfo = function (date, direction) {
6297        var viewSpec = this._view.viewSpec;
6298        var duration = null;
6299        var unit = null;
6300        var unzonedRange = null;
6301        var dayCount;
6302        if (viewSpec.duration) {
6303            duration = viewSpec.duration;
6304            unit = viewSpec.durationUnit;
6305            unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit);
6306        }
6307        else if ((dayCount = this.opt('dayCount'))) {
6308            unit = 'day';
6309            unzonedRange = this.buildRangeFromDayCount(date, direction, dayCount);
6310        }
6311        else if ((unzonedRange = this.buildCustomVisibleRange(date))) {
6312            unit = util_1.computeGreatestUnit(unzonedRange.getStart(), unzonedRange.getEnd());
6313        }
6314        else {
6315            duration = this.getFallbackDuration();
6316            unit = util_1.computeGreatestUnit(duration);
6317            unzonedRange = this.buildRangeFromDuration(date, direction, duration, unit);
6318        }
6319        return { duration: duration, unit: unit, unzonedRange: unzonedRange };
6320    };
6321    DateProfileGenerator.prototype.getFallbackDuration = function () {
6322        return moment.duration({ days: 1 });
6323    };
6324    // Returns a new activeUnzonedRange to have time values (un-ambiguate)
6325    // minTime or maxTime causes the range to expand.
6326    DateProfileGenerator.prototype.adjustActiveRange = function (unzonedRange, minTime, maxTime) {
6327        var start = unzonedRange.getStart();
6328        var end = unzonedRange.getEnd();
6329        if (this._view.usesMinMaxTime) {
6330            if (minTime < 0) {
6331                start.time(0).add(minTime);
6332            }
6333            if (maxTime > 24 * 60 * 60 * 1000) { // beyond 24 hours?
6334                end.time(maxTime - (24 * 60 * 60 * 1000));
6335            }
6336        }
6337        return new UnzonedRange_1.default(start, end);
6338    };
6339    // Builds the "current" range when it is specified as an explicit duration.
6340    // `unit` is the already-computed computeGreatestUnit value of duration.
6341    // TODO: accept a MS-time instead of a moment `date`?
6342    DateProfileGenerator.prototype.buildRangeFromDuration = function (date, direction, duration, unit) {
6343        var alignment = this.opt('dateAlignment');
6344        var dateIncrementInput;
6345        var dateIncrementDuration;
6346        var start;
6347        var end;
6348        var res;
6349        // compute what the alignment should be
6350        if (!alignment) {
6351            dateIncrementInput = this.opt('dateIncrement');
6352            if (dateIncrementInput) {
6353                dateIncrementDuration = moment.duration(dateIncrementInput);
6354                // use the smaller of the two units
6355                if (dateIncrementDuration < duration) {
6356                    alignment = util_1.computeDurationGreatestUnit(dateIncrementDuration, dateIncrementInput);
6357                }
6358                else {
6359                    alignment = unit;
6360                }
6361            }
6362            else {
6363                alignment = unit;
6364            }
6365        }
6366        // if the view displays a single day or smaller
6367        if (duration.as('days') <= 1) {
6368            if (this._view.isHiddenDay(start)) {
6369                start = this._view.skipHiddenDays(start, direction);
6370                start.startOf('day');
6371            }
6372        }
6373        function computeRes() {
6374            start = date.clone().startOf(alignment);
6375            end = start.clone().add(duration);
6376            res = new UnzonedRange_1.default(start, end);
6377        }
6378        computeRes();
6379        // if range is completely enveloped by hidden days, go past the hidden days
6380        if (!this.trimHiddenDays(res)) {
6381            date = this._view.skipHiddenDays(date, direction);
6382            computeRes();
6383        }
6384        return res;
6385    };
6386    // Builds the "current" range when a dayCount is specified.
6387    // TODO: accept a MS-time instead of a moment `date`?
6388    DateProfileGenerator.prototype.buildRangeFromDayCount = function (date, direction, dayCount) {
6389        var customAlignment = this.opt('dateAlignment');
6390        var runningCount = 0;
6391        var start;
6392        var end;
6393        if (customAlignment || direction !== -1) {
6394            start = date.clone();
6395            if (customAlignment) {
6396                start.startOf(customAlignment);
6397            }
6398            start.startOf('day');
6399            start = this._view.skipHiddenDays(start);
6400            end = start.clone();
6401            do {
6402                end.add(1, 'day');
6403                if (!this._view.isHiddenDay(end)) {
6404                    runningCount++;
6405                }
6406            } while (runningCount < dayCount);
6407        }
6408        else {
6409            end = date.clone().startOf('day').add(1, 'day');
6410            end = this._view.skipHiddenDays(end, -1, true);
6411            start = end.clone();
6412            do {
6413                start.add(-1, 'day');
6414                if (!this._view.isHiddenDay(start)) {
6415                    runningCount++;
6416                }
6417            } while (runningCount < dayCount);
6418        }
6419        return new UnzonedRange_1.default(start, end);
6420    };
6421    // Builds a normalized range object for the "visible" range,
6422    // which is a way to define the currentUnzonedRange and activeUnzonedRange at the same time.
6423    // TODO: accept a MS-time instead of a moment `date`?
6424    DateProfileGenerator.prototype.buildCustomVisibleRange = function (date) {
6425        var visibleUnzonedRange = this._view.getUnzonedRangeOption('visibleRange', this._view.calendar.applyTimezone(date) // correct zone. also generates new obj that avoids mutations
6426        );
6427        if (visibleUnzonedRange && (visibleUnzonedRange.startMs == null || visibleUnzonedRange.endMs == null)) {
6428            return null;
6429        }
6430        return visibleUnzonedRange;
6431    };
6432    // Computes the range that will represent the element/cells for *rendering*,
6433    // but which may have voided days/times.
6434    // not responsible for trimming hidden days.
6435    DateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) {
6436        return currentUnzonedRange.clone();
6437    };
6438    // Compute the duration value that should be added/substracted to the current date
6439    // when a prev/next operation happens.
6440    DateProfileGenerator.prototype.buildDateIncrement = function (fallback) {
6441        var dateIncrementInput = this.opt('dateIncrement');
6442        var customAlignment;
6443        if (dateIncrementInput) {
6444            return moment.duration(dateIncrementInput);
6445        }
6446        else if ((customAlignment = this.opt('dateAlignment'))) {
6447            return moment.duration(1, customAlignment);
6448        }
6449        else if (fallback) {
6450            return fallback;
6451        }
6452        else {
6453            return moment.duration({ days: 1 });
6454        }
6455    };
6456    return DateProfileGenerator;
6457}());
6458exports.default = DateProfileGenerator;
6459
6460
6461/***/ }),
6462/* 56 */
6463/***/ (function(module, exports, __webpack_require__) {
6464
6465Object.defineProperty(exports, "__esModule", { value: true });
6466var tslib_1 = __webpack_require__(2);
6467var $ = __webpack_require__(3);
6468var util_1 = __webpack_require__(4);
6469var Promise_1 = __webpack_require__(21);
6470var EventSource_1 = __webpack_require__(6);
6471var SingleEventDef_1 = __webpack_require__(9);
6472var ArrayEventSource = /** @class */ (function (_super) {
6473    tslib_1.__extends(ArrayEventSource, _super);
6474    function ArrayEventSource(calendar) {
6475        var _this = _super.call(this, calendar) || this;
6476        _this.eventDefs = []; // for if setRawEventDefs is never called
6477        return _this;
6478    }
6479    ArrayEventSource.parse = function (rawInput, calendar) {
6480        var rawProps;
6481        // normalize raw input
6482        if ($.isArray(rawInput.events)) { // extended form
6483            rawProps = rawInput;
6484        }
6485        else if ($.isArray(rawInput)) { // short form
6486            rawProps = { events: rawInput };
6487        }
6488        if (rawProps) {
6489            return EventSource_1.default.parse.call(this, rawProps, calendar);
6490        }
6491        return false;
6492    };
6493    ArrayEventSource.prototype.setRawEventDefs = function (rawEventDefs) {
6494        this.rawEventDefs = rawEventDefs;
6495        this.eventDefs = this.parseEventDefs(rawEventDefs);
6496    };
6497    ArrayEventSource.prototype.fetch = function (start, end, timezone) {
6498        var eventDefs = this.eventDefs;
6499        var i;
6500        if (this.currentTimezone != null &&
6501            this.currentTimezone !== timezone) {
6502            for (i = 0; i < eventDefs.length; i++) {
6503                if (eventDefs[i] instanceof SingleEventDef_1.default) {
6504                    eventDefs[i].rezone();
6505                }
6506            }
6507        }
6508        this.currentTimezone = timezone;
6509        return Promise_1.default.resolve(eventDefs);
6510    };
6511    ArrayEventSource.prototype.addEventDef = function (eventDef) {
6512        this.eventDefs.push(eventDef);
6513    };
6514    /*
6515    eventDefId already normalized to a string
6516    */
6517    ArrayEventSource.prototype.removeEventDefsById = function (eventDefId) {
6518        return util_1.removeMatching(this.eventDefs, function (eventDef) {
6519            return eventDef.id === eventDefId;
6520        });
6521    };
6522    ArrayEventSource.prototype.removeAllEventDefs = function () {
6523        this.eventDefs = [];
6524    };
6525    ArrayEventSource.prototype.getPrimitive = function () {
6526        return this.rawEventDefs;
6527    };
6528    ArrayEventSource.prototype.applyManualStandardProps = function (rawProps) {
6529        var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps);
6530        this.setRawEventDefs(rawProps.events);
6531        return superSuccess;
6532    };
6533    return ArrayEventSource;
6534}(EventSource_1.default));
6535exports.default = ArrayEventSource;
6536ArrayEventSource.defineStandardProps({
6537    events: false // don't automatically transfer
6538});
6539
6540
6541/***/ }),
6542/* 57 */
6543/***/ (function(module, exports, __webpack_require__) {
6544
6545Object.defineProperty(exports, "__esModule", { value: true });
6546var StandardTheme_1 = __webpack_require__(221);
6547var JqueryUiTheme_1 = __webpack_require__(222);
6548var themeClassHash = {};
6549function defineThemeSystem(themeName, themeClass) {
6550    themeClassHash[themeName] = themeClass;
6551}
6552exports.defineThemeSystem = defineThemeSystem;
6553function getThemeSystemClass(themeSetting) {
6554    if (!themeSetting) {
6555        return StandardTheme_1.default;
6556    }
6557    else if (themeSetting === true) {
6558        return JqueryUiTheme_1.default;
6559    }
6560    else {
6561        return themeClassHash[themeSetting];
6562    }
6563}
6564exports.getThemeSystemClass = getThemeSystemClass;
6565
6566
6567/***/ }),
6568/* 58 */
6569/***/ (function(module, exports, __webpack_require__) {
6570
6571Object.defineProperty(exports, "__esModule", { value: true });
6572var $ = __webpack_require__(3);
6573var util_1 = __webpack_require__(4);
6574/*
6575A cache for the left/right/top/bottom/width/height values for one or more elements.
6576Works with both offset (from topleft document) and position (from offsetParent).
6577
6578options:
6579- els
6580- isHorizontal
6581- isVertical
6582*/
6583var CoordCache = /** @class */ (function () {
6584    function CoordCache(options) {
6585        this.isHorizontal = false; // whether to query for left/right/width
6586        this.isVertical = false; // whether to query for top/bottom/height
6587        this.els = $(options.els);
6588        this.isHorizontal = options.isHorizontal;
6589        this.isVertical = options.isVertical;
6590        this.forcedOffsetParentEl = options.offsetParent ? $(options.offsetParent) : null;
6591    }
6592    // Queries the els for coordinates and stores them.
6593    // Call this method before using and of the get* methods below.
6594    CoordCache.prototype.build = function () {
6595        var offsetParentEl = this.forcedOffsetParentEl;
6596        if (!offsetParentEl && this.els.length > 0) {
6597            offsetParentEl = this.els.eq(0).offsetParent();
6598        }
6599        this.origin = offsetParentEl ?
6600            offsetParentEl.offset() :
6601            null;
6602        this.boundingRect = this.queryBoundingRect();
6603        if (this.isHorizontal) {
6604            this.buildElHorizontals();
6605        }
6606        if (this.isVertical) {
6607            this.buildElVerticals();
6608        }
6609    };
6610    // Destroys all internal data about coordinates, freeing memory
6611    CoordCache.prototype.clear = function () {
6612        this.origin = null;
6613        this.boundingRect = null;
6614        this.lefts = null;
6615        this.rights = null;
6616        this.tops = null;
6617        this.bottoms = null;
6618    };
6619    // When called, if coord caches aren't built, builds them
6620    CoordCache.prototype.ensureBuilt = function () {
6621        if (!this.origin) {
6622            this.build();
6623        }
6624    };
6625    // Populates the left/right internal coordinate arrays
6626    CoordCache.prototype.buildElHorizontals = function () {
6627        var lefts = [];
6628        var rights = [];
6629        this.els.each(function (i, node) {
6630            var el = $(node);
6631            var left = el.offset().left;
6632            var width = el.outerWidth();
6633            lefts.push(left);
6634            rights.push(left + width);
6635        });
6636        this.lefts = lefts;
6637        this.rights = rights;
6638    };
6639    // Populates the top/bottom internal coordinate arrays
6640    CoordCache.prototype.buildElVerticals = function () {
6641        var tops = [];
6642        var bottoms = [];
6643        this.els.each(function (i, node) {
6644            var el = $(node);
6645            var top = el.offset().top;
6646            var height = el.outerHeight();
6647            tops.push(top);
6648            bottoms.push(top + height);
6649        });
6650        this.tops = tops;
6651        this.bottoms = bottoms;
6652    };
6653    // Given a left offset (from document left), returns the index of the el that it horizontally intersects.
6654    // If no intersection is made, returns undefined.
6655    CoordCache.prototype.getHorizontalIndex = function (leftOffset) {
6656        this.ensureBuilt();
6657        var lefts = this.lefts;
6658        var rights = this.rights;
6659        var len = lefts.length;
6660        var i;
6661        for (i = 0; i < len; i++) {
6662            if (leftOffset >= lefts[i] && leftOffset < rights[i]) {
6663                return i;
6664            }
6665        }
6666    };
6667    // Given a top offset (from document top), returns the index of the el that it vertically intersects.
6668    // If no intersection is made, returns undefined.
6669    CoordCache.prototype.getVerticalIndex = function (topOffset) {
6670        this.ensureBuilt();
6671        var tops = this.tops;
6672        var bottoms = this.bottoms;
6673        var len = tops.length;
6674        var i;
6675        for (i = 0; i < len; i++) {
6676            if (topOffset >= tops[i] && topOffset < bottoms[i]) {
6677                return i;
6678            }
6679        }
6680    };
6681    // Gets the left offset (from document left) of the element at the given index
6682    CoordCache.prototype.getLeftOffset = function (leftIndex) {
6683        this.ensureBuilt();
6684        return this.lefts[leftIndex];
6685    };
6686    // Gets the left position (from offsetParent left) of the element at the given index
6687    CoordCache.prototype.getLeftPosition = function (leftIndex) {
6688        this.ensureBuilt();
6689        return this.lefts[leftIndex] - this.origin.left;
6690    };
6691    // Gets the right offset (from document left) of the element at the given index.
6692    // This value is NOT relative to the document's right edge, like the CSS concept of "right" would be.
6693    CoordCache.prototype.getRightOffset = function (leftIndex) {
6694        this.ensureBuilt();
6695        return this.rights[leftIndex];
6696    };
6697    // Gets the right position (from offsetParent left) of the element at the given index.
6698    // This value is NOT relative to the offsetParent's right edge, like the CSS concept of "right" would be.
6699    CoordCache.prototype.getRightPosition = function (leftIndex) {
6700        this.ensureBuilt();
6701        return this.rights[leftIndex] - this.origin.left;
6702    };
6703    // Gets the width of the element at the given index
6704    CoordCache.prototype.getWidth = function (leftIndex) {
6705        this.ensureBuilt();
6706        return this.rights[leftIndex] - this.lefts[leftIndex];
6707    };
6708    // Gets the top offset (from document top) of the element at the given index
6709    CoordCache.prototype.getTopOffset = function (topIndex) {
6710        this.ensureBuilt();
6711        return this.tops[topIndex];
6712    };
6713    // Gets the top position (from offsetParent top) of the element at the given position
6714    CoordCache.prototype.getTopPosition = function (topIndex) {
6715        this.ensureBuilt();
6716        return this.tops[topIndex] - this.origin.top;
6717    };
6718    // Gets the bottom offset (from the document top) of the element at the given index.
6719    // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of "bottom" would be.
6720    CoordCache.prototype.getBottomOffset = function (topIndex) {
6721        this.ensureBuilt();
6722        return this.bottoms[topIndex];
6723    };
6724    // Gets the bottom position (from the offsetParent top) of the element at the given index.
6725    // This value is NOT relative to the offsetParent's bottom edge, like the CSS concept of "bottom" would be.
6726    CoordCache.prototype.getBottomPosition = function (topIndex) {
6727        this.ensureBuilt();
6728        return this.bottoms[topIndex] - this.origin.top;
6729    };
6730    // Gets the height of the element at the given index
6731    CoordCache.prototype.getHeight = function (topIndex) {
6732        this.ensureBuilt();
6733        return this.bottoms[topIndex] - this.tops[topIndex];
6734    };
6735    // Bounding Rect
6736    // TODO: decouple this from CoordCache
6737    // Compute and return what the elements' bounding rectangle is, from the user's perspective.
6738    // Right now, only returns a rectangle if constrained by an overflow:scroll element.
6739    // Returns null if there are no elements
6740    CoordCache.prototype.queryBoundingRect = function () {
6741        var scrollParentEl;
6742        if (this.els.length > 0) {
6743            scrollParentEl = util_1.getScrollParent(this.els.eq(0));
6744            if (!scrollParentEl.is(document) &&
6745                !scrollParentEl.is('html,body') // don't consider these bounding rects. solves issue 3615
6746            ) {
6747                return util_1.getClientRect(scrollParentEl);
6748            }
6749        }
6750        return null;
6751    };
6752    CoordCache.prototype.isPointInBounds = function (leftOffset, topOffset) {
6753        return this.isLeftInBounds(leftOffset) && this.isTopInBounds(topOffset);
6754    };
6755    CoordCache.prototype.isLeftInBounds = function (leftOffset) {
6756        return !this.boundingRect || (leftOffset >= this.boundingRect.left && leftOffset < this.boundingRect.right);
6757    };
6758    CoordCache.prototype.isTopInBounds = function (topOffset) {
6759        return !this.boundingRect || (topOffset >= this.boundingRect.top && topOffset < this.boundingRect.bottom);
6760    };
6761    return CoordCache;
6762}());
6763exports.default = CoordCache;
6764
6765
6766/***/ }),
6767/* 59 */
6768/***/ (function(module, exports, __webpack_require__) {
6769
6770Object.defineProperty(exports, "__esModule", { value: true });
6771var $ = __webpack_require__(3);
6772var util_1 = __webpack_require__(4);
6773var ListenerMixin_1 = __webpack_require__(7);
6774var GlobalEmitter_1 = __webpack_require__(23);
6775/* Tracks a drag's mouse movement, firing various handlers
6776----------------------------------------------------------------------------------------------------------------------*/
6777// TODO: use Emitter
6778var DragListener = /** @class */ (function () {
6779    function DragListener(options) {
6780        this.isInteracting = false;
6781        this.isDistanceSurpassed = false;
6782        this.isDelayEnded = false;
6783        this.isDragging = false;
6784        this.isTouch = false;
6785        this.isGeneric = false; // initiated by 'dragstart' (jqui)
6786        this.shouldCancelTouchScroll = true;
6787        this.scrollAlwaysKills = false;
6788        this.isAutoScroll = false;
6789        // defaults
6790        this.scrollSensitivity = 30; // pixels from edge for scrolling to start
6791        this.scrollSpeed = 200; // pixels per second, at maximum speed
6792        this.scrollIntervalMs = 50; // millisecond wait between scroll increment
6793        this.options = options || {};
6794    }
6795    // Interaction (high-level)
6796    // -----------------------------------------------------------------------------------------------------------------
6797    DragListener.prototype.startInteraction = function (ev, extraOptions) {
6798        if (extraOptions === void 0) { extraOptions = {}; }
6799        if (ev.type === 'mousedown') {
6800            if (GlobalEmitter_1.default.get().shouldIgnoreMouse()) {
6801                return;
6802            }
6803            else if (!util_1.isPrimaryMouseButton(ev)) {
6804                return;
6805            }
6806            else {
6807                ev.preventDefault(); // prevents native selection in most browsers
6808            }
6809        }
6810        if (!this.isInteracting) {
6811            // process options
6812            this.delay = util_1.firstDefined(extraOptions.delay, this.options.delay, 0);
6813            this.minDistance = util_1.firstDefined(extraOptions.distance, this.options.distance, 0);
6814            this.subjectEl = this.options.subjectEl;
6815            util_1.preventSelection($('body'));
6816            this.isInteracting = true;
6817            this.isTouch = util_1.getEvIsTouch(ev);
6818            this.isGeneric = ev.type === 'dragstart';
6819            this.isDelayEnded = false;
6820            this.isDistanceSurpassed = false;
6821            this.originX = util_1.getEvX(ev);
6822            this.originY = util_1.getEvY(ev);
6823            this.scrollEl = util_1.getScrollParent($(ev.target));
6824            this.bindHandlers();
6825            this.initAutoScroll();
6826            this.handleInteractionStart(ev);
6827            this.startDelay(ev);
6828            if (!this.minDistance) {
6829                this.handleDistanceSurpassed(ev);
6830            }
6831        }
6832    };
6833    DragListener.prototype.handleInteractionStart = function (ev) {
6834        this.trigger('interactionStart', ev);
6835    };
6836    DragListener.prototype.endInteraction = function (ev, isCancelled) {
6837        if (this.isInteracting) {
6838            this.endDrag(ev);
6839            if (this.delayTimeoutId) {
6840                clearTimeout(this.delayTimeoutId);
6841                this.delayTimeoutId = null;
6842            }
6843            this.destroyAutoScroll();
6844            this.unbindHandlers();
6845            this.isInteracting = false;
6846            this.handleInteractionEnd(ev, isCancelled);
6847            util_1.allowSelection($('body'));
6848        }
6849    };
6850    DragListener.prototype.handleInteractionEnd = function (ev, isCancelled) {
6851        this.trigger('interactionEnd', ev, isCancelled || false);
6852    };
6853    // Binding To DOM
6854    // -----------------------------------------------------------------------------------------------------------------
6855    DragListener.prototype.bindHandlers = function () {
6856        // some browsers (Safari in iOS 10) don't allow preventDefault on touch events that are bound after touchstart,
6857        // so listen to the GlobalEmitter singleton, which is always bound, instead of the document directly.
6858        var globalEmitter = GlobalEmitter_1.default.get();
6859        if (this.isGeneric) {
6860            this.listenTo($(document), {
6861                drag: this.handleMove,
6862                dragstop: this.endInteraction
6863            });
6864        }
6865        else if (this.isTouch) {
6866            this.listenTo(globalEmitter, {
6867                touchmove: this.handleTouchMove,
6868                touchend: this.endInteraction,
6869                scroll: this.handleTouchScroll
6870            });
6871        }
6872        else {
6873            this.listenTo(globalEmitter, {
6874                mousemove: this.handleMouseMove,
6875                mouseup: this.endInteraction
6876            });
6877        }
6878        this.listenTo(globalEmitter, {
6879            selectstart: util_1.preventDefault,
6880            contextmenu: util_1.preventDefault // long taps would open menu on Chrome dev tools
6881        });
6882    };
6883    DragListener.prototype.unbindHandlers = function () {
6884        this.stopListeningTo(GlobalEmitter_1.default.get());
6885        this.stopListeningTo($(document)); // for isGeneric
6886    };
6887    // Drag (high-level)
6888    // -----------------------------------------------------------------------------------------------------------------
6889    // extraOptions ignored if drag already started
6890    DragListener.prototype.startDrag = function (ev, extraOptions) {
6891        this.startInteraction(ev, extraOptions); // ensure interaction began
6892        if (!this.isDragging) {
6893            this.isDragging = true;
6894            this.handleDragStart(ev);
6895        }
6896    };
6897    DragListener.prototype.handleDragStart = function (ev) {
6898        this.trigger('dragStart', ev);
6899    };
6900    DragListener.prototype.handleMove = function (ev) {
6901        var dx = util_1.getEvX(ev) - this.originX;
6902        var dy = util_1.getEvY(ev) - this.originY;
6903        var minDistance = this.minDistance;
6904        var distanceSq; // current distance from the origin, squared
6905        if (!this.isDistanceSurpassed) {
6906            distanceSq = dx * dx + dy * dy;
6907            if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem
6908                this.handleDistanceSurpassed(ev);
6909            }
6910        }
6911        if (this.isDragging) {
6912            this.handleDrag(dx, dy, ev);
6913        }
6914    };
6915    // Called while the mouse is being moved and when we know a legitimate drag is taking place
6916    DragListener.prototype.handleDrag = function (dx, dy, ev) {
6917        this.trigger('drag', dx, dy, ev);
6918        this.updateAutoScroll(ev); // will possibly cause scrolling
6919    };
6920    DragListener.prototype.endDrag = function (ev) {
6921        if (this.isDragging) {
6922            this.isDragging = false;
6923            this.handleDragEnd(ev);
6924        }
6925    };
6926    DragListener.prototype.handleDragEnd = function (ev) {
6927        this.trigger('dragEnd', ev);
6928    };
6929    // Delay
6930    // -----------------------------------------------------------------------------------------------------------------
6931    DragListener.prototype.startDelay = function (initialEv) {
6932        var _this = this;
6933        if (this.delay) {
6934            this.delayTimeoutId = setTimeout(function () {
6935                _this.handleDelayEnd(initialEv);
6936            }, this.delay);
6937        }
6938        else {
6939            this.handleDelayEnd(initialEv);
6940        }
6941    };
6942    DragListener.prototype.handleDelayEnd = function (initialEv) {
6943        this.isDelayEnded = true;
6944        if (this.isDistanceSurpassed) {
6945            this.startDrag(initialEv);
6946        }
6947    };
6948    // Distance
6949    // -----------------------------------------------------------------------------------------------------------------
6950    DragListener.prototype.handleDistanceSurpassed = function (ev) {
6951        this.isDistanceSurpassed = true;
6952        if (this.isDelayEnded) {
6953            this.startDrag(ev);
6954        }
6955    };
6956    // Mouse / Touch
6957    // -----------------------------------------------------------------------------------------------------------------
6958    DragListener.prototype.handleTouchMove = function (ev) {
6959        // prevent inertia and touchmove-scrolling while dragging
6960        if (this.isDragging && this.shouldCancelTouchScroll) {
6961            ev.preventDefault();
6962        }
6963        this.handleMove(ev);
6964    };
6965    DragListener.prototype.handleMouseMove = function (ev) {
6966        this.handleMove(ev);
6967    };
6968    // Scrolling (unrelated to auto-scroll)
6969    // -----------------------------------------------------------------------------------------------------------------
6970    DragListener.prototype.handleTouchScroll = function (ev) {
6971        // if the drag is being initiated by touch, but a scroll happens before
6972        // the drag-initiating delay is over, cancel the drag
6973        if (!this.isDragging || this.scrollAlwaysKills) {
6974            this.endInteraction(ev, true); // isCancelled=true
6975        }
6976    };
6977    // Utils
6978    // -----------------------------------------------------------------------------------------------------------------
6979    // Triggers a callback. Calls a function in the option hash of the same name.
6980    // Arguments beyond the first `name` are forwarded on.
6981    DragListener.prototype.trigger = function (name) {
6982        var args = [];
6983        for (var _i = 1; _i < arguments.length; _i++) {
6984            args[_i - 1] = arguments[_i];
6985        }
6986        if (this.options[name]) {
6987            this.options[name].apply(this, args);
6988        }
6989        // makes _methods callable by event name. TODO: kill this
6990        if (this['_' + name]) {
6991            this['_' + name].apply(this, args);
6992        }
6993    };
6994    // Auto-scroll
6995    // -----------------------------------------------------------------------------------------------------------------
6996    DragListener.prototype.initAutoScroll = function () {
6997        var scrollEl = this.scrollEl;
6998        this.isAutoScroll =
6999            this.options.scroll &&
7000                scrollEl &&
7001                !scrollEl.is(window) &&
7002                !scrollEl.is(document);
7003        if (this.isAutoScroll) {
7004            // debounce makes sure rapid calls don't happen
7005            this.listenTo(scrollEl, 'scroll', util_1.debounce(this.handleDebouncedScroll, 100));
7006        }
7007    };
7008    DragListener.prototype.destroyAutoScroll = function () {
7009        this.endAutoScroll(); // kill any animation loop
7010        // remove the scroll handler if there is a scrollEl
7011        if (this.isAutoScroll) {
7012            this.stopListeningTo(this.scrollEl, 'scroll'); // will probably get removed by unbindHandlers too :(
7013        }
7014    };
7015    // Computes and stores the bounding rectangle of scrollEl
7016    DragListener.prototype.computeScrollBounds = function () {
7017        if (this.isAutoScroll) {
7018            this.scrollBounds = util_1.getOuterRect(this.scrollEl);
7019            // TODO: use getClientRect in future. but prevents auto scrolling when on top of scrollbars
7020        }
7021    };
7022    // Called when the dragging is in progress and scrolling should be updated
7023    DragListener.prototype.updateAutoScroll = function (ev) {
7024        var sensitivity = this.scrollSensitivity;
7025        var bounds = this.scrollBounds;
7026        var topCloseness;
7027        var bottomCloseness;
7028        var leftCloseness;
7029        var rightCloseness;
7030        var topVel = 0;
7031        var leftVel = 0;
7032        if (bounds) { // only scroll if scrollEl exists
7033            // compute closeness to edges. valid range is from 0.0 - 1.0
7034            topCloseness = (sensitivity - (util_1.getEvY(ev) - bounds.top)) / sensitivity;
7035            bottomCloseness = (sensitivity - (bounds.bottom - util_1.getEvY(ev))) / sensitivity;
7036            leftCloseness = (sensitivity - (util_1.getEvX(ev) - bounds.left)) / sensitivity;
7037            rightCloseness = (sensitivity - (bounds.right - util_1.getEvX(ev))) / sensitivity;
7038            // translate vertical closeness into velocity.
7039            // mouse must be completely in bounds for velocity to happen.
7040            if (topCloseness >= 0 && topCloseness <= 1) {
7041                topVel = topCloseness * this.scrollSpeed * -1; // negative. for scrolling up
7042            }
7043            else if (bottomCloseness >= 0 && bottomCloseness <= 1) {
7044                topVel = bottomCloseness * this.scrollSpeed;
7045            }
7046            // translate horizontal closeness into velocity
7047            if (leftCloseness >= 0 && leftCloseness <= 1) {
7048                leftVel = leftCloseness * this.scrollSpeed * -1; // negative. for scrolling left
7049            }
7050            else if (rightCloseness >= 0 && rightCloseness <= 1) {
7051                leftVel = rightCloseness * this.scrollSpeed;
7052            }
7053        }
7054        this.setScrollVel(topVel, leftVel);
7055    };
7056    // Sets the speed-of-scrolling for the scrollEl
7057    DragListener.prototype.setScrollVel = function (topVel, leftVel) {
7058        this.scrollTopVel = topVel;
7059        this.scrollLeftVel = leftVel;
7060        this.constrainScrollVel(); // massages into realistic values
7061        // if there is non-zero velocity, and an animation loop hasn't already started, then START
7062        if ((this.scrollTopVel || this.scrollLeftVel) && !this.scrollIntervalId) {
7063            this.scrollIntervalId = setInterval(util_1.proxy(this, 'scrollIntervalFunc'), // scope to `this`
7064            this.scrollIntervalMs);
7065        }
7066    };
7067    // Forces scrollTopVel and scrollLeftVel to be zero if scrolling has already gone all the way
7068    DragListener.prototype.constrainScrollVel = function () {
7069        var el = this.scrollEl;
7070        if (this.scrollTopVel < 0) { // scrolling up?
7071            if (el.scrollTop() <= 0) { // already scrolled all the way up?
7072                this.scrollTopVel = 0;
7073            }
7074        }
7075        else if (this.scrollTopVel > 0) { // scrolling down?
7076            if (el.scrollTop() + el[0].clientHeight >= el[0].scrollHeight) { // already scrolled all the way down?
7077                this.scrollTopVel = 0;
7078            }
7079        }
7080        if (this.scrollLeftVel < 0) { // scrolling left?
7081            if (el.scrollLeft() <= 0) { // already scrolled all the left?
7082                this.scrollLeftVel = 0;
7083            }
7084        }
7085        else if (this.scrollLeftVel > 0) { // scrolling right?
7086            if (el.scrollLeft() + el[0].clientWidth >= el[0].scrollWidth) { // already scrolled all the way right?
7087                this.scrollLeftVel = 0;
7088            }
7089        }
7090    };
7091    // This function gets called during every iteration of the scrolling animation loop
7092    DragListener.prototype.scrollIntervalFunc = function () {
7093        var el = this.scrollEl;
7094        var frac = this.scrollIntervalMs / 1000; // considering animation frequency, what the vel should be mult'd by
7095        // change the value of scrollEl's scroll
7096        if (this.scrollTopVel) {
7097            el.scrollTop(el.scrollTop() + this.scrollTopVel * frac);
7098        }
7099        if (this.scrollLeftVel) {
7100            el.scrollLeft(el.scrollLeft() + this.scrollLeftVel * frac);
7101        }
7102        this.constrainScrollVel(); // since the scroll values changed, recompute the velocities
7103        // if scrolled all the way, which causes the vels to be zero, stop the animation loop
7104        if (!this.scrollTopVel && !this.scrollLeftVel) {
7105            this.endAutoScroll();
7106        }
7107    };
7108    // Kills any existing scrolling animation loop
7109    DragListener.prototype.endAutoScroll = function () {
7110        if (this.scrollIntervalId) {
7111            clearInterval(this.scrollIntervalId);
7112            this.scrollIntervalId = null;
7113            this.handleScrollEnd();
7114        }
7115    };
7116    // Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce)
7117    DragListener.prototype.handleDebouncedScroll = function () {
7118        // recompute all coordinates, but *only* if this is *not* part of our scrolling animation
7119        if (!this.scrollIntervalId) {
7120            this.handleScrollEnd();
7121        }
7122    };
7123    DragListener.prototype.handleScrollEnd = function () {
7124        // Called when scrolling has stopped, whether through auto scroll, or the user scrolling
7125    };
7126    return DragListener;
7127}());
7128exports.default = DragListener;
7129ListenerMixin_1.default.mixInto(DragListener);
7130
7131
7132/***/ }),
7133/* 60 */
7134/***/ (function(module, exports, __webpack_require__) {
7135
7136Object.defineProperty(exports, "__esModule", { value: true });
7137var tslib_1 = __webpack_require__(2);
7138var util_1 = __webpack_require__(4);
7139var Mixin_1 = __webpack_require__(15);
7140/*
7141A set of rendering and date-related methods for a visual component comprised of one or more rows of day columns.
7142Prerequisite: the object being mixed into needs to be a *Grid*
7143*/
7144var DayTableMixin = /** @class */ (function (_super) {
7145    tslib_1.__extends(DayTableMixin, _super);
7146    function DayTableMixin() {
7147        return _super !== null && _super.apply(this, arguments) || this;
7148    }
7149    // Populates internal variables used for date calculation and rendering
7150    DayTableMixin.prototype.updateDayTable = function () {
7151        var t = this;
7152        var view = t.view;
7153        var calendar = view.calendar;
7154        var date = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.startMs, true);
7155        var end = calendar.msToUtcMoment(t.dateProfile.renderUnzonedRange.endMs, true);
7156        var dayIndex = -1;
7157        var dayIndices = [];
7158        var dayDates = [];
7159        var daysPerRow;
7160        var firstDay;
7161        var rowCnt;
7162        while (date.isBefore(end)) { // loop each day from start to end
7163            if (view.isHiddenDay(date)) {
7164                dayIndices.push(dayIndex + 0.5); // mark that it's between indices
7165            }
7166            else {
7167                dayIndex++;
7168                dayIndices.push(dayIndex);
7169                dayDates.push(date.clone());
7170            }
7171            date.add(1, 'days');
7172        }
7173        if (this.breakOnWeeks) {
7174            // count columns until the day-of-week repeats
7175            firstDay = dayDates[0].day();
7176            for (daysPerRow = 1; daysPerRow < dayDates.length; daysPerRow++) {
7177                if (dayDates[daysPerRow].day() === firstDay) {
7178                    break;
7179                }
7180            }
7181            rowCnt = Math.ceil(dayDates.length / daysPerRow);
7182        }
7183        else {
7184            rowCnt = 1;
7185            daysPerRow = dayDates.length;
7186        }
7187        this.dayDates = dayDates;
7188        this.dayIndices = dayIndices;
7189        this.daysPerRow = daysPerRow;
7190        this.rowCnt = rowCnt;
7191        this.updateDayTableCols();
7192    };
7193    // Computes and assigned the colCnt property and updates any options that may be computed from it
7194    DayTableMixin.prototype.updateDayTableCols = function () {
7195        this.colCnt = this.computeColCnt();
7196        this.colHeadFormat =
7197            this.opt('columnHeaderFormat') ||
7198                this.opt('columnFormat') || // deprecated
7199                this.computeColHeadFormat();
7200    };
7201    // Determines how many columns there should be in the table
7202    DayTableMixin.prototype.computeColCnt = function () {
7203        return this.daysPerRow;
7204    };
7205    // Computes the ambiguously-timed moment for the given cell
7206    DayTableMixin.prototype.getCellDate = function (row, col) {
7207        return this.dayDates[this.getCellDayIndex(row, col)].clone();
7208    };
7209    // Computes the ambiguously-timed date range for the given cell
7210    DayTableMixin.prototype.getCellRange = function (row, col) {
7211        var start = this.getCellDate(row, col);
7212        var end = start.clone().add(1, 'days');
7213        return { start: start, end: end };
7214    };
7215    // Returns the number of day cells, chronologically, from the first of the grid (0-based)
7216    DayTableMixin.prototype.getCellDayIndex = function (row, col) {
7217        return row * this.daysPerRow + this.getColDayIndex(col);
7218    };
7219    // Returns the numner of day cells, chronologically, from the first cell in *any given row*
7220    DayTableMixin.prototype.getColDayIndex = function (col) {
7221        if (this.isRTL) {
7222            return this.colCnt - 1 - col;
7223        }
7224        else {
7225            return col;
7226        }
7227    };
7228    // Given a date, returns its chronolocial cell-index from the first cell of the grid.
7229    // If the date lies between cells (because of hiddenDays), returns a floating-point value between offsets.
7230    // If before the first offset, returns a negative number.
7231    // If after the last offset, returns an offset past the last cell offset.
7232    // Only works for *start* dates of cells. Will not work for exclusive end dates for cells.
7233    DayTableMixin.prototype.getDateDayIndex = function (date) {
7234        var dayIndices = this.dayIndices;
7235        var dayOffset = date.diff(this.dayDates[0], 'days');
7236        if (dayOffset < 0) {
7237            return dayIndices[0] - 1;
7238        }
7239        else if (dayOffset >= dayIndices.length) {
7240            return dayIndices[dayIndices.length - 1] + 1;
7241        }
7242        else {
7243            return dayIndices[dayOffset];
7244        }
7245    };
7246    /* Options
7247    ------------------------------------------------------------------------------------------------------------------*/
7248    // Computes a default column header formatting string if `colFormat` is not explicitly defined
7249    DayTableMixin.prototype.computeColHeadFormat = function () {
7250        // if more than one week row, or if there are a lot of columns with not much space,
7251        // put just the day numbers will be in each cell
7252        if (this.rowCnt > 1 || this.colCnt > 10) {
7253            return 'ddd'; // "Sat"
7254        }
7255        else if (this.colCnt > 1) {
7256            return this.opt('dayOfMonthFormat'); // "Sat 12/10"
7257        }
7258        else {
7259            return 'dddd'; // "Saturday"
7260        }
7261    };
7262    /* Slicing
7263    ------------------------------------------------------------------------------------------------------------------*/
7264    // Slices up a date range into a segment for every week-row it intersects with
7265    DayTableMixin.prototype.sliceRangeByRow = function (unzonedRange) {
7266        var daysPerRow = this.daysPerRow;
7267        var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold
7268        var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index
7269        var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index
7270        var segs = [];
7271        var row;
7272        var rowFirst;
7273        var rowLast; // inclusive day-index range for current row
7274        var segFirst;
7275        var segLast; // inclusive day-index range for segment
7276        for (row = 0; row < this.rowCnt; row++) {
7277            rowFirst = row * daysPerRow;
7278            rowLast = rowFirst + daysPerRow - 1;
7279            // intersect segment's offset range with the row's
7280            segFirst = Math.max(rangeFirst, rowFirst);
7281            segLast = Math.min(rangeLast, rowLast);
7282            // deal with in-between indices
7283            segFirst = Math.ceil(segFirst); // in-between starts round to next cell
7284            segLast = Math.floor(segLast); // in-between ends round to prev cell
7285            if (segFirst <= segLast) { // was there any intersection with the current row?
7286                segs.push({
7287                    row: row,
7288                    // normalize to start of row
7289                    firstRowDayIndex: segFirst - rowFirst,
7290                    lastRowDayIndex: segLast - rowFirst,
7291                    // must be matching integers to be the segment's start/end
7292                    isStart: segFirst === rangeFirst,
7293                    isEnd: segLast === rangeLast
7294                });
7295            }
7296        }
7297        return segs;
7298    };
7299    // Slices up a date range into a segment for every day-cell it intersects with.
7300    // TODO: make more DRY with sliceRangeByRow somehow.
7301    DayTableMixin.prototype.sliceRangeByDay = function (unzonedRange) {
7302        var daysPerRow = this.daysPerRow;
7303        var normalRange = this.view.computeDayRange(unzonedRange); // make whole-day range, considering nextDayThreshold
7304        var rangeFirst = this.getDateDayIndex(normalRange.start); // inclusive first index
7305        var rangeLast = this.getDateDayIndex(normalRange.end.clone().subtract(1, 'days')); // inclusive last index
7306        var segs = [];
7307        var row;
7308        var rowFirst;
7309        var rowLast; // inclusive day-index range for current row
7310        var i;
7311        var segFirst;
7312        var segLast; // inclusive day-index range for segment
7313        for (row = 0; row < this.rowCnt; row++) {
7314            rowFirst = row * daysPerRow;
7315            rowLast = rowFirst + daysPerRow - 1;
7316            for (i = rowFirst; i <= rowLast; i++) {
7317                // intersect segment's offset range with the row's
7318                segFirst = Math.max(rangeFirst, i);
7319                segLast = Math.min(rangeLast, i);
7320                // deal with in-between indices
7321                segFirst = Math.ceil(segFirst); // in-between starts round to next cell
7322                segLast = Math.floor(segLast); // in-between ends round to prev cell
7323                if (segFirst <= segLast) { // was there any intersection with the current row?
7324                    segs.push({
7325                        row: row,
7326                        // normalize to start of row
7327                        firstRowDayIndex: segFirst - rowFirst,
7328                        lastRowDayIndex: segLast - rowFirst,
7329                        // must be matching integers to be the segment's start/end
7330                        isStart: segFirst === rangeFirst,
7331                        isEnd: segLast === rangeLast
7332                    });
7333                }
7334            }
7335        }
7336        return segs;
7337    };
7338    /* Header Rendering
7339    ------------------------------------------------------------------------------------------------------------------*/
7340    DayTableMixin.prototype.renderHeadHtml = function () {
7341        var theme = this.view.calendar.theme;
7342        return '' +
7343            '<div class="fc-row ' + theme.getClass('headerRow') + '">' +
7344            '<table class="' + theme.getClass('tableGrid') + '">' +
7345            '<thead>' +
7346            this.renderHeadTrHtml() +
7347            '</thead>' +
7348            '</table>' +
7349            '</div>';
7350    };
7351    DayTableMixin.prototype.renderHeadIntroHtml = function () {
7352        return this.renderIntroHtml(); // fall back to generic
7353    };
7354    DayTableMixin.prototype.renderHeadTrHtml = function () {
7355        return '' +
7356            '<tr>' +
7357            (this.isRTL ? '' : this.renderHeadIntroHtml()) +
7358            this.renderHeadDateCellsHtml() +
7359            (this.isRTL ? this.renderHeadIntroHtml() : '') +
7360            '</tr>';
7361    };
7362    DayTableMixin.prototype.renderHeadDateCellsHtml = function () {
7363        var htmls = [];
7364        var col;
7365        var date;
7366        for (col = 0; col < this.colCnt; col++) {
7367            date = this.getCellDate(0, col);
7368            htmls.push(this.renderHeadDateCellHtml(date));
7369        }
7370        return htmls.join('');
7371    };
7372    // TODO: when internalApiVersion, accept an object for HTML attributes
7373    // (colspan should be no different)
7374    DayTableMixin.prototype.renderHeadDateCellHtml = function (date, colspan, otherAttrs) {
7375        var t = this;
7376        var view = t.view;
7377        var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow.
7378        var classNames = [
7379            'fc-day-header',
7380            view.calendar.theme.getClass('widgetHeader')
7381        ];
7382        var innerHtml;
7383        if (typeof t.opt('columnHeaderHtml') === 'function') {
7384            innerHtml = t.opt('columnHeaderHtml')(date);
7385        }
7386        else if (typeof t.opt('columnHeaderText') === 'function') {
7387            innerHtml = util_1.htmlEscape(t.opt('columnHeaderText')(date));
7388        }
7389        else {
7390            innerHtml = util_1.htmlEscape(date.format(t.colHeadFormat));
7391        }
7392        // if only one row of days, the classNames on the header can represent the specific days beneath
7393        if (t.rowCnt === 1) {
7394            classNames = classNames.concat(
7395            // includes the day-of-week class
7396            // noThemeHighlight=true (don't highlight the header)
7397            t.getDayClasses(date, true));
7398        }
7399        else {
7400            classNames.push('fc-' + util_1.dayIDs[date.day()]); // only add the day-of-week class
7401        }
7402        return '' +
7403            '<th class="' + classNames.join(' ') + '"' +
7404            ((isDateValid && t.rowCnt) === 1 ?
7405                ' data-date="' + date.format('YYYY-MM-DD') + '"' :
7406                '') +
7407            (colspan > 1 ?
7408                ' colspan="' + colspan + '"' :
7409                '') +
7410            (otherAttrs ?
7411                ' ' + otherAttrs :
7412                '') +
7413            '>' +
7414            (isDateValid ?
7415                // don't make a link if the heading could represent multiple days, or if there's only one day (forceOff)
7416                view.buildGotoAnchorHtml({ date: date, forceOff: t.rowCnt > 1 || t.colCnt === 1 }, innerHtml) :
7417                // if not valid, display text, but no link
7418                innerHtml) +
7419            '</th>';
7420    };
7421    /* Background Rendering
7422    ------------------------------------------------------------------------------------------------------------------*/
7423    DayTableMixin.prototype.renderBgTrHtml = function (row) {
7424        return '' +
7425            '<tr>' +
7426            (this.isRTL ? '' : this.renderBgIntroHtml(row)) +
7427            this.renderBgCellsHtml(row) +
7428            (this.isRTL ? this.renderBgIntroHtml(row) : '') +
7429            '</tr>';
7430    };
7431    DayTableMixin.prototype.renderBgIntroHtml = function (row) {
7432        return this.renderIntroHtml(); // fall back to generic
7433    };
7434    DayTableMixin.prototype.renderBgCellsHtml = function (row) {
7435        var htmls = [];
7436        var col;
7437        var date;
7438        for (col = 0; col < this.colCnt; col++) {
7439            date = this.getCellDate(row, col);
7440            htmls.push(this.renderBgCellHtml(date));
7441        }
7442        return htmls.join('');
7443    };
7444    DayTableMixin.prototype.renderBgCellHtml = function (date, otherAttrs) {
7445        var t = this;
7446        var view = t.view;
7447        var isDateValid = t.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow.
7448        var classes = t.getDayClasses(date);
7449        classes.unshift('fc-day', view.calendar.theme.getClass('widgetContent'));
7450        return '<td class="' + classes.join(' ') + '"' +
7451            (isDateValid ?
7452                ' data-date="' + date.format('YYYY-MM-DD') + '"' : // if date has a time, won't format it
7453                '') +
7454            (otherAttrs ?
7455                ' ' + otherAttrs :
7456                '') +
7457            '></td>';
7458    };
7459    /* Generic
7460    ------------------------------------------------------------------------------------------------------------------*/
7461    DayTableMixin.prototype.renderIntroHtml = function () {
7462        // Generates the default HTML intro for any row. User classes should override
7463    };
7464    // TODO: a generic method for dealing with <tr>, RTL, intro
7465    // when increment internalApiVersion
7466    // wrapTr (scheduler)
7467    /* Utils
7468    ------------------------------------------------------------------------------------------------------------------*/
7469    // Applies the generic "intro" and "outro" HTML to the given cells.
7470    // Intro means the leftmost cell when the calendar is LTR and the rightmost cell when RTL. Vice-versa for outro.
7471    DayTableMixin.prototype.bookendCells = function (trEl) {
7472        var introHtml = this.renderIntroHtml();
7473        if (introHtml) {
7474            if (this.isRTL) {
7475                trEl.append(introHtml);
7476            }
7477            else {
7478                trEl.prepend(introHtml);
7479            }
7480        }
7481    };
7482    return DayTableMixin;
7483}(Mixin_1.default));
7484exports.default = DayTableMixin;
7485
7486
7487/***/ }),
7488/* 61 */
7489/***/ (function(module, exports) {
7490
7491Object.defineProperty(exports, "__esModule", { value: true });
7492var BusinessHourRenderer = /** @class */ (function () {
7493    /*
7494    component implements:
7495      - eventRangesToEventFootprints
7496      - eventFootprintsToSegs
7497    */
7498    function BusinessHourRenderer(component, fillRenderer) {
7499        this.component = component;
7500        this.fillRenderer = fillRenderer;
7501    }
7502    BusinessHourRenderer.prototype.render = function (businessHourGenerator) {
7503        var component = this.component;
7504        var unzonedRange = component._getDateProfile().activeUnzonedRange;
7505        var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(component.hasAllDayBusinessHours, unzonedRange);
7506        var eventFootprints = eventInstanceGroup ?
7507            component.eventRangesToEventFootprints(eventInstanceGroup.sliceRenderRanges(unzonedRange)) :
7508            [];
7509        this.renderEventFootprints(eventFootprints);
7510    };
7511    BusinessHourRenderer.prototype.renderEventFootprints = function (eventFootprints) {
7512        var segs = this.component.eventFootprintsToSegs(eventFootprints);
7513        this.renderSegs(segs);
7514        this.segs = segs;
7515    };
7516    BusinessHourRenderer.prototype.renderSegs = function (segs) {
7517        if (this.fillRenderer) {
7518            this.fillRenderer.renderSegs('businessHours', segs, {
7519                getClasses: function (seg) {
7520                    return ['fc-nonbusiness', 'fc-bgevent'];
7521                }
7522            });
7523        }
7524    };
7525    BusinessHourRenderer.prototype.unrender = function () {
7526        if (this.fillRenderer) {
7527            this.fillRenderer.unrender('businessHours');
7528        }
7529        this.segs = null;
7530    };
7531    BusinessHourRenderer.prototype.getSegs = function () {
7532        return this.segs || [];
7533    };
7534    return BusinessHourRenderer;
7535}());
7536exports.default = BusinessHourRenderer;
7537
7538
7539/***/ }),
7540/* 62 */
7541/***/ (function(module, exports, __webpack_require__) {
7542
7543Object.defineProperty(exports, "__esModule", { value: true });
7544var $ = __webpack_require__(3);
7545var util_1 = __webpack_require__(4);
7546var FillRenderer = /** @class */ (function () {
7547    function FillRenderer(component) {
7548        this.fillSegTag = 'div';
7549        this.component = component;
7550        this.elsByFill = {};
7551    }
7552    FillRenderer.prototype.renderFootprint = function (type, componentFootprint, props) {
7553        this.renderSegs(type, this.component.componentFootprintToSegs(componentFootprint), props);
7554    };
7555    FillRenderer.prototype.renderSegs = function (type, segs, props) {
7556        var els;
7557        segs = this.buildSegEls(type, segs, props); // assignes `.el` to each seg. returns successfully rendered segs
7558        els = this.attachSegEls(type, segs);
7559        if (els) {
7560            this.reportEls(type, els);
7561        }
7562        return segs;
7563    };
7564    // Unrenders a specific type of fill that is currently rendered on the grid
7565    FillRenderer.prototype.unrender = function (type) {
7566        var el = this.elsByFill[type];
7567        if (el) {
7568            el.remove();
7569            delete this.elsByFill[type];
7570        }
7571    };
7572    // Renders and assigns an `el` property for each fill segment. Generic enough to work with different types.
7573    // Only returns segments that successfully rendered.
7574    FillRenderer.prototype.buildSegEls = function (type, segs, props) {
7575        var _this = this;
7576        var html = '';
7577        var renderedSegs = [];
7578        var i;
7579        if (segs.length) {
7580            // build a large concatenation of segment HTML
7581            for (i = 0; i < segs.length; i++) {
7582                html += this.buildSegHtml(type, segs[i], props);
7583            }
7584            // Grab individual elements from the combined HTML string. Use each as the default rendering.
7585            // Then, compute the 'el' for each segment.
7586            $(html).each(function (i, node) {
7587                var seg = segs[i];
7588                var el = $(node);
7589                // allow custom filter methods per-type
7590                if (props.filterEl) {
7591                    el = props.filterEl(seg, el);
7592                }
7593                if (el) { // custom filters did not cancel the render
7594                    el = $(el); // allow custom filter to return raw DOM node
7595                    // correct element type? (would be bad if a non-TD were inserted into a table for example)
7596                    if (el.is(_this.fillSegTag)) {
7597                        seg.el = el;
7598                        renderedSegs.push(seg);
7599                    }
7600                }
7601            });
7602        }
7603        return renderedSegs;
7604    };
7605    // Builds the HTML needed for one fill segment. Generic enough to work with different types.
7606    FillRenderer.prototype.buildSegHtml = function (type, seg, props) {
7607        // custom hooks per-type
7608        var classes = props.getClasses ? props.getClasses(seg) : [];
7609        var css = util_1.cssToStr(props.getCss ? props.getCss(seg) : {});
7610        return '<' + this.fillSegTag +
7611            (classes.length ? ' class="' + classes.join(' ') + '"' : '') +
7612            (css ? ' style="' + css + '"' : '') +
7613            '></' + this.fillSegTag + '>';
7614    };
7615    // Should return wrapping DOM structure
7616    FillRenderer.prototype.attachSegEls = function (type, segs) {
7617        // subclasses must implement
7618    };
7619    FillRenderer.prototype.reportEls = function (type, nodes) {
7620        if (this.elsByFill[type]) {
7621            this.elsByFill[type] = this.elsByFill[type].add(nodes);
7622        }
7623        else {
7624            this.elsByFill[type] = $(nodes);
7625        }
7626    };
7627    return FillRenderer;
7628}());
7629exports.default = FillRenderer;
7630
7631
7632/***/ }),
7633/* 63 */
7634/***/ (function(module, exports, __webpack_require__) {
7635
7636Object.defineProperty(exports, "__esModule", { value: true });
7637var SingleEventDef_1 = __webpack_require__(9);
7638var EventFootprint_1 = __webpack_require__(34);
7639var EventSource_1 = __webpack_require__(6);
7640var HelperRenderer = /** @class */ (function () {
7641    function HelperRenderer(component, eventRenderer) {
7642        this.view = component._getView();
7643        this.component = component;
7644        this.eventRenderer = eventRenderer;
7645    }
7646    HelperRenderer.prototype.renderComponentFootprint = function (componentFootprint) {
7647        this.renderEventFootprints([
7648            this.fabricateEventFootprint(componentFootprint)
7649        ]);
7650    };
7651    HelperRenderer.prototype.renderEventDraggingFootprints = function (eventFootprints, sourceSeg, isTouch) {
7652        this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-dragging', isTouch ? null : this.view.opt('dragOpacity'));
7653    };
7654    HelperRenderer.prototype.renderEventResizingFootprints = function (eventFootprints, sourceSeg, isTouch) {
7655        this.renderEventFootprints(eventFootprints, sourceSeg, 'fc-resizing');
7656    };
7657    HelperRenderer.prototype.renderEventFootprints = function (eventFootprints, sourceSeg, extraClassNames, opacity) {
7658        var segs = this.component.eventFootprintsToSegs(eventFootprints);
7659        var classNames = 'fc-helper ' + (extraClassNames || '');
7660        var i;
7661        // assigns each seg's el and returns a subset of segs that were rendered
7662        segs = this.eventRenderer.renderFgSegEls(segs);
7663        for (i = 0; i < segs.length; i++) {
7664            segs[i].el.addClass(classNames);
7665        }
7666        if (opacity != null) {
7667            for (i = 0; i < segs.length; i++) {
7668                segs[i].el.css('opacity', opacity);
7669            }
7670        }
7671        this.helperEls = this.renderSegs(segs, sourceSeg);
7672    };
7673    /*
7674    Must return all mock event elements
7675    */
7676    HelperRenderer.prototype.renderSegs = function (segs, sourceSeg) {
7677        // Subclasses must implement
7678    };
7679    HelperRenderer.prototype.unrender = function () {
7680        if (this.helperEls) {
7681            this.helperEls.remove();
7682            this.helperEls = null;
7683        }
7684    };
7685    HelperRenderer.prototype.fabricateEventFootprint = function (componentFootprint) {
7686        var calendar = this.view.calendar;
7687        var eventDateProfile = calendar.footprintToDateProfile(componentFootprint);
7688        var dummyEvent = new SingleEventDef_1.default(new EventSource_1.default(calendar));
7689        var dummyInstance;
7690        dummyEvent.dateProfile = eventDateProfile;
7691        dummyInstance = dummyEvent.buildInstance();
7692        return new EventFootprint_1.default(componentFootprint, dummyEvent, dummyInstance);
7693    };
7694    return HelperRenderer;
7695}());
7696exports.default = HelperRenderer;
7697
7698
7699/***/ }),
7700/* 64 */
7701/***/ (function(module, exports, __webpack_require__) {
7702
7703Object.defineProperty(exports, "__esModule", { value: true });
7704var tslib_1 = __webpack_require__(2);
7705var GlobalEmitter_1 = __webpack_require__(23);
7706var Interaction_1 = __webpack_require__(14);
7707var EventPointing = /** @class */ (function (_super) {
7708    tslib_1.__extends(EventPointing, _super);
7709    function EventPointing() {
7710        return _super !== null && _super.apply(this, arguments) || this;
7711    }
7712    /*
7713    component must implement:
7714      - publiclyTrigger
7715    */
7716    EventPointing.prototype.bindToEl = function (el) {
7717        var component = this.component;
7718        component.bindSegHandlerToEl(el, 'click', this.handleClick.bind(this));
7719        component.bindSegHandlerToEl(el, 'mouseenter', this.handleMouseover.bind(this));
7720        component.bindSegHandlerToEl(el, 'mouseleave', this.handleMouseout.bind(this));
7721    };
7722    EventPointing.prototype.handleClick = function (seg, ev) {
7723        var res = this.component.publiclyTrigger('eventClick', {
7724            context: seg.el[0],
7725            args: [seg.footprint.getEventLegacy(), ev, this.view]
7726        });
7727        if (res === false) {
7728            ev.preventDefault();
7729        }
7730    };
7731    // Updates internal state and triggers handlers for when an event element is moused over
7732    EventPointing.prototype.handleMouseover = function (seg, ev) {
7733        if (!GlobalEmitter_1.default.get().shouldIgnoreMouse() &&
7734            !this.mousedOverSeg) {
7735            this.mousedOverSeg = seg;
7736            // TODO: move to EventSelecting's responsibility
7737            if (this.view.isEventDefResizable(seg.footprint.eventDef)) {
7738                seg.el.addClass('fc-allow-mouse-resize');
7739            }
7740            this.component.publiclyTrigger('eventMouseover', {
7741                context: seg.el[0],
7742                args: [seg.footprint.getEventLegacy(), ev, this.view]
7743            });
7744        }
7745    };
7746    // Updates internal state and triggers handlers for when an event element is moused out.
7747    // Can be given no arguments, in which case it will mouseout the segment that was previously moused over.
7748    EventPointing.prototype.handleMouseout = function (seg, ev) {
7749        if (this.mousedOverSeg) {
7750            this.mousedOverSeg = null;
7751            // TODO: move to EventSelecting's responsibility
7752            if (this.view.isEventDefResizable(seg.footprint.eventDef)) {
7753                seg.el.removeClass('fc-allow-mouse-resize');
7754            }
7755            this.component.publiclyTrigger('eventMouseout', {
7756                context: seg.el[0],
7757                args: [
7758                    seg.footprint.getEventLegacy(),
7759                    ev || {},
7760                    this.view
7761                ]
7762            });
7763        }
7764    };
7765    EventPointing.prototype.end = function () {
7766        if (this.mousedOverSeg) {
7767            this.handleMouseout(this.mousedOverSeg);
7768        }
7769    };
7770    return EventPointing;
7771}(Interaction_1.default));
7772exports.default = EventPointing;
7773
7774
7775/***/ }),
7776/* 65 */
7777/***/ (function(module, exports, __webpack_require__) {
7778
7779Object.defineProperty(exports, "__esModule", { value: true });
7780var tslib_1 = __webpack_require__(2);
7781var Mixin_1 = __webpack_require__(15);
7782var DateClicking_1 = __webpack_require__(237);
7783var DateSelecting_1 = __webpack_require__(236);
7784var EventPointing_1 = __webpack_require__(64);
7785var EventDragging_1 = __webpack_require__(235);
7786var EventResizing_1 = __webpack_require__(234);
7787var ExternalDropping_1 = __webpack_require__(233);
7788var StandardInteractionsMixin = /** @class */ (function (_super) {
7789    tslib_1.__extends(StandardInteractionsMixin, _super);
7790    function StandardInteractionsMixin() {
7791        return _super !== null && _super.apply(this, arguments) || this;
7792    }
7793    return StandardInteractionsMixin;
7794}(Mixin_1.default));
7795exports.default = StandardInteractionsMixin;
7796StandardInteractionsMixin.prototype.dateClickingClass = DateClicking_1.default;
7797StandardInteractionsMixin.prototype.dateSelectingClass = DateSelecting_1.default;
7798StandardInteractionsMixin.prototype.eventPointingClass = EventPointing_1.default;
7799StandardInteractionsMixin.prototype.eventDraggingClass = EventDragging_1.default;
7800StandardInteractionsMixin.prototype.eventResizingClass = EventResizing_1.default;
7801StandardInteractionsMixin.prototype.externalDroppingClass = ExternalDropping_1.default;
7802
7803
7804/***/ }),
7805/* 66 */
7806/***/ (function(module, exports, __webpack_require__) {
7807
7808Object.defineProperty(exports, "__esModule", { value: true });
7809var tslib_1 = __webpack_require__(2);
7810var $ = __webpack_require__(3);
7811var util_1 = __webpack_require__(4);
7812var CoordCache_1 = __webpack_require__(58);
7813var Popover_1 = __webpack_require__(227);
7814var UnzonedRange_1 = __webpack_require__(5);
7815var ComponentFootprint_1 = __webpack_require__(12);
7816var EventFootprint_1 = __webpack_require__(34);
7817var BusinessHourRenderer_1 = __webpack_require__(61);
7818var StandardInteractionsMixin_1 = __webpack_require__(65);
7819var InteractiveDateComponent_1 = __webpack_require__(42);
7820var DayTableMixin_1 = __webpack_require__(60);
7821var DayGridEventRenderer_1 = __webpack_require__(243);
7822var DayGridHelperRenderer_1 = __webpack_require__(244);
7823var DayGridFillRenderer_1 = __webpack_require__(245);
7824/* A component that renders a grid of whole-days that runs horizontally. There can be multiple rows, one per week.
7825----------------------------------------------------------------------------------------------------------------------*/
7826var DayGrid = /** @class */ (function (_super) {
7827    tslib_1.__extends(DayGrid, _super);
7828    function DayGrid(view) {
7829        var _this = _super.call(this, view) || this;
7830        _this.cellWeekNumbersVisible = false; // display week numbers in day cell?
7831        _this.bottomCoordPadding = 0; // hack for extending the hit area for the last row of the coordinate grid
7832        // isRigid determines whether the individual rows should ignore the contents and be a constant height.
7833        // Relies on the view's colCnt and rowCnt. In the future, this component should probably be self-sufficient.
7834        _this.isRigid = false;
7835        _this.hasAllDayBusinessHours = true;
7836        return _this;
7837    }
7838    // Slices up the given span (unzoned start/end with other misc data) into an array of segments
7839    DayGrid.prototype.componentFootprintToSegs = function (componentFootprint) {
7840        var segs = this.sliceRangeByRow(componentFootprint.unzonedRange);
7841        var i;
7842        var seg;
7843        for (i = 0; i < segs.length; i++) {
7844            seg = segs[i];
7845            if (this.isRTL) {
7846                seg.leftCol = this.daysPerRow - 1 - seg.lastRowDayIndex;
7847                seg.rightCol = this.daysPerRow - 1 - seg.firstRowDayIndex;
7848            }
7849            else {
7850                seg.leftCol = seg.firstRowDayIndex;
7851                seg.rightCol = seg.lastRowDayIndex;
7852            }
7853        }
7854        return segs;
7855    };
7856    /* Date Rendering
7857    ------------------------------------------------------------------------------------------------------------------*/
7858    DayGrid.prototype.renderDates = function (dateProfile) {
7859        this.dateProfile = dateProfile;
7860        this.updateDayTable();
7861        this.renderGrid();
7862    };
7863    DayGrid.prototype.unrenderDates = function () {
7864        this.removeSegPopover();
7865    };
7866    // Renders the rows and columns into the component's `this.el`, which should already be assigned.
7867    DayGrid.prototype.renderGrid = function () {
7868        var view = this.view;
7869        var rowCnt = this.rowCnt;
7870        var colCnt = this.colCnt;
7871        var html = '';
7872        var row;
7873        var col;
7874        if (this.headContainerEl) {
7875            this.headContainerEl.html(this.renderHeadHtml());
7876        }
7877        for (row = 0; row < rowCnt; row++) {
7878            html += this.renderDayRowHtml(row, this.isRigid);
7879        }
7880        this.el.html(html);
7881        this.rowEls = this.el.find('.fc-row');
7882        this.cellEls = this.el.find('.fc-day, .fc-disabled-day');
7883        this.rowCoordCache = new CoordCache_1.default({
7884            els: this.rowEls,
7885            isVertical: true
7886        });
7887        this.colCoordCache = new CoordCache_1.default({
7888            els: this.cellEls.slice(0, this.colCnt),
7889            isHorizontal: true
7890        });
7891        // trigger dayRender with each cell's element
7892        for (row = 0; row < rowCnt; row++) {
7893            for (col = 0; col < colCnt; col++) {
7894                this.publiclyTrigger('dayRender', {
7895                    context: view,
7896                    args: [
7897                        this.getCellDate(row, col),
7898                        this.getCellEl(row, col),
7899                        view
7900                    ]
7901                });
7902            }
7903        }
7904    };
7905    // Generates the HTML for a single row, which is a div that wraps a table.
7906    // `row` is the row number.
7907    DayGrid.prototype.renderDayRowHtml = function (row, isRigid) {
7908        var theme = this.view.calendar.theme;
7909        var classes = ['fc-row', 'fc-week', theme.getClass('dayRow')];
7910        if (isRigid) {
7911            classes.push('fc-rigid');
7912        }
7913        return '' +
7914            '<div class="' + classes.join(' ') + '">' +
7915            '<div class="fc-bg">' +
7916            '<table class="' + theme.getClass('tableGrid') + '">' +
7917            this.renderBgTrHtml(row) +
7918            '</table>' +
7919            '</div>' +
7920            '<div class="fc-content-skeleton">' +
7921            '<table>' +
7922            (this.getIsNumbersVisible() ?
7923                '<thead>' +
7924                    this.renderNumberTrHtml(row) +
7925                    '</thead>' :
7926                '') +
7927            '</table>' +
7928            '</div>' +
7929            '</div>';
7930    };
7931    DayGrid.prototype.getIsNumbersVisible = function () {
7932        return this.getIsDayNumbersVisible() || this.cellWeekNumbersVisible;
7933    };
7934    DayGrid.prototype.getIsDayNumbersVisible = function () {
7935        return this.rowCnt > 1;
7936    };
7937    /* Grid Number Rendering
7938    ------------------------------------------------------------------------------------------------------------------*/
7939    DayGrid.prototype.renderNumberTrHtml = function (row) {
7940        return '' +
7941            '<tr>' +
7942            (this.isRTL ? '' : this.renderNumberIntroHtml(row)) +
7943            this.renderNumberCellsHtml(row) +
7944            (this.isRTL ? this.renderNumberIntroHtml(row) : '') +
7945            '</tr>';
7946    };
7947    DayGrid.prototype.renderNumberIntroHtml = function (row) {
7948        return this.renderIntroHtml();
7949    };
7950    DayGrid.prototype.renderNumberCellsHtml = function (row) {
7951        var htmls = [];
7952        var col;
7953        var date;
7954        for (col = 0; col < this.colCnt; col++) {
7955            date = this.getCellDate(row, col);
7956            htmls.push(this.renderNumberCellHtml(date));
7957        }
7958        return htmls.join('');
7959    };
7960    // Generates the HTML for the <td>s of the "number" row in the DayGrid's content skeleton.
7961    // The number row will only exist if either day numbers or week numbers are turned on.
7962    DayGrid.prototype.renderNumberCellHtml = function (date) {
7963        var view = this.view;
7964        var html = '';
7965        var isDateValid = this.dateProfile.activeUnzonedRange.containsDate(date); // TODO: called too frequently. cache somehow.
7966        var isDayNumberVisible = this.getIsDayNumbersVisible() && isDateValid;
7967        var classes;
7968        var weekCalcFirstDoW;
7969        if (!isDayNumberVisible && !this.cellWeekNumbersVisible) {
7970            // no numbers in day cell (week number must be along the side)
7971            return '<td></td>'; //  will create an empty space above events :(
7972        }
7973        classes = this.getDayClasses(date);
7974        classes.unshift('fc-day-top');
7975        if (this.cellWeekNumbersVisible) {
7976            // To determine the day of week number change under ISO, we cannot
7977            // rely on moment.js methods such as firstDayOfWeek() or weekday(),
7978            // because they rely on the locale's dow (possibly overridden by
7979            // our firstDay option), which may not be Monday. We cannot change
7980            // dow, because that would affect the calendar start day as well.
7981            if (date._locale._fullCalendar_weekCalc === 'ISO') {
7982                weekCalcFirstDoW = 1; // Monday by ISO 8601 definition
7983            }
7984            else {
7985                weekCalcFirstDoW = date._locale.firstDayOfWeek();
7986            }
7987        }
7988        html += '<td class="' + classes.join(' ') + '"' +
7989            (isDateValid ?
7990                ' data-date="' + date.format() + '"' :
7991                '') +
7992            '>';
7993        if (this.cellWeekNumbersVisible && (date.day() === weekCalcFirstDoW)) {
7994            html += view.buildGotoAnchorHtml({ date: date, type: 'week' }, { 'class': 'fc-week-number' }, date.format('w') // inner HTML
7995            );
7996        }
7997        if (isDayNumberVisible) {
7998            html += view.buildGotoAnchorHtml(date, { 'class': 'fc-day-number' }, date.format('D') // inner HTML
7999            );
8000        }
8001        html += '</td>';
8002        return html;
8003    };
8004    /* Hit System
8005    ------------------------------------------------------------------------------------------------------------------*/
8006    DayGrid.prototype.prepareHits = function () {
8007        this.colCoordCache.build();
8008        this.rowCoordCache.build();
8009        this.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding; // hack
8010    };
8011    DayGrid.prototype.releaseHits = function () {
8012        this.colCoordCache.clear();
8013        this.rowCoordCache.clear();
8014    };
8015    DayGrid.prototype.queryHit = function (leftOffset, topOffset) {
8016        if (this.colCoordCache.isLeftInBounds(leftOffset) && this.rowCoordCache.isTopInBounds(topOffset)) {
8017            var col = this.colCoordCache.getHorizontalIndex(leftOffset);
8018            var row = this.rowCoordCache.getVerticalIndex(topOffset);
8019            if (row != null && col != null) {
8020                return this.getCellHit(row, col);
8021            }
8022        }
8023    };
8024    DayGrid.prototype.getHitFootprint = function (hit) {
8025        var range = this.getCellRange(hit.row, hit.col);
8026        return new ComponentFootprint_1.default(new UnzonedRange_1.default(range.start, range.end), true // all-day?
8027        );
8028    };
8029    DayGrid.prototype.getHitEl = function (hit) {
8030        return this.getCellEl(hit.row, hit.col);
8031    };
8032    /* Cell System
8033    ------------------------------------------------------------------------------------------------------------------*/
8034    // FYI: the first column is the leftmost column, regardless of date
8035    DayGrid.prototype.getCellHit = function (row, col) {
8036        return {
8037            row: row,
8038            col: col,
8039            component: this,
8040            left: this.colCoordCache.getLeftOffset(col),
8041            right: this.colCoordCache.getRightOffset(col),
8042            top: this.rowCoordCache.getTopOffset(row),
8043            bottom: this.rowCoordCache.getBottomOffset(row)
8044        };
8045    };
8046    DayGrid.prototype.getCellEl = function (row, col) {
8047        return this.cellEls.eq(row * this.colCnt + col);
8048    };
8049    /* Event Rendering
8050    ------------------------------------------------------------------------------------------------------------------*/
8051    // Unrenders all events currently rendered on the grid
8052    DayGrid.prototype.executeEventUnrender = function () {
8053        this.removeSegPopover(); // removes the "more.." events popover
8054        _super.prototype.executeEventUnrender.call(this);
8055    };
8056    // Retrieves all rendered segment objects currently rendered on the grid
8057    DayGrid.prototype.getOwnEventSegs = function () {
8058        // append the segments from the "more..." popover
8059        return _super.prototype.getOwnEventSegs.call(this).concat(this.popoverSegs || []);
8060    };
8061    /* Event Drag Visualization
8062    ------------------------------------------------------------------------------------------------------------------*/
8063    // Renders a visual indication of an event or external element being dragged.
8064    // `eventLocation` has zoned start and end (optional)
8065    DayGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) {
8066        var i;
8067        for (i = 0; i < eventFootprints.length; i++) {
8068            this.renderHighlight(eventFootprints[i].componentFootprint);
8069        }
8070        // render drags from OTHER components as helpers
8071        if (eventFootprints.length && seg && seg.component !== this) {
8072            this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch);
8073            return true; // signal helpers rendered
8074        }
8075    };
8076    // Unrenders any visual indication of a hovering event
8077    DayGrid.prototype.unrenderDrag = function () {
8078        this.unrenderHighlight();
8079        this.helperRenderer.unrender();
8080    };
8081    /* Event Resize Visualization
8082    ------------------------------------------------------------------------------------------------------------------*/
8083    // Renders a visual indication of an event being resized
8084    DayGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {
8085        var i;
8086        for (i = 0; i < eventFootprints.length; i++) {
8087            this.renderHighlight(eventFootprints[i].componentFootprint);
8088        }
8089        this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch);
8090    };
8091    // Unrenders a visual indication of an event being resized
8092    DayGrid.prototype.unrenderEventResize = function () {
8093        this.unrenderHighlight();
8094        this.helperRenderer.unrender();
8095    };
8096    /* More+ Link Popover
8097    ------------------------------------------------------------------------------------------------------------------*/
8098    DayGrid.prototype.removeSegPopover = function () {
8099        if (this.segPopover) {
8100            this.segPopover.hide(); // in handler, will call segPopover's removeElement
8101        }
8102    };
8103    // Limits the number of "levels" (vertically stacking layers of events) for each row of the grid.
8104    // `levelLimit` can be false (don't limit), a number, or true (should be computed).
8105    DayGrid.prototype.limitRows = function (levelLimit) {
8106        var rowStructs = this.eventRenderer.rowStructs || [];
8107        var row; // row #
8108        var rowLevelLimit;
8109        for (row = 0; row < rowStructs.length; row++) {
8110            this.unlimitRow(row);
8111            if (!levelLimit) {
8112                rowLevelLimit = false;
8113            }
8114            else if (typeof levelLimit === 'number') {
8115                rowLevelLimit = levelLimit;
8116            }
8117            else {
8118                rowLevelLimit = this.computeRowLevelLimit(row);
8119            }
8120            if (rowLevelLimit !== false) {
8121                this.limitRow(row, rowLevelLimit);
8122            }
8123        }
8124    };
8125    // Computes the number of levels a row will accomodate without going outside its bounds.
8126    // Assumes the row is "rigid" (maintains a constant height regardless of what is inside).
8127    // `row` is the row number.
8128    DayGrid.prototype.computeRowLevelLimit = function (row) {
8129        var rowEl = this.rowEls.eq(row); // the containing "fake" row div
8130        var rowHeight = rowEl.height(); // TODO: cache somehow?
8131        var trEls = this.eventRenderer.rowStructs[row].tbodyEl.children();
8132        var i;
8133        var trEl;
8134        var trHeight;
8135        function iterInnerHeights(i, childNode) {
8136            trHeight = Math.max(trHeight, $(childNode).outerHeight());
8137        }
8138        // Reveal one level <tr> at a time and stop when we find one out of bounds
8139        for (i = 0; i < trEls.length; i++) {
8140            trEl = trEls.eq(i).removeClass('fc-limited'); // reset to original state (reveal)
8141            // with rowspans>1 and IE8, trEl.outerHeight() would return the height of the largest cell,
8142            // so instead, find the tallest inner content element.
8143            trHeight = 0;
8144            trEl.find('> td > :first-child').each(iterInnerHeights);
8145            if (trEl.position().top + trHeight > rowHeight) {
8146                return i;
8147            }
8148        }
8149        return false; // should not limit at all
8150    };
8151    // Limits the given grid row to the maximum number of levels and injects "more" links if necessary.
8152    // `row` is the row number.
8153    // `levelLimit` is a number for the maximum (inclusive) number of levels allowed.
8154    DayGrid.prototype.limitRow = function (row, levelLimit) {
8155        var _this = this;
8156        var rowStruct = this.eventRenderer.rowStructs[row];
8157        var moreNodes = []; // array of "more" <a> links and <td> DOM nodes
8158        var col = 0; // col #, left-to-right (not chronologically)
8159        var levelSegs; // array of segment objects in the last allowable level, ordered left-to-right
8160        var cellMatrix; // a matrix (by level, then column) of all <td> jQuery elements in the row
8161        var limitedNodes; // array of temporarily hidden level <tr> and segment <td> DOM nodes
8162        var i;
8163        var seg;
8164        var segsBelow; // array of segment objects below `seg` in the current `col`
8165        var totalSegsBelow; // total number of segments below `seg` in any of the columns `seg` occupies
8166        var colSegsBelow; // array of segment arrays, below seg, one for each column (offset from segs's first column)
8167        var td;
8168        var rowspan;
8169        var segMoreNodes; // array of "more" <td> cells that will stand-in for the current seg's cell
8170        var j;
8171        var moreTd;
8172        var moreWrap;
8173        var moreLink;
8174        // Iterates through empty level cells and places "more" links inside if need be
8175        var emptyCellsUntil = function (endCol) {
8176            while (col < endCol) {
8177                segsBelow = _this.getCellSegs(row, col, levelLimit);
8178                if (segsBelow.length) {
8179                    td = cellMatrix[levelLimit - 1][col];
8180                    moreLink = _this.renderMoreLink(row, col, segsBelow);
8181                    moreWrap = $('<div>').append(moreLink);
8182                    td.append(moreWrap);
8183                    moreNodes.push(moreWrap[0]);
8184                }
8185                col++;
8186            }
8187        };
8188        if (levelLimit && levelLimit < rowStruct.segLevels.length) { // is it actually over the limit?
8189            levelSegs = rowStruct.segLevels[levelLimit - 1];
8190            cellMatrix = rowStruct.cellMatrix;
8191            limitedNodes = rowStruct.tbodyEl.children().slice(levelLimit) // get level <tr> elements past the limit
8192                .addClass('fc-limited').get(); // hide elements and get a simple DOM-nodes array
8193            // iterate though segments in the last allowable level
8194            for (i = 0; i < levelSegs.length; i++) {
8195                seg = levelSegs[i];
8196                emptyCellsUntil(seg.leftCol); // process empty cells before the segment
8197                // determine *all* segments below `seg` that occupy the same columns
8198                colSegsBelow = [];
8199                totalSegsBelow = 0;
8200                while (col <= seg.rightCol) {
8201                    segsBelow = this.getCellSegs(row, col, levelLimit);
8202                    colSegsBelow.push(segsBelow);
8203                    totalSegsBelow += segsBelow.length;
8204                    col++;
8205                }
8206                if (totalSegsBelow) { // do we need to replace this segment with one or many "more" links?
8207                    td = cellMatrix[levelLimit - 1][seg.leftCol]; // the segment's parent cell
8208                    rowspan = td.attr('rowspan') || 1;
8209                    segMoreNodes = [];
8210                    // make a replacement <td> for each column the segment occupies. will be one for each colspan
8211                    for (j = 0; j < colSegsBelow.length; j++) {
8212                        moreTd = $('<td class="fc-more-cell">').attr('rowspan', rowspan);
8213                        segsBelow = colSegsBelow[j];
8214                        moreLink = this.renderMoreLink(row, seg.leftCol + j, [seg].concat(segsBelow) // count seg as hidden too
8215                        );
8216                        moreWrap = $('<div>').append(moreLink);
8217                        moreTd.append(moreWrap);
8218                        segMoreNodes.push(moreTd[0]);
8219                        moreNodes.push(moreTd[0]);
8220                    }
8221                    td.addClass('fc-limited').after($(segMoreNodes)); // hide original <td> and inject replacements
8222                    limitedNodes.push(td[0]);
8223                }
8224            }
8225            emptyCellsUntil(this.colCnt); // finish off the level
8226            rowStruct.moreEls = $(moreNodes); // for easy undoing later
8227            rowStruct.limitedEls = $(limitedNodes); // for easy undoing later
8228        }
8229    };
8230    // Reveals all levels and removes all "more"-related elements for a grid's row.
8231    // `row` is a row number.
8232    DayGrid.prototype.unlimitRow = function (row) {
8233        var rowStruct = this.eventRenderer.rowStructs[row];
8234        if (rowStruct.moreEls) {
8235            rowStruct.moreEls.remove();
8236            rowStruct.moreEls = null;
8237        }
8238        if (rowStruct.limitedEls) {
8239            rowStruct.limitedEls.removeClass('fc-limited');
8240            rowStruct.limitedEls = null;
8241        }
8242    };
8243    // Renders an <a> element that represents hidden event element for a cell.
8244    // Responsible for attaching click handler as well.
8245    DayGrid.prototype.renderMoreLink = function (row, col, hiddenSegs) {
8246        var _this = this;
8247        var view = this.view;
8248        return $('<a class="fc-more">')
8249            .text(this.getMoreLinkText(hiddenSegs.length))
8250            .on('click', function (ev) {
8251            var clickOption = _this.opt('eventLimitClick');
8252            var date = _this.getCellDate(row, col);
8253            var moreEl = $(ev.currentTarget);
8254            var dayEl = _this.getCellEl(row, col);
8255            var allSegs = _this.getCellSegs(row, col);
8256            // rescope the segments to be within the cell's date
8257            var reslicedAllSegs = _this.resliceDaySegs(allSegs, date);
8258            var reslicedHiddenSegs = _this.resliceDaySegs(hiddenSegs, date);
8259            if (typeof clickOption === 'function') {
8260                // the returned value can be an atomic option
8261                clickOption = _this.publiclyTrigger('eventLimitClick', {
8262                    context: view,
8263                    args: [
8264                        {
8265                            date: date.clone(),
8266                            dayEl: dayEl,
8267                            moreEl: moreEl,
8268                            segs: reslicedAllSegs,
8269                            hiddenSegs: reslicedHiddenSegs
8270                        },
8271                        ev,
8272                        view
8273                    ]
8274                });
8275            }
8276            if (clickOption === 'popover') {
8277                _this.showSegPopover(row, col, moreEl, reslicedAllSegs);
8278            }
8279            else if (typeof clickOption === 'string') { // a view name
8280                view.calendar.zoomTo(date, clickOption);
8281            }
8282        });
8283    };
8284    // Reveals the popover that displays all events within a cell
8285    DayGrid.prototype.showSegPopover = function (row, col, moreLink, segs) {
8286        var _this = this;
8287        var view = this.view;
8288        var moreWrap = moreLink.parent(); // the <div> wrapper around the <a>
8289        var topEl; // the element we want to match the top coordinate of
8290        var options;
8291        if (this.rowCnt === 1) {
8292            topEl = view.el; // will cause the popover to cover any sort of header
8293        }
8294        else {
8295            topEl = this.rowEls.eq(row); // will align with top of row
8296        }
8297        options = {
8298            className: 'fc-more-popover ' + view.calendar.theme.getClass('popover'),
8299            content: this.renderSegPopoverContent(row, col, segs),
8300            parentEl: view.el,
8301            top: topEl.offset().top,
8302            autoHide: true,
8303            viewportConstrain: this.opt('popoverViewportConstrain'),
8304            hide: function () {
8305                // kill everything when the popover is hidden
8306                // notify events to be removed
8307                if (_this.popoverSegs) {
8308                    _this.triggerBeforeEventSegsDestroyed(_this.popoverSegs);
8309                }
8310                _this.segPopover.removeElement();
8311                _this.segPopover = null;
8312                _this.popoverSegs = null;
8313            }
8314        };
8315        // Determine horizontal coordinate.
8316        // We use the moreWrap instead of the <td> to avoid border confusion.
8317        if (this.isRTL) {
8318            options.right = moreWrap.offset().left + moreWrap.outerWidth() + 1; // +1 to be over cell border
8319        }
8320        else {
8321            options.left = moreWrap.offset().left - 1; // -1 to be over cell border
8322        }
8323        this.segPopover = new Popover_1.default(options);
8324        this.segPopover.show();
8325        // the popover doesn't live within the grid's container element, and thus won't get the event
8326        // delegated-handlers for free. attach event-related handlers to the popover.
8327        this.bindAllSegHandlersToEl(this.segPopover.el);
8328        this.triggerAfterEventSegsRendered(segs);
8329    };
8330    // Builds the inner DOM contents of the segment popover
8331    DayGrid.prototype.renderSegPopoverContent = function (row, col, segs) {
8332        var view = this.view;
8333        var theme = view.calendar.theme;
8334        var title = this.getCellDate(row, col).format(this.opt('dayPopoverFormat'));
8335        var content = $('<div class="fc-header ' + theme.getClass('popoverHeader') + '">' +
8336            '<span class="fc-close ' + theme.getIconClass('close') + '"></span>' +
8337            '<span class="fc-title">' +
8338            util_1.htmlEscape(title) +
8339            '</span>' +
8340            '<div class="fc-clear"></div>' +
8341            '</div>' +
8342            '<div class="fc-body ' + theme.getClass('popoverContent') + '">' +
8343            '<div class="fc-event-container"></div>' +
8344            '</div>');
8345        var segContainer = content.find('.fc-event-container');
8346        var i;
8347        // render each seg's `el` and only return the visible segs
8348        segs = this.eventRenderer.renderFgSegEls(segs, true); // disableResizing=true
8349        this.popoverSegs = segs;
8350        for (i = 0; i < segs.length; i++) {
8351            // because segments in the popover are not part of a grid coordinate system, provide a hint to any
8352            // grids that want to do drag-n-drop about which cell it came from
8353            this.hitsNeeded();
8354            segs[i].hit = this.getCellHit(row, col);
8355            this.hitsNotNeeded();
8356            segContainer.append(segs[i].el);
8357        }
8358        return content;
8359    };
8360    // Given the events within an array of segment objects, reslice them to be in a single day
8361    DayGrid.prototype.resliceDaySegs = function (segs, dayDate) {
8362        var dayStart = dayDate.clone();
8363        var dayEnd = dayStart.clone().add(1, 'days');
8364        var dayRange = new UnzonedRange_1.default(dayStart, dayEnd);
8365        var newSegs = [];
8366        var i;
8367        var seg;
8368        var slicedRange;
8369        for (i = 0; i < segs.length; i++) {
8370            seg = segs[i];
8371            slicedRange = seg.footprint.componentFootprint.unzonedRange.intersect(dayRange);
8372            if (slicedRange) {
8373                newSegs.push($.extend({}, seg, {
8374                    footprint: new EventFootprint_1.default(new ComponentFootprint_1.default(slicedRange, seg.footprint.componentFootprint.isAllDay), seg.footprint.eventDef, seg.footprint.eventInstance),
8375                    isStart: seg.isStart && slicedRange.isStart,
8376                    isEnd: seg.isEnd && slicedRange.isEnd
8377                }));
8378            }
8379        }
8380        // force an order because eventsToSegs doesn't guarantee one
8381        // TODO: research if still needed
8382        this.eventRenderer.sortEventSegs(newSegs);
8383        return newSegs;
8384    };
8385    // Generates the text that should be inside a "more" link, given the number of events it represents
8386    DayGrid.prototype.getMoreLinkText = function (num) {
8387        var opt = this.opt('eventLimitText');
8388        if (typeof opt === 'function') {
8389            return opt(num);
8390        }
8391        else {
8392            return '+' + num + ' ' + opt;
8393        }
8394    };
8395    // Returns segments within a given cell.
8396    // If `startLevel` is specified, returns only events including and below that level. Otherwise returns all segs.
8397    DayGrid.prototype.getCellSegs = function (row, col, startLevel) {
8398        var segMatrix = this.eventRenderer.rowStructs[row].segMatrix;
8399        var level = startLevel || 0;
8400        var segs = [];
8401        var seg;
8402        while (level < segMatrix.length) {
8403            seg = segMatrix[level][col];
8404            if (seg) {
8405                segs.push(seg);
8406            }
8407            level++;
8408        }
8409        return segs;
8410    };
8411    return DayGrid;
8412}(InteractiveDateComponent_1.default));
8413exports.default = DayGrid;
8414DayGrid.prototype.eventRendererClass = DayGridEventRenderer_1.default;
8415DayGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default;
8416DayGrid.prototype.helperRendererClass = DayGridHelperRenderer_1.default;
8417DayGrid.prototype.fillRendererClass = DayGridFillRenderer_1.default;
8418StandardInteractionsMixin_1.default.mixInto(DayGrid);
8419DayTableMixin_1.default.mixInto(DayGrid);
8420
8421
8422/***/ }),
8423/* 67 */
8424/***/ (function(module, exports, __webpack_require__) {
8425
8426Object.defineProperty(exports, "__esModule", { value: true });
8427var tslib_1 = __webpack_require__(2);
8428var $ = __webpack_require__(3);
8429var util_1 = __webpack_require__(4);
8430var Scroller_1 = __webpack_require__(41);
8431var View_1 = __webpack_require__(43);
8432var BasicViewDateProfileGenerator_1 = __webpack_require__(68);
8433var DayGrid_1 = __webpack_require__(66);
8434/* An abstract class for the "basic" views, as well as month view. Renders one or more rows of day cells.
8435----------------------------------------------------------------------------------------------------------------------*/
8436// It is a manager for a DayGrid subcomponent, which does most of the heavy lifting.
8437// It is responsible for managing width/height.
8438var BasicView = /** @class */ (function (_super) {
8439    tslib_1.__extends(BasicView, _super);
8440    function BasicView(calendar, viewSpec) {
8441        var _this = _super.call(this, calendar, viewSpec) || this;
8442        _this.dayGrid = _this.instantiateDayGrid();
8443        _this.dayGrid.isRigid = _this.hasRigidRows();
8444        if (_this.opt('weekNumbers')) {
8445            if (_this.opt('weekNumbersWithinDays')) {
8446                _this.dayGrid.cellWeekNumbersVisible = true;
8447                _this.dayGrid.colWeekNumbersVisible = false;
8448            }
8449            else {
8450                _this.dayGrid.cellWeekNumbersVisible = false;
8451                _this.dayGrid.colWeekNumbersVisible = true;
8452            }
8453        }
8454        _this.addChild(_this.dayGrid);
8455        _this.scroller = new Scroller_1.default({
8456            overflowX: 'hidden',
8457            overflowY: 'auto'
8458        });
8459        return _this;
8460    }
8461    // Generates the DayGrid object this view needs. Draws from this.dayGridClass
8462    BasicView.prototype.instantiateDayGrid = function () {
8463        // generate a subclass on the fly with BasicView-specific behavior
8464        // TODO: cache this subclass
8465        var subclass = makeDayGridSubclass(this.dayGridClass);
8466        return new subclass(this);
8467    };
8468    BasicView.prototype.executeDateRender = function (dateProfile) {
8469        this.dayGrid.breakOnWeeks = /year|month|week/.test(dateProfile.currentRangeUnit);
8470        _super.prototype.executeDateRender.call(this, dateProfile);
8471    };
8472    BasicView.prototype.renderSkeleton = function () {
8473        var dayGridContainerEl;
8474        var dayGridEl;
8475        this.el.addClass('fc-basic-view').html(this.renderSkeletonHtml());
8476        this.scroller.render();
8477        dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container');
8478        dayGridEl = $('<div class="fc-day-grid">').appendTo(dayGridContainerEl);
8479        this.el.find('.fc-body > tr > td').append(dayGridContainerEl);
8480        this.dayGrid.headContainerEl = this.el.find('.fc-head-container');
8481        this.dayGrid.setElement(dayGridEl);
8482    };
8483    BasicView.prototype.unrenderSkeleton = function () {
8484        this.dayGrid.removeElement();
8485        this.scroller.destroy();
8486    };
8487    // Builds the HTML skeleton for the view.
8488    // The day-grid component will render inside of a container defined by this HTML.
8489    BasicView.prototype.renderSkeletonHtml = function () {
8490        var theme = this.calendar.theme;
8491        return '' +
8492            '<table class="' + theme.getClass('tableGrid') + '">' +
8493            (this.opt('columnHeader') ?
8494                '<thead class="fc-head">' +
8495                    '<tr>' +
8496                    '<td class="fc-head-container ' + theme.getClass('widgetHeader') + '">&nbsp;</td>' +
8497                    '</tr>' +
8498                    '</thead>' :
8499                '') +
8500            '<tbody class="fc-body">' +
8501            '<tr>' +
8502            '<td class="' + theme.getClass('widgetContent') + '"></td>' +
8503            '</tr>' +
8504            '</tbody>' +
8505            '</table>';
8506    };
8507    // Generates an HTML attribute string for setting the width of the week number column, if it is known
8508    BasicView.prototype.weekNumberStyleAttr = function () {
8509        if (this.weekNumberWidth != null) {
8510            return 'style="width:' + this.weekNumberWidth + 'px"';
8511        }
8512        return '';
8513    };
8514    // Determines whether each row should have a constant height
8515    BasicView.prototype.hasRigidRows = function () {
8516        var eventLimit = this.opt('eventLimit');
8517        return eventLimit && typeof eventLimit !== 'number';
8518    };
8519    /* Dimensions
8520    ------------------------------------------------------------------------------------------------------------------*/
8521    // Refreshes the horizontal dimensions of the view
8522    BasicView.prototype.updateSize = function (totalHeight, isAuto, isResize) {
8523        var eventLimit = this.opt('eventLimit');
8524        var headRowEl = this.dayGrid.headContainerEl.find('.fc-row');
8525        var scrollerHeight;
8526        var scrollbarWidths;
8527        // hack to give the view some height prior to dayGrid's columns being rendered
8528        // TODO: separate setting height from scroller VS dayGrid.
8529        if (!this.dayGrid.rowEls) {
8530            if (!isAuto) {
8531                scrollerHeight = this.computeScrollerHeight(totalHeight);
8532                this.scroller.setHeight(scrollerHeight);
8533            }
8534            return;
8535        }
8536        _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);
8537        if (this.dayGrid.colWeekNumbersVisible) {
8538            // Make sure all week number cells running down the side have the same width.
8539            // Record the width for cells created later.
8540            this.weekNumberWidth = util_1.matchCellWidths(this.el.find('.fc-week-number'));
8541        }
8542        // reset all heights to be natural
8543        this.scroller.clear();
8544        util_1.uncompensateScroll(headRowEl);
8545        this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed
8546        // is the event limit a constant level number?
8547        if (eventLimit && typeof eventLimit === 'number') {
8548            this.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after
8549        }
8550        // distribute the height to the rows
8551        // (totalHeight is a "recommended" value if isAuto)
8552        scrollerHeight = this.computeScrollerHeight(totalHeight);
8553        this.setGridHeight(scrollerHeight, isAuto);
8554        // is the event limit dynamically calculated?
8555        if (eventLimit && typeof eventLimit !== 'number') {
8556            this.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set
8557        }
8558        if (!isAuto) { // should we force dimensions of the scroll container?
8559            this.scroller.setHeight(scrollerHeight);
8560            scrollbarWidths = this.scroller.getScrollbarWidths();
8561            if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?
8562                util_1.compensateScroll(headRowEl, scrollbarWidths);
8563                // doing the scrollbar compensation might have created text overflow which created more height. redo
8564                scrollerHeight = this.computeScrollerHeight(totalHeight);
8565                this.scroller.setHeight(scrollerHeight);
8566            }
8567            // guarantees the same scrollbar widths
8568            this.scroller.lockOverflow(scrollbarWidths);
8569        }
8570    };
8571    // given a desired total height of the view, returns what the height of the scroller should be
8572    BasicView.prototype.computeScrollerHeight = function (totalHeight) {
8573        return totalHeight -
8574            util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller
8575    };
8576    // Sets the height of just the DayGrid component in this view
8577    BasicView.prototype.setGridHeight = function (height, isAuto) {
8578        if (isAuto) {
8579            util_1.undistributeHeight(this.dayGrid.rowEls); // let the rows be their natural height with no expanding
8580        }
8581        else {
8582            util_1.distributeHeight(this.dayGrid.rowEls, height, true); // true = compensate for height-hogging rows
8583        }
8584    };
8585    /* Scroll
8586    ------------------------------------------------------------------------------------------------------------------*/
8587    BasicView.prototype.computeInitialDateScroll = function () {
8588        return { top: 0 };
8589    };
8590    BasicView.prototype.queryDateScroll = function () {
8591        return { top: this.scroller.getScrollTop() };
8592    };
8593    BasicView.prototype.applyDateScroll = function (scroll) {
8594        if (scroll.top !== undefined) {
8595            this.scroller.setScrollTop(scroll.top);
8596        }
8597    };
8598    return BasicView;
8599}(View_1.default));
8600exports.default = BasicView;
8601BasicView.prototype.dateProfileGeneratorClass = BasicViewDateProfileGenerator_1.default;
8602BasicView.prototype.dayGridClass = DayGrid_1.default;
8603// customize the rendering behavior of BasicView's dayGrid
8604function makeDayGridSubclass(SuperClass) {
8605    return /** @class */ (function (_super) {
8606        tslib_1.__extends(SubClass, _super);
8607        function SubClass() {
8608            var _this = _super !== null && _super.apply(this, arguments) || this;
8609            _this.colWeekNumbersVisible = false; // display week numbers along the side?
8610            return _this;
8611        }
8612        // Generates the HTML that will go before the day-of week header cells
8613        SubClass.prototype.renderHeadIntroHtml = function () {
8614            var view = this.view;
8615            if (this.colWeekNumbersVisible) {
8616                return '' +
8617                    '<th class="fc-week-number ' + view.calendar.theme.getClass('widgetHeader') + '" ' + view.weekNumberStyleAttr() + '>' +
8618                    '<span>' + // needed for matchCellWidths
8619                    util_1.htmlEscape(this.opt('weekNumberTitle')) +
8620                    '</span>' +
8621                    '</th>';
8622            }
8623            return '';
8624        };
8625        // Generates the HTML that will go before content-skeleton cells that display the day/week numbers
8626        SubClass.prototype.renderNumberIntroHtml = function (row) {
8627            var view = this.view;
8628            var weekStart = this.getCellDate(row, 0);
8629            if (this.colWeekNumbersVisible) {
8630                return '' +
8631                    '<td class="fc-week-number" ' + view.weekNumberStyleAttr() + '>' +
8632                    view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths
8633                    { date: weekStart, type: 'week', forceOff: this.colCnt === 1 }, weekStart.format('w') // inner HTML
8634                    ) +
8635                    '</td>';
8636            }
8637            return '';
8638        };
8639        // Generates the HTML that goes before the day bg cells for each day-row
8640        SubClass.prototype.renderBgIntroHtml = function () {
8641            var view = this.view;
8642            if (this.colWeekNumbersVisible) {
8643                return '<td class="fc-week-number ' + view.calendar.theme.getClass('widgetContent') + '" ' +
8644                    view.weekNumberStyleAttr() + '></td>';
8645            }
8646            return '';
8647        };
8648        // Generates the HTML that goes before every other type of row generated by DayGrid.
8649        // Affects helper-skeleton and highlight-skeleton rows.
8650        SubClass.prototype.renderIntroHtml = function () {
8651            var view = this.view;
8652            if (this.colWeekNumbersVisible) {
8653                return '<td class="fc-week-number" ' + view.weekNumberStyleAttr() + '></td>';
8654            }
8655            return '';
8656        };
8657        SubClass.prototype.getIsNumbersVisible = function () {
8658            return DayGrid_1.default.prototype.getIsNumbersVisible.apply(this, arguments) || this.colWeekNumbersVisible;
8659        };
8660        return SubClass;
8661    }(SuperClass));
8662}
8663
8664
8665/***/ }),
8666/* 68 */
8667/***/ (function(module, exports, __webpack_require__) {
8668
8669Object.defineProperty(exports, "__esModule", { value: true });
8670var tslib_1 = __webpack_require__(2);
8671var UnzonedRange_1 = __webpack_require__(5);
8672var DateProfileGenerator_1 = __webpack_require__(55);
8673var BasicViewDateProfileGenerator = /** @class */ (function (_super) {
8674    tslib_1.__extends(BasicViewDateProfileGenerator, _super);
8675    function BasicViewDateProfileGenerator() {
8676        return _super !== null && _super.apply(this, arguments) || this;
8677    }
8678    // Computes the date range that will be rendered.
8679    BasicViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) {
8680        var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay); // an UnzonedRange
8681        var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay);
8682        var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay);
8683        // year and month views should be aligned with weeks. this is already done for week
8684        if (/^(year|month)$/.test(currentRangeUnit)) {
8685            start.startOf('week');
8686            // make end-of-week if not already
8687            if (end.weekday()) {
8688                end.add(1, 'week').startOf('week'); // exclusively move backwards
8689            }
8690        }
8691        return new UnzonedRange_1.default(start, end);
8692    };
8693    return BasicViewDateProfileGenerator;
8694}(DateProfileGenerator_1.default));
8695exports.default = BasicViewDateProfileGenerator;
8696
8697
8698/***/ }),
8699/* 69 */,
8700/* 70 */,
8701/* 71 */,
8702/* 72 */,
8703/* 73 */,
8704/* 74 */,
8705/* 75 */,
8706/* 76 */,
8707/* 77 */,
8708/* 78 */,
8709/* 79 */,
8710/* 80 */,
8711/* 81 */,
8712/* 82 */,
8713/* 83 */,
8714/* 84 */,
8715/* 85 */,
8716/* 86 */,
8717/* 87 */,
8718/* 88 */,
8719/* 89 */,
8720/* 90 */,
8721/* 91 */,
8722/* 92 */,
8723/* 93 */,
8724/* 94 */,
8725/* 95 */,
8726/* 96 */,
8727/* 97 */,
8728/* 98 */,
8729/* 99 */,
8730/* 100 */,
8731/* 101 */,
8732/* 102 */,
8733/* 103 */,
8734/* 104 */,
8735/* 105 */,
8736/* 106 */,
8737/* 107 */,
8738/* 108 */,
8739/* 109 */,
8740/* 110 */,
8741/* 111 */,
8742/* 112 */,
8743/* 113 */,
8744/* 114 */,
8745/* 115 */,
8746/* 116 */,
8747/* 117 */,
8748/* 118 */,
8749/* 119 */,
8750/* 120 */,
8751/* 121 */,
8752/* 122 */,
8753/* 123 */,
8754/* 124 */,
8755/* 125 */,
8756/* 126 */,
8757/* 127 */,
8758/* 128 */,
8759/* 129 */,
8760/* 130 */,
8761/* 131 */,
8762/* 132 */,
8763/* 133 */,
8764/* 134 */,
8765/* 135 */,
8766/* 136 */,
8767/* 137 */,
8768/* 138 */,
8769/* 139 */,
8770/* 140 */,
8771/* 141 */,
8772/* 142 */,
8773/* 143 */,
8774/* 144 */,
8775/* 145 */,
8776/* 146 */,
8777/* 147 */,
8778/* 148 */,
8779/* 149 */,
8780/* 150 */,
8781/* 151 */,
8782/* 152 */,
8783/* 153 */,
8784/* 154 */,
8785/* 155 */,
8786/* 156 */,
8787/* 157 */,
8788/* 158 */,
8789/* 159 */,
8790/* 160 */,
8791/* 161 */,
8792/* 162 */,
8793/* 163 */,
8794/* 164 */,
8795/* 165 */,
8796/* 166 */,
8797/* 167 */,
8798/* 168 */,
8799/* 169 */,
8800/* 170 */,
8801/* 171 */,
8802/* 172 */,
8803/* 173 */,
8804/* 174 */,
8805/* 175 */,
8806/* 176 */,
8807/* 177 */,
8808/* 178 */,
8809/* 179 */,
8810/* 180 */,
8811/* 181 */,
8812/* 182 */,
8813/* 183 */,
8814/* 184 */,
8815/* 185 */,
8816/* 186 */,
8817/* 187 */,
8818/* 188 */,
8819/* 189 */,
8820/* 190 */,
8821/* 191 */,
8822/* 192 */,
8823/* 193 */,
8824/* 194 */,
8825/* 195 */,
8826/* 196 */,
8827/* 197 */,
8828/* 198 */,
8829/* 199 */,
8830/* 200 */,
8831/* 201 */,
8832/* 202 */,
8833/* 203 */,
8834/* 204 */,
8835/* 205 */,
8836/* 206 */,
8837/* 207 */,
8838/* 208 */,
8839/* 209 */,
8840/* 210 */,
8841/* 211 */,
8842/* 212 */,
8843/* 213 */,
8844/* 214 */,
8845/* 215 */,
8846/* 216 */,
8847/* 217 */
8848/***/ (function(module, exports, __webpack_require__) {
8849
8850Object.defineProperty(exports, "__esModule", { value: true });
8851var UnzonedRange_1 = __webpack_require__(5);
8852var ComponentFootprint_1 = __webpack_require__(12);
8853var EventDefParser_1 = __webpack_require__(36);
8854var EventSource_1 = __webpack_require__(6);
8855var util_1 = __webpack_require__(19);
8856var Constraints = /** @class */ (function () {
8857    function Constraints(eventManager, _calendar) {
8858        this.eventManager = eventManager;
8859        this._calendar = _calendar;
8860    }
8861    Constraints.prototype.opt = function (name) {
8862        return this._calendar.opt(name);
8863    };
8864    /*
8865    determines if eventInstanceGroup is allowed,
8866    in relation to other EVENTS and business hours.
8867    */
8868    Constraints.prototype.isEventInstanceGroupAllowed = function (eventInstanceGroup) {
8869        var eventDef = eventInstanceGroup.getEventDef();
8870        var eventFootprints = this.eventRangesToEventFootprints(eventInstanceGroup.getAllEventRanges());
8871        var i;
8872        var peerEventInstances = this.getPeerEventInstances(eventDef);
8873        var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange);
8874        var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges);
8875        var constraintVal = eventDef.getConstraint();
8876        var overlapVal = eventDef.getOverlap();
8877        var eventAllowFunc = this.opt('eventAllow');
8878        for (i = 0; i < eventFootprints.length; i++) {
8879            if (!this.isFootprintAllowed(eventFootprints[i].componentFootprint, peerEventFootprints, constraintVal, overlapVal, eventFootprints[i].eventInstance)) {
8880                return false;
8881            }
8882        }
8883        if (eventAllowFunc) {
8884            for (i = 0; i < eventFootprints.length; i++) {
8885                if (eventAllowFunc(eventFootprints[i].componentFootprint.toLegacy(this._calendar), eventFootprints[i].getEventLegacy()) === false) {
8886                    return false;
8887                }
8888            }
8889        }
8890        return true;
8891    };
8892    Constraints.prototype.getPeerEventInstances = function (eventDef) {
8893        return this.eventManager.getEventInstancesWithoutId(eventDef.id);
8894    };
8895    Constraints.prototype.isSelectionFootprintAllowed = function (componentFootprint) {
8896        var peerEventInstances = this.eventManager.getEventInstances();
8897        var peerEventRanges = peerEventInstances.map(util_1.eventInstanceToEventRange);
8898        var peerEventFootprints = this.eventRangesToEventFootprints(peerEventRanges);
8899        var selectAllowFunc;
8900        if (this.isFootprintAllowed(componentFootprint, peerEventFootprints, this.opt('selectConstraint'), this.opt('selectOverlap'))) {
8901            selectAllowFunc = this.opt('selectAllow');
8902            if (selectAllowFunc) {
8903                return selectAllowFunc(componentFootprint.toLegacy(this._calendar)) !== false;
8904            }
8905            else {
8906                return true;
8907            }
8908        }
8909        return false;
8910    };
8911    Constraints.prototype.isFootprintAllowed = function (componentFootprint, peerEventFootprints, constraintVal, overlapVal, subjectEventInstance // optional
8912    ) {
8913        var constraintFootprints; // ComponentFootprint[]
8914        var overlapEventFootprints; // EventFootprint[]
8915        if (constraintVal != null) {
8916            constraintFootprints = this.constraintValToFootprints(constraintVal, componentFootprint.isAllDay);
8917            if (!this.isFootprintWithinConstraints(componentFootprint, constraintFootprints)) {
8918                return false;
8919            }
8920        }
8921        overlapEventFootprints = this.collectOverlapEventFootprints(peerEventFootprints, componentFootprint);
8922        if (overlapVal === false) {
8923            if (overlapEventFootprints.length) {
8924                return false;
8925            }
8926        }
8927        else if (typeof overlapVal === 'function') {
8928            if (!isOverlapsAllowedByFunc(overlapEventFootprints, overlapVal, subjectEventInstance)) {
8929                return false;
8930            }
8931        }
8932        if (subjectEventInstance) {
8933            if (!isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance)) {
8934                return false;
8935            }
8936        }
8937        return true;
8938    };
8939    // Constraint
8940    // ------------------------------------------------------------------------------------------------
8941    Constraints.prototype.isFootprintWithinConstraints = function (componentFootprint, constraintFootprints) {
8942        var i;
8943        for (i = 0; i < constraintFootprints.length; i++) {
8944            if (this.footprintContainsFootprint(constraintFootprints[i], componentFootprint)) {
8945                return true;
8946            }
8947        }
8948        return false;
8949    };
8950    Constraints.prototype.constraintValToFootprints = function (constraintVal, isAllDay) {
8951        var eventInstances;
8952        if (constraintVal === 'businessHours') {
8953            return this.buildCurrentBusinessFootprints(isAllDay);
8954        }
8955        else if (typeof constraintVal === 'object') {
8956            eventInstances = this.parseEventDefToInstances(constraintVal); // handles recurring events
8957            if (!eventInstances) { // invalid input. fallback to parsing footprint directly
8958                return this.parseFootprints(constraintVal);
8959            }
8960            else {
8961                return this.eventInstancesToFootprints(eventInstances);
8962            }
8963        }
8964        else if (constraintVal != null) { // an ID
8965            eventInstances = this.eventManager.getEventInstancesWithId(constraintVal);
8966            return this.eventInstancesToFootprints(eventInstances);
8967        }
8968    };
8969    // returns ComponentFootprint[]
8970    // uses current view's range
8971    Constraints.prototype.buildCurrentBusinessFootprints = function (isAllDay) {
8972        var view = this._calendar.view;
8973        var businessHourGenerator = view.get('businessHourGenerator');
8974        var unzonedRange = view.dateProfile.activeUnzonedRange;
8975        var eventInstanceGroup = businessHourGenerator.buildEventInstanceGroup(isAllDay, unzonedRange);
8976        if (eventInstanceGroup) {
8977            return this.eventInstancesToFootprints(eventInstanceGroup.eventInstances);
8978        }
8979        else {
8980            return [];
8981        }
8982    };
8983    // conversion util
8984    Constraints.prototype.eventInstancesToFootprints = function (eventInstances) {
8985        var eventRanges = eventInstances.map(util_1.eventInstanceToEventRange);
8986        var eventFootprints = this.eventRangesToEventFootprints(eventRanges);
8987        return eventFootprints.map(util_1.eventFootprintToComponentFootprint);
8988    };
8989    // Overlap
8990    // ------------------------------------------------------------------------------------------------
8991    Constraints.prototype.collectOverlapEventFootprints = function (peerEventFootprints, targetFootprint) {
8992        var overlapEventFootprints = [];
8993        var i;
8994        for (i = 0; i < peerEventFootprints.length; i++) {
8995            if (this.footprintsIntersect(targetFootprint, peerEventFootprints[i].componentFootprint)) {
8996                overlapEventFootprints.push(peerEventFootprints[i]);
8997            }
8998        }
8999        return overlapEventFootprints;
9000    };
9001    // Conversion: eventDefs -> eventInstances -> eventRanges -> eventFootprints -> componentFootprints
9002    // ------------------------------------------------------------------------------------------------
9003    // NOTE: this might seem like repetitive code with the Grid class, however, this code is related to
9004    // constraints whereas the Grid code is related to rendering. Each approach might want to convert
9005    // eventRanges -> eventFootprints in a different way. Regardless, there are opportunities to make
9006    // this more DRY.
9007    /*
9008    Returns false on invalid input.
9009    */
9010    Constraints.prototype.parseEventDefToInstances = function (eventInput) {
9011        var eventManager = this.eventManager;
9012        var eventDef = EventDefParser_1.default.parse(eventInput, new EventSource_1.default(this._calendar));
9013        if (!eventDef) { // invalid
9014            return false;
9015        }
9016        return eventDef.buildInstances(eventManager.currentPeriod.unzonedRange);
9017    };
9018    Constraints.prototype.eventRangesToEventFootprints = function (eventRanges) {
9019        var i;
9020        var eventFootprints = [];
9021        for (i = 0; i < eventRanges.length; i++) {
9022            eventFootprints.push.apply(// footprints
9023            eventFootprints, this.eventRangeToEventFootprints(eventRanges[i]));
9024        }
9025        return eventFootprints;
9026    };
9027    Constraints.prototype.eventRangeToEventFootprints = function (eventRange) {
9028        return [util_1.eventRangeToEventFootprint(eventRange)];
9029    };
9030    /*
9031    Parses footprints directly.
9032    Very similar to EventDateProfile::parse :(
9033    */
9034    Constraints.prototype.parseFootprints = function (rawInput) {
9035        var start;
9036        var end;
9037        if (rawInput.start) {
9038            start = this._calendar.moment(rawInput.start);
9039            if (!start.isValid()) {
9040                start = null;
9041            }
9042        }
9043        if (rawInput.end) {
9044            end = this._calendar.moment(rawInput.end);
9045            if (!end.isValid()) {
9046                end = null;
9047            }
9048        }
9049        return [
9050            new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), (start && !start.hasTime()) || (end && !end.hasTime()) // isAllDay
9051            )
9052        ];
9053    };
9054    // Footprint Utils
9055    // ----------------------------------------------------------------------------------------
9056    Constraints.prototype.footprintContainsFootprint = function (outerFootprint, innerFootprint) {
9057        return outerFootprint.unzonedRange.containsRange(innerFootprint.unzonedRange);
9058    };
9059    Constraints.prototype.footprintsIntersect = function (footprint0, footprint1) {
9060        return footprint0.unzonedRange.intersectsWith(footprint1.unzonedRange);
9061    };
9062    return Constraints;
9063}());
9064exports.default = Constraints;
9065// optional subjectEventInstance
9066function isOverlapsAllowedByFunc(overlapEventFootprints, overlapFunc, subjectEventInstance) {
9067    var i;
9068    for (i = 0; i < overlapEventFootprints.length; i++) {
9069        if (!overlapFunc(overlapEventFootprints[i].eventInstance.toLegacy(), subjectEventInstance ? subjectEventInstance.toLegacy() : null)) {
9070            return false;
9071        }
9072    }
9073    return true;
9074}
9075function isOverlapEventInstancesAllowed(overlapEventFootprints, subjectEventInstance) {
9076    var subjectLegacyInstance = subjectEventInstance.toLegacy();
9077    var i;
9078    var overlapEventInstance;
9079    var overlapEventDef;
9080    var overlapVal;
9081    for (i = 0; i < overlapEventFootprints.length; i++) {
9082        overlapEventInstance = overlapEventFootprints[i].eventInstance;
9083        overlapEventDef = overlapEventInstance.def;
9084        // don't need to pass in calendar, because don't want to consider global eventOverlap property,
9085        // because we already considered that earlier in the process.
9086        overlapVal = overlapEventDef.getOverlap();
9087        if (overlapVal === false) {
9088            return false;
9089        }
9090        else if (typeof overlapVal === 'function') {
9091            if (!overlapVal(overlapEventInstance.toLegacy(), subjectLegacyInstance)) {
9092                return false;
9093            }
9094        }
9095    }
9096    return true;
9097}
9098
9099
9100/***/ }),
9101/* 218 */
9102/***/ (function(module, exports, __webpack_require__) {
9103
9104Object.defineProperty(exports, "__esModule", { value: true });
9105var $ = __webpack_require__(3);
9106var util_1 = __webpack_require__(19);
9107var EventInstanceGroup_1 = __webpack_require__(20);
9108var RecurringEventDef_1 = __webpack_require__(54);
9109var EventSource_1 = __webpack_require__(6);
9110var BUSINESS_HOUR_EVENT_DEFAULTS = {
9111    start: '09:00',
9112    end: '17:00',
9113    dow: [1, 2, 3, 4, 5],
9114    rendering: 'inverse-background'
9115    // classNames are defined in businessHoursSegClasses
9116};
9117var BusinessHourGenerator = /** @class */ (function () {
9118    function BusinessHourGenerator(rawComplexDef, calendar) {
9119        this.rawComplexDef = rawComplexDef;
9120        this.calendar = calendar;
9121    }
9122    BusinessHourGenerator.prototype.buildEventInstanceGroup = function (isAllDay, unzonedRange) {
9123        var eventDefs = this.buildEventDefs(isAllDay);
9124        var eventInstanceGroup;
9125        if (eventDefs.length) {
9126            eventInstanceGroup = new EventInstanceGroup_1.default(util_1.eventDefsToEventInstances(eventDefs, unzonedRange));
9127            // so that inverse-background rendering can happen even when no eventRanges in view
9128            eventInstanceGroup.explicitEventDef = eventDefs[0];
9129            return eventInstanceGroup;
9130        }
9131    };
9132    BusinessHourGenerator.prototype.buildEventDefs = function (isAllDay) {
9133        var rawComplexDef = this.rawComplexDef;
9134        var rawDefs = [];
9135        var requireDow = false;
9136        var i;
9137        var defs = [];
9138        if (rawComplexDef === true) {
9139            rawDefs = [{}]; // will get BUSINESS_HOUR_EVENT_DEFAULTS verbatim
9140        }
9141        else if ($.isPlainObject(rawComplexDef)) {
9142            rawDefs = [rawComplexDef];
9143        }
9144        else if ($.isArray(rawComplexDef)) {
9145            rawDefs = rawComplexDef;
9146            requireDow = true; // every sub-definition NEEDS a day-of-week
9147        }
9148        for (i = 0; i < rawDefs.length; i++) {
9149            if (!requireDow || rawDefs[i].dow) {
9150                defs.push(this.buildEventDef(isAllDay, rawDefs[i]));
9151            }
9152        }
9153        return defs;
9154    };
9155    BusinessHourGenerator.prototype.buildEventDef = function (isAllDay, rawDef) {
9156        var fullRawDef = $.extend({}, BUSINESS_HOUR_EVENT_DEFAULTS, rawDef);
9157        if (isAllDay) {
9158            fullRawDef.start = null;
9159            fullRawDef.end = null;
9160        }
9161        return RecurringEventDef_1.default.parse(fullRawDef, new EventSource_1.default(this.calendar) // dummy source
9162        );
9163    };
9164    return BusinessHourGenerator;
9165}());
9166exports.default = BusinessHourGenerator;
9167
9168
9169/***/ }),
9170/* 219 */
9171/***/ (function(module, exports, __webpack_require__) {
9172
9173Object.defineProperty(exports, "__esModule", { value: true });
9174var $ = __webpack_require__(3);
9175var util_1 = __webpack_require__(4);
9176var Promise_1 = __webpack_require__(21);
9177var EmitterMixin_1 = __webpack_require__(13);
9178var UnzonedRange_1 = __webpack_require__(5);
9179var EventInstanceGroup_1 = __webpack_require__(20);
9180var EventPeriod = /** @class */ (function () {
9181    function EventPeriod(start, end, timezone) {
9182        this.pendingCnt = 0;
9183        this.freezeDepth = 0;
9184        this.stuntedReleaseCnt = 0;
9185        this.releaseCnt = 0;
9186        this.start = start;
9187        this.end = end;
9188        this.timezone = timezone;
9189        this.unzonedRange = new UnzonedRange_1.default(start.clone().stripZone(), end.clone().stripZone());
9190        this.requestsByUid = {};
9191        this.eventDefsByUid = {};
9192        this.eventDefsById = {};
9193        this.eventInstanceGroupsById = {};
9194    }
9195    EventPeriod.prototype.isWithinRange = function (start, end) {
9196        // TODO: use a range util function?
9197        return !start.isBefore(this.start) && !end.isAfter(this.end);
9198    };
9199    // Requesting and Purging
9200    // -----------------------------------------------------------------------------------------------------------------
9201    EventPeriod.prototype.requestSources = function (sources) {
9202        this.freeze();
9203        for (var i = 0; i < sources.length; i++) {
9204            this.requestSource(sources[i]);
9205        }
9206        this.thaw();
9207    };
9208    EventPeriod.prototype.requestSource = function (source) {
9209        var _this = this;
9210        var request = { source: source, status: 'pending', eventDefs: null };
9211        this.requestsByUid[source.uid] = request;
9212        this.pendingCnt += 1;
9213        source.fetch(this.start, this.end, this.timezone).then(function (eventDefs) {
9214            if (request.status !== 'cancelled') {
9215                request.status = 'completed';
9216                request.eventDefs = eventDefs;
9217                _this.addEventDefs(eventDefs);
9218                _this.pendingCnt--;
9219                _this.tryRelease();
9220            }
9221        }, function () {
9222            if (request.status !== 'cancelled') {
9223                request.status = 'failed';
9224                _this.pendingCnt--;
9225                _this.tryRelease();
9226            }
9227        });
9228    };
9229    EventPeriod.prototype.purgeSource = function (source) {
9230        var request = this.requestsByUid[source.uid];
9231        if (request) {
9232            delete this.requestsByUid[source.uid];
9233            if (request.status === 'pending') {
9234                request.status = 'cancelled';
9235                this.pendingCnt--;
9236                this.tryRelease();
9237            }
9238            else if (request.status === 'completed') {
9239                request.eventDefs.forEach(this.removeEventDef.bind(this));
9240            }
9241        }
9242    };
9243    EventPeriod.prototype.purgeAllSources = function () {
9244        var requestsByUid = this.requestsByUid;
9245        var uid;
9246        var request;
9247        var completedCnt = 0;
9248        for (uid in requestsByUid) {
9249            request = requestsByUid[uid];
9250            if (request.status === 'pending') {
9251                request.status = 'cancelled';
9252            }
9253            else if (request.status === 'completed') {
9254                completedCnt++;
9255            }
9256        }
9257        this.requestsByUid = {};
9258        this.pendingCnt = 0;
9259        if (completedCnt) {
9260            this.removeAllEventDefs(); // might release
9261        }
9262    };
9263    // Event Definitions
9264    // -----------------------------------------------------------------------------------------------------------------
9265    EventPeriod.prototype.getEventDefByUid = function (eventDefUid) {
9266        return this.eventDefsByUid[eventDefUid];
9267    };
9268    EventPeriod.prototype.getEventDefsById = function (eventDefId) {
9269        var a = this.eventDefsById[eventDefId];
9270        if (a) {
9271            return a.slice(); // clone
9272        }
9273        return [];
9274    };
9275    EventPeriod.prototype.addEventDefs = function (eventDefs) {
9276        for (var i = 0; i < eventDefs.length; i++) {
9277            this.addEventDef(eventDefs[i]);
9278        }
9279    };
9280    EventPeriod.prototype.addEventDef = function (eventDef) {
9281        var eventDefsById = this.eventDefsById;
9282        var eventDefId = eventDef.id;
9283        var eventDefs = eventDefsById[eventDefId] || (eventDefsById[eventDefId] = []);
9284        var eventInstances = eventDef.buildInstances(this.unzonedRange);
9285        var i;
9286        eventDefs.push(eventDef);
9287        this.eventDefsByUid[eventDef.uid] = eventDef;
9288        for (i = 0; i < eventInstances.length; i++) {
9289            this.addEventInstance(eventInstances[i], eventDefId);
9290        }
9291    };
9292    EventPeriod.prototype.removeEventDefsById = function (eventDefId) {
9293        var _this = this;
9294        this.getEventDefsById(eventDefId).forEach(function (eventDef) {
9295            _this.removeEventDef(eventDef);
9296        });
9297    };
9298    EventPeriod.prototype.removeAllEventDefs = function () {
9299        var isEmpty = $.isEmptyObject(this.eventDefsByUid);
9300        this.eventDefsByUid = {};
9301        this.eventDefsById = {};
9302        this.eventInstanceGroupsById = {};
9303        if (!isEmpty) {
9304            this.tryRelease();
9305        }
9306    };
9307    EventPeriod.prototype.removeEventDef = function (eventDef) {
9308        var eventDefsById = this.eventDefsById;
9309        var eventDefs = eventDefsById[eventDef.id];
9310        delete this.eventDefsByUid[eventDef.uid];
9311        if (eventDefs) {
9312            util_1.removeExact(eventDefs, eventDef);
9313            if (!eventDefs.length) {
9314                delete eventDefsById[eventDef.id];
9315            }
9316            this.removeEventInstancesForDef(eventDef);
9317        }
9318    };
9319    // Event Instances
9320    // -----------------------------------------------------------------------------------------------------------------
9321    EventPeriod.prototype.getEventInstances = function () {
9322        var eventInstanceGroupsById = this.eventInstanceGroupsById;
9323        var eventInstances = [];
9324        var id;
9325        for (id in eventInstanceGroupsById) {
9326            eventInstances.push.apply(eventInstances, // append
9327            eventInstanceGroupsById[id].eventInstances);
9328        }
9329        return eventInstances;
9330    };
9331    EventPeriod.prototype.getEventInstancesWithId = function (eventDefId) {
9332        var eventInstanceGroup = this.eventInstanceGroupsById[eventDefId];
9333        if (eventInstanceGroup) {
9334            return eventInstanceGroup.eventInstances.slice(); // clone
9335        }
9336        return [];
9337    };
9338    EventPeriod.prototype.getEventInstancesWithoutId = function (eventDefId) {
9339        var eventInstanceGroupsById = this.eventInstanceGroupsById;
9340        var matchingInstances = [];
9341        var id;
9342        for (id in eventInstanceGroupsById) {
9343            if (id !== eventDefId) {
9344                matchingInstances.push.apply(matchingInstances, // append
9345                eventInstanceGroupsById[id].eventInstances);
9346            }
9347        }
9348        return matchingInstances;
9349    };
9350    EventPeriod.prototype.addEventInstance = function (eventInstance, eventDefId) {
9351        var eventInstanceGroupsById = this.eventInstanceGroupsById;
9352        var eventInstanceGroup = eventInstanceGroupsById[eventDefId] ||
9353            (eventInstanceGroupsById[eventDefId] = new EventInstanceGroup_1.default());
9354        eventInstanceGroup.eventInstances.push(eventInstance);
9355        this.tryRelease();
9356    };
9357    EventPeriod.prototype.removeEventInstancesForDef = function (eventDef) {
9358        var eventInstanceGroupsById = this.eventInstanceGroupsById;
9359        var eventInstanceGroup = eventInstanceGroupsById[eventDef.id];
9360        var removeCnt;
9361        if (eventInstanceGroup) {
9362            removeCnt = util_1.removeMatching(eventInstanceGroup.eventInstances, function (currentEventInstance) {
9363                return currentEventInstance.def === eventDef;
9364            });
9365            if (!eventInstanceGroup.eventInstances.length) {
9366                delete eventInstanceGroupsById[eventDef.id];
9367            }
9368            if (removeCnt) {
9369                this.tryRelease();
9370            }
9371        }
9372    };
9373    // Releasing and Freezing
9374    // -----------------------------------------------------------------------------------------------------------------
9375    EventPeriod.prototype.tryRelease = function () {
9376        if (!this.pendingCnt) {
9377            if (!this.freezeDepth) {
9378                this.release();
9379            }
9380            else {
9381                this.stuntedReleaseCnt++;
9382            }
9383        }
9384    };
9385    EventPeriod.prototype.release = function () {
9386        this.releaseCnt++;
9387        this.trigger('release', this.eventInstanceGroupsById);
9388    };
9389    EventPeriod.prototype.whenReleased = function () {
9390        var _this = this;
9391        if (this.releaseCnt) {
9392            return Promise_1.default.resolve(this.eventInstanceGroupsById);
9393        }
9394        else {
9395            return Promise_1.default.construct(function (onResolve) {
9396                _this.one('release', onResolve);
9397            });
9398        }
9399    };
9400    EventPeriod.prototype.freeze = function () {
9401        if (!(this.freezeDepth++)) {
9402            this.stuntedReleaseCnt = 0;
9403        }
9404    };
9405    EventPeriod.prototype.thaw = function () {
9406        if (!(--this.freezeDepth) && this.stuntedReleaseCnt && !this.pendingCnt) {
9407            this.release();
9408        }
9409    };
9410    return EventPeriod;
9411}());
9412exports.default = EventPeriod;
9413EmitterMixin_1.default.mixInto(EventPeriod);
9414
9415
9416/***/ }),
9417/* 220 */
9418/***/ (function(module, exports, __webpack_require__) {
9419
9420Object.defineProperty(exports, "__esModule", { value: true });
9421var $ = __webpack_require__(3);
9422var util_1 = __webpack_require__(4);
9423var EventPeriod_1 = __webpack_require__(219);
9424var ArrayEventSource_1 = __webpack_require__(56);
9425var EventSource_1 = __webpack_require__(6);
9426var EventSourceParser_1 = __webpack_require__(38);
9427var SingleEventDef_1 = __webpack_require__(9);
9428var EventInstanceGroup_1 = __webpack_require__(20);
9429var EmitterMixin_1 = __webpack_require__(13);
9430var ListenerMixin_1 = __webpack_require__(7);
9431var EventManager = /** @class */ (function () {
9432    function EventManager(calendar) {
9433        this.calendar = calendar;
9434        this.stickySource = new ArrayEventSource_1.default(calendar);
9435        this.otherSources = [];
9436    }
9437    EventManager.prototype.requestEvents = function (start, end, timezone, force) {
9438        if (force ||
9439            !this.currentPeriod ||
9440            !this.currentPeriod.isWithinRange(start, end) ||
9441            timezone !== this.currentPeriod.timezone) {
9442            this.setPeriod(// will change this.currentPeriod
9443            new EventPeriod_1.default(start, end, timezone));
9444        }
9445        return this.currentPeriod.whenReleased();
9446    };
9447    // Source Adding/Removing
9448    // -----------------------------------------------------------------------------------------------------------------
9449    EventManager.prototype.addSource = function (eventSource) {
9450        this.otherSources.push(eventSource);
9451        if (this.currentPeriod) {
9452            this.currentPeriod.requestSource(eventSource); // might release
9453        }
9454    };
9455    EventManager.prototype.removeSource = function (doomedSource) {
9456        util_1.removeExact(this.otherSources, doomedSource);
9457        if (this.currentPeriod) {
9458            this.currentPeriod.purgeSource(doomedSource); // might release
9459        }
9460    };
9461    EventManager.prototype.removeAllSources = function () {
9462        this.otherSources = [];
9463        if (this.currentPeriod) {
9464            this.currentPeriod.purgeAllSources(); // might release
9465        }
9466    };
9467    // Source Refetching
9468    // -----------------------------------------------------------------------------------------------------------------
9469    EventManager.prototype.refetchSource = function (eventSource) {
9470        var currentPeriod = this.currentPeriod;
9471        if (currentPeriod) {
9472            currentPeriod.freeze();
9473            currentPeriod.purgeSource(eventSource);
9474            currentPeriod.requestSource(eventSource);
9475            currentPeriod.thaw();
9476        }
9477    };
9478    EventManager.prototype.refetchAllSources = function () {
9479        var currentPeriod = this.currentPeriod;
9480        if (currentPeriod) {
9481            currentPeriod.freeze();
9482            currentPeriod.purgeAllSources();
9483            currentPeriod.requestSources(this.getSources());
9484            currentPeriod.thaw();
9485        }
9486    };
9487    // Source Querying
9488    // -----------------------------------------------------------------------------------------------------------------
9489    EventManager.prototype.getSources = function () {
9490        return [this.stickySource].concat(this.otherSources);
9491    };
9492    // like querySources, but accepts multple match criteria (like multiple IDs)
9493    EventManager.prototype.multiQuerySources = function (matchInputs) {
9494        // coerce into an array
9495        if (!matchInputs) {
9496            matchInputs = [];
9497        }
9498        else if (!$.isArray(matchInputs)) {
9499            matchInputs = [matchInputs];
9500        }
9501        var matchingSources = [];
9502        var i;
9503        // resolve raw inputs to real event source objects
9504        for (i = 0; i < matchInputs.length; i++) {
9505            matchingSources.push.apply(// append
9506            matchingSources, this.querySources(matchInputs[i]));
9507        }
9508        return matchingSources;
9509    };
9510    // matchInput can either by a real event source object, an ID, or the function/URL for the source.
9511    // returns an array of matching source objects.
9512    EventManager.prototype.querySources = function (matchInput) {
9513        var sources = this.otherSources;
9514        var i;
9515        var source;
9516        // given a proper event source object
9517        for (i = 0; i < sources.length; i++) {
9518            source = sources[i];
9519            if (source === matchInput) {
9520                return [source];
9521            }
9522        }
9523        // an ID match
9524        source = this.getSourceById(EventSource_1.default.normalizeId(matchInput));
9525        if (source) {
9526            return [source];
9527        }
9528        // parse as an event source
9529        matchInput = EventSourceParser_1.default.parse(matchInput, this.calendar);
9530        if (matchInput) {
9531            return $.grep(sources, function (source) {
9532                return isSourcesEquivalent(matchInput, source);
9533            });
9534        }
9535    };
9536    /*
9537    ID assumed to already be normalized
9538    */
9539    EventManager.prototype.getSourceById = function (id) {
9540        return $.grep(this.otherSources, function (source) {
9541            return source.id && source.id === id;
9542        })[0];
9543    };
9544    // Event-Period
9545    // -----------------------------------------------------------------------------------------------------------------
9546    EventManager.prototype.setPeriod = function (eventPeriod) {
9547        if (this.currentPeriod) {
9548            this.unbindPeriod(this.currentPeriod);
9549            this.currentPeriod = null;
9550        }
9551        this.currentPeriod = eventPeriod;
9552        this.bindPeriod(eventPeriod);
9553        eventPeriod.requestSources(this.getSources());
9554    };
9555    EventManager.prototype.bindPeriod = function (eventPeriod) {
9556        this.listenTo(eventPeriod, 'release', function (eventsPayload) {
9557            this.trigger('release', eventsPayload);
9558        });
9559    };
9560    EventManager.prototype.unbindPeriod = function (eventPeriod) {
9561        this.stopListeningTo(eventPeriod);
9562    };
9563    // Event Getting/Adding/Removing
9564    // -----------------------------------------------------------------------------------------------------------------
9565    EventManager.prototype.getEventDefByUid = function (uid) {
9566        if (this.currentPeriod) {
9567            return this.currentPeriod.getEventDefByUid(uid);
9568        }
9569    };
9570    EventManager.prototype.addEventDef = function (eventDef, isSticky) {
9571        if (isSticky) {
9572            this.stickySource.addEventDef(eventDef);
9573        }
9574        if (this.currentPeriod) {
9575            this.currentPeriod.addEventDef(eventDef); // might release
9576        }
9577    };
9578    EventManager.prototype.removeEventDefsById = function (eventId) {
9579        this.getSources().forEach(function (eventSource) {
9580            eventSource.removeEventDefsById(eventId);
9581        });
9582        if (this.currentPeriod) {
9583            this.currentPeriod.removeEventDefsById(eventId); // might release
9584        }
9585    };
9586    EventManager.prototype.removeAllEventDefs = function () {
9587        this.getSources().forEach(function (eventSource) {
9588            eventSource.removeAllEventDefs();
9589        });
9590        if (this.currentPeriod) {
9591            this.currentPeriod.removeAllEventDefs();
9592        }
9593    };
9594    // Event Mutating
9595    // -----------------------------------------------------------------------------------------------------------------
9596    /*
9597    Returns an undo function.
9598    */
9599    EventManager.prototype.mutateEventsWithId = function (eventDefId, eventDefMutation) {
9600        var currentPeriod = this.currentPeriod;
9601        var eventDefs;
9602        var undoFuncs = [];
9603        if (currentPeriod) {
9604            currentPeriod.freeze();
9605            eventDefs = currentPeriod.getEventDefsById(eventDefId);
9606            eventDefs.forEach(function (eventDef) {
9607                // add/remove esp because id might change
9608                currentPeriod.removeEventDef(eventDef);
9609                undoFuncs.push(eventDefMutation.mutateSingle(eventDef));
9610                currentPeriod.addEventDef(eventDef);
9611            });
9612            currentPeriod.thaw();
9613            return function () {
9614                currentPeriod.freeze();
9615                for (var i = 0; i < eventDefs.length; i++) {
9616                    currentPeriod.removeEventDef(eventDefs[i]);
9617                    undoFuncs[i]();
9618                    currentPeriod.addEventDef(eventDefs[i]);
9619                }
9620                currentPeriod.thaw();
9621            };
9622        }
9623        return function () { };
9624    };
9625    /*
9626    copies and then mutates
9627    */
9628    EventManager.prototype.buildMutatedEventInstanceGroup = function (eventDefId, eventDefMutation) {
9629        var eventDefs = this.getEventDefsById(eventDefId);
9630        var i;
9631        var defCopy;
9632        var allInstances = [];
9633        for (i = 0; i < eventDefs.length; i++) {
9634            defCopy = eventDefs[i].clone();
9635            if (defCopy instanceof SingleEventDef_1.default) {
9636                eventDefMutation.mutateSingle(defCopy);
9637                allInstances.push.apply(allInstances, // append
9638                defCopy.buildInstances());
9639            }
9640        }
9641        return new EventInstanceGroup_1.default(allInstances);
9642    };
9643    // Freezing
9644    // -----------------------------------------------------------------------------------------------------------------
9645    EventManager.prototype.freeze = function () {
9646        if (this.currentPeriod) {
9647            this.currentPeriod.freeze();
9648        }
9649    };
9650    EventManager.prototype.thaw = function () {
9651        if (this.currentPeriod) {
9652            this.currentPeriod.thaw();
9653        }
9654    };
9655    // methods that simply forward to EventPeriod
9656    EventManager.prototype.getEventDefsById = function (eventDefId) {
9657        return this.currentPeriod.getEventDefsById(eventDefId);
9658    };
9659    EventManager.prototype.getEventInstances = function () {
9660        return this.currentPeriod.getEventInstances();
9661    };
9662    EventManager.prototype.getEventInstancesWithId = function (eventDefId) {
9663        return this.currentPeriod.getEventInstancesWithId(eventDefId);
9664    };
9665    EventManager.prototype.getEventInstancesWithoutId = function (eventDefId) {
9666        return this.currentPeriod.getEventInstancesWithoutId(eventDefId);
9667    };
9668    return EventManager;
9669}());
9670exports.default = EventManager;
9671EmitterMixin_1.default.mixInto(EventManager);
9672ListenerMixin_1.default.mixInto(EventManager);
9673function isSourcesEquivalent(source0, source1) {
9674    return source0.getPrimitive() === source1.getPrimitive();
9675}
9676
9677
9678/***/ }),
9679/* 221 */
9680/***/ (function(module, exports, __webpack_require__) {
9681
9682Object.defineProperty(exports, "__esModule", { value: true });
9683var tslib_1 = __webpack_require__(2);
9684var Theme_1 = __webpack_require__(22);
9685var StandardTheme = /** @class */ (function (_super) {
9686    tslib_1.__extends(StandardTheme, _super);
9687    function StandardTheme() {
9688        return _super !== null && _super.apply(this, arguments) || this;
9689    }
9690    return StandardTheme;
9691}(Theme_1.default));
9692exports.default = StandardTheme;
9693StandardTheme.prototype.classes = {
9694    widget: 'fc-unthemed',
9695    widgetHeader: 'fc-widget-header',
9696    widgetContent: 'fc-widget-content',
9697    buttonGroup: 'fc-button-group',
9698    button: 'fc-button',
9699    cornerLeft: 'fc-corner-left',
9700    cornerRight: 'fc-corner-right',
9701    stateDefault: 'fc-state-default',
9702    stateActive: 'fc-state-active',
9703    stateDisabled: 'fc-state-disabled',
9704    stateHover: 'fc-state-hover',
9705    stateDown: 'fc-state-down',
9706    popoverHeader: 'fc-widget-header',
9707    popoverContent: 'fc-widget-content',
9708    // day grid
9709    headerRow: 'fc-widget-header',
9710    dayRow: 'fc-widget-content',
9711    // list view
9712    listView: 'fc-widget-content'
9713};
9714StandardTheme.prototype.baseIconClass = 'fc-icon';
9715StandardTheme.prototype.iconClasses = {
9716    close: 'fc-icon-x',
9717    prev: 'fc-icon-left-single-arrow',
9718    next: 'fc-icon-right-single-arrow',
9719    prevYear: 'fc-icon-left-double-arrow',
9720    nextYear: 'fc-icon-right-double-arrow'
9721};
9722StandardTheme.prototype.iconOverrideOption = 'buttonIcons';
9723StandardTheme.prototype.iconOverrideCustomButtonOption = 'icon';
9724StandardTheme.prototype.iconOverridePrefix = 'fc-icon-';
9725
9726
9727/***/ }),
9728/* 222 */
9729/***/ (function(module, exports, __webpack_require__) {
9730
9731Object.defineProperty(exports, "__esModule", { value: true });
9732var tslib_1 = __webpack_require__(2);
9733var Theme_1 = __webpack_require__(22);
9734var JqueryUiTheme = /** @class */ (function (_super) {
9735    tslib_1.__extends(JqueryUiTheme, _super);
9736    function JqueryUiTheme() {
9737        return _super !== null && _super.apply(this, arguments) || this;
9738    }
9739    return JqueryUiTheme;
9740}(Theme_1.default));
9741exports.default = JqueryUiTheme;
9742JqueryUiTheme.prototype.classes = {
9743    widget: 'ui-widget',
9744    widgetHeader: 'ui-widget-header',
9745    widgetContent: 'ui-widget-content',
9746    buttonGroup: 'fc-button-group',
9747    button: 'ui-button',
9748    cornerLeft: 'ui-corner-left',
9749    cornerRight: 'ui-corner-right',
9750    stateDefault: 'ui-state-default',
9751    stateActive: 'ui-state-active',
9752    stateDisabled: 'ui-state-disabled',
9753    stateHover: 'ui-state-hover',
9754    stateDown: 'ui-state-down',
9755    today: 'ui-state-highlight',
9756    popoverHeader: 'ui-widget-header',
9757    popoverContent: 'ui-widget-content',
9758    // day grid
9759    headerRow: 'ui-widget-header',
9760    dayRow: 'ui-widget-content',
9761    // list view
9762    listView: 'ui-widget-content'
9763};
9764JqueryUiTheme.prototype.baseIconClass = 'ui-icon';
9765JqueryUiTheme.prototype.iconClasses = {
9766    close: 'ui-icon-closethick',
9767    prev: 'ui-icon-circle-triangle-w',
9768    next: 'ui-icon-circle-triangle-e',
9769    prevYear: 'ui-icon-seek-prev',
9770    nextYear: 'ui-icon-seek-next'
9771};
9772JqueryUiTheme.prototype.iconOverrideOption = 'themeButtonIcons';
9773JqueryUiTheme.prototype.iconOverrideCustomButtonOption = 'themeIcon';
9774JqueryUiTheme.prototype.iconOverridePrefix = 'ui-icon-';
9775
9776
9777/***/ }),
9778/* 223 */
9779/***/ (function(module, exports, __webpack_require__) {
9780
9781Object.defineProperty(exports, "__esModule", { value: true });
9782var tslib_1 = __webpack_require__(2);
9783var $ = __webpack_require__(3);
9784var Promise_1 = __webpack_require__(21);
9785var EventSource_1 = __webpack_require__(6);
9786var FuncEventSource = /** @class */ (function (_super) {
9787    tslib_1.__extends(FuncEventSource, _super);
9788    function FuncEventSource() {
9789        return _super !== null && _super.apply(this, arguments) || this;
9790    }
9791    FuncEventSource.parse = function (rawInput, calendar) {
9792        var rawProps;
9793        // normalize raw input
9794        if ($.isFunction(rawInput.events)) { // extended form
9795            rawProps = rawInput;
9796        }
9797        else if ($.isFunction(rawInput)) { // short form
9798            rawProps = { events: rawInput };
9799        }
9800        if (rawProps) {
9801            return EventSource_1.default.parse.call(this, rawProps, calendar);
9802        }
9803        return false;
9804    };
9805    FuncEventSource.prototype.fetch = function (start, end, timezone) {
9806        var _this = this;
9807        this.calendar.pushLoading();
9808        return Promise_1.default.construct(function (onResolve) {
9809            _this.func.call(_this.calendar, start.clone(), end.clone(), timezone, function (rawEventDefs) {
9810                _this.calendar.popLoading();
9811                onResolve(_this.parseEventDefs(rawEventDefs));
9812            });
9813        });
9814    };
9815    FuncEventSource.prototype.getPrimitive = function () {
9816        return this.func;
9817    };
9818    FuncEventSource.prototype.applyManualStandardProps = function (rawProps) {
9819        var superSuccess = _super.prototype.applyManualStandardProps.call(this, rawProps);
9820        this.func = rawProps.events;
9821        return superSuccess;
9822    };
9823    return FuncEventSource;
9824}(EventSource_1.default));
9825exports.default = FuncEventSource;
9826FuncEventSource.defineStandardProps({
9827    events: false // don't automatically transfer
9828});
9829
9830
9831/***/ }),
9832/* 224 */
9833/***/ (function(module, exports, __webpack_require__) {
9834
9835Object.defineProperty(exports, "__esModule", { value: true });
9836var tslib_1 = __webpack_require__(2);
9837var $ = __webpack_require__(3);
9838var util_1 = __webpack_require__(4);
9839var Promise_1 = __webpack_require__(21);
9840var EventSource_1 = __webpack_require__(6);
9841var JsonFeedEventSource = /** @class */ (function (_super) {
9842    tslib_1.__extends(JsonFeedEventSource, _super);
9843    function JsonFeedEventSource() {
9844        return _super !== null && _super.apply(this, arguments) || this;
9845    }
9846    JsonFeedEventSource.parse = function (rawInput, calendar) {
9847        var rawProps;
9848        // normalize raw input
9849        if (typeof rawInput.url === 'string') { // extended form
9850            rawProps = rawInput;
9851        }
9852        else if (typeof rawInput === 'string') { // short form
9853            rawProps = { url: rawInput };
9854        }
9855        if (rawProps) {
9856            return EventSource_1.default.parse.call(this, rawProps, calendar);
9857        }
9858        return false;
9859    };
9860    JsonFeedEventSource.prototype.fetch = function (start, end, timezone) {
9861        var _this = this;
9862        var ajaxSettings = this.ajaxSettings;
9863        var onSuccess = ajaxSettings.success;
9864        var onError = ajaxSettings.error;
9865        var requestParams = this.buildRequestParams(start, end, timezone);
9866        // todo: eventually handle the promise's then,
9867        // don't intercept success/error
9868        // tho will be a breaking API change
9869        this.calendar.pushLoading();
9870        return Promise_1.default.construct(function (onResolve, onReject) {
9871            $.ajax($.extend({}, // destination
9872            JsonFeedEventSource.AJAX_DEFAULTS, ajaxSettings, {
9873                url: _this.url,
9874                data: requestParams,
9875                success: function (rawEventDefs, status, xhr) {
9876                    var callbackRes;
9877                    _this.calendar.popLoading();
9878                    if (rawEventDefs) {
9879                        callbackRes = util_1.applyAll(onSuccess, _this, [rawEventDefs, status, xhr]); // redirect `this`
9880                        if ($.isArray(callbackRes)) {
9881                            rawEventDefs = callbackRes;
9882                        }
9883                        onResolve(_this.parseEventDefs(rawEventDefs));
9884                    }
9885                    else {
9886                        onReject();
9887                    }
9888                },
9889                error: function (xhr, statusText, errorThrown) {
9890                    _this.calendar.popLoading();
9891                    util_1.applyAll(onError, _this, [xhr, statusText, errorThrown]); // redirect `this`
9892                    onReject();
9893                }
9894            }));
9895        });
9896    };
9897    JsonFeedEventSource.prototype.buildRequestParams = function (start, end, timezone) {
9898        var calendar = this.calendar;
9899        var ajaxSettings = this.ajaxSettings;
9900        var startParam;
9901        var endParam;
9902        var timezoneParam;
9903        var customRequestParams;
9904        var params = {};
9905        startParam = this.startParam;
9906        if (startParam == null) {
9907            startParam = calendar.opt('startParam');
9908        }
9909        endParam = this.endParam;
9910        if (endParam == null) {
9911            endParam = calendar.opt('endParam');
9912        }
9913        timezoneParam = this.timezoneParam;
9914        if (timezoneParam == null) {
9915            timezoneParam = calendar.opt('timezoneParam');
9916        }
9917        // retrieve any outbound GET/POST $.ajax data from the options
9918        if ($.isFunction(ajaxSettings.data)) {
9919            // supplied as a function that returns a key/value object
9920            customRequestParams = ajaxSettings.data();
9921        }
9922        else {
9923            // probably supplied as a straight key/value object
9924            customRequestParams = ajaxSettings.data || {};
9925        }
9926        $.extend(params, customRequestParams);
9927        params[startParam] = start.format();
9928        params[endParam] = end.format();
9929        if (timezone && timezone !== 'local') {
9930            params[timezoneParam] = timezone;
9931        }
9932        return params;
9933    };
9934    JsonFeedEventSource.prototype.getPrimitive = function () {
9935        return this.url;
9936    };
9937    JsonFeedEventSource.prototype.applyMiscProps = function (rawProps) {
9938        this.ajaxSettings = rawProps;
9939    };
9940    JsonFeedEventSource.AJAX_DEFAULTS = {
9941        dataType: 'json',
9942        cache: false
9943    };
9944    return JsonFeedEventSource;
9945}(EventSource_1.default));
9946exports.default = JsonFeedEventSource;
9947JsonFeedEventSource.defineStandardProps({
9948    // automatically transfer (true)...
9949    url: true,
9950    startParam: true,
9951    endParam: true,
9952    timezoneParam: true
9953});
9954
9955
9956/***/ }),
9957/* 225 */
9958/***/ (function(module, exports) {
9959
9960Object.defineProperty(exports, "__esModule", { value: true });
9961var Iterator = /** @class */ (function () {
9962    function Iterator(items) {
9963        this.items = items || [];
9964    }
9965    /* Calls a method on every item passing the arguments through */
9966    Iterator.prototype.proxyCall = function (methodName) {
9967        var args = [];
9968        for (var _i = 1; _i < arguments.length; _i++) {
9969            args[_i - 1] = arguments[_i];
9970        }
9971        var results = [];
9972        this.items.forEach(function (item) {
9973            results.push(item[methodName].apply(item, args));
9974        });
9975        return results;
9976    };
9977    return Iterator;
9978}());
9979exports.default = Iterator;
9980
9981
9982/***/ }),
9983/* 226 */
9984/***/ (function(module, exports, __webpack_require__) {
9985
9986Object.defineProperty(exports, "__esModule", { value: true });
9987var $ = __webpack_require__(3);
9988var util_1 = __webpack_require__(4);
9989var ListenerMixin_1 = __webpack_require__(7);
9990/* Creates a clone of an element and lets it track the mouse as it moves
9991----------------------------------------------------------------------------------------------------------------------*/
9992var MouseFollower = /** @class */ (function () {
9993    function MouseFollower(sourceEl, options) {
9994        this.isFollowing = false;
9995        this.isHidden = false;
9996        this.isAnimating = false; // doing the revert animation?
9997        this.options = options = options || {};
9998        this.sourceEl = sourceEl;
9999        this.parentEl = options.parentEl ? $(options.parentEl) : sourceEl.parent(); // default to sourceEl's parent
10000    }
10001    // Causes the element to start following the mouse
10002    MouseFollower.prototype.start = function (ev) {
10003        if (!this.isFollowing) {
10004            this.isFollowing = true;
10005            this.y0 = util_1.getEvY(ev);
10006            this.x0 = util_1.getEvX(ev);
10007            this.topDelta = 0;
10008            this.leftDelta = 0;
10009            if (!this.isHidden) {
10010                this.updatePosition();
10011            }
10012            if (util_1.getEvIsTouch(ev)) {
10013                this.listenTo($(document), 'touchmove', this.handleMove);
10014            }
10015            else {
10016                this.listenTo($(document), 'mousemove', this.handleMove);
10017            }
10018        }
10019    };
10020    // Causes the element to stop following the mouse. If shouldRevert is true, will animate back to original position.
10021    // `callback` gets invoked when the animation is complete. If no animation, it is invoked immediately.
10022    MouseFollower.prototype.stop = function (shouldRevert, callback) {
10023        var _this = this;
10024        var revertDuration = this.options.revertDuration;
10025        var complete = function () {
10026            _this.isAnimating = false;
10027            _this.removeElement();
10028            _this.top0 = _this.left0 = null; // reset state for future updatePosition calls
10029            if (callback) {
10030                callback();
10031            }
10032        };
10033        if (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time
10034            this.isFollowing = false;
10035            this.stopListeningTo($(document));
10036            if (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation?
10037                this.isAnimating = true;
10038                this.el.animate({
10039                    top: this.top0,
10040                    left: this.left0
10041                }, {
10042                    duration: revertDuration,
10043                    complete: complete
10044                });
10045            }
10046            else {
10047                complete();
10048            }
10049        }
10050    };
10051    // Gets the tracking element. Create it if necessary
10052    MouseFollower.prototype.getEl = function () {
10053        var el = this.el;
10054        if (!el) {
10055            el = this.el = this.sourceEl.clone()
10056                .addClass(this.options.additionalClass || '')
10057                .css({
10058                position: 'absolute',
10059                visibility: '',
10060                display: this.isHidden ? 'none' : '',
10061                margin: 0,
10062                right: 'auto',
10063                bottom: 'auto',
10064                width: this.sourceEl.width(),
10065                height: this.sourceEl.height(),
10066                opacity: this.options.opacity || '',
10067                zIndex: this.options.zIndex
10068            });
10069            // we don't want long taps or any mouse interaction causing selection/menus.
10070            // would use preventSelection(), but that prevents selectstart, causing problems.
10071            el.addClass('fc-unselectable');
10072            el.appendTo(this.parentEl);
10073        }
10074        return el;
10075    };
10076    // Removes the tracking element if it has already been created
10077    MouseFollower.prototype.removeElement = function () {
10078        if (this.el) {
10079            this.el.remove();
10080            this.el = null;
10081        }
10082    };
10083    // Update the CSS position of the tracking element
10084    MouseFollower.prototype.updatePosition = function () {
10085        var sourceOffset;
10086        var origin;
10087        this.getEl(); // ensure this.el
10088        // make sure origin info was computed
10089        if (this.top0 == null) {
10090            sourceOffset = this.sourceEl.offset();
10091            origin = this.el.offsetParent().offset();
10092            this.top0 = sourceOffset.top - origin.top;
10093            this.left0 = sourceOffset.left - origin.left;
10094        }
10095        this.el.css({
10096            top: this.top0 + this.topDelta,
10097            left: this.left0 + this.leftDelta
10098        });
10099    };
10100    // Gets called when the user moves the mouse
10101    MouseFollower.prototype.handleMove = function (ev) {
10102        this.topDelta = util_1.getEvY(ev) - this.y0;
10103        this.leftDelta = util_1.getEvX(ev) - this.x0;
10104        if (!this.isHidden) {
10105            this.updatePosition();
10106        }
10107    };
10108    // Temporarily makes the tracking element invisible. Can be called before following starts
10109    MouseFollower.prototype.hide = function () {
10110        if (!this.isHidden) {
10111            this.isHidden = true;
10112            if (this.el) {
10113                this.el.hide();
10114            }
10115        }
10116    };
10117    // Show the tracking element after it has been temporarily hidden
10118    MouseFollower.prototype.show = function () {
10119        if (this.isHidden) {
10120            this.isHidden = false;
10121            this.updatePosition();
10122            this.getEl().show();
10123        }
10124    };
10125    return MouseFollower;
10126}());
10127exports.default = MouseFollower;
10128ListenerMixin_1.default.mixInto(MouseFollower);
10129
10130
10131/***/ }),
10132/* 227 */
10133/***/ (function(module, exports, __webpack_require__) {
10134
10135/* A rectangular panel that is absolutely positioned over other content
10136------------------------------------------------------------------------------------------------------------------------
10137Options:
10138  - className (string)
10139  - content (HTML string or jQuery element set)
10140  - parentEl
10141  - top
10142  - left
10143  - right (the x coord of where the right edge should be. not a "CSS" right)
10144  - autoHide (boolean)
10145  - show (callback)
10146  - hide (callback)
10147*/
10148Object.defineProperty(exports, "__esModule", { value: true });
10149var $ = __webpack_require__(3);
10150var util_1 = __webpack_require__(4);
10151var ListenerMixin_1 = __webpack_require__(7);
10152var Popover = /** @class */ (function () {
10153    function Popover(options) {
10154        this.isHidden = true;
10155        this.margin = 10; // the space required between the popover and the edges of the scroll container
10156        this.options = options || {};
10157    }
10158    // Shows the popover on the specified position. Renders it if not already
10159    Popover.prototype.show = function () {
10160        if (this.isHidden) {
10161            if (!this.el) {
10162                this.render();
10163            }
10164            this.el.show();
10165            this.position();
10166            this.isHidden = false;
10167            this.trigger('show');
10168        }
10169    };
10170    // Hides the popover, through CSS, but does not remove it from the DOM
10171    Popover.prototype.hide = function () {
10172        if (!this.isHidden) {
10173            this.el.hide();
10174            this.isHidden = true;
10175            this.trigger('hide');
10176        }
10177    };
10178    // Creates `this.el` and renders content inside of it
10179    Popover.prototype.render = function () {
10180        var _this = this;
10181        var options = this.options;
10182        this.el = $('<div class="fc-popover">')
10183            .addClass(options.className || '')
10184            .css({
10185            // position initially to the top left to avoid creating scrollbars
10186            top: 0,
10187            left: 0
10188        })
10189            .append(options.content)
10190            .appendTo(options.parentEl);
10191        // when a click happens on anything inside with a 'fc-close' className, hide the popover
10192        this.el.on('click', '.fc-close', function () {
10193            _this.hide();
10194        });
10195        if (options.autoHide) {
10196            this.listenTo($(document), 'mousedown', this.documentMousedown);
10197        }
10198    };
10199    // Triggered when the user clicks *anywhere* in the document, for the autoHide feature
10200    Popover.prototype.documentMousedown = function (ev) {
10201        // only hide the popover if the click happened outside the popover
10202        if (this.el && !$(ev.target).closest(this.el).length) {
10203            this.hide();
10204        }
10205    };
10206    // Hides and unregisters any handlers
10207    Popover.prototype.removeElement = function () {
10208        this.hide();
10209        if (this.el) {
10210            this.el.remove();
10211            this.el = null;
10212        }
10213        this.stopListeningTo($(document), 'mousedown');
10214    };
10215    // Positions the popover optimally, using the top/left/right options
10216    Popover.prototype.position = function () {
10217        var options = this.options;
10218        var origin = this.el.offsetParent().offset();
10219        var width = this.el.outerWidth();
10220        var height = this.el.outerHeight();
10221        var windowEl = $(window);
10222        var viewportEl = util_1.getScrollParent(this.el);
10223        var viewportTop;
10224        var viewportLeft;
10225        var viewportOffset;
10226        var top; // the "position" (not "offset") values for the popover
10227        var left; //
10228        // compute top and left
10229        top = options.top || 0;
10230        if (options.left !== undefined) {
10231            left = options.left;
10232        }
10233        else if (options.right !== undefined) {
10234            left = options.right - width; // derive the left value from the right value
10235        }
10236        else {
10237            left = 0;
10238        }
10239        if (viewportEl.is(window) || viewportEl.is(document)) { // normalize getScrollParent's result
10240            viewportEl = windowEl;
10241            viewportTop = 0; // the window is always at the top left
10242            viewportLeft = 0; // (and .offset() won't work if called here)
10243        }
10244        else {
10245            viewportOffset = viewportEl.offset();
10246            viewportTop = viewportOffset.top;
10247            viewportLeft = viewportOffset.left;
10248        }
10249        // if the window is scrolled, it causes the visible area to be further down
10250        viewportTop += windowEl.scrollTop();
10251        viewportLeft += windowEl.scrollLeft();
10252        // constrain to the view port. if constrained by two edges, give precedence to top/left
10253        if (options.viewportConstrain !== false) {
10254            top = Math.min(top, viewportTop + viewportEl.outerHeight() - height - this.margin);
10255            top = Math.max(top, viewportTop + this.margin);
10256            left = Math.min(left, viewportLeft + viewportEl.outerWidth() - width - this.margin);
10257            left = Math.max(left, viewportLeft + this.margin);
10258        }
10259        this.el.css({
10260            top: top - origin.top,
10261            left: left - origin.left
10262        });
10263    };
10264    // Triggers a callback. Calls a function in the option hash of the same name.
10265    // Arguments beyond the first `name` are forwarded on.
10266    // TODO: better code reuse for this. Repeat code
10267    Popover.prototype.trigger = function (name) {
10268        if (this.options[name]) {
10269            this.options[name].apply(this, Array.prototype.slice.call(arguments, 1));
10270        }
10271    };
10272    return Popover;
10273}());
10274exports.default = Popover;
10275ListenerMixin_1.default.mixInto(Popover);
10276
10277
10278/***/ }),
10279/* 228 */
10280/***/ (function(module, exports, __webpack_require__) {
10281
10282Object.defineProperty(exports, "__esModule", { value: true });
10283var EmitterMixin_1 = __webpack_require__(13);
10284var TaskQueue = /** @class */ (function () {
10285    function TaskQueue() {
10286        this.q = [];
10287        this.isPaused = false;
10288        this.isRunning = false;
10289    }
10290    TaskQueue.prototype.queue = function () {
10291        var args = [];
10292        for (var _i = 0; _i < arguments.length; _i++) {
10293            args[_i] = arguments[_i];
10294        }
10295        this.q.push.apply(this.q, args); // append
10296        this.tryStart();
10297    };
10298    TaskQueue.prototype.pause = function () {
10299        this.isPaused = true;
10300    };
10301    TaskQueue.prototype.resume = function () {
10302        this.isPaused = false;
10303        this.tryStart();
10304    };
10305    TaskQueue.prototype.getIsIdle = function () {
10306        return !this.isRunning && !this.isPaused;
10307    };
10308    TaskQueue.prototype.tryStart = function () {
10309        if (!this.isRunning && this.canRunNext()) {
10310            this.isRunning = true;
10311            this.trigger('start');
10312            this.runRemaining();
10313        }
10314    };
10315    TaskQueue.prototype.canRunNext = function () {
10316        return !this.isPaused && this.q.length;
10317    };
10318    TaskQueue.prototype.runRemaining = function () {
10319        var _this = this;
10320        var task;
10321        var res;
10322        do {
10323            task = this.q.shift(); // always freshly reference q. might have been reassigned.
10324            res = this.runTask(task);
10325            if (res && res.then) {
10326                res.then(function () {
10327                    if (_this.canRunNext()) {
10328                        _this.runRemaining();
10329                    }
10330                });
10331                return; // prevent marking as stopped
10332            }
10333        } while (this.canRunNext());
10334        this.trigger('stop'); // not really a 'stop' ... more of a 'drained'
10335        this.isRunning = false;
10336        // if 'stop' handler added more tasks.... TODO: write test for this
10337        this.tryStart();
10338    };
10339    TaskQueue.prototype.runTask = function (task) {
10340        return task(); // task *is* the function, but subclasses can change the format of a task
10341    };
10342    return TaskQueue;
10343}());
10344exports.default = TaskQueue;
10345EmitterMixin_1.default.mixInto(TaskQueue);
10346
10347
10348/***/ }),
10349/* 229 */
10350/***/ (function(module, exports, __webpack_require__) {
10351
10352Object.defineProperty(exports, "__esModule", { value: true });
10353var tslib_1 = __webpack_require__(2);
10354var TaskQueue_1 = __webpack_require__(228);
10355var RenderQueue = /** @class */ (function (_super) {
10356    tslib_1.__extends(RenderQueue, _super);
10357    function RenderQueue(waitsByNamespace) {
10358        var _this = _super.call(this) || this;
10359        _this.waitsByNamespace = waitsByNamespace || {};
10360        return _this;
10361    }
10362    RenderQueue.prototype.queue = function (taskFunc, namespace, type) {
10363        var task = {
10364            func: taskFunc,
10365            namespace: namespace,
10366            type: type
10367        };
10368        var waitMs;
10369        if (namespace) {
10370            waitMs = this.waitsByNamespace[namespace];
10371        }
10372        if (this.waitNamespace) {
10373            if (namespace === this.waitNamespace && waitMs != null) {
10374                this.delayWait(waitMs);
10375            }
10376            else {
10377                this.clearWait();
10378                this.tryStart();
10379            }
10380        }
10381        if (this.compoundTask(task)) { // appended to queue?
10382            if (!this.waitNamespace && waitMs != null) {
10383                this.startWait(namespace, waitMs);
10384            }
10385            else {
10386                this.tryStart();
10387            }
10388        }
10389    };
10390    RenderQueue.prototype.startWait = function (namespace, waitMs) {
10391        this.waitNamespace = namespace;
10392        this.spawnWait(waitMs);
10393    };
10394    RenderQueue.prototype.delayWait = function (waitMs) {
10395        clearTimeout(this.waitId);
10396        this.spawnWait(waitMs);
10397    };
10398    RenderQueue.prototype.spawnWait = function (waitMs) {
10399        var _this = this;
10400        this.waitId = setTimeout(function () {
10401            _this.waitNamespace = null;
10402            _this.tryStart();
10403        }, waitMs);
10404    };
10405    RenderQueue.prototype.clearWait = function () {
10406        if (this.waitNamespace) {
10407            clearTimeout(this.waitId);
10408            this.waitId = null;
10409            this.waitNamespace = null;
10410        }
10411    };
10412    RenderQueue.prototype.canRunNext = function () {
10413        if (!_super.prototype.canRunNext.call(this)) {
10414            return false;
10415        }
10416        // waiting for a certain namespace to stop receiving tasks?
10417        if (this.waitNamespace) {
10418            var q = this.q;
10419            // if there was a different namespace task in the meantime,
10420            // that forces all previously-waiting tasks to suddenly execute.
10421            // TODO: find a way to do this in constant time.
10422            for (var i = 0; i < q.length; i++) {
10423                if (q[i].namespace !== this.waitNamespace) {
10424                    return true; // allow execution
10425                }
10426            }
10427            return false;
10428        }
10429        return true;
10430    };
10431    RenderQueue.prototype.runTask = function (task) {
10432        task.func();
10433    };
10434    RenderQueue.prototype.compoundTask = function (newTask) {
10435        var q = this.q;
10436        var shouldAppend = true;
10437        var i;
10438        var task;
10439        if (newTask.namespace && newTask.type === 'destroy') {
10440            // remove all init/add/remove ops with same namespace, regardless of order
10441            for (i = q.length - 1; i >= 0; i--) {
10442                task = q[i];
10443                if (task.namespace === newTask.namespace) {
10444                    switch (task.type) {
10445                        case 'init':
10446                            shouldAppend = false;
10447                        // the latest destroy is cancelled out by not doing the init
10448                        /* falls through */
10449                        case 'add':
10450                        /* falls through */
10451                        case 'remove':
10452                            q.splice(i, 1); // remove task
10453                    }
10454                }
10455            }
10456        }
10457        if (shouldAppend) {
10458            q.push(newTask);
10459        }
10460        return shouldAppend;
10461    };
10462    return RenderQueue;
10463}(TaskQueue_1.default));
10464exports.default = RenderQueue;
10465
10466
10467/***/ }),
10468/* 230 */
10469/***/ (function(module, exports, __webpack_require__) {
10470
10471Object.defineProperty(exports, "__esModule", { value: true });
10472var tslib_1 = __webpack_require__(2);
10473var Model_1 = __webpack_require__(51);
10474var Component = /** @class */ (function (_super) {
10475    tslib_1.__extends(Component, _super);
10476    function Component() {
10477        return _super !== null && _super.apply(this, arguments) || this;
10478    }
10479    Component.prototype.setElement = function (el) {
10480        this.el = el;
10481        this.bindGlobalHandlers();
10482        this.renderSkeleton();
10483        this.set('isInDom', true);
10484    };
10485    Component.prototype.removeElement = function () {
10486        this.unset('isInDom');
10487        this.unrenderSkeleton();
10488        this.unbindGlobalHandlers();
10489        this.el.remove();
10490        // NOTE: don't null-out this.el in case the View was destroyed within an API callback.
10491        // We don't null-out the View's other jQuery element references upon destroy,
10492        //  so we shouldn't kill this.el either.
10493    };
10494    Component.prototype.bindGlobalHandlers = function () {
10495        // subclasses can override
10496    };
10497    Component.prototype.unbindGlobalHandlers = function () {
10498        // subclasses can override
10499    };
10500    /*
10501    NOTE: Can't have a `render` method. Read the deprecation notice in View::executeDateRender
10502    */
10503    // Renders the basic structure of the view before any content is rendered
10504    Component.prototype.renderSkeleton = function () {
10505        // subclasses should implement
10506    };
10507    // Unrenders the basic structure of the view
10508    Component.prototype.unrenderSkeleton = function () {
10509        // subclasses should implement
10510    };
10511    return Component;
10512}(Model_1.default));
10513exports.default = Component;
10514
10515
10516/***/ }),
10517/* 231 */
10518/***/ (function(module, exports, __webpack_require__) {
10519
10520Object.defineProperty(exports, "__esModule", { value: true });
10521var tslib_1 = __webpack_require__(2);
10522var $ = __webpack_require__(3);
10523var moment = __webpack_require__(0);
10524var util_1 = __webpack_require__(4);
10525var moment_ext_1 = __webpack_require__(11);
10526var date_formatting_1 = __webpack_require__(49);
10527var Component_1 = __webpack_require__(230);
10528var util_2 = __webpack_require__(19);
10529var DateComponent = /** @class */ (function (_super) {
10530    tslib_1.__extends(DateComponent, _super);
10531    function DateComponent(_view, _options) {
10532        var _this = _super.call(this) || this;
10533        _this.isRTL = false; // frequently accessed options
10534        _this.hitsNeededDepth = 0; // necessary because multiple callers might need the same hits
10535        _this.hasAllDayBusinessHours = false; // TODO: unify with largeUnit and isTimeScale?
10536        _this.isDatesRendered = false;
10537        // hack to set options prior to the this.opt calls
10538        if (_view) {
10539            _this['view'] = _view;
10540        }
10541        if (_options) {
10542            _this['options'] = _options;
10543        }
10544        _this.uid = String(DateComponent.guid++);
10545        _this.childrenByUid = {};
10546        _this.nextDayThreshold = moment.duration(_this.opt('nextDayThreshold'));
10547        _this.isRTL = _this.opt('isRTL');
10548        if (_this.fillRendererClass) {
10549            _this.fillRenderer = new _this.fillRendererClass(_this);
10550        }
10551        if (_this.eventRendererClass) { // fillRenderer is optional -----v
10552            _this.eventRenderer = new _this.eventRendererClass(_this, _this.fillRenderer);
10553        }
10554        if (_this.helperRendererClass && _this.eventRenderer) {
10555            _this.helperRenderer = new _this.helperRendererClass(_this, _this.eventRenderer);
10556        }
10557        if (_this.businessHourRendererClass && _this.fillRenderer) {
10558            _this.businessHourRenderer = new _this.businessHourRendererClass(_this, _this.fillRenderer);
10559        }
10560        return _this;
10561    }
10562    DateComponent.prototype.addChild = function (child) {
10563        if (!this.childrenByUid[child.uid]) {
10564            this.childrenByUid[child.uid] = child;
10565            return true;
10566        }
10567        return false;
10568    };
10569    DateComponent.prototype.removeChild = function (child) {
10570        if (this.childrenByUid[child.uid]) {
10571            delete this.childrenByUid[child.uid];
10572            return true;
10573        }
10574        return false;
10575    };
10576    // TODO: only do if isInDom?
10577    // TODO: make part of Component, along with children/batch-render system?
10578    DateComponent.prototype.updateSize = function (totalHeight, isAuto, isResize) {
10579        this.callChildren('updateSize', arguments);
10580    };
10581    // Options
10582    // -----------------------------------------------------------------------------------------------------------------
10583    DateComponent.prototype.opt = function (name) {
10584        return this._getView().opt(name); // default implementation
10585    };
10586    DateComponent.prototype.publiclyTrigger = function () {
10587        var args = [];
10588        for (var _i = 0; _i < arguments.length; _i++) {
10589            args[_i] = arguments[_i];
10590        }
10591        var calendar = this._getCalendar();
10592        return calendar.publiclyTrigger.apply(calendar, args);
10593    };
10594    DateComponent.prototype.hasPublicHandlers = function () {
10595        var args = [];
10596        for (var _i = 0; _i < arguments.length; _i++) {
10597            args[_i] = arguments[_i];
10598        }
10599        var calendar = this._getCalendar();
10600        return calendar.hasPublicHandlers.apply(calendar, args);
10601    };
10602    // Date
10603    // -----------------------------------------------------------------------------------------------------------------
10604    DateComponent.prototype.executeDateRender = function (dateProfile) {
10605        this.dateProfile = dateProfile; // for rendering
10606        this.renderDates(dateProfile);
10607        this.isDatesRendered = true;
10608        this.callChildren('executeDateRender', arguments);
10609    };
10610    DateComponent.prototype.executeDateUnrender = function () {
10611        this.callChildren('executeDateUnrender', arguments);
10612        this.dateProfile = null;
10613        this.unrenderDates();
10614        this.isDatesRendered = false;
10615    };
10616    // date-cell content only
10617    DateComponent.prototype.renderDates = function (dateProfile) {
10618        // subclasses should implement
10619    };
10620    // date-cell content only
10621    DateComponent.prototype.unrenderDates = function () {
10622        // subclasses should override
10623    };
10624    // Now-Indicator
10625    // -----------------------------------------------------------------------------------------------------------------
10626    // Returns a string unit, like 'second' or 'minute' that defined how often the current time indicator
10627    // should be refreshed. If something falsy is returned, no time indicator is rendered at all.
10628    DateComponent.prototype.getNowIndicatorUnit = function () {
10629        // subclasses should implement
10630    };
10631    // Renders a current time indicator at the given datetime
10632    DateComponent.prototype.renderNowIndicator = function (date) {
10633        this.callChildren('renderNowIndicator', arguments);
10634    };
10635    // Undoes the rendering actions from renderNowIndicator
10636    DateComponent.prototype.unrenderNowIndicator = function () {
10637        this.callChildren('unrenderNowIndicator', arguments);
10638    };
10639    // Business Hours
10640    // ---------------------------------------------------------------------------------------------------------------
10641    DateComponent.prototype.renderBusinessHours = function (businessHourGenerator) {
10642        if (this.businessHourRenderer) {
10643            this.businessHourRenderer.render(businessHourGenerator);
10644        }
10645        this.callChildren('renderBusinessHours', arguments);
10646    };
10647    // Unrenders previously-rendered business-hours
10648    DateComponent.prototype.unrenderBusinessHours = function () {
10649        this.callChildren('unrenderBusinessHours', arguments);
10650        if (this.businessHourRenderer) {
10651            this.businessHourRenderer.unrender();
10652        }
10653    };
10654    // Event Displaying
10655    // -----------------------------------------------------------------------------------------------------------------
10656    DateComponent.prototype.executeEventRender = function (eventsPayload) {
10657        if (this.eventRenderer) {
10658            this.eventRenderer.rangeUpdated(); // poorly named now
10659            this.eventRenderer.render(eventsPayload);
10660        }
10661        else if (this['renderEvents']) { // legacy
10662            this['renderEvents'](convertEventsPayloadToLegacyArray(eventsPayload));
10663        }
10664        this.callChildren('executeEventRender', arguments);
10665    };
10666    DateComponent.prototype.executeEventUnrender = function () {
10667        this.callChildren('executeEventUnrender', arguments);
10668        if (this.eventRenderer) {
10669            this.eventRenderer.unrender();
10670        }
10671        else if (this['destroyEvents']) { // legacy
10672            this['destroyEvents']();
10673        }
10674    };
10675    DateComponent.prototype.getBusinessHourSegs = function () {
10676        var segs = this.getOwnBusinessHourSegs();
10677        this.iterChildren(function (child) {
10678            segs.push.apply(segs, child.getBusinessHourSegs());
10679        });
10680        return segs;
10681    };
10682    DateComponent.prototype.getOwnBusinessHourSegs = function () {
10683        if (this.businessHourRenderer) {
10684            return this.businessHourRenderer.getSegs();
10685        }
10686        return [];
10687    };
10688    DateComponent.prototype.getEventSegs = function () {
10689        var segs = this.getOwnEventSegs();
10690        this.iterChildren(function (child) {
10691            segs.push.apply(segs, child.getEventSegs());
10692        });
10693        return segs;
10694    };
10695    DateComponent.prototype.getOwnEventSegs = function () {
10696        if (this.eventRenderer) {
10697            return this.eventRenderer.getSegs();
10698        }
10699        return [];
10700    };
10701    // Event Rendering Triggering
10702    // -----------------------------------------------------------------------------------------------------------------
10703    DateComponent.prototype.triggerAfterEventsRendered = function () {
10704        this.triggerAfterEventSegsRendered(this.getEventSegs());
10705        this.publiclyTrigger('eventAfterAllRender', {
10706            context: this,
10707            args: [this]
10708        });
10709    };
10710    DateComponent.prototype.triggerAfterEventSegsRendered = function (segs) {
10711        var _this = this;
10712        // an optimization, because getEventLegacy is expensive
10713        if (this.hasPublicHandlers('eventAfterRender')) {
10714            segs.forEach(function (seg) {
10715                var legacy;
10716                if (seg.el) { // necessary?
10717                    legacy = seg.footprint.getEventLegacy();
10718                    _this.publiclyTrigger('eventAfterRender', {
10719                        context: legacy,
10720                        args: [legacy, seg.el, _this]
10721                    });
10722                }
10723            });
10724        }
10725    };
10726    DateComponent.prototype.triggerBeforeEventsDestroyed = function () {
10727        this.triggerBeforeEventSegsDestroyed(this.getEventSegs());
10728    };
10729    DateComponent.prototype.triggerBeforeEventSegsDestroyed = function (segs) {
10730        var _this = this;
10731        if (this.hasPublicHandlers('eventDestroy')) {
10732            segs.forEach(function (seg) {
10733                var legacy;
10734                if (seg.el) { // necessary?
10735                    legacy = seg.footprint.getEventLegacy();
10736                    _this.publiclyTrigger('eventDestroy', {
10737                        context: legacy,
10738                        args: [legacy, seg.el, _this]
10739                    });
10740                }
10741            });
10742        }
10743    };
10744    // Event Rendering Utils
10745    // -----------------------------------------------------------------------------------------------------------------
10746    // Hides all rendered event segments linked to the given event
10747    // RECURSIVE with subcomponents
10748    DateComponent.prototype.showEventsWithId = function (eventDefId) {
10749        this.getEventSegs().forEach(function (seg) {
10750            if (seg.footprint.eventDef.id === eventDefId &&
10751                seg.el // necessary?
10752            ) {
10753                seg.el.css('visibility', '');
10754            }
10755        });
10756        this.callChildren('showEventsWithId', arguments);
10757    };
10758    // Shows all rendered event segments linked to the given event
10759    // RECURSIVE with subcomponents
10760    DateComponent.prototype.hideEventsWithId = function (eventDefId) {
10761        this.getEventSegs().forEach(function (seg) {
10762            if (seg.footprint.eventDef.id === eventDefId &&
10763                seg.el // necessary?
10764            ) {
10765                seg.el.css('visibility', 'hidden');
10766            }
10767        });
10768        this.callChildren('hideEventsWithId', arguments);
10769    };
10770    // Drag-n-Drop Rendering (for both events and external elements)
10771    // ---------------------------------------------------------------------------------------------------------------
10772    // Renders a visual indication of a event or external-element drag over the given drop zone.
10773    // If an external-element, seg will be `null`.
10774    // Must return elements used for any mock events.
10775    DateComponent.prototype.renderDrag = function (eventFootprints, seg, isTouch) {
10776        var renderedHelper = false;
10777        this.iterChildren(function (child) {
10778            if (child.renderDrag(eventFootprints, seg, isTouch)) {
10779                renderedHelper = true;
10780            }
10781        });
10782        return renderedHelper;
10783    };
10784    // Unrenders a visual indication of an event or external-element being dragged.
10785    DateComponent.prototype.unrenderDrag = function () {
10786        this.callChildren('unrenderDrag', arguments);
10787    };
10788    // Event Resizing
10789    // ---------------------------------------------------------------------------------------------------------------
10790    // Renders a visual indication of an event being resized.
10791    DateComponent.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {
10792        this.callChildren('renderEventResize', arguments);
10793    };
10794    // Unrenders a visual indication of an event being resized.
10795    DateComponent.prototype.unrenderEventResize = function () {
10796        this.callChildren('unrenderEventResize', arguments);
10797    };
10798    // Selection
10799    // ---------------------------------------------------------------------------------------------------------------
10800    // Renders a visual indication of the selection
10801    // TODO: rename to `renderSelection` after legacy is gone
10802    DateComponent.prototype.renderSelectionFootprint = function (componentFootprint) {
10803        this.renderHighlight(componentFootprint);
10804        this.callChildren('renderSelectionFootprint', arguments);
10805    };
10806    // Unrenders a visual indication of selection
10807    DateComponent.prototype.unrenderSelection = function () {
10808        this.unrenderHighlight();
10809        this.callChildren('unrenderSelection', arguments);
10810    };
10811    // Highlight
10812    // ---------------------------------------------------------------------------------------------------------------
10813    // Renders an emphasis on the given date range. Given a span (unzoned start/end and other misc data)
10814    DateComponent.prototype.renderHighlight = function (componentFootprint) {
10815        if (this.fillRenderer) {
10816            this.fillRenderer.renderFootprint('highlight', componentFootprint, {
10817                getClasses: function () {
10818                    return ['fc-highlight'];
10819                }
10820            });
10821        }
10822        this.callChildren('renderHighlight', arguments);
10823    };
10824    // Unrenders the emphasis on a date range
10825    DateComponent.prototype.unrenderHighlight = function () {
10826        if (this.fillRenderer) {
10827            this.fillRenderer.unrender('highlight');
10828        }
10829        this.callChildren('unrenderHighlight', arguments);
10830    };
10831    // Hit Areas
10832    // ---------------------------------------------------------------------------------------------------------------
10833    // just because all DateComponents support this interface
10834    // doesn't mean they need to have their own internal coord system. they can defer to sub-components.
10835    DateComponent.prototype.hitsNeeded = function () {
10836        if (!(this.hitsNeededDepth++)) {
10837            this.prepareHits();
10838        }
10839        this.callChildren('hitsNeeded', arguments);
10840    };
10841    DateComponent.prototype.hitsNotNeeded = function () {
10842        if (this.hitsNeededDepth && !(--this.hitsNeededDepth)) {
10843            this.releaseHits();
10844        }
10845        this.callChildren('hitsNotNeeded', arguments);
10846    };
10847    DateComponent.prototype.prepareHits = function () {
10848        // subclasses can implement
10849    };
10850    DateComponent.prototype.releaseHits = function () {
10851        // subclasses can implement
10852    };
10853    // Given coordinates from the topleft of the document, return data about the date-related area underneath.
10854    // Can return an object with arbitrary properties (although top/right/left/bottom are encouraged).
10855    // Must have a `grid` property, a reference to this current grid. TODO: avoid this
10856    // The returned object will be processed by getHitFootprint and getHitEl.
10857    DateComponent.prototype.queryHit = function (leftOffset, topOffset) {
10858        var childrenByUid = this.childrenByUid;
10859        var uid;
10860        var hit;
10861        for (uid in childrenByUid) {
10862            hit = childrenByUid[uid].queryHit(leftOffset, topOffset);
10863            if (hit) {
10864                break;
10865            }
10866        }
10867        return hit;
10868    };
10869    DateComponent.prototype.getSafeHitFootprint = function (hit) {
10870        var footprint = this.getHitFootprint(hit);
10871        if (!this.dateProfile.activeUnzonedRange.containsRange(footprint.unzonedRange)) {
10872            return null;
10873        }
10874        return footprint;
10875    };
10876    DateComponent.prototype.getHitFootprint = function (hit) {
10877        // what about being abstract!?
10878    };
10879    // Given position-level information about a date-related area within the grid,
10880    // should return a jQuery element that best represents it. passed to dayClick callback.
10881    DateComponent.prototype.getHitEl = function (hit) {
10882        // what about being abstract!?
10883    };
10884    /* Converting eventRange -> eventFootprint
10885    ------------------------------------------------------------------------------------------------------------------*/
10886    DateComponent.prototype.eventRangesToEventFootprints = function (eventRanges) {
10887        var eventFootprints = [];
10888        var i;
10889        for (i = 0; i < eventRanges.length; i++) {
10890            eventFootprints.push.apply(// append
10891            eventFootprints, this.eventRangeToEventFootprints(eventRanges[i]));
10892        }
10893        return eventFootprints;
10894    };
10895    DateComponent.prototype.eventRangeToEventFootprints = function (eventRange) {
10896        return [util_2.eventRangeToEventFootprint(eventRange)];
10897    };
10898    /* Converting componentFootprint/eventFootprint -> segs
10899    ------------------------------------------------------------------------------------------------------------------*/
10900    DateComponent.prototype.eventFootprintsToSegs = function (eventFootprints) {
10901        var segs = [];
10902        var i;
10903        for (i = 0; i < eventFootprints.length; i++) {
10904            segs.push.apply(segs, this.eventFootprintToSegs(eventFootprints[i]));
10905        }
10906        return segs;
10907    };
10908    // Given an event's span (unzoned start/end and other misc data), and the event itself,
10909    // slices into segments and attaches event-derived properties to them.
10910    // eventSpan - { start, end, isStart, isEnd, otherthings... }
10911    DateComponent.prototype.eventFootprintToSegs = function (eventFootprint) {
10912        var unzonedRange = eventFootprint.componentFootprint.unzonedRange;
10913        var segs;
10914        var i;
10915        var seg;
10916        segs = this.componentFootprintToSegs(eventFootprint.componentFootprint);
10917        for (i = 0; i < segs.length; i++) {
10918            seg = segs[i];
10919            if (!unzonedRange.isStart) {
10920                seg.isStart = false;
10921            }
10922            if (!unzonedRange.isEnd) {
10923                seg.isEnd = false;
10924            }
10925            seg.footprint = eventFootprint;
10926            // TODO: rename to seg.eventFootprint
10927        }
10928        return segs;
10929    };
10930    DateComponent.prototype.componentFootprintToSegs = function (componentFootprint) {
10931        return [];
10932    };
10933    // Utils
10934    // ---------------------------------------------------------------------------------------------------------------
10935    DateComponent.prototype.callChildren = function (methodName, args) {
10936        this.iterChildren(function (child) {
10937            child[methodName].apply(child, args);
10938        });
10939    };
10940    DateComponent.prototype.iterChildren = function (func) {
10941        var childrenByUid = this.childrenByUid;
10942        var uid;
10943        for (uid in childrenByUid) {
10944            func(childrenByUid[uid]);
10945        }
10946    };
10947    DateComponent.prototype._getCalendar = function () {
10948        var t = this;
10949        return t.calendar || t.view.calendar;
10950    };
10951    DateComponent.prototype._getView = function () {
10952        return this.view;
10953    };
10954    DateComponent.prototype._getDateProfile = function () {
10955        return this._getView().get('dateProfile');
10956    };
10957    // Generates HTML for an anchor to another view into the calendar.
10958    // Will either generate an <a> tag or a non-clickable <span> tag, depending on enabled settings.
10959    // `gotoOptions` can either be a moment input, or an object with the form:
10960    // { date, type, forceOff }
10961    // `type` is a view-type like "day" or "week". default value is "day".
10962    // `attrs` and `innerHtml` are use to generate the rest of the HTML tag.
10963    DateComponent.prototype.buildGotoAnchorHtml = function (gotoOptions, attrs, innerHtml) {
10964        var date;
10965        var type;
10966        var forceOff;
10967        var finalOptions;
10968        if ($.isPlainObject(gotoOptions)) {
10969            date = gotoOptions.date;
10970            type = gotoOptions.type;
10971            forceOff = gotoOptions.forceOff;
10972        }
10973        else {
10974            date = gotoOptions; // a single moment input
10975        }
10976        date = moment_ext_1.default(date); // if a string, parse it
10977        finalOptions = {
10978            date: date.format('YYYY-MM-DD'),
10979            type: type || 'day'
10980        };
10981        if (typeof attrs === 'string') {
10982            innerHtml = attrs;
10983            attrs = null;
10984        }
10985        attrs = attrs ? ' ' + util_1.attrsToStr(attrs) : ''; // will have a leading space
10986        innerHtml = innerHtml || '';
10987        if (!forceOff && this.opt('navLinks')) {
10988            return '<a' + attrs +
10989                ' data-goto="' + util_1.htmlEscape(JSON.stringify(finalOptions)) + '">' +
10990                innerHtml +
10991                '</a>';
10992        }
10993        else {
10994            return '<span' + attrs + '>' +
10995                innerHtml +
10996                '</span>';
10997        }
10998    };
10999    DateComponent.prototype.getAllDayHtml = function () {
11000        return this.opt('allDayHtml') || util_1.htmlEscape(this.opt('allDayText'));
11001    };
11002    // Computes HTML classNames for a single-day element
11003    DateComponent.prototype.getDayClasses = function (date, noThemeHighlight) {
11004        var view = this._getView();
11005        var classes = [];
11006        var today;
11007        if (!this.dateProfile.activeUnzonedRange.containsDate(date)) {
11008            classes.push('fc-disabled-day'); // TODO: jQuery UI theme?
11009        }
11010        else {
11011            classes.push('fc-' + util_1.dayIDs[date.day()]);
11012            if (view.isDateInOtherMonth(date, this.dateProfile)) { // TODO: use DateComponent subclass somehow
11013                classes.push('fc-other-month');
11014            }
11015            today = view.calendar.getNow();
11016            if (date.isSame(today, 'day')) {
11017                classes.push('fc-today');
11018                if (noThemeHighlight !== true) {
11019                    classes.push(view.calendar.theme.getClass('today'));
11020                }
11021            }
11022            else if (date < today) {
11023                classes.push('fc-past');
11024            }
11025            else {
11026                classes.push('fc-future');
11027            }
11028        }
11029        return classes;
11030    };
11031    // Utility for formatting a range. Accepts a range object, formatting string, and optional separator.
11032    // Displays all-day ranges naturally, with an inclusive end. Takes the current isRTL into account.
11033    // The timezones of the dates within `range` will be respected.
11034    DateComponent.prototype.formatRange = function (range, isAllDay, formatStr, separator) {
11035        var end = range.end;
11036        if (isAllDay) {
11037            end = end.clone().subtract(1); // convert to inclusive. last ms of previous day
11038        }
11039        return date_formatting_1.formatRange(range.start, end, formatStr, separator, this.isRTL);
11040    };
11041    // Compute the number of the give units in the "current" range.
11042    // Will return a floating-point number. Won't round.
11043    DateComponent.prototype.currentRangeAs = function (unit) {
11044        return this._getDateProfile().currentUnzonedRange.as(unit);
11045    };
11046    // Returns the date range of the full days the given range visually appears to occupy.
11047    // Returns a plain object with start/end, NOT an UnzonedRange!
11048    DateComponent.prototype.computeDayRange = function (unzonedRange) {
11049        var calendar = this._getCalendar();
11050        var startDay = calendar.msToUtcMoment(unzonedRange.startMs, true); // the beginning of the day the range starts
11051        var end = calendar.msToUtcMoment(unzonedRange.endMs);
11052        var endTimeMS = +end.time(); // # of milliseconds into `endDay`
11053        var endDay = end.clone().stripTime(); // the beginning of the day the range exclusively ends
11054        // If the end time is actually inclusively part of the next day and is equal to or
11055        // beyond the next day threshold, adjust the end to be the exclusive end of `endDay`.
11056        // Otherwise, leaving it as inclusive will cause it to exclude `endDay`.
11057        if (endTimeMS && endTimeMS >= this.nextDayThreshold) {
11058            endDay.add(1, 'days');
11059        }
11060        // If end is within `startDay` but not past nextDayThreshold, assign the default duration of one day.
11061        if (endDay <= startDay) {
11062            endDay = startDay.clone().add(1, 'days');
11063        }
11064        return { start: startDay, end: endDay };
11065    };
11066    // Does the given range visually appear to occupy more than one day?
11067    DateComponent.prototype.isMultiDayRange = function (unzonedRange) {
11068        var dayRange = this.computeDayRange(unzonedRange);
11069        return dayRange.end.diff(dayRange.start, 'days') > 1;
11070    };
11071    DateComponent.guid = 0; // TODO: better system for this?
11072    return DateComponent;
11073}(Component_1.default));
11074exports.default = DateComponent;
11075// legacy
11076function convertEventsPayloadToLegacyArray(eventsPayload) {
11077    var eventDefId;
11078    var eventInstances;
11079    var legacyEvents = [];
11080    var i;
11081    for (eventDefId in eventsPayload) {
11082        eventInstances = eventsPayload[eventDefId].eventInstances;
11083        for (i = 0; i < eventInstances.length; i++) {
11084            legacyEvents.push(eventInstances[i].toLegacy());
11085        }
11086    }
11087    return legacyEvents;
11088}
11089
11090
11091/***/ }),
11092/* 232 */
11093/***/ (function(module, exports, __webpack_require__) {
11094
11095Object.defineProperty(exports, "__esModule", { value: true });
11096var $ = __webpack_require__(3);
11097var moment = __webpack_require__(0);
11098var util_1 = __webpack_require__(4);
11099var options_1 = __webpack_require__(33);
11100var Iterator_1 = __webpack_require__(225);
11101var GlobalEmitter_1 = __webpack_require__(23);
11102var EmitterMixin_1 = __webpack_require__(13);
11103var ListenerMixin_1 = __webpack_require__(7);
11104var Toolbar_1 = __webpack_require__(257);
11105var OptionsManager_1 = __webpack_require__(258);
11106var ViewSpecManager_1 = __webpack_require__(259);
11107var Constraints_1 = __webpack_require__(217);
11108var locale_1 = __webpack_require__(32);
11109var moment_ext_1 = __webpack_require__(11);
11110var UnzonedRange_1 = __webpack_require__(5);
11111var ComponentFootprint_1 = __webpack_require__(12);
11112var EventDateProfile_1 = __webpack_require__(16);
11113var EventManager_1 = __webpack_require__(220);
11114var BusinessHourGenerator_1 = __webpack_require__(218);
11115var EventSourceParser_1 = __webpack_require__(38);
11116var EventDefParser_1 = __webpack_require__(36);
11117var SingleEventDef_1 = __webpack_require__(9);
11118var EventDefMutation_1 = __webpack_require__(39);
11119var EventSource_1 = __webpack_require__(6);
11120var ThemeRegistry_1 = __webpack_require__(57);
11121var Calendar = /** @class */ (function () {
11122    function Calendar(el, overrides) {
11123        this.loadingLevel = 0; // number of simultaneous loading tasks
11124        this.ignoreUpdateViewSize = 0;
11125        this.freezeContentHeightDepth = 0;
11126        // declare the current calendar instance relies on GlobalEmitter. needed for garbage collection.
11127        // unneeded() is called in destroy.
11128        GlobalEmitter_1.default.needed();
11129        this.el = el;
11130        this.viewsByType = {};
11131        this.optionsManager = new OptionsManager_1.default(this, overrides);
11132        this.viewSpecManager = new ViewSpecManager_1.default(this.optionsManager, this);
11133        this.initMomentInternals(); // needs to happen after options hash initialized
11134        this.initCurrentDate();
11135        this.initEventManager();
11136        this.constraints = new Constraints_1.default(this.eventManager, this);
11137        this.constructed();
11138    }
11139    Calendar.prototype.constructed = function () {
11140        // useful for monkeypatching. used?
11141    };
11142    Calendar.prototype.getView = function () {
11143        return this.view;
11144    };
11145    Calendar.prototype.publiclyTrigger = function (name, triggerInfo) {
11146        var optHandler = this.opt(name);
11147        var context;
11148        var args;
11149        if ($.isPlainObject(triggerInfo)) {
11150            context = triggerInfo.context;
11151            args = triggerInfo.args;
11152        }
11153        else if ($.isArray(triggerInfo)) {
11154            args = triggerInfo;
11155        }
11156        if (context == null) {
11157            context = this.el[0]; // fallback context
11158        }
11159        if (!args) {
11160            args = [];
11161        }
11162        this.triggerWith(name, context, args); // Emitter's method
11163        if (optHandler) {
11164            return optHandler.apply(context, args);
11165        }
11166    };
11167    Calendar.prototype.hasPublicHandlers = function (name) {
11168        return this.hasHandlers(name) ||
11169            this.opt(name); // handler specified in options
11170    };
11171    // Options Public API
11172    // -----------------------------------------------------------------------------------------------------------------
11173    // public getter/setter
11174    Calendar.prototype.option = function (name, value) {
11175        var newOptionHash;
11176        if (typeof name === 'string') {
11177            if (value === undefined) { // getter
11178                return this.optionsManager.get(name);
11179            }
11180            else { // setter for individual option
11181                newOptionHash = {};
11182                newOptionHash[name] = value;
11183                this.optionsManager.add(newOptionHash);
11184            }
11185        }
11186        else if (typeof name === 'object') { // compound setter with object input
11187            this.optionsManager.add(name);
11188        }
11189    };
11190    // private getter
11191    Calendar.prototype.opt = function (name) {
11192        return this.optionsManager.get(name);
11193    };
11194    // View
11195    // -----------------------------------------------------------------------------------------------------------------
11196    // Given a view name for a custom view or a standard view, creates a ready-to-go View object
11197    Calendar.prototype.instantiateView = function (viewType) {
11198        var spec = this.viewSpecManager.getViewSpec(viewType);
11199        if (!spec) {
11200            throw new Error("View type \"" + viewType + "\" is not valid");
11201        }
11202        return new spec['class'](this, spec);
11203    };
11204    // Returns a boolean about whether the view is okay to instantiate at some point
11205    Calendar.prototype.isValidViewType = function (viewType) {
11206        return Boolean(this.viewSpecManager.getViewSpec(viewType));
11207    };
11208    Calendar.prototype.changeView = function (viewName, dateOrRange) {
11209        if (dateOrRange) {
11210            if (dateOrRange.start && dateOrRange.end) { // a range
11211                this.optionsManager.recordOverrides({
11212                    visibleRange: dateOrRange
11213                });
11214            }
11215            else { // a date
11216                this.currentDate = this.moment(dateOrRange).stripZone(); // just like gotoDate
11217            }
11218        }
11219        this.renderView(viewName);
11220    };
11221    // Forces navigation to a view for the given date.
11222    // `viewType` can be a specific view name or a generic one like "week" or "day".
11223    Calendar.prototype.zoomTo = function (newDate, viewType) {
11224        var spec;
11225        viewType = viewType || 'day'; // day is default zoom
11226        spec = this.viewSpecManager.getViewSpec(viewType) ||
11227            this.viewSpecManager.getUnitViewSpec(viewType);
11228        this.currentDate = newDate.clone();
11229        this.renderView(spec ? spec.type : null);
11230    };
11231    // Current Date
11232    // -----------------------------------------------------------------------------------------------------------------
11233    Calendar.prototype.initCurrentDate = function () {
11234        var defaultDateInput = this.opt('defaultDate');
11235        // compute the initial ambig-timezone date
11236        if (defaultDateInput != null) {
11237            this.currentDate = this.moment(defaultDateInput).stripZone();
11238        }
11239        else {
11240            this.currentDate = this.getNow(); // getNow already returns unzoned
11241        }
11242    };
11243    Calendar.prototype.prev = function () {
11244        var view = this.view;
11245        var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile'));
11246        if (prevInfo.isValid) {
11247            this.currentDate = prevInfo.date;
11248            this.renderView();
11249        }
11250    };
11251    Calendar.prototype.next = function () {
11252        var view = this.view;
11253        var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile'));
11254        if (nextInfo.isValid) {
11255            this.currentDate = nextInfo.date;
11256            this.renderView();
11257        }
11258    };
11259    Calendar.prototype.prevYear = function () {
11260        this.currentDate.add(-1, 'years');
11261        this.renderView();
11262    };
11263    Calendar.prototype.nextYear = function () {
11264        this.currentDate.add(1, 'years');
11265        this.renderView();
11266    };
11267    Calendar.prototype.today = function () {
11268        this.currentDate = this.getNow(); // should deny like prev/next?
11269        this.renderView();
11270    };
11271    Calendar.prototype.gotoDate = function (zonedDateInput) {
11272        this.currentDate = this.moment(zonedDateInput).stripZone();
11273        this.renderView();
11274    };
11275    Calendar.prototype.incrementDate = function (delta) {
11276        this.currentDate.add(moment.duration(delta));
11277        this.renderView();
11278    };
11279    // for external API
11280    Calendar.prototype.getDate = function () {
11281        return this.applyTimezone(this.currentDate); // infuse the calendar's timezone
11282    };
11283    // Loading Triggering
11284    // -----------------------------------------------------------------------------------------------------------------
11285    // Should be called when any type of async data fetching begins
11286    Calendar.prototype.pushLoading = function () {
11287        if (!(this.loadingLevel++)) {
11288            this.publiclyTrigger('loading', [true, this.view]);
11289        }
11290    };
11291    // Should be called when any type of async data fetching completes
11292    Calendar.prototype.popLoading = function () {
11293        if (!(--this.loadingLevel)) {
11294            this.publiclyTrigger('loading', [false, this.view]);
11295        }
11296    };
11297    // High-level Rendering
11298    // -----------------------------------------------------------------------------------
11299    Calendar.prototype.render = function () {
11300        if (!this.contentEl) {
11301            this.initialRender();
11302        }
11303        else if (this.elementVisible()) {
11304            // mainly for the public API
11305            this.calcSize();
11306            this.updateViewSize();
11307        }
11308    };
11309    Calendar.prototype.initialRender = function () {
11310        var _this = this;
11311        var el = this.el;
11312        el.addClass('fc');
11313        // event delegation for nav links
11314        el.on('click.fc', 'a[data-goto]', function (ev) {
11315            var anchorEl = $(ev.currentTarget);
11316            var gotoOptions = anchorEl.data('goto'); // will automatically parse JSON
11317            var date = _this.moment(gotoOptions.date);
11318            var viewType = gotoOptions.type;
11319            // property like "navLinkDayClick". might be a string or a function
11320            var customAction = _this.view.opt('navLink' + util_1.capitaliseFirstLetter(viewType) + 'Click');
11321            if (typeof customAction === 'function') {
11322                customAction(date, ev);
11323            }
11324            else {
11325                if (typeof customAction === 'string') {
11326                    viewType = customAction;
11327                }
11328                _this.zoomTo(date, viewType);
11329            }
11330        });
11331        // called immediately, and upon option change
11332        this.optionsManager.watch('settingTheme', ['?theme', '?themeSystem'], function (opts) {
11333            var themeClass = ThemeRegistry_1.getThemeSystemClass(opts.themeSystem || opts.theme);
11334            var theme = new themeClass(_this.optionsManager);
11335            var widgetClass = theme.getClass('widget');
11336            _this.theme = theme;
11337            if (widgetClass) {
11338                el.addClass(widgetClass);
11339            }
11340        }, function () {
11341            var widgetClass = _this.theme.getClass('widget');
11342            _this.theme = null;
11343            if (widgetClass) {
11344                el.removeClass(widgetClass);
11345            }
11346        });
11347        this.optionsManager.watch('settingBusinessHourGenerator', ['?businessHours'], function (deps) {
11348            _this.businessHourGenerator = new BusinessHourGenerator_1.default(deps.businessHours, _this);
11349            if (_this.view) {
11350                _this.view.set('businessHourGenerator', _this.businessHourGenerator);
11351            }
11352        }, function () {
11353            _this.businessHourGenerator = null;
11354        });
11355        // called immediately, and upon option change.
11356        // HACK: locale often affects isRTL, so we explicitly listen to that too.
11357        this.optionsManager.watch('applyingDirClasses', ['?isRTL', '?locale'], function (opts) {
11358            el.toggleClass('fc-ltr', !opts.isRTL);
11359            el.toggleClass('fc-rtl', opts.isRTL);
11360        });
11361        this.contentEl = $("<div class='fc-view-container'>").prependTo(el);
11362        this.initToolbars();
11363        this.renderHeader();
11364        this.renderFooter();
11365        this.renderView(this.opt('defaultView'));
11366        if (this.opt('handleWindowResize')) {
11367            $(window).resize(this.windowResizeProxy = util_1.debounce(// prevents rapid calls
11368            this.windowResize.bind(this), this.opt('windowResizeDelay')));
11369        }
11370    };
11371    Calendar.prototype.destroy = function () {
11372        if (this.view) {
11373            this.clearView();
11374        }
11375        this.toolbarsManager.proxyCall('removeElement');
11376        this.contentEl.remove();
11377        this.el.removeClass('fc fc-ltr fc-rtl');
11378        // removes theme-related root className
11379        this.optionsManager.unwatch('settingTheme');
11380        this.optionsManager.unwatch('settingBusinessHourGenerator');
11381        this.el.off('.fc'); // unbind nav link handlers
11382        if (this.windowResizeProxy) {
11383            $(window).unbind('resize', this.windowResizeProxy);
11384            this.windowResizeProxy = null;
11385        }
11386        GlobalEmitter_1.default.unneeded();
11387    };
11388    Calendar.prototype.elementVisible = function () {
11389        return this.el.is(':visible');
11390    };
11391    // Render Queue
11392    // -----------------------------------------------------------------------------------------------------------------
11393    Calendar.prototype.bindViewHandlers = function (view) {
11394        var _this = this;
11395        view.watch('titleForCalendar', ['title'], function (deps) {
11396            if (view === _this.view) { // hack
11397                _this.setToolbarsTitle(deps.title);
11398            }
11399        });
11400        view.watch('dateProfileForCalendar', ['dateProfile'], function (deps) {
11401            if (view === _this.view) { // hack
11402                _this.currentDate = deps.dateProfile.date; // might have been constrained by view dates
11403                _this.updateToolbarButtons(deps.dateProfile);
11404            }
11405        });
11406    };
11407    Calendar.prototype.unbindViewHandlers = function (view) {
11408        view.unwatch('titleForCalendar');
11409        view.unwatch('dateProfileForCalendar');
11410    };
11411    // View Rendering
11412    // -----------------------------------------------------------------------------------
11413    // Renders a view because of a date change, view-type change, or for the first time.
11414    // If not given a viewType, keep the current view but render different dates.
11415    // Accepts an optional scroll state to restore to.
11416    Calendar.prototype.renderView = function (viewType) {
11417        var oldView = this.view;
11418        var newView;
11419        this.freezeContentHeight();
11420        if (oldView && viewType && oldView.type !== viewType) {
11421            this.clearView();
11422        }
11423        // if viewType changed, or the view was never created, create a fresh view
11424        if (!this.view && viewType) {
11425            newView = this.view =
11426                this.viewsByType[viewType] ||
11427                    (this.viewsByType[viewType] = this.instantiateView(viewType));
11428            this.bindViewHandlers(newView);
11429            newView.startBatchRender(); // so that setElement+setDate rendering are joined
11430            newView.setElement($("<div class='fc-view fc-" + viewType + "-view'>").appendTo(this.contentEl));
11431            this.toolbarsManager.proxyCall('activateButton', viewType);
11432        }
11433        if (this.view) {
11434            // prevent unnecessary change firing
11435            if (this.view.get('businessHourGenerator') !== this.businessHourGenerator) {
11436                this.view.set('businessHourGenerator', this.businessHourGenerator);
11437            }
11438            this.view.setDate(this.currentDate);
11439            if (newView) {
11440                newView.stopBatchRender();
11441            }
11442        }
11443        this.thawContentHeight();
11444    };
11445    // Unrenders the current view and reflects this change in the Header.
11446    // Unregsiters the `view`, but does not remove from viewByType hash.
11447    Calendar.prototype.clearView = function () {
11448        var currentView = this.view;
11449        this.toolbarsManager.proxyCall('deactivateButton', currentView.type);
11450        this.unbindViewHandlers(currentView);
11451        currentView.removeElement();
11452        currentView.unsetDate(); // so bindViewHandlers doesn't fire with old values next time
11453        this.view = null;
11454    };
11455    // Destroys the view, including the view object. Then, re-instantiates it and renders it.
11456    // Maintains the same scroll state.
11457    // TODO: maintain any other user-manipulated state.
11458    Calendar.prototype.reinitView = function () {
11459        var oldView = this.view;
11460        var scroll = oldView.queryScroll(); // wouldn't be so complicated if Calendar owned the scroll
11461        this.freezeContentHeight();
11462        this.clearView();
11463        this.calcSize();
11464        this.renderView(oldView.type); // needs the type to freshly render
11465        this.view.applyScroll(scroll);
11466        this.thawContentHeight();
11467    };
11468    // Resizing
11469    // -----------------------------------------------------------------------------------
11470    Calendar.prototype.getSuggestedViewHeight = function () {
11471        if (this.suggestedViewHeight == null) {
11472            this.calcSize();
11473        }
11474        return this.suggestedViewHeight;
11475    };
11476    Calendar.prototype.isHeightAuto = function () {
11477        return this.opt('contentHeight') === 'auto' || this.opt('height') === 'auto';
11478    };
11479    Calendar.prototype.updateViewSize = function (isResize) {
11480        if (isResize === void 0) { isResize = false; }
11481        var view = this.view;
11482        var scroll;
11483        if (!this.ignoreUpdateViewSize && view) {
11484            if (isResize) {
11485                this.calcSize();
11486                scroll = view.queryScroll();
11487            }
11488            this.ignoreUpdateViewSize++;
11489            view.updateSize(this.getSuggestedViewHeight(), this.isHeightAuto(), isResize);
11490            this.ignoreUpdateViewSize--;
11491            if (isResize) {
11492                view.applyScroll(scroll);
11493            }
11494            return true; // signal success
11495        }
11496    };
11497    Calendar.prototype.calcSize = function () {
11498        if (this.elementVisible()) {
11499            this._calcSize();
11500        }
11501    };
11502    Calendar.prototype._calcSize = function () {
11503        var contentHeightInput = this.opt('contentHeight');
11504        var heightInput = this.opt('height');
11505        if (typeof contentHeightInput === 'number') { // exists and not 'auto'
11506            this.suggestedViewHeight = contentHeightInput;
11507        }
11508        else if (typeof contentHeightInput === 'function') { // exists and is a function
11509            this.suggestedViewHeight = contentHeightInput();
11510        }
11511        else if (typeof heightInput === 'number') { // exists and not 'auto'
11512            this.suggestedViewHeight = heightInput - this.queryToolbarsHeight();
11513        }
11514        else if (typeof heightInput === 'function') { // exists and is a function
11515            this.suggestedViewHeight = heightInput() - this.queryToolbarsHeight();
11516        }
11517        else if (heightInput === 'parent') { // set to height of parent element
11518            this.suggestedViewHeight = this.el.parent().height() - this.queryToolbarsHeight();
11519        }
11520        else {
11521            this.suggestedViewHeight = Math.round(this.contentEl.width() /
11522                Math.max(this.opt('aspectRatio'), .5));
11523        }
11524    };
11525    Calendar.prototype.windowResize = function (ev) {
11526        if (
11527        // the purpose: so we don't process jqui "resize" events that have bubbled up
11528        // cast to any because .target, which is Element, can't be compared to window for some reason.
11529        ev.target === window &&
11530            this.view &&
11531            this.view.isDatesRendered) {
11532            if (this.updateViewSize(true)) { // isResize=true, returns true on success
11533                this.publiclyTrigger('windowResize', [this.view]);
11534            }
11535        }
11536    };
11537    /* Height "Freezing"
11538    -----------------------------------------------------------------------------*/
11539    Calendar.prototype.freezeContentHeight = function () {
11540        if (!(this.freezeContentHeightDepth++)) {
11541            this.forceFreezeContentHeight();
11542        }
11543    };
11544    Calendar.prototype.forceFreezeContentHeight = function () {
11545        this.contentEl.css({
11546            width: '100%',
11547            height: this.contentEl.height(),
11548            overflow: 'hidden'
11549        });
11550    };
11551    Calendar.prototype.thawContentHeight = function () {
11552        this.freezeContentHeightDepth--;
11553        // always bring back to natural height
11554        this.contentEl.css({
11555            width: '',
11556            height: '',
11557            overflow: ''
11558        });
11559        // but if there are future thaws, re-freeze
11560        if (this.freezeContentHeightDepth) {
11561            this.forceFreezeContentHeight();
11562        }
11563    };
11564    // Toolbar
11565    // -----------------------------------------------------------------------------------------------------------------
11566    Calendar.prototype.initToolbars = function () {
11567        this.header = new Toolbar_1.default(this, this.computeHeaderOptions());
11568        this.footer = new Toolbar_1.default(this, this.computeFooterOptions());
11569        this.toolbarsManager = new Iterator_1.default([this.header, this.footer]);
11570    };
11571    Calendar.prototype.computeHeaderOptions = function () {
11572        return {
11573            extraClasses: 'fc-header-toolbar',
11574            layout: this.opt('header')
11575        };
11576    };
11577    Calendar.prototype.computeFooterOptions = function () {
11578        return {
11579            extraClasses: 'fc-footer-toolbar',
11580            layout: this.opt('footer')
11581        };
11582    };
11583    // can be called repeatedly and Header will rerender
11584    Calendar.prototype.renderHeader = function () {
11585        var header = this.header;
11586        header.setToolbarOptions(this.computeHeaderOptions());
11587        header.render();
11588        if (header.el) {
11589            this.el.prepend(header.el);
11590        }
11591    };
11592    // can be called repeatedly and Footer will rerender
11593    Calendar.prototype.renderFooter = function () {
11594        var footer = this.footer;
11595        footer.setToolbarOptions(this.computeFooterOptions());
11596        footer.render();
11597        if (footer.el) {
11598            this.el.append(footer.el);
11599        }
11600    };
11601    Calendar.prototype.setToolbarsTitle = function (title) {
11602        this.toolbarsManager.proxyCall('updateTitle', title);
11603    };
11604    Calendar.prototype.updateToolbarButtons = function (dateProfile) {
11605        var now = this.getNow();
11606        var view = this.view;
11607        var todayInfo = view.dateProfileGenerator.build(now);
11608        var prevInfo = view.dateProfileGenerator.buildPrev(view.get('dateProfile'));
11609        var nextInfo = view.dateProfileGenerator.buildNext(view.get('dateProfile'));
11610        this.toolbarsManager.proxyCall((todayInfo.isValid && !dateProfile.currentUnzonedRange.containsDate(now)) ?
11611            'enableButton' :
11612            'disableButton', 'today');
11613        this.toolbarsManager.proxyCall(prevInfo.isValid ?
11614            'enableButton' :
11615            'disableButton', 'prev');
11616        this.toolbarsManager.proxyCall(nextInfo.isValid ?
11617            'enableButton' :
11618            'disableButton', 'next');
11619    };
11620    Calendar.prototype.queryToolbarsHeight = function () {
11621        return this.toolbarsManager.items.reduce(function (accumulator, toolbar) {
11622            var toolbarHeight = toolbar.el ? toolbar.el.outerHeight(true) : 0; // includes margin
11623            return accumulator + toolbarHeight;
11624        }, 0);
11625    };
11626    // Selection
11627    // -----------------------------------------------------------------------------------------------------------------
11628    // this public method receives start/end dates in any format, with any timezone
11629    Calendar.prototype.select = function (zonedStartInput, zonedEndInput) {
11630        this.view.select(this.buildSelectFootprint.apply(this, arguments));
11631    };
11632    Calendar.prototype.unselect = function () {
11633        if (this.view) {
11634            this.view.unselect();
11635        }
11636    };
11637    // Given arguments to the select method in the API, returns a span (unzoned start/end and other info)
11638    Calendar.prototype.buildSelectFootprint = function (zonedStartInput, zonedEndInput) {
11639        var start = this.moment(zonedStartInput).stripZone();
11640        var end;
11641        if (zonedEndInput) {
11642            end = this.moment(zonedEndInput).stripZone();
11643        }
11644        else if (start.hasTime()) {
11645            end = start.clone().add(this.defaultTimedEventDuration);
11646        }
11647        else {
11648            end = start.clone().add(this.defaultAllDayEventDuration);
11649        }
11650        return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), !start.hasTime());
11651    };
11652    // Date Utils
11653    // -----------------------------------------------------------------------------------------------------------------
11654    Calendar.prototype.initMomentInternals = function () {
11655        var _this = this;
11656        this.defaultAllDayEventDuration = moment.duration(this.opt('defaultAllDayEventDuration'));
11657        this.defaultTimedEventDuration = moment.duration(this.opt('defaultTimedEventDuration'));
11658        // Called immediately, and when any of the options change.
11659        // Happens before any internal objects rebuild or rerender, because this is very core.
11660        this.optionsManager.watch('buildingMomentLocale', [
11661            '?locale', '?monthNames', '?monthNamesShort', '?dayNames', '?dayNamesShort',
11662            '?firstDay', '?weekNumberCalculation'
11663        ], function (opts) {
11664            var weekNumberCalculation = opts.weekNumberCalculation;
11665            var firstDay = opts.firstDay;
11666            var _week;
11667            // normalize
11668            if (weekNumberCalculation === 'iso') {
11669                weekNumberCalculation = 'ISO'; // normalize
11670            }
11671            var localeData = Object.create(// make a cheap copy
11672            locale_1.getMomentLocaleData(opts.locale) // will fall back to en
11673            );
11674            if (opts.monthNames) {
11675                localeData._months = opts.monthNames;
11676            }
11677            if (opts.monthNamesShort) {
11678                localeData._monthsShort = opts.monthNamesShort;
11679            }
11680            if (opts.dayNames) {
11681                localeData._weekdays = opts.dayNames;
11682            }
11683            if (opts.dayNamesShort) {
11684                localeData._weekdaysShort = opts.dayNamesShort;
11685            }
11686            if (firstDay == null && weekNumberCalculation === 'ISO') {
11687                firstDay = 1;
11688            }
11689            if (firstDay != null) {
11690                _week = Object.create(localeData._week); // _week: { dow: # }
11691                _week.dow = firstDay;
11692                localeData._week = _week;
11693            }
11694            if ( // whitelist certain kinds of input
11695            weekNumberCalculation === 'ISO' ||
11696                weekNumberCalculation === 'local' ||
11697                typeof weekNumberCalculation === 'function') {
11698                localeData._fullCalendar_weekCalc = weekNumberCalculation; // moment-ext will know what to do with it
11699            }
11700            _this.localeData = localeData;
11701            // If the internal current date object already exists, move to new locale.
11702            // We do NOT need to do this technique for event dates, because this happens when converting to "segments".
11703            if (_this.currentDate) {
11704                _this.localizeMoment(_this.currentDate); // sets to localeData
11705            }
11706        });
11707    };
11708    // Builds a moment using the settings of the current calendar: timezone and locale.
11709    // Accepts anything the vanilla moment() constructor accepts.
11710    Calendar.prototype.moment = function () {
11711        var args = [];
11712        for (var _i = 0; _i < arguments.length; _i++) {
11713            args[_i] = arguments[_i];
11714        }
11715        var mom;
11716        if (this.opt('timezone') === 'local') {
11717            mom = moment_ext_1.default.apply(null, args);
11718            // Force the moment to be local, because momentExt doesn't guarantee it.
11719            if (mom.hasTime()) { // don't give ambiguously-timed moments a local zone
11720                mom.local();
11721            }
11722        }
11723        else if (this.opt('timezone') === 'UTC') {
11724            mom = moment_ext_1.default.utc.apply(null, args); // process as UTC
11725        }
11726        else {
11727            mom = moment_ext_1.default.parseZone.apply(null, args); // let the input decide the zone
11728        }
11729        this.localizeMoment(mom); // TODO
11730        return mom;
11731    };
11732    Calendar.prototype.msToMoment = function (ms, forceAllDay) {
11733        var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC
11734        if (forceAllDay) {
11735            mom.stripTime();
11736        }
11737        else {
11738            mom = this.applyTimezone(mom); // may or may not apply locale
11739        }
11740        this.localizeMoment(mom);
11741        return mom;
11742    };
11743    Calendar.prototype.msToUtcMoment = function (ms, forceAllDay) {
11744        var mom = moment_ext_1.default.utc(ms); // TODO: optimize by using Date.UTC
11745        if (forceAllDay) {
11746            mom.stripTime();
11747        }
11748        this.localizeMoment(mom);
11749        return mom;
11750    };
11751    // Updates the given moment's locale settings to the current calendar locale settings.
11752    Calendar.prototype.localizeMoment = function (mom) {
11753        mom._locale = this.localeData;
11754    };
11755    // Returns a boolean about whether or not the calendar knows how to calculate
11756    // the timezone offset of arbitrary dates in the current timezone.
11757    Calendar.prototype.getIsAmbigTimezone = function () {
11758        return this.opt('timezone') !== 'local' && this.opt('timezone') !== 'UTC';
11759    };
11760    // Returns a copy of the given date in the current timezone. Has no effect on dates without times.
11761    Calendar.prototype.applyTimezone = function (date) {
11762        if (!date.hasTime()) {
11763            return date.clone();
11764        }
11765        var zonedDate = this.moment(date.toArray());
11766        var timeAdjust = date.time().asMilliseconds() - zonedDate.time().asMilliseconds();
11767        var adjustedZonedDate;
11768        // Safari sometimes has problems with this coersion when near DST. Adjust if necessary. (bug #2396)
11769        if (timeAdjust) { // is the time result different than expected?
11770            adjustedZonedDate = zonedDate.clone().add(timeAdjust); // add milliseconds
11771            if (date.time().asMilliseconds() - adjustedZonedDate.time().asMilliseconds() === 0) { // does it match perfectly now?
11772                zonedDate = adjustedZonedDate;
11773            }
11774        }
11775        return zonedDate;
11776    };
11777    /*
11778    Assumes the footprint is non-open-ended.
11779    */
11780    Calendar.prototype.footprintToDateProfile = function (componentFootprint, ignoreEnd) {
11781        if (ignoreEnd === void 0) { ignoreEnd = false; }
11782        var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs);
11783        var end;
11784        if (!ignoreEnd) {
11785            end = moment_ext_1.default.utc(componentFootprint.unzonedRange.endMs);
11786        }
11787        if (componentFootprint.isAllDay) {
11788            start.stripTime();
11789            if (end) {
11790                end.stripTime();
11791            }
11792        }
11793        else {
11794            start = this.applyTimezone(start);
11795            if (end) {
11796                end = this.applyTimezone(end);
11797            }
11798        }
11799        this.localizeMoment(start);
11800        if (end) {
11801            this.localizeMoment(end);
11802        }
11803        return new EventDateProfile_1.default(start, end, this);
11804    };
11805    // Returns a moment for the current date, as defined by the client's computer or from the `now` option.
11806    // Will return an moment with an ambiguous timezone.
11807    Calendar.prototype.getNow = function () {
11808        var now = this.opt('now');
11809        if (typeof now === 'function') {
11810            now = now();
11811        }
11812        return this.moment(now).stripZone();
11813    };
11814    // Produces a human-readable string for the given duration.
11815    // Side-effect: changes the locale of the given duration.
11816    Calendar.prototype.humanizeDuration = function (duration) {
11817        return duration.locale(this.opt('locale')).humanize();
11818    };
11819    // will return `null` if invalid range
11820    Calendar.prototype.parseUnzonedRange = function (rangeInput) {
11821        var start = null;
11822        var end = null;
11823        if (rangeInput.start) {
11824            start = this.moment(rangeInput.start).stripZone();
11825        }
11826        if (rangeInput.end) {
11827            end = this.moment(rangeInput.end).stripZone();
11828        }
11829        if (!start && !end) {
11830            return null;
11831        }
11832        if (start && end && end.isBefore(start)) {
11833            return null;
11834        }
11835        return new UnzonedRange_1.default(start, end);
11836    };
11837    // Event-Date Utilities
11838    // -----------------------------------------------------------------------------------------------------------------
11839    Calendar.prototype.initEventManager = function () {
11840        var _this = this;
11841        var eventManager = new EventManager_1.default(this);
11842        var rawSources = this.opt('eventSources') || [];
11843        var singleRawSource = this.opt('events');
11844        this.eventManager = eventManager;
11845        if (singleRawSource) {
11846            rawSources.unshift(singleRawSource);
11847        }
11848        eventManager.on('release', function (eventsPayload) {
11849            _this.trigger('eventsReset', eventsPayload);
11850        });
11851        eventManager.freeze();
11852        rawSources.forEach(function (rawSource) {
11853            var source = EventSourceParser_1.default.parse(rawSource, _this);
11854            if (source) {
11855                eventManager.addSource(source);
11856            }
11857        });
11858        eventManager.thaw();
11859    };
11860    Calendar.prototype.requestEvents = function (start, end) {
11861        return this.eventManager.requestEvents(start, end, this.opt('timezone'), !this.opt('lazyFetching'));
11862    };
11863    // Get an event's normalized end date. If not present, calculate it from the defaults.
11864    Calendar.prototype.getEventEnd = function (event) {
11865        if (event.end) {
11866            return event.end.clone();
11867        }
11868        else {
11869            return this.getDefaultEventEnd(event.allDay, event.start);
11870        }
11871    };
11872    // Given an event's allDay status and start date, return what its fallback end date should be.
11873    // TODO: rename to computeDefaultEventEnd
11874    Calendar.prototype.getDefaultEventEnd = function (allDay, zonedStart) {
11875        var end = zonedStart.clone();
11876        if (allDay) {
11877            end.stripTime().add(this.defaultAllDayEventDuration);
11878        }
11879        else {
11880            end.add(this.defaultTimedEventDuration);
11881        }
11882        if (this.getIsAmbigTimezone()) {
11883            end.stripZone(); // we don't know what the tzo should be
11884        }
11885        return end;
11886    };
11887    // Public Events API
11888    // -----------------------------------------------------------------------------------------------------------------
11889    Calendar.prototype.rerenderEvents = function () {
11890        this.view.flash('displayingEvents');
11891    };
11892    Calendar.prototype.refetchEvents = function () {
11893        this.eventManager.refetchAllSources();
11894    };
11895    Calendar.prototype.renderEvents = function (eventInputs, isSticky) {
11896        this.eventManager.freeze();
11897        for (var i = 0; i < eventInputs.length; i++) {
11898            this.renderEvent(eventInputs[i], isSticky);
11899        }
11900        this.eventManager.thaw();
11901    };
11902    Calendar.prototype.renderEvent = function (eventInput, isSticky) {
11903        if (isSticky === void 0) { isSticky = false; }
11904        var eventManager = this.eventManager;
11905        var eventDef = EventDefParser_1.default.parse(eventInput, eventInput.source || eventManager.stickySource);
11906        if (eventDef) {
11907            eventManager.addEventDef(eventDef, isSticky);
11908        }
11909    };
11910    // legacyQuery operates on legacy event instance objects
11911    Calendar.prototype.removeEvents = function (legacyQuery) {
11912        var eventManager = this.eventManager;
11913        var legacyInstances = [];
11914        var idMap = {};
11915        var eventDef;
11916        var i;
11917        if (legacyQuery == null) { // shortcut for removing all
11918            eventManager.removeAllEventDefs(); // persist=true
11919        }
11920        else {
11921            eventManager.getEventInstances().forEach(function (eventInstance) {
11922                legacyInstances.push(eventInstance.toLegacy());
11923            });
11924            legacyInstances = filterLegacyEventInstances(legacyInstances, legacyQuery);
11925            // compute unique IDs
11926            for (i = 0; i < legacyInstances.length; i++) {
11927                eventDef = this.eventManager.getEventDefByUid(legacyInstances[i]._id);
11928                idMap[eventDef.id] = true;
11929            }
11930            eventManager.freeze();
11931            for (i in idMap) { // reuse `i` as an "id"
11932                eventManager.removeEventDefsById(i); // persist=true
11933            }
11934            eventManager.thaw();
11935        }
11936    };
11937    // legacyQuery operates on legacy event instance objects
11938    Calendar.prototype.clientEvents = function (legacyQuery) {
11939        var legacyEventInstances = [];
11940        this.eventManager.getEventInstances().forEach(function (eventInstance) {
11941            legacyEventInstances.push(eventInstance.toLegacy());
11942        });
11943        return filterLegacyEventInstances(legacyEventInstances, legacyQuery);
11944    };
11945    Calendar.prototype.updateEvents = function (eventPropsArray) {
11946        this.eventManager.freeze();
11947        for (var i = 0; i < eventPropsArray.length; i++) {
11948            this.updateEvent(eventPropsArray[i]);
11949        }
11950        this.eventManager.thaw();
11951    };
11952    Calendar.prototype.updateEvent = function (eventProps) {
11953        var eventDef = this.eventManager.getEventDefByUid(eventProps._id);
11954        var eventInstance;
11955        var eventDefMutation;
11956        if (eventDef instanceof SingleEventDef_1.default) {
11957            eventInstance = eventDef.buildInstance();
11958            eventDefMutation = EventDefMutation_1.default.createFromRawProps(eventInstance, eventProps, // raw props
11959            null // largeUnit -- who uses it?
11960            );
11961            this.eventManager.mutateEventsWithId(eventDef.id, eventDefMutation); // will release
11962        }
11963    };
11964    // Public Event Sources API
11965    // ------------------------------------------------------------------------------------
11966    Calendar.prototype.getEventSources = function () {
11967        return this.eventManager.otherSources.slice(); // clone
11968    };
11969    Calendar.prototype.getEventSourceById = function (id) {
11970        return this.eventManager.getSourceById(EventSource_1.default.normalizeId(id));
11971    };
11972    Calendar.prototype.addEventSource = function (sourceInput) {
11973        var source = EventSourceParser_1.default.parse(sourceInput, this);
11974        if (source) {
11975            this.eventManager.addSource(source);
11976        }
11977    };
11978    Calendar.prototype.removeEventSources = function (sourceMultiQuery) {
11979        var eventManager = this.eventManager;
11980        var sources;
11981        var i;
11982        if (sourceMultiQuery == null) {
11983            this.eventManager.removeAllSources();
11984        }
11985        else {
11986            sources = eventManager.multiQuerySources(sourceMultiQuery);
11987            eventManager.freeze();
11988            for (i = 0; i < sources.length; i++) {
11989                eventManager.removeSource(sources[i]);
11990            }
11991            eventManager.thaw();
11992        }
11993    };
11994    Calendar.prototype.removeEventSource = function (sourceQuery) {
11995        var eventManager = this.eventManager;
11996        var sources = eventManager.querySources(sourceQuery);
11997        var i;
11998        eventManager.freeze();
11999        for (i = 0; i < sources.length; i++) {
12000            eventManager.removeSource(sources[i]);
12001        }
12002        eventManager.thaw();
12003    };
12004    Calendar.prototype.refetchEventSources = function (sourceMultiQuery) {
12005        var eventManager = this.eventManager;
12006        var sources = eventManager.multiQuerySources(sourceMultiQuery);
12007        var i;
12008        eventManager.freeze();
12009        for (i = 0; i < sources.length; i++) {
12010            eventManager.refetchSource(sources[i]);
12011        }
12012        eventManager.thaw();
12013    };
12014    // not for internal use. use options module directly instead.
12015    Calendar.defaults = options_1.globalDefaults;
12016    Calendar.englishDefaults = options_1.englishDefaults;
12017    Calendar.rtlDefaults = options_1.rtlDefaults;
12018    return Calendar;
12019}());
12020exports.default = Calendar;
12021EmitterMixin_1.default.mixInto(Calendar);
12022ListenerMixin_1.default.mixInto(Calendar);
12023function filterLegacyEventInstances(legacyEventInstances, legacyQuery) {
12024    if (legacyQuery == null) {
12025        return legacyEventInstances;
12026    }
12027    else if ($.isFunction(legacyQuery)) {
12028        return legacyEventInstances.filter(legacyQuery);
12029    }
12030    else { // an event ID
12031        legacyQuery += ''; // normalize to string
12032        return legacyEventInstances.filter(function (legacyEventInstance) {
12033            // soft comparison because id not be normalized to string
12034            // tslint:disable-next-line
12035            return legacyEventInstance.id == legacyQuery ||
12036                legacyEventInstance._id === legacyQuery; // can specify internal id, but must exactly match
12037        });
12038    }
12039}
12040
12041
12042/***/ }),
12043/* 233 */
12044/***/ (function(module, exports, __webpack_require__) {
12045
12046Object.defineProperty(exports, "__esModule", { value: true });
12047var tslib_1 = __webpack_require__(2);
12048var $ = __webpack_require__(3);
12049var moment = __webpack_require__(0);
12050var exportHooks = __webpack_require__(18);
12051var util_1 = __webpack_require__(4);
12052var moment_ext_1 = __webpack_require__(11);
12053var ListenerMixin_1 = __webpack_require__(7);
12054var HitDragListener_1 = __webpack_require__(17);
12055var SingleEventDef_1 = __webpack_require__(9);
12056var EventInstanceGroup_1 = __webpack_require__(20);
12057var EventSource_1 = __webpack_require__(6);
12058var Interaction_1 = __webpack_require__(14);
12059var ExternalDropping = /** @class */ (function (_super) {
12060    tslib_1.__extends(ExternalDropping, _super);
12061    function ExternalDropping() {
12062        var _this = _super !== null && _super.apply(this, arguments) || this;
12063        _this.isDragging = false; // jqui-dragging an external element? boolean
12064        return _this;
12065    }
12066    /*
12067    component impements:
12068      - eventRangesToEventFootprints
12069      - isEventInstanceGroupAllowed
12070      - isExternalInstanceGroupAllowed
12071      - renderDrag
12072      - unrenderDrag
12073    */
12074    ExternalDropping.prototype.end = function () {
12075        if (this.dragListener) {
12076            this.dragListener.endInteraction();
12077        }
12078    };
12079    ExternalDropping.prototype.bindToDocument = function () {
12080        this.listenTo($(document), {
12081            dragstart: this.handleDragStart,
12082            sortstart: this.handleDragStart // jqui
12083        });
12084    };
12085    ExternalDropping.prototype.unbindFromDocument = function () {
12086        this.stopListeningTo($(document));
12087    };
12088    // Called when a jQuery UI drag is initiated anywhere in the DOM
12089    ExternalDropping.prototype.handleDragStart = function (ev, ui) {
12090        var el;
12091        var accept;
12092        if (this.opt('droppable')) { // only listen if this setting is on
12093            el = $((ui ? ui.item : null) || ev.target);
12094            // Test that the dragged element passes the dropAccept selector or filter function.
12095            // FYI, the default is "*" (matches all)
12096            accept = this.opt('dropAccept');
12097            if ($.isFunction(accept) ? accept.call(el[0], el) : el.is(accept)) {
12098                if (!this.isDragging) { // prevent double-listening if fired twice
12099                    this.listenToExternalDrag(el, ev, ui);
12100                }
12101            }
12102        }
12103    };
12104    // Called when a jQuery UI drag starts and it needs to be monitored for dropping
12105    ExternalDropping.prototype.listenToExternalDrag = function (el, ev, ui) {
12106        var _this = this;
12107        var component = this.component;
12108        var view = this.view;
12109        var meta = getDraggedElMeta(el); // extra data about event drop, including possible event to create
12110        var singleEventDef; // a null value signals an unsuccessful drag
12111        // listener that tracks mouse movement over date-associated pixel regions
12112        var dragListener = this.dragListener = new HitDragListener_1.default(component, {
12113            interactionStart: function () {
12114                _this.isDragging = true;
12115            },
12116            hitOver: function (hit) {
12117                var isAllowed = true;
12118                var hitFootprint = hit.component.getSafeHitFootprint(hit); // hit might not belong to this grid
12119                var mutatedEventInstanceGroup;
12120                if (hitFootprint) {
12121                    singleEventDef = _this.computeExternalDrop(hitFootprint, meta);
12122                    if (singleEventDef) {
12123                        mutatedEventInstanceGroup = new EventInstanceGroup_1.default(singleEventDef.buildInstances());
12124                        isAllowed = meta.eventProps ? // isEvent?
12125                            component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup) :
12126                            component.isExternalInstanceGroupAllowed(mutatedEventInstanceGroup);
12127                    }
12128                    else {
12129                        isAllowed = false;
12130                    }
12131                }
12132                else {
12133                    isAllowed = false;
12134                }
12135                if (!isAllowed) {
12136                    singleEventDef = null;
12137                    util_1.disableCursor();
12138                }
12139                if (singleEventDef) {
12140                    component.renderDrag(// called without a seg parameter
12141                    component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, view.calendar)));
12142                }
12143            },
12144            hitOut: function () {
12145                singleEventDef = null; // signal unsuccessful
12146            },
12147            hitDone: function () {
12148                util_1.enableCursor();
12149                component.unrenderDrag();
12150            },
12151            interactionEnd: function (ev) {
12152                if (singleEventDef) { // element was dropped on a valid hit
12153                    view.reportExternalDrop(singleEventDef, Boolean(meta.eventProps), // isEvent
12154                    Boolean(meta.stick), // isSticky
12155                    el, ev, ui);
12156                }
12157                _this.isDragging = false;
12158                _this.dragListener = null;
12159            }
12160        });
12161        dragListener.startDrag(ev); // start listening immediately
12162    };
12163    // Given a hit to be dropped upon, and misc data associated with the jqui drag (guaranteed to be a plain object),
12164    // returns the zoned start/end dates for the event that would result from the hypothetical drop. end might be null.
12165    // Returning a null value signals an invalid drop hit.
12166    // DOES NOT consider overlap/constraint.
12167    // Assumes both footprints are non-open-ended.
12168    ExternalDropping.prototype.computeExternalDrop = function (componentFootprint, meta) {
12169        var calendar = this.view.calendar;
12170        var start = moment_ext_1.default.utc(componentFootprint.unzonedRange.startMs).stripZone();
12171        var end;
12172        var eventDef;
12173        if (componentFootprint.isAllDay) {
12174            // if dropped on an all-day span, and element's metadata specified a time, set it
12175            if (meta.startTime) {
12176                start.time(meta.startTime);
12177            }
12178            else {
12179                start.stripTime();
12180            }
12181        }
12182        if (meta.duration) {
12183            end = start.clone().add(meta.duration);
12184        }
12185        start = calendar.applyTimezone(start);
12186        if (end) {
12187            end = calendar.applyTimezone(end);
12188        }
12189        eventDef = SingleEventDef_1.default.parse($.extend({}, meta.eventProps, {
12190            start: start,
12191            end: end
12192        }), new EventSource_1.default(calendar));
12193        return eventDef;
12194    };
12195    return ExternalDropping;
12196}(Interaction_1.default));
12197exports.default = ExternalDropping;
12198ListenerMixin_1.default.mixInto(ExternalDropping);
12199/* External-Dragging-Element Data
12200----------------------------------------------------------------------------------------------------------------------*/
12201// Require all HTML5 data-* attributes used by FullCalendar to have this prefix.
12202// A value of '' will query attributes like data-event. A value of 'fc' will query attributes like data-fc-event.
12203exportHooks.dataAttrPrefix = '';
12204// Given a jQuery element that might represent a dragged FullCalendar event, returns an intermediate data structure
12205// to be used for Event Object creation.
12206// A defined `.eventProps`, even when empty, indicates that an event should be created.
12207function getDraggedElMeta(el) {
12208    var prefix = exportHooks.dataAttrPrefix;
12209    var eventProps; // properties for creating the event, not related to date/time
12210    var startTime; // a Duration
12211    var duration;
12212    var stick;
12213    if (prefix) {
12214        prefix += '-';
12215    }
12216    eventProps = el.data(prefix + 'event') || null;
12217    if (eventProps) {
12218        if (typeof eventProps === 'object') {
12219            eventProps = $.extend({}, eventProps); // make a copy
12220        }
12221        else { // something like 1 or true. still signal event creation
12222            eventProps = {};
12223        }
12224        // pluck special-cased date/time properties
12225        startTime = eventProps.start;
12226        if (startTime == null) {
12227            startTime = eventProps.time;
12228        } // accept 'time' as well
12229        duration = eventProps.duration;
12230        stick = eventProps.stick;
12231        delete eventProps.start;
12232        delete eventProps.time;
12233        delete eventProps.duration;
12234        delete eventProps.stick;
12235    }
12236    // fallback to standalone attribute values for each of the date/time properties
12237    if (startTime == null) {
12238        startTime = el.data(prefix + 'start');
12239    }
12240    if (startTime == null) {
12241        startTime = el.data(prefix + 'time');
12242    } // accept 'time' as well
12243    if (duration == null) {
12244        duration = el.data(prefix + 'duration');
12245    }
12246    if (stick == null) {
12247        stick = el.data(prefix + 'stick');
12248    }
12249    // massage into correct data types
12250    startTime = startTime != null ? moment.duration(startTime) : null;
12251    duration = duration != null ? moment.duration(duration) : null;
12252    stick = Boolean(stick);
12253    return { eventProps: eventProps, startTime: startTime, duration: duration, stick: stick };
12254}
12255
12256
12257/***/ }),
12258/* 234 */
12259/***/ (function(module, exports, __webpack_require__) {
12260
12261Object.defineProperty(exports, "__esModule", { value: true });
12262var tslib_1 = __webpack_require__(2);
12263var $ = __webpack_require__(3);
12264var util_1 = __webpack_require__(4);
12265var EventDefMutation_1 = __webpack_require__(39);
12266var EventDefDateMutation_1 = __webpack_require__(40);
12267var HitDragListener_1 = __webpack_require__(17);
12268var Interaction_1 = __webpack_require__(14);
12269var EventResizing = /** @class */ (function (_super) {
12270    tslib_1.__extends(EventResizing, _super);
12271    /*
12272    component impements:
12273      - bindSegHandlerToEl
12274      - publiclyTrigger
12275      - diffDates
12276      - eventRangesToEventFootprints
12277      - isEventInstanceGroupAllowed
12278      - getSafeHitFootprint
12279    */
12280    function EventResizing(component, eventPointing) {
12281        var _this = _super.call(this, component) || this;
12282        _this.isResizing = false;
12283        _this.eventPointing = eventPointing;
12284        return _this;
12285    }
12286    EventResizing.prototype.end = function () {
12287        if (this.dragListener) {
12288            this.dragListener.endInteraction();
12289        }
12290    };
12291    EventResizing.prototype.bindToEl = function (el) {
12292        var component = this.component;
12293        component.bindSegHandlerToEl(el, 'mousedown', this.handleMouseDown.bind(this));
12294        component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this));
12295    };
12296    EventResizing.prototype.handleMouseDown = function (seg, ev) {
12297        if (this.component.canStartResize(seg, ev)) {
12298            this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer'))
12299                .startInteraction(ev, { distance: 5 });
12300        }
12301    };
12302    EventResizing.prototype.handleTouchStart = function (seg, ev) {
12303        if (this.component.canStartResize(seg, ev)) {
12304            this.buildDragListener(seg, $(ev.target).is('.fc-start-resizer'))
12305                .startInteraction(ev);
12306        }
12307    };
12308    // Creates a listener that tracks the user as they resize an event segment.
12309    // Generic enough to work with any type of Grid.
12310    EventResizing.prototype.buildDragListener = function (seg, isStart) {
12311        var _this = this;
12312        var component = this.component;
12313        var view = this.view;
12314        var calendar = view.calendar;
12315        var eventManager = calendar.eventManager;
12316        var el = seg.el;
12317        var eventDef = seg.footprint.eventDef;
12318        var eventInstance = seg.footprint.eventInstance;
12319        var isDragging;
12320        var resizeMutation; // zoned event date properties. falsy if invalid resize
12321        // Tracks mouse movement over the *grid's* coordinate map
12322        var dragListener = this.dragListener = new HitDragListener_1.default(component, {
12323            scroll: this.opt('dragScroll'),
12324            subjectEl: el,
12325            interactionStart: function () {
12326                isDragging = false;
12327            },
12328            dragStart: function (ev) {
12329                isDragging = true;
12330                // ensure a mouseout on the manipulated event has been reported
12331                _this.eventPointing.handleMouseout(seg, ev);
12332                _this.segResizeStart(seg, ev);
12333            },
12334            hitOver: function (hit, isOrig, origHit) {
12335                var isAllowed = true;
12336                var origHitFootprint = component.getSafeHitFootprint(origHit);
12337                var hitFootprint = component.getSafeHitFootprint(hit);
12338                var mutatedEventInstanceGroup;
12339                if (origHitFootprint && hitFootprint) {
12340                    resizeMutation = isStart ?
12341                        _this.computeEventStartResizeMutation(origHitFootprint, hitFootprint, seg.footprint) :
12342                        _this.computeEventEndResizeMutation(origHitFootprint, hitFootprint, seg.footprint);
12343                    if (resizeMutation) {
12344                        mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, resizeMutation);
12345                        isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup);
12346                    }
12347                    else {
12348                        isAllowed = false;
12349                    }
12350                }
12351                else {
12352                    isAllowed = false;
12353                }
12354                if (!isAllowed) {
12355                    resizeMutation = null;
12356                    util_1.disableCursor();
12357                }
12358                else if (resizeMutation.isEmpty()) {
12359                    // no change. (FYI, event dates might have zones)
12360                    resizeMutation = null;
12361                }
12362                if (resizeMutation) {
12363                    view.hideEventsWithId(seg.footprint.eventDef.id);
12364                    view.renderEventResize(component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg);
12365                }
12366            },
12367            hitOut: function () {
12368                resizeMutation = null;
12369            },
12370            hitDone: function () {
12371                view.unrenderEventResize(seg);
12372                view.showEventsWithId(seg.footprint.eventDef.id);
12373                util_1.enableCursor();
12374            },
12375            interactionEnd: function (ev) {
12376                if (isDragging) {
12377                    _this.segResizeStop(seg, ev);
12378                }
12379                if (resizeMutation) { // valid date to resize to?
12380                    // no need to re-show original, will rerender all anyways. esp important if eventRenderWait
12381                    view.reportEventResize(eventInstance, resizeMutation, el, ev);
12382                }
12383                _this.dragListener = null;
12384            }
12385        });
12386        return dragListener;
12387    };
12388    // Called before event segment resizing starts
12389    EventResizing.prototype.segResizeStart = function (seg, ev) {
12390        this.isResizing = true;
12391        this.component.publiclyTrigger('eventResizeStart', {
12392            context: seg.el[0],
12393            args: [
12394                seg.footprint.getEventLegacy(),
12395                ev,
12396                {},
12397                this.view
12398            ]
12399        });
12400    };
12401    // Called after event segment resizing stops
12402    EventResizing.prototype.segResizeStop = function (seg, ev) {
12403        this.isResizing = false;
12404        this.component.publiclyTrigger('eventResizeStop', {
12405            context: seg.el[0],
12406            args: [
12407                seg.footprint.getEventLegacy(),
12408                ev,
12409                {},
12410                this.view
12411            ]
12412        });
12413    };
12414    // Returns new date-information for an event segment being resized from its start
12415    EventResizing.prototype.computeEventStartResizeMutation = function (startFootprint, endFootprint, origEventFootprint) {
12416        var origRange = origEventFootprint.componentFootprint.unzonedRange;
12417        var startDelta = this.component.diffDates(endFootprint.unzonedRange.getStart(), startFootprint.unzonedRange.getStart());
12418        var dateMutation;
12419        var eventDefMutation;
12420        if (origRange.getStart().add(startDelta) < origRange.getEnd()) {
12421            dateMutation = new EventDefDateMutation_1.default();
12422            dateMutation.setStartDelta(startDelta);
12423            eventDefMutation = new EventDefMutation_1.default();
12424            eventDefMutation.setDateMutation(dateMutation);
12425            return eventDefMutation;
12426        }
12427        return false;
12428    };
12429    // Returns new date-information for an event segment being resized from its end
12430    EventResizing.prototype.computeEventEndResizeMutation = function (startFootprint, endFootprint, origEventFootprint) {
12431        var origRange = origEventFootprint.componentFootprint.unzonedRange;
12432        var endDelta = this.component.diffDates(endFootprint.unzonedRange.getEnd(), startFootprint.unzonedRange.getEnd());
12433        var dateMutation;
12434        var eventDefMutation;
12435        if (origRange.getEnd().add(endDelta) > origRange.getStart()) {
12436            dateMutation = new EventDefDateMutation_1.default();
12437            dateMutation.setEndDelta(endDelta);
12438            eventDefMutation = new EventDefMutation_1.default();
12439            eventDefMutation.setDateMutation(dateMutation);
12440            return eventDefMutation;
12441        }
12442        return false;
12443    };
12444    return EventResizing;
12445}(Interaction_1.default));
12446exports.default = EventResizing;
12447
12448
12449/***/ }),
12450/* 235 */
12451/***/ (function(module, exports, __webpack_require__) {
12452
12453Object.defineProperty(exports, "__esModule", { value: true });
12454var tslib_1 = __webpack_require__(2);
12455var util_1 = __webpack_require__(4);
12456var EventDefMutation_1 = __webpack_require__(39);
12457var EventDefDateMutation_1 = __webpack_require__(40);
12458var DragListener_1 = __webpack_require__(59);
12459var HitDragListener_1 = __webpack_require__(17);
12460var MouseFollower_1 = __webpack_require__(226);
12461var Interaction_1 = __webpack_require__(14);
12462var EventDragging = /** @class */ (function (_super) {
12463    tslib_1.__extends(EventDragging, _super);
12464    /*
12465    component implements:
12466      - bindSegHandlerToEl
12467      - publiclyTrigger
12468      - diffDates
12469      - eventRangesToEventFootprints
12470      - isEventInstanceGroupAllowed
12471    */
12472    function EventDragging(component, eventPointing) {
12473        var _this = _super.call(this, component) || this;
12474        _this.isDragging = false;
12475        _this.eventPointing = eventPointing;
12476        return _this;
12477    }
12478    EventDragging.prototype.end = function () {
12479        if (this.dragListener) {
12480            this.dragListener.endInteraction();
12481        }
12482    };
12483    EventDragging.prototype.getSelectionDelay = function () {
12484        var delay = this.opt('eventLongPressDelay');
12485        if (delay == null) {
12486            delay = this.opt('longPressDelay'); // fallback
12487        }
12488        return delay;
12489    };
12490    EventDragging.prototype.bindToEl = function (el) {
12491        var component = this.component;
12492        component.bindSegHandlerToEl(el, 'mousedown', this.handleMousedown.bind(this));
12493        component.bindSegHandlerToEl(el, 'touchstart', this.handleTouchStart.bind(this));
12494    };
12495    EventDragging.prototype.handleMousedown = function (seg, ev) {
12496        if (!this.component.shouldIgnoreMouse() &&
12497            this.component.canStartDrag(seg, ev)) {
12498            this.buildDragListener(seg).startInteraction(ev, { distance: 5 });
12499        }
12500    };
12501    EventDragging.prototype.handleTouchStart = function (seg, ev) {
12502        var component = this.component;
12503        var settings = {
12504            delay: this.view.isEventDefSelected(seg.footprint.eventDef) ? // already selected?
12505                0 : this.getSelectionDelay()
12506        };
12507        if (component.canStartDrag(seg, ev)) {
12508            this.buildDragListener(seg).startInteraction(ev, settings);
12509        }
12510        else if (component.canStartSelection(seg, ev)) {
12511            this.buildSelectListener(seg).startInteraction(ev, settings);
12512        }
12513    };
12514    // seg isn't draggable, but let's use a generic DragListener
12515    // simply for the delay, so it can be selected.
12516    // Has side effect of setting/unsetting `dragListener`
12517    EventDragging.prototype.buildSelectListener = function (seg) {
12518        var _this = this;
12519        var view = this.view;
12520        var eventDef = seg.footprint.eventDef;
12521        var eventInstance = seg.footprint.eventInstance; // null for inverse-background events
12522        if (this.dragListener) {
12523            return this.dragListener;
12524        }
12525        var dragListener = this.dragListener = new DragListener_1.default({
12526            dragStart: function (ev) {
12527                if (dragListener.isTouch &&
12528                    !view.isEventDefSelected(eventDef) &&
12529                    eventInstance) {
12530                    // if not previously selected, will fire after a delay. then, select the event
12531                    view.selectEventInstance(eventInstance);
12532                }
12533            },
12534            interactionEnd: function (ev) {
12535                _this.dragListener = null;
12536            }
12537        });
12538        return dragListener;
12539    };
12540    // Builds a listener that will track user-dragging on an event segment.
12541    // Generic enough to work with any type of Grid.
12542    // Has side effect of setting/unsetting `dragListener`
12543    EventDragging.prototype.buildDragListener = function (seg) {
12544        var _this = this;
12545        var component = this.component;
12546        var view = this.view;
12547        var calendar = view.calendar;
12548        var eventManager = calendar.eventManager;
12549        var el = seg.el;
12550        var eventDef = seg.footprint.eventDef;
12551        var eventInstance = seg.footprint.eventInstance; // null for inverse-background events
12552        var isDragging;
12553        var mouseFollower; // A clone of the original element that will move with the mouse
12554        var eventDefMutation;
12555        if (this.dragListener) {
12556            return this.dragListener;
12557        }
12558        // Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents
12559        // of the view.
12560        var dragListener = this.dragListener = new HitDragListener_1.default(view, {
12561            scroll: this.opt('dragScroll'),
12562            subjectEl: el,
12563            subjectCenter: true,
12564            interactionStart: function (ev) {
12565                seg.component = component; // for renderDrag
12566                isDragging = false;
12567                mouseFollower = new MouseFollower_1.default(seg.el, {
12568                    additionalClass: 'fc-dragging',
12569                    parentEl: view.el,
12570                    opacity: dragListener.isTouch ? null : _this.opt('dragOpacity'),
12571                    revertDuration: _this.opt('dragRevertDuration'),
12572                    zIndex: 2 // one above the .fc-view
12573                });
12574                mouseFollower.hide(); // don't show until we know this is a real drag
12575                mouseFollower.start(ev);
12576            },
12577            dragStart: function (ev) {
12578                if (dragListener.isTouch &&
12579                    !view.isEventDefSelected(eventDef) &&
12580                    eventInstance) {
12581                    // if not previously selected, will fire after a delay. then, select the event
12582                    view.selectEventInstance(eventInstance);
12583                }
12584                isDragging = true;
12585                // ensure a mouseout on the manipulated event has been reported
12586                _this.eventPointing.handleMouseout(seg, ev);
12587                _this.segDragStart(seg, ev);
12588                view.hideEventsWithId(seg.footprint.eventDef.id);
12589            },
12590            hitOver: function (hit, isOrig, origHit) {
12591                var isAllowed = true;
12592                var origFootprint;
12593                var footprint;
12594                var mutatedEventInstanceGroup;
12595                // starting hit could be forced (DayGrid.limit)
12596                if (seg.hit) {
12597                    origHit = seg.hit;
12598                }
12599                // hit might not belong to this grid, so query origin grid
12600                origFootprint = origHit.component.getSafeHitFootprint(
12600origHit);
12601                footprint = hit.component.getSafeHitFootprint(hit);
12602                if (origFootprint && footprint) {
12603                    eventDefMutation = _this.computeEventDropMutation(origFootprint, footprint, eventDef);
12604                    if (eventDefMutation) {
12605                        mutatedEventInstanceGroup = eventManager.buildMutatedEventInstanceGroup(eventDef.id, eventDefMutation);
12606                        isAllowed = component.isEventInstanceGroupAllowed(mutatedEventInstanceGroup);
12607                    }
12608                    else {
12609                        isAllowed = false;
12610                    }
12611                }
12612                else {
12613                    isAllowed = false;
12614                }
12615                if (!isAllowed) {
12616                    eventDefMutation = null;
12617                    util_1.disableCursor();
12618                }
12619                // if a valid drop location, have the subclass render a visual indication
12620                if (eventDefMutation &&
12621                    view.renderDrag(// truthy if rendered something
12622                    component.eventRangesToEventFootprints(mutatedEventInstanceGroup.sliceRenderRanges(component.dateProfile.renderUnzonedRange, calendar)), seg, dragListener.isTouch)) {
12623                    mouseFollower.hide(); // if the subclass is already using a mock event "helper", hide our own
12624                }
12625                else {
12626                    mouseFollower.show(); // otherwise, have the helper follow the mouse (no snapping)
12627                }
12628                if (isOrig) {
12629                    // needs to have moved hits to be a valid drop
12630                    eventDefMutation = null;
12631                }
12632            },
12633            hitOut: function () {
12634                view.unrenderDrag(seg); // unrender whatever was done in renderDrag
12635                mouseFollower.show(); // show in case we are moving out of all hits
12636                eventDefMutation = null;
12637            },
12638            hitDone: function () {
12639                util_1.enableCursor();
12640            },
12641            interactionEnd: function (ev) {
12642                delete seg.component; // prevent side effects
12643                // do revert animation if hasn't changed. calls a callback when finished (whether animation or not)
12644                mouseFollower.stop(!eventDefMutation, function () {
12645                    if (isDragging) {
12646                        view.unrenderDrag(seg);
12647                        _this.segDragStop(seg, ev);
12648                    }
12649                    view.showEventsWithId(seg.footprint.eventDef.id);
12650                    if (eventDefMutation) {
12651                        // no need to re-show original, will rerender all anyways. esp important if eventRenderWait
12652                        view.reportEventDrop(eventInstance, eventDefMutation, el, ev);
12653                    }
12654                });
12655                _this.dragListener = null;
12656            }
12657        });
12658        return dragListener;
12659    };
12660    // Called before event segment dragging starts
12661    EventDragging.prototype.segDragStart = function (seg, ev) {
12662        this.isDragging = true;
12663        this.component.publiclyTrigger('eventDragStart', {
12664            context: seg.el[0],
12665            args: [
12666                seg.footprint.getEventLegacy(),
12667                ev,
12668                {},
12669                this.view
12670            ]
12671        });
12672    };
12673    // Called after event segment dragging stops
12674    EventDragging.prototype.segDragStop = function (seg, ev) {
12675        this.isDragging = false;
12676        this.component.publiclyTrigger('eventDragStop', {
12677            context: seg.el[0],
12678            args: [
12679                seg.footprint.getEventLegacy(),
12680                ev,
12681                {},
12682                this.view
12683            ]
12684        });
12685    };
12686    // DOES NOT consider overlap/constraint
12687    EventDragging.prototype.computeEventDropMutation = function (startFootprint, endFootprint, eventDef) {
12688        var eventDefMutation = new EventDefMutation_1.default();
12689        eventDefMutation.setDateMutation(this.computeEventDateMutation(startFootprint, endFootprint));
12690        return eventDefMutation;
12691    };
12692    EventDragging.prototype.computeEventDateMutation = function (startFootprint, endFootprint) {
12693        var date0 = startFootprint.unzonedRange.getStart();
12694        var date1 = endFootprint.unzonedRange.getStart();
12695        var clearEnd = false;
12696        var forceTimed = false;
12697        var forceAllDay = false;
12698        var dateDelta;
12699        var dateMutation;
12700        if (startFootprint.isAllDay !== endFootprint.isAllDay) {
12701            clearEnd = true;
12702            if (endFootprint.isAllDay) {
12703                forceAllDay = true;
12704                date0.stripTime();
12705            }
12706            else {
12707                forceTimed = true;
12708            }
12709        }
12710        dateDelta = this.component.diffDates(date1, date0);
12711        dateMutation = new EventDefDateMutation_1.default();
12712        dateMutation.clearEnd = clearEnd;
12713        dateMutation.forceTimed = forceTimed;
12714        dateMutation.forceAllDay = forceAllDay;
12715        dateMutation.setDateDelta(dateDelta);
12716        return dateMutation;
12717    };
12718    return EventDragging;
12719}(Interaction_1.default));
12720exports.default = EventDragging;
12721
12722
12723/***/ }),
12724/* 236 */
12725/***/ (function(module, exports, __webpack_require__) {
12726
12727Object.defineProperty(exports, "__esModule", { value: true });
12728var tslib_1 = __webpack_require__(2);
12729var util_1 = __webpack_require__(4);
12730var HitDragListener_1 = __webpack_require__(17);
12731var ComponentFootprint_1 = __webpack_require__(12);
12732var UnzonedRange_1 = __webpack_require__(5);
12733var Interaction_1 = __webpack_require__(14);
12734var DateSelecting = /** @class */ (function (_super) {
12735    tslib_1.__extends(DateSelecting, _super);
12736    /*
12737    component must implement:
12738      - bindDateHandlerToEl
12739      - getSafeHitFootprint
12740      - renderHighlight
12741      - unrenderHighlight
12742    */
12743    function DateSelecting(component) {
12744        var _this = _super.call(this, component) || this;
12745        _this.dragListener = _this.buildDragListener();
12746        return _this;
12747    }
12748    DateSelecting.prototype.end = function () {
12749        this.dragListener.endInteraction();
12750    };
12751    DateSelecting.prototype.getDelay = function () {
12752        var delay = this.opt('selectLongPressDelay');
12753        if (delay == null) {
12754            delay = this.opt('longPressDelay'); // fallback
12755        }
12756        return delay;
12757    };
12758    DateSelecting.prototype.bindToEl = function (el) {
12759        var _this = this;
12760        var component = this.component;
12761        var dragListener = this.dragListener;
12762        component.bindDateHandlerToEl(el, 'mousedown', function (ev) {
12763            if (_this.opt('selectable') && !component.shouldIgnoreMouse()) {
12764                dragListener.startInteraction(ev, {
12765                    distance: _this.opt('selectMinDistance')
12766                });
12767            }
12768        });
12769        component.bindDateHandlerToEl(el, 'touchstart', function (ev) {
12770            if (_this.opt('selectable') && !component.shouldIgnoreTouch()) {
12771                dragListener.startInteraction(ev, {
12772                    delay: _this.getDelay()
12773                });
12774            }
12775        });
12776        util_1.preventSelection(el);
12777    };
12778    // Creates a listener that tracks the user's drag across day elements, for day selecting.
12779    DateSelecting.prototype.buildDragListener = function () {
12780        var _this = this;
12781        var component = this.component;
12782        var selectionFootprint; // null if invalid selection
12783        var dragListener = new HitDragListener_1.default(component, {
12784            scroll: this.opt('dragScroll'),
12785            interactionStart: function () {
12786                selectionFootprint = null;
12787            },
12788            dragStart: function (ev) {
12789                _this.view.unselect(ev); // since we could be rendering a new selection, we want to clear any old one
12790            },
12791            hitOver: function (hit, isOrig, origHit) {
12792                var origHitFootprint;
12793                var hitFootprint;
12794                if (origHit) { // click needs to have started on a hit
12795                    origHitFootprint = component.getSafeHitFootprint(origHit);
12796                    hitFootprint = component.getSafeHitFootprint(hit);
12797                    if (origHitFootprint && hitFootprint) {
12798                        selectionFootprint = _this.computeSelection(origHitFootprint, hitFootprint);
12799                    }
12800                    else {
12801                        selectionFootprint = null;
12802                    }
12803                    if (selectionFootprint) {
12804                        component.renderSelectionFootprint(selectionFootprint);
12805                    }
12806                    else if (selectionFootprint === false) {
12807                        util_1.disableCursor();
12808                    }
12809                }
12810            },
12811            hitOut: function () {
12812                selectionFootprint = null;
12813                component.unrenderSelection();
12814            },
12815            hitDone: function () {
12816                util_1.enableCursor();
12817            },
12818            interactionEnd: function (ev, isCancelled) {
12819                if (!isCancelled && selectionFootprint) {
12820                    // the selection will already have been rendered. just report it
12821                    _this.view.reportSelection(selectionFootprint, ev);
12822                }
12823            }
12824        });
12825        return dragListener;
12826    };
12827    // Given the first and last date-spans of a selection, returns another date-span object.
12828    // Subclasses can override and provide additional data in the span object. Will be passed to render
12828SelectionFootprint().
12829    // Will return false if the selection is invalid and this should be indicated to the user.
12830    // Will return null/undefined if a selection invalid but no error should be reported.
12831    DateSelecting.prototype.computeSelection = function (footprint0, footprint1) {
12832        var wholeFootprint = this.computeSelectionFootprint(footprint0, footprint1);
12833        if (wholeFootprint && !this.isSelectionFootprintAllowed(wholeFootprint)) {
12834            return false;
12835        }
12836        return wholeFootprint;
12837    };
12838    // Given two spans, must return the combination of the two.
12839    // TODO: do this separation of concerns (combining VS validation) for event dnd/resize too.
12840    // Assumes both footprints are non-open-ended.
12841    DateSelecting.prototype.computeSelectionFootprint = function (footprint0, footprint1) {
12842        var ms = [
12843            footprint0.unzonedRange.startMs,
12844            footprint0.unzonedRange.endMs,
12845            footprint1.unzonedRange.startMs,
12846            footprint1.unzonedRange.endMs
12847        ];
12848        ms.sort(util_1.compareNumbers);
12849        return new ComponentFootprint_1.default(new UnzonedRange_1.default(ms[0], ms[3]), footprint0.isAllDay);
12850    };
12851    DateSelecting.prototype.isSelectionFootprintAllowed = function (componentFootprint) {
12852        return this.component.dateProfile.validUnzonedRange.containsRange(componentFootprint.unzonedRange) &&
12853            this.view.calendar.constraints.isSelectionFootprintAllowed(componentFootprint);
12854    };
12855    return DateSelecting;
12856}(Interaction_1.default));
12857exports.default = DateSelecting;
12858
12859
12860/***/ }),
12861/* 237 */
12862/***/ (function(module, exports, __webpack_require__) {
12863
12864Object.defineProperty(exports, "__esModule", { value: true });
12865var tslib_1 = __webpack_require__(2);
12866var HitDragListener_1 = __webpack_require__(17);
12867var Interaction_1 = __webpack_require__(14);
12868var DateClicking = /** @class */ (function (_super) {
12869    tslib_1.__extends(DateClicking, _super);
12870    /*
12871    component must implement:
12872      - bindDateHandlerToEl
12873      - getSafeHitFootprint
12874      - getHitEl
12875    */
12876    function DateClicking(component) {
12877        var _this = _super.call(this, component) || this;
12878        _this.dragListener = _this.buildDragListener();
12879        return _this;
12880    }
12881    DateClicking.prototype.end = function () {
12882        this.dragListener.endInteraction();
12883    };
12884    DateClicking.prototype.bindToEl = function (el) {
12885        var component = this.component;
12886        var dragListener = this.dragListener;
12887        component.bindDateHandlerToEl(el, 'mousedown', function (ev) {
12888            if (!component.shouldIgnoreMouse()) {
12889                dragListener.startInteraction(ev);
12890            }
12891        });
12892        component.bindDateHandlerToEl(el, 'touchstart', function (ev) {
12893            if (!component.shouldIgnoreTouch()) {
12894                dragListener.startInteraction(ev);
12895            }
12896        });
12897    };
12898    // Creates a listener that tracks the user's drag across day elements, for day clicking.
12899    DateClicking.prototype.buildDragListener = function () {
12900        var _this = this;
12901        var component = this.component;
12902        var dayClickHit; // null if invalid dayClick
12903        var dragListener = new HitDragListener_1.default(component, {
12904            scroll: this.opt('dragScroll'),
12905            interactionStart: function () {
12906                dayClickHit = dragListener.origHit;
12907            },
12908            hitOver: function (hit, isOrig, origHit) {
12909                // if user dragged to another cell at any point, it can no longer be a dayClick
12910                if (!isOrig) {
12911                    dayClickHit = null;
12912                }
12913            },
12914            hitOut: function () {
12915                dayClickHit = null;
12916            },
12917            interactionEnd: function (ev, isCancelled) {
12918                var componentFootprint;
12919                if (!isCancelled && dayClickHit) {
12920                    componentFootprint = component.getSafeHitFootprint(dayClickHit);
12921                    if (componentFootprint) {
12922                        _this.view.triggerDayClick(componentFootprint, component.getHitEl(dayClickHit), ev);
12923                    }
12924                }
12925            }
12926        });
12927        // because dragListener won't be called with any time delay, "dragging" will begin immediately,
12928        // which will kill any touchmoving/scrolling. Prevent this.
12929        dragListener.shouldCancelTouchScroll = false;
12930        dragListener.scrollAlwaysKills = true;
12931        return dragListener;
12932    };
12933    return DateClicking;
12934}(Interaction_1.default));
12935exports.default = DateClicking;
12936
12937
12938/***/ }),
12939/* 238 */
12940/***/ (function(module, exports, __webpack_require__) {
12941
12942Object.defineProperty(exports, "__esModule", { value: true });
12943var tslib_1 = __webpack_require__(2);
12944var moment = __webpack_require__(0);
12945var $ = __webpack_require__(3);
12946var util_1 = __webpack_require__(4);
12947var Scroller_1 = __webpack_require__(41);
12948var View_1 = __webpack_require__(43);
12949var TimeGrid_1 = __webpack_require__(239);
12950var DayGrid_1 = __webpack_require__(66);
12951var AGENDA_ALL_DAY_EVENT_LIMIT = 5;
12952var agendaTimeGridMethods;
12953var agendaDayGridMethods;
12954/* An abstract class for all agenda-related views. Displays one more columns with time slots running vertically.
12955----------------------------------------------------------------------------------------------------------------------*/
12956// Is a manager for the TimeGrid subcomponent and possibly the DayGrid subcomponent (if allDaySlot is on).
12957// Responsible for managing width/height.
12958var AgendaView = /** @class */ (function (_super) {
12959    tslib_1.__extends(AgendaView, _super);
12960    function AgendaView(calendar, viewSpec) {
12961        var _this = _super.call(this, calendar, viewSpec) || this;
12962        _this.usesMinMaxTime = true; // indicates that minTime/maxTime affects rendering
12963        _this.timeGrid = _this.instantiateTimeGrid();
12964        _this.addChild(_this.timeGrid);
12965        if (_this.opt('allDaySlot')) { // should we display the "all-day" area?
12966            _this.dayGrid = _this.instantiateDayGrid(); // the all-day subcomponent of this view
12967            _this.addChild(_this.dayGrid);
12968        }
12969        _this.scroller = new Scroller_1.default({
12970            overflowX: 'hidden',
12971            overflowY: 'auto'
12972        });
12973        return _this;
12974    }
12975    // Instantiates the TimeGrid object this view needs. Draws from this.timeGridClass
12976    AgendaView.prototype.instantiateTimeGrid = function () {
12977        var timeGrid = new this.timeGridClass(this);
12978        util_1.copyOwnProps(agendaTimeGridMethods, timeGrid);
12979        return timeGrid;
12980    };
12981    // Instantiates the DayGrid object this view might need. Draws from this.dayGridClass
12982    AgendaView.prototype.instantiateDayGrid = function () {
12983        var dayGrid = new this.dayGridClass(this);
12984        util_1.copyOwnProps(agendaDayGridMethods, dayGrid);
12985        return dayGrid;
12986    };
12987    /* Rendering
12988    ------------------------------------------------------------------------------------------------------------------*/
12989    AgendaView.prototype.renderSkeleton = function () {
12990        var timeGridWrapEl;
12991        var timeGridEl;
12992        this.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml());
12993        this.scroller.render();
12994        timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container');
12995        timeGridEl = $('<div class="fc-time-grid">').appendTo(timeGridWrapEl);
12996        this.el.find('.fc-body > tr > td').append(timeGridWrapEl);
12997        this.timeGrid.headContainerEl = this.el.find('.fc-head-container');
12998        this.timeGrid.setElement(timeGridEl);
12999        if (this.dayGrid) {
13000            this.dayGrid.setElement(this.el.find('.fc-day-grid'));
13001            // have the day-grid extend it's coordinate area over the <hr> dividing the two grids
13002            this.dayGrid.bottomCoordPadding = this.dayGrid.el.next('hr').outerHeight();
13003        }
13004    };
13005    AgendaView.prototype.unrenderSkeleton = function () {
13006        this.timeGrid.removeElement();
13007        if (this.dayGrid) {
13008            this.dayGrid.removeElement();
13009        }
13010        this.scroller.destroy();
13011    };
13012    // Builds the HTML skeleton for the view.
13013    // The day-grid and time-grid components will render inside containers defined by this HTML.
13014    AgendaView.prototype.renderSkeletonHtml = function () {
13015        var theme = this.calendar.theme;
13016        return '' +
13017            '<table class="' + theme.getClass('tableGrid') + '">' +
13018            (this.opt('columnHeader') ?
13019                '<thead class="fc-head">' +
13020                    '<tr>' +
13021                    '<td class="fc-head-container ' + theme.getClass('widgetHeader') + '">&nbsp;</td>' +
13022                    '</tr>' +
13023                    '</thead>' :
13024                '') +
13025            '<tbody class="fc-body">' +
13026            '<tr>' +
13027            '<td class="' + theme.getClass('widgetContent') + '">' +
13028            (this.dayGrid ?
13029                '<div class="fc-day-grid"></div>' +
13030                    '<hr class="fc-divider ' + theme.getClass('widgetHeader') + '"></hr>' :
13031                '') +
13032            '</td>' +
13033            '</tr>' +
13034            '</tbody>' +
13035            '</table>';
13036    };
13037    // Generates an HTML attribute string for setting the width of the axis, if it is known
13038    AgendaView.prototype.axisStyleAttr = function () {
13039        if (this.axisWidth != null) {
13040            return 'style="width:' + this.axisWidth + 'px"';
13041        }
13042        return '';
13043    };
13044    /* Now Indicator
13045    ------------------------------------------------------------------------------------------------------------------*/
13046    AgendaView.prototype.getNowIndicatorUnit = function () {
13047        return this.timeGrid.getNowIndicatorUnit();
13048    };
13049    /* Dimensions
13050    ------------------------------------------------------------------------------------------------------------------*/
13051    // Adjusts the vertical dimensions of the view to the specified values
13052    AgendaView.prototype.updateSize = function (totalHeight, isAuto, isResize) {
13053        var eventLimit;
13054        var scrollerHeight;
13055        var scrollbarWidths;
13056        _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);
13057        // make all axis cells line up, and record the width so newly created axis cells will have it
13058        this.axisWidth = util_1.matchCellWidths(this.el.find('.fc-axis'));
13059        // hack to give the view some height prior to timeGrid's columns being rendered
13060        // TODO: separate setting height from scroller VS timeGrid.
13061        if (!this.timeGrid.colEls) {
13062            if (!isAuto) {
13063                scrollerHeight = this.computeScrollerHeight(totalHeight);
13064                this.scroller.setHeight(scrollerHeight);
13065            }
13066            return;
13067        }
13068        // set of fake row elements that must compensate when scroller has scrollbars
13069        var noScrollRowEls = this.el.find('.fc-row:not(.fc-scroller *)');
13070        // reset all dimensions back to the original state
13071        this.timeGrid.bottomRuleEl.hide(); // .show() will be called later if this <hr> is necessary
13072        this.scroller.clear(); // sets height to 'auto' and clears overflow
13073        util_1.uncompensateScroll(noScrollRowEls);
13074        // limit number of events in the all-day area
13075        if (this.dayGrid) {
13076            this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed
13077            eventLimit = this.opt('eventLimit');
13078            if (eventLimit && typeof eventLimit !== 'number') {
13079                eventLimit = AGENDA_ALL_DAY_EVENT_LIMIT; // make sure "auto" goes to a real number
13080            }
13081            if (eventLimit) {
13082                this.dayGrid.limitRows(eventLimit);
13083            }
13084        }
13085        if (!isAuto) { // should we force dimensions of the scroll container?
13086            scrollerHeight = this.computeScrollerHeight(totalHeight);
13087            this.scroller.setHeight(scrollerHeight);
13088            scrollbarWidths = this.scroller.getScrollbarWidths();
13089            if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars?
13090                // make the all-day and header rows lines up
13091                util_1.compensateScroll(noScrollRowEls, scrollbarWidths);
13092                // the scrollbar compensation might have changed text flow, which might affect height, so recalculate
13093                // and reapply the desired height to the scroller.
13094                scrollerHeight = this.computeScrollerHeight(totalHeight);
13095                this.scroller.setHeight(scrollerHeight);
13096            }
13097            // guarantees the same scrollbar widths
13098            this.scroller.lockOverflow(scrollbarWidths);
13099            // if there's any space below the slats, show the horizontal rule.
13100            // this won't cause any new overflow, because lockOverflow already called.
13101            if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) {
13102                this.timeGrid.bottomRuleEl.show();
13103            }
13104        }
13105    };
13106    // given a desired total height of the view, returns what the height of the scroller should be
13107    AgendaView.prototype.computeScrollerHeight = function (totalHeight) {
13108        return totalHeight -
13109            util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller
13110    };
13111    /* Scroll
13112    ------------------------------------------------------------------------------------------------------------------*/
13113    // Computes the initial pre-configured scroll state prior to allowing the user to change it
13114    AgendaView.prototype.computeInitialDateScroll = function () {
13115        var scrollTime = moment.duration(this.opt('scrollTime'));
13116        var top = this.timeGrid.computeTimeTop(scrollTime);
13117        // zoom can give weird floating-point values. rather scroll a little bit further
13118        top = Math.ceil(top);
13119        if (top) {
13120            top++; // to overcome top border that slots beyond the first have. looks better
13121        }
13122        return { top: top };
13123    };
13124    AgendaView.prototype.queryDateScroll = function () {
13125        return { top: this.scroller.getScrollTop() };
13126    };
13127    AgendaView.prototype.applyDateScroll = function (scroll) {
13128        if (scroll.top !== undefined) {
13129            this.scroller.setScrollTop(scroll.top);
13130        }
13131    };
13132    /* Hit Areas
13133    ------------------------------------------------------------------------------------------------------------------*/
13134    // forward all hit-related method calls to the grids (dayGrid might not be defined)
13135    AgendaView.prototype.getHitFootprint = function (hit) {
13136        // TODO: hit.component is set as a hack to identify where the hit came from
13137        return hit.component.getHitFootprint(hit);
13138    };
13139    AgendaView.prototype.getHitEl = function (hit) {
13140        // TODO: hit.component is set as a hack to identify where the hit came from
13141        return hit.component.getHitEl(hit);
13142    };
13143    /* Event Rendering
13144    ------------------------------------------------------------------------------------------------------------------*/
13145    AgendaView.prototype.executeEventRender = function (eventsPayload) {
13146        var dayEventsPayload = {};
13147        var timedEventsPayload = {};
13148        var id;
13149        var eventInstanceGroup;
13150        // separate the events into all-day and timed
13151        for (id in eventsPayload) {
13152            eventInstanceGroup = eventsPayload[id];
13153            if (eventInstanceGroup.getEventDef().isAllDay()) {
13154                dayEventsPayload[id] = eventInstanceGroup;
13155            }
13156            else {
13157                timedEventsPayload[id] = eventInstanceGroup;
13158            }
13159        }
13160        this.timeGrid.executeEventRender(timedEventsPayload);
13161        if (this.dayGrid) {
13162            this.dayGrid.executeEventRender(dayEventsPayload);
13163        }
13164    };
13165    /* Dragging/Resizing Routing
13166    ------------------------------------------------------------------------------------------------------------------*/
13167    // A returned value of `true` signals that a mock "helper" event has been rendered.
13168    AgendaView.prototype.renderDrag = function (eventFootprints, seg, isTouch) {
13169        var groups = groupEventFootprintsByAllDay(eventFootprints);
13170        var renderedHelper = false;
13171        renderedHelper = this.timeGrid.renderDrag(groups.timed, seg, isTouch);
13172        if (this.dayGrid) {
13173            renderedHelper = this.dayGrid.renderDrag(groups.allDay, seg, isTouch) || renderedHelper;
13174        }
13175        return renderedHelper;
13176    };
13177    AgendaView.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {
13178        var groups = groupEventFootprintsByAllDay(eventFootprints);
13179        this.timeGrid.renderEventResize(groups.timed, seg, isTouch);
13180        if (this.dayGrid) {
13181            this.dayGrid.renderEventResize(groups.allDay, seg, isTouch);
13182        }
13183    };
13184    /* Selection
13185    ------------------------------------------------------------------------------------------------------------------*/
13186    // Renders a visual indication of a selection
13187    AgendaView.prototype.renderSelectionFootprint = function (componentFootprint) {
13188        if (!componentFootprint.isAllDay) {
13189            this.timeGrid.renderSelectionFootprint(componentFootprint);
13190        }
13191        else if (this.dayGrid) {
13192            this.dayGrid.renderSelectionFootprint(componentFootprint);
13193        }
13194    };
13195    return AgendaView;
13196}(View_1.default));
13197exports.default = AgendaView;
13198AgendaView.prototype.timeGridClass = TimeGrid_1.default;
13199AgendaView.prototype.dayGridClass = DayGrid_1.default;
13200// Will customize the rendering behavior of the AgendaView's timeGrid
13201agendaTimeGridMethods = {
13202    // Generates the HTML that will go before the day-of week header cells
13203    renderHeadIntroHtml: function () {
13204        var view = this.view;
13205        var calendar = view.calendar;
13206        var weekStart = calendar.msToUtcMoment(this.dateProfile.renderUnzonedRange.startMs, true);
13207        var weekText;
13208        if (this.opt('weekNumbers')) {
13209            weekText = weekStart.format(this.opt('smallWeekFormat'));
13210            return '' +
13211                '<th class="fc-axis fc-week-number ' + calendar.theme.getClass('widgetHeader') + '" ' + view.axisStyleAttr() + '>' +
13212                view.buildGotoAnchorHtml(// aside from link, important for matchCellWidths
13213                { date: weekStart, type: 'week', forceOff: this.colCnt > 1 }, util_1.htmlEscape(weekText) // inner HTML
13214                ) +
13215                '</th>';
13216        }
13217        else {
13218            return '<th class="fc-axis ' + calendar.theme.getClass('widgetHeader') + '" ' + view.axisStyleAttr() + '></th>';
13219        }
13220    },
13221    // Generates the HTML that goes before the bg of the TimeGrid slot area. Long vertical column.
13222    renderBgIntroHtml: function () {
13223        var view = this.view;
13224        return '<td class="fc-axis ' + view.calendar.theme.getClass('widgetContent') + '" ' + view.axisStyleAttr() + '></td>';
13225    },
13226    // Generates the HTML that goes before all other types of cells.
13227    // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.
13228    renderIntroHtml: function () {
13229        var view = this.view;
13230        return '<td class="fc-axis" ' + view.axisStyleAttr() + '></td>';
13231    }
13232};
13233// Will customize the rendering behavior of the AgendaView's dayGrid
13234agendaDayGridMethods = {
13235    // Generates the HTML that goes before the all-day cells
13236    renderBgIntroHtml: function () {
13237        var view = this.view;
13238        return '' +
13239            '<td class="fc-axis ' + view.calendar.theme.getClass('widgetContent') + '" ' + view.axisStyleAttr() + '>' +
13240            '<span>' + // needed for matchCellWidths
13241            view.getAllDayHtml() +
13242            '</span>' +
13243            '</td>';
13244    },
13245    // Generates the HTML that goes before all other types of cells.
13246    // Affects content-skeleton, helper-skeleton, highlight-skeleton for both the time-grid and day-grid.
13247    renderIntroHtml: function () {
13248        var view = this.view;
13249        return '<td class="fc-axis" ' + view.axisStyleAttr() + '></td>';
13250    }
13251};
13252function groupEventFootprintsByAllDay(eventFootprints) {
13253    var allDay = [];
13254    var timed = [];
13255    var i;
13256    for (i = 0; i < eventFootprints.length; i++) {
13257        if (eventFootprints[i].componentFootprint.isAllDay) {
13258            allDay.push(eventFootprints[i]);
13259        }
13260        else {
13261            timed.push(eventFootprints[i]);
13262        }
13263    }
13264    return { allDay: allDay, timed: timed };
13265}
13266
13267
13268/***/ }),
13269/* 239 */
13270/***/ (function(module, exports, __webpack_require__) {
13271
13272Object.defineProperty(exports, "__esModule", { value: true });
13273var tslib_1 = __webpack_require__(2);
13274var $ = __webpack_require__(3);
13275var moment = __webpack_require__(0);
13276var util_1 = __webpack_require__(4);
13277var InteractiveDateComponent_1 = __webpack_require__(42);
13278var BusinessHourRenderer_1 = __webpack_require__(61);
13279var StandardInteractionsMixin_1 = __webpack_require__(65);
13280var DayTableMixin_1 = __webpack_require__(60);
13281var CoordCache_1 = __webpack_require__(58);
13282var UnzonedRange_1 = __webpack_require__(5);
13283var ComponentFootprint_1 = __webpack_require__(12);
13284var TimeGridEventRenderer_1 = __webpack_require__(240);
13285var TimeGridHelperRenderer_1 = __webpack_require__(241);
13286var TimeGridFillRenderer_1 = __webpack_require__(242);
13287/* A component that renders one or more columns of vertical time slots
13288----------------------------------------------------------------------------------------------------------------------*/
13289// We mixin DayTable, even though there is only a single row of days
13290// potential nice values for the slot-duration and interval-duration
13291// from largest to smallest
13292var AGENDA_STOCK_SUB_DURATIONS = [
13293    { hours: 1 },
13294    { minutes: 30 },
13295    { minutes: 15 },
13296    { seconds: 30 },
13297    { seconds: 15 }
13298];
13299var TimeGrid = /** @class */ (function (_super) {
13300    tslib_1.__extends(TimeGrid, _super);
13301    function TimeGrid(view) {
13302        var _this = _super.call(this, view) || this;
13303        _this.processOptions();
13304        return _this;
13305    }
13306    // Slices up the given span (unzoned start/end with other misc data) into an array of segments
13307    TimeGrid.prototype.componentFootprintToSegs = function (componentFootprint) {
13308        var segs = this.sliceRangeByTimes(componentFootprint.unzonedRange);
13309        var i;
13310        for (i = 0; i < segs.length; i++) {
13311            if (this.isRTL) {
13312                segs[i].col = this.daysPerRow - 1 - segs[i].dayIndex;
13313            }
13314            else {
13315                segs[i].col = segs[i].dayIndex;
13316            }
13317        }
13318        return segs;
13319    };
13320    /* Date Handling
13321    ------------------------------------------------------------------------------------------------------------------*/
13322    TimeGrid.prototype.sliceRangeByTimes = function (unzonedRange) {
13323        var segs = [];
13324        var segRange;
13325        var dayIndex;
13326        for (dayIndex = 0; dayIndex < this.daysPerRow; dayIndex++) {
13327            segRange = unzonedRange.intersect(this.dayRanges[dayIndex]);
13328            if (segRange) {
13329                segs.push({
13330                    startMs: segRange.startMs,
13331                    endMs: segRange.endMs,
13332                    isStart: segRange.isStart,
13333                    isEnd: segRange.isEnd,
13334                    dayIndex: dayIndex
13335                });
13336            }
13337        }
13338        return segs;
13339    };
13340    /* Options
13341    ------------------------------------------------------------------------------------------------------------------*/
13342    // Parses various options into properties of this object
13343    TimeGrid.prototype.processOptions = function () {
13344        var slotDuration = this.opt('slotDuration');
13345        var snapDuration = this.opt('snapDuration');
13346        var input;
13347        slotDuration = moment.duration(slotDuration);
13348        snapDuration = snapDuration ? moment.duration(snapDuration) : slotDuration;
13349        this.slotDuration = slotDuration;
13350        this.snapDuration = snapDuration;
13351        this.snapsPerSlot = slotDuration / snapDuration; // TODO: ensure an integer multiple?
13352        // might be an array value (for TimelineView).
13353        // if so, getting the most granular entry (the last one probably).
13354        input = this.opt('slotLabelFormat');
13355        if ($.isArray(input)) {
13356            input = input[input.length - 1];
13357        }
13358        this.labelFormat = input ||
13359            this.opt('smallTimeFormat'); // the computed default
13360        input = this.opt('slotLabelInterval');
13361        this.labelInterval = input ?
13362            moment.duration(input) :
13363            this.computeLabelInterval(slotDuration);
13364    };
13365    // Computes an automatic value for slotLabelInterval
13366    TimeGrid.prototype.computeLabelInterval = function (slotDuration) {
13367        var i;
13368        var labelInterval;
13369        var slotsPerLabel;
13370        // find the smallest stock label interval that results in more than one slots-per-label
13371        for (i = AGENDA_STOCK_SUB_DURATIONS.length - 1; i >= 0; i--) {
13372            labelInterval = moment.duration(AGENDA_STOCK_SUB_DURATIONS[i]);
13373            slotsPerLabel = util_1.divideDurationByDuration(labelInterval, slotDuration);
13374            if (util_1.isInt(slotsPerLabel) && slotsPerLabel > 1) {
13375                return labelInterval;
13376            }
13377        }
13378        return moment.duration(slotDuration); // fall back. clone
13379    };
13380    /* Date Rendering
13381    ------------------------------------------------------------------------------------------------------------------*/
13382    TimeGrid.prototype.renderDates = function (dateProfile) {
13383        this.dateProfile = dateProfile;
13384        this.updateDayTable();
13385        this.renderSlats();
13386        this.renderColumns();
13387    };
13388    TimeGrid.prototype.unrenderDates = function () {
13389        // this.unrenderSlats(); // don't need this because repeated .html() calls clear
13390        this.unrenderColumns();
13391    };
13392    TimeGrid.prototype.renderSkeleton = function () {
13393        var theme = this.view.calendar.theme;
13394        this.el.html('<div class="fc-bg"></div>' +
13395            '<div class="fc-slats"></div>' +
13396            '<hr class="fc-divider ' + theme.getClass('widgetHeader') + '" style="display:none"></hr>');
13397        this.bottomRuleEl = this.el.find('hr');
13398    };
13399    TimeGrid.prototype.renderSlats = function () {
13400        var theme = this.view.calendar.theme;
13401        this.slatContainerEl = this.el.find('> .fc-slats')
13402            .html(// avoids needing ::unrenderSlats()
13403        '<table class="' + theme.getClass('tableGrid') + '">' +
13404            this.renderSlatRowHtml() +
13405            '</table>');
13406        this.slatEls = this.slatContainerEl.find('tr');
13407        this.slatCoordCache = new CoordCache_1.default({
13408            els: this.slatEls,
13409            isVertical: true
13410        });
13411    };
13412    // Generates the HTML for the horizontal "slats" that run width-wise. Has a time axis on a side. Depends on RTL.
13413    TimeGrid.prototype.renderSlatRowHtml = function () {
13414        var view = this.view;
13415        var calendar = view.calendar;
13416        var theme = calendar.theme;
13417        var isRTL = this.isRTL;
13418        var dateProfile = this.dateProfile;
13419        var html = '';
13420        var slotTime = moment.duration(+dateProfile.minTime); // wish there was .clone() for durations
13421        var slotIterator = moment.duration(0);
13422        var slotDate; // will be on the view's first day, but we only care about its time
13423        var isLabeled;
13424        var axisHtml;
13425        // Calculate the time for each slot
13426        while (slotTime < dateProfile.maxTime) {
13427            slotDate = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs).time(slotTime);
13428            isLabeled = util_1.isInt(util_1.divideDurationByDuration(slotIterator, this.labelInterval));
13429            axisHtml =
13430                '<td class="fc-axis fc-time ' + theme.getClass('widgetContent') + '" ' + view.axisStyleAttr() + '>' +
13431                    (isLabeled ?
13432                        '<span>' + // for matchCellWidths
13433                            util_1.htmlEscape(slotDate.format(this.labelFormat)) +
13434                            '</span>' :
13435                        '') +
13436                    '</td>';
13437            html +=
13438                '<tr data-time="' + slotDate.format('HH:mm:ss') + '"' +
13439                    (isLabeled ? '' : ' class="fc-minor"') +
13440                    '>' +
13441                    (!isRTL ? axisHtml : '') +
13442                    '<td class="' + theme.getClass('widgetContent') + '"></td>' +
13443                    (isRTL ? axisHtml : '') +
13444                    '</tr>';
13445            slotTime.add(this.slotDuration);
13446            slotIterator.add(this.slotDuration);
13447        }
13448        return html;
13449    };
13450    TimeGrid.prototype.renderColumns = function () {
13451        var dateProfile = this.dateProfile;
13452        var theme = this.view.calendar.theme;
13453        this.dayRanges = this.dayDates.map(function (dayDate) {
13454            return new UnzonedRange_1.default(dayDate.clone().add(dateProfile.minTime), dayDate.clone().add(dateProfile.maxTime));
13455        });
13456        if (this.headContainerEl) {
13457            this.headContainerEl.html(this.renderHeadHtml());
13458        }
13459        this.el.find('> .fc-bg').html('<table class="' + theme.getClass('tableGrid') + '">' +
13460            this.renderBgTrHtml(0) + // row=0
13461            '</table>');
13462        this.colEls = this.el.find('.fc-day, .fc-disabled-day');
13463        this.colCoordCache = new CoordCache_1.default({
13464            els: this.colEls,
13465            isHorizontal: true
13466        });
13467        this.renderContentSkeleton();
13468    };
13469    TimeGrid.prototype.unrenderColumns = function () {
13470        this.unrenderContentSkeleton();
13471    };
13472    /* Content Skeleton
13473    ------------------------------------------------------------------------------------------------------------------*/
13474    // Renders the DOM that the view's content will live in
13475    TimeGrid.prototype.renderContentSkeleton = function () {
13476        var cellHtml = '';
13477        var i;
13478        var skeletonEl;
13479        for (i = 0; i < this.colCnt; i++) {
13480            cellHtml +=
13481                '<td>' +
13482                    '<div class="fc-content-col">' +
13483                    '<div class="fc-event-container fc-helper-container"></div>' +
13484                    '<div class="fc-event-container"></div>' +
13485                    '<div class="fc-highlight-container"></div>' +
13486                    '<div class="fc-bgevent-container"></div>' +
13487                    '<div class="fc-business-container"></div>' +
13488                    '</div>' +
13489                    '</td>';
13490        }
13491        skeletonEl = this.contentSkeletonEl = $('<div class="fc-content-skeleton">' +
13492            '<table>' +
13493            '<tr>' + cellHtml + '</tr>' +
13494            '</table>' +
13495            '</div>');
13496        this.colContainerEls = skeletonEl.find('.fc-content-col');
13497        this.helperContainerEls = skeletonEl.find('.fc-helper-container');
13498        this.fgContainerEls = skeletonEl.find('.fc-event-container:not(.fc-helper-container)');
13499        this.bgContainerEls = skeletonEl.find('.fc-bgevent-container');
13500        this.highlightContainerEls = skeletonEl.find('.fc-highlight-container');
13501        this.businessContainerEls = skeletonEl.find('.fc-business-container');
13502        this.bookendCells(skeletonEl.find('tr')); // TODO: do this on string level
13503        this.el.append(skeletonEl);
13504    };
13505    TimeGrid.prototype.unrenderContentSkeleton = function () {
13506        if (this.contentSkeletonEl) { // defensive :(
13507            this.contentSkeletonEl.remove();
13508            this.contentSkeletonEl = null;
13509            this.colContainerEls = null;
13510            this.helperContainerEls = null;
13511            this.fgContainerEls = null;
13512            this.bgContainerEls = null;
13513            this.highlightContainerEls = null;
13514            this.businessContainerEls = null;
13515        }
13516    };
13517    // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's col
13518    TimeGrid.prototype.groupSegsByCol = function (segs) {
13519        var segsByCol = [];
13520        var i;
13521        for (i = 0; i < this.colCnt; i++) {
13522            segsByCol.push([]);
13523        }
13524        for (i = 0; i < segs.length; i++) {
13525            segsByCol[segs[i].col].push(segs[i]);
13526        }
13527        return segsByCol;
13528    };
13529    // Given segments grouped by column, insert the segments' elements into a parallel array of container
13530    // elements, each living within a column.
13531    TimeGrid.prototype.attachSegsByCol = function (segsByCol, containerEls) {
13532        var col;
13533        var segs;
13534        var i;
13535        for (col = 0; col < this.colCnt; col++) { // iterate each column grouping
13536            segs = segsByCol[col];
13537            for (i = 0; i < segs.length; i++) {
13538                containerEls.eq(col).append(segs[i].el);
13539            }
13540        }
13541    };
13542    /* Now Indicator
13543    ------------------------------------------------------------------------------------------------------------------*/
13544    TimeGrid.prototype.getNowIndicatorUnit = function () {
13545        return 'minute'; // will refresh on the minute
13546    };
13547    TimeGrid.prototype.renderNowIndicator = function (date) {
13548        // HACK: if date columns not ready for some reason (scheduler)
13549        if (!this.colContainerEls) {
13550            return;
13551        }
13552        // seg system might be overkill, but it handles scenario where line needs to be rendered
13553        //  more than once because of columns with the same date (resources columns for example)
13554        var segs = this.componentFootprintToSegs(new ComponentFootprint_1.default(new UnzonedRange_1.default(date, date.valueOf() + 1), // protect against null range
13555        false // all-day
13556        ));
13557        var top = this.computeDateTop(date, date);
13558        var nodes = [];
13559        var i;
13560        // render lines within the columns
13561        for (i = 0; i < segs.length; i++) {
13562            nodes.push($('<div class="fc-now-indicator fc-now-indicator-line"></div>')
13563                .css('top', top)
13564                .appendTo(this.colContainerEls.eq(segs[i].col))[0]);
13565        }
13566        // render an arrow over the axis
13567        if (segs.length > 0) { // is the current time in view?
13568            nodes.push($('<div class="fc-now-indicator fc-now-indicator-arrow"></div>')
13569                .css('top', top)
13570                .appendTo(this.el.find('.fc-content-skeleton'))[0]);
13571        }
13572        this.nowIndicatorEls = $(nodes);
13573    };
13574    TimeGrid.prototype.unrenderNowIndicator = function () {
13575        if (this.nowIndicatorEls) {
13576            this.nowIndicatorEls.remove();
13577            this.nowIndicatorEls = null;
13578        }
13579    };
13580    /* Coordinates
13581    ------------------------------------------------------------------------------------------------------------------*/
13582    TimeGrid.prototype.updateSize = function (totalHeight, isAuto, isResize) {
13583        _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);
13584        this.slatCoordCache.build();
13585        if (isResize) {
13586            this.updateSegVerticals([].concat(this.eventRenderer.getSegs(), this.businessSegs || []));
13587        }
13588    };
13589    TimeGrid.prototype.getTotalSlatHeight = function () {
13590        return this.slatContainerEl.outerHeight();
13591    };
13592    // Computes the top coordinate, relative to the bounds of the grid, of the given date.
13593    // `ms` can be a millisecond UTC time OR a UTC moment.
13594    // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight.
13595    TimeGrid.prototype.computeDateTop = function (ms, startOfDayDate) {
13596        return this.computeTimeTop(moment.duration(ms - startOfDayDate.clone().stripTime()));
13597    };
13598    // Computes the top coordinate, relative to the bounds of the grid, of the given time (a Duration).
13599    TimeGrid.prototype.computeTimeTop = function (time) {
13600        var len = this.slatEls.length;
13601        var dateProfile = this.dateProfile;
13602        var slatCoverage = (time - dateProfile.minTime) / this.slotDuration; // floating-point value of # of slots covered
13603        var slatIndex;
13604        var slatRemainder;
13605        // compute a floating-point number for how many slats should be progressed through.
13606        // from 0 to number of slats (inclusive)
13607        // constrained because minTime/maxTime might be customized.
13608        slatCoverage = Math.max(0, slatCoverage);
13609        slatCoverage = Math.min(len, slatCoverage);
13610        // an integer index of the furthest whole slat
13611        // from 0 to number slats (*exclusive*, so len-1)
13612        slatIndex = Math.floor(slatCoverage);
13613        slatIndex = Math.min(slatIndex, len - 1);
13614        // how much further through the slatIndex slat (from 0.0-1.0) must be covered in addition.
13615        // could be 1.0 if slatCoverage is covering *all* the slots
13616        slatRemainder = slatCoverage - slatIndex;
13617        return this.slatCoordCache.getTopPosition(slatIndex) +
13618            this.slatCoordCache.getHeight(slatIndex) * slatRemainder;
13619    };
13620    // Refreshes the CSS top/bottom coordinates for each segment element.
13621    // Works when called after initial render, after a window resize/zoom for example.
13622    TimeGrid.prototype.updateSegVerticals = function (segs) {
13623        this.computeSegVerticals(segs);
13624        this.assignSegVerticals(segs);
13625    };
13626    // For each segment in an array, computes and assigns its top and bottom properties
13627    TimeGrid.prototype.computeSegVerticals = function (segs) {
13628        var eventMinHeight = this.opt('agendaEventMinHeight');
13629        var i;
13630        var seg;
13631        var dayDate;
13632        for (i = 0; i < segs.length; i++) {
13633            seg = segs[i];
13634            dayDate = this.dayDates[seg.dayIndex];
13635            seg.top = this.computeDateTop(seg.startMs, dayDate);
13636            seg.bottom = Math.max(seg.top + eventMinHeight, this.computeDateTop(seg.endMs, dayDate));
13637        }
13638    };
13639    // Given segments that already have their top/bottom properties computed, applies those values to
13640    // the segments' elements.
13641    TimeGrid.prototype.assignSegVerticals = function (segs) {
13642        var i;
13643        var seg;
13644        for (i = 0; i < segs.length; i++) {
13645            seg = segs[i];
13646            seg.el.css(this.generateSegVerticalCss(seg));
13647        }
13648    };
13649    // Generates an object with CSS properties for the top/bottom coordinates of a segment element
13650    TimeGrid.prototype.generateSegVerticalCss = function (seg) {
13651        return {
13652            top: seg.top,
13653            bottom: -seg.bottom // flipped because needs to be space beyond bottom edge of event container
13654        };
13655    };
13656    /* Hit System
13657    ------------------------------------------------------------------------------------------------------------------*/
13658    TimeGrid.prototype.prepareHits = function () {
13659        this.colCoordCache.build();
13660        this.slatCoordCache.build();
13661    };
13662    TimeGrid.prototype.releaseHits = function () {
13663        this.colCoordCache.clear();
13664        // NOTE: don't clear slatCoordCache because we rely on it for computeTimeTop
13665    };
13666    TimeGrid.prototype.queryHit = function (leftOffset, topOffset) {
13667        var snapsPerSlot = this.snapsPerSlot;
13668        var colCoordCache = this.colCoordCache;
13669        var slatCoordCache = this.slatCoordCache;
13670        if (colCoordCache.isLeftInBounds(leftOffset) && slatCoordCache.isTopInBounds(topOffset)) {
13671            var colIndex = colCoordCache.getHorizontalIndex(leftOffset);
13672            var slatIndex = slatCoordCache.getVerticalIndex(topOffset);
13673            if (colIndex != null && slatIndex != null) {
13674                var slatTop = slatCoordCache.getTopOffset(slatIndex);
13675                var slatHeight = slatCoordCache.getHeight(slatIndex);
13676                var partial = (topOffset - slatTop) / slatHeight; // floating point number between 0 and 1
13677                var localSnapIndex = Math.floor(partial * snapsPerSlot); // the snap # relative to start of slat
13678                var snapIndex = slatIndex * snapsPerSlot + localSnapIndex;
13679                var snapTop = slatTop + (localSnapIndex / snapsPerSlot) * slatHeight;
13680                var snapBottom = slatTop + ((localSnapIndex + 1) / snapsPerSlot) * slatHeight;
13681                return {
13682                    col: colIndex,
13683                    snap: snapIndex,
13684                    component: this,
13685                    left: colCoordCache.getLeftOffset(colIndex),
13686                    right: colCoordCache.getRightOffset(colIndex),
13687                    top: snapTop,
13688                    bottom: snapBottom
13689                };
13690            }
13691        }
13692    };
13693    TimeGrid.prototype.getHitFootprint = function (hit) {
13694        var start = this.getCellDate(0, hit.col); // row=0
13695        var time = this.computeSnapTime(hit.snap); // pass in the snap-index
13696        var end;
13697        start.time(time);
13698        end = start.clone().add(this.snapDuration);
13699        return new ComponentFootprint_1.default(new UnzonedRange_1.default(start, end), false // all-day?
13700        );
13701    };
13702    // Given a row number of the grid, representing a "snap", returns a time (Duration) from its start-of-day
13703    TimeGrid.prototype.computeSnapTime = function (snapIndex) {
13704        return moment.duration(this.dateProfile.minTime + this.snapDuration * snapIndex);
13705    };
13706    TimeGrid.prototype.getHitEl = function (hit) {
13707        return this.colEls.eq(hit.col);
13708    };
13709    /* Event Drag Visualization
13710    ------------------------------------------------------------------------------------------------------------------*/
13711    // Renders a visual indication of an event being dragged over the specified date(s).
13712    // A returned value of `true` signals that a mock "helper" event has been rendered.
13713    TimeGrid.prototype.renderDrag = function (eventFootprints, seg, isTouch) {
13714        var i;
13715        if (seg) { // if there is event information for this drag, render a helper event
13716            if (eventFootprints.length) {
13717                this.helperRenderer.renderEventDraggingFootprints(eventFootprints, seg, isTouch);
13718                // signal that a helper has been rendered
13719                return true;
13720            }
13721        }
13722        else { // otherwise, just render a highlight
13723            for (i = 0; i < eventFootprints.length; i++) {
13724                this.renderHighlight(eventFootprints[i].componentFootprint);
13725            }
13726        }
13727    };
13728    // Unrenders any visual indication of an event being dragged
13729    TimeGrid.prototype.unrenderDrag = function () {
13730        this.unrenderHighlight();
13731        this.helperRenderer.unrender();
13732    };
13733    /* Event Resize Visualization
13734    ------------------------------------------------------------------------------------------------------------------*/
13735    // Renders a visual indication of an event being resized
13736    TimeGrid.prototype.renderEventResize = function (eventFootprints, seg, isTouch) {
13737        this.helperRenderer.renderEventResizingFootprints(eventFootprints, seg, isTouch);
13738    };
13739    // Unrenders any visual indication of an event being resized
13740    TimeGrid.prototype.unrenderEventResize = function () {
13741        this.helperRenderer.unrender();
13742    };
13743    /* Selection
13744    ------------------------------------------------------------------------------------------------------------------*/
13745    // Renders a visual indication of a selection. Overrides the default, which was to simply render a highlight.
13746    TimeGrid.prototype.renderSelectionFootprint = function (componentFootprint) {
13747        if (this.opt('selectHelper')) { // this setting signals that a mock helper event should be rendered
13748            this.helperRenderer.renderComponentFootprint(componentFootprint);
13749        }
13750        else {
13751            this.renderHighlight(componentFootprint);
13752        }
13753    };
13754    // Unrenders any visual indication of a selection
13755    TimeGrid.prototype.unrenderSelection = function () {
13756        this.helperRenderer.unrender();
13757        this.unrenderHighlight();
13758    };
13759    return TimeGrid;
13760}(InteractiveDateComponent_1.default));
13761exports.default = TimeGrid;
13762TimeGrid.prototype.eventRendererClass = TimeGridEventRenderer_1.default;
13763TimeGrid.prototype.businessHourRendererClass = BusinessHourRenderer_1.default;
13764TimeGrid.prototype.helperRendererClass = TimeGridHelperRenderer_1.default;
13765TimeGrid.prototype.fillRendererClass = TimeGridFillRenderer_1.default;
13766StandardInteractionsMixin_1.default.mixInto(TimeGrid);
13767DayTableMixin_1.default.mixInto(TimeGrid);
13768
13769
13770/***/ }),
13771/* 240 */
13772/***/ (function(module, exports, __webpack_require__) {
13773
13774Object.defineProperty(exports, "__esModule", { value: true });
13775var tslib_1 = __webpack_require__(2);
13776var util_1 = __webpack_require__(4);
13777var EventRenderer_1 = __webpack_require__(44);
13778/*
13779Only handles foreground segs.
13780Does not own rendering. Use for low-level util methods by TimeGrid.
13781*/
13782var TimeGridEventRenderer = /** @class */ (function (_super) {
13783    tslib_1.__extends(TimeGridEventRenderer, _super);
13784    function TimeGridEventRenderer(timeGrid, fillRenderer) {
13785        var _this = _super.call(this, timeGrid, fillRenderer) || this;
13786        _this.timeGrid = timeGrid;
13787        return _this;
13788    }
13789    TimeGridEventRenderer.prototype.renderFgSegs = function (segs) {
13790        this.renderFgSegsIntoContainers(segs, this.timeGrid.fgContainerEls);
13791    };
13792    // Given an array of foreground segments, render a DOM element for each, computes position,
13793    // and attaches to the column inner-container elements.
13794    TimeGridEventRenderer.prototype.renderFgSegsIntoContainers = function (segs, containerEls) {
13795        var segsByCol;
13796        var col;
13797        segsByCol = this.timeGrid.groupSegsByCol(segs);
13798        for (col = 0; col < this.timeGrid.colCnt; col++) {
13799            this.updateFgSegCoords(segsByCol[col]);
13800        }
13801        this.timeGrid.attachSegsByCol(segsByCol, containerEls);
13802    };
13803    TimeGridEventRenderer.prototype.unrenderFgSegs = function () {
13804        if (this.fgSegs) { // hack
13805            this.fgSegs.forEach(function (seg) {
13806                seg.el.remove();
13807            });
13808        }
13809    };
13810    // Computes a default event time formatting string if `timeFormat` is not explicitly defined
13811    TimeGridEventRenderer.prototype.computeEventTimeFormat = function () {
13812        return this.opt('noMeridiemTimeFormat'); // like "6:30" (no AM/PM)
13813    };
13814    // Computes a default `displayEventEnd` value if one is not expliclty defined
13815    TimeGridEventRenderer.prototype.computeDisplayEventEnd = function () {
13816        return true;
13817    };
13818    // Renders the HTML for a single event segment's default rendering
13819    TimeGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) {
13820        var view = this.view;
13821        var calendar = view.calendar;
13822        var componentFootprint = seg.footprint.componentFootprint;
13823        var isAllDay = componentFootprint.isAllDay;
13824        var eventDef = seg.footprint.eventDef;
13825        var isDraggable = view.isEventDefDraggable(eventDef);
13826        var isResizableFromStart = !disableResizing && seg.isStart && view.isEventDefResizableFromStart(eventDef);
13827        var isResizableFromEnd = !disableResizing && seg.isEnd && view.isEventDefResizableFromEnd(eventDef);
13828        var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);
13829        var skinCss = util_1.cssToStr(this.getSkinCss(eventDef));
13830        var timeText;
13831        var fullTimeText; // more verbose time text. for the print stylesheet
13832        var startTimeText; // just the start time text
13833        classes.unshift('fc-time-grid-event', 'fc-v-event');
13834        // if the event appears to span more than one day...
13835        if (view.isMultiDayRange(componentFootprint.unzonedRange)) {
13836            // Don't display time text on segments that run entirely through a day.
13837            // That would appear as midnight-midnight and would look dumb.
13838            // Otherwise, display the time text for the *segment's* times (like 6pm-midnight or midnight-10am)
13839            if (seg.isStart || seg.isEnd) {
13840                var zonedStart = calendar.msToMoment(seg.startMs);
13841                var zonedEnd = calendar.msToMoment(seg.endMs);
13842                timeText = this._getTimeText(zonedStart, zonedEnd, isAllDay);
13843                fullTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, 'LT');
13844                startTimeText = this._getTimeText(zonedStart, zonedEnd, isAllDay, null, false); // displayEnd=false
13845            }
13846        }
13847        else {
13848            // Display the normal time text for the *event's* times
13849            timeText = this.getTimeText(seg.footprint);
13850            fullTimeText = this.getTimeText(seg.footprint, 'LT');
13851            startTimeText = this.getTimeText(seg.footprint, null, false); // displayEnd=false
13852        }
13853        return '<a class="' + classes.join(' ') + '"' +
13854            (eventDef.url ?
13855                ' href="' + util_1.htmlEscape(eventDef.url) + '"' :
13856                '') +
13857            (skinCss ?
13858                ' style="' + skinCss + '"' :
13859                '') +
13860            '>' +
13861            '<div class="fc-content">' +
13862            (timeText ?
13863                '<div class="fc-time"' +
13864                    ' data-start="' + util_1.htmlEscape(startTimeText) + '"' +
13865                    ' data-full="' + util_1.htmlEscape(fullTimeText) + '"' +
13866                    '>' +
13867                    '<span>' + util_1.htmlEscape(timeText) + '</span>' +
13868                    '</div>' :
13869                '') +
13870            (eventDef.title ?
13871                '<div class="fc-title">' +
13872                    util_1.htmlEscape(eventDef.title) +
13873                    '</div>' :
13874                '') +
13875            '</div>' +
13876            '<div class="fc-bg"></div>' +
13877            /* TODO: write CSS for this
13878            (isResizableFromStart ?
13879              '<div class="fc-resizer fc-start-resizer"></div>' :
13880              ''
13881              ) +
13882            */
13883            (isResizableFromEnd ?
13884                '<div class="fc-resizer fc-end-resizer"></div>' :
13885                '') +
13886            '</a>';
13887    };
13888    // Given segments that are assumed to all live in the *same column*,
13889    // compute their verical/horizontal coordinates and assign to their elements.
13890    TimeGridEventRenderer.prototype.updateFgSegCoords = function (segs) {
13891        this.timeGrid.computeSegVerticals(segs); // horizontals relies on this
13892        this.computeFgSegHorizontals(segs); // compute horizontal coordinates, z-index's, and reorder the array
13893        this.timeGrid.assignSegVerticals(segs);
13894        this.assignFgSegHorizontals(segs);
13895    };
13896    // Given an array of segments that are all in the same column, set
13896s the backwardCoord and forwardCoord on each.
13897    // NOTE: Also reorders the given array by date!
13898    TimeGridEventRenderer.prototype.computeFgSegHorizontals = function (segs) {
13899        var levels;
13900        var level0;
13901        var i;
13902        this.sortEventSegs(segs); // order by certain criteria
13903        levels = buildSlotSegLevels(segs);
13904        computeForwardSlotSegs(levels);
13905        if ((level0 = levels[0])) {
13906            for (i = 0; i < level0.length; i++) {
13907                computeSlotSegPressures(level0[i]);
13908            }
13909            for (i = 0; i < level0.length; i++) {
13910                this.computeFgSegForwardBack(level0[i], 0, 0);
13911            }
13912        }
13913    };
13914    // Calculate seg.forwardCoord and seg.backwardCoord for the segment, where both values range
13915    // from 0 to 1. If the calendar is left-to-right, the seg.backwardCoord maps to "left" and
13916    // seg.forwardCoord maps to "right" (via percentage). Vice-versa if the calendar is right-to-left.
13917    //
13918    // The segment might be part of a "series", which means consecutive segments with the same pressure
13919    // who's width is unknown until an edge has been hit. `seriesBackwardPressure` is the number of
13920    // segments behind this one in the current series, and `seriesBackwardCoord` is the starting
13921    // coordinate of the first segment in the series.
13922    TimeGridEventRenderer.prototype.computeFgSegForwardBack = function (seg, seriesBackwardPressure, seriesBackwardCoord) {
13923        var forwardSegs = seg.forwardSegs;
13924        var i;
13925        if (seg.forwardCoord === undefined) { // not already computed
13926            if (!forwardSegs.length) {
13927                // if there are no forward segments, this segment should butt up against the edge
13928                seg.forwardCoord = 1;
13929            }
13930            else {
13931                // sort highest pressure first
13932                this.sortForwardSegs(forwardSegs);
13933                // this segment's forwardCoord will be calculated from the backwardCoord of the
13934                // highest-pressure forward segment.
13935                this.computeFgSegForwardBack(forwardSegs[0], seriesBackwardPressure + 1, seriesBackwardCoord);
13936                seg.forwardCoord = forwardSegs[0].backwardCoord;
13937            }
13938            // calculate the backwardCoord from the forwardCoord. consider the series
13939            seg.backwardCoord = seg.forwardCoord -
13940                (seg.forwardCoord - seriesBackwardCoord) / // available width for series
13941                    (seriesBackwardPressure + 1); // # of segments in the series
13942            // use this segment's coordinates to computed the coordinates of the less-pressurized
13943            // forward segments
13944            for (i = 0; i < forwardSegs.length; i++) {
13945                this.computeFgSegForwardBack(forwardSegs[i], 0, seg.forwardCoord);
13946            }
13947        }
13948    };
13949    TimeGridEventRenderer.prototype.sortForwardSegs = function (forwardSegs) {
13950        forwardSegs.sort(util_1.proxy(this, 'compareForwardSegs'));
13951    };
13952    // A cmp function for determining which forward segment to rely on more when computing coordinates.
13953    TimeGridEventRenderer.prototype.compareForwardSegs = function (seg1, seg2) {
13954        // put higher-pressure first
13955        return seg2.forwardPressure - seg1.forwardPressure ||
13956            // put segments that are closer to initial edge first (and favor ones with no coords yet)
13957            (seg1.backwardCoord || 0) - (seg2.backwardCoord || 0) ||
13958            // do normal sorting...
13959            this.compareEventSegs(seg1, seg2);
13960    };
13961    // Given foreground event segments that have already had their position coordinates computed,
13962    // assigns position-related CSS values to their elements.
13963    TimeGridEventRenderer.prototype.assignFgSegHorizontals = function (segs) {
13964        var i;
13965        var seg;
13966        for (i = 0; i < segs.length; i++) {
13967            seg = segs[i];
13968            seg.el.css(this.generateFgSegHorizontalCss(seg));
13969            // if the event is short that the title will be cut off,
13970            // attach a className that condenses the title into the time area.
13971            if (seg.footprint.eventDef.title && seg.bottom - seg.top < 30) {
13972                seg.el.addClass('fc-short'); // TODO: "condensed" is a better name
13973            }
13974        }
13975    };
13976    // Generates an object with CSS properties/values that should be applied to an event segment element.
13977    // Contains important positioning-related properties that should be applied to any event element, customized or not.
13978    TimeGridEventRenderer.prototype.generateFgSegHorizontalCss = function (seg) {
13979        var shouldOverlap = this.opt('slotEventOverlap');
13980        var backwardCoord = seg.backwardCoord; // the left side if LTR. the right side if RTL. floating-point
13981        var forwardCoord = seg.forwardCoord; // the right side if LTR. the left side if RTL. floating-point
13982        var props = this.timeGrid.generateSegVerticalCss(seg); // get top/bottom first
13983        var isRTL = this.timeGrid.isRTL;
13984        var left; // amount of space from left edge, a fraction of the total width
13985        var right; // amount of space from right edge, a fraction of the total width
13986        if (shouldOverlap) {
13987            // double the width, but don't go beyond the maximum forward coordinate (1.0)
13988            forwardCoord = Math.min(1, backwardCoord + (forwardCoord - backwardCoord) * 2);
13989        }
13990        if (isRTL) {
13991            left = 1 - forwardCoord;
13992            right = backwardCoord;
13993        }
13994        else {
13995            left = backwardCoord;
13996            right = 1 - forwardCoord;
13997        }
13998        props.zIndex = seg.level + 1; // convert from 0-base to 1-based
13999        props.left = left * 100 + '%';
14000        props.right = right * 100 + '%';
14001        if (shouldOverlap && seg.forwardPressure) {
14002            // add padding to the edge so that forward stacked events don't cover the resizer's icon
14003            props[isRTL ? 'marginLeft' : 'marginRight'] = 10 * 2; // 10 is a guesstimate of the icon's width
14004        }
14005        return props;
14006    };
14007    return TimeGridEventRenderer;
14008}(EventRenderer_1.default));
14009exports.default = TimeGridEventRenderer;
14010// Builds an array of segments "levels". The first level will be the leftmost tier of segments if the calendar is
14011// left-to-right, or the rightmost if the calendar is right-to-left. Assumes the segments are already ordered by date.
14012function buildSlotSegLevels(segs) {
14013    var levels = [];
14014    var i;
14015    var seg;
14016    var j;
14017    for (i = 0; i < segs.length; i++) {
14018        seg = segs[i];
14019        // go through all the levels and stop on the first level where there are no collisions
14020        for (j = 0; j < levels.length; j++) {
14021            if (!computeSlotSegCollisions(seg, levels[j]).length) {
14022                break;
14023            }
14024        }
14025        seg.level = j;
14026        (levels[j] || (levels[j] = [])).push(seg);
14027    }
14028    return levels;
14029}
14030// For every segment, figure out the other segments that are in subsequent
14031// levels that also occupy the same vertical space. Accumulate in seg.forwardSegs
14032function computeForwardSlotSegs(levels) {
14033    var i;
14034    var level;
14035    var j;
14036    var seg;
14037    var k;
14038    for (i = 0; i < levels.length; i++) {
14039        level = levels[i];
14040        for (j = 0; j < level.length; j++) {
14041            seg = level[j];
14042            seg.forwardSegs = [];
14043            for (k = i + 1; k < levels.length; k++) {
14044                computeSlotSegCollisions(seg, levels[k], seg.forwardSegs);
14045            }
14046        }
14047    }
14048}
14049// Figure out which path forward (via seg.forwardSegs) results in the longest path until
14050// the furthest edge is reached. The number of segments in this path will be seg.forwardPressure
14051function computeSlotSegPressures(seg) {
14052    var forwardSegs = seg.forwardSegs;
14053    var forwardPressure = 0;
14054    var i;
14055    var forwardSeg;
14056    if (seg.forwardPressure === undefined) { // not already computed
14057        for (i = 0; i < forwardSegs.length; i++) {
14058            forwardSeg = forwardSegs[i];
14059            // figure out the child's maximum forward path
14060            computeSlotSegPressures(forwardSeg);
14061            // either use the existing maximum, or use the child's forward pressure
14062            // plus one (for the forwardSeg itself)
14063            forwardPressure = Math.max(forwardPressure, 1 + forwardSeg.forwardPressure);
14064        }
14065        seg.forwardPressure = forwardPressure;
14066    }
14067}
14068// Find all the segments in `otherSegs` that vertically collide with `seg`.
14069// Append into an optionally-supplied `results` array and return.
14070function computeSlotSegCollisions(seg, otherSegs, results) {
14071    if (results === void 0) { results = []; }
14072    for (var i = 0; i < otherSegs.length; i++) {
14073        if (isSlotSegCollision(seg, otherSegs[i])) {
14074            results.push(otherSegs[i]);
14075        }
14076    }
14077    return results;
14078}
14079// Do these segments occupy the same vertical space?
14080function isSlotSegCollision(seg1, seg2) {
14081    return seg1.bottom > seg2.top && seg1.top < seg2.bottom;
14082}
14083
14084
14085/***/ }),
14086/* 241 */
14087/***/ (function(module, exports, __webpack_require__) {
14088
14089Object.defineProperty(exports, "__esModule", { value: true });
14090var tslib_1 = __webpack_require__(2);
14091var $ = __webpack_require__(3);
14092var HelperRenderer_1 = __webpack_require__(63);
14093var TimeGridHelperRenderer = /** @class */ (function (_super) {
14094    tslib_1.__extends(TimeGridHelperRenderer, _super);
14095    function TimeGridHelperRenderer() {
14096        return _super !== null && _super.apply(this, arguments) || this;
14097    }
14098    TimeGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) {
14099        var helperNodes = [];
14100        var i;
14101        var seg;
14102        var sourceEl;
14103        // TODO: not good to call eventRenderer this way
14104        this.eventRenderer.renderFgSegsIntoContainers(segs, this.component.helperContainerEls);
14105        // Try to make the segment that is in the same row as sourceSeg look the same
14106        for (i = 0; i < segs.length; i++) {
14107            seg = segs[i];
14108            if (sourceSeg && sourceSeg.col === seg.col) {
14109                sourceEl = sourceSeg.el;
14110                seg.el.css({
14111                    left: sourceEl.css('left'),
14112                    right: sourceEl.css('right'),
14113                    'margin-left': sourceEl.css('margin-left'),
14114                    'margin-right': sourceEl.css('margin-right')
14115                });
14116            }
14117            helperNodes.push(seg.el[0]);
14118        }
14119        return $(helperNodes); // must return the elements rendered
14120    };
14121    return TimeGridHelperRenderer;
14122}(HelperRenderer_1.default));
14123exports.default = TimeGridHelperRenderer;
14124
14125
14126/***/ }),
14127/* 242 */
14128/***/ (function(module, exports, __webpack_require__) {
14129
14130Object.defineProperty(exports, "__esModule", { value: true });
14131var tslib_1 = __webpack_require__(2);
14132var FillRenderer_1 = __webpack_require__(62);
14133var TimeGridFillRenderer = /** @class */ (function (_super) {
14134    tslib_1.__extends(TimeGridFillRenderer, _super);
14135    function TimeGridFillRenderer() {
14136        return _super !== null && _super.apply(this, arguments) || this;
14137    }
14138    TimeGridFillRenderer.prototype.attachSegEls = function (type, segs) {
14139        var timeGrid = this.component;
14140        var containerEls;
14141        // TODO: more efficient lookup
14142        if (type === 'bgEvent') {
14143            containerEls = timeGrid.bgContainerEls;
14144        }
14145        else if (type === 'businessHours') {
14146            containerEls = timeGrid.businessContainerEls;
14147        }
14148        else if (type === 'highlight') {
14149            containerEls = timeGrid.highlightContainerEls;
14150        }
14151        timeGrid.updateSegVerticals(segs);
14152        timeGrid.attachSegsByCol(timeGrid.groupSegsByCol(segs), containerEls);
14153        return segs.map(function (seg) {
14154            return seg.el[0];
14155        });
14156    };
14157    return TimeGridFillRenderer;
14158}(FillRenderer_1.default));
14159exports.default = TimeGridFillRenderer;
14160
14161
14162/***/ }),
14163/* 243 */
14164/***/ (function(module, exports, __webpack_require__) {
14165
14166Object.defineProperty(exports, "__esModule", { value: true });
14167var tslib_1 = __webpack_require__(2);
14168var $ = __webpack_require__(3);
14169var util_1 = __webpack_require__(4);
14170var EventRenderer_1 = __webpack_require__(44);
14171/* Event-rendering methods for the DayGrid class
14172----------------------------------------------------------------------------------------------------------------------*/
14173var DayGridEventRenderer = /** @class */ (function (_super) {
14174    tslib_1.__extends(DayGridEventRenderer, _super);
14175    function DayGridEventRenderer(dayGrid, fillRenderer) {
14176        var _this = _super.call(this, dayGrid, fillRenderer) || this;
14177        _this.dayGrid = dayGrid;
14178        return _this;
14179    }
14180    DayGridEventRenderer.prototype.renderBgRanges = function (eventRanges) {
14181        // don't render timed background events
14182        eventRanges = $.grep(eventRanges, function (eventRange) {
14183            return eventRange.eventDef.isAllDay();
14184        });
14185        _super.prototype.renderBgRanges.call(this, eventRanges);
14186    };
14187    // Renders the given foreground event segments onto the grid
14188    DayGridEventRenderer.prototype.renderFgSegs = function (segs) {
14189        var rowStructs = this.rowStructs = this.renderSegRows(segs);
14190        // append to each row's content skeleton
14191        this.dayGrid.rowEls.each(function (i, rowNode) {
14192            $(rowNode).find('.fc-content-skeleton > table').append(rowStructs[i].tbodyEl);
14193        });
14194    };
14195    // Unrenders all currently rendered foreground event segments
14196    DayGridEventRenderer.prototype.unrenderFgSegs = function () {
14197        var rowStructs = this.rowStructs || [];
14198        var rowStruct;
14199        while ((rowStruct = rowStructs.pop())) {
14200            rowStruct.tbodyEl.remove();
14201        }
14202        this.rowStructs = null;
14203    };
14204    // Uses the given events array to generate <tbody> elements that should be appended to each row's content skeleton.
14205    // Returns an array of rowStruct objects (see the bottom of `renderSegRow`).
14206    // PRECONDITION: each segment shoud already have a rendered and assigned `.el`
14207    DayGridEventRenderer.prototype.renderSegRows = function (segs) {
14208        var rowStructs = [];
14209        var segRows;
14210        var row;
14211        segRows = this.groupSegRows(segs); // group into nested arrays
14212        // iterate each row of segment groupings
14213        for (row = 0; row < segRows.length; row++) {
14214            rowStructs.push(this.renderSegRow(row, segRows[row]));
14215        }
14216        return rowStructs;
14217    };
14218    // Given a row # and an array of segments all in the same row, render a <tbody> element, a skeleton that contains
14219    // the segments. Returns object with a bunch of internal data about how the render was calculated.
14220    // NOTE: modifies rowSegs
14221    DayGridEventRenderer.prototype.renderSegRow = function (row, rowSegs) {
14222        var colCnt = this.dayGrid.colCnt;
14223        var segLevels = this.buildSegLevels(rowSegs); // group into sub-arrays of levels
14224        var levelCnt = Math.max(1, segLevels.length); // ensure at least one level
14225        var tbody = $('<tbody>');
14226        var segMatrix = []; // lookup for which segments are rendered into which level+col cells
14227        var cellMatrix = []; // lookup for all <td> elements of the level+col matrix
14228        var loneCellMatrix = []; // lookup for <td> elements that only take up a single column
14229        var i;
14230        var levelSegs;
14231        var col;
14232        var tr;
14233        var j;
14234        var seg;
14235        var td;
14236        // populates empty cells from the current column (`col`) to `endCol`
14237        function emptyCellsUntil(endCol) {
14238            while (col < endCol) {
14239                // try to grab a cell from the level above and extend its rowspan. otherwise, create a fresh cell
14240                td = (loneCellMatrix[i - 1] || [])[col];
14241                if (td) {
14242                    td.attr('rowspan', parseInt(td.attr('rowspan') || 1, 10) + 1);
14243                }
14244                else {
14245                    td = $('<td>');
14246                    tr.append(td);
14247                }
14248                cellMatrix[i][col] = td;
14249                loneCellMatrix[i][col] = td;
14250                col++;
14251            }
14252        }
14253        for (i = 0; i < levelCnt; i++) { // iterate through all levels
14254            levelSegs = segLevels[i];
14255            col = 0;
14256            tr = $('<tr>');
14257            segMatrix.push([]);
14258            cellMatrix.push([]);
14259            loneCellMatrix.push([]);
14260            // levelCnt might be 1 even though there are no actual levels. protect against this.
14261            // this single empty row is useful for styling.
14262            if (levelSegs) {
14263                for (j = 0; j < levelSegs.length; j++) { // iterate through segments in level
14264                    seg = levelSegs[j];
14265                    emptyCellsUntil(seg.leftCol);
14266                    // create a container that occupies or more columns. append the event element.
14267                    td = $('<td class="fc-event-container">').append(seg.el);
14268                    if (seg.leftCol !== seg.rightCol) {
14269                        td.attr('colspan', seg.rightCol - seg.leftCol + 1);
14270                    }
14271                    else { // a single-column segment
14272                        loneCellMatrix[i][col] = td;
14273                    }
14274                    while (col <= seg.rightCol) {
14275                        cellMatrix[i][col] = td;
14276                        segMatrix[i][col] = seg;
14277                        col++;
14278                    }
14279                    tr.append(td);
14280                }
14281            }
14282            emptyCellsUntil(colCnt); // finish off the row
14283            this.dayGrid.bookendCells(tr);
14284            tbody.append(tr);
14285        }
14286        return {
14287            row: row,
14288            tbodyEl: tbody,
14289            cellMatrix: cellMatrix,
14290            segMatrix: segMatrix,
14291            segLevels: segLevels,
14292            segs: rowSegs
14293        };
14294    };
14295    // Stacks a flat array of segments, which are all assumed to be in the same row, into subarrays of vertical levels.
14296    // NOTE: modifies segs
14297    DayGridEventRenderer.prototype.buildSegLevels = function (segs) {
14298        var levels = [];
14299        var i;
14300        var seg;
14301        var j;
14302        // Give preference to elements with certain criteria, so they have
14303        // a chance to be closer to the top.
14304        this.sortEventSegs(segs);
14305        for (i = 0; i < segs.length; i++) {
14306            seg = segs[i];
14307            // loop through levels, starting with the topmost, until the segment doesn't collide with other segments
14308            for (j = 0; j < levels.length; j++) {
14309                if (!isDaySegCollision(seg, levels[j])) {
14310                    break;
14311                }
14312            }
14313            // `j` now holds the desired subrow index
14314            seg.level = j;
14315            // create new level array if needed and append segment
14316            (levels[j] || (levels[j] = [])).push(seg);
14317        }
14318        // order segments left-to-right. very important if calendar is RTL
14319        for (j = 0; j < levels.length; j++) {
14320            levels[j].sort(compareDaySegCols);
14321        }
14322        return levels;
14323    };
14324    // Given a flat array of segments, return an array of sub-arrays, grouped by each segment's row
14325    DayGridEventRenderer.prototype.groupSegRows = function (segs) {
14326        var segRows = [];
14327        var i;
14328        for (i = 0; i < this.dayGrid.rowCnt; i++) {
14329            segRows.push([]);
14330        }
14331        for (i = 0; i < segs.length; i++) {
14332            segRows[segs[i].row].push(segs[i]);
14333        }
14334        return segRows;
14335    };
14336    // Computes a default event time formatting string if `timeFormat` is not explicitly defined
14337    DayGridEventRenderer.prototype.computeEventTimeFormat = function () {
14338        return this.opt('extraSmallTimeFormat'); // like "6p" or "6:30p"
14339    };
14340    // Computes a default `displayEventEnd` value if one is not expliclty defined
14341    DayGridEventRenderer.prototype.computeDisplayEventEnd = function () {
14342        return this.dayGrid.colCnt === 1; // we'll likely have space if there's only one day
14343    };
14344    // Builds the HTML to be used for the default element for an individual segment
14345    DayGridEventRenderer.prototype.fgSegHtml = function (seg, disableResizing) {
14346        var view = this.view;
14347        var eventDef = seg.footprint.eventDef;
14348        var isAllDay = seg.footprint.componentFootprint.isAllDay;
14349        var isDraggable = view.isEventDefDraggable(eventDef);
14350        var isResizableFromStart = !disableResizing && isAllDay &&
14351            seg.isStart && view.isEventDefResizableFromStart(eventDef);
14352        var isResizableFromEnd = !disableResizing && isAllDay &&
14353            seg.isEnd && view.isEventDefResizableFromEnd(eventDef);
14354        var classes = this.getSegClasses(seg, isDraggable, isResizableFromStart || isResizableFromEnd);
14355        var skinCss = util_1.cssToStr(this.getSkinCss(eventDef));
14356        var timeHtml = '';
14357        var timeText;
14358        var titleHtml;
14359        classes.unshift('fc-day-grid-event', 'fc-h-event');
14360        // Only display a timed events time if it is the starting segment
14361        if (seg.isStart) {
14362            timeText = this.getTimeText(seg.footprint);
14363            if (timeText) {
14364                timeHtml = '<span class="fc-time">' + util_1.htmlEscape(timeText) + '</span>';
14365            }
14366        }
14367        titleHtml =
14368            '<span class="fc-title">' +
14369                (util_1.htmlEscape(eventDef.title || '') || '&nbsp;') + // we always want one line of height
14370                '</span>';
14371        return '<a class="' + classes.join(' ') + '"' +
14372            (eventDef.url ?
14373                ' href="' + util_1.htmlEscape(eventDef.url) + '"' :
14374                '') +
14375            (skinCss ?
14376                ' style="' + skinCss + '"' :
14377                '') +
14378            '>' +
14379            '<div class="fc-content">' +
14380            (this.dayGrid.isRTL ?
14381                titleHtml + ' ' + timeHtml : // put a natural space in between
14382                timeHtml + ' ' + titleHtml //
14383            ) +
14384            '</div>' +
14385            (isResizableFromStart ?
14386                '<div class="fc-resizer fc-start-resizer"></div>' :
14387                '') +
14388            (isResizableFromEnd ?
14389                '<div class="fc-resizer fc-end-resizer"></div>' :
14390                '') +
14391            '</a>';
14392    };
14393    return DayGridEventRenderer;
14394}(EventRenderer_1.default));
14395exports.default = DayGridEventRenderer;
14396// Computes whether two segments' columns collide. They are assumed to be in the same row.
14397function isDaySegCollision(seg, otherSegs) {
14398    var i;
14399    var otherSeg;
14400    for (i = 0; i < otherSegs.length; i++) {
14401        otherSeg = otherSegs[i];
14402        if (otherSeg.leftCol <= seg.rightCol &&
14403            otherSeg.rightCol >= seg.leftCol) {
14404            return true;
14405        }
14406    }
14407    return false;
14408}
14409// A cmp function for determining the leftmost event
14410function compareDaySegCols(a, b) {
14411    return a.leftCol - b.leftCol;
14412}
14413
14414
14415/***/ }),
14416/* 244 */
14417/***/ (function(module, exports, __webpack_require__) {
14418
14419Object.defineProperty(exports, "__esModule", { value: true });
14420var tslib_1 = __webpack_require__(2);
14421var $ = __webpack_require__(3);
14422var HelperRenderer_1 = __webpack_require__(63);
14423var DayGridHelperRenderer = /** @class */ (function (_super) {
14424    tslib_1.__extends(DayGridHelperRenderer, _super);
14425    function DayGridHelperRenderer() {
14426        return _super !== null && _super.apply(this, arguments) || this;
14427    }
14428    // Renders a mock "helper" event. `sourceSeg` is the associated internal segment object. It can be null.
14429    DayGridHelperRenderer.prototype.renderSegs = function (segs, sourceSeg) {
14430        var helperNodes = [];
14431        var rowStructs;
14432        // TODO: not good to call eventRenderer this way
14433        rowStructs = this.eventRenderer.renderSegRows(segs);
14434        // inject each new event skeleton into each associated row
14435        this.component.rowEls.each(function (row, rowNode) {
14436            var rowEl = $(rowNode); // the .fc-row
14437            var skeletonEl = $('<div class="fc-helper-skeleton"><table></table></div>'); // will be absolutely positioned
14438            var skeletonTopEl;
14439            var skeletonTop;
14440            // If there is an original segment, match the top position. Otherwise, put it at the row's top level
14441            if (sourceSeg && sourceSeg.row === row) {
14442                skeletonTop = sourceSeg.el.position().top;
14443            }
14444            else {
14445                skeletonTopEl = rowEl.find('.fc-content-skeleton tbody');
14446                if (!skeletonTopEl.length) { // when no events
14447                    skeletonTopEl = rowEl.find('.fc-content-skeleton table');
14448                }
14449                skeletonTop = skeletonTopEl.position().top;
14450            }
14451            skeletonEl.css('top', skeletonTop)
14452                .find('table')
14453                .append(rowStructs[row].tbodyEl);
14454            rowEl.append(skeletonEl);
14455            helperNodes.push(skeletonEl[0]);
14456        });
14457        return $(helperNodes); // must return the elements rendered
14458    };
14459    return DayGridHelperRenderer;
14460}(HelperRenderer_1.default));
14461exports.default = DayGridHelperRenderer;
14462
14463
14464/***/ }),
14465/* 245 */
14466/***/ (function(module, exports, __webpack_require__) {
14467
14468Object.defineProperty(exports, "__esModule", { value: true });
14469var tslib_1 = __webpack_require__(2);
14470var $ = __webpack_require__(3);
14471var FillRenderer_1 = __webpack_require__(62);
14472var DayGridFillRenderer = /** @class */ (function (_super) {
14473    tslib_1.__extends(DayGridFillRenderer, _super);
14474    function DayGridFillRenderer() {
14475        var _this = _super !== null && _super.apply(this, arguments) || this;
14476        _this.fillSegTag = 'td'; // override the default tag name
14477        return _this;
14478    }
14479    DayGridFillRenderer.prototype.attachSegEls = function (type, segs) {
14480        var nodes = [];
14481        var i;
14482        var seg;
14483        var skeletonEl;
14484        for (i = 0; i < segs.length; i++) {
14485            seg = segs[i];
14486            skeletonEl = this.renderFillRow(type, seg);
14487            this.component.rowEls.eq(seg.row).append(skeletonEl);
14488            nodes.push(skeletonEl[0]);
14489        }
14490        return nodes;
14491    };
14492    // Generates the HTML needed for one row of a fill. Requires the seg's el to be rendered.
14493    DayGridFillRenderer.prototype.renderFillRow = function (type, seg) {
14494        var colCnt = this.component.colCnt;
14495        var startCol = seg.leftCol;
14496        var endCol = seg.rightCol + 1;
14497        var className;
14498        var skeletonEl;
14499        var trEl;
14500        if (type === 'businessHours') {
14501            className = 'bgevent';
14502        }
14503        else {
14504            className = type.toLowerCase();
14505        }
14506        skeletonEl = $('<div class="fc-' + className + '-skeleton">' +
14507            '<table><tr></tr></table>' +
14508            '</div>');
14509        trEl = skeletonEl.find('tr');
14510        if (startCol > 0) {
14511            trEl.append(
14512            // will create (startCol + 1) td's
14513            new Array(startCol + 1).join('<td></td>'));
14514        }
14515        trEl.append(seg.el.attr('colspan', endCol - startCol));
14516        if (endCol < colCnt) {
14517            trEl.append(
14518            // will create (colCnt - endCol) td's
14519            new Array(colCnt - endCol + 1).join('<td></td>'));
14520        }
14521        this.component.bookendCells(trEl);
14522        return skeletonEl;
14523    };
14524    return DayGridFillRenderer;
14525}(FillRenderer_1.default));
14526exports.default = DayGridFillRenderer;
14527
14528
14529/***/ }),
14530/* 246 */
14531/***/ (function(module, exports, __webpack_require__) {
14532
14533Object.defineProperty(exports, "__esModule", { value: true });
14534var tslib_1 = __webpack_require__(2);
14535var moment = __webpack_require__(0);
14536var util_1 = __webpack_require__(4);
14537var BasicView_1 = __webpack_require__(67);
14538var MonthViewDateProfileGenerator_1 = __webpack_require__(247);
14539/* A month view with day cells running in rows (one-per-week) and columns
14540----------------------------------------------------------------------------------------------------------------------*/
14541var MonthView = /** @class */ (function (_super) {
14542    tslib_1.__extends(MonthView, _super);
14543    function MonthView() {
14544        return _super !== null && _super.apply(this, arguments) || this;
14545    }
14546    // Overrides the default BasicView behavior to have special multi-week auto-height logic
14547    MonthView.prototype.setGridHeight = function (height, isAuto) {
14548        // if auto, make the height of each row the height that it would be if there were 6 weeks
14549        if (isAuto) {
14550            height *= this.dayGrid.rowCnt / 6;
14551        }
14552        util_1.distributeHeight(this.dayGrid.rowEls, height, !isAuto); // if auto, don't compensate for height-hogging rows
14553    };
14554    MonthView.prototype.isDateInOtherMonth = function (date, dateProfile) {
14555        return date.month() !== moment.utc(dateProfile.currentUnzonedRange.startMs).month(); // TODO: optimize
14556    };
14557    return MonthView;
14558}(BasicView_1.default));
14559exports.default = MonthView;
14560MonthView.prototype.dateProfileGeneratorClass = MonthViewDateProfileGenerator_1.default;
14561
14562
14563/***/ }),
14564/* 247 */
14565/***/ (function(module, exports, __webpack_require__) {
14566
14567Object.defineProperty(exports, "__esModule", { value: true });
14568var tslib_1 = __webpack_require__(2);
14569var BasicViewDateProfileGenerator_1 = __webpack_require__(68);
14570var UnzonedRange_1 = __webpack_require__(5);
14571var MonthViewDateProfileGenerator = /** @class */ (function (_super) {
14572    tslib_1.__extends(MonthViewDateProfileGenerator, _super);
14573    function MonthViewDateProfileGenerator() {
14574        return _super !== null && _super.apply(this, arguments) || this;
14575    }
14576    // Computes the date range that will be rendered.
14577    MonthViewDateProfileGenerator.prototype.buildRenderRange = function (currentUnzonedRange, currentRangeUnit, isRangeAllDay) {
14578        var renderUnzonedRange = _super.prototype.buildRenderRange.call(this, currentUnzonedRange, currentRangeUnit, isRangeAllDay);
14579        var start = this.msToUtcMoment(renderUnzonedRange.startMs, isRangeAllDay);
14580        var end = this.msToUtcMoment(renderUnzonedRange.endMs, isRangeAllDay);
14581        var rowCnt;
14582        // ensure 6 weeks
14583        if (this.opt('fixedWeekCount')) {
14584            rowCnt = Math.ceil(// could be partial weeks due to hiddenDays
14585            end.diff(start, 'weeks', true) // dontRound=true
14586            );
14587            end.add(6 - rowCnt, 'weeks');
14588        }
14589        return new UnzonedRange_1.default(start, end);
14590    };
14591    return MonthViewDateProfileGenerator;
14592}(BasicViewDateProfileGenerator_1.default));
14593exports.default = MonthViewDateProfileGenerator;
14594
14595
14596/***/ }),
14597/* 248 */
14598/***/ (function(module, exports, __webpack_require__) {
14599
14600Object.defineProperty(exports, "__esModule", { value: true });
14601var tslib_1 = __webpack_require__(2);
14602var $ = __webpack_require__(3);
14603var util_1 = __webpack_require__(4);
14604var UnzonedRange_1 = __webpack_require__(5);
14605var View_1 = __webpack_require__(43);
14606var Scroller_1 = __webpack_require__(41);
14607var ListEventRenderer_1 = __webpack_require__(249);
14608var ListEventPointing_1 = __webpack_require__(250);
14609/*
14610Responsible for the scroller, and forwarding event-related actions into the "grid".
14611*/
14612var ListView = /** @class */ (function (_super) {
14613    tslib_1.__extends(ListView, _super);
14614    function ListView(calendar, viewSpec) {
14615        var _this = _super.call(this, calendar, viewSpec) || this;
14616        _this.segSelector = '.fc-list-item'; // which elements accept event actions
14617        _this.scroller = new Scroller_1.default({
14618            overflowX: 'hidden',
14619            overflowY: 'auto'
14620        });
14621        return _this;
14622    }
14623    ListView.prototype.renderSkeleton = function () {
14624        this.el.addClass('fc-list-view ' +
14625            this.calendar.theme.getClass('listView'));
14626        this.scroller.render();
14627        this.scroller.el.appendTo(this.el);
14628        this.contentEl = this.scroller.scrollEl; // shortcut
14629    };
14630    ListView.prototype.unrenderSkeleton = function () {
14631        this.scroller.destroy(); // will remove the Grid too
14632    };
14633    ListView.prototype.updateSize = function (totalHeight, isAuto, isResize) {
14634        _super.prototype.updateSize.call(this, totalHeight, isAuto, isResize);
14635        this.scroller.clear(); // sets height to 'auto' and clears overflow
14636        if (!isAuto) {
14637            this.scroller.setHeight(this.computeScrollerHeight(totalHeight));
14638        }
14639    };
14640    ListView.prototype.computeScrollerHeight = function (totalHeight) {
14641        return totalHeight -
14642            util_1.subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller
14643    };
14644    ListView.prototype.renderDates = function (dateProfile) {
14645        var calendar = this.calendar;
14646        var dayStart = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.startMs, true);
14647        var viewEnd = calendar.msToUtcMoment(dateProfile.renderUnzonedRange.endMs, true);
14648        var dayDates = [];
14649        var dayRanges = [];
14650        while (dayStart < viewEnd) {
14651            dayDates.push(dayStart.clone());
14652            dayRanges.push(new UnzonedRange_1.default(dayStart, dayStart.clone().add(1, 'day')));
14653            dayStart.add(1, 'day');
14654        }
14655        this.dayDates = dayDates;
14656        this.dayRanges = dayRanges;
14657        // all real rendering happens in EventRenderer
14658    };
14659    // slices by day
14660    ListView.prototype.componentFootprintToSegs = function (footprint) {
14661        var dayRanges = this.dayRanges;
14662        var dayIndex;
14663        var segRange;
14664        var seg;
14665        var segs = [];
14666        for (dayIndex = 0; dayIndex < dayRanges.length; dayIndex++) {
14667            segRange = footprint.unzonedRange.intersect(dayRanges[dayIndex]);
14668            if (segRange) {
14669                seg = {
14670                    startMs: segRange.startMs,
14671                    endMs: segRange.endMs,
14672                    isStart: segRange.isStart,
14673                    isEnd: segRange.isEnd,
14674                    dayIndex: dayIndex
14675                };
14676                segs.push(seg);
14677                // detect when footprint won't go fully into the next day,
14678                // and mutate the latest seg to the be the end.
14679                if (!seg.isEnd && !footprint.isAllDay &&
14680                    dayIndex + 1 < dayRanges.length &&
14681                    footprint.unzonedRange.endMs < dayRanges[dayIndex + 1].startMs + this.nextDayThreshold) {
14682                    seg.endMs = footprint.unzonedRange.endMs;
14683                    seg.isEnd = true;
14684                    break;
14685                }
14686            }
14687        }
14688        return segs;
14689    };
14690    ListView.prototype.renderEmptyMessage = function () {
14691        this.contentEl.html('<div class="fc-list-empty-wrap2">' + // TODO: try less wraps
14692            '<div class="fc-list-empty-wrap1">' +
14693            '<div class="fc-list-empty">' +
14694            util_1.htmlEscape(this.opt('noEventsMessage')) +
14695            '</div>' +
14696            '</div>' +
14697            '</div>');
14698    };
14699    // render the event segments in the view
14700    ListView.prototype.renderSegList = function (allSegs) {
14701        var segsByDay = this.groupSegsByDay(allSegs); // sparse array
14702        var dayIndex;
14703        var daySegs;
14704        var i;
14705        var tableEl = $('<table class="fc-list-table ' + this.calendar.theme.getClass('tableList') + '"><tbody></tbody></table>');
14706        var tbodyEl = tableEl.find('tbody');
14707        for (dayIndex = 0; dayIndex < segsByDay.length; dayIndex++) {
14708            daySegs = segsByDay[dayIndex];
14709            if (daySegs) { // sparse array, so might be undefined
14710                // append a day header
14711                tbodyEl.append(this.dayHeaderHtml(this.dayDates[dayIndex]));
14712                this.eventRenderer.sortEventSegs(daySegs);
14713                for (i = 0;
14713 i < daySegs.length; i++) {
14714                    tbodyEl.append(daySegs[i].el); // append event row
14715                }
14716            }
14717        }
14718        this.contentEl.empty().append(tableEl);
14719    };
14720    // Returns a sparse array of arrays, segs grouped by their dayIndex
14721    ListView.prototype.groupSegsByDay = function (segs) {
14722        var segsByDay = []; // sparse array
14723        var i;
14724        var seg;
14725        for (i = 0; i < segs.length; i++) {
14726            seg = segs[i];
14727            (segsByDay[seg.dayIndex] || (segsByDay[seg.dayIndex] = []))
14728                .push(seg);
14729        }
14730        return segsByDay;
14731    };
14732    // generates the HTML for the day headers that live amongst the event rows
14733    ListView.prototype.dayHeaderHtml = function (dayDate) {
14734        var mainFormat = this.opt('listDayFormat');
14735        var altFormat = this.opt('listDayAltFormat');
14736        return '<tr class="fc-list-heading" data-date="' + dayDate.format('YYYY-MM-DD') + '">' +
14737            '<td class="' + (this.calendar.theme.getClass('tableListHeading') ||
14738            this.calendar.theme.getClass('widgetHeader')) + '" colspan="3">' +
14739            (mainFormat ?
14740                this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-main' }, util_1.htmlEscape(dayDate.format(mainFormat)) // inner HTML
14741                ) :
14742                '') +
14743            (altFormat ?
14744                this.buildGotoAnchorHtml(dayDate, { 'class': 'fc-list-heading-alt' }, util_1.htmlEscape(dayDate.format(altFormat)) // inner HTML
14745                ) :
14746                '') +
14747            '</td>' +
14748            '</tr>';
14749    };
14750    return ListView;
14751}(View_1.default));
14752exports.default = ListView;
14753ListView.prototype.eventRendererClass = ListEventRenderer_1.default;
14754ListView.prototype.eventPointingClass = ListEventPointing_1.default;
14755
14756
14757/***/ }),
14758/* 249 */
14759/***/ (function(module, exports, __webpack_require__) {
14760
14761Object.defineProperty(exports, "__esModule", { value: true });
14762var tslib_1 = __webpack_require__(2);
14763var util_1 = __webpack_require__(4);
14764var EventRenderer_1 = __webpack_require__(44);
14765var ListEventRenderer = /** @class */ (function (_super) {
14766    tslib_1.__extends(ListEventRenderer, _super);
14767    function ListEventRenderer() {
14768        return _super !== null && _super.apply(this, arguments) || this;
14769    }
14770    ListEventRenderer.prototype.renderFgSegs = function (segs) {
14771        if (!segs.length) {
14772            this.component.renderEmptyMessage();
14773        }
14774        else {
14775            this.component.renderSegList(segs);
14776        }
14777    };
14778    // generates the HTML for a single event row
14779    ListEventRenderer.prototype.fgSegHtml = function (seg) {
14780        var view = this.view;
14781        var calendar = view.calendar;
14782        var theme = calendar.theme;
14783        var eventFootprint = seg.footprint;
14784        var eventDef = eventFootprint.eventDef;
14785        var componentFootprint = eventFootprint.componentFootprint;
14786        var url = eventDef.url;
14787        var classes = ['fc-list-item'].concat(this.getClasses(eventDef));
14788        var bgColor = this.getBgColor(eventDef);
14789        var timeHtml;
14790        if (componentFootprint.isAllDay) {
14791            timeHtml = view.getAllDayHtml();
14792        }
14793        else if (view.isMultiDayRange(componentFootprint.unzonedRange)) {
14794            if (seg.isStart || seg.isEnd) { // outer segment that probably lasts part of the day
14795                timeHtml = util_1.htmlEscape(this._getTimeText(calendar.msToMoment(seg.startMs), calendar.msToMoment(seg.endMs), componentFootprint.isAllDay));
14796            }
14797            else { // inner segment that lasts the whole day
14798                timeHtml = view.getAllDayHtml();
14799            }
14800        }
14801        else {
14802            // Display the normal time text for the *event's* times
14803            timeHtml = util_1.htmlEscape(this.getTimeText(eventFootprint));
14804        }
14805        if (url) {
14806            classes.push('fc-has-url');
14807        }
14808        return '<tr class="' + classes.join(' ') + '">' +
14809            (this.displayEventTime ?
14810                '<td class="fc-list-item-time ' + theme.getClass('widgetContent') + '">' +
14811                    (timeHtml || '') +
14812                    '</td>' :
14813                '') +
14814            '<td class="fc-list-item-marker ' + theme.getClass('widgetContent') + '">' +
14815            '<span class="fc-event-dot"' +
14816            (bgColor ?
14817                ' style="background-color:' + bgColor + '"' :
14818                '') +
14819            '></span>' +
14820            '</td>' +
14821            '<td class="fc-list-item-title ' + theme.getClass('widgetContent') + '">' +
14822            '<a' + (url ? ' href="' + util_1.htmlEscape(url) + '"' : '') + '>
14822' +
14823            util_1.htmlEscape(eventDef.title || '') +
14824            '</a>' +
14825            '</td>' +
14826            '</tr>';
14827    };
14828    // like "4:00am"
14829    ListEventRenderer.prototype.computeEventTimeFormat = function () {
14830        return this.opt('mediumTimeFormat');
14831    };
14832    return ListEventRenderer;
14833}(EventRenderer_1.default));
14834exports.default = ListEventRenderer;
14835
14836
14837/***/ }),
14838/* 250 */
14839/***/ (function(module, exports, __webpack_require__) {
14840
14841Object.defineProperty(exports, "__esModule", { value: true });
14842var tslib_1 = __webpack_require__(2);
14843var $ = __webpack_require__(3);
14844var EventPointing_1 = __webpack_require__(64);
14845var ListEventPointing = /** @class */ (function (_super) {
14846    tslib_1.__extends(ListEventPointing, _super);
14847    function ListEventPointing() {
14848        return _super !== null && _super.apply(this, arguments) || this;
14849    }
14850    // for events with a url, the whole <tr> should be clickable,
14851    // but it's impossible to wrap with an <a> tag. simulate this.
14852    ListEventPointing.prototype.handleClick = function (seg, ev) {
14853        var url;
14854        _super.prototype.handleClick.call(this, seg, ev); // might prevent the default action
14855        // not clicking on or within an <a> with an href
14856        if (!$(ev.target).closest('a[href]').length) {
14857            url = seg.footprint.eventDef.url;
14858            if (url && !ev.isDefaultPrevented()) { // jsEvent not cancelled in handler
14859                window.location.href = url; // simulate link click
14860            }
14861        }
14862    };
14863    return ListEventPointing;
14864}(EventPointing_1.default));
14865exports.default = ListEventPointing;
14866
14867
14868/***/ }),
14869/* 251 */,
14870/* 252 */,
14871/* 253 */,
14872/* 254 */,
14873/* 255 */,
14874/* 256 */
14875/***/ (function(module, exports, __webpack_require__) {
14876
14877var $ = __webpack_require__(3);
14878var exportHooks = __webpack_require__(18);
14879var util_1 = __webpack_require__(4);
14880var Calendar_1 = __webpack_require__(232);
14881// for intentional side-effects
14882__webpack_require__(11);
14883__webpack_require__(49);
14884__webpack_require__(260);
14885__webpack_require__(261);
14886__webpack_require__(264);
14887__webpack_require__(265);
14888__webpack_require__(266);
14889__webpack_require__(267);
14890$.fullCalendar = exportHooks;
14891$.fn.fullCalendar = function (options) {
14892    var args = Array.prototype.slice.call(arguments, 1); // for a possible method call
14893    var res = this; // what this function will return (this jQuery object by default)
14894    this.each(function (i, _element) {
14895        var element = $(_element);
14896        var calendar = element.data('fullCalendar'); // get the existing calendar object (if any)
14897        var singleRes; // the returned value of this single method call
14898        // a method call
14899        if (typeof options === 'string') {
14900            if (options === 'getCalendar') {
14901                if (!i) { // first element only
14902                    res = calendar;
14903                }
14904            }
14905            else if (options === 'destroy') { // don't warn if no calendar object
14906                if (calendar) {
14907                    calendar.destroy();
14908                    element.removeData('fullCalendar');
14909                }
14910            }
14911            else if (!calendar) {
14912                util_1.warn('Attempting to call a FullCalendar method on an element with no calendar.');
14913            }
14914            else if ($.isFunction(calendar[options])) {
14915                singleRes = calendar[options].apply(calendar, args);
14916                if (!i) {
14917                    res = singleRes; // record the first method call result
14918                }
14919                if (options === 'destroy') { // for the destroy method, must remove Calendar object data
14920                    element.removeData('fullCalendar');
14921                }
14922            }
14923            else {
14924                util_1.warn("'" + options + "' is an unknown FullCalendar method.");
14925            }
14926        }
14927        else if (!calendar) { // don't initialize twice
14928            calendar = new Calendar_1.default(element, options);
14929            element.data('fullCalendar', calendar);
14930            calendar.render();
14931        }
14932    });
14933    return res;
14934};
14935module.exports = exportHooks;
14936
14937
14938/***/ }),
14939/* 257 */
14940/***/ (function(module, exports, __webpack_require__) {
14941
14942Object.defineProperty(exports, "__esModule", { value: true });
14943var $ = __webpack_require__(3);
14944var util_1 = __webpack_require__(4);
14945/* Toolbar with buttons and title
14946----------------------------------------------------------------------------------------------------------------------*/
14947var Toolbar = /** @class */ (function () {
14948    function Toolbar(calendar, toolbarOptions) {
14949        this.el = null; // mirrors local `el`
14950        this.viewsWithButtons = [];
14951        this.calendar = calendar;
14952        this.toolbarOptions = toolbarOptions;
14953    }
14954    // method to update toolbar-specific options, not calendar-wide options
14955    Toolbar.prototype.setToolbarOptions = function (newToolbarOptions) {
14956        this.toolbarOptions = newToolbarOptions;
14957    };
14958    // can be called repeatedly and will rerender
14959    Toolbar.prototype.render = function () {
14960        var sections = this.toolbarOptions.layout;
14961        var el = this.el;
14962        if (sections) {
14963            if (!el) {
14964                el = this.el = $("<div class='fc-toolbar " + this.toolbarOptions.extraClasses + "'>");
14965            }
14966            else {
14967                el.empty();
14968            }
14969            el.append(this.renderSection('left'))
14970                .append(this.renderSection('right'))
14971                .append(this.renderSection('center'))
14972                .append('<div class="fc-clear"></div>');
14973        }
14974        else {
14975            this.removeElement();
14976        }
14977    };
14978    Toolbar.prototype.removeElement = function () {
14979        if (this.el) {
14980            this.el.remove();
14981            this.el = null;
14982        }
14983    };
14984    Toolbar.prototype.renderSection = function (position) {
14985        var _this = this;
14986        var calendar = this.calendar;
14987        var theme = calendar.theme;
14988        var optionsManager = calendar.optionsManager;
14989        var viewSpecManager = calendar.viewSpecManager;
14990        var sectionEl = $('<div class="fc-' + position + '">');
14991        var buttonStr = this.toolbarOptions.layout[position];
14992        var calendarCustomButtons = optionsManager.get('customButtons') || {};
14993        var calendarButtonTextOverrides = optionsManager.overrides.buttonText || {};
14994        var calendarButtonText = optionsManager.get('buttonText') || {};
14995        if (buttonStr) {
14996            $.each(buttonStr.split(' '), function (i, buttonGroupStr) {
14997                var groupChildren = $();
14998                var isOnlyButtons = true;
14999                var groupEl;
15000                $.each(buttonGroupStr.split(','), function (j, buttonName) {
15001                    var customButtonProps;
15002                    var viewSpec;
15003                    var buttonClick;
15004                    var buttonIcon; // only one of these will be set
15005                    var buttonText; // "
15006                    var buttonInnerHtml;
15007                    var buttonClasses;
15008                    var buttonEl;
15009                    var buttonAriaAttr;
15010                    if (buttonName === 'title') {
15011                        groupChildren = groupChildren.add($('<h2>&nbsp;</h2>')); // we always want it to take up height
15012                        isOnlyButtons = false;
15013                    }
15014                    else {
15015                        if ((customButtonProps = calendarCustomButtons[buttonName])) {
15016                            buttonClick = function (ev) {
15017                                if (customButtonProps.click) {
15018                                    customButtonProps.click.call(buttonEl[0], ev);
15019                                }
15020                            };
15021                            (buttonIcon = theme.getCustomButtonIconClass(customButtonProps)) ||
15022                                (buttonIcon = theme.getIconClass(buttonName)) ||
15023                                (buttonText = customButtonProps.text);
15024                        }
15025                        else if ((viewSpec = viewSpecManager.getViewSpec(buttonName))) {
15026                            _this.viewsWithButtons.push(buttonName);
15027                            buttonClick = function () {
15028                                calendar.changeView(buttonName);
15029                            };
15030                            (buttonText = viewSpec.buttonTextOverride) ||
15031                                (buttonIcon = theme.getIconClass(buttonName)) ||
15032                                (buttonText = viewSpec.buttonTextDefault);
15033                        }
15034                        else if (calendar[buttonName]) { // a calendar method
15035                            buttonClick = function () {
15036                                calendar[buttonName]();
15037                            };
15038                            (buttonText = calendarButtonTextOverrides[buttonName]) ||
15039                                (buttonIcon = theme.getIconClass(buttonName)) ||
15040                                (buttonText = calendarButtonText[buttonName]);
15041                            //            ^ everything else is considered default
15042                        }
15043                        if (buttonClick) {
15044                            buttonClasses = [
15045                                'fc-' + buttonName + '-button',
15046                                theme.getClass('button'),
15047                                theme.getClass('stateDefault')
15048                            ];
15049                            if (buttonText) {
15050                                buttonInnerHtml = util_1.htmlEscape(buttonText);
15051                                buttonAriaAttr = '';
15052                            }
15053                            else if (buttonIcon) {
15054                                buttonInnerHtml = "<span class='" + buttonIcon + "'></span>";
15055                                buttonAriaAttr = ' aria-label="' + buttonName + '"';
15056                            }
15057                            buttonEl = $(// type="button" so that it doesn't submit a form
15058                            '<button type="button" class="' + buttonClasses.join(' ') + '"' +
15059                                buttonAriaAttr +
15060                                '>' + buttonInnerHtml + '</button>')
15061                                .click(function (ev) {
15062                                // don't process clicks for disabled buttons
15063                                if (!buttonEl.hasClass(theme.getClass('stateDisabled'))) {
15064                                    buttonClick(ev);
15065                                    // after the click action, if the button becomes the "active" tab, or disabled,
15066                                    // it should never have a hover class, so remove it now.
15067                                    if (buttonEl.hasClass(theme.getClass('stateActive')) ||
15068                                        buttonEl.hasClass(theme.getClass('stateDisabled'))) {
15069                                        buttonEl.removeClass(theme.getClass('stateHover'));
15070                                    }
15071                                }
15072                            })
15073                                .mousedown(function () {
15074                                // the *down* effect (mouse pressed in).
15075                                // only on buttons that are not the "active" tab, or disabled
15076                                buttonEl
15077                                    .not('.' + theme.getClass('stateActive'))
15078                                    .not('.' + theme.getClass('stateDisabled'))
15079                                    .addClass(theme.getClass('stateDown'));
15080                            })
15081                                .mouseup(function () {
15082                                // undo the *down* effect
15083                                buttonEl.removeClass(theme.getClass('stateDown'));
15084                            })
15085                                .hover(function () {
15086                                // the *hover* effect.
15087                                // only on buttons that are not the "active" tab, or disabled
15088                                buttonEl
15089                                    .not('.' + theme.getClass('stateActive'))
15090                                    .not('.' + theme.getClass('stateDisabled'))
15091                                    .addClass(theme.getClass('stateHover'));
15092                            }, function () {
15093                                // undo the *hover* effect
15094                                buttonEl
15095                                    .removeClass(theme.getClass('stateHover'))
15096                                    .removeClass(theme.getClass('stateDown')); // if mouseleave happens before mouseup
15097                            });
15098                            groupChildren = groupChildren.add(buttonEl);
15099                        }
15100                    }
15101                });
15102                if (isOnlyButtons) {
15103                    groupChildren
15104                        .first().addClass(theme.getClass('cornerLeft')).end()
15105                        .last().addClass(theme.getClass('cornerRight')).end();
15106                }
15107                if (groupChildren.length > 1) {
15108                    groupEl = $('<div>');
15109                    if (isOnlyButtons) {
15110                        groupEl.addClass(theme.getClass('buttonGroup'));
15111                    }
15112                    groupEl.append(groupChildren);
15113                    sectionEl.append(groupEl);
15114                }
15115                else {
15116                    sectionEl.append(groupChildren); // 1 or 0 children
15117                }
15118            });
15119        }
15120        return sectionEl;
15121    };
15122    Toolbar.prototype.updateTitle = function (text) {
15123        if (this.el) {
15124            this.el.find('h2').text(text);
15125        }
15126    };
15127    Toolbar.prototype.activateButton = function (buttonName) {
15128        if (this.el) {
15129            this.el.find('.fc-' + buttonName + '-button')
15130                .addClass(this.calendar.theme.getClass('stateActive'));
15131        }
15132    };
15133    Toolbar.prototype.deactivateButton = function (buttonName) {
15134        if (this.el) {
15135            this.el.find('.fc-' + buttonName + '-button')
15136                .removeClass(this.calendar.theme.getClass('stateActive'));
15137        }
15138    };
15139    Toolbar.prototype.disableButton = function (buttonName) {
15140        if (this.el) {
15141            this.el.find('.fc-' + buttonName + '-button')
15142                .prop('disabled', true)
15143                .addClass(this.calendar.theme.getClass('stateDisabled'));
15144        }
15145    };
15146    Toolbar.prototype.enableButton = function (buttonName) {
15147        if (this.el) {
15148            this.el.find('.fc-' + buttonName + '-button')
15149                .prop('disabled', false)
15150                .removeClass(this.calendar.theme.getClass('stateDisabled'));
15151        }
15152    };
15153    Toolbar.prototype.getViewsWithButtons = function () {
15154        return this.viewsWithButtons;
15155    };
15156    return Toolbar;
15157}());
15158exports.default = Toolbar;
15159
15160
15161/***/ }),
15162/* 258 */
15163/***/ (function(module, exports, __webpack_require__) {
15164
15165Object.defineProperty(exports, "__esModule", { value: true });
15166var tslib_1 = __webpack_require__(2);
15167var $ = __webpack_require__(3);
15168var util_1 = __webpack_require__(4);
15169var options_1 = __webpack_require__(33);
15170var locale_1 = __webpack_require__(32);
15171var Model_1 = __webpack_require__(51);
15172var OptionsManager = /** @class */ (function (_super) {
15173    tslib_1.__extends(OptionsManager, _super);
15174    function OptionsManager(_calendar, overrides) {
15175        var _this = _super.call(this) || this;
15176        _this._calendar = _calendar;
15177        _this.overrides = $.extend({}, overrides); // make a copy
15178        _this.dynamicOverrides = {};
15179        _this.compute();
15180        return _this;
15181    }
15182    OptionsManager.prototype.add = function (newOptionHash) {
15183        var optionCnt = 0;
15184        var optionName;
15185        this.recordOverrides(newOptionHash); // will trigger this model's watchers
15186        for (optionName in newOptionHash) {
15187            optionCnt++;
15188        }
15189        // special-case handling of single option change.
15190        // if only one option change, `optionName` will be its name.
15191        if (optionCnt === 1) {
15192            if (optionName === 'height' || optionName === 'contentHeight' || optionName === 'aspectRatio') {
15193                this._calendar.updateViewSize(true); // isResize=true
15194                return;
15195            }
15196            else if (optionName === 'defaultDate') {
15197                return; // can't change date this way. use gotoDate instead
15198            }
15199            else if (optionName === 'businessHours') {
15200                return; // this model already reacts to this
15201            }
15202            else if (/^(event|select)(Overlap|Constraint|Allow)$/.test(optionName)) {
15203                return; // doesn't affect rendering. only interactions.
15204            }
15205            else if (optionName === 'timezone') {
15206                this._calendar.view.flash('initialEvents');
15207                return;
15208            }
15209        }
15210        // catch-all. rerender the header and footer and rebuild/rerender the current view
15211        this._calendar.renderHeader();
15212        this._calendar.renderFooter();
15213        // even non-current views will be affected by this option change. do before rerender
15214        // TODO: detangle
15215        this._calendar.viewsByType = {};
15216        this._calendar.reinitView();
15217    };
15218    // Computes the flattened options hash for the calendar and assigns to `this.options`.
15219    // Assumes this.overrides and this.dynamicOverrides have already been initialized.
15220    OptionsManager.prototype.compute = function () {
15221        var locale;
15222        var localeDefaults;
15223        var isRTL;
15224        var dirDefaults;
15225        var rawOptions;
15226        locale = util_1.firstDefined(// explicit locale option given?
15227        this.dynamicOverrides.locale, this.overrides.locale);
15228        localeDefaults = locale_1.localeOptionHash[locale];
15229        if (!localeDefaults) { // explicit locale option not given or invalid?
15230            locale = options_1.globalDefaults.locale;
15231            localeDefaults = locale_1.localeOptionHash[locale] || {};
15232        }
15233        isRTL = util_1.firstDefined(// based on options computed so far, is direction RTL?
15234        this.dynamicOverrides.isRTL, this.overrides.isRTL, localeDefaults.isRTL, options_1.globalDefaults.isRTL);
15235        dirDefaults = isRTL ? options_1.rtlDefaults : {};
15236        this.dirDefaults = dirDefaults;
15237        this.localeDefaults = localeDefaults;
15238        rawOptions = options_1.mergeOptions([
15239            options_1.globalDefaults,
15240            dirDefaults,
15241            localeDefaults,
15242            this.overrides,
15243            this.dynamicOverrides
15244        ]);
15245        locale_1.populateInstanceComputableOptions(rawOptions); // fill in gaps with computed options
15246        this.reset(rawOptions);
15247    };
15248    // stores the new options internally, but does not rerender anything.
15249    OptionsManager.prototype.recordOverrides = function (newOptionHash) {
15250        var optionName;
15251        for (optionName in newOptionHash) {
15252            this.dynamicOverrides[optionName] = newOptionHash[optionName];
15253        }
15254        this._calendar.viewSpecManager.clearCache(); // the dynamic override invalidates the options in this cache, so just clear it
15255        this.compute(); // this.options needs to be recomputed after the dynamic override
15256    };
15257    return OptionsManager;
15258}(Model_1.default));
15259exports.default = OptionsManager;
15260
15261
15262/***/ }),
15263/* 259 */
15264/***/ (function(module, exports, __webpack_require__) {
15265
15266Object.defineProperty(exports, "__esModule", { value: true });
15267var moment = __webpack_require__(0);
15268var $ = __webpack_require__(3);
15269var ViewRegistry_1 = __webpack_require__(24);
15270var util_1 = __webpack_require__(4);
15271var options_1 = __webpack_require__(33);
15272var locale_1 = __webpack_require__(32);
15273var ViewSpecManager = /** @class */ (function () {
15274    function ViewSpecManager(optionsManager, _calendar) {
15275        this.optionsManager = optionsManager;
15276        this._calendar = _calendar;
15277        this.clearCache();
15278    }
15279    ViewSpecManager.prototype.clearCache = function () {
15280        this.viewSpecCache = {};
15281    };
15282    // Gets information about how to create a view. Will use a cache.
15283    ViewSpecManager.prototype.getViewSpec = function (viewType) {
15284        var cache = this.viewSpecCache;
15285        return cache[viewType] || (cache[viewType] = this.buildViewSpec(viewType));
15286    };
15287    // Given a duration singular unit, like "week" or "day", finds a matching view spec.
15288    // Preference is given to views that have corresponding buttons.
15289    ViewSpecManager.prototype.getUnitViewSpec = function (unit) {
15290        var viewTypes;
15291        var i;
15292        var spec;
15293        if ($.inArray(unit, util_1.unitsDesc) !== -1) {
15294            // put views that have buttons first. there will be duplicates, but oh well
15295            viewTypes = this._calendar.header.getViewsWithButtons(); // TODO: include footer as well?
15296            $.each(ViewRegistry_1.viewHash, function (viewType) {
15297                viewTypes.push(viewType);
15298            });
15299            for (i = 0; i < viewTypes.length; i++) {
15300                spec = this.getViewSpec(viewTypes[i]);
15301                if (spec) {
15302                    if (spec.singleUnit === unit) {
15303                        return spec;
15304                    }
15305                }
15306            }
15307        }
15308    };
15309    // Builds an object with information on how to create a given view
15310    ViewSpecManager.prototype.buildViewSpec = function (requestedViewType) {
15311        var viewOverrides = this.optionsManager.overrides.views || {};
15312        var specChain = []; // for the view. lowest to highest priority
15313        var defaultsChain = []; // for the view. lowest to highest priority
15314        var overridesChain = []; // for the view. lowest to highest priority
15315        var viewType = requestedViewType;
15316        var spec; // for the view
15317        var overrides; // for the view
15318        var durationInput;
15319        var duration;
15320        var unit;
15321        // iterate from the specific view definition to a more general one until we hit an actual View class
15322        while (viewType) {
15323            spec = ViewRegistry_1.viewHash[viewType];
15324            overrides = viewOverrides[viewType];
15325            viewType = null; // clear. might repopulate for another iteration
15326            if (typeof spec === 'function') { // TODO: deprecate
15327                spec = { 'class': spec };
15328            }
15329            if (spec) {
15330                specChain.unshift(spec);
15331                defaultsChain.unshift(spec.defaults || {});
15332                durationInput = durationInput || spec.duration;
15333                viewType = viewType || spec.type;
15334            }
15335            if (overrides) {
15336                overridesChain.unshift(overrides); // view-specific option hashes have options at zero-level
15337                durationInput = durationInput || overrides.duration;
15338                viewType = viewType || overrides.type;
15339            }
15340        }
15341        spec = util_1.mergeProps(specChain);
15342        spec.type = requestedViewType;
15343        if (!spec['class']) {
15344            return false;
15345        }
15346        // fall back to top-level `duration` option
15347        durationInput = durationInput ||
15348            this.optionsManager.dynamicOverrides.duration ||
15349            this.optionsManager.overrides.duration;
15350        if (durationInput) {
15351            duration = moment.duration(durationInput);
15352            if (duration.valueOf()) { // valid?
15353                unit = util_1.computeDurationGreatestUnit(duration, durationInput);
15354                spec.duration = duration;
15355                spec.durationUnit = unit;
15356                // view is a single-unit duration, like "week" or "day"
15357                // incorporate options for this. lowest priority
15358                if (duration.as(unit) === 1) {
15359                    spec.singleUnit = unit;
15360                    overridesChain.unshift(viewOverrides[unit] || {});
15361                }
15362            }
15363        }
15364        spec.defaults = options_1.mergeOptions(defaultsChain);
15365        spec.overrides = options_1.mergeOptions(overridesChain);
15366        this.buildViewSpecOptions(spec);
15367        this.buildViewSpecButtonText(spec, requestedViewType);
15368        return spec;
15369    };
15370    // Builds and assigns a view spec's options object from its already-assigned defaults and overrides
15371    ViewSpecManager.prototype.buildViewSpecOptions = function (spec) {
15372        var optionsManager = this.optionsManager;
15373        spec.options = options_1.mergeOptions([
15374            options_1.globalDefaults,
15375            spec.defaults,
15376            optionsManager.dirDefaults,
15377            optionsManager.localeDefaults,
15378            optionsManager.overrides,
15379            spec.overrides,
15380            optionsManager.dynamicOverrides // dynamically set via setter. highest precedence
15381        ]);
15382        locale_1.populateInstanceComputableOptions(spec.options);
15383    };
15384    // Computes and assigns a view spec's buttonText-related options
15385    ViewSpecManager.prototype.buildViewSpecButtonText = function (spec, requestedViewType) {
15386        var optionsManager = this.optionsManager;
15387        // given an options object with a possible `buttonText` hash, lookup the buttonText for the
15388        // requested view, falling back to a generic unit entry like "week" or "day"
15389        function queryButtonText(options) {
15390            var buttonText = options.buttonText || {};
15391            return buttonText[requestedViewType] ||
15392                // view can decide to look up a certain key
15393                (spec.buttonTextKey ? buttonText[spec.buttonTextKey] : null) ||
15394                // a key like "month"
15395                (spec.singleUnit ? buttonText[spec.singleUnit] : null);
15396        }
15397        // highest to lowest priority
15398        spec.buttonTextOverride =
15399            queryButtonText(optionsManager.dynamicOverrides) ||
15400                queryButtonText(optionsManager.overrides) || // constructor-specified buttonText lookup hash takes precedence
15401                spec.overrides.buttonText; // `buttonText` for view-specific options is a string
15402        // highest to lowest priority. mirrors buildViewSpecOptions
15403        spec.buttonTextDefault =
15404            queryButtonText(optionsManager.localeDefaults) ||
15405                queryButtonText(optionsManager.dirDefaults) ||
15406                spec.defaults.buttonText || // a single string. from ViewSubclass.defaults
15407                queryButtonText(options_1.globalDefaults) ||
15408                (spec.duration ? this._calendar.humanizeDuration(spec.duration) : null) || // like "3 days"
15409                requestedViewType; // fall back to given view name
15410    };
15411    return ViewSpecManager;
15412}());
15413exports.default = ViewSpecManager;
15414
15415
15416/***/ }),
15417/* 260 */
15418/***/ (function(module, exports, __webpack_require__) {
15419
15420Object.defineProperty(exports, "__esModule", { value: true });
15421var EventSourceParser_1 = __webpack_require__(38);
15422var ArrayEventSource_1 = __webpack_require__(56);
15423var FuncEventSource_1 = __webpack_require__(223);
15424var JsonFeedEventSource_1 = __webpack_require__(224);
15425EventSourceParser_1.default.registerClass(ArrayEventSource_1.default);
15426EventSourceParser_1.default.registerClass(FuncEventSource_1.default);
15427EventSourceParser_1.default.registerClass(JsonFeedEventSource_1.default);
15428
15429
15430/***/ }),
15431/* 261 */
15432/***/ (function(module, exports, __webpack_require__) {
15433
15434Object.defineProperty(exports, "__esModule", { value: true });
15435var ThemeRegistry_1 = __webpack_require__(57);
15436var StandardTheme_1 = __webpack_require__(221);
15437var JqueryUiTheme_1 = __webpack_require__(222);
15438var Bootstrap3Theme_1 = __webpack_require__(262);
15439var Bootstrap4Theme_1 = __webpack_require__(263);
15440ThemeRegistry_1.defineThemeSystem('standard', StandardTheme_1.default);
15441ThemeRegistry_1.defineThemeSystem('jquery-ui', JqueryUiTheme_1.default);
15442ThemeRegistry_1.defineThemeSystem('bootstrap3', Bootstrap3Theme_1.default);
15443ThemeRegistry_1.defineThemeSystem('bootstrap4', Bootstrap4Theme_1.default);
15444
15445
15446/***/ }),
15447/* 262 */
15448/***/ (function(module, exports, __webpack_require__) {
15449
15450Object.defineProperty(exports, "__esModule", { value: true });
15451var tslib_1 = __webpack_require__(2);
15452var Theme_1 = __webpack_require__(22);
15453var Bootstrap3Theme = /** @class */ (function (_super) {
15454    tslib_1.__extends(Bootstrap3Theme, _super);
15455    function Bootstrap3Theme() {
15456        return _super !== null && _super.apply(this, arguments) || this;
15457    }
15458    return Bootstrap3Theme;
15459}(Theme_1.default));
15460exports.default = Bootstrap3Theme;
15461Bootstrap3Theme.prototype.classes = {
15462    widget: 'fc-bootstrap3',
15463    tableGrid: 'table-bordered',
15464    tableList: 'table',
15465    tableListHeading: 'active',
15466    buttonGroup: 'btn-group',
15467    button: 'btn btn-default',
15468    stateActive: 'active',
15469    stateDisabled: 'disabled',
15470    today: 'alert alert-info',
15471    popover: 'panel panel-default',
15472    popoverHeader: 'panel-heading',
15473    popoverContent: 'panel-body',
15474    // day grid
15475    // for left/right border color when border is inset from edges (all-day in agenda view)
15476    // avoid `panel` class b/c don't want margins/radius. only border color.
15477    headerRow: 'panel-default',
15478    dayRow: 'panel-default',
15479    // list view
15480    listView: 'panel panel-default'
15481};
15482Bootstrap3Theme.prototype.baseIconClass = 'glyphicon';
15483Bootstrap3Theme.prototype.iconClasses = {
15484    close: 'glyphicon-remove',
15485    prev: 'glyphicon-chevron-left',
15486    next: 'glyphicon-chevron-right',
15487    prevYear: 'glyphicon-backward',
15488    nextYear: 'glyphicon-forward'
15489};
15490Bootstrap3Theme.prototype.iconOverrideOption = 'bootstrapGlyphicons';
15491Bootstrap3Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapGlyphicon';
15492Bootstrap3Theme.prototype.iconOverridePrefix = 'glyphicon-';
15493
15494
15495/***/ }),
15496/* 263 */
15497/***/ (function(module, exports, __webpack_require__) {
15498
15499Object.defineProperty(exports, "__esModule", { value: true });
15500var tslib_1 = __webpack_require__(2);
15501var Theme_1 = __webpack_require__(22);
15502var Bootstrap4Theme = /** @class */ (function (_super) {
15503    tslib_1.__extends(Bootstrap4Theme, _super);
15504    function Bootstrap4Theme() {
15505        return _super !== null && _super.apply(this, arguments) || this;
15506    }
15507    return Bootstrap4Theme;
15508}(Theme_1.default));
15509exports.default = Bootstrap4Theme;
15510Bootstrap4Theme.prototype.classes = {
15511    widget: 'fc-bootstrap4',
15512    tableGrid: 'table-bordered',
15513    tableList: 'table',
15514    tableListHeading: 'table-active',
15515    buttonGroup: 'btn-group',
15516    button: 'btn btn-primary',
15517    stateActive: 'active',
15518    stateDisabled: 'disabled',
15519    today: 'alert alert-info',
15520    popover: 'card card-primary',
15521    popoverHeader: 'card-header',
15522    popoverContent: 'card-body',
15523    // day grid
15524    // for left/right border color when border is inset from edges (all-day in agenda view)
15525    // avoid `table` class b/c don't want margins/padding/structure. only border color.
15526    headerRow: 'table-bordered',
15527    dayRow: 'table-bordered',
15528    // list view
15529    listView: 'card card-primary'
15530};
15531Bootstrap4Theme.prototype.baseIconClass = 'fa';
15532Bootstrap4Theme.prototype.iconClasses = {
15533    close: 'fa-times',
15534    prev: 'fa-chevron-left',
15535    next: 'fa-chevron-right',
15536    prevYear: 'fa-angle-double-left',
15537    nextYear: 'fa-angle-double-right'
15538};
15539Bootstrap4Theme.prototype.iconOverrideOption = 'bootstrapFontAwesome';
15540Bootstrap4Theme.prototype.iconOverrideCustomButtonOption = 'bootstrapFontAwesome';
15541Bootstrap4Theme.prototype.iconOverridePrefix = 'fa-';
15542
15543
15544/***/ }),
15545/* 264 */
15546/***/ (function(module, exports, __webpack_require__) {
15547
15548Object.defineProperty(exports, "__esModule", { value: true });
15549var ViewRegistry_1 = __webpack_require__(24);
15550var BasicView_1 = __webpack_require__(67);
15551var MonthView_1 = __webpack_require__(246);
15552ViewRegistry_1.defineView('basic', {
15553    'class': BasicView_1.default
15554});
15555ViewRegistry_1.defineView('basicDay', {
15556    type: 'basic',
15557    duration: { days: 1 }
15558});
15559ViewRegistry_1.defineView('basicWeek', {
15560    type: 'basic',
15561    duration: { weeks: 1 }
15562});
15563ViewRegistry_1.defineView('month', {
15564    'class': MonthView_1.default,
15565    duration: { months: 1 },
15566    defaults: {
15567        fixedWeekCount: true
15568    }
15569});
15570
15571
15572/***/ }),
15573/* 265 */
15574/***/ (function(module, exports, __webpack_require__) {
15575
15576Object.defineProperty(exports, "__esModule", { value: true });
15577var ViewRegistry_1 = __webpack_require__(24);
15578var AgendaView_1 = __webpack_require__(238);
15579ViewRegistry_1.defineView('agenda', {
15580    'class': AgendaView_1.default,
15581    defaults: {
15582        allDaySlot: true,
15583        slotDuration: '00:30:00',
15584        slotEventOverlap: true // a bad name. confused with overlap/constraint system
15585    }
15586});
15587ViewRegistry_1.defineView('agendaDay', {
15588    type: 'agenda',
15589    duration: { days: 1 }
15590});
15591ViewRegistry_1.defineView('agendaWeek', {
15592    type: 'agenda',
15593    duration: { weeks: 1 }
15594});
15595
15596
15597/***/ }),
15598/* 266 */
15599/***/ (function(module, exports, __webpack_require__) {
15600
15601Object.defineProperty(exports, "__esModule", { value: true });
15602var ViewRegistry_1 = __webpack_require__(24);
15603var ListView_1 = __webpack_require__(248);
15604ViewRegistry_1.defineView('list', {
15605    'class': ListView_1.default,
15606    buttonTextKey: 'list',
15607    defaults: {
15608        buttonText: 'list',
15609        listDayFormat: 'LL',
15610        noEventsMessage: 'No events to display'
15611    }
15612});
15613ViewRegistry_1.defineView('listDay', {
15614    type: 'list',
15615    duration: { days: 1 },
15616    defaults: {
15617        listDayFormat: 'dddd' // day-of-week is all we need. full date is probably in header
15618    }
15619});
15620ViewRegistry_1.defineView('listWeek', {
15621    type: 'list',
15622    duration: { weeks: 1 },
15623    defaults: {
15624        listDayFormat: 'dddd',
15625        listDayAltFormat: 'LL'
15626    }
15627});
15628ViewRegistry_1.defineView('listMonth', {
15629    type: 'list',
15630    duration: { month: 1 },
15631    defaults: {
15632        listDayAltFormat: 'dddd' // day-of-week is nice-to-have
15633    }
15634});
15635ViewRegistry_1.defineView('listYear', {
15636    type: 'list',
15637    duration: { year: 1 },
15638    defaults: {
15639        listDayAltFormat: 'dddd' // day-of-week is nice-to-have
15640    }
15641});
15642
15643
15644/***/ }),
15645/* 267 */
15646/***/ (function(module, exports) {
15647
15648Object.defineProperty(exports, "__esModule", { value: true });
15649
15650
15651/***/ })
15652/******/ ]);
15653});
vendor: 42,773 bytes, lines 15654-15655
15654!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):(t=t||self).parsley=e(t.jQuery)}(this,function(h){"use strict";function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(){return(l=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(t[r]=i[r])}return t}).apply(this,arguments)}function o(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(!(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t)))return;var i=[],r=!0,n=!1,s=void 0;try{for(var a,o=t[Symbol.iterator]();!(r=(a=o.next()).done)&&(i.push(a.value),!e||i.length!==e);r=!0);}catch(t){n=!0,s=t}finally{try{r||null==o.return||o.return()}finally{if(n)throw s}}return i}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function u(t){return function(t){if(Array.isArray(t)){for(var e=0,i=new Array(t.length);e<t.length;e++)i[e]=t[e];return i}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var t=1,e={},d={attr:function(t,e,i){var r,n,s,a=new RegExp("^"+e,"i");if(void 0===i)i={};else for(r in i)i.hasOwnProperty(r)&&delete i[r];if(!t)return i;for(r=(s=t.attributes).length;r--;)(n=s[r])&&n.specified&&a.test(n.name)&&(i[this.camelize(n.name.slice(e.length))]=this.deserializeValue(n.value));return i},checkAttr:function(t,e,i){return t.hasAttribute(e+i)},setAttr:function(t,e,i,r){t.setAttribute(this.dasherize(e+i),String(r))},getType:function(t){return t.getAttribute("type")||"text"},generateID:function(){return""+t++},deserializeValue:function(e){var t;try{return e?"true"==e||"false"!=e&&("null"==e?null:isNaN(t=Number(e))?/^[\[\{]/.test(e)?JSON.parse(e):e:t):e}catch(t){return e}},camelize:function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},dasherize:function(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()},warn:function(){var t;window.console&&"function"==typeof window.console.warn&&(t=window.console).warn.apply(t,arguments)},warnOnce:function(t){e[t]||(e[t]=!0,this.warn.apply(this,arguments))},_resetWarnings:function(){e={}},trimString:function(t){return t.replace(/^\s+|\s+$/g,"")},parse:{date:function(t){var e=t.match(/^(\d{4,})-(\d\d)-(\d\d)$/);if(!e)return null;var i=o(e.map(function(t){return parseInt(t,10)}),4),r=(i[0],i[1]),n=i[2],s=i[3],a=new Date(r,n-1,s);return a.getFullYear()!==r||a.getMonth()+1!==n||a.getDate()!==s?null:a},string:function(t){return t},integer:function(t){return isNaN(t)?null:parseInt(t,10)},number:function(t){if(isNaN(t))throw null;return parseFloat(t)},boolean:function(t){return!/^\s*false\s*$/i.test(t)},object:function(t){return d.deserializeValue(t)},regexp:function(t){var e="";return t=/^\/.*\/(?:[gimy]*)$/.test(t)?(e=t.replace(/.*\/([gimy]*)$/,"$1"),t.replace(new RegExp("^/(.*?)/"+e+"$"),"$1")):"^"+t+"$",new RegExp(t,e)}},parseRequirement:function(t,e){var i=this.parse[t||"string"];if(!i)throw'Unknown requirement specification: "'+t+'"';var r=i(e);if(null===r)throw"Requirement is not a ".concat(t,': "').concat(e,'"');return r},namespaceEvents:function(t,e){return(t=this.trimString(t||"").split(/\s+/))[0]?h.map(t,function(t){return"".concat(t,".").concat(e)}).join(" "):""},difference:function(t,i){var r=[];return h.each(t,function(t,e){-1==i.indexOf(e)&&r.push(e)}),r},all:function(t){return h.when.apply(h,u(t).concat([42,42]))},objectCreate:Object.create||function(t){if(1<arguments.length)throw Error("Second argument not supported");if("object"!=n(t))throw TypeError("Argument must be an object");i.prototype=t;var e=new i;return i.prototype=null,e},_SubmitSelector:'input[type="submit"], button:submit'};function i(){}function r(){this.__id__=d.generateID()}var s={namespace:"data-parsley-",inputs:"input, textarea, select",excluded:"input[type=button], input[type=submit], input[type=reset], input[type=hidden]",priorityEnabled:!0,multiple:null,group:null,uiEnabled:!0,validationThreshold:3,focus:"first",trigger:!1,triggerAfterFailure:"input",errorClass:"parsley-error",successClass:"parsley-success",classHandler:function(){},errorsContainer:function(){},errorsWrapper:'<ul class="parsley-errors-list"></ul>',errorTemplate:"<li></li>"};r.prototype={asyncSupport:!0,_pipeAccordingToValidationResult:function(){function t(){var t=h.Deferred();return!0!==e.validationResult&&t.reject(),t.resolve().promise()}var e=this;return[t,t]},actualizeOptions:function(){return d.attr(this.element,this.options.namespace,this.domOptions),this.parent&&this.parent.actualizeOptions&&this.parent.actualizeOptions(),this},_resetOptions:function(t){for(var e in this.domOptions=d.objectCreate(this.parent.options),this.options=d.objectCreate(this.domOptions),t)t.hasOwnProperty(e)&&(this.options[e]=t[e]);this.actualizeOptions()},_listeners:null,on:function(t,e){return this._listeners=this._listeners||{},(this._listeners[t]=this._listeners[t]||[]).push(e),this},subscribe:function(t,e){h.listenTo(this,t.toLowerCase(),e)},off:function(t,e){var i=this._listeners&&this._listeners[t];if(i)if(e)for(var r=i.length;r--;)i[r]===e&&i.splice(r,1);else delete this._listeners[t];return this},unsubscribe:function(t){h.unsubscribeTo(this,t.toLowerCase())},trigger:function(t,e,i){e=e||this;var r,n=this._listeners&&this._listeners[t];if(n)for(var s=n.length;s--;)if(!1===(r=n[s].call(e,e,i)))return r;return!this.parent||this.parent.trigger(t,e,i)},asyncIsValid:function(t,e){return d.warnOnce("asyncIsValid is deprecated; please use whenValid instead"),this.whenValid({group:t,force:e})},_findRelated:function(){return this.options.multiple?h(this.parent.element.querySelectorAll("[".concat(this.options.namespace,'multiple="').concat(this.options.multiple,'"]'))):this.$element}};function c(t){h.extend(!0,this,t)}c.prototype={validate:function(t,e){if(this.fn)return 3<arguments.length&&(e=[].slice.call(arguments,1,-1)),this.fn(t,e);if(Array.isArray(t)){if(!this.validateMultiple)throw"Validator `"+this.name+"` does not handle multiple values";return this.validateMultiple.apply(this,arguments)}var i=arguments[arguments.length-1];if(this.validateDate&&i._isDateInput())return arguments[0]=d.parse.date(arguments[0]),null!==arguments[0]&&this.validateDate.apply(this,arguments);if(this.validateNumber)return!t||!isNaN(t)&&(arguments[0]=parseFloat(arguments[0]),this.validateNumber.apply(this,arguments));if(this.validateString)return this.validateString.apply(this,arguments);throw"Validator `"+this.name+"` only handles multiple values"},parseRequirements:function(t,e){if("string"!=typeof t)return Array.isArray(t)?t:[t];var i=this.requirementType;if(Array.isArray(i)){for(var r=function(t,e){var i=t.match(/^\s*\[(.*)\]\s*$/);if(!i)throw'Requirement is not an array: "'+t+'"';var r=i[1].split(",").map(d.trimString);if(r.length!==e)throw"Requirement has "+r.length+" values when "+e+" are needed";return r}(t,i.length),n=0;n<r.length;n++)r[n]=d.parseRequirement(i[n],r[n]);return r}return h.isPlainObject(i)?function(t,e,i){var r=null,n={};for(var s in t)if(s){var a=i(s);"string"==typeof a&&(a=d.parseRequirement(t[s],a)),n[s]=a}else r=d.parseRequirement(t[s],e);return[r,n]}(i,t,e):[d.parseRequirement(i,t)]},requirementType:"string",priority:2};function a(t,e){this.__class__="ValidatorRegistry",this.locale="en",this.init(t||{},e||{})}var p={email:/^((([a-zA-Z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-zA-Z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))$/,number:/^-?(\d*\.)?\d+(e[-+]?\d+)?$/i,integer:/^-?\d+$/,digits:/^\d+$/,alphanum:/^\w+$/i,date:{test:function(t){return null!==d.parse.date(t)}},url:new RegExp("^(?:(?:https?|ftp)://)?(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-zA-Z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:/\\S*)?$")};p.range=p.number;function f(t){var e=(""+t).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return e?Math.max(0,(e[1]?e[1].length:0)-(e[2]?+e[2]:0)):0}function m(s,a){return function(t){for(var e=arguments.length,i=new Array(1<e?e-1:0),r=1;r<e;r++)i[r-1]=arguments[r];return i.pop(),a.apply(void 0,[t].concat(u((n=s,i.map(d.parse[n])))));var n}}function g(t){return{validateDate:m("date",t),validateNumber:m("number",t),requirementType:t.length<=2?"string":["string","string"],priority:30}}a.prototype={init:function(t,e){for(var i in this.catalog=e,this.validators=l({},this.validators),t)this.addValidator(i,t[i].fn,t[i].priority);window.Parsley.trigger("parsley:validator:init")},setLocale:function(t){if(void 0===this.catalog[t])throw new Error(t+" is not available in the catalog");return this.locale=t,this},addCatalog:function(t,e,i){return"object"===n(e)&&(this.catalog[t]=e),!0===i?this.setLocale(t):this},addMessage:function(t,e,i){return void 0===this.catalog[t]&&(this.catalog[t]={}),this.catalog[t][e]=i,this},addMessages:function(t,e){for(var i in e)this.addMessage(t,i,e[i]);return this},addValidator:function(t,e,i){if(this.validators[t])d.warn('Validator "'+t+'" is already defined.');else if(s.hasOwnProperty(t))return void d.warn('"'+t+'" is a restricted keyword and is not a valid validator name.');return this._setValidator.apply(this,arguments)},hasValidator:function(t){return!!this.validators[t]},updateValidator:function(t,e,i){return this.validators[t]?this._setValidator.apply(this,arguments):(d.warn('Validator "'+t+'" is not already defined.'),this.addValidator.apply(this,arguments))},removeValidator:function(t){return this.validators[t]||d.warn('Validator "'+t+'" is not defined.'),delete this.validators[t],this},_setValidator:function(t,e,i){for(var r in"object"!==n(e)&&(e={fn:e,priority:i}),e.validate||(e=new c(e)),(this.validators[t]=e).messages||{})this.addMessage(r,t,e.messages[r]);return this},getErrorMessage:function(t){var e;"type"===t.name?e=(this.catalog[this.locale][t.name]||{})[t.requirements]:e=this.formatMessage(this.catalog[this.locale][t.name],t.requirements);return e||this.catalog[this.locale].defaultMessage||this.catalog.en.defaultMessage},formatMessage:function(t,e){if("object"!==n(e))return"string"==typeof t?t.replace(/%s/i,e):"";for(var i in e)t=this.formatMessage(t,e[i]);return t},validators:{notblank:{validateString:function(t){return/\S/.test(t)},priority:2},required:{validateMultiple:function(t){return 0<t.length},validateString:function(t){return/\S/.test(t)},priority:512},type:{validateString:function(t,e,i){var r=2<arguments.length&&void 0!==i?i:{},n=r.step,s=void 0===n?"any":n,a=r.base,o=void 0===a?0:a,l=p[e];if(!l)throw new Error("validator type `"+e+"` is not supported");if(!t)return!0;if(!l.test(t))return!1;if("number"===e&&!/^any$/i.test(s||"")){var u=Number(t),d=Math.max(f(s),f(o));if(f(u)>d)return!1;var h=function(t){return Math.round(t*Math.pow(10,d))};if((h(u)-h(o))%h(s)!=0)return!1}return!0},requirementType:{"":"string",step:"string",base:"number"},priority:256},pattern:{validateString:function(t,e){return!t||e.test(t)},requirementType:"regexp",priority:64},minlength:{validateString:function(t,e){return!t||t.length>=e},requirementType:"integer",priority:30},maxlength:{validateString:function(t,e){return t.length<=e},requirementType:"integer",priority:30},length:{validateString:function(t,e,i){return!t||t.length>=e&&t.length<=i},requirementType:["integer","integer"],priority:30},mincheck:{validateMultiple:function(t,e){return t.length>=e},requirementType:"integer",priority:30},maxcheck:{validateMultiple:function(t,e){return t.length<=e},requirementType:"integer",priority:30},check:{validateMultiple:function(t,e,i){return t.length>=e&&t.length<=i},requirementType:["integer","integer"],priority:30},min:g(function(t,e){return e<=t}),max:g(function(t,e){return t<=e}),range:g(function(t,e,i){return e<=t&&t<=i}),equalto:{validateString:function(t,e){if(!t)return!0;var i=h(e);return i.length?t===i.val():t===e},priority:256},euvatin:{validateString:function(t){if(!t)return!0;return/^[A-Z][A-Z][A-Za-z0-9 -]{2,}$/.test(t)},priority:30}}};var v={};v.Form={_actualizeTriggers:function(){var e=this;this.$element.on("submit.Parsley",function(t){e.onSubmitValidate(t)}),this.$element.on("click.Parsley",d._SubmitSelector,function(t){e.onSubmitButton(t)}),!1!==this.options.uiEnabled&&this.element.setAttribute("novalidate","")},focus:function(){if(!(this._focusedField=null)===this.validationResult||"none"===this.options.focus)return null;for(var t=0;t<this.fields.length;t++){var e=this.fields[t];if(!0!==e.validationResult&&0<e.validationResult.length&&void 0===e.options.noFocus&&(this._focusedField=e.$element,"first"===this.options.focus))break}return null===this._focusedField?null:this._focusedField.focus()},_destroyUI:function(){this.$element.off(".Parsley")}},v.Field={_reflowUI:function(){if(this._buildUI(),this._ui){var t=function t(e,i,r){for(var n=[],s=[],a=0;a<e.length;a++){for(var o=!1,l=0;l<i.length;l++)if(e[a].assert.name===i[l].assert.name){o=!0;break}o?s.push(e[a]):n.push(e[a])}return{kept:s,added:n,removed:r?[]:t(i,e,!0).added}}(this.validationResult,this._ui.lastValidationResult);this._ui.lastValidationResult=this.validationResult,this._manageStatusClass(),this._manageErrorsMessages(t),this._actualizeTriggers(),!t.kept.length&&!t.added.length||this._failedOnce||(this._failedOnce=!0,this._actualizeTriggers())}},getErrorsMessages:function(){if(!0===this.validationResult)return[];for(var t=[],e=0;e<this.validationResult.length;e++)t.push(this.validationResult[e].errorMessage||this._getErrorMessage(this.validationResult[e].assert));return t},addError:function(t,e){var i=1<arguments.length&&void 0!==e?e:{},r=i.message,n=i.assert,s=i.updateClass,a=void 0===s||s;this._buildUI(),this._addError(t,{message:r,assert:n}),a&&this._errorClass()},updateError:function(t,e){var i=1<arguments.length&&void 0!==e?e:{},r=i.message,n=i.assert,s=i.updateClass,a=void 0===s||s;this._buildUI(),this._updateError(t,{message:r,assert:n}),a&&this._errorClass()},removeError:function(t,e){var i=(1<arguments.length&&void 0!==e?e:{}).updateClass,r=void 0===i||i;this._buildUI(),this._removeError(t),r&&this._manageStatusClass()},_manageStatusClass:function(){this.hasConstraints()&&this.needsValidation()&&!0===this.validationResult?this._successClass():0<this.validationResult.length?this._errorClass():this._resetClass()},_manageErrorsMessages:function(t){if(void 0===this.options.errorsMessagesDisabled){if(void 0!==this.options.errorMessage)return t.added.length||t.kept.length?(this._insertErrorWrapper(),0===this._ui.$errorsWrapper.find(".parsley-custom-error-message").length&&this._ui.$errorsWrapper.append(h(this.options.errorTemplate).addClass("parsley-custom-error-message")),this._ui.$errorClassHandler.attr("aria-describedby",this._ui.errorsWrapperId),this._ui.$errorsWrapper.addClass("filled").attr("aria-hidden","false").find(".parsley-custom-error-message").html(this.options.errorMessage)):(this._ui.$errorClassHandler.removeAttr("aria-describedby"),this._ui.$errorsWrapper.removeClass("filled").attr("aria-hidden","true").find(".parsley-custom-error-message").remove());for(var e=0;e<t.removed.length;e++)this._removeError(t.removed[e].assert.name);for(e=0;e<t.added.length;e++)this._addError(t.added[e].assert.name,{message:t.added[e].errorMessage,assert:t.added[e].assert});for(e=0;e<t.kept.length;e++)this._updateError(t.kept[e].assert.name,{message:t.kept[e].errorMessage,assert:t.kept[e].assert})}},_addError:function(t,e){var i=e.message,r=e.assert;this._insertErrorWrapper(),this._ui.$errorClassHandler.attr("aria-describedby",this._ui.errorsWrapperId),this._ui.$errorsWrapper.addClass("filled").attr("aria-hidden","false").append(h(this.options.errorTemplate).addClass("parsley-"+t).html(i||this._getErrorMessage(r)))},_updateError:function(t,e){var i=e.message,r=e.assert;this._ui.$errorsWrapper.addClass("filled").find(".parsley-"+t).html(i||this._getErrorMessage(r))},_removeError:function(t){this._ui.$errorClassHandler.removeAttr("aria-describedby"),this._ui.$errorsWrapper.removeClass("filled").attr("aria-hidden","true").find(".parsley-"+t).remove()},_getErrorMessage:function(t){var e=t.name+"Message";return void 0!==this.options[e]?window.Parsley.formatMessage(this.options[e],t.requirements):window.Parsley.getErrorMessage(t)},_buildUI:function(){if(!this._ui&&!1!==this.options.uiEnabled){var t={};this.element.setAttribute(this.options.namespace+"id",this.__id__),t.$errorClassHandler=this._manageClassHandler(),t.errorsWrapperId="parsley-id-"+(this.options.multiple?"multiple-"+this.options.multiple:this.__id__),t.$errorsWrapper=h(this.options.errorsWrapper).attr("id",t.errorsWrapperId),t.lastValidationResult=[],t.validationInformationVisible=!1,this._ui=t}},_manageClassHandler:function(){if("string"==typeof this.options.classHandler&&h(this.options.classHandler).length)return h(this.options.classHandler);var t=this.options.classHandler;if("string"==typeof this.options.classHandler&&"function"==typeof window[this.options.classHandler]&&(t=window[this.options.classHandler]),"function"==typeof t){var e=t.call(this,this);if(void 0!==e&&e.length)return e}else{if("object"===n(t)&&t instanceof jQuery&&t.length)return t;t&&d.warn("The class handler `"+t+"` does not exist in DOM nor as a global JS function")}return this._inputHolder()},_inputHolder:function(){return this.options.multiple&&"SELECT"!==this.element.nodeName?this.$element.parent():this.$element},_insertErrorWrapper:function(){var t=this.options.errorsContainer;if(0!==this._ui.$errorsWrapper.parent().length)return this._ui.$errorsWrapper.parent();if("string"==typeof t){if(h(t).length)return h(t).append(this._ui.$errorsWrapper);"function"==typeof window[t]?t=window[t]:d.warn("The errors container `"+t+"` does not exist in DOM nor as a global JS function")}return"function"==typeof t&&(t=t.call(this,this)),"object"===n(t)&&t.length?t.append(this._ui.$errorsWrapper):this._inputHolder().after(this._ui.$errorsWrapper)},_actualizeTriggers:function(){var t,e=this,i=this._findRelated();i.off(".Parsley"),this._failedOnce?i.on(d.namespaceEvents(this.options.triggerAfterFailure,"Parsley"),function(){e._validateIfNeeded()}):(t=d.namespaceEvents(this.options.trigger,"Parsley"))&&i.on(t,function(t){e._validateIfNeeded(t)})},_validateIfNeeded:function(t){var e=this;t&&/key|input/.test(t.type)&&(!this._ui||!this._ui.validationInformationVisible)&&this.getValue().length<=this.options.validationThreshold||(this.options.debounce?(window.clearTimeout(this._debounced),this._debounced=window.setTimeout(function(){return e.validate()},this.options.debounce)):this.validate())},_resetUI:function(){this._failedOnce=!1,this._actualizeTriggers(),void 0!==this._ui&&(this._ui.$errorsWrapper.removeClass("filled").children().remove(),this._resetClass(),this._ui.lastValidationResult=[],this._ui.validationInformationVisible=!1)},_destroyUI:function(){this._resetUI(),void 0!==this._ui&&this._ui.$errorsWrapper.remove(),delete this._ui},_successClass:function(){this._ui.validationInformationVisible=!0,this._ui.$errorClassHandler.removeClass(this.options.errorClass).addClass(this.options.successClass)},_errorClass:function(){this._ui.validationInformationVisible=!0,this._ui.$errorClassHandler.removeClass(this.options.successClass).addClass(this.options.errorClass)},_resetClass:function(){this._ui.$errorClassHandler.removeClass(this.options.successClass).removeClass(this.options.errorClass)}};function y(t,e,i){this.__class__="Form",this.element=t,this.$element=h(t),this.domOptions=e,this.options=i,this.parent=window.Parsley,this.fields=[],this.validationResult=null}var _={pending:null,resolved:!0,rejected:!1};y.prototype={onSubmitValidate:function(t){var e=this;if(!0!==t.parsley){var i=this._submitSource||this.$element.find(d._SubmitSelector)[0];if(this._submitSource=null,this.$element.find(".parsley-synthetic-submit-button").prop("disabled",!0),!i||null===i.getAttribute("formnovalidate")){window.Parsley._remoteCache={};var r=this.whenValidate({event:t});"resolved"===r.state()&&!1!==this._trigger("submit")||(t.stopImmediatePropagation(),t.preventDefault(),"pending"===r.state()&&r.done(function(){e._submit(i)}))}}},onSubmitButton:function(t){this._submitSource=t.currentTarget},_submit:function(t){if(!1!==this._trigger("submit")){if(t){var e=this.$element.find(".parsley-synthetic-submit-button").prop("disabled",!1);0===e.length&&(e=h('<input class="parsley-synthetic-submit-button" type="hidden">').appendTo(this.$element)),e.attr({name:t.getAttribute("name"),value:t.getAttribute("value")})}this.$element.trigger(l(h.Event("submit"),{parsley:!0}))}},validate:function(t){if(1<=arguments.length&&!h.isPlainObject(t)){d.warnOnce("Calling validate on a parsley form without passing arguments as an object is deprecated.");var e=Array.prototype.slice.call(arguments);t={group:e[0],force:e[1],event:e[2]}}return _[this.whenValidate(t).state()]},whenValidate:function(t){var e,i=this,r=0<arguments.length&&void 0!==t?t:{},n=r.group,s=r.force,a=r.event;(this.submitEvent=a)&&(this.submitEvent=l({},a,{preventDefault:function(){d.warnOnce("Using `this.submitEvent.preventDefault()` is deprecated; instead, call `this.validationResult = false`"),i.validationResult=!1}})),this.validationResult=!0,this._trigger("validate"),this._refreshFields();var o=this._withoutReactualizingFormOptions(function(){return h.map(i.fields,function(t){return t.whenValidate({force:s,group:n})})});return(e=d.all(o).done(function(){i._trigger("success")}).fail(function(){i.validationResult=!1,i.focus(),i._trigger("error")}).always(function(){i._trigger("validated")})).pipe.apply(e,u(this._pipeAccordingToValidationResult()))},isValid:function(t){if(1<=arguments.length&&!h.isPlainObject(t)){d.warnOnce("Calling isValid on a parsley form without passing arguments as an object is deprecated.");var e=Array.prototype.slice.call(arguments);t={group:e[0],force:e[1]}}return _[this.whenValid(t).state()]},whenValid:function(t){var e=this,i=0<arguments.length&&void 0!==t?t:{},r=i.group,n=i.force;this._refreshFields();var s=this._withoutReactualizingFormOptions(function(){return h.map(e.fields,function(t){return t.whenValid({group:r,force:n})})});return d.all(s)},refresh:function(){return this._refreshFields(),this},reset:function(){for(var t=0;t<this.fields.length;t++)this.fields[t].reset();this._trigger("reset")},destroy:function(){this._destroyUI();for(var t=0;t<this.fields.length;t++)this.fields[t].destroy();this.$element.removeData("Parsley"),this._trigger("destroy")},_refreshFields:function(){return this.actualizeOptions()._bindFields()},_bindFields:function(){var n=this,t=this.fields;return this.fields=[],this.fieldsMappedById={},this._withoutReactualizingFormOptions(function(){n.$element.find(n.options.inputs).not(n.options.excluded).not("[".concat(n.options.namespace,"excluded=true]")).each(function(t,e){var i=new window.Parsley.Factory(e,{},n);if("Field"===i.__class__||"FieldMultiple"===i.__class__){var r=i.__class__+"-"+i.__id__;void 0===n.fieldsMappedById[r]&&(n.fieldsMappedById[r]=i,n.fields.push(i))}}),h.each(d.difference(t,n.fields),function(t,e){e.reset()})}),this},_withoutReactualizingFormOptions:function(t){var e=this.actualizeOptions;this.actualizeOptions=function(){return this};var i=t();return this.actualizeOptions=e,i},_trigger:function(t){return this.trigger("form:"+t)}};function b(t,e,i,r,n){var s=window.Parsley._validatorRegistry.validators[e],a=new c(s);l(this,{validator:a,name:e,requirements:i,priority:r=r||t.options[e+"Priority"]||a.priority,isDomConstraint:n=!0===n}),this._parseRequirements(t.options)}function w(t,e,i,r){this.__class__="Field",this.element=t,this.$element=h(t),void 0!==r&&(this.parent=r),this.options=i,this.domOptions=e,this.constraints=[],this.constraintsByName={},this.validationResult=!0,this._bindConstraints()}var F={pending:null,resolved:!0,rejected:!(b.prototype={validate:function(t,e){var i;return(i=this.validator).validate.apply(i,[t].concat(u(this.requirementList),[e]))},_parseRequirements:function(i){var r=this;this.requirementList=this.validator.parseRequirements(this.requirements,function(t){return i[r.name+((e=t)[0].toUpperCase()+e.slice(1))];var e})}})};w.prototype={validate:function(t){1<=arguments.length&&!h.isPlainObject(t)&&(d.warnOnce("Calling validate on a parsley field without passing arguments as an object is deprecated."),t={options:t});var e=this.whenValidate(t);if(!e)return!0;switch(e.state()){case"pending":return null;case"resolved":return!0;case"rejected":return this.validationResult}},whenValidate:function(t){var e,i=this,r=0<arguments.length&&void 0!==t?t:{},n=r.force,s=r.group;if(this.refresh(),!s||this._isInGroup(s))return this.value=this.getValue(),this._trigger("validate"),(e=this.whenValid({force:n,value:this.value,_refreshed:!0}).always(function(){i._reflowUI()}).done(function(){i._trigger("success")}).fail(function(){i._trigger("error")}).always(function(){i._trigger("validated")})).pipe.apply(e,u(this._pipeAccordingToValidationResult()))},hasConstraints:function(){return 0!==this.constraints.length},needsValidation:function(t){return void 0===t&&(t=this.getValue()),!(!t.length&&!this._isRequired()&&void 0===this.options.validateIfEmpty)},_isInGroup:function(t){return Array.isArray(this.options.group)?-1!==h.inArray(t,this.options.group):this.options.group===t},isValid:function(t){if(1<=arguments.length&&!h.isPlainObject(t)){d.warnOnce("Calling isValid on a parsley field without passing arguments as an object is deprecated.");var e=Array.prototype.slice.call(arguments);t={force:e[0],value:e[1]}}var i=this.whenValid(t);return!i||F[i.state()]},whenValid:function(t){var r=this,e=0<arguments.length&&void 0!==t?t:{},i=e.force,n=void 0!==i&&i,s=e.value,a=e.group;if(e._refreshed||this.refresh(),!a||this._isInGroup(a)){if(this.validationResult=!0,!this.hasConstraints())return h.when();if(null==s&&(s=this.getValue()),!this.needsValidation(s)&&!0!==n)return h.when();var o=this._getGroupedConstraints(),l=[];return h.each(o,function(t,e){var i=d.all(h.map(e,function(t){return r._validateConstraint(s,t)}));if(l.push(i),"rejected"===i.state())return!1}),d.all(l)}},_validateConstraint:function(t,e){var i=this,r=e.validate(t,this);return!1===r&&(r=h.Deferred().reject()),d.all([r]).fail(function(t){i.validationResult instanceof Array||(i.validationResult=[]),i.validationResult.push({assert:e,errorMessage:"string"==typeof t&&t})})},getValue:function(){var t;return null==(t="function"==typeof this.options.value?this.options.value(this):void 0!==this.options.value?this.options.value:this.$element.val())?"":this._handleWhitespace(t)},reset:function(){return this._resetUI(),this._trigger("reset")},destroy:function(){this._destroyUI(),this.$element.removeData("Parsley"),this.$element.removeData("FieldMultiple"),this._trigger("destroy")},refresh:function(){return this._refreshConstraints(),this},_refreshConstraints:function(){return this.actualizeOptions()._bindConstraints()},refreshConstraints:function(){return d.warnOnce("Parsley's refreshConstraints is deprecated. Please use refresh"),this.refresh()},addConstraint:function(t,e,i,r){if(window.Parsley._validatorRegistry.validators[t]){var n=new b(this,t,e,i,r);"undefined"!==this.constraintsByName[n.name]&&this.removeConstraint(n.name),this.constraints.push(n),this.constraintsByName[n.name]=n}return this},removeConstraint:function(t){for(var e=0;e<this.constraints.length;e++)if(t===this.constraints[e].name){this.constraints.splice(e,1);break}return delete this.constraintsByName[t],this},updateConstraint:function(t,e,i){return this.removeConstraint(t).addConstraint(t,e,i)},_bindConstraints:function(){for(var t=[],e={},i=0;i<this.constraints.length;i++)!1===this.constraints[i].isDomConstraint&&(t.push(this.constraints[i]),e[this.constraints[i].name]=this.constraints[i]);for(var r in this.constraints=t,this.constraintsByName=e,this.options)this.addConstraint(r,this.options[r],void 0,!0);return this._bindHtml5Constraints()},_bindHtml5Constraints:function(){null!==this.element.getAttribute("required")&&this.addConstraint("required",!0,void 0,!0),null!==this.element.getAttribute("pattern")&&this.addConstraint("pattern",this.element.getAttribute("pattern"),void 0,!0);var t=this.element.getAttribute("min"),e=this.element.getAttribute("max");null!==t&&null!==e?this.addConstraint("range",[t,e],void 0,!0):null!==t?this.addConstraint("min",t,void 0,!0):null!==e&&this.addConstraint("max",e,void 0,!0),null!==this.element.getAttribute("minlength")&&null!==this.element.getAttribute("maxlength")?this.addConstraint("length",[this.element.getAttribute("minlength"),this.element.getAttribute("maxlength")],void 0,!0):null!==this.element.getAttribute("minlength")?this.addConstraint("minlength",this.element.getAttribute("minlength"),void 0,!0):null!==this.element.getAttribute("maxlength")&&this.addConstraint("maxlength",this.element.getAttribute("maxlength"),void 0,!0);var i=d.getType(this.element);return"number"===i?this.addConstraint("type",["number",{step:this.element.getAttribute("step")||"1",base:t||this.element.getAttribute("value")}],void 0,!0):/^(email|url|range|date)$/i.test(i)?this.addConstraint("type",i,void 0,!0):this},_isRequired:function(){return void 0!==this.constraintsByName.required&&!1!==this.constraintsByName.required.requirements},_trigger:function(t){return this.trigger("field:"+t)},_handleWhitespace:function(t){return!0===this.options.trimValue&&d.warnOnce('data-parsley-trim-value="true" is deprecated, please use data-parsley-whitespace="trim"'),"squish"===this.options.whitespace&&(t=t.replace(/\s{2,}/g," ")),"trim"!==this.options.whitespace&&"squish"!==this.options.whitespace&&!0!==this.options.trimValue||(t=d.trimString(t)),t},_isDateInput:function(){var t=this.constraintsByName.type;return t&&"date"===t.requirements},_getGroupedConstraints:function(){if(!1===this.options.priorityEnabled)return[this.constraints];for(var t=[],e={},i=0;i<this.constraints.length;i++){var r=this.constraints[i].priority;e[r]||t.push(e[r]=[]),e[r].push(this.constraints[i])}return t.sort(function(t,e){return e[0].priority-t[0].priority}),t}};function C(){this.__class__="FieldMultiple"}C.prototype={addElement:function(t){return this.$elements.push(t),this},_refreshConstraints:function(){var t;if(this.constraints=[],"SELECT"===this.element.nodeName)return this.actualizeOptions()._bindConstraints(),this;for(var e=0;e<this.$elements.length;e++)if(h("html").has(this.$elements[e]).length){t=this.$elements[e].data("FieldMultiple")._refreshConstraints().constraints;for(var i=0;i<t.length;i++)this.addConstraint(t[i].name,t[i].requirements,t[i].priority,t[i].isDomConstraint)}else this.$elements.splice(e,1);return this},getValue:function(){if("function"==typeof this.options.value)return this.options.value(this);if(void 0!==this.options.value)return this.options.value;if("INPUT"===this.element.nodeName){var t=d.getType(this.element);if("radio"===t)return this._findRelated().filter(":checked").val()||"";if("checkbox"===t){var e=[];return this._findRelated().filter(":checked").each(function(){e.push(h(this).val())}),e}}return"SELECT"===this.element.nodeName&&null===this.$element.val()?[]:this.$element.val()},_init:function(){return this.$elements=[this.$element],this}};function A(t,e,i){this.element=t,this.$element=h(t);var r=this.$element.data("Parsley");if(r)return void 0!==i&&r.parent===window.Parsley&&(r.parent=i,r._resetOptions(r.options)),"object"===n(e)&&l(r.options,e),r;if(!this.$element.length)throw new Error("You must bind Parsley on an existing element.");if(void 0!==i&&"Form"!==i.__class__)throw new Error("Parent instance must be a Form instance");return this.parent=i||window.Parsley,this.init(e)}A.prototype={init:function(t){return this.__class__="Parsley",this.__version__="2.9.2",this.__id__=d.generateID(),this._resetOptions(t),"FORM"===this.element.nodeName||d.checkAttr(this.element,this.options.namespace,"validate")&&!this.$element.is(this.options.inputs)?this.bind("parsleyForm"):this.isMultiple()?this.handleMultiple():this.bind("parsleyField")},isMultiple:function(){var t=d.getType(this.element);return"radio"===t||"checkbox"===t||"SELECT"===this.element.nodeName&&null!==this.element.getAttribute("multiple")},handleMultiple:function(){var t,e,r=this;if(this.options.multiple=this.options.multiple||(t=this.element.getAttribute("name"))||this.element.getAttribute("id"),"SELECT"===this.element.nodeName&&null!==this.element.getAttribute("multiple"))return this.options.multiple=this.options.multiple||this.__id__,this.bind("parsleyFieldMultiple");if(!this.options.multiple)return d.warn("To be bound by Parsley, a radio, a checkbox and a multiple select input must have either a name or a multiple option.",this.$element),this;this.options.multiple=this.options.multiple.replace(/(:|\.|\[|\]|\{|\}|\$)/g,""),t&&h('input[name="'+t+'"]').each(function(t,e){var i=d.getType(e);"radio"!==i&&"checkbox"!==i||e.setAttribute(r.options.namespace+"multiple",r.options.multiple)});for(var i=this._findRelated(),n=0;n<i.length;n++)if(void 0!==(e=h(i.get(n)).data("Parsley"))){this.$element.data("FieldMultiple")||e.addElement(this.$element);break}return this.bind("parsleyField",!0),e||this.bind("parsleyFieldMultiple")},bind:function(t,e){var i;switch(t){case"parsleyForm":i=h.extend(new y(this.element,this.domOptions,this.options),new r,window.ParsleyExtend)._bindFields();break;case"parsleyField":i=h.extend(new w(this.element,this.domOptions,this.options,this.parent),new r,window.ParsleyExtend);break;case"parsleyFieldMultiple":i=h.extend(new w(this.element,this.domOptions,this.options,this.parent),new C,new r,window.ParsleyExtend)._init();break;default:throw new Error(t+"is not a supported Parsley type")}return this.options.multiple&&d.setAttr(this.element,this.options.namespace,"multiple",this.options.multiple),void 0!==e?this.$element.data("FieldMultiple",i):(this.$element.data("Parsley",i),i._actualizeTriggers(),i._trigger("init")),i}};var E=h.fn.jquery.split(".");if(parseInt(E[0])<=1&&parseInt(E[1])<8)throw"The loaded version of jQuery is too old. Please upgrade to 1.8.x or better.";E.forEach||d.warn("Parsley requires ES5 to run properly. Please include https://github.com/es-shims/es5-shim");var x=l(new r,{element:document,$element:h(document),actualizeOptions:null,_resetOptions:null,Factory:A,version:"2.9.2"});l(w.prototype,v.Field,r.prototype),l(y.prototype,v.Form,r.prototype),l(A.prototype,r.prototype),h.fn.parsley=h.fn.psly=function(t){if(1<this.length){var e=[];return this.each(function(){e.push(h(this).parsley(t))}),e}if(0!=this.length)return new A(this[0],t)},void 0===window.ParsleyExtend&&(window.ParsleyExtend={}),x.options=l(d.objectCreate(s),window.ParsleyConfig),window.ParsleyConfig=x.options,window.Parsley=window.psly=x,x.Utils=d,window.ParsleyUtils={},h.each(d,function(t,e){"function"==typeof e&&(window.ParsleyUtils[t]=function(){return d.warnOnce("Accessing `window.ParsleyUtils` is deprecated. Use `window.Parsley.Utils` instead."),d[t].apply(d,arguments)})});var $=window.Parsley._validatorRegistry=new a(window.ParsleyConfig.validators,window.ParsleyConfig.i18n);window.ParsleyValidator={},h.each("setLocale addCatalog addMessage addMessages getErrorMessage formatMessage addValidator updateValidator removeValidator hasValidator".split(" "),function(t,e){window.Parsley[e]=function(){return $[e].apply($,arguments)},window.ParsleyValidator[e]=function(){var t;return d.warnOnce("Accessing the method '".concat(e,"' through Validator is deprecated. Simply call 'window.Parsley.").concat(e,"(...)'")),(t=window.Parsley)[e].apply(t,arguments)}}),window.Parsley.UI=v,window.ParsleyUI={removeError:function(t,e,i){var r=!0!==i;return d.warnOnce("Accessing UI is deprecated. Call 'removeError' on the instance directly. Please comment in issue 1073 as to your need to call this method."),t.removeError(e,{updateClass:r})},getErrorsMessages:function(t){return d.warnOnce("Accessing UI is deprecated. Call 'getErrorsMessages' on the instance directly."),t.getErrorsMessages()}},h.each("addError updateError".split(" "),function(t,a){window.ParsleyUI[a]=function(t,e,i,r,n){var s=!0!==n;return d.warnOnce("Accessing UI is deprecated. Call '".concat(a,"' on the instance directly. Please comment in issue 1073 as to your need to call this method.")),t[a](e,{message:i,assert:r,updateClass:s})}}),!1!==window.ParsleyConfig.autoBind&&h(function(){h("[data-parsley-validate]").length&&h("[data-parsley-validate]").parsley()});function V(){d.warnOnce("Parsley's pubsub module is deprecated; use the 'on' and 'off' methods on parsley instances or window.Parsley")}var P=h({});function O(e,i){return e.parsleyAdaptedCallback||(e.parsleyAdaptedCallback=function(){var t=Array.prototype.slice.call(arguments,0);t.unshift(this),e.apply(i||P,t)}),e.parsleyAdaptedCallback}var T="parsley:";function M(t){return 0===t.lastIndexOf(T,0)?t.substr(T.length):t}return h.listen=function(t,e){var i;if(V(),"object"===n(arguments[1])&&"function"==typeof arguments[2]&&(i=arguments[1],e=arguments[2]),"function"!=typeof e)throw new Error("Wrong parameters");window.Parsley.on(M(t),O(e,i))},h.listenTo=function(t,e,i){if(V(),!(t instanceof w||t instanceof y))throw new Error("Must give Parsley instance");if("string"!=typeof e||"function"!=typeof i)throw new Error("Wrong parameters");t.on(M(e),O(i))},h.unsubscribe=function(t,e){if(V(),"string"!=typeof t||"function"!=typeof e)throw new Error("Wrong arguments");window.Parsley.off(M(t),e.parsleyAdaptedCallback)},h.unsubscribeTo=function(t,e){if(V(),!(t instanceof w||t instanceof y))throw new Error("Must give Parsley instance");t.off(M(e))},h.unsubscribeAll=function(e){V(),window.Parsley.off(M(e)),h("form,input,textarea,select").each(function(){var t=h(this).data("Parsley");t&&t.off(M(e))})},h.emit=function(t,e){V();var i=e instanceof w||e instanceof y,r=Array.prototype.slice.call(arguments,i?2:1);r.unshift(M(t)),i||(e=window.Parsley),e.trigger.apply(e,u(r))},h.extend(!0,x,{asyncValidators:{default:{fn:function(t){return 200<=t.status&&t.status<300},url:!1},reverse:{fn:function(t){return t.status<200||300<=t.status},url:!1}},addAsyncValidator:function(t,e,i,r){return x.asyncValidators[t]={fn:e,url:i||!1,options:r||{}},this}}),x.addValidator("remote",{requirementType:{"":"string",validator:"string",reverse:"boolean",options:"object"},validateString:function(t,e,i,r){var n,s,a={},o=i.validator||(!0===i.reverse?"reverse":"default");if(void 0===x.asyncValidators[o])throw new Error("Calling an undefined async validator: `"+o+"`");-1<(e=x.asyncValidators[o].url||e).indexOf("{value}")?e=e.replace("{value}",encodeURIComponent(t)):a[r.element.getAttribute("name")||r.element.getAttribute("id")]=t;var l=h.extend(!0,i.options||{},x.asyncValidators[o].options);n=h.extend(!0,{},{url:e,data:a,type:"GET"},l),r.trigger("field:ajaxoptions",r,n),s=h.param(n),void 0===x._remoteCache&&(x._remoteCache={});function u(){var t=x.asyncValidators[o].fn.call(r,d,e,i);return t=t||h.Deferred().reject(),h.when(t)}var d=x._remoteCache[s]=x._remoteCache[s]||h.ajax(n);return d.then(u,u)},priority:-1}),x.on("form:submit",function(){x._remoteCache={}}),r.prototype.addAsyncValidator=function(){return d.warnOnce("Accessing the method `addAsyncValidator` through an instance is deprecated. Simply call `Parsley.addAsyncValidator(...)`"),x.addAsyncValidator.apply(x,arguments)},x.addMessages("en",{defaultMessage:"This value seems to be invalid.",type:{email:"This value should be a valid email.",url:"This value should be a valid url.",number:"This value should be a valid number.",integer:"This value should be a valid integer.",digits:"This value should be digits.",alphanum:"This value should be alphanumeric."},notblank:"This value should not be blank.",required:"This value is required.",pattern:"This value seems to be invalid.",min:"This value should be greater than or equal to %s.",max:"This value should be lower than or equal to %s.",range:"This value should be between %s and %s.",minlength:"This value is too short. It should have %s characters or more.",maxlength:"This value is too long. It should have %s characters or fewer.",length:"This value length is invalid. It should be between %s and %s characters long.",mincheck:"You must select at least %s choices.",maxcheck:"You must select %s choices or fewer.",check:"You must select between %s and %s choices.",equalto:"This value should be the same.",euvatin:"It's not a valid VAT Identification Number."}),x.setLocale("en"),(new function(){var r=this,n=window||global;l(this,{isNativeEvent:function(t){return t.originalEvent&&!1!==t.originalEvent.isTrusted},fakeInputEvent:function(t){r.isNativeEvent(t)&&h(t.target).trigger("input")},misbehaves:function(t){r.isNativeEvent(t)&&(r.behavesOk(t),h(document).on("change.inputevent",t.data.selector,r.fakeInputEvent),r.fakeInputEvent(t))},behavesOk:function(t){r.isNativeEvent(t)&&h(document).off("input.inputevent",t.data.selector,r.behavesOk).off("change.inputevent",t.data.selector,r.misbehaves)},install:function(){if(!n.inputEventPatched){n.inputEventPatched="0.0.3";for(var t=0,e=["select",'input[type="checkbox"]','input[type="radio"]','input[type="file"]'];t<e.length;t++){var i=e[t];h(document).on("input.inputevent",i,{selector:i},r.behavesOk).on("change.inputevent",i,{selector:i},r.misbehaves)}}},uninstall:function(){delete n.inputEventPatched,h(document).off(".inputevent")}})}).install(),x});
15655//# sourceMappingURL=parsley.min.js.map
15656
15657!function(e,a){"object"==typeof exports&&"object"==typeof module?module.exports=a(require("moment"),require("fullcalendar")):"function"==typeof define&&define.amd?define(["moment","fullcalendar"],a):"object"==typeof exports?a(require("moment"),require("fullcalendar")):a(e.moment,e.FullCalendar)}("undefined"!=typeof self?self:this,function(e,a){return function(e){function a(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};
vendor: 16,384 bytes, line 15657
15657return e[n].call(r.exports,r,r.exports,a),r.l=!0,r.exports}var t={};return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,a){return Object.prototype.hasOwnProperty.call(e,a)},a.p="",a(a.s=438)}([function(a,t){a.exports=e},function(e,t){e.exports=a},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(72);var n=t(1);n.datepickerLocale("af","af",{closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("af",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayHtml:"Heeldag",eventLimitText:"Addisionele",noEventsMessage:"Daar is geen gebeurtenisse nie"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(74);var n=t(1);n.datepickerLocale("ar-dz","ar-DZ",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-dz",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(76);var n=t(1);n.datepickerLocale("ar-kw","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-kw",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(78);var n=t(1);n.datepickerLocale("ar-ly","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ly",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(a,r,s,d){var i=t(a),o=n[e][t(a)];return 2===i&&(o=o[r?0:1]),o.replace(/%d/i,a)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(80);var n=t(1);n.datepickerLocale("ar-ma","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(82);var n=t(1);n.datepickerLocale("ar-sa","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};return e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(84);var n=t(1);n.datepickerLocale("ar-tn","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء",
15657"الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(86);var n=t(1);n.datepickerLocale("ar","ar",{closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى",noEventsMessage:"أي أحداث لعرض"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},t={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(a,t,s,d){var i=n(a),o=r[e][n(a)];return 2===i&&(o=o[t?0:1]),o.replace(/%d/i,a)}},d=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];return e.defineLocale("ar",{months:d,monthsShort:d,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,a,t){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(88);var n=t(1);n.datepickerLocale("be","be",{closeText:"Зачыніць",prevText:"&#x3C;Папярэд",nextText:"След&#x3E;",currentText:"Сёння",monthNames:["Студзень","Люты","Сакавік","Красавік","Трав","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лі
15657стапад","Снежань"],monthNamesShort:["Студ","Лют","Сак","Крас","Трав","Чэрв","Ліп","Жнів","Вер","Каст","Ліст","Снеж"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Ат","Ср","Чц","Пт","Сб"],weekHeader:"Ндз",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("be",{buttonText:{month:"Месяц",week:"Тыдзень",day:"Дзень",list:"Парадак дня"},allDayHtml:"Увесь<br />дзень",eventLimitText:function(e){return"+ яшчэ "+e},noEventsMessage:"Няма падзей для адлюстравання"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+a(r[n],+e)}return e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(90);var n=t(1);n.datepickerLocale("bg","bg",{closeText:"затвори",prevText:"&#x3C;назад",nextText:"напред&#x3E;",nextBigText:"&#x3E;&#x3E;",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(e){return"+още "+e}
15657,noEventsMessage:"Няма събития за показване"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(92);var n=t(1);n.datepickerLocale("bs","bs",{closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novmbar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("bs",{buttonText:{prev:"Prošli",next:"Sljedeći",month:"Mjesec",week:"Sedmica",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikazivanje"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(94);var n=t(1);n.datepickerLocale("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més",noEventsMessage:"No hi ha esdeveniments per mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%
15657d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(96);var n=t(1);n.datepickerLocale("cs","cs",{closeText:"Zavřít",prevText:"&#x3C;Dříve",nextText:"Později&#x3E;",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(e){return"+další: "+e},noEventsMessage:"Žádné akce k zobrazení"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekund":"pár sekundami";case"ss":return t||r?s+(a(e)?"sekundy":"sekund"):s+"sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?s+(a(e)?"minuty":"minut"):s+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(a(e)?"hodiny":"hodin"):s+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?s+(a(e)?"dny":"dní"):s+"dny";case"M":return t||r?"měsíc":"měsícem";case"MM":return t||r?s+(a(e)?"měsíce":"měsíců"):s+"měsíci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?s+(a(e)?"roky":"let"):s+"lety"}}var n="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),r="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),s=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],d=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;return e.defineLocale("cs",{months:n,monthsShort:r,monthsRegex:d,monthsShortRegex:d,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:s,longMonthsParse:s,shortMonthsParse:s,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},
15658relativeTime:{future:"za %s",past:"před %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(98);var n=t(1);n.datepickerLocale("da","da",{closeText:"Luk",prevText:"&#x3C;Forrige",nextText:"Næste&#x3E;",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"}
15658,allDayText:"Hele dagen",eventLimitText:"flere",noEventsMessage:"Ingen arrangementer at vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(100);var n=t(1);n.datepickerLocale("de-at","de",{closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de-at",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(102);var n=t(1);n.datepickerLocale("de-ch","de",{closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de-ch",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(104);var n=t(1);n.datepickerLocale("de","de",{closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("de",{buttonText:{year:"Jahr",month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(e){return"+ weitere "+e},noEventsMessage:"Keine Ereignisse anzuzeigen",dayOfMonthFormat:"ddd DD.MM."})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?r[t][0]:r[t][1]}return e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(106);var n=t(1);n.datepickerLocale("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα",noEventsMessage:"Δεν υπάρχουν γεγονότα για να εμφανιστεί"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return"undefined"!=typeof Function&&e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}return e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,a,t){return e>11?t?"μμ":"ΜΜ":t?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LT
15658S:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n=this._calendarEl[e],r=t&&t.hours();return a(n)&&(n=n.apply(t)),n.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(108);var n=t(1);n.datepickerLocale("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-au")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(110),t(1).locale("en-ca")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(112);var n=t(1);n.datepickerLocale("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Frid
15658ay","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-gb")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(114),t(1).locale("en-ie")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(116);var n=t(1);n.datepickerLocale("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("en-nz")},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(118);var n=t(1);n.datepickerLocale("es-do","es",{closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es-do",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LT
15658S:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(120);var n=t(1);n.datepickerLocale("es-us","es",{closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es-us",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(122);var n=t(1);n.datepickerLocale("es","es",{closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más",noEventsMessage:"No hay eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),t="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),n=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;return e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%
15658d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha invalida"})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(124);var n=t(1);n.datepickerLocale("et","et",{closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("et",{buttonText:{month:"Kuu",week:"Nädal",day:"Päev",list:"Päevakord"},allDayText:"Kogu päev",eventLimitText:function(e){return"+ veel "+e},noEventsMessage:"Kuvamiseks puuduvad sündmused"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return a?r[t][2]?r[t][2]:r[t][1]:n?r[t][0]:r[t][1]}return e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:"%d päeva",M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(126);var n=t(1);n.datepickerLocale("eu","eu",{closeText:"Egina",prevText:"&#x3C;Aur",nextText:"Hur&#x3E;",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("eu",{buttonText:{month:"Hilabetea",week:"Astea",day:"Eguna",list:"Agenda"},allDayHtml:"Egun<br/>osoa",eventLimitText:"gehiago",noEventsMessage:"Ez dago ekitaldirik erakusteko"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",
15659L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(128);var n=t(1);n.datepickerLocale("fa","fa",{closeText:"بستن",prevText:"&#x3C;قبلی",nextText:"بعدی&#x3E;",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(e){return"بیش از "+e},noEventsMessage:"هیچ رویدادی به نمایش"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},t={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};return e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,a,t){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%
15659d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return t[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(130);var n=t(1);n.datepickerLocale("fi","fi",{closeText:"Sulje",prevText:"&#xAB;Edellinen",nextText:"Seuraava&#xBB;",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää",noEventsMessage:"Ei näytettäviä tapahtumia"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,n,r){var s="";switch(n){case"s":return r?"muutaman sekunnin":"muutama sekunti";case"ss":return r?"sekunnin":"sekuntia";case"m":return r?"minuutin":"minuutti";case"mm":s=r?"minuutin":"minuuttia";break;case"h":return r?"tunnin":"tunti";case"hh":s=r?"tunnin":"tuntia";break;case"d":return r?"päivän":"päivä";case"dd":s=r?"päivän":"päivää";break;case"M":return r?"kuukauden":"kuukausi";case"MM":s=r?"kuukauden":"kuukautta";break;case"y":return r?"vuoden":"vuosi";case"yy":s=r?"vuoden":"vuotta"}return s=t(e,r)+" "+s}function t(e,a){return e<10?a?r[e]:n[e]:e}var n="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),r=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",n[7],n[8],n[9]];return e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(132);var n=t(1);n.datepickerLocale("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr-ca",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(134);var n=t(1);n.datepickerLocale("fr-ch","fr-CH",{closeText:"Fermer",prevText:"&#x3C;Préc",nextText:"Suiv&#x3E;",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr-ch",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(136);var n=t(1);n.datepickerLocale("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("fr",{buttonText:{year:"Année",month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus",noEventsMessage:"Aucun événement à afficher"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(138);var n=t(1);n.datepickerLocale("gl","gl",{closeText:"Pechar",prevText:"&#x3C;Ant",nextText:"Seg&#x3E;",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("gl",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Axenda"},allDayHtml:"Todo<br/>o día",eventLimitText:"máis",noEventsMessage:"Non hai eventos para amosar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%
15659d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(140);var n=t(1);n.datepickerLocale("he","he",{closeText:"סגור",prevText:"&#x3C;הקודם",nextText:"הבא&#x3E;",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),n.locale("he",{buttonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},allDayText:"כל היום",eventLimitText:"אחר",noEventsMessage:"אין אירועים להצגה",weekNumberTitle:"שבוע"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,a,t){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?t?'לפנה"צ':"לפני הצהריים":e<18?t?'אחה"צ':"אחרי הצהריים":"בערב"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(142);var n=t(1);n.datepickerLocale("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(e){return"+अधिक "+e},noEventsMessage:"कोई घटनाओं को प्रदर्शित करने के लिए"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},t={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};return e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"}
vendor: 9,026 bytes, line 15659
15659,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return t[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return a[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,a){return 12===e&&(e=0),"रात"===a?e<4?e:e+12:"सुबह"===a?e:"दोपहर"===a?e>=10?e:e+12:"शाम"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(144);var n=t(1);n.datepickerLocale("hr","hr",{closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("hr",{buttonText:{prev:"Prijašnji",next:"Sljedeći",month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nema događaja za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n=e+" ";switch(t){case"ss":return n+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return n+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return n+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return n+=1===e?"dan":"dana";case"MM":return n+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return n+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}return e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:a,m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(146);var n=t(1);n.datepickerLocale("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további",noEventsMessage:"Nincs megjeleníthető esemény"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e;switch(t){case"s":return n||a?"néhány másodperc":"néhány másodperce";case"ss":return r+(n||a)?" másodperc":" másodperce";case"m":return"egy"+(n||a?" perc":" perce");case"mm":return r+(n||a?" perc":" perce");case"h":return"egy"+(n||a?" óra":" órája");case"hh":return r+(n||a?" óra":" órája");case"d":return"egy"+(n||a?" nap":" napja");case"dd":return r+(n||a?" nap":" napja");case"M":return"egy"+(n||a?" hónap":" hónapja");case"MM":return r+(n||a?" hónap":" hónapja");case"y":return"egy"+(n||a?" év":" éve");case"yy":return r+(n||a?" év":" éve")}return""}function t(e){return(e?"":"[múlt] ")+"["+n[this.day()]+"] LT[-kor]"}var n="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");return e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return t.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return t.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(148);var n=t(1);n.datepickerLocale("id","id",{closeText:"Tutup",prevText:"&#x3C;mundur",nextText:"maju&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih",noEventsMessage:"Tidak ada acara untuk ditampilkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?e>=11?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(150);var n=t(1);n.datepickerLocale("is","is",{closeText:"Loka",prevText:"&#x3C;
15659 Fyrri",nextText:"Næsti &#x3E;",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira",noEventsMessage:"Engir viðburðir til að sýna"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%100==11||e%10!=1}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return a(e)?s+(t||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return t?"mínúta":"mínútu";case"mm":return a(e)?s+(t||r?"mínútur":"mínútum"):t?s+"mínúta":s+"mínútu";case"hh":return a(e)?s+(t||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return t?"dagur":r?"dag":"degi";case"dd":return a(e)?t?s+"dagar":s+(r?"daga":"dögum"):t?s+"dagur":s+(r?"dag":"degi");case"M":return t?"mánuður":r?"mánuð":"mánuði";case"MM":return a(e)?t?s+"mánuðir":s+(r?"mánuði":"mánuðum"):t?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return t||r?"ár":"ári";case"yy":return a(e)?s+(t||r?"ár":"árum"):s+(t||r?"ár":"ári")}}return e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:t,ss:t,m:t,mm:t,h:"klukkustund",hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(152);var n=t(1);n.datepickerLocale("it","it",{closeText:"Chiudi",prevText:"&#x3C;Prec",nextText:"Succ&#x3E;",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(e){return"+altri "+e},noEventsMessage:"Non ci sono eventi da visualizzare"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%
15659d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(154);var n=t(1);n.datepickerLocale("ja","ja",{closeText:"閉じる",
15660prevText:"&#x3C;前",nextText:"次&#x3E;",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(e){return"他 "+e+" 件"},noEventsMessage:"表示する予定はありません"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,a){return"元"===a[1]?1:parseInt(a[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,a,t){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,a){switch(a){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(156);var n=t(1);n.datepickerLocale("ka","ka",{closeText:"დახურვა",prevText:"წინა",nextText:"შემდეგი",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],weekHeader:"კვ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ka",{buttonText:{month:"თვე",week:"კვირა",day:"დღე",list:"დღის წესრიგი"},allDayText:"მთელი დღე",eventLimitText:function(e){return"+ კიდევ "+e},noEventsMessage:"ღონისძიებები არ არის"})},function(e,a,t){!function(e,a){a(t(0))}
15660(0,function(e){return e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,function(e,a,t){return"ი"===t?a+"ში":a+t+"ში"})},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(158);var n=t(1);n.datepickerLocale("kk","kk",{closeText:"Жабу",prevText:"&#x3C;Алдыңғы",nextText:"Келесі&#x3E;",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("kk",{buttonText:{month:"Ай",week:"Апта",day:"Күн",list:"Күн тәртібі"},allDayText:"Күні бойы",eventLimitText:function(e){return"+ тағы "+e},noEventsMessage:"Көрсету үшін оқиғалар жоқ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};return e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%
15660d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){var t=e%10,n=e>=100?100:null;return e+(a[e]||a[t]||a[n])},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(160);var n=t(1);n.datepickerLocale("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),n.locale("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개",noEventsMessage:"일정이 없습니다"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,a,t){return e<12?"오전":"오후"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(162);var n=t(1);n.datepickerLocale("lb","lb",{closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("lb",{buttonText:{month:"Mount",week:"Woch",day:"Dag",list:"Terminiwwersiicht"},allDayText:"Ganzen Dag",eventLimitText:"méi",noEventsMessage:"Nee Evenementer ze affichéieren"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?r[t][0]:r[t][1]}function t(e){return r(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e}function n(e){return r(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e}function r(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10,t=e/10;return r(0===a?t:a)}if(e<1e4){for(;e>=10;)e/=10;return r(e)}return e/=1e3,r(e)}return e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:t,past:n,s:"e puer Sekonnen",ss:"%d Sekonnen",m:a,mm:"%d Minutten",h:a,hh:"%d Stonnen",d:a,dd:"%d Deeg",M:a,MM:"%d Méint",y:a,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(164);var n=t(1);n.datepickerLocale("lt","lt",{closeText:"Uždaryti",prevText:"&#x3C;Atgal",nextText:"Pirmyn&#x3E;",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","
15660Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),n.locale("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau",noEventsMessage:"Nėra įvykių rodyti"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){return a?"kelios sekundės":n?"kelių sekundžių":"kelias sekundes"}function t(e,a,t,n){return a?r(t)[0]:n?r(t)[1]:r(t)[2]}function n(e){return e%10==0||e>10&&e<20}function r(e){return d[e].split("_")}function s(e,a,s,d){var i=e+" ";return 1===e?i+t(e,a,s[0],d):a?i+(n(e)?r(s)[1]:r(s)[0]):d?i+r(s)[1]:i+(n(e)?r(s)[1]:r(s)[2])}var d={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:a,ss:s,m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(166);var n=t(1);n.datepickerLocale("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(e){return"+vēl "+e},noEventsMessage:"Nav notikumu"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function t(e,t,n){return e+" "+a(s[n],e,t)}function n(e,t,n){return a(s[n],e,t)}function r(e,a){return a?"dažas sekundes":"dažām sekundēm"}var s={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_die
15660nām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:r,ss:t,m:n,mm:t,h:n,hh:t,d:n,dd:t,M:n,MM:t,y:n,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(168);var n=t(1);n.datepickerLocale("mk","mk",{closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("mk",{buttonText:{month:"Месец",week:"Недела",day:"Ден",list:"График"},allDayText:"Цел ден",eventLimitText:function(e){return"+повеќе "+e},noEventsMessage:"Нема настани за прикажување"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-ев":0===t?e+"-ен":t>10&&t<20?e+"-ти":1===a?e+"-ви":2===a?e+"-ри":7===a||8===a?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(170);var n=t(1);n.datepickerLocale("ms-my","ms",{closeText:"Tutup",prevText:"&#x3C;Sebelum",nextText:"Selepas&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms-my",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(172);var n=t(1);n.datepickerLocale("ms","ms",{closeText:"Tutup",prevText:"&#x3C;Sebelum",nextText:"Selepas&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ms",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayText:"Sepanjang hari",eventLimitText:function(e){return"masih ada "+e+" acara"},noEventsMessage:"Tiada peristiwa untuk dipaparkan"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?e>=11?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(174);var n=t(1);n.datepickerLocale("nb","nb",{closeText:"Lukk",prevText:"&#xAB;Forrige",nextText:"Neste&#xBB;",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(176);var n=t(1);n.datepickerLocale("nl-be","nl-BE",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nl-be",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(178);var n=t(1);n.datepickerLocale("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("nl",{buttonText:{year:"Jaar",month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra",noEventsMessage:"Geen evenementen om te laten zien"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),t="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),n=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;return e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,n){return e?/-MMM-/.test(n)?t[e.month()]:a[e.month()]:a},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(180);var n=t(1);n.datepickerLocale("nn","nn",{closeText:"Lukk",prevText:"&#xAB;Førre",nextText:"Neste&#xBB;",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!
156601,yearSuffix:""}),n.locale("nn",{buttonText:{month:"Månad",week:"Veke",day:"Dag",list:"Agenda"},allDayText:"Heile dagen",eventLimitText:"til",noEventsMessage:"Ingen hendelser å vise"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,
15661weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(182);var n=t(1);n.datepickerLocale("pl","pl",{closeText:"Zamknij",prevText:"&#x3C;Poprzedni",nextText:"Następny&#x3E;",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej",noEventsMessage:"Brak wydarzeń do wyświetlenia"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+(a(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return r+(a(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return r+(a(e)?"godziny":"godzin");case"MM":return r+(a(e)?"miesiące":"miesięcy");case"yy":return r+(a(e)?"lata":"lat")}}var n="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),r="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");return e.defineLocale("pl",{months:function(e,a){return e?""===a?"("+r[e.month()]+"|"+n[e.month()]+")":/D MMMM/.test(a)?r[e.month()]:n[e.month()]:n},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:t,m:t,mm:t,h:t,hh:t,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:t,y:"rok",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(184);var n=t(1);n.datepickerLocale("pt-br","pt-BR",{closeText:"Fechar",prevText:"&#x3C;Anterior",nextText:"Próximo&#x3E;",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(e){return"mais +"+e},noEventsMessage:"Não há eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%
15661d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(186);var n=t(1);n.datepickerLocale("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais",noEventsMessage:"Não há eventos para mostrar"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(188);var n=t(1);n.datepickerLocale("ro","ro",{closeText:"Închide",prevText:"&#xAB; Luna precedentă",nextText:"Luna următoare &#xBB;",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(e){return"+alte "+e},noEventsMessage:"Nu există evenimente de afișat"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t){var n={ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},r=" ";return(e%100>=20||e>=100&&e%100==0)&&(r=" de "),e+r+n[t]}return e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:a,m:"un minut",mm:a,h:"o oră",hh:a,d:"o zi",dd:a,M:"o lună",MM:a,y:"un an",yy:a},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(190);var n=t(1);n.datepickerLocale("ru","ru",{closeText:"Закрыть",prevText:"&#x3C;Пред",nextText:"След&#x3E;",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(e){return"+ ещё "+e},noEventsMessage:"Нет событий для отображения"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===n?t?"минута":"минуту":e+" "+a(r[n],+e)}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];return e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|ок
15661т\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(192);var n=t(1);n.datepickerLocale("sk","sk",{closeText:"Zavrieť",prevText:"&#x3C;Predchádzajúci",nextText:"Nasledujúci&#x3E;",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(e){return"+ďalšie: "+e},noEventsMessage:"Žiadne akcie na zobrazenie"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e){return e>1&&e<5}function t(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(a(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(a(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(a(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(a(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(a(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(a(e)?"roky":"rokov"):s+"rokmi"}}var n="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),r="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");return e.defineLocale("sk",{months:n,monthsShort:r,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(194);var n=t(1);n.datepickerLocale("sl","sl",{closeText:"Zapri",prevText:"&#x3C;Prejšnji",nextText:"Naslednji&#x3E;",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","S
15661o"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več",noEventsMessage:"Ni dogodkov za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a,t,n){var r=e+" ";switch(t){case"s":return a||n?"nekaj sekund":"nekaj sekundami";case"ss":return r+=1===e?a?"sekundo":"sekundi":2===e?a||n?"sekundi":"sekundah":e<5?a||n?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return r+=1===e?a?"minuta":"minuto":2===e?a||n?"minuti":"minutama":e<5?a||n?"minute":"minutami":a||n?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return r+=1===e?a?"ura":"uro":2===e?a||n?"uri":"urama":e<5?a||n?"ure":"urami":a||n?"ur":"urami";case"d":return a||n?"en dan":"enim dnem";case"dd":return r+=1===e?a||n?"dan":"dnem":2===e?a||n?"dni":"dnevoma":a||n?"dni":"dnevi";case"M":return a||n?"en mesec":"enim mesecem";case"MM":return r+=1===e?a||n?"mesec":"mesecem":2===e?a||n?"meseca":"mesecema":e<5?a||n?"mesece":"meseci":a||n?"mesecev":"meseci";case"y":return a||n?"eno leto":"enim letom";case"yy":return r+=1===e?a||n?"leto":"letom":2===e?a||n?"leti":"letoma":e<5?a||n?"leta":"leti":a||n?"let":"leti"}}return e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(196);var n=t(1);n.datepickerLocale("sq","sq",{closeText:"mbylle",prevText:"&#x3C;mbrapa",nextText:"Përpara&#x3E;",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sq",{buttonText:{month:"Muaj",week:"Javë",day:"Ditë",list:"Listë"},allDayHtml:"Gjithë<br/>ditën",eventLimitText:function(e){return"+më tepër "+e},noEventsMessage:"Nuk ka evente për të shfaqur"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(198);var n=t(1);n.datepickerLocale("sr-cyrl","sr",{closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr-cyrl",{buttonText:{prev:"Претходна",next:"следећи",month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(e){return"+ још "+e},noEventsMessage:"Нема догађаја за приказ"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+" "+a.correctGrammaticalCase(e,r)}};return e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_ок
15661тобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"дан",dd:a.translate,M:"месец",MM:a.translate,y:"годину",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(200);var n=t(1);n.datepickerLocale("sr","sr-SR",{closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sr",{buttonText:{prev:"Prethodna",next:"Sledeći",month:"Mеsеc",week:"Nеdеlja",day:"Dan",list:"Planеr"},allDayText:"Cеo dan",eventLimitText:function(e){return"+ još "+e},noEventsMessage:"Nеma događaja za prikaz"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:e>=2&&e<=4?a[1]:a[2]},translate:function(e,t,n){var r=a.words[n];return 1===n.length?t?r[0]:r[1]:e+" "+a.correctGrammaticalCase(e,r)}};return e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:a.translate,m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mesec",MM:a.translate,y:"godinu",yy:a.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(202);var n=t(1);n.datepickerLocale("sv","sv",{closeText:"Stäng",prevText:"&#xAB;Förra",nextText:"Nästa&#xBB;",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"v. ",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till",noEventsMessage:"Inga händelser att visa"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?":e":1===a?":a":2===a?":a":":e")},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(204);var n=t(1);n.datepickerLocale("th","th",{closeText:"ปิด",prevText:"&#xAB;&#xA0;ย้อน",nextText:"ถัดไป&#xA0;&#xBB;",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม",noEventsMessage:"ไม่มีกิจกรรมที่จะแสดง"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,a,t){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(206);var n=t(1);n.datepickerLocale("tr","tr",{closeText:"kapat",prevText:"&#x3C;geri",nextText:"ileri&#x3e",currentText:"bugün",
15662monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla",noEventsMessage:"Gösterilecek etkinlik yok"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};return e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,t){switch(t){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var n=e%10,r=e%100-n,s=e>=100?100:null;return e+(a[n]||a[r]||a[s])}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(208);var n=t(1);n.datepickerLocale("uk","uk",{closeText:"Закрити",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(e){return"+ще "+e+"..."},noEventsMessage:"Немає подій для відображення"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){function a(e,a){var t=e.split("_");return a%10==1&&a%100!=11?t[0]:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?t[1]:t[2]}function t(e,t,n){var r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+a(r[n],+e)}function n(e,a){var t,n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?(t=/(\[[ВвУу]\]) ?dddd/.test(a)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(a)?"genitive":"nominative",n[t][e.day()]):n.nominative}function r(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}return e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:n,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:r("[Сьогодні "),nextDay:r("[Завтра "),lastDay:r("[Вчора "),nextWeek:r("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 
156626:return r("[Минулої] dddd [").call(this);case 1:case 2:case 4:return r("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,a,t){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(210);var n=t(1);n.datepickerLocale("vi","vi",{closeText:"Đóng",prevText:"&#x3C;Trước",nextText:"Tiếp&#x3E;",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),n.locale("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(e){return"+ thêm "+e},noEventsMessage:"Không có sự kiện để hiển thị"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(212);var n=t(1);n.datepickerLocale("zh-cn","zh-CN",{closeText:"关闭",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("zh-cn",{buttonText:{month:"月",week:"周",day:"日",list:"日程"},allDayText:"全天",eventLimitText:function(e){return"另外 "+e+" 个"},noEventsMessage:"没有事件显示"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"下午"===a||"晚上"===a?e+12:e>=11?e:e+12},meridiem:function(e,a,t){var n=100*e+a;
15662return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(214);var n=t(1);n.datepickerLocale("zh-hk","zh-HK",{closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("zh-hk",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;return n<600?"凌晨":n<900?"早上":n<1200?"上午":1200===n?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0}),t(216);var n=t(1);n.datepickerLocale("zh-tw","zh-TW",{closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),n.locale("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"活動列表"},allDayText:"整天",eventLimitText:"顯示更多",noEventsMessage:"没有任何活動"})},function(e,a,t){!function(e,a){a(t(0))}(0,function(e){return e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,a){return 12===e&&(e=0),"凌晨"===a||"早上"===a||"上午"===a?e:"中午"===a?e>=11?e:e+12:"下午"===a||"晚上"===a?e+12:void 0},meridiem:function(e,a,t){var n=100*e+a;
15662return n<600?"凌晨":n<900?"早上":n<1130?"上午":n<1230?"中午":n<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})})},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,a,t){t(71),t(73),t(75),t(77),t(79),t(81),t(83),t(85),t(87),t(89),t(91),t(93),t(95),t(97),t(99),t(101),t(103),t(105),t(107),t(109),t(111),t(113),t(115),t(117),t(119),t(121),t(123),t(125),t(127),t(129),t(131),t(133),t(135),t(137),t(139),t(141),t(143),t(145),t(147),t(149),t(151),t(153),t(155),t(157),t(159),t(161),t(163),t(165),t(167),t(169),t(171),t(173),t(175),t(177),t(179),t(181),t(183),t(185),t(187),t(189),t(191),t(193),t(195),t(197),t(199),t(201),t(203),t(205),t(207),t(209),t(211),t(213),t(215),e.exports=t(439)},function(e,a,t){Object.defineProperty(a,"__esModule",{value:!0});var n=t(0),r=t(1);n.locale("en"),r.locale("en"),window.jQuery.datepicker&&window.jQuery.datepicker.setDefaults(window.jQuery.datepicker.regional[""])}])});
15663(function(a,b){'object'==typeof exports&&'undefined'!=typeof module?b():'function'==typeof define&&define.amd?define(b):b()})(this,function(){'use strict';(function(a){if(a&&'undefined'!=typeof window){var b=document.createElement('style');return b.setAttribute('type','text/css'),b.innerHTML=a,document.head.appendChild(b),a}})('date-input-polyfill {\n  background: #fff;\n  color: #000;\n  text-shadow: none;\n  border: 0;\n  padding: 0;\n  height: auto;\n  width: auto;\n  line-height: normal;\n  border-radius: 0;\n  font-family: sans-serif;\n  font-size: 14px;\n  position: absolute !important;\n  text-align: center;\n  box-shadow: 0 7px 8px -4px rgba(0, 0, 0, 0.2), 0 12px 17px 2px rgba(0, 0, 0, 0.14), 0 5px 22px 4px rgba(0, 0, 0, 0.12);\n  cursor: default;\n  z-index: 1; }\n  date-input-polyfill[data-open="false"] {\n    display: none; }\n  date-input-polyfill[data-open="true"] {\n    display: block; }\n  date-input-polyfill select, date-input-polyfill table, date-input-polyfill th, date-input-polyfill td {\n    background: #fff;\n    color: #000;\n    text-shadow: none;\n    border: 0;\n    padding: 0;\n    height: auto;\n    width: auto;\n    line-height: normal;\n    border-radius: 0;\n    font-family: sans-serif;\n    font-size: 14px;\n    box-shadow: none; }\n  date-input-polyfill select, date-input-polyfill button {\n    border: 0;\n    border-bottom: 1px solid #E0E0E0;\n    height: 24px;\n    vertical-align: top; }\n  date-input-polyfill select {\n    width: 50%; }\n    date-input-polyfill select:first-of-type {\n      border-right: 1px solid #E0E0E0;\n      width: 30%; }\n  date-input-polyfill button {\n    padding: 0;\n    width: 20%;\n    background: #E0E0E0; }\n  date-input-polyfill table {\n    border-collapse: collapse; }\n  date-input-polyfill th, date-input-polyfill td {\n    width: 32px;\n    padding: 4px;\n    text-align: center; }\n  date-input-polyfill td[data-day] {\n    cursor: pointer; }\n    date-input-polyfill td[data-day]:hover {\n      background: #E0E0E0; }\n  date-input-polyfill [data-selected] {\n    font-weight: bold;\n    background: #D8EAF6; }\n\ninput[data-has-picker]::-ms-clear {\n  display: none; }\n');var a=function(a,b){if(!(a instanceof b))throw new TypeError('Cannot call a class as a function')},b=function(){function a(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,'value'in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),c=function(){function c(){var b=this;if(a(this,c),c.instance)return c.instance;this.date=new Date,this.input=null,this.isOpen=!1,this.container=document.createElement('date-input-polyfill'),this.year=document.createElement('select'),c.createRangeSelect(this.year,this.date.getFullYear()-80,this.date.getFullYear()+20),this.year.className='yearSelect',this.year.addEventListener('change',function(){b.date.setYear(b.year.value),b.refreshDaysMatrix()}),this.container.appendChild(this.year),this.month=document.createElement('select'),this.month.className='monthSelect',this.month.addEventListener('change',function(){b.date.setMonth(b.month.value),b.refreshDaysMatrix()}),this.container.appendChild(this.month),this.today=document.createElement('button'),this.today.textContent='Today',this.today.addEventListener('click',function(){b.date=new Date,b.setInput()}),this.container.appendChild(this.today);var d=document.createElement('table');this.daysHead=document.createElement('thead'),this.days=document.createElement('tbody'),this.days.addEventListener('click',function(a){var c=a.target;if(!c.hasAttribute('data-day'))return!1;var d=b.days.querySelector('[data-selected]');d&&d.removeAttribute('data-selected'),c.setAttribute('data-selected',''),b.date.setDate(parseInt(c.textContent)),b.setInput()}),d.appendChild(this.daysHead),d.appendChild(this.days),this.container.appendChild(d),this.hide(),document.body.appendChild(this.container),document.addEventListener('click',function(a){for(var c=a.target,d=c===b.container;!d&&(c=c.parentNode);)d=c===b.container;'date'===a.target.getAttribute('type')||d||b.hide()})}return b(c,[{key:'hide',value:function(){this.container.setAttribute('data-open',this.isOpen=!1)}},{key:'show',value:function(){this.container.setAttribute('data-open',this.isOpen=!0)}},{key:'goto',value:function(a){var b=a.getBoundingClientRect();this.container.style.top=b.top+b.height+(document.documentElement.scrollTop||document.body.scrollTop)+'px',this.container.style.left=b.left+(document.documentElement.scrollLeft||document.body.scrollLeft)+'px',this.show()}},{key:'attachTo',value:function(a){return a===this.input&&this.isOpen?!1:void(this.input=a,this.sync(),this.goto(this.input.element))}},{key:'sync',value:function(){this.date=this.input.element.valueAsDate?c.absoluteDate(this.input.element.valueAsDate):new Date,this.year.value=this.date.getFullYear(),this.month.value=this.date.getMonth(),this.refreshDaysMatrix()}},{key:'setInput',value:function(){var a=this;this.input.element.value=this.date.getFullYear()+'-'+('0'+(this.date.getMonth()+1)).slice(-2)+'-'+('0'+this.date.getDate()).slice(-2),this.input.element.focus(),setTimeout(function(){a.hide()},100),this.pingInput()}},{key:'refreshLocale',value:function(){if(this.locale===this.input.locale)return!1;this.locale=this.input.locale;for(var a=['<tr>'],b=0,d=this.input.localeText.days.length;b<d;++b)a.push('<th scope="col">'+this.input.localeText.days[b]+'</th>');this.daysHead.innerHTML=a.join(''),c.createRangeSelect(this.month,0,11,this.input.localeText.months,this.date.getMonth()),this.today.textContent=this.input.localeText.today}},{key:'refreshDaysMatrix',value:function(){this.refreshLocale();for(var a=this.date.getFullYear(),b=this.date.getMonth(),d=new Date(a,b,1).getDay(),e=new Date(this.date.getFullYear(),b+1,0).getDate(),f=c.absoluteDate(this.input.element.valueAsDate)||!1,g=f&&a===f.getFullYear()&&b===f.getMonth(),h=[],j=0;j<e+d;
15663++j){if(0==j%7&&h.push('\n          '+(0===j?'':'</tr>')+'\n          <tr>\n        '),j+1<=d){h.push('<td></td>');continue}var i=j+1-d,k=g&&f.getDate()===i;h.push('<td data-day '+(k?'data-selected':'')+'>\n          '+i+'\n        </td>')}this.days.innerHTML=h.join('')}},{key:'pingInput',value:function(){var a,b;try{a=new Event('input'),b=new Event('change')}catch(c){a=document.createEvent('KeyboardEvent'),a.initEvent('input',!0,!1),b=document.createEvent('KeyboardEvent'),b.initEvent('change',!0,!1)}this.input.element.dispatchEvent(a),this.input.element.dispatchEvent(b)}}],[{key:'createRangeSelect',value:function(a,b,c,d,e){a.innerHTML='';for(var f,g=b;g<=c;++g){f=document.createElement('option'),a.appendChild(f);var h=d?d[g-b]:g;f.text=h,f.value=g,g===e&&(f.selected='selected')}return a}},{key:'absoluteDate',value:function(a){return a&&new Date(a.getTime()+1e3*(60*a.getTimezoneOffset()))}}]),c}();c.instance=null;var d={"en_en-US":{days:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],months:['January','February','March','April','May','June','July','August','September','October','November','December'],today:'Today',format:'M/D/Y'},"en-GB":{days:['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],months:['January','February','March','April','May','June','July','August','September','October','November','December'],today:'Today',format:'D/M/Y'},"zh_zh-CN":{days:['\u661F\u671F\u5929','\u661F\u671F\u4E00','\u661F\u671F\u4E8C','\u661F\u671F\u4E09','\u661F\u671F\u56DB','\u661F\u671F\u4E94','\u661F\u671F\u516D'],months:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],today:'\u4ECA\u5929',format:'Y/M/D'},"zh-Hans_zh-Hans-CN":{days:['\u5468\u65E5','\u5468\u4E00','\u5468\u4E8C','\u5468\u4E09','\u5468\u56DB','\u5468\u4E94','\u5468\u516D'],months:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],today:'\u4ECA\u5929',format:'Y/M/D'},"zh-Hant_zh-Hant-TW":{days:['\u9031\u65E5','\u9031\u4E00','\u9031\u4E8C','\u9031\u4E09','\u9031\u56D
15663B','\u9031\u4E94','\u9031\u516D'],months:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],today:'\u4ECA\u5929',format:'Y/M/D'},"de_de-DE":{days:['So','Mo','Di','Mi','Do','Fr','Sa'],months:['Januar','Februar','M\xE4rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],today:'Heute',format:'D.M.Y'},"da_da-DA":{days:['S\xF8n','Man','Tirs','Ons','Tors','Fre','L\xF8r'],months:['Januar','Februar','Marts','April','Maj','Juni','Juli','August','September','Oktober','November','December'],today:'I dag',format:'D/M/Y'},es:{days:['Dom','Lun','Mar','Mi\xE9','Jue','Vie','S\xE1b'],months:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],today:'Hoy',format:'D/M/Y'},hi:{days:['\u0930\u0935\u093F','\u0938\u094B\u092E','\u092E\u0902\u0917\u0932','\u092C\u0941\u0927','\u0917\u0941\u0930\u0941','\u0936\u0941\u0915\u094D\u0930','\u0936\u0928\u093F'],months:['\u091C\u0928\u0935\u0930\u0940','\u092B\u0930\u0935\u0930\u0940','\u092E\u093E\u0930\u094D\u091A','\u0905\u092A\u094D\u0930\u0947\u0932','\u092E\u0948','\u091C\u0942\u0928','\u091C\u0942\u0932\u093E\u0908','\u0905\u0917\u0938\u094D\u0924','\u0938\u093F\u0924\u092E\u094D\u092C\u0930','\u0906\u0915\u094D\u091F\u094B\u092C\u0930','\u0928\u0935\u092E\u094D\u092C\u0930','\u0926\u093F\u0938\u092E\u094D\u092C\u0930'],today:'\u0906\u091C',format:'D/M/Y'},pt:{days:['Dom','Seg','Ter','Qua','Qui','Sex','S\xE1b'],months:['Janeiro','Fevereiro','Mar\xE7o','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'],today:'Hoje',format:'D/M/Y'},ja:{days:['\u65E5','\u6708','\u706B','\u6C34','\u6728','\u91D1','\u571F'],months:['1\u6708','2\u6708','3\u6708','4\u6708','5\u6708','6\u6708','7\u6708','8\u6708','9\u6708','10\u6708','11\u6708','12\u6708'],today:'\u4ECA\u65E5',format:'Y/M/D'},"nl_nl-NL_nl-BE":{days:['Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag'],months:['Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December'],today:'Vandaag',format:'D/M/Y'},"tr_tr-TR":{days:['Pzr','Pzt','Sal','\xC7r\u015F','Pr\u015F','Cum','Cmt'],months:['Ocak','\u015Eubat','Mart','Nisan','May\u0131s','Haziran','Temmuz','A\u011Fustos','Eyl\xFCl','Ekim','Kas\u0131m','Aral\u0131k'],today:'Bug\xFCn',format:'D/M/Y'},"fr_fr-FR":{days:['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],months:['Janvier','F\xE9vrier','Mars','Avril','Mai','Juin','Juillet','Ao\xFBt','Septembre','Octobre','Novembre','D\xE9cembre'],today:'Auj.',format:'D/M/Y'},"uk_uk-UA":{days:['\u041D\u0434','\u041F\u043D','\u0412\u0442','\u0421\u0440','\u0427\u0442','\u041F\u0442','\u0421\u0431'],months:['\u0421\u0456\u0447\u0435\u043D\u044C','\u041B\u044E\u0442\u0438\u0439','\u0411\u0435\u0440\u0435\u0437\u0435\u043D\u044C','\u041A\u0432\u0456\u0442\u0435\u043D\u044C','\u0422\u0440\u0430\u0432\u0435\u043D\u044C','\u0427\u0435\u0440\u0432\u0435\u043D\u044C','\u041B\u0438\u043F\u0435\u043D\u044C','\u0421\u0435\u0440\u043F\u0435\u043D\u044C','\u0412\u0435\u0440\u0435\u0441\u0435\u043D\u044C','\u0416\u043E\u0432\u0442\u0435\u043D\u044C','\u041B\u0438\u0441\u0442\u043E\u043F\u0430\u0434','\u0413\u0440\u0443\u0434\u0435\u043D\u044C'],today:'\u0421\u044C\u043E\u0433\u043E\u0434\u043D\u0456',format:'D.M.Y'},it:{days:['Dom','Lun','Mar','Mer','Gio','Ven','Sab'],months:['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','ottobre','Novembre','Dicembre'],today:'Oggi',format:'D/M/Y'},pl:{days:['Nie','Pon','Wto','\u015Aro','Czw','Pt','Sob'],months:['Stycze\u0144','Luty','Marzec','Kwiecie\u0144','Maj','Czerwiec','Lipiec','Sierpie\u0144','Wrzesie\u0144','Pa\u017Adziernik','Listopad','Grudzie\u0144'],today:'Dzisiaj',format:'D.M.Y'},cs:{days:['Po','\xDAt','St','\u010Ct','P\xE1','So','Ne'],months:['Leden','\xDAnor','B\u0159ezen','Duben','Kv\u011Bten','\u010Cerven','\u010Cervenec','Srpen','Z\xE1\u0159\xED','\u0158\xEDjen','Listopad','Prosinec'],today:'Dnes',format:'D.M.Y'},ru:{days:['\u0412\u0441','\u041F\u043D','\u0412\u0442','\u0421\u0440','\u0427\u0442','\u041F\u0442','\u0421\u0431'],months:['\u042F\u043D\u0432\u0430\u0440\u044C','\u0424\u0435\u0432\u0440\u0430\u043B\u044C','\u041C\u0430\u0440\u0442','\u0410\u043F\u0440\u0435\u043B\u044C','\u041C\u0430\u0439','\u0418\u044E\u043D\u044C','\u0418\u044E\u043B\u044C','\u0410\u0432\u0433\u0443\u0441\u0442','\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C','\u041E\u043A\u0442\u044F\u0431\u0440\u044C','\u041D\u043E\u044F\u0431\u0440\u044C','\u0414\u0435\u043A\u0430\u0431\u0440\u044C'],today:'\u0421\u0435\u0433\u043E\u0434\u043D\u044F',format:'D.M.Y'}},e=function(){function e(b){var d=this;a(this,e),this.element=b,this.element.setAttribute('data-has-picker','');for(var f=this.element,g='';f.parentNode&&(g=f.getAttribute('lang'),!g);)f=f.parentNode;this.locale=g||'en',this.localeText=this.getLocaleText(),Object.defineProperties(this.element,{value:{get:function(){return d.element.polyfillValue}
15663,set:function(a){if(!/^\d{4}-\d{2}-\d{2}$/.test(a))return d.element.polyfillValue='',d.element.setAttribute('value',''),!1;d.element.polyfillValue=a;var b=a.split('-');d.element.setAttribute('value',d.localeText.format.replace('Y',b[0]).replace('M',b[1]).replace('D',b[2]))}},valueAsDate:{get:function(){return d.element.polyfillValue?new Date(d.element.polyfillValue):null},set:function(a){d.element.value=a.toISOString().slice(0,10)}},valueAsNumber:{get:function(){return d.element.value?d.element.valueAsDate.getTime():NaN},set:function(a){d.element.valueAsDate=new Date(a)}}}),this.element.value=this.element.getAttribute('value');var h=function(){c.instance.attachTo(d)};this.element.addEventListener('focus',h),this.element.addEventListener('mousedown',h),this.element.addEventListener('mouseup',h),this.element.addEventListener('keydown',function(a){var b=new Date;switch(a.keyCode){case 27:c.instance.hide();break;case 38:d.element.valueAsDate&&(b.setDate(d.element.valueAsDate.getDate()+1),d.element.valueAsDate=b,c.instance.pingInput());break;case 40:d.element.valueAsDate&&(b.setDate(d.element.valueAsDate.getDate()-1),d.element.valueAsDate=b,c.instance.pingInput());break;default:}c.instance.sync()})}return b(e,[{key:'getLocaleText',value:function(){var a=this.locale.toLowerCase();for(var b in d){var c=b.split('_').map(function(a){return a.toLowerCase()});if(!!~c.indexOf(a))return d[b]}for(var e in d){var f=e.split('_').map(function(a){return a.toLowerCase()});if(!!~f.indexOf(a.substr(0,2)))return d[e]}return this.locale='en',this.getLocaleText()}}],[{key:'supportsDateInput',value:function(){var a=document.createElement('input');a.setAttribute('type','date');var b='not-a-date';return a.setAttribute('value',b),document.currentScript&&!document.currentScript.hasAttribute('data-nodep-date-input-polyfill-debug')&&a.value!==b}},{key:'addPickerToDateInputs',value:function(){var a=document.querySelectorAll('input[type="date"]:not([data-has-picker]):not([readonly])'),b=a.length;if(!b)return!1;for(var c=0;c<b;++c)new e(a[c])}}]),e}();if(!e.supportsDateInput()){var f=function(){c.instance=new c,e.addPickerToDateInputs(),document.querySelector('body').addEventListener('mousedown',function(){e.addPickerToDateInputs()})};if('complete'===document.readyState)f();else{var g=!1;document.addEventListener('DOMContentLoaded',function(){g=!0,f()}),window.addEventListener('load',function(){g||f()})}}});
15664
15665svg4everybody();
15666$(document).ready(function(){ 
15667  (function() {
15668
15669var Expandable = {
15670
15671  init: function() {
15672    this.cacheDOM();
15673    this.closeOnLoad();
15674    this.disableAnchors();
15675    this.bindWatch();
15676  },
15677
15678  cacheDOM: function() {
15679    this.$el = $(".aoc-accordion__header");
15680    this.$close = $(".aoc-accordion__close");
15681    this.$wrapper = this.$el.parent()
15682  },
15683
15684  closeOnLoad: function() {
15685    this.$wrapper.each(function() {
15686      if (!$(this).hasClass("aoc-accordion__container--expanded")) {
15687        $(this).children(".aoc-accordion__body").css('display','none');
15688      }else{
15689         $(this).children(".aoc-accordion__body").slideToggle("fast");
15690      }
15691    });
15692  },
15693
15694  disableAnchors: function() {
15695    this.$el.children("a").click (function(e) {
15696      e.preventDefault();
15697    } );
15698  },
15699
15700  bindWatch: function() {
15701    this.$el.on('click', this.toggleExpandable);
15702    this.$close.on('click', this.closeExpandable);
15703  },
15704
15705  toggleExpandable: function() {
15706    $(this).parent().toggleClass("aoc-accordion__container--expanded");
15707    $(this).siblings(".aoc-accordion__body")
15708      .slideToggle("fast")
15709      .attr("aria-expanded", function(i, attr) {
15710        return attr == 'true' ? 'false' : 'true'
15711      });
15712    $(this).children("a[role='button']").attr("aria-expanded", function(i, attr) {
15713      return attr == 'true' ? 'false' : 'true'
15714    });
15715  },
15716
15717  // handles behavior when the close icon is clicked
15718  closeExpandable: function() {
15719    $(this).parents(".aoc-accordion__container").removeClass("aoc-accordion__container--expanded");
15720    $(this).parent(".aoc-accordion__body")
15721      .slideUp("fast")
15722      .attr("aria-expanded", function(i, attr) {
15723        return attr == 'true' ? 'false' : 'true';
15724      })
15725      .siblings(".aoc-accordion__header").children("a[role='button']").attr("aria-expanded", function(i, attr) {
15726        return attr == 'true' ? 'false' : 'true'
15727      });
15728  }
15729
15730};
15730 Expandable.init();
15731
15732$(document).ready(function() {
15733
15734    var mobileBreakpoint = 799
15735    var calendarParent = $('#aoc-calendar')
15736    var parser = document.createElement('a')
15737    var svgUrl
15738    var eventsObj
15739    var eventsCollection
15740    var eventContainer
15741    var groupId
15742    var companyId
15743
15744    //Feeds location to parser
15745    parser.href = location
15746
15747    //Dummy Events for Styleguide
15748    var dummyEvents = [
15749        {
15750            title:          'No Registration or Directions given',
15751            start:          '2016-12-02T17:13:03+00:00',
15752            end:            '2016-12-02T19:13:00+00:00',
15753            place:          'A Church <br> 1234 Church Street <br> Chicago, IL 60610',
15754            contact:        'A. Person <br> 312.555.3030 <br> <a class="aoc-link" href="mailto:[email protected]">[email protected]</a>',
15755            description:    'An event withouth a registration url or diurections provided.',
15756            registerUrl:    '', //Liferay service returns empty strings when no value is present
15757            directionsUrl:  '',
15758            status: 0
15759        },
15760        {
15761            title:          'Very Very Very Very Long Name',
15762            start:          '2016-12-02T19:13:03+00:00',
15763            end:            '2016-12-02T21:13:03+00:00',
15764            place:          'A Church <br> 1234 Church Street <br> Chicago, IL 60610',
15765            contact:        'A. Person <br> 312.555.3030 <br> <a class="aoc-link" href="mailto:[email protected]">[email protected]</a>',
15766            description:    'An event with a very long name',
15767            registerUrl:    'very-long-name-register.com',
15768            directionsUrl:  'very-long-name-directions.com',
15769            status: 0
15770        },
15771        {
15772            title:          'Event 2',
15773            start:          '2016-12-02T09:08:03+00:00',
15774            end:            '2016-12-02T09:38:33+00:00',
15775            place:          'A Church <br> 1234 Church Street <br> Chicago, IL 60610',
15776            contact:        'A. Person <br> 312.555.3030 <br> <a class="aoc-link" href="mailto:[email protected]">[email protected]</a>',
15777            description:    'An event that is the 2nd only to the event that may or may not have been the first',
15778            registerUrl:    'event-2-register.com',
15779            directionsUrl:  'event-2-direcitons.com',
15780            status: 2
15781        },
15782        {
15783            title:          'Event with No Description',
15784            start:          '2016-12-12T09:08:03+00:00',
15785            end:            '2016-12-12T11:08:03+00:00',
15786            contact:        'A Person',
15787            registerUrl:    'http://heres-an-event-register.com',
15788            directionsUrl:  'heres-an-event-directions.com',
15789            status: 0
15790        },
15791        {
15792            title:          'A Charming Wednesday Affair',
15793            start:          '2016-12-23T09:08:03+00:00',
15794            end:            '2016-12-23T09:18:33+00:00',
15795            contact:        'Same Person',
15796            description:    'If Wednesday had its way there would only be one day per week.  And that day would be Wednesday',
15797            registerUrl:    'wednesday-affair-register.com',
15798            directionsUrl:  'wednesday-affair-directions.com',
15799            status: 0
15800        },
15801        {
15802            title:          'This event lasts several days',
15803            start:          '2016-12-19T09:08:03+00:00',
15804            end:            '2016-12-21T09:08:03+00:00',
15805            contact:        'Same Person',
15806            description:    'This even spans several days',
15807            registerUrl:    'several-days-register.com',
15808            directionsUrl:  'several-days-directions.com',
15809            backgroundColor: '#c0c0c0',
15810            status: 0
15811        },
15812        {
15813            title:          'This event lasts several MONTHS',
15814            start:          '2016-12-30T09:08:03+00:00',
15815            end:            '2017-05-03T09:08:03+00:00',
15816            contact:        'Same Person',
15817            description:    'This event spans months, much like a pandemic spans continents.',
15818            registerUrl:    'several-months-register.com',
15819            directionsUrl:  'several-months-directions.com',
15820            backgroundColor: '#c0c0c0',
15821            status: 0
15822        },
15823        {
15824            "allDay": true,
15825            "contact": "All Day test contact",
15826            "description": "All Day Event",
15827            "directionsUrl": "",
15828            "end": "2017-01-26T01:00:00+00:00",
15829            "eventId": 249002,
15830            "place": "All Day Event Test",
15831            "registerUrl": "",
15832            "start": "2017-01-26T01:00:00+00:00",
15833            "title": "All Day Event Test",
15834            status: 0
15835        },
15836        {
15837            "allDay": false,
15838            "contact": "",
15839            "description": "",
15840            "directionsUrl": "",
15841            "end": "2017-04-20T15:00:00-0500",
15842            "eventId": 300212,
15843            "place": "",
15844            "registerUrl": "",
15845            "start": "2017-04-20T04:00:00-0500",
15846            "title": "Event 2",
15847            status: 0
15848        },
15849        {
15850            "allDay": false,
15851            "contact": "4124350897",
15852            "description": "chicken noodle soup and cold coffee",
15853            "directionsUrl": "",
15854            "end": "2017-04-10T15:15:00-0500",
15855            "eventId": 386501,
15856            "place": "Chicago",
15857            "registerUrl": "",
15858            "start": "2017-04-04T22:00:00-0500",
15859            "title": "7 day test",
15860            status: 0
15861        },
15862        {
15863            "allDay": false,
15864            "contact": "4\/1 - 4\/3",
15865            "description": "",
15866            "directionsUrl": "",
15867            "end": "2017-04-03T21:00:00-0500",
15868            "eventId": 390005,
15869            "place": "4\/1 - 4\/3",
15870            "registerUrl": "",
15871            "start": "2017-03-31T10:00:00-0500",
15872            "title": "4 day test  (All Day) 03\/31 10 AM - 04\/03 9 PM",
15873            status: 0
15874        },
15875        {
15876            "allDay": false,
15877            "contact": "708.383.3430",
15878            "description": "",
15879            "directionsUrl": "",
15880            "end": "2017-04-28T15:00:00-0500",
15881            "eventId": 206932,
15882            "place": "St. Giles Parish",
15883            "registerUrl": "",
15884            "start": "2017-04-28T09:00:00-0500",
15885            "title": "Archbishop's Meeting with Leadership of religious",
15886            status: 0
15887        },
15888        {
15889            "allDay": false,
15890            "contact": "312.492.8442",
15891            "description": "",
15892            "directionsUrl": "https:\/\/www.google.com\/maps?q=Healing+Garden+at+Holy+Family+Parish,+1080+W+Roose",
15893            "end": "2017-04-08T00:30:00-0500",
15894            "eventId": 206942,
15895            "place": "Healing Garden at Holy Family Parish, 1080 W Roose",
15896            "registerUrl": "",
15897            "start": "2017-04-07T11:30:00-0500",
15898            "title": "Pinwheel Prayer Service",
15899            status: 0
15900        },
15901        {
15902            "allDay": true,
15903            "contact": "",
15904            "description": "",
15905            "directionsUrl": "",
15906            "end": "2017-04-05T05:00:00-0500",
15907            "eventId": 389909,
15908            "place": "",
15909            "registerUrl": "",
15910            "start": "2017-03-31T06:00:00-0500",
15911            title: '6 day test',
15912            status: 2
15913        }
15914    ]
15915
15916    //Check if we're in the styleguide or in Liferay
15917    if (window.Liferay) {
15918        svgUrl = '/o/aoc-theme/resources/svg/svg-sprite.svg#chevron-right'
15919        groupId = Liferay.ThemeDisplay.getScopeGroupId()
15920        companyId = Liferay.ThemeDisplay.getCompanyId()
15921        locale = Liferay.ThemeDisplay.getLanguageId()
15922    }
15923    else {
15924        svgUrl = 'svg-sprite.svg#chevron-right'
15925    }
15926
15927    // Add class based on browser width
15928    if ($(window).width() < mobileBreakpoint) calendarParent.addClass('mobile')
15929    else calendarParent.addClass('desktop')
15930
15931    var formatDate = function formatDate(dateArray) {
15932        var monthDictionary = {
15933            'Jan': '01',
15934            'Feb': '02',
15935            'Mar': '03',
15936            'Apr': '04',
15937            'May': '05',
15938            'Jun': '06',
15939            'Jul': '07',
15940            'Aug': '08',
15941            'Sep': '09',
15942            'Oct': '10',
15943            'Nov': '11',
15944            'Dec': '12'
15945        }
15946
15947        return dateArray[3] + '-' + monthDictionary[dateArray[1]] + '-' + dateArray[2]
15948    }
15949
15950    // Initialize the Calendar
15951    $(calendarParent).fullCalendar({
15952        header: {
15953            left: 'prev, title, next',
15954            center: '',
15955            right: ''
15956        },
15957        ignoreTimezone: 'false',
15958        nextDayThreshold: '00:00:00',
15959        timezone: 'local',
15960        columnFormat: 'dddd',
15961        displayEventTime: false,
15962        eventColor: '#cccccc',
15963        eventRender: function(event, element, view) {
15964            if (view.name === 'listMonth') {
15965                var contentCell = element.find('.fc-list-item-title')
15966                var eventWindow = $('.aoc-calendar__event-content:first')
15967
15968                //Append Accordion chevron SVG
15969                contentCell.append('<svg class="aoc-accordion__chevron"><use xlink:href="'+ svgUrl +'" /></svg>')
15970
15971                eventWindow.clone().appendTo(contentCell)
15972                element.find('.fc-list-item-marker').remove()
15973            }
15974        },
15975        defaultView: $(window).width() < mobileBreakpoint ? 'listMonth' : 'month', windowResize: function(view) {
15976            if ($(window).width() < mobileBreakpoint) {
15977                calendarParent.fullCalendar('changeView', 'listMonth')
15978                calendarParent.addClass('mobile').removeClass('desktop')
15979            }
15980            else {
15981                calendarParent.fullCalendar('changeView', 'month')
15982                calendarParent.addClass('desktop').removeClass('mobile')
15983            }
15984        },
15985        eventClick: function(calEvent, jsEvent, view) {
15986            if (calendarParent.hasClass('desktop')) {
15987                openEventWindow(calEvent,jsEvent)
15988            }
15989            else {
15990                openEventDropdown(calEvent, jsEvent)
15991            }
15992        },
15993        events: function(start, end, timezone, callback) {
15994            var startDate = start['_d'].toString().split(' ')
15995            var endDate = end['_d'].toString().split(' ')
15996
15997            var formattedStartDate = formatDate(startDate)
15998            var formattedEndDate = formatDate(endDate)
15999            var categoryIdData = calendarParent.attr('data-categoryids') || ''
16000
16001            if (window.Liferay) {
16002                AUI().use('aui-base', function(A) {
16003
16004                    Liferay.Service('/aoc-service-portlet.event/get-events',
16005                        {
16006                            groupId: groupId,
16007                            companyId: companyId,
16008                            startDate: formattedStartDate,
16009                            endDate: formattedEndDate,
16010                            categoryIds: categoryIdData,
16011                            locale: locale
16012                        },
16013                        function(response) {
16014                            callback(response)
16015                        }
16016                    )
16017                })
16018            }
16019            else {
16020                callback(dummyEvents)
16021            }
16022        },
16023        eventDataTransform: function(event) {
16024
16025            if(event.allDay) {
16026                event.end = moment(event.end).add(1, 'days')
16027            }
16028
16029            if(event.status != 0 ) {
16030                event.backgroundColor = '#ffffe6'
16031            }
16032
16033            return event;
16034        }
16035    })
16036
16037    //Close Button Click event
16038    $('.aoc-calendar__event-window-close').click(function(e){
16039        e.preventDefault()
16040        e.stopPropagation()
16041        closeWindow()
16042    })
16043
16044    //The Event window for calendar month view
16045    var openEventWindow = function(calEvent, jsEvent) {
16046        eventContainer = $('.aoc-calendar__event-window')
16047        eventContainer.css('display', 'flex')
16048        eventPopulate(calEvent, eventContainer)
16049    }
16050
16051    // The events windows for list view
16052    var openEventDropdown = function(calEvent, jsEvent) {
16053        var eventContainer = $(jsEvent.currentTarget).find('.aoc-calendar__event-content')
16054        var eventContainerParent = eventContainer.closest('.fc-list-item')
16055
16056        $('.fc-list-item').not(eventContainerParent).removeClass('expanded')
16057        eventContainerParent.toggleClass('expanded')
16058        eventPopulate(calEvent, eventContainer)
16059    }
16060
16061    //Populate the event's data
16062    var eventPopulate = function(calEvent, eventContainer) {
16063        var eventName = calEvent.title
16064        var eventTime
16065
16066        var startMoment = moment(calEvent.start)
16067        var endMoment = moment(calEvent.end)
16068
16069        if (calEvent.allDay){
16070            eventTimeDisplay = "All day"
16071        } else if ( !calEvent.allDay && endMoment.isSame(startMoment, 'day') ) {
16072            eventTimeDisplay = startMoment.format('h:mm a') + ' - ' + endMoment.format('h:mm a')
16073        } else if ( !calEvent.allDay && endMoment.isAfter(startMoment, 'day') ){
16074            eventTimeDisplay = startMoment.format('h:mm a') + ' - ' + endMoment.format('MM/DD/YYYY h:mm a')
16075        } else {
16076            eventTimeDisplay = "Too Complicated"
16077        }
16078
16079
16080        var values = [
16081            date = {
16082                element:    eventContainer.find('.aoc-calendar__event-detail-row--date'),
16083                value:      moment(calEvent.start).format('MM/DD/YYYY'),
16084                type:       'text'
16085            },
16086            time = {
16087                element:    eventContainer.find('.aoc-calendar__event-detail-row--time'),
16088                value:      eventTimeDisplay,
16089                type:       'text'
16090            },
16091            place = {
16092                element:    eventContainer.find('.aoc-calendar__event-detail-row--place'),
16093                value:      calEvent.place,
16094                type:       'text'
16095            },
16096            contact = {
16097                element:    eventContainer.find('.aoc-calendar__event-detail-row--contact'),
16098                value:      calEvent.contact,
16099                type:       'text'
16100            },
16101            description = {
16102                element:    eventContainer.find('.aoc-calendar__event-detail-row--description'),
16103                value:      calEvent.description,
16104                type:       'text'
16105            },
16106            registerUrl = {
16107                element:    eventContainer.find('.aoc-calendar__event-button--register'),
16108                value:      calEvent.registerUrl,
16109                type:       'button'
16110
16111            },
16112            directionsUrl = {
16113                element:    eventContainer.find('.aoc-calendar__event-button--directions'),
16114                value:      calEvent.directionsUrl,
16115                type:       'button'
16116            }
16117        ]
16118
16119
16120        eventContainer.find('.aoc-calendar__event-name').text(eventName) // Even Title
16121
16122
16123        //Go through each value, populating it's fields in the event popup
16124        for(var i = 0; i < values.length; i++){
16125
16126            var value   = values[i].value;
16127            var element = values[i].element;
16128            var type = values[i].type;
16129
16130
16131            if(value){
16132                switch(type) {
16133                    case 'text':
16134                        var valueContainer = element.find('[class$="label"]').next('[class$=info]');
16135                        valueContainer.html(value);
16136                        element.show();
16137                        break;
16138                    case 'button':
16139                        element.attr('href', value );
16140                        element.attr('target', '_blank');
16141                        element.show();
16142                        break;
16143                    default:
16144                    element.show();
16145                }
16146            }else{
16147                element.hide();
16148            }
16149        }
16150    }
16151
16152    //Close event function
16153    var closeWindow = function() {
16154        $('.aoc-calendar__event-window').hide()
16155        $('.expanded').toggleClass('expanded')
16156    }
16157})
16158
16159var $eventsTab     = $('.aoc-pub-event__title');
16160var $eventsWrapper = $('.aoc-pub-event__wrapper');
16161var $eventsPointer = $('.aoc-accordion__chevron');
16162var $eventsClose   = $('.aoc-pub-events__close');
16163var $theEvent      = $('.aoc-pub-event');
16164
16165
16166$eventsTab.click(function(event) {
16167 $(this).siblings($eventsWrapper).toggleClass('aoc-pub-event__wrapper--open');
16168 $(this).find($eventsPointer).toggleClass('aoc-accordion__chevron--expand');
16169 // $(this).closest('.aoc-pub-event').find($eventsClose).toggleClass('aoc-pub-events__close--show');
16170
16171 // Just add another class and put the close button in there instead of using this above.
16172});
16173
16174
16175$eventsClose.click(function(event) {
16176  // $(this).siblings($eventsWrapper).removeClass('aoc-pub-event__wrapper--open');
16177  $(this).closest($eventsWrapper).removeClass('aoc-pub-event__wrapper--open');
16178  $(this).closest($theEvent).find($eventsPointer).removeClass('aoc-accordion__chevron--expand');
16179});
16180
16181
16182
16183function wordCount( val ){
16184    var wom = val.match(/\S+/g);
16185    return {
16186        charactersNoSpaces : val.replace(/\s+/g, '').length,
16187        characters         : val.length,
16188        words              : wom ? wom.length : 0,
16189        lines              : val.split(/\r*\n/).length
16190    };
16191}
16192
16193var textFields 	= $('#mailing-address, #message, #article-text');
16194
16195textFields.each(function(){
16196
16197	var maxWordTip			=	$(this).next('.aoc-form__field-tip--maxwords'); //Find the field's corresponding "tool tip"
16198	var countMaxDisplay = maxWordTip.find('span').eq(0); 									//The first span will display the max number of words
16199	var countDisplay 		= maxWordTip.find('.word-count');									//The second span will display the number of remaining words
16200	var countMax 				=	$(this).data('maxwords');												//Get the word max
16201	var $element 				= $(this)[0];																			//Get the actual element from the jQuery object
16202
16203	countMaxDisplay.text(countMax); //Replace the spans's text
16204	countDisplay.text(countMax);
16205
16206	$element.addEventListener("input", function(){
16207	  var v = wordCount( this.value );
16208
16209	  countDisplay.text(countMax - v.words); 															//Words left == max number of words minus current total amount of words typed
16210
16211		if(v.words > countMax){
16212			$(this).addClass('parsley-error');
16213			maxWordTip.addClass('parsley-error');
16214		}else{
16215			$(this).removeClass('parsley-error');
16216			maxWordTip.removeClass('parsley-error');
16217		}
16218
16219	}, false);
16220});
16221
16222var GoodNewsForm = (function() {
16223  $( '.aoc-form__input--file' ).each( function() {
16224    var $input   = $( this ),
16225        $label   = $input.siblings( '.aoc-form__file-name-container:first' ),
16226        labelVal = $label.html();
16227
16228    $input.on( 'change', getFileName)
16229          .on( 'focus', addFocus)
16230          .on( 'blur', removeFocus);
16231
16232    function getFileName(e) {
16233      var fileName = '';
16234
16235      if( this.files && this.files.length > 1 )
16236        fileName = ( this.getAttribute( 'data-multiple-caption' ) || '' ).replace( '{count}', this.files.length );
16237      else if( e.target.value )
16238        fileName = e.target.value.split( '\\' ).pop();
16239
16240      if( fileName )
16241        $label.html( fileName );
16242      else
16243        $label.html( labelVal );
16244    }
16245
16246    // Add focus states due to Firefox bug
16247    function addFocus() {
16248      $input.addClass( 'has-focus' );
16249    }
16250
16251    function removeFocus() {
16252      $input.removeClass( 'has-focus' );
16253    }
16254  });
16255})();
16256
16257/************************
16258PARSLEY.JS MAX WORD FUNCTION
16259*************************/
16260
16261(function () {
16262// minwords, maxwords, words extra validators
16263var countWords = function (string) {
16264  return string
16265      .replace( /(^\s*)|(\s*$)/gi, "" )
16266      .replace( /\s+/gi, " " )
16267      .split(' ').length;
16268};
16269
16270window.Parsley.addValidator(
16271  'minwords',
16272  function (value, nbWords) {
16273    return countWords(value) >= nbWords;
16274  }, 32)
16275  .addMessage('en', 'minwords', 'This value needs more words');
16276
16277window.Parsley.addValidator(
16278  'maxwords',
16279  function (value, nbWords) {
16280    return countWords(value) <= nbWords;
16281  }, 32)
16282  .addMessage('en', 'maxwords', 'This value needs fewer words');
16283
16284window.Parsley.addValidator(
16285  'words',
16286  function (value, arrayRange) {
16287    var length = countWords(value);
16288    return length >= arrayRange[0] && length <= arrayRange[1];
16289  }, 32)
16290  .addMessage('en', 'words', 'This value has the incorrect number of words');
16291})();
16292
16293    var parser            = document.createElement('a');
16294    var svgUrl;
16295
16296    parser.href           = location; //Feeds location to parser
16297
16298
16299    //Check if we're in the styleguide or in Liferay
16300    if(window.Liferay){
16301      svgPath    = '/o/aoc-theme/resources/images';
16302    }else{
16303      svgPath    = 'img';
16304    }
16305
16306
16307  $('.aoc-slider-js').owlCarousel({
16308    center: true,
16309    dots: true,
16310    loop: true,
16311    autoplay: true,
16312    margin: 10,
16313    nav: true,
16314    navText: ["<img class='slider-nav' src='" + svgPath + "/arrow-prev.svg'>", "<img class='slider-nav' src='"+ svgPath +"/arrow-next.svg'>"],
16315    //navText: ["<svg class='slider-nav'><use xlink:href='svg-sprite.svg#arrow-prev'></use></svg>", "<svg class='slider-nav'><use xlink:href='svg-sprite.svg#arrow-next'></use></svg>"],
16316    navigation:true,
16317    smartSpeed: 900,
16318    responsiveClass: true,
16319    transitionStyle: "fade",
16320    animateIn: 'fadeIn',
16321    animateOut: 'fadeOut',
16322    responsive: {
16323      320: {
16324        items: 1,
16325        nav: false,
16326        navText: false,
16327        loop: true,
16328        dots: true,
16329        center: true,
16330        autoHeight: true
16331      },
16332      480: {
16333        items: 1,
16334        nav: false,
16335        navText: false,
16336        loop: true,
16337        dots: true,
16338        center: true,
16339        autoHeight: true
16340      },
16341
16342      550: {
16343        items: 1,
16344        dots: true,
16345        nav: false,
16346        navText: false,
16347        loop: true,
16348        center: true,
16349        autoHeight: true
16350      },
16351
16352      800: {
16353        items: 1,
16354        dots: true,
16355        nav: false,
16356        navText: false,
16357        loop: true,
16358        center: true,
16359        autoHeight: true
16360      },
16361
16362      1000: {
16363        items: 1,
16364        dots: true,
16365        nav: true,
16366        loop: true,
16367        center: true,
16368        autoHeight: true
16369      }
16370    }
16371  });
16372
16373
16374var images = $('.aoc-slider__img-mobile');
16375
16376images.each(function(){
16377  var $this = $(this);
16378 // $this.data('src', $this.attr('src')); //Save it to data for perserverance
16379});
16380
16381function jqUpdateSize(){
16382  // Get the dimensions of the viewport
16383  var width = $(window).width();
16384  var height = $(window).height();
16385  var images = $('.aoc-slider__img-mobile');
16386
16387
16388  images.each(function(i){
16389    var $this = $(this);
16390    var src;
16391
16392    if(width < 520){
16393      src = 'url(' + $this.data('responsive-src') + ')';
16394      $this.css('background-image', src);
16395    }else{
16396      src = 'url(' + $this.data('src') + ')';
16397      $this.css('background-image', src);
16398    }
16399  });
16400
16401  if(width < 520){
16402    var images = $('.aoc-slider-image');
16403      $('.aoc-slider-js').addClass('responsive');
16404  }else{
16405      $('.aoc-slider-js').removeClass('responsive')
16406  }
16407};
16408
16409$(document).ready(jqUpdateSize);    // When the page first loads
16410$(window).resize(jqUpdateSize);     // When the browser changes size
16411
16412
16413var PopUp = (function() {
16414  var $close = $('.aoc-pub-popup__close'),
16415  $lightbox  = $('.aoc-pub-lightbox');
16416
16417  $close.on('click', closePopup);
16418
16419  function closePopup() {
16420    $lightbox.hide();
16421  }
16422})();
16423$selectDropdown = $('.aoc-select-dropdown__content');
16424$selectDropdown_li = $('.aoc-select-dropdown__content li');
16425
16426$selectDropdown_li.on('click', function() {
16427    // Find text inside list item
16428    var text = $(this).text();
16429    // Replace with the text that's selected
16430    $(this).closest('.aoc-select-dropdown').find('.aoc-select-dropdown__text').text(text);
16431    $selectDropdown.removeClass('aoc-select-dropdown__content--show');
16432    event.preventDefault();
16433});
16434
16435// Toggles menu open and close
16436$('.aoc-select-dropdown__toggle').click(function() {
16437    $(this).closest('.aoc-select-dropdown').find('.aoc-select-dropdown__content').toggleClass('aoc-select-dropdown__content--show');
16438    $(this).closest('.aoc-select-dropdown').find('.aoc-select-dropdown__text').toggleClass('aoc-select-dropdown__text--open');
16439});
16440
16441// Hides Menu when clicking off of dropdown
16442$('.aoc-select-dropdown__toggle').focusout(function() {
16443    window.setTimeout(function() {
16444        $('.aoc-select-dropdown__content').removeClass('aoc-select-dropdown__content--show');
16445        $('.aoc-select-dropdown__text').removeClass('aoc-select-dropdown__text--open');
16446    }, 100)
16447});
16448
16449var $sideNavChildren = $('.aoc-sidenav__item__has-children');
16450
16451$sideNavChildren.click(function(e) {
16452  // Open each sublist
16453  $(this).find('.aoc-sidenav__sublist').first().toggle();
16454  // Change arrow direction
16455  $(this).toggleClass('aoc-sidenav__item__has-children--show');
16456});
16457
16458// When a sublist item is active make the ul show
16459$(".aoc-sidenav__sublist .selected").parent('ul').parent('li').toggleClass('aoc-sidenav__item__has-children--show');
16460
16461
16462//When sublist item is clicked, prevent parent from closing
16463$('.aoc-sidenav__sublist').find('a').click(function(e){
16464	 e.stopPropagation();
16465});
16466var sidebar = $('.kss-sidebar');
16467
16468$(document).bind('keydown','ctrl+l', function() {
16469  sidebar.toggleClass('kss-sidebar--collapse');
16470});
16471// Article Slider
16472var pubNav = $('.aoc-pub-slider__nav').slick({
16473  autoplay: true,
16474  autoplaySpeed: 5000,
16475  slidesToShow: 5,
16476  slidesToScroll: 1,
16477  asNavFor: '.aoc-pub-slider__slides',
16478  dots: false,
16479  arrows: false,
16480  focusOnSelect: true,
16481  infinite: false
16482});
16483
16484var pubSlide = $('.aoc-pub-slider__slides').slick({
16485  autoplay: true,
16486  autoplaySpeed: 5000,
16487  slidesToShow: 1,
16488  slidesToScroll: 1,
16489  arrows: false,
16490  asNavFor: '.aoc-pub-slider__nav',
16491  infinite: true,
16492  fade: true,
16493  cssEase: 'linear',
16494  responsive: [
16495
16496    {
16497      breakpoint: 799,
16498      settings: {
16499        dots: true
16500      }
16501    }
16502
16503    // You can unslick at a given breakpoint now by adding:
16504    // settings: "unslick"
16505    // instead of a settings object
16506  ]
16507});
16508
16509
16510// The node to be monitored
16511var target = $( "body" )[0];
16512
16513// Create an observer instance
16514var observer = new MutationObserver(function( mutations ) {
16515  mutations.forEach(function( mutation ) {
16516    var newNodes = mutation.addedNodes; // DOM NodeList
16517    var removedNodes = mutation.removedNodes; // DOM NodeList
16518    if( newNodes !== null ) { // If there are new nodes added
16519    	var $nodes = $( newNodes ); // jQuery set
16520    	$nodes.each(function() {
16521            var $node = $( this );
16522            if($(".slick-lightbox").length > 0){
16523                $("body").css({overflow: "hidden"});
16524            }
16525
16526    	});
16527    }
16528    if(removedNodes !== null){
16529        var $nodes = $( removedNodes ); // jQuery set
16530    	$nodes.each(function() {
16531            var $node = $( this );
16532            if($(".slick-lightbox").length == 0){
16533                $("body").css({overflow: "auto"});
16534            }
16535
16536    	});
16537    }
16538  });
16539});
16540
16541// Configuration of the observer:
16542var config = {
16543	attributes: true,
16544	childList: true,
16545	characterData: true
16546};
16547
16548// Pass in the target node, as well as the observer options
16549observer.observe(target, config);
16550
16551
16552// Images Slider
16553$(document).ready(function() {
16554
16555  var $status        = $('.slider_counter');
16556  var $slickElement  = $('.aoc-pub-image-slider__slides');
16557  var $slickTabs     = $('.aoc-pub-image-slider__tabs');
16558  var $closeCaption  = $('.aoc-pub-slider-counter__button');
16559  var $slickCaption  = $('.aoc-pub-image-slider__caption');
16560  var $slickCounter  = $('.aoc-pub-slider-counter');
16561
16562
16563  // Add counter to slides
16564  $slickElement.on('init reInit afterChange', function (event, slick, currentSlide, nextSlide) {
16565  //currentSlide is undefined on init -- set it to 0 in this case (currentSlide is 0 based)
16566    var i = (currentSlide ? currentSlide : 0) + 1;
16567    $(this).find('.slider_counter').text(i + ' / ' + slick.slideCount);
16568  });
16569
16570
16571  // Close Caption
16572  $closeCaption.on('click', function(event) {
16573    event.preventDefault();
16574    $slickCaption.toggleClass('aoc-pub-image-slider__caption--close');
16575    $slickCounter.toggleClass('aoc-pub-slider-counter--collapse');
16576    $closeCaption.toggleClass('aoc-pub-slider-counter__button--show');
16577  });
16578
16579  //Allows the pager to dynamically move up after caption is closed
16580  $('.aoc-pub-slider-counter__button').click(function(){
16581    $('.slick-list').toggleClass('aoc-pub-slider-height--auto');
16582  });
16583
16584   // Slider Thumbs
16585  $slickTabs.slick({
16586    autoplay: false,
16587    // centerPadding: '75px',
16588    autoplaySpeed: 5000,
16589    slidesToShow: 9,
16590    slidesToScroll: 1,
16591    asNavFor: '.aoc-pub-image-slider__slides',
16592    arrows: true,
16593    centerMode: false,
16594    focusOnSelect: true,
16595    infinite: true
16596  });
16597
16598  // Slider Images
16599  $slickElement.slick({
16600    autoplay: false,
16601    autoplaySpeed: 5000,
16602    slide: '.slick-slider-item',
16603    slidesToShow: 1,
16604    slidesToScroll: 1,
16605    arrows: true,
16606    asNavFor: '.aoc-pub-image-slider__tabs',
16607    infinite: true,
16608    fade: true,
16609    cssEase: 'linear',
16610    adaptiveHeight: true
16611  });
16612
16613  $slickElement.slickLightbox({
16614    src: 'src',
16615    autoplay: false,
16616    itemSelector: '.slick-slider-item img',
16617    caption: 'caption'
16618
16619  });
16620
16621  $('.aoc-pub-slider-counter__button--fullscreen').click(function(){
16622    $('.slick-current img').trigger('click');
16623
16624    // Re-sorts Slider Lightbox markup so prev button markup comes after slider image markup. For some reason it's not this way in the lightbox plugin.
16625    $(".slick-lightbox").find('.slick-prev').insertAfter('.slick-list');
16626  });
16627
16628
16629
16630});
16631
16632
16633
16634
16635/*var socialMediaShareButtons = (function(){
16636  var $facebook     = $('.aoc-pub-article__fb-share');
16637  var $twitter      = $('.aoc-pub-article__twitter-share');
16638  var $articleTitle = $('.aoc-pub-article__header--title').text();
16639  var $url          = window.location.href.split('#')[0];
16640
16641  if (($articleTitle.length + $url.length) >= 140) $articleTitle = $articleTitle.substring(0, (136 - $url.length)) + '...';
16642
16643  $facebook.attr('href', 'https://www.facebook.com/sharer/sharer.php?u=' + $url);
16644  $twitter.attr('href', 'https://twitter.com/intent/tweet?text=' + $articleTitle + '&url=' + $url);
16645})();*/
16646$(document).ready(function(){
16647
16648    // Sticky element for Article Page
16649    // $("#aoc-pub-social-media-sticky").sticky({topSpacing:0});
16650
16651    // Sticky element for Book Detail
16652    // $("#aoc-pub-social-media-books-sticky").sticky({topSpacing:0});
16653
16654    // Sticky element for Events Side Nav
16655    // $('#aoc-pub-events-nav-sticky').sticky({topSpacing:100});
16656});
16657
16658
16659// ------------------------------------------------------------------------------------------------------------------------------------- \\
16660
16661// -- UNCOMMENT THE ABOVE JQUERY CODE ONCE IT'S IN LIFERAY
16662
16663// -- This was done to improve readability of styleguide. 
16664// -- Since this code makes the element fixed positioned it will show up throughout the entire styleguide and n
16664ot just the section it's in. 
16665
16666// ------------------------------------------------------------------------------------------------------------------------------------- \\
16667var HeaderDropDown = (function(){
16668
16669  // cache selectors
16670  var $button               = $(".aoc-header__menu-button");
16671  var $dropdown             = $(".aoc-header__nav-bar");
16672  var $mobile_target        = $(".aoc-header__nav-bar-link .aoc-sublist__trigger");
16673  var $sub_target           = $(".aoc-sublist__sub-item-link--dropdown .aoc-sublist__trigger");
16674  var $other_sites_target   = $(".aoc-header__dropdown-link");
16675  var $other_sites_menu     = $(".aoc-header__site-menu");
16676  var $other_sites_close    = $(".aoc-header__site-menu-close");
16677  var $sublist_trigger      = $("a.aoc-sublist__trigger");
16678  var $mobile_target_sites  = $(".aoc-header__nav-bar-link-sites");
16679  var $button_pub_menu      = $('.aoc-pub-header__menu-button');
16680  var $pub_menu             = $('.aoc-pub-mobile-menu__wrapper');
16681  var $pub_menu_trigger     = $('a.aoc-pub-sublist__trigger');
16682  var $aoc_site_overlay     = $('.aoc-overlay');  
16683  var $pub_header           = $('.aoc-pub-header'); 
16684  var $pub_content          = $('#content');   
16685  var $trending_nav_target   = $(".aoc-pub-header__dropdown-link");
16686  var $trending_nav_menu     = $(".aoc-pub-header__site-menu");
16687  var $trending_nav_close    = $(".aoc-pub-header__site-menu-close");
16688
16689  // bind click events
16690  $button.on('click', toggleNav);
16691  $mobile_target.on('click', toggleListItem);
16692  $sub_target.on('click', toggleSubListItem);
16693  $other_sites_target.on('click', toggleOtherSitesMenu);
16694  $other_sites_close.on('click', toggleOtherSitesMenu);
16695  $sublist_trigger.on('click', disableLink);
16696  $sublist_trigger.on('click', disableLink);
16697  $mobile_target_sites.on('click', showMobileSitesMenu);
16698  $button_pub_menu.on('click', togglePubMenu);
16699  $pub_menu_trigger.on('click', togglePubSubListItem);
16700  $pub_menu_trigger.on('click', togglePubListItem);
16701  $pub_menu_trigger.on('click', disableLink);
16702  $trending_nav_target.on('click', toggleTrendingNavMenu);
16703  $trending_nav_close.on('click', toggleTrendingNavMenu);
16704
16705
16706  //Toggle mobile nav for AOC
16707  function toggleNav() {
16708    $button.toggleClass("aoc-header__menu-button--open");
16709    $dropdown.toggleClass("aoc-header__nav-bar--open");
16710  }
16711
16712  function toggleListItem() {
16713    $(this).find(".aoc-nav-bar__chevron").first().toggleClass("rotate");
16714    $(this).parent().siblings(".aoc-nav-bar__sublist-wrapper").toggleClass("expand");
16715  }  
16716
16717  function toggleSubListItem() {
16718   $(this).find(".aoc-nav-bar__chevron").first().toggleClass("rotate");
16719   $(this).parent().siblings(".aoc-sublist__dropdown").toggleClass("expand");
16720  }
16721
16722  //Toggle mega menu for AOC
16723  function toggleOtherSitesMenu() {
16724    $other_sites_menu.slideToggle("fast");
16725    $other_sites_target.toggleClass("other_sites_target--active");
16726  }
16727
16728  //Toggle Trending Nav for Chicago Catholic/Catolico
16729  function toggleTrendingNavMenu() {
16730    $trending_nav_menu .slideToggle("fast");
16731    $trending_nav_target.toggleClass("trending_nav_target--active");
16732  }  
16733
16734  //Toggle mega menu on mobile for AOC
16735  function showMobileSitesMenu() {
16736    $(".aoc-header__site-menu").show();
16737    $dropdown.removeClass("aoc-header__nav-bar--open");
16738  }
16739
16740  //Publications Mobile Navigation
16741  function togglePubMenu() {
16742    $pub_menu.toggleClass("aoc-pub-mobile-menu__wrapper--open");
16743    $aoc_site_overlay.toggleClass("aoc-overlay--show");
16744    $button_pub_menu.toggleClass("aoc-pub-header__menu-button--open");
16745    $pub_header.toggleClass("headroom--fixed");
16746    $pub_content.toggleClass("headroom--fixed");
16747  }
16748
16749  //Toggle 1st level nav on mobile for Publications
16750  function togglePubListItem() {
16751    $(this).find(".aoc-pub-nav-bar__chevron").first().toggleClass("rotate");
16752    $(this).parent().siblings(".aoc-pub-nav-bar__sublist-wrapper").toggleClass("expand");
16753  }
16754
16755  //Toggle 2nd level nav on desktop for Publications
16756  function togglePubSubListItem() {
16757    $(this).find(".aoc-nav-bar__chevron").first().toggleClass("rotate");
16758    $(this).parent().siblings(".aoc-pub-sublist__dropdown").toggleClass("expand");
16759  }
16760  
16761  function disableLink(e) {
16762    e.preventDefault();
16763  }
16764
16765})();
16766
16767// Desktop Nav for Issues
16768	$('.aoc-pub-past-issues__nav__item').click(function(){
16769		var $tab_id     = $(this).data('tab');
16770		var $issueTab   = $('ul.aoc-pub-past-issues__nav li');
16771    var $issuesYear = $('.aoc-pub-past-issues');
16772
16773		$issueTab.removeClass('current');
16774		$issuesYear.removeClass('current');
16775
16776		$(this).addClass('current');
16777		$("#"+$tab_id).addClass('current');
16778	});
16779
16780
16781// Next, Prev Issue Button
16782$('.aoc-pub-past-issues__nav__next, .aoc-pub-past-issues__nav__prev').click(function(){
16783  var direction       = $(this).data('direction');
16784  var navItems        = $('.aoc-pub-past-issues__nav__item');
16785  var currentNavItem  = $('.aoc-pub-past-issues__nav__item.current');
16786  var index           = currentNavItem.index() -1;
16787  var tab_id; 
16788  var newCurrentItem;
16789
16790  currentNavItem.removeClass('current');
16791
16792  
16793  if(direction == 'next'){                     //If "Next" is clicked
16794   
16795    index += 1;
16796
16797    if(currentNavItem.index() < navItems.length){
16798      newCurrentItem = navItems.eq(index);
16799    }else{   
16800      index = 0;                              //If we reach the end of the list, cycle back to the beginning
16801      newCurrentItem = navItems.eq(index);
16802    }
16803  }else if(direction == 'prev'){              //if "Prev" is clicked
16804   
16805    index -= 1;
16806
16807    if(currentNavItem.index() > 0){
16808      newCurrentItem = navItems.eq(index);
16809    }else{
16810      index = navItems.length;
16811      newCurrentItem = navItems.eq(index);
16812    }
16813  }
16814
16815  newCurrentItem.addClass('current');
16816  tab_id = newCurrentItem.data('tab');
16817  $('.aoc-pub-past-issues.current').removeClass('current');
16818  $('#'+tab_id).addClass('current');
16819
16820});
16821}) ()
16822});

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.