14767 lines
1.1 MiB
14767 lines
1.1 MiB
/*! jQuery v2.2.4 | (c) jQuery Foundation | jquery.org/license */
|
||
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="2.2.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isPlainObject:function(a){var b;if("object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype||{},"isPrototypeOf"))return!1;for(b in a);return void 0===b||k.call(a,b)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=d.createElement("script"),b.text=a,d.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:h.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(d=e.call(arguments,2),f=function(){return a.apply(b||this,d.concat(e.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return h.call(b,a)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&f.parentNode&&(this.length=1,this[0]=f),this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?void 0!==c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?h.call(n(a),this[0]):h.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||n.uniqueSort(e),D.test(a)&&e.reverse()),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.removeEventListener("DOMContentLoaded",J),a.removeEventListener("load",J),n.ready()}n.ready.promise=function(b){return I||(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(n.ready):(d.addEventListener("DOMContentLoaded",J),a.addEventListener("load",J))),I.promise(b)},n.ready.promise();var K=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)K(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},L=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function M(){this.expando=n.expando+M.uid++}M.uid=1,M.prototype={register:function(a,b){var c=b||{};return a.nodeType?a[this.expando]=c:Object.defineProperty(a,this.expando,{value:c,writable:!0,configurable:!0}),a[this.expando]},cache:function(a){if(!L(a))return{};var b=a[this.expando];return b||(b={},L(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[b]=c;else for(d in b)e[d]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=a[this.expando];if(void 0!==f){if(void 0===b)this.register(a);else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in f?d=[b,e]:(d=e,d=d in f?[d]:d.match(G)||[])),c=d.length;while(c--)delete f[d[c]]}(void 0===b||n.isEmptyObject(f))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!n.isEmptyObject(b)}};var N=new M,O=new M,P=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Q=/[A-Z]/g;function R(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Q,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:P.test(c)?n.parseJSON(c):c;
|
||
}catch(e){}O.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return O.hasData(a)||N.hasData(a)},data:function(a,b,c){return O.access(a,b,c)},removeData:function(a,b){O.remove(a,b)},_data:function(a,b,c){return N.access(a,b,c)},_removeData:function(a,b){N.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=O.get(f),1===f.nodeType&&!N.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),R(f,d,e[d])));N.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){O.set(this,a)}):K(this,function(b){var c,d;if(f&&void 0===b){if(c=O.get(f,a)||O.get(f,a.replace(Q,"-$&").toLowerCase()),void 0!==c)return c;if(d=n.camelCase(a),c=O.get(f,d),void 0!==c)return c;if(c=R(f,d,void 0),void 0!==c)return c}else d=n.camelCase(a),this.each(function(){var c=O.get(this,d);O.set(this,d,b),a.indexOf("-")>-1&&void 0!==c&&O.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){O.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=N.get(a,b),c&&(!d||n.isArray(c)?d=N.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return N.get(a,c)||N.access(a,c,{empty:n.Callbacks("once memory").add(function(){N.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=N.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function W(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&T.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var X=/^(?:checkbox|radio)$/i,Y=/<([\w:-]+)/,Z=/^$|\/(?:java|ecma)script/i,$={option:[1,"<select multiple='multiple'>","</select>"],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,"",""]};$.optgroup=$.option,$.tbody=$.tfoot=$.colgroup=$.caption=$.thead,$.th=$.td;function _(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function aa(a,b){for(var c=0,d=a.length;d>c;c++)N.set(a[c],"globalEval",!b||N.get(b[c],"globalEval"))}var ba=/<|&#?\w+;/;function ca(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],o=0,p=a.length;p>o;o++)if(f=a[o],f||0===f)if("object"===n.type(f))n.merge(m,f.nodeType?[f]:f);else if(ba.test(f)){g=g||l.appendChild(b.createElement("div")),h=(Y.exec(f)||["",""])[1].toLowerCase(),i=$[h]||$._default,g.innerHTML=i[1]+n.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;n.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",o=0;while(f=m[o++])if(d&&n.inArray(f,d)>-1)e&&e.push(f);else if(j=n.contains(f.ownerDocument,f),g=_(l.appendChild(f),"script"),j&&aa(g),c){k=0;while(f=g[k++])Z.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var da=/^key/,ea=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,fa=/^([^.]*)(?:\.(.+)|)/;function ga(){return!0}function ha(){return!1}function ia(){try{return d.activeElement}catch(a){}}function ja(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ja(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ha;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=N.hasData(a)&&N.get(a);if(r&&(i=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=fa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&N.remove(a,"handle events")}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(N.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!==this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||d,e=c.documentElement,f=c.body,a.pageX=b.clientX+(e&&e.scrollLeft||f&&f.scrollLeft||0)-(e&&e.clientLeft||f&&f.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||f&&f.scrollTop||0)-(e&&e.clientTop||f&&f.clientTop||0)),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ea.test(f)?this.mouseHooks:da.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=d),3===a.target.nodeType&&(a.target=a.target.parentNode),h.filter?h.filter(a,g):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==ia()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===ia()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ga:ha):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:ha,isPropagationStopped:ha,isImmediatePropagationStopped:ha,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ga,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ga,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ga,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),n.fn.extend({on:function(a,b,c,d){return ja(this,a,b,c,d)},one:function(a,b,c,d){return ja(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=ha),this.each(function(){n.event.remove(this,a,c,b)})}});var ka=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,la=/<script|<style|<link/i,ma=/checked\s*(?:[^=]|=\s*.checked.)/i,na=/^true\/(.*)/,oa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function pa(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function qa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function ra(a){var b=na.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function sa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(N.hasData(a)&&(f=N.access(a),g=N.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}O.hasData(a)&&(h=O.access(a),i=n.extend({},h),O.set(b,i))}}function ta(a,b){var c=b.nodeName.toLowerCase();"input"===c&&X.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function ua(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&ma.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),ua(f,b,c,d)});if(o&&(e=ca(b,a[0].ownerDocument,!1,a,d),g=e.firstChild,1===e.childNodes.length&&(e=g),g||d)){for(h=n.map(_(e,"script"),qa),i=h.length;o>m;m++)j=e,m!==p&&(j=n.clone(j,!0,!0),i&&n.merge(h,_(j,"script"))),c.call(a[m],j,m);if(i)for(k=h[h.length-1].ownerDocument,n.map(h,ra),m=0;i>m;m++)j=h[m],Z.test(j.type||"")&&!N.access(j,"globalEval")&&n.contains(k,j)&&(j.src?n._evalUrl&&n._evalUrl(j.src):n.globalEval(j.textContent.replace(oa,"")))}return a}function va(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(_(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&aa(_(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(ka,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=_(h),f=_(a),d=0,e=f.length;e>d;d++)ta(f[d],g[d]);if(b)if(c)for(f=f||_(a),g=g||_(h),d=0,e=f.length;e>d;d++)sa(f[d],g[d]);else sa(a,h);return g=_(h,"script"),g.length>0&&aa(g,!i&&_(a,"script")),h},cleanData:function(a){for(var b,c,d,e=n.event.special,f=0;void 0!==(c=a[f]);f++)if(L(c)){if(b=c[N.expando]){if(b.events)for(d in b.events)e[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);c[N.expando]=void 0}c[O.expando]&&(c[O.expando]=void 0)}}}),n.fn.extend({domManip:ua,detach:function(a){return va(this,a,!0)},remove:function(a){return va(this,a)},text:function(a){return K(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.appendChild(a)}})},prepend:function(){return ua(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=pa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return ua(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(_(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return K(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!la.test(a)&&!$[(Y.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(_(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return ua(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(_(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),f=e.length-1,h=0;f>=h;h++)c=h===f?this:this.clone(!0),n(e[h])[b](c),g.apply(d,c.get());return this.pushStack(d)}});var wa,xa={HTML:"block",BODY:"block"};function ya(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function za(a){var b=d,c=xa[a];return c||(c=ya(a,b),"none"!==c&&c||(wa=(wa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=wa[0].contentDocument,b.write(),b.close(),c=ya(a,b),wa.detach()),xa[a]=c),c}var Aa=/^margin/,Ba=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ca=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Ea=d.documentElement;!function(){var b,c,e,f,g=d.createElement("div"),h=d.createElement("div");if(h.style){h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h);function i(){h.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",h.innerHTML="",Ea.appendChild(g);var d=a.getComputedStyle(h);b="1%"!==d.top,f="2px"===d.marginLeft,c="4px"===d.width,h.style.marginRight="50%",e="4px"===d.marginRight,Ea.removeChild(g)}n.extend(l,{pixelPosition:function(){return i(),b},boxSizingReliable:function(){return null==c&&i(),c},pixelMarginRight:function(){return null==c&&i(),e},reliableMarginLeft:function(){return null==c&&i(),f},reliableMarginRight:function(){var b,c=h.appendChild(d.createElement("div"));return c.style.cssText=h.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",h.style.width="1px",Ea.appendChild(g),b=!parseFloat(a.getComputedStyle(c).marginRight),Ea.removeChild(g),h.removeChild(c),b}})}}();function Fa(a,b,c){var d,e,f,g,h=a.style;return c=c||Ca(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Ba.test(g)&&Aa.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0!==g?g+"":g}function Ga(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Ha=/^(none|table(?!-c[ea]).+)/,Ia={position:"absolute",visibility:"hidden",display:"block"},Ja={letterSpacing:"0",fontWeight:"400"},Ka=["Webkit","O","Moz","ms"],La=d.createElement("div").style;function Ma(a){if(a in La)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ka.length;while(c--)if(a=Ka[c]+b,a in La)return a}function Na(a,b,c){var d=T.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Oa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Pa(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ca(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Fa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ba.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Oa(a,b,c||(g?"border":"content"),d,f)+"px"}function Qa(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=N.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=N.access(d,"olddisplay",za(d.nodeName)))):(e=V(d),"none"===c&&e||N.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Fa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=T.exec(c))&&e[1]&&(c=W(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Ma(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Fa(a,b,d)),"normal"===e&&b in Ja&&(e=Ja[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Ha.test(n.css(a,"display"))&&0===a.offsetWidth?Da(a,Ia,function(){return Pa(a,b,d)}):Pa(a,b,d):void 0},set:function(a,c,d){var e,f=d&&Ca(a),g=d&&Oa(a,b,d,"border-box"===n.css(a,"boxSizing",!1,f),f);return g&&(e=T.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=n.css(a,b)),Na(a,c,g)}}}),n.cssHooks.marginLeft=Ga(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Fa(a,"marginLeft"))||a.getBoundingClientRect().left-Da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),n.cssHooks.marginRight=Ga(l.reliableMarginRight,function(a,b){return b?Da(a,{display:"inline-block"},Fa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Aa.test(a)||(n.cssHooks[a+b].set=Na)}),n.fn.extend({css:function(a,b){return K(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ca(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Qa(this,!0)},hide:function(){return Qa(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function Ra(a,b,c,d,e){return new Ra.prototype.init(a,b,c,d,e)}n.Tween=Ra,Ra.prototype={constructor:Ra,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ra.propHooks[this.prop];return a&&a.get?a.get(this):Ra.propHooks._default.get(this)},run:function(a){var b,c=Ra.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ra.propHooks._default.set(this),this}},Ra.prototype.init.prototype=Ra.prototype,Ra.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},Ra.propHooks.scrollTop=Ra.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=Ra.prototype.init,n.fx.step={};var Sa,Ta,Ua=/^(?:toggle|show|hide)$/,Va=/queueHooks$/;function Wa(){return a.setTimeout(function(){Sa=void 0}),Sa=n.now()}function Xa(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=U[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ya(a,b,c){for(var d,e=(_a.tweeners[b]||[]).concat(_a.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Za(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&V(a),q=N.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?N.get(a,"olddisplay")||za(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Ua.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?za(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=N.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;N.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ya(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function $a(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function _a(a,b,c){var d,e,f=0,g=_a.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Sa||Wa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:Sa||Wa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for($a(k,j.opts.specialEasing);g>f;f++)if(d=_a.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,Ya,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(_a,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return W(c.elem,a,T.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],_a.tweeners[c]=_a.tweeners[c]||[],_a.tweeners[c].unshift(b)},prefilters:[Za],prefilter:function(a,b){b?_a.prefilters.unshift(a):_a.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=_a(this,n.extend({},a),f);(e||N.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=N.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Va.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=N.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Xa(b,!0),a,d,e)}}),n.each({slideDown:Xa("show"),slideUp:Xa("hide"),slideToggle:Xa("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Sa=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Sa=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ta||(Ta=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(Ta),Ta=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",l.checkOn=""!==a.value,l.optSelected=c.selected,b.disabled=!0,l.optDisabled=!c.disabled,a=d.createElement("input"),a.value="t",a.type="radio",l.radioValue="t"===a.value}();var ab,bb=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return K(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ab:void 0)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)}}),ab={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=bb[b]||n.find.attr;bb[b]=function(a,b,d){var e,f;return d||(f=bb[b],bb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,bb[b]=f),e}});var cb=/^(?:input|select|textarea|button)$/i,db=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return K(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),
|
||
void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):cb.test(a.nodeName)||db.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var eb=/[\t\r\n\f]/g;function fb(a){return a.getAttribute&&a.getAttribute("class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,fb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,fb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=fb(c),d=1===c.nodeType&&(" "+e+" ").replace(eb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,fb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=fb(this),b&&N.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":N.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+fb(c)+" ").replace(eb," ").indexOf(b)>-1)return!0;return!1}});var gb=/\r/g,hb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(gb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(hb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(n.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var ib=/^(?:focusinfocus|focusoutblur)$/;n.extend(n.event,{trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!ib.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),l=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},f||!o.trigger||o.trigger.apply(e,c)!==!1)){if(!f&&!o.noBubble&&!n.isWindow(e)){for(j=o.delegateType||q,ib.test(j+q)||(h=h.parentNode);h;h=h.parentNode)p.push(h),i=h;i===(e.ownerDocument||d)&&p.push(i.defaultView||i.parentWindow||a)}g=0;while((h=p[g++])&&!b.isPropagationStopped())b.type=g>1?j:o.bindType||q,m=(N.get(h,"events")||{})[b.type]&&N.get(h,"handle"),m&&m.apply(h,c),m=l&&h[l],m&&m.apply&&L(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=q,f||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!L(e)||l&&n.isFunction(e[q])&&!n.isWindow(e)&&(i=e[l],i&&(e[l]=null),n.event.triggered=q,e[q](),n.event.triggered=void 0,i&&(e[l]=i)),b.result}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b)}}),n.fn.extend({trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),l.focusin="onfocusin"in a,l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=N.access(d,b);e||d.addEventListener(a,c,!0),N.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=N.access(d,b)-1;e?N.access(d,b,e):(d.removeEventListener(a,c,!0),N.remove(d,b))}}});var jb=a.location,kb=n.now(),lb=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var mb=/#.*$/,nb=/([?&])_=[^&]*/,ob=/^(.*?):[ \t]*([^\r\n]*)$/gm,pb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,qb=/^(?:GET|HEAD)$/,rb=/^\/\//,sb={},tb={},ub="*/".concat("*"),vb=d.createElement("a");vb.href=jb.href;function wb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function xb(a,b,c,d){var e={},f=a===tb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function yb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function zb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Ab(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:jb.href,type:"GET",isLocal:pb.test(jb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ub,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":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?yb(yb(a,n.ajaxSettings),b):yb(n.ajaxSettings,a)},ajaxPrefilter:wb(sb),ajaxTransport:wb(tb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m=n.ajaxSetup({},c),o=m.context||m,p=m.context&&(o.nodeType||o.jquery)?n(o):n.event,q=n.Deferred(),r=n.Callbacks("once memory"),s=m.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,getResponseHeader:function(a){var b;if(2===v){if(!h){h={};while(b=ob.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===v?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return v||(a=u[c]=u[c]||a,t[a]=b),this},overrideMimeType:function(a){return v||(m.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>v)for(b in a)s[b]=[s[b],a[b]];else x.always(a[x.status]);return this},abort:function(a){var b=a||w;return e&&e.abort(b),z(0,b),this}};if(q.promise(x).complete=r.add,x.success=x.done,x.error=x.fail,m.url=((b||m.url||jb.href)+"").replace(mb,"").replace(rb,jb.protocol+"//"),m.type=c.method||c.type||m.method||m.type,m.dataTypes=n.trim(m.dataType||"*").toLowerCase().match(G)||[""],null==m.crossDomain){j=d.createElement("a");try{j.href=m.url,j.href=j.href,m.crossDomain=vb.protocol+"//"+vb.host!=j.protocol+"//"+j.host}catch(y){m.crossDomain=!0}}if(m.data&&m.processData&&"string"!=typeof m.data&&(m.data=n.param(m.data,m.traditional)),xb(sb,m,c,x),2===v)return x;k=n.event&&m.global,k&&0===n.active++&&n.event.trigger("ajaxStart"),m.type=m.type.toUpperCase(),m.hasContent=!qb.test(m.type),f=m.url,m.hasContent||(m.data&&(f=m.url+=(lb.test(f)?"&":"?")+m.data,delete m.data),m.cache===!1&&(m.url=nb.test(f)?f.replace(nb,"$1_="+kb++):f+(lb.test(f)?"&":"?")+"_="+kb++)),m.ifModified&&(n.lastModified[f]&&x.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&x.setRequestHeader("If-None-Match",n.etag[f])),(m.data&&m.hasContent&&m.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",m.contentType),x.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+ub+"; q=0.01":""):m.accepts["*"]);for(l in m.headers)x.setRequestHeader(l,m.headers[l]);if(m.beforeSend&&(m.beforeSend.call(o,x,m)===!1||2===v))return x.abort();w="abort";for(l in{success:1,error:1,complete:1})x[l](m[l]);if(e=xb(tb,m,c,x)){if(x.readyState=1,k&&p.trigger("ajaxSend",[x,m]),2===v)return x;m.async&&m.timeout>0&&(i=a.setTimeout(function(){x.abort("timeout")},m.timeout));try{v=1,e.send(t,z)}catch(y){if(!(2>v))throw y;z(-1,y)}}else z(-1,"No Transport");function z(b,c,d,h){var j,l,t,u,w,y=c;2!==v&&(v=2,i&&a.clearTimeout(i),e=void 0,g=h||"",x.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(u=zb(m,x,d)),u=Ab(m,u,x,j),j?(m.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(n.lastModified[f]=w),w=x.getResponseHeader("etag"),w&&(n.etag[f]=w)),204===b||"HEAD"===m.type?y="nocontent":304===b?y="notmodified":(y=u.state,l=u.data,t=u.error,j=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),x.status=b,x.statusText=(c||y)+"",j?q.resolveWith(o,[l,y,x]):q.rejectWith(o,[x,y,t]),x.statusCode(s),s=void 0,k&&p.trigger(j?"ajaxSuccess":"ajaxError",[x,m,j?l:t]),r.fireWith(o,[x,y]),k&&(p.trigger("ajaxComplete",[x,m]),--n.active||n.event.trigger("ajaxStop")))}return x},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return!n.expr.filters.visible(a)},n.expr.filters.visible=function(a){return a.offsetWidth>0||a.offsetHeight>0||a.getClientRects().length>0};var Bb=/%20/g,Cb=/\[\]$/,Db=/\r?\n/g,Eb=/^(?:submit|button|image|reset|file)$/i,Fb=/^(?:input|select|textarea|keygen)/i;function Gb(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Cb.test(a)?d(a,e):Gb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Gb(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Gb(c,a[c],b,e);return d.join("&").replace(Bb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Fb.test(this.nodeName)&&!Eb.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Db,"\r\n")}}):{name:b.name,value:c.replace(Db,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Hb={0:200,1223:204},Ib=n.ajaxSettings.xhr();l.cors=!!Ib&&"withCredentials"in Ib,l.ajax=Ib=!!Ib,n.ajaxTransport(function(b){var c,d;return l.cors||Ib&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Hb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=n("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Jb=[],Kb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Jb.pop()||n.expando+"_"+kb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Kb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Kb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Kb,"$1"+e):b.jsonp!==!1&&(b.url+=(lb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Jb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ca([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var Lb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Lb)return Lb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function Mb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(e=d.getBoundingClientRect(),c=Mb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ea})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;n.fn[a]=function(d){return K(this,function(a,d,e){var f=Mb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ga(l.pixelPosition,function(a,c){return c?(c=Fa(a,b),Ba.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return K(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},size:function(){return this.length}}),n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Nb=a.jQuery,Ob=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Ob),b&&a.jQuery===n&&(a.jQuery=Nb),n},b||(a.jQuery=a.$=n),n});
|
||
|
||
/*! jQuery Migrate v1.4.0 | (c) jQuery Foundation and other contributors | jquery.org/license */
|
||
"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(a,b,c){function d(c){var d=b.console;f[c]||(f[c]=!0,a.migrateWarnings.push(c),d&&d.warn&&!a.migrateMute&&(d.warn("JQMIGRATE: "+c),a.migrateTrace&&d.trace&&d.trace()))}function e(b,c,e,f){if(Object.defineProperty)try{return void Object.defineProperty(b,c,{configurable:!0,enumerable:!0,get:function(){return d(f),e},set:function(a){d(f),e=a}})}catch(g){}a._definePropertyBroken=!0,b[c]=e}a.migrateVersion="1.4.0";var f={};a.migrateWarnings=[],b.console&&b.console.log&&b.console.log("JQMIGRATE: Migrate is installed"+(a.migrateMute?"":" with logging active")+", version "+a.migrateVersion),a.migrateTrace===c&&(a.migrateTrace=!0),a.migrateReset=function(){f={},a.migrateWarnings.length=0},"BackCompat"===document.compatMode&&d("jQuery is not compatible with Quirks Mode");var g=a("<input/>",{size:1}).attr("size")&&a.attrFn,h=a.attr,i=a.attrHooks.value&&a.attrHooks.value.get||function(){return null},j=a.attrHooks.value&&a.attrHooks.value.set||function(){return c},k=/^(?:input|button)$/i,l=/^[238]$/,m=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,n=/^(?:checked|selected)$/i;e(a,"attrFn",g||{},"jQuery.attrFn is deprecated"),a.attr=function(b,e,f,i){var j=e.toLowerCase(),o=b&&b.nodeType;return i&&(h.length<4&&d("jQuery.fn.attr( props, pass ) is deprecated"),b&&!l.test(o)&&(g?e in g:a.isFunction(a.fn[e])))?a(b)[e](f):("type"===e&&f!==c&&k.test(b.nodeName)&&b.parentNode&&d("Can't change the 'type' of an input or button in IE 6/7/8"),!a.attrHooks[j]&&m.test(j)&&(a.attrHooks[j]={get:function(b,d){var e,f=a.prop(b,d);return f===!0||"boolean"!=typeof f&&(e=b.getAttributeNode(d))&&e.nodeValue!==!1?d.toLowerCase():c},set:function(b,c,d){var e;return c===!1?a.removeAttr(b,d):(e=a.propFix[d]||d,e in b&&(b[e]=!0),b.setAttribute(d,d.toLowerCase())),d}},n.test(j)&&d("jQuery.fn.attr('"+j+"') might use property instead of attribute")),h.call(a,b,e,f))},a.attrHooks.value={get:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?i.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value') no longer gets properties"),b in a?a.value:null)},set:function(a,b){var c=(a.nodeName||"").toLowerCase();return"button"===c?j.apply(this,arguments):("input"!==c&&"option"!==c&&d("jQuery.fn.attr('value', val) no longer sets properties"),void(a.value=b))}};var o,p,q=a.fn.init,r=a.parseJSON,s=/^\s*</,t=/\[\s*\w+\s*[~|^$*]?=\s*(?![\s'"])[^#\]]*#/,u=/^([^<]*)(<[\w\W]+>)([^>]*)$/;a.fn.init=function(b,e,f){var g,h;return b&&"string"==typeof b&&!a.isPlainObject(e)&&(g=u.exec(a.trim(b)))&&g[0]&&(s.test(b)||d("$(html) HTML strings must start with '<' character"),g[3]&&d("$(html) HTML text after last tag is ignored"),"#"===g[0].charAt(0)&&(d("HTML string cannot start with a '#' character"),a.error("JQMIGRATE: Invalid selector string (XSS)")),e&&e.context&&(e=e.context),a.parseHTML)?q.call(this,a.parseHTML(g[2],e&&e.ownerDocument||e||document,!0),e,f):("#"===b?(d("jQuery( '#' ) is not a valid selector"),b=[]):t.test(b)&&d("Attribute selectors with '#' must be quoted: '"+b+"'"),h=q.apply(this,arguments),b&&b.selector!==c?(h.selector=b.selector,h.context=b.context):(h.selector="string"==typeof b?b:"",b&&(h.context=b.nodeType?b:e||document)),h)},a.fn.init.prototype=a.fn,a.parseJSON=function(a){return a?r.apply(this,arguments):(d("jQuery.parseJSON requires a valid JSON string"),null)},a.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a.browser||(o=a.uaMatch(navigator.userAgent),p={},o.browser&&(p[o.browser]=!0,p.version=o.version),p.chrome?p.webkit=!0:p.webkit&&(p.safari=!0),a.browser=p),e(a,"browser",a.browser,"jQuery.browser is deprecated"),a.boxModel=a.support.boxModel="CSS1Compat"===document.compatMode,e(a,"boxModel",a.boxModel,"jQuery.boxModel is deprecated"),e(a.support,"boxModel",a.support.boxModel,"jQuery.support.boxModel is deprecated"),a.sub=function(){function b(a,c){return new b.fn.init(a,c)}a.extend(!0,b,this),b.superclass=this,b.fn=b.prototype=this(),b.fn.constructor=b,b.sub=this.sub,b.fn.init=function(d,e){var f=a.fn.init.call(this,d,e,c);return f instanceof b?f:b(f)},b.fn.init.prototype=b.fn;var c=b(document);return d("jQuery.sub() is deprecated"),b},a.fn.size=function(){return d("jQuery.fn.size() is deprecated; use the .length property"),this.length};var v=!1;a.swap&&a.each(["height","width","reliableMarginRight"],function(b,c){var d=a.cssHooks[c]&&a.cssHooks[c].get;d&&(a.cssHooks[c].get=function(){var a;return v=!0,a=d.apply(this,arguments),v=!1,a})}),a.swap=function(a,b,c,e){var f,g,h={};v||d("jQuery.swap() is undocumented and deprecated");for(g in b)h[g]=a.style[g],a.style[g]=b[g];f=c.apply(a,e||[]);for(g in b)a.style[g]=h[g];return f},a.ajaxSetup({converters:{"text json":a.parseJSON}});var w=a.fn.data;a.fn.data=function(b){var e,f,g=this[0];return!g||"events"!==b||1!==arguments.length||(e=a.data(g,b),f=a._data(g,b),e!==c&&e!==f||f===c)?w.apply(this,arguments):(d("Use of jQuery.fn.data('events') is deprecated"),f)};var x=/\/(java|ecma)script/i;a.clean||(a.clean=function(b,c,e,f){c=c||document,c=!c.nodeType&&c[0]||c,c=c.ownerDocument||c,d("jQuery.clean() is deprecated");var g,h,i,j,k=[];if(a.merge(k,a.buildFragment(b,c).childNodes),e)for(i=function(a){return!a.type||x.test(a.type)?f?f.push(a.parentNode?a.parentNode.removeChild(a):a):e.appendChild(a):void 0},g=0;null!=(h=k[g]);g++)a.nodeName(h,"script")&&i(h)||(e.appendChild(h),"undefined"!=typeof h.getElementsByTagName&&(j=a.grep(a.merge([],h.getElementsByTagName("script")),i),k.splice.apply(k,[g+1,0].concat(j)),g+=j.length));return k});var y=a.event.add,z=a.event.remove,A=a.event.trigger,B=a.fn.toggle,C=a.fn.live,D=a.fn.die,E=a.fn.load,F="ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",G=new RegExp("\\b(?:"+F+")\\b"),H=/(?:^|\s)hover(\.\S+|)\b/,I=function(b){return"string"!=typeof b||a.event.special.hover?b:(H.test(b)&&d("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'"),b&&b.replace(H,"mouseenter$1 mouseleave$1"))};a.event.props&&"attrChange"!==a.event.props[0]&&a.event.props.unshift("attrChange","attrName","relatedNode","srcElement"),a.event.dispatch&&e(a.event,"handle",a.event.dispatch,"jQuery.event.handle is undocumented and deprecated"),a.event.add=function(a,b,c,e,f){a!==document&&G.test(b)&&d("AJAX events should be attached to document: "+b),y.call(this,a,I(b||""),c,e,f)},a.event.remove=function(a,b,c,d,e){z.call(this,a,I(b)||"",c,d,e)},a.each(["load","unload","error"],function(b,c){a.fn[c]=function(){var a=Array.prototype.slice.call(arguments,0);return"load"===c&&"string"==typeof a[0]?E.apply(this,a):(d("jQuery.fn."+c+"() is deprecated"),a.splice(0,0,c),arguments.length?this.bind.apply(this,a):(this.triggerHandler.apply(this,a),this))}}),a.fn.toggle=function(b,c){if(!a.isFunction(b)||!a.isFunction(c))return B.apply(this,arguments);d("jQuery.fn.toggle(handler, handler...) is deprecated");var e=arguments,f=b.guid||a.guid++,g=0,h=function(c){var d=(a._data(this,"lastToggle"+b.guid)||0)%g;return a._data(this,"lastToggle"+b.guid,d+1),c.preventDefault(),e[d].apply(this,arguments)||!1};for(h.guid=f;g<e.length;)e[g++].guid=f;return this.click(h)},a.fn.live=function(b,c,e){return d("jQuery.fn.live() is deprecated"),C?C.apply(this,arguments):(a(this.context).on(b,this.selector,c,e),this)},a.fn.die=function(b,c){return d("jQuery.fn.die() is deprecated"),D?D.apply(this,arguments):(a(this.context).off(b,this.selector||"**",c),this)},a.event.trigger=function(a,b,c,e){return c||G.test(a)||d("Global events are undocumented and deprecated"),A.call(this,a,b,c||document,e)},a.each(F.split("|"),function(b,c){a.event.special[c]={setup:function(){var b=this;return b!==document&&(a.event.add(document,c+"."+a.guid,function(){a.event.trigger(c,Array.prototype.slice.call(arguments,1),b,!0)}),a._data(this,c,a.guid++)),!1},teardown:function(){return this!==document&&a.event.remove(document,c+"."+a._data(this,c)),!1}}}),a.event.special.ready={setup:function(){this===document&&d("'ready' event is deprecated")}};var J=a.fn.andSelf||a.fn.addBack,K=a.fn.find;if(a.fn.andSelf=function(){return d("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()"),J.apply(this,arguments)},a.fn.find=function(a){var b=K.apply(this,arguments);return b.context=this.context,b.selector=this.selector?this.selector+" "+a:a,b},a.Callbacks){var L=a.Deferred,M=[["resolve","done",a.Callbacks("once memory"),a.Callbacks("once memory"),"resolved"],["reject","fail",a.Callbacks("once memory"),a.Callbacks("once memory"),"rejected"],["notify","progress",a.Callbacks("memory"),a.Callbacks("memory")]];a.Deferred=function(b){var c=L(),e=c.promise();return c.pipe=e.pipe=function(){var b=arguments;return d("deferred.pipe() is deprecated"),a.Deferred(function(d){a.each(M,function(f,g){var h=a.isFunction(b[f])&&b[f];c[g[1]](function(){var b=h&&h.apply(this,arguments);b&&a.isFunction(b.promise)?b.promise().done(d.resolve).fail(d.reject).progress(d.notify):d[g[0]+"With"](this===e?d.promise():this,h?[b]:arguments)})}),b=null}).promise()},c.isResolved=function(){return d("deferred.isResolved is deprecated"),"resolved"===c.state()},c.isRejected=function(){return d("deferred.isRejected is deprecated"),"rejected"===c.state()},b&&b.call(c,c),c}}}(jQuery,window);
|
||
/*! jQuery UI - v1.10.0 - 2013-01-18
|
||
* http://jqueryui.com
|
||
* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.menu.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js, jquery.ui.effect.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js
|
||
* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */
|
||
|
||
(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.10.0",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)}})})(jQuery);(function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a={},f=t.split(".")[0];t=t.split(".")[1],i=f+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[f]=e[f]||{},s=e[f][t],o=e[f][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,r){if(!e.isFunction(r)){a[t]=r;return}a[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},i=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=i,s=r.apply(this,arguments),this._super=t,this._superApply=n,s}}()}),o.prototype=e.widget.extend(u,{widgetEventPrefix:s?u.widgetEventPrefix:t},a,{constructor:o,namespace:f,widgetName:t,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName||n;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():e.data(this,s,new i(o,this))}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n,r){var i,s=this;typeof t!="boolean"&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){if(!t&&(s.options.disabled===!0||e(this).hasClass("ui-state-disabled")))return;return(typeof o=="string"?s[o]:o).apply(s,arguments)}typeof o!="string"&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^(\w+)\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.delegate(l,f,u):n.bind(f,u)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&e.effects.effect[u]?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}})})(jQuery);(function(e,t){var n=!1;e(document).mouseup(function(){n=!1}),e.widget("ui.mouse",{version:"1.10.0",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})(jQuery);(function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}function d(t){var n=t[0];return n.nodeType===9?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(n)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:n.preventDefault?{width:0,height:0,offset:{top:n.pageY,left:n.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,v,m,g,y,b=e(t.of),w=e.position.getWithinInfo(t.within),E=e.position.getScrollInfo(w),S=(t.collision||"flip").split(" "),x={};return y=d(b),b[0].preventDefault&&(t.at="left top"),l=y.width,v=y.height,m=y.offset,g=e.extend({},m),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),x[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),S.length===1&&(S[1]=S[0]),t.at[0]==="right"?g.left+=l:t.at[0]==="center"&&(g.left+=l/2),t.at[1]==="bottom"?g.top+=v:t.at[1]==="center"&&(g.top+=v/2),n=h(x.at,l,v),g.left+=n[0],g.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),d=p(this,"marginLeft"),y=p(this,"marginTop"),T=f+d+p(this,"marginRight")+E.width,N=c+y+p(this,"marginBottom")+E.height,C=e.extend({},g),k=h(x.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:d,marginTop:y},e.each(["left","top"],function(r,i){e.ui.position[S[r]]&&e.ui.position[S[r]][i](C,{targetWidth:l,targetHeight:v,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:w,elem:a})}),t.using&&(u=function(e){var n=m.left-C.left,s=n+l-f,o=m.top-C.top,u=o+v-c,h={target:{element:b,left:m.left,top:m.top,width:l,height:v},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),v<c&&i(o+u)<v&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}()})(jQuery);(function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.10.0",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){this.options.helper==="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.position}if(!this.options.axis||this.options.axis!=="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!=="x")this.helper[0].style.top=this.position.top+"px";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n,r=this,i=!1,s=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),n=this.element[0];while(n&&(n=n.parentNode))n===document&&(i=!0);return!i&&this.options.helper==="original"?!1:(this.options.revert==="invalid"&&!s||this.options.revert==="valid"&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){r._trigger("stop",t)!==!1&&r._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1)},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper==="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo==="parent"?this.element[0].parentNode:n.appendTo),r[0]!==this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition==="absolute"&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()==="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition==="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,n,r,i=this.options;i.containment==="parent"&&(i.containment=this.helper[0].parentNode);if(i.containment==="document"||i.containment==="window")this.containment=[i.containment==="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,i.containment==="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(i.containment==="document"?0:e(window).scrollLeft())+e(i.containment==="document"?document:window).width()-this.helperProportions.width-this.margins.left,(i.containment==="document"?0:e(window).scrollTop())+(e(i.containment==="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(i.containment)&&i.containment.constructor!==Array){n=e(i.containment),r=n[0];if(!r)return;t=e(r).css("overflow")!=="hidden",this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(t?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else i.containment.constructor===Array&&(this.containment=i.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t==="absolute"?1:-1,i=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():s?0:i.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*r}},_generatePosition:function(t){var n,r,i,s,o=this.options,u=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(u[0].tagName),f=t.pageX,l=t.pageY;return this.originalPosition&&(this.containment&&(this.relative_container?(r=this.relative_container.offset(),n=[this.containment[0]+r.left,this.containment[1]+r.top,this.containment[2]+r.left,this.containment[3]+r.top]):n=this.containment,t.pageX-this.offset.click.left<n[0]&&(f=n[0]+this.offset.click.left),t.pageY-this.offset.click.top<n[1]&&(l=n[1]+this.offset.click.top),t.pageX-this.offset.click.left>n[2]&&(f=n[2]+this.offset.click.left),t.pageY-this.offset.click.top>n[3]&&(l=n[3]+this.offset.click.top)),o.grid&&(i=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=n?i-this.offset.click.top>=n[1]||i-this.offset.click.top>n[3]?i:i-this.offset.click.top>=n[1]?i-o.grid[1]:i+o.grid[1]:i,s=o.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,f=n?s-this.offset.click.left>=n[0]||s-this.offset.click.left>n[2]?s:s-this.offset.click.left>=n[0]?s-o.grid[0]:s+o.grid[0]:s)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():a?0:u.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():a?0:u.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!==this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r]),t==="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n){var r=e(this).data("ui-draggable"),i=r.options,s=e.extend({},n,{item:r.element});r.sortables=[],e(i.connectToSortable).each(function(){var n=e.data(this,"ui-sortable");n&&!n.options.disabled&&(r.sortables.push({instance:n,shouldRevert:n.options.revert}),n.refreshPositions(),n._trigger("activate",t,s))})},stop:function(t,n){var r=e(this).data("ui-draggable"),i=e.extend({},n,{item:r.element});e.each(r.sortables,function(){this.instance.isOver?(this.instance.isOver=0,r.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,r.options.helper==="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,i))})},drag:function(t,n){var r=e(this).data("ui-draggable"),i=this;e.each(r.sortables,function(){var s=!1,o=this;this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(s=!0,e.each(r.sortables,function(){return this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this!==o&&this.instance._intersectsWith(this.instance.containerCache)&&e.ui.contains(o.instance.element[0],this.instance.element[0])&&(s=!1),s})),s?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(i).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return n.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=r.offset.click.top,this.instance.offset.click.left=r.offset.click.left,this.instance.offset.parent.left-=r.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=r.offset.parent.top-this.instance.offset.parent.top,r._trigger("toSortable",t),r.dropped=this.instance.element,r.currentItem=r.element,this.instance.fromOutside=r),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),r._trigger("fromSortable",t),r.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(){var t=e("body"),n=e(this).data("ui-draggable").options;t.css("cursor")&&(n._cursor=t.css("cursor")),t.css("cursor",n.cursor)},stop:function(){var t=e(this).data("ui-draggable").options;t._cursor&&e("body").css("cursor",t._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n){var r=e(n.helper),i=e(this).data("ui-draggable").options;r.css("opacity")&&(i._opacity=r.css("opacity")),r.css("opacity",i.opacity)},stop:function(t,n){var r=e(this).data("ui-draggable").options;r._opacity&&e(n.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(){var t=e(this).data("ui-draggable");t.scrollParent[0]!==document&&t.scrollParent[0].tagName!=="HTML"&&(t.overflowOffset=t.scrollParent.offset())},drag:function(t){var n=e(this).data("ui-draggable"),r=n.options,i=!1;if(n.scrollParent[0]!==document&&n.scrollParent[0].tagName!=="HTML"){if(!r.axis||r.axis!=="x")n.overflowOffset.top+n.scrollParent[0].offsetHeight-t.pageY<r.scrollSensitivity?n.scrollParent[0].scrollTop=i=n.scrollParent[0].scrollTop+r.scrollSpeed:t.pageY-n.overflowOffset.top<r.scrollSensitivity&&(n.scrollParent[0].scrollTop=i=n.scrollParent[0].scrollTop-r.scrollSpeed);if(!r.axis||r.axis!=="y")n.overflowOffset.left+n.scrollParent[0].offsetWidth-t.pageX<r.scrollSensitivity?n.scrollParent[0].scrollLeft=i=n.scrollParent[0].scrollLeft+r.scrollSpeed:t.pageX-n.overflowOffset.left<r.scrollSensitivity&&(n.scrollParent[0].scrollLeft=i=n.scrollParent[0].scrollLeft-r.scrollSpeed)}else{if(!r.axis||r.axis!=="x")t.pageY-e(document).scrollTop()<r.scrollSensitivity?i=e(document).scrollTop(e(document).scrollTop()-r.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<r.scrollSensitivity&&(i=e(document).scrollTop(e(document).scrollTop()+r.scrollSpeed));if(!r.axis||r.axis!=="y")t.pageX-e(document).scrollLeft()<r.scrollSensitivity?i=e(document).scrollLeft(e(document).scrollLeft()-r.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<r.scrollSensitivity&&(i=e(document).scrollLeft(e(document).scrollLeft()+r.scrollSpeed))}i!==!1&&e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(n,t)}}),e.ui.plugin.add("draggable","snap",{start:function(){var t=e(this).data("ui-draggable"),n=t.options;t.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var n=e(this),r=n.offset();this!==t.element[0]&&t.snapElements.push({item:this,width:n.outerWidth(),height:n.outerHeight(),top:r.top,left:r.left})})},drag:function(t,n){var r,i,s,o,u,a,f,l,c,h,p=e(this).data("ui-draggable"),d=p.options,v=d.snapTolerance,m=n.offset.left,g=m+p.helperProportions.width,y=n.offset.top,b=y+p.helperProportions.height;for(c=p.snapElements.length-1;c>=0;c--){u=p.snapElements[c].left,a=u+p.snapElements[c].width,f=p.snapElements[c].top,l=f+p.snapElements[c].height;if(!(u-v<m&&m<a+v&&f-v<y&&y<l+v||u-v<m&&m<a+v&&f-v<b&&b<l+v||u-v<g&&g<a+v&&f-v<y&&y<l+v||u-v<g&&g<a+v&&f-v<b&&b<l+v)){p.snapElements[c].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=!1;continue}d.snapMode!=="inner"&&(r=Math.abs(f-b)<=v,i=Math.abs(l-y)<=v,s=Math.abs(u-g)<=v,o=Math.abs(a-m)<=v,r&&(n.position.top=p._convertPositionTo("relative",{top:f-p.helperProportions.height,left:0}).top-p.margins.top),i&&(n.position.top=p._convertPositionTo("relative",{top:l,left:0}).top-p.margins.top),s&&(n.position.left=p._convertPositionTo("relative",{top:0,left:u-p.helperProportions.width}).left-p.margins.left),o&&(n.position.left=p._convertPositionTo("relative",{top:0,left:a}).left-p.margins.left)),h=r||i||s||o,d.snapMode!=="outer"&&(r=Math.abs(f-y)<=v,i=Math.abs(l-b)<=v,s=Math.abs(u-m)<=v,o=Math.abs(a-g)<=v,r&&(n.position.top=p._convertPositionTo("relative",{top:f,left:0}).top-p.margins.top),i&&(n.position.top=p._convertPositionTo("relative",{top:l-p.helperProportions.height,left:0}).top-p.margins.top),s&&(n.position.left=p._convertPositionTo("relative",{top:0,left:u}).left-p.margins.left),o&&(n.position.left=p._convertPositionTo("relative",{top:0,left:a-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[c].snapping&&(r||i||s||o||h)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=r||i||s||o||h}}}),e.ui.plugin.add("draggable","stack",{start:function(){var t,n=e(this).data("ui-draggable").options,r=e.makeArray(e(n.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});if(!r.length)return;t=parseInt(r[0].style.zIndex,10)||0,e(r).each(function(e){this.style.zIndex=t+e}),this[0].style.zIndex=t+r.length}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n){var r=e(n.helper),i=e(this).data("ui-draggable").options;r.css("zIndex")&&(i._zIndex=r.css("zIndex")),r.css("zIndex",i.zIndex)},stop:function(t,n){var r=e(this).data("ui-draggable").options;r._zIndex&&e(n.helper).css("zIndex",r._zIndex)}})})(jQuery);(function(e,t){function n(e,t,n){return e>t&&e<t+n}e.widget("ui.droppable",{version:"1.10.0",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t=this.options,n=t.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(n)?n:function(e){return e.is(n)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){var t=0,n=e.ui.ddmanager.droppables[this.options.scope];for(;t<n.length;t++)n[t]===this&&n.splice(t,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,n){t==="accept"&&(this.accept=e.isFunction(n)?n:function(e){return e.is(n)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]===this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]===this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current,i=!1;return!r||(r.currentItem||r.element)[0]===this.element[0]?!1:(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"ui-droppable");if(t.options.greedy&&!t.options.disabled&&t.options.scope===r.options.scope&&t.accept.call(t.element[0],r.currentItem||r.element)&&e.ui.intersect(r,e.extend(t,{offset:t.element.offset()}),t.options.tolerance))return i=!0,!1}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(r)),this.element):!1)},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(e,t,r){if(!t.offset)return!1;var i,s,o=(e.positionAbs||e.position.absolute).left,u=o+e.helperProportions.width,a=(e.positionAbs||e.position.absolute).top,f=a+e.helperProportions.height,l=t.offset.left,c=l+t.proportions.width,h=t.offset.top,p=h+t.proportions.height;switch(r){case"fit":return l<=o&&u<=c&&h<=a&&f<=p;case"intersect":return l<o+e.helperProportions.width/2&&u-e.helperProportions.width/2<c&&h<a+e.helperProportions.height/2&&f-e.helperProportions.height/2<p;case"pointer":return i=(e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left,s=(e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top,n(s,h,t.proportions.height)&&n(i,l,t.proportions.width);case"touch":return(a>=h&&a<=p||f>=h&&f<=p||a<h&&f>p)&&(o>=l&&o<=c||u>=l&&u<=c||o<l&&u>c);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r,i,s=e.ui.ddmanager.droppables[t.options.scope]||[],o=n?n.type:null,u=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(r=0;r<s.length;r++){if(s[r].options.disabled||t&&!s[r].accept.call(s[r].element[0],t.currentItem||t.element))continue;for(i=0;i<u.length;i++)if(u[i]===s[r].element[0]){s[r].proportions.height=0;continue e}s[r].visible=s[r].element.css("display")!=="none";if(!s[r].visible)continue;o==="mousedown"&&s[r]._activate.call(s[r],n),s[r].offset=s[r].element.offset(),s[r].proportions={width:s[r].element[0].offsetWidth,height:s[r].element[0].offsetHeight}}},drop:function(t,n){var r=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,n))}),r},dragStart:function(t,n){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var r,i,s,o=e.ui.intersect(t,this,this.options.tolerance),u=!o&&this.isover?"isout":o&&!this.isover?"isover":null;if(!u)return;this.options.greedy&&(i=this.options.scope,s=this.element.parents(":data(ui-droppable)").filter(function(){return e.data(this,"ui-droppable").options.scope===i}),s.length&&(r=e.data(s[0],"ui-droppable"),r.greedyChild=u==="isover")),r&&u==="isover"&&(r.isover=!1,r.isout=!0,r._out.call(r,n)),this[u]=!0,this[u==="isout"?"isover":"isout"]=!1,this[u==="isover"?"_over":"_out"].call(this,n),r&&u==="isout"&&(r.isout=!1,r.isover=!0,r._over.call(r,n))})},dragStop:function(t,n){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}}})(jQuery);(function(e,t){function n(e){return parseInt(e,10)||0}function r(e){return!isNaN(parseInt(e,10))}e.widget("ui.resizable",e.ui.mouse,{version:"1.10.0",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var t,n,r,i,s,o=this,u=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!u.aspectRatio,aspectRatio:u.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:u.helper||u.ghost||u.animate?u.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=u.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor===String){this.handles==="all"&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={};for(n=0;n<t.length;n++)r=e.trim(t[n]),s="ui-resizable-"+r,i=e("<div class='ui-resizable-handle "+s+"'></div>"),i.css({zIndex:u.zIndex}),"se"===r&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[r]=".ui-resizable-"+r,this.element.append(i)}this._renderAxis=function(t){var n,r,i,s;t=t||this.element;for(n in this.handles){this.handles[n].constructor===String&&(this.handles[n]=e(this.handles[n],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(r=e(this.handles[n],this.element),s=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth(),i=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize());if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=i&&i[1]?i[1]:"se")}),u.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(u.disabled)return;e(this).removeClass("ui-resizable-autohide"),o._handles.show()}).mouseleave(function(){if(u.disabled)return;o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,n=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(n(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),n(this.originalElement),this},_mouseCapture:function(t){var n,r,i=!1;for(n in this.handles){r=e(this.handles[n])[0];if(r===t.target||e.contains(r,t.target))i=!0}return!this.options.disabled&&i},_mouseStart:function(t){var r,i,s,o=this.options,u=this.element.position(),a=this.element;return this.resizing=!0,/absolute/.test(a.css("position"))?a.css({position:"absolute",top:a.css("top"),left:a.css("left")}):a.is(".ui-draggable")&&a.css({position:"absolute",top:u.top,left:u.left}),this._renderProxy(),r=n(this.helper.css("left")),i=n(this.helper.css("top")),o.containment&&(r+=e(o.containment).scrollLeft()||0,i+=e(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:r,top:i},this.size=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.originalPosition={left:r,top:i},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof o.aspectRatio=="number"?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor",s==="auto"?this.axis+"-resize":s),a.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var n,r=this.helper,i={},s=this.originalMousePosition,o=this.axis,u=this.position.top,a=this.position.left,f=this.size.width,l=this.size.height,c=t.pageX-s.left||0,h=t.pageY-s.top||0,p=this._change[o];if(!p)return!1;n=p.apply(this,[t,c,h]),this._updateVirtualBoundaries(t.shiftKey);if(this._aspectRatio||t.shiftKey)n=this._updateRatio(n,t);return n=this._respectSize(n,t),this._updateCache(n),this._propagate("resize",t),this.position.top!==u&&(i.top=this.position.top+"px"),this.position.left!==a&&(i.left=this.position.left+"px"),this.size.width!==f&&(i.width=this.size.width+"px"),this.size.height!==l&&(i.height=this.size.height+"px"),r.css(i),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(i)||this._trigger("resize",t,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n,r,i,s,o,u,a,f=this.options,l=this;return this._helper&&(n=this._proportionallyResizeElements,r=n.length&&/textarea/i.test(n[0].nodeName),i=r&&e.ui.hasScroll(n[0],"left")?0:l.sizeDiff.height,s=r?0:l.sizeDiff.width,o={width:l.helper.width()-s,height:l.helper.height()-i},u=parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left)||null,a=parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top)||null,f.animate||this.element.css(e.extend(o,{top:a,left:u})),l.helper.height(l.size.height),l.helper.width(l.size.width),this._helper&&!f.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,n,i,s,o,u=this.options;o={minWidth:r(u.minWidth)?u.minWidth:0,maxWidth:r(u.maxWidth)?u.maxWidth:Infinity,minHeight:r(u.minHeight)?u.minHeight:0,maxHeight:r(u.maxHeight)?u.maxHeight:Infinity};if(this._aspectRatio||e)t=o.minHeight*this.aspectRatio,i=o.minWidth/this.aspectRatio,n=o.maxHeight*this.aspectRatio,s=o.maxWidth/this.aspectRatio,t>o.minWidth&&(o.minWidth=t),i>o.minHeight&&(o.minHeight=i),n<o.maxWidth&&(o.maxWidth=n),s<o.maxHeight&&(o.maxHeight=s);this._vBoundaries=o},_updateCache:function(e){this.offset=this.helper.offset(),r(e.left)&&(this.position.left=e.left),r(e.top)&&(this.position.top=e.top),r(e.height)&&(this.size.height=e.height),r(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,n=this.size,i=this.axis;return r(e.height)?e.width=e.height*this.aspectRatio:r(e.width)&&(e.height=e.width/this.aspectRatio),i==="sw"&&(e.left=t.left+(n.width-e.width),e.top=null),i==="nw"&&(e.top=t.top+(n.height-e.height),e.left=t.left+(n.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,n=this.axis,i=r(e.width)&&t.maxWidth&&t.maxWidth<e.width,s=r(e.height)&&t.maxHeight&&t.maxHeight<e.height,o=r(e.width)&&t.minWidth&&t.minWidth>e.width,u=r(e.height)&&t.minHeight&&t.minHeight>e.height,a=this.originalPosition.left+this.originalSize.width,f=this.position.top+this.size.height,l=/sw|nw|w/.test(n),c=/nw|ne|n/.test(n);return o&&(e.width=t.minWidth),u&&(e.height=t.minHeight),i&&(e.width=t.maxWidth),s&&(e.height=t.maxHeight),o&&l&&(e.left=a-t.minWidth),i&&l&&(e.left=a-t.maxWidth),u&&c&&(e.top=f-t.minHeight),s&&c&&(e.top=f-t.maxHeight),!e.width&&!e.height&&!e.left&&e.top?e.top=null:!e.width&&!e.height&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){if(!this._proportionallyResizeElements.length)return;var e,t,n,r,i,s=this.helper||this.element;for(e=0;e<this._proportionallyResizeElements.length;e++){i=this._proportionallyResizeElements[e];if(!this.borderDif){this.borderDif=[],n=[i.css("borderTopWidth"),i.css("borderRightWidth"),i.css("borderBottomWidth"),i.css("borderLeftWidth")],r=[i.css("paddingTop"),i.css("paddingRight"),i.css("paddingBottom"),i.css("paddingLeft")];for(t=0;t<n.length;t++)this.borderDif[t]=(parseInt(n[t],10)||0)+(parseInt(r[t],10)||0)}i.css({height:s.height()-this.borderDif[0]-this.borderDif[2]||0,width:s.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var n=this.originalSize,r=this.originalPosition;return{left:r.left+t,width:n.width-t}},n:function(e,t,n){var r=this.originalSize,i=this.originalPosition;return{top:i.top+n,height:r.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!=="resize"&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var n=e(this).data("ui-resizable"),r=n.options,i=n._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:n.sizeDiff.height,u=s?0:n.sizeDiff.width,a={width:n.size.width-u,height:n.size.height-o},f=parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left)||null,l=parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top)||null;n.element.animate(e.extend(a,l&&f?{top:l,left:f}:{}),{duration:r.animateDuration,easing:r.animateEasing,step:function(){var r={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};i&&i.length&&e(i[0]).css({width:r.width,height:r.height}),n._updateCache(r),n._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,r,i,s,o,u,a,f=e(this).data("ui-resizable"),l=f.options,c=f.element,h=l.containment,p=h instanceof e?h.get(0):/parent/.test(h)?c.parent().get(0):h;if(!p)return;f.containerElement=e(p),/document/.test(h)||h===document?(f.containerOffset={left:0,top:0},f.containerPosition={left:0,top:0},f.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(p),r=[],e(["Top","Right","Left","Bottom"]).each(function(e,i){r[e]=n(t.css("padding"+i))}),f.containerOffset=t.offset(),f.containerPosition=t.position(),f.containerSize={height:t.innerHeight()-r[3],width:t.innerWidth()-r[1]},i=f.containerOffset,s=f.containerSize.height,o=f.containerSize.width,u=e.ui.hasScroll(p,"left")?p.scrollWidth:o,a=e.ui.hasScroll(p)?p.scrollHeight:s,f.parentData={element:p,left:i.left,top:i.top,width:u,height:a})},resize:function(t){var n,r,i,s,o=e(this).data("ui-resizable"),u=o.options,a=o.containerOffset,f=o.position,l=o._aspectRatio||t.shiftKey,c={top:0,left:0},h=o.containerElement;h[0]!==document&&/static/.test(h.css("position"))&&(c=a),f.left<(o._helper?a.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-a.left:o.position.left-c.left),l&&(o.size.height=o.size.width/o.aspectRatio),o.position.left=u.helper?a.left:0),f.top<(o._helper?a.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-a.top:o.position.top),l&&(o.size.width=o.size.height*o.aspectRatio),o.position.top=o._helper?a.top:0),o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top,n=Math.abs((o._helper?o.offset.left-c.left:o.offset.left-c.left)+o.sizeDiff.width),r=Math.abs((o._helper?o.offset.top-c.top:o.offset.top-a.top)+o.sizeDiff.height),i=o.containerElement.get(0)===o.element.parent().get(0),s=/relative|absolute/.test(o.containerElement.css("position")),i&&s&&(n-=o.parentData.left),n+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-n,l&&(o.size.height=o.size.width/o.aspectRatio)),r+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-r,l&&(o.size.width=o.size.height*o.aspectRatio))},stop:function(){var t=e(this).data("ui-resizable"),n=t.options,r=t.containerOffset,i=t.containerPosition,s=t.containerElement,o=e(t.helper),u=o.offset(),a=o.outerWidth()-t.sizeDiff.width,f=o.outerHeight()-t.sizeDiff.height;t._helper&&!n.animate&&/relative/.test(s.css("position"))&&e(this).css({left:u.left-i.left-r.left,width:a,height:f}),t._helper&&!n.animate&&/static/.test(s.css("position"))&&e(this).css({left:u.left-i.left-r.left,width:a,height:f})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).data("ui-resizable"),n=t.options,r=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof n.alsoResize=="object"&&!n.alsoResize.parentNode?n.alsoResize.length?(n.alsoResize=n.alsoResize[0],r(n.alsoResize)):e.each(n.alsoResize,function(e){r(e)}):r(n.alsoResize)},resize:function(t,n){var r=e(this).data("ui-resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("ui-resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).data("ui-resizable"),n=t.options,r=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:r.height,width:r.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof n.ghost=="string"?n.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).data("ui-resizable");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).data("ui-resizable");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t=e(this).data("ui-resizable"),n=t.options,r=t.size,i=t.originalSize,s=t.originalPosition,o=t.axis,u=typeof n.grid=="number"?[n.grid,n.grid]:n.grid,a=u[0]||1,f=u[1]||1,l=Math.round((r.width-i.width)/a)*a,c=Math.round((r.height-i.height)/f)*f,h=i.width+l,p=i.height+c,d=n.maxWidth&&n.maxWidth<h,v=n.maxHeight&&n.maxHeight<p,m=n.minWidth&&n.minWidth>h,g=n.minHeight&&n.minHeight>p;n.grid=u,m&&(h+=a),g&&(p+=f),d&&(h-=a),v&&(p-=f),/^(se|s|e)$/.test(o)?(t.size.width=h,t.size.height=p):/^(ne)$/.test(o)?(t.size.width=h,t.size.height=p,t.position.top=s.top-c):/^(sw)$/.test(o)?(t.size.width=h,t.size.height=p,t.position.left=s.left-l):(t.size.width=h,t.size.height=p,t.position.top=s.top-c,t.position.left=s.left-l)}})})(jQuery);(function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.10.0",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,n=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(n.options.filter,n.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this,r=this.options;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().addBack().each(function(){var r,i=e.data(this,"selectable-item");if(i)return r=!t.metaKey&&!t.ctrlKey||!i.$element.hasClass("ui-selected"),i.$element.removeClass(r?"ui-unselecting":"ui-selected").addClass(r?"ui-selecting":"ui-unselecting"),i.unselecting=!r,i.selecting=r,i.selected=r,r?n._trigger("selecting",t,{selecting:i.element}):n._trigger("unselecting",t,{unselecting:i.element}),!1})},_mouseDrag:function(t){this.dragged=!0;if(this.options.disabled)return;var n,r=this,i=this.options,s=this.opos[0],o=this.opos[1],u=t.pageX,a=t.pageY;return s>u&&(n=u,u=s,s=n),o>a&&(n=a,a=o,o=n),this.helper.css({left:s,top:o,width:u-s,height:a-o}),this.selectees.each(function(){var n=e.data(this,"selectable-item"),f=!1;if(!n||n.element===r.element[0])return;i.tolerance==="touch"?f=!(n.left>u||n.right<s||n.top>a||n.bottom<o):i.tolerance==="fit"&&(f=n.left>s&&n.right<u&&n.top>o&&n.bottom<a),f?(n.selected&&(n.$element.removeClass("ui-selected"),n.selected=!1),n.unselecting&&(n.$element.removeClass("ui-unselecting"),n.unselecting=!1),n.selecting||(n.$element.addClass("ui-selecting"),n.selecting=!0,r._trigger("selecting",t,{selecting:n.element}))):(n.selecting&&((t.metaKey||t.ctrlKey)&&n.startselected?(n.$element.removeClass("ui-selecting"),n.selecting=!1,n.$element.addClass("ui-selected"),n.selected=!0):(n.$element.removeClass("ui-selecting"),n.selecting=!1,n.startselected&&(n.$element.addClass("ui-unselecting"),n.unselecting=!0),r._trigger("unselecting",t,{unselecting:n.element}))),n.selected&&!t.metaKey&&!t.ctrlKey&&!n.startselected&&(n.$element.removeClass("ui-selected"),n.selected=!1,n.$element.addClass("ui-unselecting"),n.unselecting=!0,r._trigger("unselecting",t,{unselecting:n.element})))}),!1},_mouseStop:function(t){var n=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-selecting").addClass("ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}})})(jQuery);(function(e,t){function n(e,t,n){return e>t&&e<t+n}e.widget("ui.sortable",e.ui.mouse,{version:"1.10.0",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=null,i=!1,s=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type==="static")return!1;this._refreshItems(t),e(t.target).parents().each(function(){if(e.data(this,s.widgetName+"-item")===s)return r=e(this),!1}),e.data(t.target,s.widgetName+"-item")===s&&(r=e(t.target));if(!r)return!1;if(this.options.handle&&!n){e(this.options.handle,r).find("*").addBack().each(function(){this===t.target&&(i=!0)});if(!i)return!1}return this.currentItem=r,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i,s=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,s.cursorAt&&this._adjustOffsetFromHelper(s.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),s.containment&&this._setContainment(),s.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",s.cursor)),s.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",s.opacity)),s.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",s.zIndex)),this.scrollParent[0]!==document&&this.scrollParent[0].tagName!=="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(i=this.containers.length-1;i>=0;i--)this.containers[i]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!s.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var n,r,i,s,o=this.options,u=!1;this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&this.scrollParent[0].tagName!=="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=u=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=u=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=u=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=u=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-e(document).scrollTop()<o.scrollSensitivity?u=e(document).scrollTop(e(document).scrollTop()-o.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<o.scrollSensitivity&&(u=e(document).scrollTop(e(document).scrollTop()+o.scrollSpeed)),t.pageX-e(document).scrollLeft()<o.scrollSensitivity?u=e(document).scrollLeft(e(document).scrollLeft()-o.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<o.scrollSensitivity&&(u=e(document).scrollLeft(e(document).scrollLeft()+o.scrollSpeed))),u!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!=="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!=="x")this.helper[0].style.top=this.position.top+"px";for(n=this.items.length-1;n>=0;n--){r=this.items[n],i=r.item[0],s=this._intersectsWithPointer(r);if(!s)continue;if(r.instance!==this.currentContainer)continue;if(i!==this.currentItem[0]&&this.placeholder[s===1?"next":"prev"]()[0]!==i&&!e.contains(this.placeholder[0],i)&&(this.options.type==="semi-dynamic"?!e.contains(this.element[0],i):!0)){this.direction=s===1?"down":"up";if(this.options.tolerance!=="pointer"&&!this._intersectsWithSides(r))break;this._rearrange(t,r),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper==="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!=="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance==="pointer"||this.options.forcePointerForContainers||this.options.tolerance!=="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(e){var t=this.options.axis==="x"||n(this.positionAbs.top+this.offset.click.top,e.top,e.height),r=this.options.axis==="y"||n(this.positionAbs.left+this.offset.click.left,e.left,e.width),i=t&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o==="right"||s==="down"?2:1:s&&(s==="down"?2:1):!1},_intersectsWithSides:function(e){var t=n(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),r=n(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s==="right"&&r||s==="left"&&!r:i&&(i==="down"&&t||i==="up"&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!==0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!==0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n,r,i,s,o=[],u=[],a=this._connectWith();if(a&&t)for(n=a.length-1;n>=0;n--){i=e(a[n]);for(r=i.length-1;r>=0;r--)s=e.data(i[r],this.widgetFullName),s&&s!==this&&!s.options.disabled&&u.push([e.isFunction(s.options.items)?s.options.items.call(s.element):e(s.options.items,s.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),s])}u.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(n=u.length-1;n>=0;n--)u[n][0].each(function(){o.push(this)});return e(o)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n,r,i,s,o,u,a,f,l=this.items,c=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],h=this._connectWith();if(h&&this.ready)for(n=h.length-1;n>=0;n--){i=e(h[n]);for(r=i.length-1;r>=0;r--)s=e.data(i[r],this.widgetFullName),s&&s!==this&&!s.options.disabled&&(c.push([e.isFunction(s.options.items)?s.options.items.call(s.element[0],t,{item:this.currentItem}):e(s.options.items,s.element),s]),this.containers.push(s))}for(n=c.length-1;n>=0;n--){o=c[n][1],u=c[n][0];for(r=0,f=u.length;r<f;r++)a=e(u[r]),a.data(this.widgetName+"-item",o),l.push({item:a,instance:o,width:0,height:0,left:0,top:0})}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var n,r,i,s;for(n=this.items.length-1;n>=0;n--){r=this.items[n];if(r.instance!==this.currentContainer&&this.currentContainer&&r.item[0]!==this.currentItem[0])continue;i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item,t||(r.width=i.outerWidth(),r.height=i.outerHeight()),s=i.offset(),r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(n=this.containers.length-1;n>=0;n--)s=this.containers[n].element.offset(),this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var n,r=t.options;if(!r.placeholder||r.placeholder.constructor===String)n=r.placeholder,r.placeholder={element:function(){var r=e(document.createElement(t.currentItem[0].nodeName)).addClass(n||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return n||(r.style.visibility="hidden"),r},update:function(e,i){if(n&&!r.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}};t.placeholder=e(r.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),r.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n,r,i,s,o,u,a,f,l,c=null,h=null;for(n=this.containers.length-1;n>=0;n--){if(e.contains(this.currentItem[0],this.containers[n].element[0]))continue;if(this._intersectsWith(this.containers[n].containerCache)){if(c&&e.contains(this.containers[n].element[0],c.element[0]))continue;c=this.containers[n],h=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",t,this._uiHash(this)),this.containers[n].containerCache.over=0)}if(!c)return;if(this.containers.length===1)this.containers[h]._trigger("over",t,this._uiHash(this)),this.containers[h].containerCache.over=1;else{i=1e4,s=null,o=this.containers[h].floating?"left":"top",u=this.containers[h].floating?"width":"height",a=this.positionAbs[o]+this.offset.click[o];for(r=this.items.length-1;r>=0;r--){if(!e.contains(this.containers[h].element[0],this.items[r].item[0]))continue;if(this.items[r].item[0]===this.currentItem[0])continue;f=this.items[r].item.offset()[o],l=!1,Math.abs(f-a)>Math.abs(f+this.items[r][u]-a)&&(l=!0,f+=this.items[r][u]),Math.abs(f-a)<i&&(i=Math.abs(f-a),s=this.items[r],this.direction=l?"up":"down")}if(!s&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[h],s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[h].element,!0),this._trigger("change",t,this._uiHash()),this.containers[h]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[h]._trigger("over",t,this._uiHash(this)),this.containers[h].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper==="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!=="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!r[0].style.width||n.forceHelperSize)&&r.width(this.currentItem.width()),(!r[0].style.height||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition==="absolute"&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()==="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition==="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,n,r,i=this.options;i.containment==="parent"&&(i.containment=this.helper[0].parentNode);if(i.containment==="document"||i.containment==="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(i.containment==="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(i.containment==="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];/^(document|window|parent)$/.test(i.containment)||(t=e(i.containment)[0],n=e(i.containment).offset(),r=e(t).css("overflow")!=="hidden",this.containment=[n.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,n.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,n.left+(r?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,n.top+(r?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,n){n||(n=this.position);var r=t==="absolute"?1:-1,i=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():s?0:i.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*r}},_generatePosition:function(t){var n,r,i=this.options,s=t.pageX,o=t.pageY,u=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(u[0].tagName);return this.cssPosition==="relative"&&(this.scrollParent[0]===document||this.scrollParent[0]===this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),i.grid&&(n=this.originalPageY+Math.round((o-this.originalPageY)/i.grid[1])*i.grid[1],o=this.containment?n-this.offset.click.top>=this.containment[1]&&n-this.offset.click.top<=this.containment[3]?n:n-this.offset.click.top>=this.containment[1]?n-i.grid[1]:n+i.grid[1]:n,r=this.originalPageX+Math.round((s-this.originalPageX)/i.grid[0])*i.grid[0],s=this.containment?r-this.offset.click.left>=this.containment[0]&&r-this.offset.click.left<=this.containment[2]?r:r-this.offset.click.left>=this.containment[0]?r-i.grid[0]:r+i.grid[0]:r)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():a?0:u.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():a?0:u.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction==="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i===this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r,i=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]===this.currentItem[0]){for(r in this._storedCSS)if(this._storedCSS[r]==="auto"||this._storedCSS[r]==="static")this._storedCSS[r]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&i.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!==this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!==this.currentItem.parent()[0])&&!n&&i.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(i.push(function(e){this._trigger("remove",e,this._uiHash())}),i.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),i.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(r=this.containers.length-1;r>=0;r--)n||i.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[r])),this.containers[r].containerCache.over&&(i.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[r])),this.containers[r].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex==="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(r=0;r<i.length;r++)i[r].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(r=0;r<i.length;r++)i[r].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})})(jQuery);(function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.10.0",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),!t.collapsible&&(t.active===!1||t.active==null)&&(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&e.css("height","")},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels();if(t.active===!1&&t.collapsible===!0||!this.headers.length)t.active=!1,this.active=e();t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var t,r=this.options,i=r.heightStyle,s=this.element.parent(),o=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n);this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(t){var n=e(this),r=n.attr("id"),i=n.next(),s=i.attr("id");r||(r=o+"-header-"+t,n.attr("id",r)),s||(s=o+"-panel-"+t,i.attr("id",s)),n.attr("aria-controls",s),i.attr("aria-labelledby",r)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(r.event),i==="fill"?(t=s.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):i==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,n),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()<t.index()),c=this.options.animate||{},h=l&&c.down||c,p=function(){a._toggleComplete(n)};typeof h=="number"&&(u=h),typeof h=="string"&&(o=h),o=o||h.easing||c.easing,u=u||h.duration||c.duration;if(!t.length)return e.animate(i,u,o,p);if(!e.length)return t.animate(r,u,o,p);s=e.show().outerHeight(),t.animate(r,{duration:u,easing:o,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(i,{duration:u,easing:o,complete:p,step:function(e,n){n.now=Math.round(e),n.prop!=="height"?f+=n.now:a.options.heightStyle!=="content"&&(n.now=Math.round(s-t.outerHeight()-f),f=0)}})},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}})})(jQuery);(function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.10.0",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this._appendTo()).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this._appendTo()),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})})(jQuery);(function(e,t){var n,r,i,s,o="ui-button ui-widget ui-state-default ui-corner-all",u="ui-state-hover ui-state-active ",a="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",f=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(n=n.replace(/'/g,"\\'"),r?i=e(r).find("[name='"+n+"']"):i=e("[name='"+n+"']",t.ownerDocument).filter(function(){return!this.form})),i};e.widget("ui.button",{version:"1.10.0",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,f),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,u=this.options,a=this.type==="checkbox"||this.type==="radio",c=a?"":"ui-state-active",h="ui-state-focus";u.label===null&&(u.label=this.type==="input"?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){if(u.disabled)return;this===n&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){if(u.disabled)return;e(this).removeClass(c)}).bind("click"+this.eventNamespace,function(e){u.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){t.buttonElement.addClass(h)}).bind("blur"+this.eventNamespace,function(){t.buttonElement.removeClass(h)}),a&&(this.element.bind("change"+this.eventNamespace,function(){if(s)return;t.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){if(u.disabled)return;s=!1,r=e.pageX,i=e.pageY}).bind("mouseup"+this.eventNamespace,function(e){if(u.disabled)return;if(r!==e.pageX||i!==e.pageY)s=!0})),this.type==="checkbox"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1}):this.type==="radio"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var n=t.element[0];l(n).not(n).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).addClass("ui-state-active"),n=this,t.document.one("mouseup",function(){n=null})}).bind("mouseup"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){if(u.disabled)return!1;(t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",u.disabled),this._resetButton()},_determineButtonType:function(){var e,t,n;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button",this.type==="checkbox"||this.type==="radio"?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),n=this.element.is(":checked"),n&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",n)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+u+" "+a).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){this._super(e,t);if(e==="disabled"){t?this.element.prop("disabled",!0):this.element.prop("disabled",!1);return}this._resetButton()},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),this.type==="radio"?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var t=this.buttonElement.removeClass(a),n=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),r=this.options.icons,i=r.primary&&r.secondary,s=[];r.primary||r.secondary?(this.options.text&&s.push("ui-button-text-icon"+(i?"s":r.primary?"-primary":"-secondary")),r.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+r.primary+"'></span>"),r.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+r.secondary+"'></span>"),this.options.text||(s.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(n)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.10.0",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){e==="disabled"&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})})(jQuery);(function(e,t){function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={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:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.dpDiv=o(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function o(t){var n="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(n,"mouseout",function(){e(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!==-1&&e(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!==-1&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(n,"mouseover",function(){e.datepicker._isDisabledDatepicker(i.inline?t.parent()[0]:i.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!==-1&&e(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!==-1&&e(this).addClass("ui-datepicker-next-hover"))})}function u(t,n){e.extend(t,n);for(var r in n)n[r]==null&&(t[r]=n[r]);return t}e.extend(e.ui,{datepicker:{version:"1.10.0"}});var n="datepicker",r=(new Date).getTime(),i;e.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return u(this._defaults,e||{}),this},_attachDatepicker:function(t,n){var r,i,s;r=t.nodeName.toLowerCase(),i=r==="div"||r==="span",t.id||(this.uuid+=1,t.id="dp"+this.uuid),s=this._newInst(e(t),i),s.settings=e.extend({},n||{}),r==="input"?this._connectDatepicker(t,s):i&&this._inlineDatepicker(t,s)},_newInst:function(t,n){var r=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:r,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:n,dpDiv:n?o(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,r){var i=e(t);r.append=e([]),r.trigger=e([]);if(i.hasClass(this.markerClassName))return;this._attachments(i,r),i.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(r),e.data(t,n,r),r.settings.disabled&&this._disableDatepicker(t)},_attachments:function(t,n){var r,i,s,o=this._get(n,"appendText"),u=this._get(n,"isRTL");n.append&&n.append.remove(),o&&(n.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[u?"before":"after"](n.append)),t.unbind("focus",this._showDatepicker),n.trigger&&n.trigger.remove(),r=this._get(n,"showOn"),(r==="focus"||r==="both")&&t.focus(this._showDatepicker);if(r==="button"||r==="both")i=this._get(n,"buttonText"),s=this._get(n,"buttonImage"),n.trigger=e(this._get(n,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:s,alt:i,title:i}):e("<button type='button'></button>").addClass(this._triggerClass).html(s?e("<img/>").attr({src:s,alt:i,title:i}):i)),t[u?"before":"after"](n.trigger),n.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1})},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,n,r,i,s=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){n=0,r=0;for(i=0;i<e.length;i++)e[i].length>n&&(n=e[i].length,r=i);return r},s.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),s.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-s.getDay())),e.input.attr("size",this._formatDate(e,s).length)}},_inlineDatepicker:function(t,r){var i=e(t);if(i.hasClass(this.markerClassName))return;i.addClass(this.markerClassName).append(r.dpDiv),e.data(t,n,r),this._setDate(r,this._getDefaultDate(r),!0),this._updateDatepicker(r),this._updateAlternate(r),r.settings.disabled&&this._disableDatepicker(t),r.dpDiv.css("display","block")},_dialogDatepicker:function(t,r,i,s,o){var a,f,l,c,h,p=this._dialogInst;return p||(this.uuid+=1,a="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+a+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},e.data(this._dialogInput[0],n,p)),u(p.settings,s||{}),r=r&&r.constructor===Date?this._formatDate(p,r):r,this._dialogInput.val(r),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(f=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,h=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[f/2-100+c,l/2-150+h]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],n,p),this},_destroyDatepicker:function(t){var r,i=e(t),s=e.data(t,n);if(!i.hasClass(this.markerClassName))return;r=t.nodeName.toLowerCase(),e.removeData(t,n),r==="input"?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r==="div"||r==="span")&&i.removeClass(this.markerClassName).empty()},_enableDatepicker:function(t){var r,i,s=e(t),o=e.data(t,n);if(!s.hasClass(this.markerClassName))return;r=t.nodeName.toLowerCase();if(r==="input")t.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r==="div"||r==="span")i=s.children("."+this._inlineClass),i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1);this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e})},_disableDatepicker:function(t){var r,i,s=e(t),o=e.data(t,n);if(!s.hasClass(this.markerClassName))return;r=t.nodeName.toLowerCase();if(r==="input")t.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r==="div"||r==="span")i=s.children("."+this._inlineClass),i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0);this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,n)}catch(r){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(n,r,i){var s,o,a,f,l=this._getInst(n);if(arguments.length===2&&typeof r=="string")return r==="defaults"?e.extend({},e.datepicker._defaults):l?r==="all"?e.extend({},l.settings):this._get(l,r):null;s=r||{},typeof r=="string"&&(s={},s[r]=i),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(n,!0),a=this._getMinMaxDate(l,"min"),f=this._getMinMaxDate(l,"max"),u(l.settings,s),a!==null&&s.dateFormat!==t&&s.minDate===t&&(l.settings.minDate=this._formatDate(l,a)),f!==null&&s.dateFormat!==t&&s.maxDate===t&&(l.settings.maxDate=this._formatDate(l,f)),"disabled"in s&&(s.disabled?this._disableDatepicker(n):this._enableDatepicker(n)),this._attachments(e(n),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l))},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(t){var n,r,i,s=e.datepicker._getInst(t.target),o=!0,u=s.dpDiv.is(".ui-datepicker-rtl");s._keyEvent=!0;if(e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return i=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",s.dpDiv),i[0]&&e.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),n=e.datepicker._get(s,"onSelect"),n?(r=e.datepicker._formatDate(s),n.apply(s.input?s.input[0]:null,[r,s])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,u?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,u?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else t.keyCode===36&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var n,r,i=e.datepicker._getInst(t.target);if(e.datepicker._get(i,"constrainInput"))return n=e.datepicker._possibleChars(e.datepicker._get(i,"dateFormat")),r=String.fromCharCode(t.charCode==null?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||r<" "||!n||n.indexOf(r)>-1},_doKeyUp:function(t){var n,r=e.datepicker._getInst(t.target);if(r.input.val()!==r.lastVal)try{n=e.datepicker.parseDate(e.datepicker._get(r,"dateFormat"),r.input?r.input.val():null,e.datepicker._getFormatConfig(r)),n&&(e.datepicker._setDateFromField(r),e.datepicker._updateAlternate(r),e.datepicker._updateDatepicker(r))}catch(i){}return!0},_showDatepicker:function(t){t=t.target||t,t.nodeName.toLowerCase()!=="input"&&(t=e("input",t.parentNode)[0]);if(e.datepicker._isDisabledDatepicker(t)||e.datepicker._lastInput===t)return;var n,r,i,s,o,a,f;n=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==n&&(e.datepicker._curInst.dpDiv.stop(!0,!0),n&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),r=e.datepicker._get(n,"beforeShow"),i=r?r.apply(t,[t,n]):{};if(i===!1)return;u(n.settings,i),n.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(n),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),s=!1,e(t).parents().each(function(){return s|=e(this).css("position")==="fixed",!s}),o={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(n),o=e.datepicker._checkOffset(n,o,s),n.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":s?"fixed":"absolute",display:"none",left:o.left+"px",top:o.top+"px"}),n.inline||(a=e.datepicker._get(n,"showAnim"),f=e.datepicker._get(n,"duration"),n.dpDiv.zIndex(e(t).zIndex()+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[a]?n.dpDiv.show(a,e.datepicker._get(n,"showOptions"),f):n.dpDiv[a||"show"](a?f:null),n.input.is(":visible")&&!n.input.is(":disabled")&&n.input.focus(),e.datepicker._curInst=n)},_updateDatepicker:function(t){this.maxRows=4,i=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t),t.dpDiv.find("."+this._dayOverClass+" a").mouseover();var n,r=this._getNumberOfMonths(t),s=r[1],o=17;t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),s>1&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",o*s+"em"),t.dpDiv[(r[0]!==1||r[1]!==1?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&t.input[0]!==document.activeElement&&t.input.focus(),t.yearshtml&&(n=t.yearshtml,setTimeout(function(){n===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),n=t.yearshtml=null},0))},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(t,n,r){var i=t.dpDiv.outerWidth(),s=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,u=t.input?t.input.outerHeight():0,a=document.documentElement.clientWidth+(r?0:e(document).scrollLeft()),f=document.documentElement.clientHeight+(r?0:e(document).scrollTop());return n.left-=this._get(t,"isRTL")?i-o:0,n.left-=r&&n.left===t.input.offset().left?e(document).scrollLeft():0,n.top-=r&&n.top===t.input.offset().top+u?e(document).scrollTop():0,n.left-=Math.min(n.left,n.left+i>a&&a>i?Math.abs(n.left+i-a):0),n.top-=Math.min(n.top,n.top+s>f&&f>s?Math.abs(s+u):0),n},_findPos:function(t){var n,r=this._getInst(t),i=this._get(r,"isRTL");while(t&&(t.type==="hidden"||t.nodeType!==1||e.expr.filters.hidden(t)))t=t[i?"previousSibling":"nextSibling"];return n=e(t).offset(),[n.left,n.top]},_hideDatepicker:function(t){var r,i,s,o,u=this._curInst;if(!u||t&&u!==e.data(t,n))return;this._datepickerShowing&&(r=this._get(u,"showAnim"),i=this._get(u,"duration"),s=function(){e.datepicker._tidyDialog(u)},e.effects&&(e.effects.effect[r]||e.effects[r])?u.dpDiv.hide(r,e.datepicker._get(u,"showOptions"),i,s):u.dpDiv[r==="slideDown"?"slideUp":r==="fadeIn"?"fadeOut":"hide"](r?i:null,s),r||s(),this._datepickerShowing=!1,o=this._get(u,"onClose"),o&&o.apply(u.input?u.input[0]:null,[u.input?u.input.val():"",u]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(!e.datepicker._curInst)return;var n=e(t.target),r=e.datepicker._getInst(n[0]);(n[0].id!==e.datepicker._mainDivId&&n.parents("#"+e.datepicker._mainDivId).length===0&&!n.hasClass(e.datepicker.markerClassName)&&!n.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||n.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==r)&&e.datepicker._hideDatepicker()},_adjustDate:function(t,n,r){var i=e(t),s=this._getInst(i[0]);if(this._isDisabledDatepicker(i[0]))return;this._adjustInstDate(s,n+(r==="M"?this._get(s,"showCurrentAtPos"):0),r),this._updateDatepicker(s)},_gotoToday:function(t){var n,r=e(t),i=this._getInst(r[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(n=new Date,i.selectedDay=n.getDate(),i.drawMonth=i.selectedMonth=n.getMonth(),i.drawYear=i.selectedYear=n.getFullYear()),this._notifyChange(i),this._adjustDate(r)},_selectMonthYear:function(t,n,r){var i=e(t),s=this._getInst(i[0]);s["selected"+(r==="M"?"Month":"Year")]=s["draw"+(r==="M"?"Month":"Year")]=parseInt(n.options[n.selectedIndex].value,10),this._notifyChange(s),this._adjustDate(i)},_selectDay:function(t,n,r,i){var s,o=e(t);if(e(i).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0]))return;s=this._getInst(o[0]),s.selectedDay=s.currentDay=e("a",i).html(),s.selectedMonth=s.currentMonth=n,s.selectedYear=s.currentYear=r,this._selectDate(t,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(t){var n=e(t);this._selectDate(n,"")},_selectDate:function(t,n){var r,i=e(t),s=this._getInst(i[0]);n=n!=null?n:this._formatDate(s),s.input&&s.input.val(n),this._updateAlternate(s),r=this._get(s,"onSelect"),r?r.apply(s.input?s.input[0]:null,[n,s]):s.input&&s.input.trigger("change"),s.inline?this._updateDatepicker(s):(this._hideDatepicker(),this._lastInput=s.input[0],typeof s.input[0]!="object"&&s.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var n,r,i,s=this._get(t,"altField");s&&(n=this._get(t,"altFormat")||this._get(t,"dateFormat"),r=this._getDate(t),i=this.formatDate(n,r,this._getFormatConfig(t)),e(s).each(function(){e(this).val(i)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t,n=new Date(e.getTime());return n.setDate(n.getDate()+4-(n.getDay()||7)),t=n.getTime(),n.setMonth(0),n.setDate(1),Math.floor(Math.round((t-n)/864e5)/7)+1},parseDate:function(t,n,r){if(t==null||n==null)throw"Invalid arguments";n=typeof n=="object"?n.toString():n+"";if(n==="")return null;var i,s,o,u=0,a=(r?r.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=typeof a!="string"?a:(new Date).getFullYear()%100+parseInt(a,10),l=(r?r.dayNamesShort:null)||this._defaults.dayNamesShort,c=(r?r.dayNames:null)||this._defaults.dayNames,h=(r?r.monthNamesShort:null)||this._defaults.monthNamesShort,p=(r?r.monthNames:null)||this._defaults.monthNames,d=-1,v=-1,m=-1,g=-1,y=!1,b,w=function(e){var n=i+1<t.length&&t.charAt(i+1)===e;return n&&i++,n},E=function(e){var t=w(e),r=e==="@"?14:e==="!"?20:e==="y"&&t?4:e==="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=n.substring(u).match(i);if(!s)throw"Missing number at position "+u;return u+=s[0].length,parseInt(s[0],10)},S=function(t,r,i){var s=-1,o=e.map(w(t)?i:r,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});e.each(o,function(e,t){var r=t[1];if(n.substr(u,r.length).toLowerCase()===r.toLowerCase())return s=t[0],u+=r.length,!1});if(s!==-1)return s+1;throw"Unknown name at position "+u},x=function(){if(n.charAt(u)!==t.charAt(i))throw"Unexpected literal at position "+u;u++};for(i=0;i<t.length;i++)if(y)t.charAt(i)==="'"&&!w("'")?y=!1:x();else switch(t.charAt(i)){case"d":m=E("d");break;case"D":S("D",l,c);break;case"o":g=E("o");break;case"m":v=E("m");break;case"M":v=S("M",h,p);break;case"y":d=E("y");break;case"@":b=new Date(E("@")),d=b.getFullYear(),v=b.getMonth()+1,m=b.getDate();break;case"!":b=new Date((E("!")-this._ticksTo1970)/1e4),d=b.getFullYear(),v=b.getMonth()+1,m=b.getDate();break;case"'":w("'")?x():y=!0;break;default:x()}if(u<n.length){o=n.substr(u);if(!/^\s+/.test(o))throw"Extra/unparsed characters found in date: "+o}d===-1?d=(new Date).getFullYear():d<100&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=f?0:-100));if(g>-1){v=1,m=g;do{s=this._getDaysInMonth(d,v-1);if(m<=s)break;v++,m-=s}while(!0)}b=this._daylightSavingAdjust(new Date(d,v-1,m));if(b.getFullYear()!==d||b.getMonth()+1!==v||b.getDate()!==m)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r,i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=function(t){var n=r+1<e.length&&e.charAt(r+1)===t;return n&&r++,n},f=function(e,t,n){var r=""+t;if(a(e))while(r.length<n)r="0"+r;return r},l=function(e,t,n,r){return a(e)?r[t]:n[t]},c="",h=!1;if(t)for(r=0;r<e.length;r++)if(h)e.charAt(r)==="'"&&!a("'")?h=!1:c+=e.charAt(r);else switch(e.charAt(r)){case"d":c+=f("d",t.getDate(),2);break;case"D":c+=l("D",t.getDay(),i,s);break;case"o":c+=f("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":c+=f("m",t.getMonth()+1,2);break;case"M":c+=l("M",t.getMonth(),o,u);break;case"y":c+=a("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":c+=t.getTime();break;case"!":c+=t.getTime()*1e4+this._ticksTo1970;break;case"'":a("'")?c+="'":h=!0;break;default:c+=e.charAt(r)}return c},_possibleChars:function(e){var t,n="",r=!1,i=function(n){var r=t+1<e.length&&e.charAt(t+1)===n;return r&&t++,r};for(t=0;t<e.length;t++)if(r)e.charAt(t)==="'"&&!i("'")?r=!1:n+=e.charAt(t);else switch(e.charAt(t)){case"d":case"m":case"y":case"@":n+="0123456789";break;case"D":case"M":return null;case"'":i("'")?n+="'":r=!0;break;default:n+=e.charAt(t)}return n},_get:function(e,n){return e.settings[n]!==t?e.settings[n]:this._defaults[n]},_setDateFromField:function(e,t){if(e.input.val()===e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i=this._getDefaultDate(e),s=i,o=this._getFormatConfig(e);try{s=this.parseDate(n,r,o)||i}catch(u){r=t?"":r}e.selectedDay=s.getDate(),e.drawMonth=e.selectedMonth=s.getMonth(),e.drawYear=e.selectedYear=s.getFullYear(),e.currentDay=r?s.getDate():0,e.currentMonth=r?s.getMonth():0,e.currentYear=r?s.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,n,r){var i=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},s=function(n){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),n,e.datepicker._getFormatConfig(t))}catch(r){}var i=(n.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,s=i.getFullYear(),o=i.getMonth(),u=i.getDate(),a=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,f=a.exec(n);while(f){switch(f[2]||"d"){case"d":case"D":u+=parseInt(f[1],10);break;case"w":case"W":u+=parseInt(f[1],10)*7;break;case"m":case"M":o+=parseInt(f[1],10),u=Math.min(u,e.datepicker._getDaysInMonth(s,o));break;case"y":case"Y":s+=parseInt(f[1],10),u=Math.min(u,e.datepicker._getDaysInMonth(s,o))}f=a.exec(n)}return new Date(s,o,u)},o=n==null||n===""?r:typeof n=="string"?s(n):typeof n=="number"?isNaN(n)?r:i(n):new Date(n.getTime());return o=o&&o.toString()==="Invalid Date"?r:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!==e.selectedMonth||s!==e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()===""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var n=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){window["DP_jQuery_"+r].datepicker._adjustDate(i,-n,"M")},next:function(){window["DP_jQuery_"+r].datepicker._adjustDate(i,+n,"M")},hide:function(){window["DP_jQuery_"+r].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+r].datepicker._gotoToday(i)},selectDay:function(){return window["DP_jQuery_"+r].datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+r].datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+r].datepicker._selectMonthYear(i,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q=new Date,R=this._daylightSavingAdjust(new Date(q.getFullYear(),q.getMonth(),q.getDate())),U=this._get(e,"isRTL"),z=this._get(e,"showButtonPanel"),W=this._get(e,"hideIfNoPrevNext"),X=this._get(e,"navigationAsDateFormat"),V=this._getNumberOfMonths(e),$=this._get(e,"showCurrentAtPos"),J=this._get(e,"stepMonths"),K=V[0]!==1||V[1]!==1,Q=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),G=this._getMinMaxDate(e,"min"),Y=this._getMinMaxDate(e,"max"),Z=e.drawMonth-$,et=e.drawYear;Z<0&&(Z+=12,et--);if(Y){t=this._daylightSavingAdjust(new Date(Y.getFullYear(),Y.getMonth()-V[0]*V[1]+1,Y.getDate())),t=G&&t<G?G:t;while(this._daylightSavingAdjust(new Date(et,Z,1))>t)Z--,Z<0&&(Z=11,et--)}e.drawMonth=Z,e.drawYear=et,n=this._get(e,"prevText"),n=X?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z-J,1)),this._getFormatConfig(e)):n,r=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"e":"w")+"'>"+n+"</span></a>":W?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"e":"w")+"'>"+n+"</span></a>",i=this._get(e,"nextText"),i=X?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z+J,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"w":"e")+"'>"+i+"</span></a>":W?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"w":"e")+"'>"+i+"</span></a>",o=this._get(e,"currentText"),u=this._get(e,"gotoCurrent")&&e.currentDay?Q:R,o=X?this.formatDate(o,u,this._getFormatConfig(e)):o,a=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",f=z?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(U?a:"")+(this._isInRange(e,u)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(U?"":a)+"</div>":"",l=parseInt(this._get(e,"firstDay"),10),l=isNaN(l)?0:l,c=this._get(e,"showWeek"),h=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),d=this._get(e,"monthNames"),v=this._get(e,"monthNamesShort"),m=this._get(e,"beforeShowDay"),g=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),w="",E;for(S=0;S<V[0];S++){x="",this.maxRows=4;for(T=0;T<V[1];T++){N=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),C=" ui-corner-all",k="";if(K){k+="<div class='ui-datepicker-group";if(V[1]>1)switch(T){case 0:k+=" ui-datepicker-group-first",C=" ui-corner-"+(U?"right":"left");break;case V[1]-1:k+=" ui-datepicker-group-last",C=" ui-corner-"+(U?"left":"right");break;default:k+=" ui-datepicker-group-middle",C=""}k+="'>"}k+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+C+"'>"+(/all|left/.test(C)&&S===0?U?s:r:"")+(/all|right/.test(C)&&S===0?U?r:s:"")+this._generateMonthYearHeader(e,Z,et,G,Y,S>0||T>0,d,v)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",L=c?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"";for(E=0;E<7;E++)A=(E+l)%7,L+="<th"+((E+l+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+h[A]+"'>"+p[A]+"</span></th>";k+=L+"</tr></thead><tbody>",O=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,O)),M=(this._getFirstDayOfMonth(et,Z)-l+7)%7,_=Math.ceil((M+O)/7),D=K?this.maxRows>_?this.maxRows:_:_,this.maxRows=D,P=this._daylightSavingAdjust(new Date(et,Z,1-M));for(H=0;H<D;H++){k+="<tr>",B=c?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(P)+"</td>":"";for(E=0;E<7;E++)j=m?m.apply(e.input?e.input[0]:null,[P]):[!0,""],F=P.getMonth()!==Z,I=F&&!y||!j[0]||G&&P<G||Y&&P>Y,B+="<td class='"+((E+l+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(P.getTime()===N.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===P.getTime()&&b.getTime()===N.getTime()?" "+this._dayOverClass:"")+(I?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!g?"":" "+j[1]+(P.getTime()===Q.getTime()?" "+this._currentClass:"")+(P.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+((!F||g)&&j[2]?" title='"+j[2]+"'":"")+(I?"":" data-handler='selectDay' data-event='click' data-month='"+P.getMonth()+"' data-year='"+P.getFullYear()+"'")+">"+(F&&!g?" ":I?"<span class='ui-state-default'>"+P.getDate()+"</span>":"<a class='ui-state-default"+(P.getTime()===R.getTime()?" ui-state-highlight":"")+(P.getTime()===Q.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+P.getDate()+"</a>")+"</td>",P.setDate(P.getDate()+1),P=this._daylightSavingAdjust(P);k+=B+"</tr>"}Z++,Z>11&&(Z=0,et++),k+="</tbody></table>"+(K?"</div>"+(V[0]>0&&T===V[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=k}w+=x}return w+=f,e._keyEvent=!1,w},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a,f,l,c,h,p,d,v,m=this._get(e,"changeMonth"),g=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",w="";if(s||!m)w+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{a=r&&r.getFullYear()===n,f=i&&i.getFullYear()===n,w+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";for(l=0;l<12;l++)(!a||l>=r.getMonth())&&(!f||l<=i.getMonth())&&(w+="<option value='"+l+"'"+(l===t?" selected='selected'":"")+">"+u[l]+"</option>");w+="</select>"}y||(b+=w+(s||!m||!g?" ":""));if(!e.yearshtml){e.yearshtml="";if(s||!g)b+="<span class='ui-datepicker-year'>"+n+"</span>";else{c=this._get(e,"yearRange").split(":"),h=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?n+parseInt(e.substring(1),10):e.match(/[+\-].*/)?h+parseInt(e,10):parseInt(e,10);return isNaN(t)?h:t},d=p(c[0]),v=Math.max(d,p(c[1]||"")),d=r?Math.max(d,r.getFullYear()):d,v=i?Math.min(v,i.getFullYear()):v,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";for(;d<=v;d++)e.yearshtml+="<option value='"+d+"'"+(d===n?" selected='selected'":"")+">"+d+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}}return b+=this._get(e,"yearSuffix"),y&&(b+=(s||!m||!g?" ":"")+w),b+="</div>",b},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n==="Y"?t:0),i=e.drawMonth+(n==="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n==="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n==="M"||n==="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return r&&i>r?r:i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n,r,i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),o=null,u=null,a=this._get(e,"yearRange");return a&&(n=a.split(":"),r=(new Date).getFullYear(),o=parseInt(n[0],10)+r,u=parseInt(n[1],10)+r),(!i||t.getTime()>=i.getTime())&&(!s||t.getTime()<=s.getTime())&&(!o||t.getFullYear()>=o)&&(!u||t.getFullYear()<=u)},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),e("#"+e.datepicker._mainDivId).length===0&&e("body").append(e.datepicker.dpDiv);var n=Array.prototype.slice.call(arguments,1);return typeof t!="string"||t!=="isDisabled"&&t!=="getDate"&&t!=="widget"?t==="option"&&arguments.length===2&&typeof arguments[1]=="string"?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n)):this.each(function(){typeof t=="string"?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(n)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n))},e.datepicker=new s,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.10.0",window["DP_jQuery_"+r]=e})(jQuery);(function(e,t){var n={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},r={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.10.0",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var n=this;if(!this._isOpen||this._trigger("beforeClose",t)===!1)return;this._isOpen=!1,this._destroyOverlay(),this.opener.filter(":focusable").focus().length||e(this.document[0].activeElement).blur(),this._hide(this.uiDialog,this.options.hide,function(){n._trigger("close",t)})},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,t){var n=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return n&&!t&&this._trigger("focus",e),n},open:function(){if(this._isOpen){this._moveToTop()&&this._focusTabbable();return}this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show),this._focusTabbable(),this._isOpen=!0,this._trigger("open"),this._trigger("focus")},_focusTabbable:function(){var e=this.element.find("[autofocus]");e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function n(){var t=this.document[0].activeElement,n=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);n||this._focusTabbable()}t.preventDefault(),n.call(this),this._delay(n)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE){t.preventDefault(),this.close(t);return}if(t.keyCode!==e.ui.keyCode.TAB)return;var n=this.uiDialog.find(":tabbable"),r=n.filter(":first"),i=n.filter(":last");t.target!==i[0]&&t.target!==this.uiDialog[0]||!!t.shiftKey?(t.target===r[0]||t.target===this.uiDialog[0])&&t.shiftKey&&(i.focus(1),t.preventDefault()):(r.focus(1),t.preventDefault())},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html(" "),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,n=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty();if(e.isEmptyObject(n)){this.uiDialog.removeClass("ui-dialog-buttons");return}e.each(n,function(n,r){var i,s;r=e.isFunction(r)?{click:r,text:n}:r,r=e.extend({type:"button"},r),i=r.click,r.click=function(){i.apply(t.element[0],arguments)},s={icons:r.icons,text:r.showText},delete r.icons,delete r.showText,e("<button></button>",r).button(s).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)},_makeDraggable:function(){function r(e){return{position:e.position,offset:e.offset}}var t=this,n=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,i){e(this).addClass("ui-dialog-dragging"),t._trigger("dragStart",n,r(i))},drag:function(e,n){t._trigger("drag",e,r(n))},stop:function(i,s){n.position=[s.position.left-t.document.scrollLeft(),s.position.top-t.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),t._trigger("dragStop",i,r(s))}})},_makeResizable:function(){function o(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var t=this,n=this.options,r=n.resizable,i=this.uiDialog.css("position"),s=typeof r=="string"?r:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:n.maxWidth,maxHeight:n.maxHeight,minWidth:n.minWidth,minHeight:this._minHeight(),handles:s,start:function(n,r){e(this).addClass("ui-dialog-resizing"),t._trigger("resizeStart",n,o(r))},resize:function(e,n){t._trigger("resize",e,o(n))},stop:function(r,i){n.height=e(this).height(),n.width=e(this).width(),e(this).removeClass("ui-dialog-resizing"),t._trigger("resizeStop",r,o(i))}}).css("position",i)},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,o={};e.each(t,function(e,t){i._setOption(e,t),e in n&&(s=!0),e in r&&(o[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",o)},_setOption:function(e,t){var n,r,i=this.uiDialog;e==="dialogClass"&&i.removeClass(this.options.dialogClass).addClass(t);if(e==="disabled")return;this._super(e,t),e==="appendTo"&&this.uiDialog.appendTo(this._appendTo()),e==="buttons"&&this._createButtons(),e==="closeText"&&this.uiDialogTitlebarClose.button({label:""+t}),e==="draggable"&&(n=i.is(":data(ui-draggable)"),n&&!t&&i.draggable("destroy"),!n&&t&&this._makeDraggable()),e==="position"&&this._position(),e==="resizable"&&(r=i.is(":data(ui-resizable)"),r&&!t&&i.resizable("destroy"),r&&typeof t=="string"&&i.resizable("option","handles",t),!r&&t!==!1&&this._makeResizable()),e==="title"&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title"))},_size:function(){var e,t,n,r=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),r.minWidth>r.width&&(r.width=r.minWidth),e=this.uiDialog.css({height:"auto",width:r.width}).outerHeight(),t=Math.max(0,r.minHeight-e),n=typeof r.maxHeight=="number"?Math.max(0,r.maxHeight-e):"none",r.height==="auto"?this.element.css({minHeight:t,maxHeight:n,height:"auto"}):this.element.height(Math.max(0,r.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_createOverlay:function(){if(!this.options.modal)return;e.ui.dialog.overlayInstances||this._delay(function(){e.ui.dialog.overlayInstances&&this._on(this.document,{focusin:function(t){e(t.target).closest(".ui-dialog").length||(t.preventDefault(),e(".ui-dialog:visible:last .ui-dialog-content").data("ui-dialog")._focusTabbable())}})}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this.document[0].body),this._on(this.overlay,{mousedown:"_keepFocus"}),e.ui.dialog.overlayInstances++},_destroyOverlay:function(){if(!this.options.modal)return;e.ui.dialog.overlayInstances--,e.ui.dialog.overlayInstances||this._off(this.document,"focusin"),this.overlay.remove()}}),e.ui.dialog.overlayInstances=0,e.uiBackCompat!==!1&&e.widget("ui.dialog",e.ui.dialog,{_position:function(){var t=this.options.position,n=[],r=[0,0],i;if(t){if(typeof t=="string"||typeof t=="object"&&"0"in t)n=t.split?t.split(" "):[t[0],t[1]],n.length===1&&(n[1]=n[0]),e.each(["left","top"],function(e,t){+n[e]===n[e]&&(r[e]=n[e],n[e]=t)}),t={my:n[0]+(r[0]<0?r[0]:"+"+r[0])+" "+n[1]+(r[1]<0?r[1]:"+"+r[1]),at:n.join(" ")};t=e.extend({},e.ui.dialog.prototype.options.position,t)}else t=e.ui.dialog.prototype.options.position;i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()}})})(jQuery);(function(e,t){e.widget("ui.menu",{version:"1.10.0",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var n=e(t.target).closest(".ui-menu-item");!this.mouseHandled&&n.not(".ui-state-disabled").length&&(this.mouseHandled=!0,this.select(t),n.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){e==="icons"&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),this._super(e,t)},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})})(jQuery);(function(e,t){e.widget("ui.progressbar",{version:"1.10.0",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){if(e===t)return this.options.value;this.options.value=this._constrainedValue(e),this._refreshValue()},_constrainedValue:function(e){return e===t&&(e=this.options.value),this.indeterminate=e===!1,typeof e!="number"&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){e==="max"&&(t=Math.max(this.min,t)),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,n=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(n.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}})})(jQuery);(function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.10.0",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){var t,n,r=this.options,i=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),s="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",o=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this.range=e([]),r.range&&(r.range===!0&&(r.values?r.values.length&&r.values.length!==2?r.values=[r.values[0],r.values[0]]:e.isArray(r.values)&&(r.values=r.values.slice(0)):r.values=[this._valueMin(),this._valueMin()]),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(r.range==="min"||r.range==="max"?" ui-slider-range-"+r.range:""))),n=r.values&&r.values.length||1;for(t=i.length;t<n;t++)o.push(s);this.handles=i.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){r.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){r.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._setOption("disabled",r.disabled),this._on(this.handles,this._handleEvents),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));if(i>n||i===n&&(t===l._lastChangedValue||l.values(t)===c.min))i=n,s=e(this),o=t}),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0)):this.handles.prop("disabled",!1);break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))},_handleEvents:{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}})})(jQuery);(function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.10.0",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>▲</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>▼</span>"+"</a>"},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e<r.min?r.min:e},_stop:function(e){if(!this.spinning)return;clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e)},_setOption:function(e,t){if(e==="culture"||e==="numberFormat"){var n=this._parse(this.element.val());this.options[e]=t,this.element.val(this._format(n));return}(e==="max"||e==="min"||e==="step")&&typeof t=="string"&&(t=this._parse(t)),e==="icons"&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),e==="disabled"&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return typeof e=="string"&&e!==""&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),e===""||isNaN(e)?null:e},_format:function(e){return e===""?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var n;e!==""&&(n=this._parse(e),n!==null&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){if(!arguments.length)return this._parse(this.element.val());t(this._value).call(this,e)},widget:function(){return this.uiSpinner}})})(jQuery);(function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&decodeURIComponent(e.href.replace(r,""))===decodeURIComponent(location.href.replace(r,""))}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.10.0",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),n.active=this._initialActive(),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(n.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_initialActive:function(){var t=this.options.active,n=this.options.collapsible,r=location.hash.substring(1);if(t===null){r&&this.tabs.each(function(n,i){if(e(i).attr("aria-controls")===r)return t=n,!1}),t===null&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(t===null||t===-1)t=this.tabs.length?0:!1}return t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),t===-1&&(t=n?!1:0)),!n&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r=this.element.parent();t==="fill"?(n=r.height(),n-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}})})(jQuery);(function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.10.0",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length||r.data("ui-tooltip-id"))return;r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t=e(this),r;t.data("ui-tooltip-open")&&(r=e.Event("blur"),r.target=r.currentTarget=this,n.close(r,!0)),t.attr("title")&&(t.uniqueId(),n.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("ui-tooltip-open"))return;i._delay(function(){t&&(t.type=s),this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=this.delayedShow=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(!0,r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;clearInterval(this.delayedShow),i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(t,r){e(r.element).attr("title",r.title),delete n.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})})(jQuery);jQuery.effects||function(e,t){var n="ui-effects-";e.effects={effect:{}},function(e,t){function h(e,t,n){var r=u[t.type]||{};return e==null?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:r.max<e?r.max:e)}function p(t){var n=s(),r=n._rgba=[];return t=t.toLowerCase(),c(i,function(e,i){var s,u=i.re.exec(t),a=u&&i.parse(u),f=i.space||"rgba";if(a)return s=n[f](a),n[o[f].cache]=s[o[f].cache],r=n._rgba=s._rgba,!1}),r.length?(r.join()==="0,0,0,0"&&e.extend(r,l.transparent),n):l[t]}function d(e,t,n){return n=(n+1)%1,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}var n="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,i=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1]*2.55,e[2]*2.55,e[3]*2.55,e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],s=e.Color=function(t,n,r,i){return new e.Color.fn.parse(t,n,r,i)},o={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},a=s.support={},f=e("<p>")[0],l,c=e.each;f.style.cssText="background-color:rgba(1,1,1,.5)",a.rgba=f.style.backgroundColor.indexOf("rgba")>-1,c(o,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),s.fn=e.extend(s.prototype,{parse:function(n,r,i,u){if(n===t)return this._rgba=[null,null,null,null],this;if(n.jquery||n.nodeType)n=e(n).css(r),r=t;var a=this,f=e.type(n),d=this._rgba=[];r!==t&&(n=[n,r,i,u],f="array");if(f==="string")return this.parse(p(n)||l._default);if(f==="array")return c(o.rgba.props,function(e,t){d[t.idx]=h(n[t.idx],t)}),this;if(f==="object")return n instanceof s?c(o,function(e,t){n[t.cache]&&(a[t.cache]=n[t.cache].slice())}):c(o,function(t,r){var i=r.cache;c(r.props,function(e,t){if(!a[i]&&r.to){if(e==="alpha"||n[e]==null)return;a[i]=r.to(a._rgba)}a[i][t.idx]=h(n[e],t,!0)}),a[i]&&e.inArray(null,a[i].slice(0,3))<0&&(a[i][3]=1,r.from&&(a._rgba=r.from(a[i])))}),this},is:function(e){var t=s(e),n=!0,r=this;return c(o,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],c(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return c(o,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=s(e),r=n._space(),i=o[r],a=this.alpha()===0?s("transparent"):this,f=a[i.cache]||i.to(a._rgba),l=f.slice();return n=n[i.cache],c(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],a=u[r.type]||{};if(o===null)return;s===null?l[i]=o:(a.mod&&(o-s>a.mod/2?s+=a.mod:s-o>a.mod/2&&(s-=a.mod)),l[i]=h((o-s)*t+s,r))}),this[r](l)},blend:function(t){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=s(t)._rgba;return s(e.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var t="rgba(",n=e.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),t="rgb("),t+n.join()+")"},toHslaString:function(){var t="hsla(",n=e.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),t="hsl("),t+n.join()+")"},toHexString:function(t){var n=this._rgba.slice(),r=n.pop();return t&&n.push(~~(r*255)),"#"+e.map(n,function(e){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),s.fn.parse.prototype=s.fn,o.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,u===0?c=0:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},o.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s;return[Math.round(d(o,s,t+1/3)*255),Math.round(d(o,s,t)*255),Math.round(d(o,s,t-1/3)*255),i]},c(o,function(n,i){var o=i.props,u=i.cache,a=i.to,f=i.from;s.fn[n]=function(n){a&&!this[u]&&(this[u]=a(this._rgba));if(n===t)return this[u].slice();var r,i=e.type(n),l=i==="array"||i==="object"?n:arguments,p=this[u].slice();return c(o,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=p[t.idx]),p[t.idx]=h(n,t)}),f?(r=s(f(p)),r[u]=p,r):s(p)},c(o,function(t,i){if(s.fn[t])return;s.fn[t]=function(s){var o=e.type(s),u=t==="alpha"?this._hsla?"hsla":"rgba":n,a=this[u](),f=a[i.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=e.type(s)),s==null&&i.empty?this:(o==="string"&&(l=r.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[i.idx]=s,this[u](a)))}})}),s.hook=function(t){var n=t.split(" ");c(n,function(t,n){e.cssHooks[n]={set:function(t,r){var i,o,u="";if(r!=="transparent"&&(e.type(r)!=="string"||(i=p(r)))){r=s(i||r);if(!a.rgba&&r._rgba[3]!==1){o=n==="backgroundColor"?t.parentNode:t;while((u===""||u==="transparent")&&o&&o.style)try{u=e.css(o,"backgroundColor"),o=o.parentNode}catch(f){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{t.style[n]=r}catch(f){}}},e.fx.step[n]=function(t){t.colorInit||(t.start=s(t.elem,n),t.end=s(t.end),t.colorInit=!0),e.cssHooks[n].set(t.elem,t.start.transition(t.end,t.pos))}})},s.hook(n),e.cssHooks.borderColor={expand:function(e){var t={};return c(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},l=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(t){var n,r,i=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,s={};if(i&&i.length&&i[0]&&i[i[0]]){r=i.length;while(r--)n=i[r],typeof i[n]=="string"&&(s[e.camelCase(n)]=i[n])}else for(n in i)typeof i[n]=="string"&&(s[n]=i[n]);return s}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").addBack():r;f=f.map(function(){var t=e(this);return{el:t,start:i(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=e.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function r(t,n,r,i){e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},n==null&&(n={}),e.isFunction(n)&&(i=n,r=null,n={});if(typeof n=="number"||e.fx.speeds[n])i=r,r=n,n={};return e.isFunction(r)&&(i=r,r=null),n&&e.extend(t,n),r=r||n.duration,t.duration=e.fx.off?0:typeof r=="number"?r:r in e.fx.speeds?e.fx.speeds[r]:e.fx.speeds._default,t.complete=i||n.complete,t}function i(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]}e.extend(e.effects,{version:"1.10.0",save:function(e,t){for(var r=0;r<t.length;r++)t[r]!==null&&e.data(n+t[r],e[0].style[t[r]])},restore:function(e,r){var i,s;for(s=0;s<r.length;s++)r[s]!==null&&(i=e.data(n+r[s]),i===t&&(i=""),e.css(r[s],i))},setMode:function(e,t){return t==="toggle"&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(){function o(n){function u(){e.isFunction(i)&&i.call(r[0]),e.isFunction(n)&&n()}var r=e(this),i=t.complete,o=t.mode;(r.is(":hidden")?o==="hide":o==="show")?u():s.call(r[0],t,u)}var t=r.apply(this,arguments),n=t.mode,i=t.queue,s=e.effects.effect[t.effect];return e.fx.off||!s?n?this[n](t.duration,t.complete):this.each(function(){t.complete&&t.complete.call(this)}):i===!1?this.each(o):this.queue(i||"fx",o)},_show:e.fn.show,show:function(e){if(i(e))return this._show.apply(this,arguments);var t=r.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(i(e))return this._hide.apply(this,arguments);var t=r.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(i(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=r.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery);(function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}})(jQuery);(function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m<l;m++)g={},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p).animate(y,h,p),f=o?f*2:f/2;o&&(g={opacity:0},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p)),r.queue(function(){o&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),w>1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h<r;h++){v=a.top+h*l,g=h-(r-1)/2;for(p=0;p<i;p++)d=a.left+p*f,m=p-(i-1)/2,s.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}})(jQuery);(function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}})(jQuery);(function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}})(jQuery);(function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}})(jQuery);(function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p<a;p++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(function(){o&&r.hide(),n()}),h>1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u,outerHeight:a.outerHeight*u,outerWidth:a.outerWidth*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0,outerHeight:0,outerWidth:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r,i,s,o=e(this),u=["position","top","bottom","left","right","width","height","overflow","opacity"],a=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],l=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),d=t.restore||p!=="effect",v=t.scale||"both",m=t.origin||["middle","center"],g=o.css("position"),y=d?u:a,b={height:0,width:0,outerHeight:0,outerWidth:0};p==="show"&&o.show(),r={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},t.mode==="toggle"&&p==="show"?(o.from=t.to||b,o.to=t.from||r):(o.from=t.from||(p==="show"?b:r),o.to=t.to||(p==="hide"?b:r)),s={from:{y:o.from.height/r.height,x:o.from.width/r.width},to:{y:o.to.height/r.height,x:o.to.width/r.width}};if(v==="box"||v==="both")s.from.y!==s.to.y&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,s.from.y,o.from),o.to=e.effects.setTransition(o,c,s.to.y,o.to)),s.from.x!==s.to.x&&(y=y.concat(h),o.from=e.effects.setTransition(o,h,s.from.x,o.from),o.to=e.effects.setTransition(o,h,s.to.x,o.to));(v==="content"||v==="both")&&s.from.y!==s.to.y&&(y=y.concat(l).concat(f),o.from=e.effects.setTransition(o,l,s.from.y,o.from),o.to=e.effects.setTransition(o,l,s.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(i=e.effects.getBaseline(m,r),o.from.top=(r.outerHeight-o.outerHeight())*i.y,o.from.left=(r.outerWidth-o.outerWidth())*i.x,o.to.top=(r.outerHeight-o.to.outerHeight)*i.y,o.to.left=(r.outerWidth-o.to.outerWidth)*i.x),o.css(o.from);if(v==="content"||v==="both")c=c.concat(["marginTop","marginBottom"]).concat(l),h=h.concat(["marginLeft","marginRight"]),f=u.concat(c).concat(h),o.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width(),outerHeight:n.outerHeight(),outerWidth:n.outerWidth()};d&&e.effects.save(n,f),n.from={height:r.height*s.from.y,width:r.width*s.from.x,outerHeight:r.outerHeight*s.from.y,outerWidth:r.outerWidth*s.from.x},n.to={height:r.height*s.to.y,width:r.width*s.to.x,outerHeight:r.height*s.to.y,outerWidth:r.width*s.to.x},s.from.y!==s.to.y&&(n.from=e.effects.setTransition(n,c,s.from.y,n.from),n.to=e.effects.setTransition(n,c,s.to.y,n.to)),s.from.x!==s.to.x&&(n.from=e.effects.setTransition(n,h,s.from.x,n.from),n.to=e.effects.setTransition(n,h,s.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){d&&e.effects.restore(n,f)})});o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o.to.opacity===0&&o.css("opacity",o.from.opacity),p==="hide"&&o.hide(),e.effects.restore(o,y),d||(g==="static"?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,n){var r=parseInt(n,10),i=e?o.to.left:o.to.top;return n==="auto"?i+"px":r+i+"px"})})),e.effects.removeWrapper(o),n()}})}})(jQuery);(function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m<a;m++)r.animate(d,l,t.easing).animate(v,l,t.easing);r.animate(d,l,t.easing).animate(p,l/2,t.easing).queue(function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),y>1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}})(jQuery);(function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}})(jQuery);(function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}})(jQuery);
|
||
// Underscore.js 1.8.3
|
||
// http://underscorejs.org
|
||
// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||
// Underscore may be freely distributed under the MIT license.
|
||
|
||
(function() {
|
||
|
||
// Baseline setup
|
||
// --------------
|
||
|
||
// Establish the root object, `window` in the browser, or `exports` on the server.
|
||
var root = this;
|
||
|
||
// Save the previous value of the `_` variable.
|
||
var previousUnderscore = root._;
|
||
|
||
// Save bytes in the minified (but not gzipped) version:
|
||
var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
|
||
|
||
// Create quick reference variables for speed access to core prototypes.
|
||
var
|
||
push = ArrayProto.push,
|
||
slice = ArrayProto.slice,
|
||
toString = ObjProto.toString,
|
||
hasOwnProperty = ObjProto.hasOwnProperty;
|
||
|
||
// All **ECMAScript 5** native function implementations that we hope to use
|
||
// are declared here.
|
||
var
|
||
nativeIsArray = Array.isArray,
|
||
nativeKeys = Object.keys,
|
||
nativeBind = FuncProto.bind,
|
||
nativeCreate = Object.create;
|
||
|
||
// Naked function reference for surrogate-prototype-swapping.
|
||
var Ctor = function(){};
|
||
|
||
// Create a safe reference to the Underscore object for use below.
|
||
var _ = function(obj) {
|
||
if (obj instanceof _) return obj;
|
||
if (!(this instanceof _)) return new _(obj);
|
||
this._wrapped = obj;
|
||
};
|
||
|
||
// Export the Underscore object for **Node.js**, with
|
||
// backwards-compatibility for the old `require()` API. If we're in
|
||
// the browser, add `_` as a global object.
|
||
if (typeof exports !== 'undefined') {
|
||
if (typeof module !== 'undefined' && module.exports) {
|
||
exports = module.exports = _;
|
||
}
|
||
exports._ = _;
|
||
} else {
|
||
root._ = _;
|
||
}
|
||
|
||
// Current version.
|
||
_.VERSION = '1.8.3';
|
||
|
||
// Internal function that returns an efficient (for current engines) version
|
||
// of the passed-in callback, to be repeatedly applied in other Underscore
|
||
// functions.
|
||
var optimizeCb = function(func, context, argCount) {
|
||
if (context === void 0) return func;
|
||
switch (argCount == null ? 3 : argCount) {
|
||
case 1: return function(value) {
|
||
return func.call(context, value);
|
||
};
|
||
case 2: return function(value, other) {
|
||
return func.call(context, value, other);
|
||
};
|
||
case 3: return function(value, index, collection) {
|
||
return func.call(context, value, index, collection);
|
||
};
|
||
case 4: return function(accumulator, value, index, collection) {
|
||
return func.call(context, accumulator, value, index, collection);
|
||
};
|
||
}
|
||
return function() {
|
||
return func.apply(context, arguments);
|
||
};
|
||
};
|
||
|
||
// A mostly-internal function to generate callbacks that can be applied
|
||
// to each element in a collection, returning the desired result — either
|
||
// identity, an arbitrary callback, a property matcher, or a property accessor.
|
||
var cb = function(value, context, argCount) {
|
||
if (value == null) return _.identity;
|
||
if (_.isFunction(value)) return optimizeCb(value, context, argCount);
|
||
if (_.isObject(value)) return _.matcher(value);
|
||
return _.property(value);
|
||
};
|
||
_.iteratee = function(value, context) {
|
||
return cb(value, context, Infinity);
|
||
};
|
||
|
||
// An internal function for creating assigner functions.
|
||
var createAssigner = function(keysFunc, undefinedOnly) {
|
||
return function(obj) {
|
||
var length = arguments.length;
|
||
if (length < 2 || obj == null) return obj;
|
||
for (var index = 1; index < length; index++) {
|
||
var source = arguments[index],
|
||
keys = keysFunc(source),
|
||
l = keys.length;
|
||
for (var i = 0; i < l; i++) {
|
||
var key = keys[i];
|
||
if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];
|
||
}
|
||
}
|
||
return obj;
|
||
};
|
||
};
|
||
|
||
// An internal function for creating a new object that inherits from another.
|
||
var baseCreate = function(prototype) {
|
||
if (!_.isObject(prototype)) return {};
|
||
if (nativeCreate) return nativeCreate(prototype);
|
||
Ctor.prototype = prototype;
|
||
var result = new Ctor;
|
||
Ctor.prototype = null;
|
||
return result;
|
||
};
|
||
|
||
var property = function(key) {
|
||
return function(obj) {
|
||
return obj == null ? void 0 : obj[key];
|
||
};
|
||
};
|
||
|
||
// Helper for collection methods to determine whether a collection
|
||
// should be iterated as an array or as an object
|
||
// Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
|
||
// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
|
||
var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
|
||
var getLength = property('length');
|
||
var isArrayLike = function(collection) {
|
||
var length = getLength(collection);
|
||
return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;
|
||
};
|
||
|
||
// Collection Functions
|
||
// --------------------
|
||
|
||
// The cornerstone, an `each` implementation, aka `forEach`.
|
||
// Handles raw objects in addition to array-likes. Treats all
|
||
// sparse array-likes as if they were dense.
|
||
_.each = _.forEach = function(obj, iteratee, context) {
|
||
iteratee = optimizeCb(iteratee, context);
|
||
var i, length;
|
||
if (isArrayLike(obj)) {
|
||
for (i = 0, length = obj.length; i < length; i++) {
|
||
iteratee(obj[i], i, obj);
|
||
}
|
||
} else {
|
||
var keys = _.keys(obj);
|
||
for (i = 0, length = keys.length; i < length; i++) {
|
||
iteratee(obj[keys[i]], keys[i], obj);
|
||
}
|
||
}
|
||
return obj;
|
||
};
|
||
|
||
// Return the results of applying the iteratee to each element.
|
||
_.map = _.collect = function(obj, iteratee, context) {
|
||
iteratee = cb(iteratee, context);
|
||
var keys = !isArrayLike(obj) && _.keys(obj),
|
||
length = (keys || obj).length,
|
||
results = Array(length);
|
||
for (var index = 0; index < length; index++) {
|
||
var currentKey = keys ? keys[index] : index;
|
||
results[index] = iteratee(obj[currentKey], currentKey, obj);
|
||
}
|
||
return results;
|
||
};
|
||
|
||
// Create a reducing function iterating left or right.
|
||
function createReduce(dir) {
|
||
// Optimized iterator function as using arguments.length
|
||
// in the main function will deoptimize the, see #1991.
|
||
function iterator(obj, iteratee, memo, keys, index, length) {
|
||
for (; index >= 0 && index < length; index += dir) {
|
||
var currentKey = keys ? keys[index] : index;
|
||
memo = iteratee(memo, obj[currentKey], currentKey, obj);
|
||
}
|
||
return memo;
|
||
}
|
||
|
||
return function(obj, iteratee, memo, context) {
|
||
iteratee = optimizeCb(iteratee, context, 4);
|
||
var keys = !isArrayLike(obj) && _.keys(obj),
|
||
length = (keys || obj).length,
|
||
index = dir > 0 ? 0 : length - 1;
|
||
// Determine the initial value if none is provided.
|
||
if (arguments.length < 3) {
|
||
memo = obj[keys ? keys[index] : index];
|
||
index += dir;
|
||
}
|
||
return iterator(obj, iteratee, memo, keys, index, length);
|
||
};
|
||
}
|
||
|
||
// **Reduce** builds up a single result from a list of values, aka `inject`,
|
||
// or `foldl`.
|
||
_.reduce = _.foldl = _.inject = createReduce(1);
|
||
|
||
// The right-associative version of reduce, also known as `foldr`.
|
||
_.reduceRight = _.foldr = createReduce(-1);
|
||
|
||
// Return the first value which passes a truth test. Aliased as `detect`.
|
||
_.find = _.detect = function(obj, predicate, context) {
|
||
var key;
|
||
if (isArrayLike(obj)) {
|
||
key = _.findIndex(obj, predicate, context);
|
||
} else {
|
||
key = _.findKey(obj, predicate, context);
|
||
}
|
||
if (key !== void 0 && key !== -1) return obj[key];
|
||
};
|
||
|
||
// Return all the elements that pass a truth test.
|
||
// Aliased as `select`.
|
||
_.filter = _.select = function(obj, predicate, context) {
|
||
var results = [];
|
||
predicate = cb(predicate, context);
|
||
_.each(obj, function(value, index, list) {
|
||
if (predicate(value, index, list)) results.push(value);
|
||
});
|
||
return results;
|
||
};
|
||
|
||
// Return all the elements for which a truth test fails.
|
||
_.reject = function(obj, predicate, context) {
|
||
return _.filter(obj, _.negate(cb(predicate)), context);
|
||
};
|
||
|
||
// Determine whether all of the elements match a truth test.
|
||
// Aliased as `all`.
|
||
_.every = _.all = function(obj, predicate, context) {
|
||
predicate = cb(predicate, context);
|
||
var keys = !isArrayLike(obj) && _.keys(obj),
|
||
length = (keys || obj).length;
|
||
for (var index = 0; index < length; index++) {
|
||
var currentKey = keys ? keys[index] : index;
|
||
if (!predicate(obj[currentKey], currentKey, obj)) return false;
|
||
}
|
||
return true;
|
||
};
|
||
|
||
// Determine if at least one element in the object matches a truth test.
|
||
// Aliased as `any`.
|
||
_.some = _.any = function(obj, predicate, context) {
|
||
predicate = cb(predicate, context);
|
||
var keys = !isArrayLike(obj) && _.keys(obj),
|
||
length = (keys || obj).length;
|
||
for (var index = 0; index < length; index++) {
|
||
var currentKey = keys ? keys[index] : index;
|
||
if (predicate(obj[currentKey], currentKey, obj)) return true;
|
||
}
|
||
return false;
|
||
};
|
||
|
||
// Determine if the array or object contains a given item (using `===`).
|
||
// Aliased as `includes` and `include`.
|
||
_.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {
|
||
if (!isArrayLike(obj)) obj = _.values(obj);
|
||
if (typeof fromIndex != 'number' || guard) fromIndex = 0;
|
||
return _.indexOf(obj, item, fromIndex) >= 0;
|
||
};
|
||
|
||
// Invoke a method (with arguments) on every item in a collection.
|
||
_.invoke = function(obj, method) {
|
||
var args = slice.call(arguments, 2);
|
||
var isFunc = _.isFunction(method);
|
||
return _.map(obj, function(value) {
|
||
var func = isFunc ? method : value[method];
|
||
return func == null ? func : func.apply(value, args);
|
||
});
|
||
};
|
||
|
||
// Convenience version of a common use case of `map`: fetching a property.
|
||
_.pluck = function(obj, key) {
|
||
return _.map(obj, _.property(key));
|
||
};
|
||
|
||
// Convenience version of a common use case of `filter`: selecting only objects
|
||
// containing specific `key:value` pairs.
|
||
_.where = function(obj, attrs) {
|
||
return _.filter(obj, _.matcher(attrs));
|
||
};
|
||
|
||
// Convenience version of a common use case of `find`: getting the first object
|
||
// containing specific `key:value` pairs.
|
||
_.findWhere = function(obj, attrs) {
|
||
return _.find(obj, _.matcher(attrs));
|
||
};
|
||
|
||
// Return the maximum element (or element-based computation).
|
||
_.max = function(obj, iteratee, context) {
|
||
var result = -Infinity, lastComputed = -Infinity,
|
||
value, computed;
|
||
if (iteratee == null && obj != null) {
|
||
obj = isArrayLike(obj) ? obj : _.values(obj);
|
||
for (var i = 0, length = obj.length; i < length; i++) {
|
||
value = obj[i];
|
||
if (value > result) {
|
||
result = value;
|
||
}
|
||
}
|
||
} else {
|
||
iteratee = cb(iteratee, context);
|
||
_.each(obj, function(value, index, list) {
|
||
computed = iteratee(value, index, list);
|
||
if (computed > lastComputed || computed === -Infinity && result === -Infinity) {
|
||
result = value;
|
||
lastComputed = computed;
|
||
}
|
||
});
|
||
}
|
||
return result;
|
||
};
|
||
|
||
// Return the minimum element (or element-based computation).
|
||
_.min = function(obj, iteratee, context) {
|
||
var result = Infinity, lastComputed = Infinity,
|
||
value, computed;
|
||
if (iteratee == null && obj != null) {
|
||
obj = isArrayLike(obj) ? obj : _.values(obj);
|
||
for (var i = 0, length = obj.length; i < length; i++) {
|
||
value = obj[i];
|
||
if (value < result) {
|
||
result = value;
|
||
}
|
||
}
|
||
} else {
|
||
iteratee = cb(iteratee, context);
|
||
_.each(obj, function(value, index, list) {
|
||
computed = iteratee(value, index, list);
|
||
if (computed < lastComputed || computed === Infinity && result === Infinity) {
|
||
result = value;
|
||
lastComputed = computed;
|
||
}
|
||
});
|
||
}
|
||
return result;
|
||
};
|
||
|
||
// Shuffle a collection, using the modern version of the
|
||
// [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
|
||
_.shuffle = function(obj) {
|
||
var set = isArrayLike(obj) ? obj : _.values(obj);
|
||
var length = set.length;
|
||
var shuffled = Array(length);
|
||
for (var index = 0, rand; index < length; index++) {
|
||
rand = _.random(0, index);
|
||
if (rand !== index) shuffled[index] = shuffled[rand];
|
||
shuffled[rand] = set[index];
|
||
}
|
||
return shuffled;
|
||
};
|
||
|
||
// Sample **n** random values from a collection.
|
||
// If **n** is not specified, returns a single random element.
|
||
// The internal `guard` argument allows it to work with `map`.
|
||
_.sample = function(obj, n, guard) {
|
||
if (n == null || guard) {
|
||
if (!isArrayLike(obj)) obj = _.values(obj);
|
||
return obj[_.random(obj.length - 1)];
|
||
}
|
||
return _.shuffle(obj).slice(0, Math.max(0, n));
|
||
};
|
||
|
||
// Sort the object's values by a criterion produced by an iteratee.
|
||
_.sortBy = function(obj, iteratee, context) {
|
||
iteratee = cb(iteratee, context);
|
||
return _.pluck(_.map(obj, function(value, index, list) {
|
||
return {
|
||
value: value,
|
||
index: index,
|
||
criteria: iteratee(value, index, list)
|
||
};
|
||
}).sort(function(left, right) {
|
||
var a = left.criteria;
|
||
var b = right.criteria;
|
||
if (a !== b) {
|
||
if (a > b || a === void 0) return 1;
|
||
if (a < b || b === void 0) return -1;
|
||
}
|
||
return left.index - right.index;
|
||
}), 'value');
|
||
};
|
||
|
||
// An internal function used for aggregate "group by" operations.
|
||
var group = function(behavior) {
|
||
return function(obj, iteratee, context) {
|
||
var result = {};
|
||
iteratee = cb(iteratee, context);
|
||
_.each(obj, function(value, index) {
|
||
var key = iteratee(value, index, obj);
|
||
behavior(result, value, key);
|
||
});
|
||
return result;
|
||
};
|
||
};
|
||
|
||
// Groups the object's values by a criterion. Pass either a string attribute
|
||
// to group by, or a function that returns the criterion.
|
||
_.groupBy = group(function(result, value, key) {
|
||
if (_.has(result, key)) result[key].push(value); else result[key] = [value];
|
||
});
|
||
|
||
// Indexes the object's values by a criterion, similar to `groupBy`, but for
|
||
// when you know that your index values will be unique.
|
||
_.indexBy = group(function(result, value, key) {
|
||
result[key] = value;
|
||
});
|
||
|
||
// Counts instances of an object that group by a certain criterion. Pass
|
||
// either a string attribute to count by, or a function that returns the
|
||
// criterion.
|
||
_.countBy = group(function(result, value, key) {
|
||
if (_.has(result, key)) result[key]++; else result[key] = 1;
|
||
});
|
||
|
||
// Safely create a real, live array from anything iterable.
|
||
_.toArray = function(obj) {
|
||
if (!obj) return [];
|
||
if (_.isArray(obj)) return slice.call(obj);
|
||
if (isArrayLike(obj)) return _.map(obj, _.identity);
|
||
return _.values(obj);
|
||
};
|
||
|
||
// Return the number of elements in an object.
|
||
_.size = function(obj) {
|
||
if (obj == null) return 0;
|
||
return isArrayLike(obj) ? obj.length : _.keys(obj).length;
|
||
};
|
||
|
||
// Split a collection into two arrays: one whose elements all satisfy the given
|
||
// predicate, and one whose elements all do not satisfy the predicate.
|
||
_.partition = function(obj, predicate, context) {
|
||
predicate = cb(predicate, context);
|
||
var pass = [], fail = [];
|
||
_.each(obj, function(value, key, obj) {
|
||
(predicate(value, key, obj) ? pass : fail).push(value);
|
||
});
|
||
return [pass, fail];
|
||
};
|
||
|
||
// Array Functions
|
||
// ---------------
|
||
|
||
// Get the first element of an array. Passing **n** will return the first N
|
||
// values in the array. Aliased as `head` and `take`. The **guard** check
|
||
// allows it to work with `_.map`.
|
||
_.first = _.head = _.take = function(array, n, guard) {
|
||
if (array == null) return void 0;
|
||
if (n == null || guard) return array[0];
|
||
return _.initial(array, array.length - n);
|
||
};
|
||
|
||
// Returns everything but the last entry of the array. Especially useful on
|
||
// the arguments object. Passing **n** will return all the values in
|
||
// the array, excluding the last N.
|
||
_.initial = function(array, n, guard) {
|
||
return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
|
||
};
|
||
|
||
// Get the last element of an array. Passing **n** will return the last N
|
||
// values in the array.
|
||
_.last = function(array, n, guard) {
|
||
if (array == null) return void 0;
|
||
if (n == null || guard) return array[array.length - 1];
|
||
return _.rest(array, Math.max(0, array.length - n));
|
||
};
|
||
|
||
// Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
|
||
// Especially useful on the arguments object. Passing an **n** will return
|
||
// the rest N values in the array.
|
||
_.rest = _.tail = _.drop = function(array, n, guard) {
|
||
return slice.call(array, n == null || guard ? 1 : n);
|
||
};
|
||
|
||
// Trim out all falsy values from an array.
|
||
_.compact = function(array) {
|
||
return _.filter(array, _.identity);
|
||
};
|
||
|
||
// Internal implementation of a recursive `flatten` function.
|
||
var flatten = function(input, shallow, strict, startIndex) {
|
||
var output = [], idx = 0;
|
||
for (var i = startIndex || 0, length = getLength(input); i < length; i++) {
|
||
var value = input[i];
|
||
if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {
|
||
//flatten current level of array or arguments object
|
||
if (!shallow) value = flatten(value, shallow, strict);
|
||
var j = 0, len = value.length;
|
||
output.length += len;
|
||
while (j < len) {
|
||
output[idx++] = value[j++];
|
||
}
|
||
} else if (!strict) {
|
||
output[idx++] = value;
|
||
}
|
||
}
|
||
return output;
|
||
};
|
||
|
||
// Flatten out an array, either recursively (by default), or just one level.
|
||
_.flatten = function(array, shallow) {
|
||
return flatten(array, shallow, false);
|
||
};
|
||
|
||
// Return a version of the array that does not contain the specified value(s).
|
||
_.without = function(array) {
|
||
return _.difference(array, slice.call(arguments, 1));
|
||
};
|
||
|
||
// Produce a duplicate-free version of the array. If the array has already
|
||
// been sorted, you have the option of using a faster algorithm.
|
||
// Aliased as `unique`.
|
||
_.uniq = _.unique = function(array, isSorted, iteratee, context) {
|
||
if (!_.isBoolean(isSorted)) {
|
||
context = iteratee;
|
||
iteratee = isSorted;
|
||
isSorted = false;
|
||
}
|
||
if (iteratee != null) iteratee = cb(iteratee, context);
|
||
var result = [];
|
||
var seen = [];
|
||
for (var i = 0, length = getLength(array); i < length; i++) {
|
||
var value = array[i],
|
||
computed = iteratee ? iteratee(value, i, array) : value;
|
||
if (isSorted) {
|
||
if (!i || seen !== computed) result.push(value);
|
||
seen = computed;
|
||
} else if (iteratee) {
|
||
if (!_.contains(seen, computed)) {
|
||
seen.push(computed);
|
||
result.push(value);
|
||
}
|
||
} else if (!_.contains(result, value)) {
|
||
result.push(value);
|
||
}
|
||
}
|
||
return result;
|
||
};
|
||
|
||
// Produce an array that contains the union: each distinct element from all of
|
||
// the passed-in arrays.
|
||
_.union = function() {
|
||
return _.uniq(flatten(arguments, true, true));
|
||
};
|
||
|
||
// Produce an array that contains every item shared between all the
|
||
// passed-in arrays.
|
||
_.intersection = function(array) {
|
||
var result = [];
|
||
var argsLength = arguments.length;
|
||
for (var i = 0, length = getLength(array); i < length; i++) {
|
||
var item = array[i];
|
||
if (_.contains(result, item)) continue;
|
||
for (var j = 1; j < argsLength; j++) {
|
||
if (!_.contains(arguments[j], item)) break;
|
||
}
|
||
if (j === argsLength) result.push(item);
|
||
}
|
||
return result;
|
||
};
|
||
|
||
// Take the difference between one array and a number of other arrays.
|
||
// Only the elements present in just the first array will remain.
|
||
_.difference = function(array) {
|
||
var rest = flatten(arguments, true, true, 1);
|
||
return _.filter(array, function(value){
|
||
return !_.contains(rest, value);
|
||
});
|
||
};
|
||
|
||
// Zip together multiple lists into a single array -- elements that share
|
||
// an index go together.
|
||
_.zip = function() {
|
||
return _.unzip(arguments);
|
||
};
|
||
|
||
// Complement of _.zip. Unzip accepts an array of arrays and groups
|
||
// each array's elements on shared indices
|
||
_.unzip = function(array) {
|
||
var length = array && _.max(array, getLength).length || 0;
|
||
var result = Array(length);
|
||
|
||
for (var index = 0; index < length; index++) {
|
||
result[index] = _.pluck(array, index);
|
||
}
|
||
return result;
|
||
};
|
||
|
||
// Converts lists into objects. Pass either a single array of `[key, value]`
|
||
// pairs, or two parallel arrays of the same length -- one of keys, and one of
|
||
// the corresponding values.
|
||
_.object = function(list, values) {
|
||
var result = {};
|
||
for (var i = 0, length = getLength(list); i < length; i++) {
|
||
if (values) {
|
||
result[list[i]] = values[i];
|
||
} else {
|
||
result[list[i][0]] = list[i][1];
|
||
}
|
||
}
|
||
return result;
|
||
};
|
||
|
||
// Generator function to create the findIndex and findLastIndex functions
|
||
function createPredicateIndexFinder(dir) {
|
||
return function(array, predicate, context) {
|
||
predicate = cb(predicate, context);
|
||
var length = getLength(array);
|
||
var index = dir > 0 ? 0 : length - 1;
|
||
for (; index >= 0 && index < length; index += dir) {
|
||
if (predicate(array[index], index, array)) return index;
|
||
}
|
||
return -1;
|
||
};
|
||
}
|
||
|
||
// Returns the first index on an array-like that passes a predicate test
|
||
_.findIndex = createPredicateIndexFinder(1);
|
||
_.findLastIndex = createPredicateIndexFinder(-1);
|
||
|
||
// Use a comparator function to figure out the smallest index at which
|
||
// an object should be inserted so as to maintain order. Uses binary search.
|
||
_.sortedIndex = function(array, obj, iteratee, context) {
|
||
iteratee = cb(iteratee, context, 1);
|
||
var value = iteratee(obj);
|
||
var low = 0, high = getLength(array);
|
||
while (low < high) {
|
||
var mid = Math.floor((low + high) / 2);
|
||
if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
|
||
}
|
||
return low;
|
||
};
|
||
|
||
// Generator function to create the indexOf and lastIndexOf functions
|
||
function createIndexFinder(dir, predicateFind, sortedIndex) {
|
||
return function(array, item, idx) {
|
||
var i = 0, length = getLength(array);
|
||
if (typeof idx == 'number') {
|
||
if (dir > 0) {
|
||
i = idx >= 0 ? idx : Math.max(idx + length, i);
|
||
} else {
|
||
length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
|
||
}
|
||
} else if (sortedIndex && idx && length) {
|
||
idx = sortedIndex(array, item);
|
||
return array[idx] === item ? idx : -1;
|
||
}
|
||
if (item !== item) {
|
||
idx = predicateFind(slice.call(array, i, length), _.isNaN);
|
||
return idx >= 0 ? idx + i : -1;
|
||
}
|
||
for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
|
||
if (array[idx] === item) return idx;
|
||
}
|
||
return -1;
|
||
};
|
||
}
|
||
|
||
// Return the position of the first occurrence of an item in an array,
|
||
// or -1 if the item is not included in the array.
|
||
// If the array is large and already in sort order, pass `true`
|
||
// for **isSorted** to use binary search.
|
||
_.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);
|
||
_.lastIndexOf = createIndexFinder(-1, _.findLastIndex);
|
||
|
||
// Generate an integer Array containing an arithmetic progression. A port of
|
||
// the native Python `range()` function. See
|
||
// [the Python documentation](http://docs.python.org/library/functions.html#range).
|
||
_.range = function(start, stop, step) {
|
||
if (stop == null) {
|
||
stop = start || 0;
|
||
start = 0;
|
||
}
|
||
step = step || 1;
|
||
|
||
var length = Math.max(Math.ceil((stop - start) / step), 0);
|
||
var range = Array(length);
|
||
|
||
for (var idx = 0; idx < length; idx++, start += step) {
|
||
range[idx] = start;
|
||
}
|
||
|
||
return range;
|
||
};
|
||
|
||
// Function (ahem) Functions
|
||
// ------------------
|
||
|
||
// Determines whether to execute a function as a constructor
|
||
// or a normal function with the provided arguments
|
||
var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {
|
||
if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
|
||
var self = baseCreate(sourceFunc.prototype);
|
||
var result = sourceFunc.apply(self, args);
|
||
if (_.isObject(result)) return result;
|
||
return self;
|
||
};
|
||
|
||
// Create a function bound to a given object (assigning `this`, and arguments,
|
||
// optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
|
||
// available.
|
||
_.bind = function(func, context) {
|
||
if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
|
||
if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');
|
||
var args = slice.call(arguments, 2);
|
||
var bound = function() {
|
||
return executeBound(func, bound, context, this, args.concat(slice.call(arguments)));
|
||
};
|
||
return bound;
|
||
};
|
||
|
||
// Partially apply a function by creating a version that has had some of its
|
||
// arguments pre-filled, without changing its dynamic `this` context. _ acts
|
||
// as a placeholder, allowing any combination of arguments to be pre-filled.
|
||
_.partial = function(func) {
|
||
var boundArgs = slice.call(arguments, 1);
|
||
var bound = function() {
|
||
var position = 0, length = boundArgs.length;
|
||
var args = Array(length);
|
||
for (var i = 0; i < length; i++) {
|
||
args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i];
|
||
}
|
||
while (position < arguments.length) args.push(arguments[position++]);
|
||
return executeBound(func, bound, this, this, args);
|
||
};
|
||
return bound;
|
||
};
|
||
|
||
// Bind a number of an object's methods to that object. Remaining arguments
|
||
// are the method names to be bound. Useful for ensuring that all callbacks
|
||
// defined on an object belong to it.
|
||
_.bindAll = function(obj) {
|
||
var i, length = arguments.length, key;
|
||
if (length <= 1) throw new Error('bindAll must be passed function names');
|
||
for (i = 1; i < length; i++) {
|
||
key = arguments[i];
|
||
obj[key] = _.bind(obj[key], obj);
|
||
}
|
||
return obj;
|
||
};
|
||
|
||
// Memoize an expensive function by storing its results.
|
||
_.memoize = function(func, hasher) {
|
||
var memoize = function(key) {
|
||
var cache = memoize.cache;
|
||
var address = '' + (hasher ? hasher.apply(this, arguments) : key);
|
||
if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);
|
||
return cache[address];
|
||
};
|
||
memoize.cache = {};
|
||
return memoize;
|
||
};
|
||
|
||
// Delays a function for the given number of milliseconds, and then calls
|
||
// it with the arguments supplied.
|
||
_.delay = function(func, wait) {
|
||
var args = slice.call(arguments, 2);
|
||
return setTimeout(function(){
|
||
return func.apply(null, args);
|
||
}, wait);
|
||
};
|
||
|
||
// Defers a function, scheduling it to run after the current call stack has
|
||
// cleared.
|
||
_.defer = _.partial(_.delay, _, 1);
|
||
|
||
// Returns a function, that, when invoked, will only be triggered at most once
|
||
// during a given window of time. Normally, the throttled function will run
|
||
// as much as it can, without ever going more than once per `wait` duration;
|
||
// but if you'd like to disable the execution on the leading edge, pass
|
||
// `{leading: false}`. To disable execution on the trailing edge, ditto.
|
||
_.throttle = function(func, wait, options) {
|
||
var context, args, result;
|
||
var timeout = null;
|
||
var previous = 0;
|
||
if (!options) options = {};
|
||
var later = function() {
|
||
previous = options.leading === false ? 0 : _.now();
|
||
timeout = null;
|
||
result = func.apply(context, args);
|
||
if (!timeout) context = args = null;
|
||
};
|
||
return function() {
|
||
var now = _.now();
|
||
if (!previous && options.leading === false) previous = now;
|
||
var remaining = wait - (now - previous);
|
||
context = this;
|
||
args = arguments;
|
||
if (remaining <= 0 || remaining > wait) {
|
||
if (timeout) {
|
||
clearTimeout(timeout);
|
||
timeout = null;
|
||
}
|
||
previous = now;
|
||
result = func.apply(context, args);
|
||
if (!timeout) context = args = null;
|
||
} else if (!timeout && options.trailing !== false) {
|
||
timeout = setTimeout(later, remaining);
|
||
}
|
||
return result;
|
||
};
|
||
};
|
||
|
||
// Returns a function, that, as long as it continues to be invoked, will not
|
||
// be triggered. The function will be called after it stops being called for
|
||
// N milliseconds. If `immediate` is passed, trigger the function on the
|
||
// leading edge, instead of the trailing.
|
||
_.debounce = function(func, wait, immediate) {
|
||
var timeout, args, context, timestamp, result;
|
||
|
||
var later = function() {
|
||
var last = _.now() - timestamp;
|
||
|
||
if (last < wait && last >= 0) {
|
||
timeout = setTimeout(later, wait - last);
|
||
} else {
|
||
timeout = null;
|
||
if (!immediate) {
|
||
result = func.apply(context, args);
|
||
if (!timeout) context = args = null;
|
||
}
|
||
}
|
||
};
|
||
|
||
return function() {
|
||
context = this;
|
||
args = arguments;
|
||
timestamp = _.now();
|
||
var callNow = immediate && !timeout;
|
||
if (!timeout) timeout = setTimeout(later, wait);
|
||
if (callNow) {
|
||
result = func.apply(context, args);
|
||
context = args = null;
|
||
}
|
||
|
||
return result;
|
||
};
|
||
};
|
||
|
||
// Returns the first function passed as an argument to the second,
|
||
// allowing you to adjust arguments, run code before and after, and
|
||
// conditionally execute the original function.
|
||
_.wrap = function(func, wrapper) {
|
||
return _.partial(wrapper, func);
|
||
};
|
||
|
||
// Returns a negated version of the passed-in predicate.
|
||
_.negate = function(predicate) {
|
||
return function() {
|
||
return !predicate.apply(this, arguments);
|
||
};
|
||
};
|
||
|
||
// Returns a function that is the composition of a list of functions, each
|
||
// consuming the return value of the function that follows.
|
||
_.compose = function() {
|
||
var args = arguments;
|
||
var start = args.length - 1;
|
||
return function() {
|
||
var i = start;
|
||
var result = args[start].apply(this, arguments);
|
||
while (i--) result = args[i].call(this, result);
|
||
return result;
|
||
};
|
||
};
|
||
|
||
// Returns a function that will only be executed on and after the Nth call.
|
||
_.after = function(times, func) {
|
||
return function() {
|
||
if (--times < 1) {
|
||
return func.apply(this, arguments);
|
||
}
|
||
};
|
||
};
|
||
|
||
// Returns a function that will only be executed up to (but not including) the Nth call.
|
||
_.before = function(times, func) {
|
||
var memo;
|
||
return function() {
|
||
if (--times > 0) {
|
||
memo = func.apply(this, arguments);
|
||
}
|
||
if (times <= 1) func = null;
|
||
return memo;
|
||
};
|
||
};
|
||
|
||
// Returns a function that will be executed at most one time, no matter how
|
||
// often you call it. Useful for lazy initialization.
|
||
_.once = _.partial(_.before, 2);
|
||
|
||
// Object Functions
|
||
// ----------------
|
||
|
||
// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.
|
||
var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');
|
||
var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',
|
||
'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
|
||
|
||
function collectNonEnumProps(obj, keys) {
|
||
var nonEnumIdx = nonEnumerableProps.length;
|
||
var constructor = obj.constructor;
|
||
var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto;
|
||
|
||
// Constructor is a special case.
|
||
var prop = 'constructor';
|
||
if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);
|
||
|
||
while (nonEnumIdx--) {
|
||
prop = nonEnumerableProps[nonEnumIdx];
|
||
if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {
|
||
keys.push(prop);
|
||
}
|
||
}
|
||
}
|
||
|
||
// Retrieve the names of an object's own properties.
|
||
// Delegates to **ECMAScript 5**'s native `Object.keys`
|
||
_.keys = function(obj) {
|
||
if (!_.isObject(obj)) return [];
|
||
if (nativeKeys) return nativeKeys(obj);
|
||
var keys = [];
|
||
for (var key in obj) if (_.has(obj, key)) keys.push(key);
|
||
// Ahem, IE < 9.
|
||
if (hasEnumBug) collectNonEnumProps(obj, keys);
|
||
return keys;
|
||
};
|
||
|
||
// Retrieve all the property names of an object.
|
||
_.allKeys = function(obj) {
|
||
if (!_.isObject(obj)) return [];
|
||
var keys = [];
|
||
for (var key in obj) keys.push(key);
|
||
// Ahem, IE < 9.
|
||
if (hasEnumBug) collectNonEnumProps(obj, keys);
|
||
return keys;
|
||
};
|
||
|
||
// Retrieve the values of an object's properties.
|
||
_.values = function(obj) {
|
||
var keys = _.keys(obj);
|
||
var length = keys.length;
|
||
var values = Array(length);
|
||
for (var i = 0; i < length; i++) {
|
||
values[i] = obj[keys[i]];
|
||
}
|
||
return values;
|
||
};
|
||
|
||
// Returns the results of applying the iteratee to each element of the object
|
||
// In contrast to _.map it returns an object
|
||
_.mapObject = function(obj, iteratee, context) {
|
||
iteratee = cb(iteratee, context);
|
||
var keys = _.keys(obj),
|
||
length = keys.length,
|
||
results = {},
|
||
currentKey;
|
||
for (var index = 0; index < length; index++) {
|
||
currentKey = keys[index];
|
||
results[currentKey] = iteratee(obj[currentKey], currentKey, obj);
|
||
}
|
||
return results;
|
||
};
|
||
|
||
// Convert an object into a list of `[key, value]` pairs.
|
||
_.pairs = function(obj) {
|
||
var keys = _.keys(obj);
|
||
var length = keys.length;
|
||
var pairs = Array(length);
|
||
for (var i = 0; i < length; i++) {
|
||
pairs[i] = [keys[i], obj[keys[i]]];
|
||
}
|
||
return pairs;
|
||
};
|
||
|
||
// Invert the keys and values of an object. The values must be serializable.
|
||
_.invert = function(obj) {
|
||
var result = {};
|
||
var keys = _.keys(obj);
|
||
for (var i = 0, length = keys.length; i < length; i++) {
|
||
result[obj[keys[i]]] = keys[i];
|
||
}
|
||
return result;
|
||
};
|
||
|
||
// Return a sorted list of the function names available on the object.
|
||
// Aliased as `methods`
|
||
_.functions = _.methods = function(obj) {
|
||
var names = [];
|
||
for (var key in obj) {
|
||
if (_.isFunction(obj[key])) names.push(key);
|
||
}
|
||
return names.sort();
|
||
};
|
||
|
||
// Extend a given object with all the properties in passed-in object(s).
|
||
_.extend = createAssigner(_.allKeys);
|
||
|
||
// Assigns a given object with all the own properties in the passed-in object(s)
|
||
// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
|
||
_.extendOwn = _.assign = createAssigner(_.keys);
|
||
|
||
// Returns the first key on an object that passes a predicate test
|
||
_.findKey = function(obj, predicate, context) {
|
||
predicate = cb(predicate, context);
|
||
var keys = _.keys(obj), key;
|
||
for (var i = 0, length = keys.length; i < length; i++) {
|
||
key = keys[i];
|
||
if (predicate(obj[key], key, obj)) return key;
|
||
}
|
||
};
|
||
|
||
// Return a copy of the object only containing the whitelisted properties.
|
||
_.pick = function(object, oiteratee, context) {
|
||
var result = {}, obj = object, iteratee, keys;
|
||
if (obj == null) return result;
|
||
if (_.isFunction(oiteratee)) {
|
||
keys = _.allKeys(obj);
|
||
iteratee = optimizeCb(oiteratee, context);
|
||
} else {
|
||
keys = flatten(arguments, false, false, 1);
|
||
iteratee = function(value, key, obj) { return key in obj; };
|
||
obj = Object(obj);
|
||
}
|
||
for (var i = 0, length = keys.length; i < length; i++) {
|
||
var key = keys[i];
|
||
var value = obj[key];
|
||
if (iteratee(value, key, obj)) result[key] = value;
|
||
}
|
||
return result;
|
||
};
|
||
|
||
// Return a copy of the object without the blacklisted properties.
|
||
_.omit = function(obj, iteratee, context) {
|
||
if (_.isFunction(iteratee)) {
|
||
iteratee = _.negate(iteratee);
|
||
} else {
|
||
var keys = _.map(flatten(arguments, false, false, 1), String);
|
||
iteratee = function(value, key) {
|
||
return !_.contains(keys, key);
|
||
};
|
||
}
|
||
return _.pick(obj, iteratee, context);
|
||
};
|
||
|
||
// Fill in a given object with default properties.
|
||
_.defaults = createAssigner(_.allKeys, true);
|
||
|
||
// Creates an object that inherits from the given prototype object.
|
||
// If additional properties are provided then they will be added to the
|
||
// created object.
|
||
_.create = function(prototype, props) {
|
||
var result = baseCreate(prototype);
|
||
if (props) _.extendOwn(result, props);
|
||
return result;
|
||
};
|
||
|
||
// Create a (shallow-cloned) duplicate of an object.
|
||
_.clone = function(obj) {
|
||
if (!_.isObject(obj)) return obj;
|
||
return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
|
||
};
|
||
|
||
// Invokes interceptor with the obj, and then returns obj.
|
||
// The primary purpose of this method is to "tap into" a method chain, in
|
||
// order to perform operations on intermediate results within the chain.
|
||
_.tap = function(obj, interceptor) {
|
||
interceptor(obj);
|
||
return obj;
|
||
};
|
||
|
||
// Returns whether an object has a given set of `key:value` pairs.
|
||
_.isMatch = function(object, attrs) {
|
||
var keys = _.keys(attrs), length = keys.length;
|
||
if (object == null) return !length;
|
||
var obj = Object(object);
|
||
for (var i = 0; i < length; i++) {
|
||
var key = keys[i];
|
||
if (attrs[key] !== obj[key] || !(key in obj)) return false;
|
||
}
|
||
return true;
|
||
};
|
||
|
||
|
||
// Internal recursive comparison function for `isEqual`.
|
||
var eq = function(a, b, aStack, bStack) {
|
||
// Identical objects are equal. `0 === -0`, but they aren't identical.
|
||
// See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
|
||
if (a === b) return a !== 0 || 1 / a === 1 / b;
|
||
// A strict comparison is necessary because `null == undefined`.
|
||
if (a == null || b == null) return a === b;
|
||
// Unwrap any wrapped objects.
|
||
if (a instanceof _) a = a._wrapped;
|
||
if (b instanceof _) b = b._wrapped;
|
||
// Compare `[[Class]]` names.
|
||
var className = toString.call(a);
|
||
if (className !== toString.call(b)) return false;
|
||
switch (className) {
|
||
// Strings, numbers, regular expressions, dates, and booleans are compared by value.
|
||
case '[object RegExp]':
|
||
// RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')
|
||
case '[object String]':
|
||
// Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
|
||
// equivalent to `new String("5")`.
|
||
return '' + a === '' + b;
|
||
case '[object Number]':
|
||
// `NaN`s are equivalent, but non-reflexive.
|
||
// Object(NaN) is equivalent to NaN
|
||
if (+a !== +a) return +b !== +b;
|
||
// An `egal` comparison is performed for other numeric values.
|
||
return +a === 0 ? 1 / +a === 1 / b : +a === +b;
|
||
case '[object Date]':
|
||
case '[object Boolean]':
|
||
// Coerce dates and booleans to numeric primitive values. Dates are compared by their
|
||
// millisecond representations. Note that invalid dates with millisecond representations
|
||
// of `NaN` are not equivalent.
|
||
return +a === +b;
|
||
}
|
||
|
||
var areArrays = className === '[object Array]';
|
||
if (!areArrays) {
|
||
if (typeof a != 'object' || typeof b != 'object') return false;
|
||
|
||
// Objects with different constructors are not equivalent, but `Object`s or `Array`s
|
||
// from different frames are.
|
||
var aCtor = a.constructor, bCtor = b.constructor;
|
||
if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&
|
||
_.isFunction(bCtor) && bCtor instanceof bCtor)
|
||
&& ('constructor' in a && 'constructor' in b)) {
|
||
return false;
|
||
}
|
||
}
|
||
// Assume equality for cyclic structures. The algorithm for detecting cyclic
|
||
// structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
|
||
|
||
// Initializing stack of traversed objects.
|
||
// It's done here since we only need them for objects and arrays comparison.
|
||
aStack = aStack || [];
|
||
bStack = bStack || [];
|
||
var length = aStack.length;
|
||
while (length--) {
|
||
// Linear search. Performance is inversely proportional to the number of
|
||
// unique nested structures.
|
||
if (aStack[length] === a) return bStack[length] === b;
|
||
}
|
||
|
||
// Add the first object to the stack of traversed objects.
|
||
aStack.push(a);
|
||
bStack.push(b);
|
||
|
||
// Recursively compare objects and arrays.
|
||
if (areArrays) {
|
||
// Compare array lengths to determine if a deep comparison is necessary.
|
||
length = a.length;
|
||
if (length !== b.length) return false;
|
||
// Deep compare the contents, ignoring non-numeric properties.
|
||
while (length--) {
|
||
if (!eq(a[length], b[length], aStack, bStack)) return false;
|
||
}
|
||
} else {
|
||
// Deep compare objects.
|
||
var keys = _.keys(a), key;
|
||
length = keys.length;
|
||
// Ensure that both objects contain the same number of properties before comparing deep equality.
|
||
if (_.keys(b).length !== length) return false;
|
||
while (length--) {
|
||
// Deep compare each member
|
||
key = keys[length];
|
||
if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
|
||
}
|
||
}
|
||
// Remove the first object from the stack of traversed objects.
|
||
aStack.pop();
|
||
bStack.pop();
|
||
return true;
|
||
};
|
||
|
||
// Perform a deep comparison to check if two objects are equal.
|
||
_.isEqual = function(a, b) {
|
||
return eq(a, b);
|
||
};
|
||
|
||
// Is a given array, string, or object empty?
|
||
// An "empty" object has no enumerable own-properties.
|
||
_.isEmpty = function(obj) {
|
||
if (obj == null) return true;
|
||
if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;
|
||
return _.keys(obj).length === 0;
|
||
};
|
||
|
||
// Is a given value a DOM element?
|
||
_.isElement = function(obj) {
|
||
return !!(obj && obj.nodeType === 1);
|
||
};
|
||
|
||
// Is a given value an array?
|
||
// Delegates to ECMA5's native Array.isArray
|
||
_.isArray = nativeIsArray || function(obj) {
|
||
return toString.call(obj) === '[object Array]';
|
||
};
|
||
|
||
// Is a given variable an object?
|
||
_.isObject = function(obj) {
|
||
var type = typeof obj;
|
||
return type === 'function' || type === 'object' && !!obj;
|
||
};
|
||
|
||
// Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError.
|
||
_.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) {
|
||
_['is' + name] = function(obj) {
|
||
return toString.call(obj) === '[object ' + name + ']';
|
||
};
|
||
});
|
||
|
||
// Define a fallback version of the method in browsers (ahem, IE < 9), where
|
||
// there isn't any inspectable "Arguments" type.
|
||
if (!_.isArguments(arguments)) {
|
||
_.isArguments = function(obj) {
|
||
return _.has(obj, 'callee');
|
||
};
|
||
}
|
||
|
||
// Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,
|
||
// IE 11 (#1621), and in Safari 8 (#1929).
|
||
if (typeof /./ != 'function' && typeof Int8Array != 'object') {
|
||
_.isFunction = function(obj) {
|
||
return typeof obj == 'function' || false;
|
||
};
|
||
}
|
||
|
||
// Is a given object a finite number?
|
||
_.isFinite = function(obj) {
|
||
return isFinite(obj) && !isNaN(parseFloat(obj));
|
||
};
|
||
|
||
// Is the given value `NaN`? (NaN is the only number which does not equal itself).
|
||
_.isNaN = function(obj) {
|
||
return _.isNumber(obj) && obj !== +obj;
|
||
};
|
||
|
||
// Is a given value a boolean?
|
||
_.isBoolean = function(obj) {
|
||
return obj === true || obj === false || toString.call(obj) === '[object Boolean]';
|
||
};
|
||
|
||
// Is a given value equal to null?
|
||
_.isNull = function(obj) {
|
||
return obj === null;
|
||
};
|
||
|
||
// Is a given variable undefined?
|
||
_.isUndefined = function(obj) {
|
||
return obj === void 0;
|
||
};
|
||
|
||
// Shortcut function for checking if an object has a given property directly
|
||
// on itself (in other words, not on a prototype).
|
||
_.has = function(obj, key) {
|
||
return obj != null && hasOwnProperty.call(obj, key);
|
||
};
|
||
|
||
// Utility Functions
|
||
// -----------------
|
||
|
||
// Run Underscore.js in *noConflict* mode, returning the `_` variable to its
|
||
// previous owner. Returns a reference to the Underscore object.
|
||
_.noConflict = function() {
|
||
root._ = previousUnderscore;
|
||
return this;
|
||
};
|
||
|
||
// Keep the identity function around for default iteratees.
|
||
_.identity = function(value) {
|
||
return value;
|
||
};
|
||
|
||
// Predicate-generating functions. Often useful outside of Underscore.
|
||
_.constant = function(value) {
|
||
return function() {
|
||
return value;
|
||
};
|
||
};
|
||
|
||
_.noop = function(){};
|
||
|
||
_.property = property;
|
||
|
||
// Generates a function for a given object that returns a given property.
|
||
_.propertyOf = function(obj) {
|
||
return obj == null ? function(){} : function(key) {
|
||
return obj[key];
|
||
};
|
||
};
|
||
|
||
// Returns a predicate for checking whether an object has a given set of
|
||
// `key:value` pairs.
|
||
_.matcher = _.matches = function(attrs) {
|
||
attrs = _.extendOwn({}, attrs);
|
||
return function(obj) {
|
||
return _.isMatch(obj, attrs);
|
||
};
|
||
};
|
||
|
||
// Run a function **n** times.
|
||
_.times = function(n, iteratee, context) {
|
||
var accum = Array(Math.max(0, n));
|
||
iteratee = optimizeCb(iteratee, context, 1);
|
||
for (var i = 0; i < n; i++) accum[i] = iteratee(i);
|
||
return accum;
|
||
};
|
||
|
||
// Return a random integer between min and max (inclusive).
|
||
_.random = function(min, max) {
|
||
if (max == null) {
|
||
max = min;
|
||
min = 0;
|
||
}
|
||
return min + Math.floor(Math.random() * (max - min + 1));
|
||
};
|
||
|
||
// A (possibly faster) way to get the current timestamp as an integer.
|
||
_.now = Date.now || function() {
|
||
return new Date().getTime();
|
||
};
|
||
|
||
// List of HTML entities for escaping.
|
||
var escapeMap = {
|
||
'&': '&',
|
||
'<': '<',
|
||
'>': '>',
|
||
'"': '"',
|
||
"'": ''',
|
||
'`': '`'
|
||
};
|
||
var unescapeMap = _.invert(escapeMap);
|
||
|
||
// Functions for escaping and unescaping strings to/from HTML interpolation.
|
||
var createEscaper = function(map) {
|
||
var escaper = function(match) {
|
||
return map[match];
|
||
};
|
||
// Regexes for identifying a key that needs to be escaped
|
||
var source = '(?:' + _.keys(map).join('|') + ')';
|
||
var testRegexp = RegExp(source);
|
||
var replaceRegexp = RegExp(source, 'g');
|
||
return function(string) {
|
||
string = string == null ? '' : '' + string;
|
||
return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;
|
||
};
|
||
};
|
||
_.escape = createEscaper(escapeMap);
|
||
_.unescape = createEscaper(unescapeMap);
|
||
|
||
// If the value of the named `property` is a function then invoke it with the
|
||
// `object` as context; otherwise, return it.
|
||
_.result = function(object, property, fallback) {
|
||
var value = object == null ? void 0 : object[property];
|
||
if (value === void 0) {
|
||
value = fallback;
|
||
}
|
||
return _.isFunction(value) ? value.call(object) : value;
|
||
};
|
||
|
||
// Generate a unique integer id (unique within the entire client session).
|
||
// Useful for temporary DOM ids.
|
||
var idCounter = 0;
|
||
_.uniqueId = function(prefix) {
|
||
var id = ++idCounter + '';
|
||
return prefix ? prefix + id : id;
|
||
};
|
||
|
||
// By default, Underscore uses ERB-style template delimiters, change the
|
||
// following template settings to use alternative delimiters.
|
||
_.templateSettings = {
|
||
evaluate : /<%([\s\S]+?)%>/g,
|
||
interpolate : /<%=([\s\S]+?)%>/g,
|
||
escape : /<%-([\s\S]+?)%>/g
|
||
};
|
||
|
||
// When customizing `templateSettings`, if you don't want to define an
|
||
// interpolation, evaluation or escaping regex, we need one that is
|
||
// guaranteed not to match.
|
||
var noMatch = /(.)^/;
|
||
|
||
// Certain characters need to be escaped so that they can be put into a
|
||
// string literal.
|
||
var escapes = {
|
||
"'": "'",
|
||
'\\': '\\',
|
||
'\r': 'r',
|
||
'\n': 'n',
|
||
'\u2028': 'u2028',
|
||
'\u2029': 'u2029'
|
||
};
|
||
|
||
var escaper = /\\|'|\r|\n|\u2028|\u2029/g;
|
||
|
||
var escapeChar = function(match) {
|
||
return '\\' + escapes[match];
|
||
};
|
||
|
||
// JavaScript micro-templating, similar to John Resig's implementation.
|
||
// Underscore templating handles arbitrary delimiters, preserves whitespace,
|
||
// and correctly escapes quotes within interpolated code.
|
||
// NB: `oldSettings` only exists for backwards compatibility.
|
||
_.template = function(text, settings, oldSettings) {
|
||
if (!settings && oldSettings) settings = oldSettings;
|
||
settings = _.defaults({}, settings, _.templateSettings);
|
||
|
||
// Combine delimiters into one regular expression via alternation.
|
||
var matcher = RegExp([
|
||
(settings.escape || noMatch).source,
|
||
(settings.interpolate || noMatch).source,
|
||
(settings.evaluate || noMatch).source
|
||
].join('|') + '|$', 'g');
|
||
|
||
// Compile the template source, escaping string literals appropriately.
|
||
var index = 0;
|
||
var source = "__p+='";
|
||
text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
|
||
source += text.slice(index, offset).replace(escaper, escapeChar);
|
||
index = offset + match.length;
|
||
|
||
if (escape) {
|
||
source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
|
||
} else if (interpolate) {
|
||
source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
|
||
} else if (evaluate) {
|
||
source += "';\n" + evaluate + "\n__p+='";
|
||
}
|
||
|
||
// Adobe VMs need the match returned to produce the correct offest.
|
||
return match;
|
||
});
|
||
source += "';\n";
|
||
|
||
// If a variable is not specified, place data values in local scope.
|
||
if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
|
||
|
||
source = "var __t,__p='',__j=Array.prototype.join," +
|
||
"print=function(){__p+=__j.call(arguments,'');};\n" +
|
||
source + 'return __p;\n';
|
||
|
||
try {
|
||
var render = new Function(settings.variable || 'obj', '_', source);
|
||
} catch (e) {
|
||
e.source = source;
|
||
throw e;
|
||
}
|
||
|
||
var template = function(data) {
|
||
return render.call(this, data, _);
|
||
};
|
||
|
||
// Provide the compiled source as a convenience for precompilation.
|
||
var argument = settings.variable || 'obj';
|
||
template.source = 'function(' + argument + '){\n' + source + '}';
|
||
|
||
return template;
|
||
};
|
||
|
||
// Add a "chain" function. Start chaining a wrapped Underscore object.
|
||
_.chain = function(obj) {
|
||
var instance = _(obj);
|
||
instance._chain = true;
|
||
return instance;
|
||
};
|
||
|
||
// OOP
|
||
// ---------------
|
||
// If Underscore is called as a function, it returns a wrapped object that
|
||
// can be used OO-style. This wrapper holds altered versions of all the
|
||
// underscore functions. Wrapped objects may be chained.
|
||
|
||
// Helper function to continue chaining intermediate results.
|
||
var result = function(instance, obj) {
|
||
return instance._chain ? _(obj).chain() : obj;
|
||
};
|
||
|
||
// Add your own custom functions to the Underscore object.
|
||
_.mixin = function(obj) {
|
||
_.each(_.functions(obj), function(name) {
|
||
var func = _[name] = obj[name];
|
||
_.prototype[name] = function() {
|
||
var args = [this._wrapped];
|
||
push.apply(args, arguments);
|
||
return result(this, func.apply(_, args));
|
||
};
|
||
});
|
||
};
|
||
|
||
// Add all of the Underscore functions to the wrapper object.
|
||
_.mixin(_);
|
||
|
||
// Add all mutator Array functions to the wrapper.
|
||
_.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
|
||
var method = ArrayProto[name];
|
||
_.prototype[name] = function() {
|
||
var obj = this._wrapped;
|
||
method.apply(obj, arguments);
|
||
if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];
|
||
return result(this, obj);
|
||
};
|
||
});
|
||
|
||
// Add all accessor Array functions to the wrapper.
|
||
_.each(['concat', 'join', 'slice'], function(name) {
|
||
var method = ArrayProto[name];
|
||
_.prototype[name] = function() {
|
||
return result(this, method.apply(this._wrapped, arguments));
|
||
};
|
||
});
|
||
|
||
// Extracts the result from a wrapped and chained object.
|
||
_.prototype.value = function() {
|
||
return this._wrapped;
|
||
};
|
||
|
||
// Provide unwrapping proxy for some methods used in engine operations
|
||
// such as arithmetic and JSON stringification.
|
||
_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
|
||
|
||
_.prototype.toString = function() {
|
||
return '' + this._wrapped;
|
||
};
|
||
|
||
// AMD registration happens at the end for compatibility with AMD loaders
|
||
// that may not enforce next-turn semantics on modules. Even though general
|
||
// practice for AMD registration is to be anonymous, underscore registers
|
||
// as a named module because, like jQuery, it is a base library that is
|
||
// popular enough to be bundled in a third party lib, but not be part of
|
||
// an AMD load request. Those cases could generate an error when an
|
||
// anonymous define() is called outside of a loader request.
|
||
if (typeof define === 'function' && define.amd) {
|
||
define('underscore', [], function() {
|
||
return _;
|
||
});
|
||
}
|
||
}.call(this));
|
||
|
||
!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return re.apply(null,arguments)}function b(a){re=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)return!1;return!0}function f(a){return void 0===a}function g(a){return"number"==typeof a||"[object Number]"===Object.prototype.toString.call(a)}function h(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function i(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function j(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function k(a,b){for(var c in b)j(b,c)&&(a[c]=b[c]);return j(b,"toString")&&(a.toString=b.toString),j(b,"valueOf")&&(a.valueOf=b.valueOf),a}function l(a,b,c,d){return sb(a,b,c,d,!0).utc()}function m(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function n(a){return null==a._pf&&(a._pf=m()),a._pf}function o(a){if(null==a._isValid){var b=n(a),c=te.call(b.parsedDateParts,function(a){return null!=a}),d=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c);if(a._strict&&(d=d&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour),null!=Object.isFrozen&&Object.isFrozen(a))return d;a._isValid=d}return a._isValid}function p(a){var b=l(NaN);return null!=a?k(n(b),a):n(b).userInvalidated=!0,b}function q(a,b){var c,d,e;if(f(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),f(b._i)||(a._i=b._i),f(b._f)||(a._f=b._f),f(b._l)||(a._l=b._l),f(b._strict)||(a._strict=b._strict),f(b._tzm)||(a._tzm=b._tzm),f(b._isUTC)||(a._isUTC=b._isUTC),f(b._offset)||(a._offset=b._offset),f(b._pf)||(a._pf=n(b)),f(b._locale)||(a._locale=b._locale),ue.length>0)for(c=0;c<ue.length;c++)d=ue[c],e=b[d],f(e)||(a[d]=e);return a}function r(b){q(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),ve===!1&&(ve=!0,a.updateOffset(this),ve=!1)}function s(a){return a instanceof r||null!=a&&null!=a._isAMomentObject}function t(a){return a<0?Math.ceil(a)||0:Math.floor(a)}function u(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=t(b)),c}function v(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;d<e;d++)(c&&a[d]!==b[d]||!c&&u(a[d])!==u(b[d]))&&g++;return g+f}function w(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function x(b,c){var d=!0;return k(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,b),d){for(var e,f=[],g=0;g<arguments.length;g++){if(e="","object"==typeof arguments[g]){e+="\n["+g+"] ";for(var h in arguments[0])e+=h+": "+arguments[0][h]+", ";e=e.slice(0,-2)}else e=arguments[g];f.push(e)}w(b+"\nArguments: "+Array.prototype.slice.call(f).join("")+"\n"+(new Error).stack),d=!1}return c.apply(this,arguments)},c)}function y(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),we[b]||(w(c),we[b]=!0)}function z(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function A(a){var b,c;for(c in a)b=a[c],z(b)?this[c]=b:this["_"+c]=b;this._config=a,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)}function B(a,b){var c,e=k({},a);for(c in b)j(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},k(e[c],a[c]),k(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)j(a,c)&&!j(b,c)&&d(a[c])&&(e[c]=k({},e[c]));return e}function C(a){null!=a&&this.set(a)}function D(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return z(d)?d.call(b,c):d}function E(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function F(){return this._invalidDate}function G(a){return this._ordinal.replace("%d",a)}function H(a,b,c,d){var e=this._relativeTime[c];return z(e)?e(a,b,c,d):e.replace(/%d/i,a)}function I(a,b){var c=this._relativeTime[a>0?"future":"past"];return z(c)?c(b):c.replace(/%s/i,b)}function J(a,b){var c=a.toLowerCase();Ge[c]=Ge[c+"s"]=Ge[b]=a}function K(a){return"string"==typeof a?Ge[a]||Ge[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)j(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(a,b){He[a]=b}function N(a){var b=[];for(var c in a)b.push({unit:c,priority:He[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function O(b,c){return function(d){return null!=d?(Q(this,b,d),a.updateOffset(this,c),this):P(this,b)}}function P(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function Q(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function R(a){return a=K(a),z(this[a])?this[a]():this}function S(a,b){if("object"==typeof a){a=L(a);for(var c=N(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=K(a),z(this[a]))return this[a](b);return this}function T(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function U(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Le[a]=e),b&&(Le[b[0]]=function(){return T(e.apply(this,arguments),b[1],b[2])}),c&&(Le[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function V(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function W(a){var b,c,d=a.match(Ie);for(b=0,c=d.length;b<c;b++)Le[d[b]]?d[b]=Le[d[b]]:d[b]=V(d[b]);return function(b){var e,f="";for(e=0;e<c;e++)f+=z(d[e])?d[e].call(b,a):d[e];return f}}function X(a,b){return a.isValid()?(b=Y(b,a.localeData()),Ke[b]=Ke[b]||W(b),Ke[b](a)):a.localeData().invalidDate()}function Y(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Je.lastIndex=0;d>=0&&Je.test(a);)a=a.replace(Je,c),Je.lastIndex=0,d-=1;return a}function Z(a,b,c){bf[a]=z(b)?b:function(a,d){return a&&c?c:b}}function $(a,b){return j(bf,a)?bf[a](b._strict,b._locale):new RegExp(_(a))}function _(a){return aa(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function aa(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function ba(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),g(b)&&(d=function(a,c){c[b]=u(a)}),c=0;c<a.length;c++)cf[a[c]]=d}function ca(a,b){ba(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function da(a,b,c){null!=b&&j(cf,a)&&cf[a](b,c._a,c,a)}function ea(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function fa(a,b){return a?c(this._months)?this._months[a.month()]:this._months[(this._months.isFormat||of).test(b)?"format":"standalone"][a.month()]:c(this._months)?this._months:this._months.standalone}function ga(a,b){return a?c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[of.test(b)?"format":"standalone"][a.month()]:c(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function ha(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;d<12;++d)f=l([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=nf.call(this._shortMonthsParse,g),e!==-1?e:null):(e=nf.call(this._longMonthsParse,g),e!==-1?e:null):"MMM"===b?(e=nf.call(this._shortMonthsParse,g),e!==-1?e:(e=nf.call(this._longMonthsParse,g),e!==-1?e:null)):(e=nf.call(this._longMonthsParse,g),e!==-1?e:(e=nf.call(this._shortMonthsParse,g),e!==-1?e:null))}function ia(a,b,c){var d,e,f;if(this._monthsParseExact)return ha.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;d<12;d++){if(e=l([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ja(a,b){var c;if(!a.isValid())return a;if("string"==typeof b)if(/^\d+$/.test(b))b=u(b);else if(b=a.localeData().monthsParse(b),!g(b))return a;return c=Math.min(a.date(),ea(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ka(b){return null!=b?(ja(this,b),a.updateOffset(this,!0),this):P(this,"Month")}function la(){return ea(this.year(),this.month())}function ma(a){return this._monthsParseExact?(j(this,"_monthsRegex")||oa.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(j(this,"_monthsShortRegex")||(this._monthsShortRegex=rf),this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex)}function na(a){return this._monthsParseExact?(j(this,"_monthsRegex")||oa.call(this),a?this._monthsStrictRegex:this._monthsRegex):(j(this,"_monthsRegex")||(this._monthsRegex=sf),this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex)}function oa(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;b<12;b++)c=l([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for(d.sort(a),e.sort(a),f.sort(a),b=0;b<12;b++)d[b]=aa(d[b]),e[b]=aa(e[b]);for(b=0;b<24;b++)f[b]=aa(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")}function pa(a){return qa(a)?366:365}function qa(a){return a%4===0&&a%100!==0||a%400===0}function ra(){return qa(this.year())}function sa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return a<100&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ta(a){var b=new Date(Date.UTC.apply(null,arguments));return a<100&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ua(a,b,c){var d=7+b-c,e=(7+ta(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return j<=0?(f=a-1,g=pa(f)+j):j>pa(a)?(f=a+1,g=j-pa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return g<1?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(pa(a)-d+e)/7}function ya(a){return wa(a,this._week.dow,this._week.doy).week}function za(){return this._week.dow}function Aa(){return this._week.doy}function Ba(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Ca(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function Da(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Ea(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Fa(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:c(this._weekdays)?this._weekdays:this._weekdays.standalone}function Ga(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ha(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ia(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;d<7;++d)f=l([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=nf.call(this._weekdaysParse,g),e!==-1?e:null):"ddd"===b?(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:null):(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:null):"dddd"===b?(e=nf.call(this._weekdaysParse,g),e!==-1?e:(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:null))):"ddd"===b?(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:(e=nf.call(this._weekdaysParse,g),e!==-1?e:(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:null))):(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:(e=nf.call(this._weekdaysParse,g),e!==-1?e:(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:null)))}function Ja(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ia.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;d<7;d++){if(e=l([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Da(a,this.localeData()),this.add(a-b,"d")):b}function La(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Ma(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Ea(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Na(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(j(this,"_weekdaysRegex")||(this._weekdaysRegex=yf),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Oa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(j(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=zf),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Pa(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Qa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(j(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Af),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Qa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],j=[];for(b=0;b<7;b++)c=l([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;b<7;b++)h[b]=aa(h[b]),i[b]=aa(i[b]),j[b]=aa(j[b]);this._weekdaysRegex=new RegExp("^("+j.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")}function Ra(){return this.hours()%12||12}function Sa(){return this.hours()||24}function Ta(a,b){U(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Ua(a,b){return b._meridiemParse}function Va(a){return"p"===(a+"").toLowerCase().charAt(0)}function Wa(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Xa(a){return a?a.toLowerCase().replace("_","-"):a}function Ya(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Xa(a[f]).split("-"),b=e.length,c=Xa(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=Za(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function Za(a){var b=null;if(!Ff[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=Bf._abbr,require("./locale/"+a),$a(b)}catch(a){}return Ff[a]}function $a(a,b){var c;return a&&(c=f(b)?bb(a):_a(a,b),c&&(Bf=c)),Bf._abbr}function _a(a,b){if(null!==b){var c=Ef;if(b.abbr=a,null!=Ff[a])y("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."),c=Ff[a]._config;else if(null!=b.parentLocale){if(null==Ff[b.parentLocale])return Gf[b.parentLocale]||(Gf[b.parentLocale]=[]),Gf[b.parentLocale].push({name:a,config:b}),null;c=Ff[b.parentLocale]._config}return Ff[a]=new C(B(c,b)),Gf[a]&&Gf[a].forEach(function(a){_a(a.name,a.config)}),$a(a),Ff[a]}return delete Ff[a],null}function ab(a,b){if(null!=b){var c,d=Ef;null!=Ff[a]&&(d=Ff[a]._config),b=B(d,b),c=new C(b),c.parentLocale=Ff[a],Ff[a]=c,$a(a)}else null!=Ff[a]&&(null!=Ff[a].parentLocale?Ff[a]=Ff[a].parentLocale:null!=Ff[a]&&delete Ff[a]);return Ff[a]}function bb(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Bf;if(!c(a)){if(b=Za(a))return b;a=[a]}return Ya(a)}function cb(){return ze(Ff)}function db(a){var b,c=a._a;return c&&n(a).overflow===-2&&(b=c[ef]<0||c[ef]>11?ef:c[ff]<1||c[ff]>ea(c[df],c[ef])?ff:c[gf]<0||c[gf]>24||24===c[gf]&&(0!==c[hf]||0!==c[jf]||0!==c[kf])?gf:c[hf]<0||c[hf]>59?hf:c[jf]<0||c[jf]>59?jf:c[kf]<0||c[kf]>999?kf:-1,n(a)._overflowDayOfYear&&(b<df||b>ff)&&(b=ff),n(a)._overflowWeeks&&b===-1&&(b=lf),n(a)._overflowWeekday&&b===-1&&(b=mf),n(a).overflow=b),a}function eb(a){var b,c,d,e,f,g,h=a._i,i=Hf.exec(h)||If.exec(h);if(i){for(n(a).iso=!0,b=0,c=Kf.length;b<c;b++)if(Kf[b][1].exec(i[1])){e=Kf[b][0],d=Kf[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Lf.length;b<c;b++)if(Lf[b][1].exec(i[3])){f=(i[2]||" ")+Lf[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Jf.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),lb(a)}else a._isValid=!1}function fb(a){var b,c,d,e,f,g,h,i,j={" GMT":" +0000"," EDT":" -0400"," EST":" -0500"," CDT":" -0500"," CST":" -0600"," MDT":" -0600"," MST":" -0700"," PDT":" -0700"," PST":" -0800"},k="YXWVUTSRQPONZABCDEFGHIKLM";if(b=a._i.replace(/\([^\)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s|\s$/g,""),c=Nf.exec(b)){if(d=c[1]?"ddd"+(5===c[1].length?", ":" "):"",e="D MMM "+(c[2].length>10?"YYYY ":"YY "),f="HH:mm"+(c[4]?":ss":""),c[1]){var l=new Date(c[2]),m=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][l.getDay()];if(c[1].substr(0,3)!==m)return n(a).weekdayMismatch=!0,void(a._isValid=!1)}switch(c[5].length){case 2:0===i?h=" +0000":(i=k.indexOf(c[5][1].toUpperCase())-12,h=(i<0?" -":" +")+(""+i).replace(/^-?/,"0").match(/..$/)[0]+"00");break;case 4:h=j[c[5]];break;default:h=j[" GMT"]}c[5]=h,a._i=c.splice(1).join(""),g=" ZZ",a._f=d+e+f+g,lb(a),n(a).rfc2822=!0}else a._isValid=!1}function gb(b){var c=Mf.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(eb(b),void(b._isValid===!1&&(delete b._isValid,fb(b),b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b)))))}function hb(a,b,c){return null!=a?a:null!=b?b:c}function ib(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function jb(a){var b,c,d,e,f=[];if(!a._d){for(d=ib(a),a._w&&null==a._a[ff]&&null==a._a[ef]&&kb(a),null!=a._dayOfYear&&(e=hb(a._a[df],d[df]),(a._dayOfYear>pa(e)||0===a._dayOfYear)&&(n(a)._overflowDayOfYear=!0),c=ta(e,0,a._dayOfYear),a._a[ef]=c.getUTCMonth(),a._a[ff]=c.getUTCDate()),b=0;b<3&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;b<7;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[gf]&&0===a._a[hf]&&0===a._a[jf]&&0===a._a[kf]&&(a._nextDay=!0,a._a[gf]=0),a._d=(a._useUTC?ta:sa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[gf]=24)}}function kb(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=hb(b.GG,a._a[df],wa(tb(),1,4).year),d=hb(b.W,1),e=hb(b.E,1),(e<1||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=wa(tb(),f,g);c=hb(b.gg,a._a[df],j.year),d=hb(b.w,j.week),null!=b.d?(e=b.d,(e<0||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}d<1||d>xa(c,f,g)?n(a)._overflowWeeks=!0:null!=i?n(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[df]=h.year,a._dayOfYear=h.dayOfYear)}function lb(b){if(b._f===a.ISO_8601)return void eb(b);if(b._f===a.RFC_2822)return void fb(b);b._a=[],n(b).empty=!0;var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=Y(b._f,b._locale).match(Ie)||[],c=0;c<e.length;c++)f=e[c],d=(h.match($(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&n(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Le[f]?(d?n(b).empty=!1:n(b).unusedTokens.push(f),da(f,d,b)):b._strict&&!d&&n(b).unusedTokens.push(f);n(b).charsLeftOver=i-j,h.length>0&&n(b).unusedInput.push(h),b._a[gf]<=12&&n(b).bigHour===!0&&b._a[gf]>0&&(n(b).bigHour=void 0),n(b).parsedDateParts=b._a.slice(0),n(b).meridiem=b._meridiem,b._a[gf]=mb(b._locale,b._a[gf],b._meridiem),jb(b),db(b)}function mb(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&b<12&&(b+=12),d||12!==b||(b=0),b):b}function nb(a){var b,c,d,e,f;if(0===a._f.length)return n(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=q({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],lb(b),o(b)&&(f+=n(b).charsLeftOver,f+=10*n(b).unusedTokens.length,n(b).score=f,(null==d||f<d)&&(d=f,c=b));k(a,c||b)}function ob(a){if(!a._d){var b=L(a._i);a._a=i([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),jb(a)}}function pb(a){var b=new r(db(qb(a)));return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function qb(a){var b=a._i,d=a._f;return a._locale=a._locale||bb(a._l),null===b||void 0===d&&""===b?p({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),s(b)?new r(db(b)):(h(b)?a._d=b:c(d)?nb(a):d?lb(a):rb(a),o(a)||(a._d=null),a))}function rb(b){var e=b._i;f(e)?b._d=new Date(a.now()):h(e)?b._d=new Date(e.valueOf()):"string"==typeof e?gb(b):c(e)?(b._a=i(e.slice(0),function(a){return parseInt(a,10)}),jb(b)):d(e)?ob(b):g(e)?b._d=new Date(e):a.createFromInputFallback(b)}function sb(a,b,f,g,h){var i={};return f!==!0&&f!==!1||(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,pb(i)}function tb(a,b,c,d){return sb(a,b,c,d,!1)}function ub(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return tb();for(d=b[0],e=1;e<b.length;++e)b[e].isValid()&&!b[e][a](d)||(d=b[e]);return d}function vb(){var a=[].slice.call(arguments,0);return ub("isBefore",a)}function wb(){var a=[].slice.call(arguments,0);return ub("isAfter",a)}function xb(a){for(var b in a)if(Rf.indexOf(b)===-1||null!=a[b]&&isNaN(a[b]))return!1;for(var c=!1,d=0;d<Rf.length;++d)if(a[Rf[d]]){if(c)return!1;parseFloat(a[Rf[d]])!==u(a[Rf[d]])&&(c=!0)}return!0}function yb(){return this._isValid}function zb(){return Sb(NaN)}function Ab(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._isValid=xb(b),this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=bb(),this._bubble()}function Bb(a){return a instanceof Ab}function Cb(a){return a<0?Math.round(-1*a)*-1:Math.round(a)}function Db(a,b){U(a,0,0,function(){var a=this.utcOffset(),c="+";return a<0&&(a=-a,c="-"),c+T(~~(a/60),2)+b+T(~~a%60,2)})}function Eb(a,b){var c=(b||"").match(a);if(null===c)return null;var d=c[c.length-1]||[],e=(d+"").match(Sf)||["-",0,0],f=+(60*e[1])+u(e[2]);return 0===f?0:"+"===e[0]?f:-f}function Fb(b,c){var d,e;return c._isUTC?(d=c.clone(),e=(s(b)||h(b)?b.valueOf():tb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):tb(b).local()}function Gb(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Hb(b,c,d){var e,f=this._offset||0;if(!this.isValid())return null!=b?this:NaN;if(null!=b){if("string"==typeof b){if(b=Eb($e,b),null===b)return this}else Math.abs(b)<16&&!d&&(b=60*b);return!this._isUTC&&c&&(e=Gb(this)),this._offset=b,this._isUTC=!0,null!=e&&this.add(e,"m"),f!==b&&(!c||this._changeInProgress?Xb(this,Sb(b-f,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?f:Gb(this)}function Ib(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Jb(a){return this.utcOffset(0,a)}function Kb(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Gb(this),"m")),this}function Lb(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var a=Eb(Ze,this._i);null!=a?this.utcOffset(a):this.utcOffset(0,!0)}return this}function Mb(a){return!!this.isValid()&&(a=a?tb(a).utcOffset():0,(this.utcOffset()-a)%60===0)}function Nb(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ob(){if(!f(this._isDSTShifted))return this._isDSTShifted;var a={};if(q(a,this),a=qb(a),a._a){var b=a._isUTC?l(a._a):tb(a._a);this._isDSTShifted=this.isValid()&&v(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Pb(){return!!this.isValid()&&!this._isUTC}function Qb(){return!!this.isValid()&&this._isUTC}function Rb(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Sb(a,b){var c,d,e,f=a,h=null;return Bb(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:g(a)?(f={},b?f[b]=a:f.milliseconds=a):(h=Tf.exec(a))?(c="-"===h[1]?-1:1,f={y:0,d:u(h[ff])*c,h:u(h[gf])*c,m:u(h[hf])*c,s:u(h[jf])*c,ms:u(Cb(1e3*h[kf]))*c}):(h=Uf.exec(a))?(c="-"===h[1]?-1:1,f={y:Tb(h[2],c),M:Tb(h[3],c),w:Tb(h[4],c),d:Tb(h[5],c),h:Tb(h[6],c),m:Tb(h[7],c),s:Tb(h[8],c)}):null==f?f={}:"object"==typeof f&&("from"in f||"to"in f)&&(e=Vb(tb(f.from),tb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new Ab(f),Bb(a)&&j(a,"_locale")&&(d._locale=a._locale),d}function Tb(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function Ub(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Vb(a,b){var c;return a.isValid()&&b.isValid()?(b=Fb(b,a),a.isBefore(b)?c=Ub(a,b):(c=Ub(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function Wb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(y(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Sb(c,d),Xb(this,e,a),this}}function Xb(b,c,d,e){var f=c._milliseconds,g=Cb(c._days),h=Cb(c._months);b.isValid()&&(e=null==e||e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&Q(b,"Date",P(b,"Date")+g*d),h&&ja(b,P(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function Yb(a,b){var c=a.diff(b,"days",!0);return c<-6?"sameElse":c<-1?"lastWeek":c<0?"lastDay":c<1?"sameDay":c<2?"nextDay":c<7?"nextWeek":"sameElse"}function Zb(b,c){var d=b||tb(),e=Fb(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(z(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,tb(d)))}function $b(){return new r(this)}function _b(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf())}function ac(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf())}function bc(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function cc(a,b){var c,d=s(a)?a:tb(a);return!(!this.isValid()||!d.isValid())&&(b=K(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf()))}function dc(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function ec(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function fc(a,b,c){var d,e,f,g;return this.isValid()?(d=Fb(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),"year"===b||"month"===b||"quarter"===b?(g=gc(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:t(g)):NaN):NaN}function gc(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,"months");return b-f<0?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function hc(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function ic(){if(!this.isValid())return null;var a=this.clone().utc();return a.year()<0||a.year()>9999?X(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):z(Date.prototype.toISOString)?this.toDate().toISOString():X(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function jc(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var a="moment",b="";this.isLocal()||(a=0===this.utcOffset()?"moment.utc":"moment.parseZone",b="Z");var c="["+a+'("]',d=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",e="-MM-DD[T]HH:mm:ss.SSS",f=b+'[")]';return this.format(c+d+e+f)}function kc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=X(this,b);return this.localeData().postformat(c)}function lc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function mc(a){return this.from(tb(),a)}function nc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function oc(a){return this.to(tb(),a)}function pc(a){var b;return void 0===a?this._locale._abbr:(b=bb(a),null!=b&&(this._locale=b),this)}function qc(){return this._locale}function rc(a){switch(a=K(a)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function sc(a){return a=K(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function tc(){return this._d.valueOf()-6e4*(this._offset||0)}function uc(){return Math.floor(this.valueOf()/1e3)}function vc(){return new Date(this.valueOf())}function wc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function xc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function yc(){return this.isValid()?this.toISOString():null}function zc(){return o(this)}function Ac(){
|
||
return k({},n(this))}function Bc(){return n(this).overflow}function Cc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Dc(a,b){U(0,[a,a.length],0,b)}function Ec(a){return Ic.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Fc(a){return Ic.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Gc(){return xa(this.year(),1,4)}function Hc(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ic(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Jc.call(this,a,b,c,d,e))}function Jc(a,b,c,d,e){var f=va(a,b,c,d,e),g=ta(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Kc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Lc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Mc(a,b){b[kf]=u(1e3*("0."+a))}function Nc(){return this._isUTC?"UTC":""}function Oc(){return this._isUTC?"Coordinated Universal Time":""}function Pc(a){return tb(1e3*a)}function Qc(){return tb.apply(null,arguments).parseZone()}function Rc(a){return a}function Sc(a,b,c,d){var e=bb(),f=l().set(d,b);return e[c](f,a)}function Tc(a,b,c){if(g(a)&&(b=a,a=void 0),a=a||"",null!=b)return Sc(a,b,c,"month");var d,e=[];for(d=0;d<12;d++)e[d]=Sc(a,d,c,"month");return e}function Uc(a,b,c,d){"boolean"==typeof a?(g(b)&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,g(b)&&(c=b,b=void 0),b=b||"");var e=bb(),f=a?e._week.dow:0;if(null!=c)return Sc(b,(c+f)%7,d,"day");var h,i=[];for(h=0;h<7;h++)i[h]=Sc(b,(h+f)%7,d,"day");return i}function Vc(a,b){return Tc(a,b,"months")}function Wc(a,b){return Tc(a,b,"monthsShort")}function Xc(a,b,c){return Uc(a,b,c,"weekdays")}function Yc(a,b,c){return Uc(a,b,c,"weekdaysShort")}function Zc(a,b,c){return Uc(a,b,c,"weekdaysMin")}function $c(){var a=this._data;return this._milliseconds=dg(this._milliseconds),this._days=dg(this._days),this._months=dg(this._months),a.milliseconds=dg(a.milliseconds),a.seconds=dg(a.seconds),a.minutes=dg(a.minutes),a.hours=dg(a.hours),a.months=dg(a.months),a.years=dg(a.years),this}function _c(a,b,c,d){var e=Sb(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function ad(a,b){return _c(this,a,b,1)}function bd(a,b){return _c(this,a,b,-1)}function cd(a){return a<0?Math.floor(a):Math.ceil(a)}function dd(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||f<=0&&g<=0&&h<=0||(f+=864e5*cd(fd(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=t(f/1e3),i.seconds=a%60,b=t(a/60),i.minutes=b%60,c=t(b/60),i.hours=c%24,g+=t(c/24),e=t(ed(g)),h+=e,g-=cd(fd(e)),d=t(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function ed(a){return 4800*a/146097}function fd(a){return 146097*a/4800}function gd(a){if(!this.isValid())return NaN;var b,c,d=this._milliseconds;if(a=K(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+ed(b),"month"===a?c:c/12;switch(b=this._days+Math.round(fd(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function hd(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*u(this._months/12):NaN}function id(a){return function(){return this.as(a)}}function jd(a){return a=K(a),this.isValid()?this[a+"s"]():NaN}function kd(a){return function(){return this.isValid()?this._data[a]:NaN}}function ld(){return t(this.days()/7)}function md(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function nd(a,b,c){var d=Sb(a).abs(),e=tg(d.as("s")),f=tg(d.as("m")),g=tg(d.as("h")),h=tg(d.as("d")),i=tg(d.as("M")),j=tg(d.as("y")),k=e<=ug.ss&&["s",e]||e<ug.s&&["ss",e]||f<=1&&["m"]||f<ug.m&&["mm",f]||g<=1&&["h"]||g<ug.h&&["hh",g]||h<=1&&["d"]||h<ug.d&&["dd",h]||i<=1&&["M"]||i<ug.M&&["MM",i]||j<=1&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,md.apply(null,k)}function od(a){return void 0===a?tg:"function"==typeof a&&(tg=a,!0)}function pd(a,b){return void 0!==ug[a]&&(void 0===b?ug[a]:(ug[a]=b,"s"===a&&(ug.ss=b-1),!0))}function qd(a){if(!this.isValid())return this.localeData().invalidDate();var b=this.localeData(),c=nd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function rd(){if(!this.isValid())return this.localeData().invalidDate();var a,b,c,d=vg(this._milliseconds)/1e3,e=vg(this._days),f=vg(this._months);a=t(d/60),b=t(a/60),d%=60,a%=60,c=t(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(m<0?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}
|
||
//! moment.js locale configuration
|
||
//! locale : Belarusian [be]
|
||
//! author : Dmitry Demidov : https://github.com/demidov91
|
||
//! author: Praleska: http://praleska.pro/
|
||
//! Author : Menelion Elensúle : https://github.com/Oire
|
||
function sd(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function td(a,b,c){var d={mm:b?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:b?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"};return"m"===c?b?"хвіліна":"хвіліну":"h"===c?b?"гадзіна":"гадзіну":a+" "+sd(d[c],+a)}
|
||
//! moment.js locale configuration
|
||
//! locale : Breton [br]
|
||
//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
|
||
function ud(a,b,c){var d={mm:"munutenn",MM:"miz",dd:"devezh"};return a+" "+xd(d[c],a)}function vd(a){switch(wd(a)){case 1:case 3:case 4:case 5:case 9:return a+" bloaz";default:return a+" vloaz"}}function wd(a){return a>9?wd(a%10):a}function xd(a,b){return 2===b?yd(a):a}function yd(a){var b={m:"v",b:"v",d:"z"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)}
|
||
//! moment.js locale configuration
|
||
//! locale : Bosnian [bs]
|
||
//! author : Nedim Cholich : https://github.com/frontyard
|
||
//! based on (hr) translation by Bojan Marković
|
||
function zd(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Ad(a){return a>1&&a<5&&1!==~~(a/10)}function Bd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekund":"pár sekundami";case"m":return b?"minuta":d?"minutu":"minutou";case"mm":return b||d?e+(Ad(a)?"minuty":"minut"):e+"minutami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(Ad(a)?"hodiny":"hodin"):e+"hodinami";break;case"d":return b||d?"den":"dnem";case"dd":return b||d?e+(Ad(a)?"dny":"dní"):e+"dny";break;case"M":return b||d?"měsíc":"měsícem";case"MM":return b||d?e+(Ad(a)?"měsíce":"měsíců"):e+"měsíci";break;case"y":return b||d?"rok":"rokem";case"yy":return b||d?e+(Ad(a)?"roky":"let"):e+"lety"}}
|
||
//! moment.js locale configuration
|
||
//! locale : German (Austria) [de-at]
|
||
//! author : lluchs : https://github.com/lluchs
|
||
//! author: Menelion Elensúle: https://github.com/Oire
|
||
//! author : Martin Groller : https://github.com/MadMG
|
||
//! author : Mikolaj Dadela : https://github.com/mik01aj
|
||
function Cd(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}
|
||
//! moment.js locale configuration
|
||
//! locale : German (Switzerland) [de-ch]
|
||
//! author : sschueller : https://github.com/sschueller
|
||
function Dd(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}
|
||
//! moment.js locale configuration
|
||
//! locale : German [de]
|
||
//! author : lluchs : https://github.com/lluchs
|
||
//! author: Menelion Elensúle: https://github.com/Oire
|
||
//! author : Mikolaj Dadela : https://github.com/mik01aj
|
||
function Ed(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}
|
||
//! moment.js locale configuration
|
||
//! locale : Estonian [et]
|
||
//! author : Henry Kehlmann : https://github.com/madhenry
|
||
//! improvements : Illimar Tambek : https://github.com/ragulka
|
||
function Fd(a,b,c,d){var e={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:[a+" minuti",a+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[a+" tunni",a+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[a+" kuu",a+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[a+" aasta",a+" aastat"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function Gd(a,b,c,d){var e="";switch(c){case"s":return d?"muutaman sekunnin":"muutama sekunti";case"m":return d?"minuutin":"minuutti";case"mm":e=d?"minuutin":"minuuttia";break;case"h":return d?"tunnin":"tunti";case"hh":e=d?"tunnin":"tuntia";break;case"d":return d?"päivän":"päivä";case"dd":e=d?"päivän":"päivää";break;case"M":return d?"kuukauden":"kuukausi";case"MM":e=d?"kuukauden":"kuukautta";break;case"y":return d?"vuoden":"vuosi";case"yy":e=d?"vuoden":"vuotta"}return e=Hd(a,d)+" "+e}function Hd(a,b){return a<10?b?$g[a]:Zg[a]:a}
|
||
//! moment.js locale configuration
|
||
//! locale : Konkani Latin script [gom-latn]
|
||
//! author : The Discoverer : https://github.com/WikiDiscoverer
|
||
function Id(a,b,c,d){var e={s:["thodde secondanim","thodde second"],m:["eka mintan","ek minute"],mm:[a+" mintanim",a+" mintam"],h:["eka horan","ek hor"],hh:[a+" horanim",a+" hor"],d:["eka disan","ek dis"],dd:[a+" disanim",a+" dis"],M:["eka mhoinean","ek mhoino"],MM:[a+" mhoineanim",a+" mhoine"],y:["eka vorsan","ek voros"],yy:[a+" vorsanim",a+" vorsam"]};return b?e[c][0]:e[c][1]}
|
||
//! moment.js locale configuration
|
||
//! locale : Croatian [hr]
|
||
//! author : Bojan Marković : https://github.com/bmarkovic
|
||
function Jd(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}function Kd(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function Ld(a){return(a?"":"[múlt] ")+"["+ih[this.day()]+"] LT[-kor]"}
|
||
//! moment.js locale configuration
|
||
//! locale : Icelandic [is]
|
||
//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
|
||
function Md(a){return a%100===11||a%10!==1}function Nd(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return b?"mínúta":"mínútu";case"mm":return Md(a)?e+(b||d?"mínútur":"mínútum"):b?e+"mínúta":e+"mínútu";case"hh":return Md(a)?e+(b||d?"klukkustundir":"klukkustundum"):e+"klukkustund";case"d":return b?"dagur":d?"dag":"degi";case"dd":return Md(a)?b?e+"dagar":e+(d?"daga":"dögum"):b?e+"dagur":e+(d?"dag":"degi");case"M":return b?"mánuður":d?"mánuð":"mánuði";case"MM":return Md(a)?b?e+"mánuðir":e+(d?"mánuði":"mánuðum"):b?e+"mánuður":e+(d?"mánuð":"mánuði");case"y":return b||d?"ár":"ári";case"yy":return Md(a)?e+(b||d?"ár":"árum"):e+(b||d?"ár":"ári")}}
|
||
//! moment.js locale configuration
|
||
//! locale : Luxembourgish [lb]
|
||
//! author : mweimerskirch : https://github.com/mweimerskirch
|
||
//! author : David Raison : https://github.com/kwisatz
|
||
function Od(a,b,c,d){var e={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 b?e[c][0]:e[c][1]}function Pd(a){var b=a.substr(0,a.indexOf(" "));return Rd(b)?"a "+a:"an "+a}function Qd(a){var b=a.substr(0,a.indexOf(" "));return Rd(b)?"viru "+a:"virun "+a}function Rd(a){if(a=parseInt(a,10),isNaN(a))return!1;if(a<0)return!0;if(a<10)return 4<=a&&a<=7;if(a<100){var b=a%10,c=a/10;return Rd(0===b?c:b)}if(a<1e4){for(;a>=10;)a/=10;return Rd(a)}return a/=1e3,Rd(a)}function Sd(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function Td(a,b,c,d){return b?Vd(c)[0]:d?Vd(c)[1]:Vd(c)[2]}function Ud(a){return a%10===0||a>10&&a<20}function Vd(a){return nh[a].split("_")}function Wd(a,b,c,d){var e=a+" ";return 1===a?e+Td(a,b,c[0],d):b?e+(Ud(a)?Vd(c)[1]:Vd(c)[0]):d?e+Vd(c)[1]:e+(Ud(a)?Vd(c)[1]:Vd(c)[2])}function Xd(a,b,c){return c?b%10===1&&b%100!==11?a[2]:a[3]:b%10===1&&b%100!==11?a[0]:a[1]}function Yd(a,b,c){return a+" "+Xd(oh[c],a,b)}function Zd(a,b,c){return Xd(oh[c],a,b)}function $d(a,b){return b?"dažas sekundes":"dažām sekundēm"}function _d(a,b,c,d){var e="";if(b)switch(c){case"s":e="काही सेकंद";break;case"m":e="एक मिनिट";break;case"mm":e="%d मिनिटे";break;case"h":e="एक तास";break;case"hh":e="%d तास";break;case"d":e="एक दिवस";break;case"dd":e="%d दिवस";break;case"M":e="एक महिना";break;case"MM":e="%d महिने";break;case"y":e="एक वर्ष";break;case"yy":e="%d वर्षे"}else switch(c){case"s":e="काही सेकंदां";break;case"m":e="एका मिनिटा";break;case"mm":e="%d मिनिटां";break;case"h":e="एका तासा";break;case"hh":e="%d तासां";break;case"d":e="एका दिवसा";break;case"dd":e="%d दिवसां";break;case"M":e="एका महिन्या";break;case"MM":e="%d महिन्यां";break;case"y":e="एका वर्षा";break;case"yy":e="%d वर्षां"}return e.replace(/%d/i,a)}function ae(a){return a%10<5&&a%10>1&&~~(a/10)%10!==1}function be(a,b,c){var d=a+" ";switch(c){case"m":return b?"minuta":"minutę";case"mm":return d+(ae(a)?"minuty":"minut");case"h":return b?"godzina":"godzinę";case"hh":return d+(ae(a)?"godziny":"godzin");case"MM":return d+(ae(a)?"miesiące":"miesięcy");case"yy":return d+(ae(a)?"lata":"lat")}}
|
||
//! moment.js locale configuration
|
||
//! locale : Romanian [ro]
|
||
//! author : Vlad Gurdiga : https://github.com/gurdiga
|
||
//! author : Valentin Agachi : https://github.com/avaly
|
||
function ce(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}
|
||
//! moment.js locale configuration
|
||
//! locale : Russian [ru]
|
||
//! author : Viktorminator : https://github.com/Viktorminator
|
||
//! Author : Menelion Elensúle : https://github.com/Oire
|
||
//! author : Коренберг Марк : https://github.com/socketpair
|
||
function de(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function ee(a,b,c){var d={mm:b?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===c?b?"минута":"минуту":a+" "+de(d[c],+a)}function fe(a){return a>1&&a<5}function ge(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"pár sekúnd":"pár sekundami";case"m":return b?"minúta":d?"minútu":"minútou";case"mm":return b||d?e+(fe(a)?"minúty":"minút"):e+"minútami";break;case"h":return b?"hodina":d?"hodinu":"hodinou";case"hh":return b||d?e+(fe(a)?"hodiny":"hodín"):e+"hodinami";break;case"d":return b||d?"deň":"dňom";case"dd":return b||d?e+(fe(a)?"dni":"dní"):e+"dňami";break;case"M":return b||d?"mesiac":"mesiacom";case"MM":return b||d?e+(fe(a)?"mesiace":"mesiacov"):e+"mesiacmi";break;case"y":return b||d?"rok":"rokom";case"yy":return b||d?e+(fe(a)?"roky":"rokov"):e+"rokmi"}}
|
||
//! moment.js locale configuration
|
||
//! locale : Slovenian [sl]
|
||
//! author : Robert Sedovšek : https://github.com/sedovsek
|
||
function he(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":a<5?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":a<5?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":a<5?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":a<5?b||d?"leta":"leti":b||d?"let":"leti"}}function ie(a){var b=a;return b=a.indexOf("jaj")!==-1?b.slice(0,-3)+"leS":a.indexOf("jar")!==-1?b.slice(0,-3)+"waQ":a.indexOf("DIS")!==-1?b.slice(0,-3)+"nem":b+" pIq"}function je(a){var b=a;return b=a.indexOf("jaj")!==-1?b.slice(0,-3)+"Hu’":a.indexOf("jar")!==-1?b.slice(0,-3)+"wen":a.indexOf("DIS")!==-1?b.slice(0,-3)+"ben":b+" ret"}function ke(a,b,c,d){var e=le(a);switch(c){case"mm":return e+" tup";case"hh":return e+" rep";case"dd":return e+" jaj";case"MM":return e+" jar";case"yy":return e+" DIS"}}function le(a){var b=Math.floor(a%1e3/100),c=Math.floor(a%100/10),d=a%10,e="";return b>0&&(e+=Rh[b]+"vatlh"),c>0&&(e+=(""!==e?" ":"")+Rh[c]+"maH"),d>0&&(e+=(""!==e?" ":"")+Rh[d]),""===e?"pagh":e}function me(a,b,c,d){var e={s:["viensas secunds","'iensas secunds"],m:["'n míut","'iens míut"],mm:[a+" míuts",""+a+" míuts"],h:["'n þora","'iensa þora"],hh:[a+" þoras",""+a+" þoras"],d:["'n ziua","'iensa ziua"],dd:[a+" ziuas",""+a+" ziuas"],M:["'n mes","'iens mes"],MM:[a+" mesen",""+a+" mesen"],y:["'n ar","'iens ar"],yy:[a+" ars",""+a+" ars"]};return d?e[c][0]:b?e[c][0]:e[c][1]}
|
||
//! moment.js locale configuration
|
||
//! locale : Ukrainian [uk]
|
||
//! author : zemlanin : https://github.com/zemlanin
|
||
//! Author : Menelion Elensúle : https://github.com/Oire
|
||
function ne(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function oe(a,b,c){var d={mm:b?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:b?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===c?b?"хвилина":"хвилину":"h"===c?b?"година":"годину":a+" "+ne(d[c],+a)}function pe(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};if(!a)return c.nominative;var d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function qe(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var re,se;se=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;d<c;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var te=se,ue=a.momentProperties=[],ve=!1,we={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var xe;xe=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)j(a,b)&&c.push(b);return c};var ye,ze=xe,Ae={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Be={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"},Ce="Invalid date",De="%d",Ee=/\d{1,2}/,Fe={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"},Ge={},He={},Ie=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Je=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ke={},Le={},Me=/\d/,Ne=/\d\d/,Oe=/\d{3}/,Pe=/\d{4}/,Qe=/[+-]?\d{6}/,Re=/\d\d?/,Se=/\d\d\d\d?/,Te=/\d\d\d\d\d\d?/,Ue=/\d{1,3}/,Ve=/\d{1,4}/,We=/[+-]?\d{1,6}/,Xe=/\d+/,Ye=/[+-]?\d+/,Ze=/Z|[+-]\d\d:?\d\d/gi,$e=/Z|[+-]\d\d(?::?\d\d)?/gi,_e=/[+-]?\d+(\.\d{1,3})?/,af=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,bf={},cf={},df=0,ef=1,ff=2,gf=3,hf=4,jf=5,kf=6,lf=7,mf=8;ye=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1};var nf=ye;U("M",["MM",2],"Mo",function(){return this.month()+1}),U("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),U("MMMM",0,0,function(a){return this.localeData().months(this,a)}),J("month","M"),M("month",8),Z("M",Re),Z("MM",Re,Ne),Z("MMM",function(a,b){return b.monthsShortRegex(a)}),Z("MMMM",function(a,b){return b.monthsRegex(a)}),ba(["M","MM"],function(a,b){b[ef]=u(a)-1}),ba(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[ef]=e:n(c).invalidMonth=a});var of=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,pf="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),qf="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),rf=af,sf=af;U("Y",0,0,function(){var a=this.year();return a<=9999?""+a:"+"+a}),U(0,["YY",2],0,function(){return this.year()%100}),U(0,["YYYY",4],0,"year"),U(0,["YYYYY",5],0,"year"),U(0,["YYYYYY",6,!0],0,"year"),J("year","y"),M("year",1),Z("Y",Ye),Z("YY",Re,Ne),Z("YYYY",Ve,Pe),Z("YYYYY",We,Qe),Z("YYYYYY",We,Qe),ba(["YYYYY","YYYYYY"],df),ba("YYYY",function(b,c){c[df]=2===b.length?a.parseTwoDigitYear(b):u(b)}),ba("YY",function(b,c){c[df]=a.parseTwoDigitYear(b)}),ba("Y",function(a,b){b[df]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return u(a)+(u(a)>68?1900:2e3)};var tf=O("FullYear",!0);U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),J("week","w"),J("isoWeek","W"),M("week",5),M("isoWeek",5),Z("w",Re),Z("ww",Re,Ne),Z("W",Re),Z("WW",Re,Ne),ca(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=u(a)});var uf={dow:0,doy:6};U("d",0,"do","day"),U("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),U("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),U("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),J("day","d"),J("weekday","e"),J("isoWeekday","E"),M("day",11),M("weekday",11),M("isoWeekday",11),Z("d",Re),Z("e",Re),Z("E",Re),Z("dd",function(a,b){return b.weekdaysMinRegex(a)}),Z("ddd",function(a,b){return b.weekdaysShortRegex(a)}),Z("dddd",function(a,b){return b.weekdaysRegex(a)}),ca(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:n(c).invalidWeekday=a}),ca(["d","e","E"],function(a,b,c,d){b[d]=u(a)});var vf="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),wf="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),xf="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),yf=af,zf=af,Af=af;U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Ra),U("k",["kk",2],0,Sa),U("hmm",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)}),U("hmmss",0,0,function(){return""+Ra.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),U("Hmm",0,0,function(){return""+this.hours()+T(this.minutes(),2)}),U("Hmmss",0,0,function(){return""+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ta("a",!0),Ta("A",!1),J("hour","h"),M("hour",13),Z("a",Ua),Z("A",Ua),Z("H",Re),Z("h",Re),Z("k",Re),Z("HH",Re,Ne),Z("hh",Re,Ne),Z("kk",Re,Ne),Z("hmm",Se),Z("hmmss",Te),Z("Hmm",Se),Z("Hmmss",Te),ba(["H","HH"],gf),ba(["k","kk"],function(a,b,c){var d=u(a);b[gf]=24===d?0:d}),ba(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),ba(["h","hh"],function(a,b,c){b[gf]=u(a),n(c).bigHour=!0}),ba("hmm",function(a,b,c){var d=a.length-2;b[gf]=u(a.substr(0,d)),b[hf]=u(a.substr(d)),n(c).bigHour=!0}),ba("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[gf]=u(a.substr(0,d)),b[hf]=u(a.substr(d,2)),b[jf]=u(a.substr(e)),n(c).bigHour=!0}),ba("Hmm",function(a,b,c){var d=a.length-2;b[gf]=u(a.substr(0,d)),b[hf]=u(a.substr(d))}),ba("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[gf]=u(a.substr(0,d)),b[hf]=u(a.substr(d,2)),b[jf]=u(a.substr(e))});var Bf,Cf=/[ap]\.?m?\.?/i,Df=O("Hours",!0),Ef={calendar:Ae,longDateFormat:Be,invalidDate:Ce,ordinal:De,dayOfMonthOrdinalParse:Ee,relativeTime:Fe,months:pf,monthsShort:qf,week:uf,weekdays:vf,weekdaysMin:xf,weekdaysShort:wf,meridiemParse:Cf},Ff={},Gf={},Hf=/^\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)?)?$/,If=/^\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)?)?$/,Jf=/Z|[+-]\d\d(?::?\d\d)?/,Kf=[["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}/]],Lf=[["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/]],Mf=/^\/?Date\((\-?\d+)/i,Nf=/^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/;a.createFromInputFallback=x("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 and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Of=x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=tb.apply(null,arguments);return this.isValid()&&a.isValid()?a<this?this:a:p()}),Pf=x("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=tb.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:p()}),Qf=function(){return Date.now?Date.now():+new Date},Rf=["year","quarter","month","week","day","hour","minute","second","millisecond"];Db("Z",":"),Db("ZZ",""),Z("Z",$e),Z("ZZ",$e),ba(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Eb($e,a)});var Sf=/([\+\-]|\d\d)/gi;a.updateOffset=function(){};var Tf=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Uf=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Sb.fn=Ab.prototype,Sb.invalid=zb;var Vf=Wb(1,"add"),Wf=Wb(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xf=x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});U(0,["gg",2],0,function(){return this.weekYear()%100}),U(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Dc("gggg","weekYear"),Dc("ggggg","weekYear"),Dc("GGGG","isoWeekYear"),Dc("GGGGG","isoWeekYear"),J("weekYear","gg"),J("isoWeekYear","GG"),M("weekYear",1),M("isoWeekYear",1),Z("G",Ye),Z("g",Ye),Z("GG",Re,Ne),Z("gg",Re,Ne),Z("GGGG",Ve,Pe),Z("gggg",Ve,Pe),Z("GGGGG",We,Qe),Z("ggggg",We,Qe),ca(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=u(a)}),ca(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),U("Q",0,"Qo","quarter"),J("quarter","Q"),M("quarter",7),Z("Q",Me),ba("Q",function(a,b){b[ef]=3*(u(a)-1)}),U("D",["DD",2],"Do","date"),J("date","D"),M("date",9),Z("D",Re),Z("DD",Re,Ne),Z("Do",function(a,b){return a?b._dayOfMonthOrdinalParse||b._ordinalParse:b._dayOfMonthOrdinalParseLenient}),ba(["D","DD"],ff),ba("Do",function(a,b){b[ff]=u(a.match(Re)[0],10)});var Yf=O("Date",!0);U("DDD",["DDDD",3],"DDDo","dayOfYear"),J("dayOfYear","DDD"),M("dayOfYear",4),Z("DDD",Ue),Z("DDDD",Oe),ba(["DDD","DDDD"],function(a,b,c){c._dayOfYear=u(a)}),U("m",["mm",2],0,"minute"),J("minute","m"),M("minute",14),Z("m",Re),Z("mm",Re,Ne),ba(["m","mm"],hf);var Zf=O("Minutes",!1);U("s",["ss",2],0,"second"),J("second","s"),M("second",15),Z("s",Re),Z("ss",Re,Ne),ba(["s","ss"],jf);var $f=O("Seconds",!1);U("S",0,0,function(){return~~(this.millisecond()/100)}),U(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,function(){return 10*this.millisecond()}),U(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),U(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),U(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),U(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),U(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),J("millisecond","ms"),M("millisecond",16),Z("S",Ue,Me),Z("SS",Ue,Ne),Z("SSS",Ue,Oe);var _f;for(_f="SSSS";_f.length<=9;_f+="S")Z(_f,Xe);for(_f="S";_f.length<=9;_f+="S")ba(_f,Mc);var ag=O("Milliseconds",!1);U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var bg=r.prototype;bg.add=Vf,bg.calendar=Zb,bg.clone=$b,bg.diff=fc,bg.endOf=sc,bg.format=kc,bg.from=lc,bg.fromNow=mc,bg.to=nc,bg.toNow=oc,bg.get=R,bg.invalidAt=Bc,bg.isAfter=_b,bg.isBefore=ac,bg.isBetween=bc,bg.isSame=cc,bg.isSameOrAfter=dc,bg.isSameOrBefore=ec,bg.isValid=zc,bg.lang=Xf,bg.locale=pc,bg.localeData=qc,bg.max=Pf,bg.min=Of,bg.parsingFlags=Ac,bg.set=S,bg.startOf=rc,bg.subtract=Wf,bg.toArray=wc,bg.toObject=xc,bg.toDate=vc,bg.toISOString=ic,bg.inspect=jc,bg.toJSON=yc,bg.toString=hc,bg.unix=uc,bg.valueOf=tc,bg.creationData=Cc,bg.year=tf,bg.isLeapYear=ra,bg.weekYear=Ec,bg.isoWeekYear=Fc,bg.quarter=bg.quarters=Kc,bg.month=ka,bg.daysInMonth=la,bg.week=bg.weeks=Ba,bg.isoWeek=bg.isoWeeks=Ca,bg.weeksInYear=Hc,bg.isoWeeksInYear=Gc,bg.date=Yf,bg.day=bg.days=Ka,bg.weekday=La,bg.isoWeekday=Ma,bg.dayOfYear=Lc,bg.hour=bg.hours=Df,bg.minute=bg.minutes=Zf,bg.second=bg.seconds=$f,bg.millisecond=bg.milliseconds=ag,bg.utcOffset=Hb,bg.utc=Jb,bg.local=Kb,bg.parseZone=Lb,bg.hasAlignedHourOffset=Mb,bg.isDST=Nb,bg.isLocal=Pb,bg.isUtcOffset=Qb,bg.isUtc=Rb,bg.isUTC=Rb,bg.zoneAbbr=Nc,bg.zoneName=Oc,bg.dates=x("dates accessor is deprecated. Use date instead.",Yf),bg.months=x("months accessor is deprecated. Use month instead",ka),bg.years=x("years accessor is deprecated. Use year instead",tf),bg.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Ib),bg.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ob);var cg=C.prototype;cg.calendar=D,cg.longDateFormat=E,cg.invalidDate=F,cg.ordinal=G,cg.preparse=Rc,cg.postformat=Rc,cg.relativeTime=H,cg.pastFuture=I,cg.set=A,cg.months=fa,cg.monthsShort=ga,cg.monthsParse=ia,cg.monthsRegex=na,cg.monthsShortRegex=ma,cg.week=ya,cg.firstDayOfYear=Aa,cg.firstDayOfWeek=za,cg.weekdays=Fa,cg.weekdaysMin=Ha,cg.weekdaysShort=Ga,cg.weekdaysParse=Ja,cg.weekdaysRegex=Na,cg.weekdaysShortRegex=Oa,cg.weekdaysMinRegex=Pa,cg.isPM=Va,cg.meridiem=Wa,$a("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===u(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),a.lang=x("moment.lang is deprecated. Use moment.locale instead.",$a),a.langData=x("moment.langData is deprecated. Use moment.localeData instead.",bb);var dg=Math.abs,eg=id("ms"),fg=id("s"),gg=id("m"),hg=id("h"),ig=id("d"),jg=id("w"),kg=id("M"),lg=id("y"),mg=kd("milliseconds"),ng=kd("seconds"),og=kd("minutes"),pg=kd("hours"),qg=kd("days"),rg=kd("months"),sg=kd("years"),tg=Math.round,ug={ss:44,s:45,m:45,h:22,d:26,M:11},vg=Math.abs,wg=Ab.prototype;wg.isValid=yb,wg.abs=$c,wg.add=ad,wg.subtract=bd,wg.as=gd,wg.asMilliseconds=eg,wg.asSeconds=fg,wg.asMinutes=gg,wg.asHours=hg,wg.asDays=ig,wg.asWeeks=jg,wg.asMonths=kg,wg.asYears=lg,wg.valueOf=hd,wg._bubble=dd,wg.get=jd,wg.milliseconds=mg,wg.seconds=ng,wg.minutes=og,wg.hours=pg,wg.days=qg,wg.weeks=ld,wg.months=rg,wg.years=sg,wg.humanize=qd,wg.toISOString=rd,wg.toString=rd,wg.toJSON=rd,wg.locale=pc,wg.localeData=qc,wg.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",rd),wg.lang=Xf,U("X",0,0,"unix"),U("x",0,0,"valueOf"),Z("x",Ye),Z("X",_e),ba("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),ba("x",function(a,b,c){c._d=new Date(u(a))}),
|
||
//! moment.js
|
||
//! version : 2.18.1
|
||
//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
|
||
//! license : MIT
|
||
//! momentjs.com
|
||
a.version="2.18.1",b(tb),a.fn=bg,a.min=vb,a.max=wb,a.now=Qf,a.utc=l,a.unix=Pc,a.months=Vc,a.isDate=h,a.locale=$a,a.invalid=p,a.duration=Sb,a.isMoment=s,a.weekdays=Xc,a.parseZone=Qc,a.localeData=bb,a.isDuration=Bb,a.monthsShort=Wc,a.weekdaysMin=Zc,a.defineLocale=_a,a.updateLocale=ab,a.locales=cb,a.weekdaysShort=Yc,a.normalizeUnits=K,a.relativeTimeRounding=od,a.relativeTimeThreshold=pd,a.calendarFormat=Yb,a.prototype=bg,
|
||
//! moment.js locale configuration
|
||
//! locale : Afrikaans [af]
|
||
//! author : Werner Mollentze : https://github.com/wernerm
|
||
a.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(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return a<12?c?"vm":"VM":c?"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",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(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Arabic (Algeria) [ar-dz]
|
||
//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme
|
||
a.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:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Arabic (Kuwait) [ar-kw]
|
||
//! author : Nusret Parlak: https://github.com/nusretparlak
|
||
a.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:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}});
|
||
//! moment.js locale configuration
|
||
//! locale : Arabic (Lybia) [ar-ly]
|
||
//! author : Ali Hmer: https://github.com/kikoanis
|
||
var xg={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},yg=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&a%100<=10?3:a%100>=11?4:5},zg={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},Ag=function(a){return function(b,c,d,e){var f=yg(b),g=zg[a][yg(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},Bg=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];a.defineLocale("ar-ly",{months:Bg,monthsShort:Bg,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(a){return"م"===a},meridiem:function(a,b,c){return a<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:Ag("s"),m:Ag("m"),mm:Ag("m"),h:Ag("h"),hh:Ag("h"),d:Ag("d"),dd:Ag("d"),M:Ag("M"),MM:Ag("M"),y:Ag("y"),yy:Ag("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return xg[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Arabic (Morocco) [ar-ma]
|
||
//! author : ElFadili Yassine : https://github.com/ElFadiliY
|
||
//! author : Abdel Said : https://github.com/abdelsaid
|
||
a.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:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}});
|
||
//! moment.js locale configuration
|
||
//! locale : Arabic (Saudi Arabia) [ar-sa]
|
||
//! author : Suhail Alkowaileet : https://github.com/xsoh
|
||
var Cg={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},Dg={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};a.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(a){return"م"===a},meridiem:function(a,b,c){return a<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return Dg[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return Cg[a]}).replace(/,/g,"،")},week:{dow:0,doy:6}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Arabic (Tunisia) [ar-tn]
|
||
//! author : Nader Toukabri : https://github.com/naderio
|
||
a.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:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Arabic [ar]
|
||
//! author : Abdel Said: https://github.com/abdelsaid
|
||
//! author : Ahmed Elkhatib
|
||
//! author : forabi https://github.com/forabi
|
||
var Eg={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},Fg={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},Gg=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&a%100<=10?3:a%100>=11?4:5},Hg={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},Ig=function(a){return function(b,c,d,e){var f=Gg(b),g=Hg[a][Gg(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},Jg=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"];a.defineLocale("ar",{months:Jg,monthsShort:Jg,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(a){return"م"===a},meridiem:function(a,b,c){return a<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:Ig("s"),m:Ig("m"),mm:Ig("m"),h:Ig("h"),hh:Ig("h"),d:Ig("d"),dd:Ig("d"),M:Ig("M"),MM:Ig("M"),y:Ig("y"),yy:Ig("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return Fg[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return Eg[a]}).replace(/,/g,"،")},week:{dow:6,doy:12}});
|
||
//! moment.js locale configuration
|
||
//! locale : Azerbaijani [az]
|
||
//! author : topchiyev : https://github.com/topchiyev
|
||
var Kg={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ı"};a.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".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:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return a<4?"gecə":a<12?"səhər":a<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+"-ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Kg[b]||Kg[c]||Kg[d])},week:{dow:1,doy:7}}),a.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:td,mm:td,h:td,hh:td,d:"дзень",dd:td,M:"месяц",MM:td,y:"год",yy:td},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return a<4?"ночы":a<12?"раніцы":a<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+"-ы":a+"-і";case"D":return a+"-га";default:return a}},week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Bulgarian [bg]
|
||
//! author : Krasen Borisov : https://github.com/kraz
|
||
a.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:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&c<20?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}});
|
||
//! moment.js locale configuration
|
||
//! locale : Bengali [bn]
|
||
//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
|
||
var Lg={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},Mg={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};a.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),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 সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return Mg[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Lg[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(a,b){return 12===a&&(a=0),"রাত"===b&&a>=4||"দুপুর"===b&&a<5||"বিকাল"===b?a+12:a},meridiem:function(a,b,c){return a<4?"রাত":a<10?"সকাল":a<17?"দুপুর":a<20?"বিকাল":"রাত"},week:{dow:0,doy:6}});
|
||
//! moment.js locale configuration
|
||
//! locale : Tibetan [bo]
|
||
//! author : Thupten N. Chakrishar : https://github.com/vajradog
|
||
var Ng={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},Og={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};a.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),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"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return Og[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ng[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(a,b){return 12===a&&(a=0),"མཚན་མོ"===b&&a>=4||"ཉིན་གུང"===b&&a<5||"དགོང་དག"===b?a+12:a},meridiem:function(a,b,c){return a<4?"མཚན་མོ":a<10?"ཞོགས་ཀས":a<17?"ཉིན་གུང":a<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}}),a.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:ud,h:"un eur",hh:"%d eur",d:"un devezh",dd:ud,M:"ur miz",MM:ud,y:"ur bloaz",yy:vd},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?"añ":"vet";return a+b},week:{dow:1,doy:4}}),a.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",m:zd,mm:zd,h:zd,hh:zd,d:"dan",dd:zd,M:"mjesec",MM:zd,y:"godinu",yy:zd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Catalan [ca]
|
||
//! author : Juan G. Hurtado : https://github.com/juanghurtado
|
||
a.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:"[el] D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"[el] D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"[el] 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",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d 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(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return"w"!==b&&"W"!==b||(c="a"),a+c},week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Czech [cs]
|
||
//! author : petrbela : https://github.com/petrbela
|
||
var Pg="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),Qg="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_");a.defineLocale("cs",{months:Pg,monthsShort:Qg,monthsParse:function(a,b){var c,d=[];for(c=0;c<12;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(Pg,Qg),shortMonthsParse:function(a){var b,c=[];for(b=0;b<12;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(Qg),longMonthsParse:function(a){var b,c=[];for(b=0;b<12;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(Pg),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"},relativeTime:{future:"za %s",past:"před %s",s:Bd,m:Bd,mm:Bd,h:Bd,hh:Bd,d:Bd,dd:Bd,M:Bd,MM:Bd,y:Bd,yy:Bd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Chuvash [cv]
|
||
//! author : Anatoly Mironov : https://github.com/mirontoli
|
||
a.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?"рен":/ҫул$/i.exec(a)?"тан":"ран";return a+b},past:"%s каялла",s:"пӗр-ик ҫеккунт",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:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Welsh [cy]
|
||
//! author : Robert Allen : https://github.com/robgallen
|
||
//! author : https://github.com/ryangreaves
|
||
a.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_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:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c="",d=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"];return b>20?c=40===b||50===b||60===b||80===b||100===b?"fed":"ain":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Danish [da]
|
||
//! author : Ulrik Nielsen : https://github.com/mrbase
|
||
a.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",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}}),a.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._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",m:Cd,mm:"%d Minuten",h:Cd,hh:"%d Stunden",d:Cd,dd:Cd,M:Cd,MM:Cd,y:Cd,yy:Cd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._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",m:Dd,mm:"%d Minuten",h:Dd,hh:"%d Stunden",d:Dd,dd:Dd,M:Dd,MM:Dd,y:Dd,yy:Dd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._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",m:Ed,mm:"%d Minuten",h:Ed,hh:"%d Stunden",d:Ed,dd:Ed,M:Ed,MM:Ed,y:Ed,yy:Ed},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Maldivian [dv]
|
||
//! author : Jawish Hameed : https://github.com/jawish
|
||
var Rg=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],Sg=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];a.defineLocale("dv",{months:Rg,monthsShort:Rg,weekdays:Sg,weekdaysShort:Sg,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),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(a){return"މފ"===a},meridiem:function(a,b,c){return a<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(a){return a.replace(/،/g,",")},postformat:function(a){return a.replace(/,/g,"،")},week:{dow:7,doy:12}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Greek [el]
|
||
//! author : Aggelos Karalias : https://github.com/mehiel
|
||
a.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return a?/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,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"},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(a,b){var c=this._calendarEl[a],d=b&&b.hours();return z(c)&&(c=c.apply(b)),c.replace("{}",d%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",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}}),
|
||
//! moment.js locale configuration
|
||
//! locale : English (Australia) [en-au]
|
||
//! author : Jared Morse : https://github.com/jarcoal
|
||
a.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",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(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : English (Canada) [en-ca]
|
||
//! author : Jonathan Abourbih : https://github.com/jonbca
|
||
a.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",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(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),
|
||
//! moment.js locale configuration
|
||
//! locale : English (United Kingdom) [en-gb]
|
||
//! author : Chris Gedrim : https://github.com/chrisgedrim
|
||
a.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",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(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : English (Ireland) [en-ie]
|
||
//! author : Chris Cartlidge : https://github.com/chriscartlidge
|
||
a.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",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(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : English (New Zealand) [en-nz]
|
||
//! author : Luke McGregor : https://github.com/lukemcgregor
|
||
a.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",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(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Esperanto [eo]
|
||
//! author : Colin Dean : https://github.com/colindean
|
||
//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
|
||
//! comment : miestasmia corrected the translation by colindean
|
||
a.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(a){return"p"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?"p.t.m.":"P.T.M.":c?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});
|
||
//! moment.js locale configuration
|
||
//! locale : Spanish (Dominican Republic) [es-do]
|
||
var Tg="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Ug="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");a.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?Ug[a.month()]:Tg[a.month()]:Tg},monthsParseExact:!0,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:"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",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}});
|
||
//! moment.js locale configuration
|
||
//! locale : Spanish [es]
|
||
//! author : Julio Napurí : https://github.com/julionc
|
||
var Vg="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Wg="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");a.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?Wg[a.month()]:Vg[a.month()]:Vg},monthsParseExact:!0,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",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}}),a.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:Fd,m:Fd,mm:Fd,h:Fd,hh:Fd,d:Fd,dd:"%d päeva",M:Fd,MM:Fd,y:Fd,yy:Fd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Basque [eu]
|
||
//! author : Eneko Illarramendi : https://github.com/eillarra
|
||
a.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",L:"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",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}});
|
||
//! moment.js locale configuration
|
||
//! locale : Persian [fa]
|
||
//! author : Ebrahim Byagowi : https://github.com/ebraminio
|
||
var Xg={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},Yg={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};a.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(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return a<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return Yg[a]}).replace(/،/g,",")},postformat:function(a){return a.replace(/\d/g,function(a){return Xg[a]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});
|
||
//! moment.js locale configuration
|
||
//! locale : Finnish [fi]
|
||
//! author : Tarmo Aidantausta : https://github.com/bleadof
|
||
var Zg="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),$g=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",Zg[7],Zg[8],Zg[9]];a.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:Gd,m:Gd,mm:Gd,h:Gd,hh:Gd,d:Gd,dd:Gd,M:Gd,MM:Gd,y:Gd,yy:Gd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Faroese [fo]
|
||
//! author : Ragnar Johannesen : https://github.com/ragnar123
|
||
a.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".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:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",m:"ein minutt",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaði",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : French (Canada) [fr-ca]
|
||
//! author : Jonathan Abourbih : https://github.com/jonbca
|
||
a.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",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(a,b){switch(b){default:case"M":case"Q":case"D":case"DDD":case"d":return a+(1===a?"er":"e");case"w":case"W":return a+(1===a?"re":"e")}}}),
|
||
//! moment.js locale configuration
|
||
//! locale : French (Switzerland) [fr-ch]
|
||
//! author : Gaspard Bucher : https://github.com/gaspard
|
||
a.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",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(a,b){switch(b){default:case"M":case"Q":case"D":case"DDD":case"d":return a+(1===a?"er":"e");case"w":case"W":return a+(1===a?"re":"e")}},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : French [fr]
|
||
//! author : John Fischer : https://github.com/jfroffice
|
||
a.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",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(a,b){switch(b){case"D":return a+(1===a?"er":"");default:case"M":case"Q":case"DDD":case"d":return a+(1===a?"er":"e");case"w":case"W":return a+(1===a?"re":"e")}},week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Frisian [fy]
|
||
//! author : Robin van der Vliet : https://github.com/robin0van0der0v
|
||
var _g="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),ah="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");a.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?ah[a.month()]:_g[a.month()]:_g},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".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:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Scottish Gaelic [gd]
|
||
//! author : Jon Ashdown : https://github.com/jonashdown
|
||
var bh=["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],ch=["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],dh=["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],eh=["Did","Dil","Dim","Dic","Dia","Dih","Dis"],fh=["Dò","Lu","Mà","Ci","Ar","Ha","Sa"];a.defineLocale("gd",{months:bh,monthsShort:ch,monthsParseExact:!0,weekdays:dh,weekdaysShort:eh,weekdaysMin:fh,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:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(a){var b=1===a?"d":a%10===2?"na":"mh";return a+b},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Galician [gl]
|
||
//! author : Juan G. Hurtado : https://github.com/juanghurtado
|
||
a.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(a){return 0===a.indexOf("un")?"n"+a:"en "+a},past:"hai %s",s:"uns segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d 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}}),a.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:Id,m:Id,mm:Id,h:Id,hh:Id,d:Id,dd:Id,M:Id,MM:Id,y:Id,yy:Id},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(a,b){switch(b){case"D":return a+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return a}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(a,b){return 12===a&&(a=0),"rati"===b?a<4?a:a+12:"sokalli"===b?a:"donparam"===b?a>12?a:a+12:"sanje"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"rati":a<12?"sokalli":a<16?"donparam":a<20?"sanje":"rati"}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Hebrew [he]
|
||
//! author : Tomer Cohen : https://github.com/tomer
|
||
//! author : Moshe Simantov : https://github.com/DevelopmentIL
|
||
//! author : Tal Ater : https://github.com/TalAter
|
||
a.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:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(a){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(a)},meridiem:function(a,b,c){return a<5?"לפנות בוקר":a<10?"בבוקר":a<12?c?'לפנה"צ':"לפני הצהריים":a<18?c?'אחה"צ':"אחרי הצהריים":"בערב"}});
|
||
//! moment.js locale configuration
|
||
//! locale : Hindi [hi]
|
||
//! author : Mayank Singhal : https://github.com/mayanksinghal
|
||
var gh={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},hh={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};a.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 बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return hh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return gh[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?a<4?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"रात":a<10?"सुबह":a<17?"दोपहर":a<20?"शाम":"रात"},week:{dow:0,doy:6}}),a.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:"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",m:Jd,mm:Jd,h:Jd,hh:Jd,d:"dan",dd:Jd,M:"mjesec",MM:Jd,y:"godinu",yy:Jd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});
|
||
//! moment.js locale configuration
|
||
//! locale : Hungarian [hu]
|
||
//! author : Adam Brunner : https://github.com/adambrunner
|
||
var ih="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");a.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(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return a<12?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return Ld.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return Ld.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:Kd,m:Kd,mm:Kd,h:Kd,hh:Kd,d:Kd,dd:Kd,M:Kd,MM:Kd,y:Kd,yy:Kd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Armenian [hy-am]
|
||
//! author : Armendarabyan : https://github.com/armendarabyan
|
||
a.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".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",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return a<4?"գիշերվա":a<12?"առավոտվա":a<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case"DDD":case"w":case"W":case"DDDo":return 1===a?a+"-ին":a+"-րդ";default:return a}},week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Indonesian [id]
|
||
//! author : Mohammad Satrio Utomo : https://github.com/tyok
|
||
//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
|
||
a.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_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(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?"pagi":a<15?"siang":a<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",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}}),a.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:Nd,m:Nd,mm:Nd,h:"klukkustund",hh:Nd,d:Nd,dd:Nd,M:Nd,MM:Nd,y:Nd,yy:Nd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Italian [it]
|
||
//! author : Lorenzo : https://github.com/aliem
|
||
//! author: Mattia Larentis: https://github.com/nostalgiaz
|
||
a.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:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d 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}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Japanese [ja]
|
||
//! author : LI Long : https://github.com/baryon
|
||
a.defineLocale("ja",{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日 HH:mm dddd",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日 HH:mm dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return a<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";default:return a}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Javanese [jv]
|
||
//! author : Rony Lantip : https://github.com/lantip
|
||
//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
|
||
a.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".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:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),"enjing"===b?a:"siyang"===b?a>=11?a:a+12:"sonten"===b||"ndalu"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?"enjing":a<15?"siyang":a<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Georgian [ka]
|
||
//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili
|
||
a.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".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:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,"ში"):a+"ში"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,"ის უკან"):/წელი/.test(a)?a.replace(/წელი$/,"წლის უკან"):void 0},s:"რამდენიმე წამი",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(a){return 0===a?a:1===a?a+"-ლი":a<20||a<=100&&a%20===0||a%100===0?"მე-"+a:a+"-ე"},week:{dow:1,doy:7}});
|
||
//! moment.js locale configuration
|
||
//! locale : Kazakh [kk]
|
||
//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
|
||
var jh={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};a.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:"бірнеше секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(a){var b=a%10,c=a>=100?100:null;return a+(jh[a]||jh[b]||jh[c])},week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Cambodian [km]
|
||
//! author : Kruy Vanna : https://github.com/kruyvanna
|
||
a.defineLocale("km",{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:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Kannada [kn]
|
||
//! author : Rajeev Naik : https://github.com/rajeevnaikte
|
||
var kh={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},lh={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};a.defineLocale("kn",{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"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(a){return a.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(a){return lh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return kh[a]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(a,b){return 12===a&&(a=0),"ರಾತ್ರಿ"===b?a<4?a:a+12:"ಬೆಳಿಗ್ಗೆ"===b?a:"ಮಧ್ಯಾಹ್ನ"===b?a>=10?a:a+12:"ಸಂಜೆ"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"ರಾತ್ರಿ":a<10?"ಬೆಳಿಗ್ಗೆ":a<17?"ಮಧ್ಯಾಹ್ನ":a<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(a){return a+"ನೇ"},week:{dow:0,doy:6}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Korean [ko]
|
||
//! author : Kyungwook, Park : https://github.com/kyungw00k
|
||
//! author : Jeeeyul Lee <jeeeyul@gmail.com>
|
||
a.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:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return a<12?"오전":"오후"}});
|
||
//! moment.js locale configuration
|
||
//! locale : Kyrgyz [ky]
|
||
//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
|
||
var mh={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};a.defineLocale("ky",{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:"бирнече секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(a){var b=a%10,c=a>=100?100:null;return a+(mh[a]||mh[b]||mh[c])},week:{dow:1,doy:7}}),a.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:Pd,past:Qd,s:"e puer Sekonnen",m:Od,mm:"%d Minutten",h:Od,hh:"%d Stonnen",d:Od,dd:"%d Deeg",M:Od,MM:"%d Méint",y:Od,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Lao [lo]
|
||
//! author : Ryan Hart : https://github.com/ryanhart2
|
||
a.defineLocale("lo",{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(a){return"ຕອນແລງ"===a},meridiem:function(a,b,c){return a<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(a){return"ທີ່"+a}});
|
||
//! moment.js locale configuration
|
||
//! locale : Lithuanian [lt]
|
||
//! author : Mindaugas Mozūras : https://github.com/mmozuras
|
||
var nh={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"};a.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:Sd,m:Td,mm:Wd,h:Td,hh:Wd,d:Td,dd:Wd,M:Td,MM:Wd,y:Td,yy:Wd},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Latvian [lv]
|
||
//! author : Kristaps Karlsons : https://github.com/skakri
|
||
//! author : Jānis Elmeris : https://github.com/JanisE
|
||
var oh={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_dienā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("_")};a.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:$d,m:Zd,mm:Yd,h:Zd,hh:Yd,d:Zd,dd:Yd,M:Zd,MM:Yd,y:Zd,yy:Yd},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Montenegrin [me]
|
||
//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac
|
||
var ph={words:{m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,b,c){var d=ph.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+ph.correctGrammaticalCase(a,d)}};a.defineLocale("me",{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:"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:"[sjutra 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če u] LT",lastWeek:function(){var a=["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",m:ph.translate,mm:ph.translate,h:ph.translate,hh:ph.translate,d:"dan",dd:ph.translate,M:"mjesec",MM:ph.translate,y:"godinu",yy:ph.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Maori [mi]
|
||
//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal
|
||
a.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Macedonian [mk]
|
||
//! author : Borislav Mickov : https://github.com/B0k0
|
||
a.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:"неколку секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&c<20?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Malayalam [ml]
|
||
//! author : Floyd Pink : https://github.com/floydpink
|
||
a.defineLocale("ml",{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 -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(a,b){return 12===a&&(a=0),"രാത്രി"===b&&a>=4||"ഉച്ച കഴിഞ്ഞ്"===b||"വൈകുന്നേരം"===b?a+12:a},meridiem:function(a,b,c){return a<4?"രാത്രി":a<12?"രാവിലെ":a<17?"ഉച്ച കഴിഞ്ഞ്":a<20?"വൈകുന്നേരം":"രാത്രി"}});
|
||
//! moment.js locale configuration
|
||
//! locale : Marathi [mr]
|
||
//! author : Harshad Kale : https://github.com/kalehv
|
||
//! author : Vivek Athalye : https://github.com/vnathalye
|
||
var qh={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},rh={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};a.defineLocale("mr",{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 वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:_d,m:_d,mm:_d,h:_d,hh:_d,d:_d,dd:_d,M:_d,MM:_d,y:_d,yy:_d},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return rh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return qh[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात्री"===b?a<4?a:a+12:"सकाळी"===b?a:"दुपारी"===b?a>=10?a:a+12:"सायंकाळी"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"रात्री":a<10?"सकाळी":a<17?"दुपारी":a<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Malay [ms-my]
|
||
//! note : DEPRECATED, the correct one is [ms]
|
||
//! author : Weldan Jamili : https://github.com/weldan
|
||
a.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(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?"pagi":a<15?"tengahari":a<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",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}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Malay [ms]
|
||
//! author : Weldan Jamili : https://github.com/weldan
|
||
a.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(a,b){return 12===a&&(a=0),"pagi"===b?a:"tengahari"===b?a>=11?a:a+12:"petang"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?"pagi":a<15?"tengahari":a<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",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}});
|
||
//! moment.js locale configuration
|
||
//! locale : Burmese [my]
|
||
//! author : Squar team, mysquar.com
|
||
//! author : David Rossellat : https://github.com/gholadr
|
||
//! author : Tin Aung Lin : https://github.com/thanyawzinmin
|
||
var sh={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},th={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};a.defineLocale("my",{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:"စက္ကန်.အနည်းငယ်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return th[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return sh[a]})},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Norwegian Bokmål [nb]
|
||
//! authors : Espen Hovlandsdal : https://github.com/rexxars
|
||
//! Sigurd Gartmann : https://github.com/sigurdga
|
||
a.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_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",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}});
|
||
//! moment.js locale configuration
|
||
//! locale : Nepalese [ne]
|
||
//! author : suvash : https://github.com/suvash
|
||
var uh={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},vh={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};a.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,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 बजे"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return vh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return uh[a]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(a,b){return 12===a&&(a=0),"राति"===b?a<4?a:a+12:"बिहान"===b?a:"दिउँसो"===b?a>=10?a:a+12:"साँझ"===b?a+12:void 0},meridiem:function(a,b,c){return a<3?"राति":a<12?"बिहान":a<16?"दिउँसो":a<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}});
|
||
//! moment.js locale configuration
|
||
//! locale : Dutch (Belgium) [nl-be]
|
||
//! author : Joris Röling : https://github.com/jorisroling
|
||
//! author : Jacob Middag : https://github.com/middagj
|
||
var wh="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),xh="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),yh=[/^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],zh=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;a.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?xh[a.month()]:wh[a.month()]:wh},monthsRegex:zh,monthsShortRegex:zh,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:yh,longMonthsParse:yh,shortMonthsParse:yh,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",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(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Dutch [nl]
|
||
//! author : Joris Röling : https://github.com/jorisroling
|
||
//! author : Jacob Middag : https://github.com/middagj
|
||
var Ah="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),Bh="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),Ch=[/^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],Dh=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;a.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?Bh[a.month()]:Ah[a.month()]:Ah},monthsRegex:Dh,monthsShortRegex:Dh,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:Ch,longMonthsParse:Ch,shortMonthsParse:Ch,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",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(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Nynorsk [nn]
|
||
//! author : https://github.com/mechuwind
|
||
a.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_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 [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",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}});
|
||
//! moment.js locale configuration
|
||
//! locale : Punjabi (India) [pa-in]
|
||
//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
|
||
var Eh={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},Fh={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};a.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),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 ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(a){return a.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(a){return Fh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Eh[a]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(a,b){return 12===a&&(a=0),"ਰਾਤ"===b?a<4?a:a+12:"ਸਵੇਰ"===b?a:"ਦੁਪਹਿਰ"===b?a>=10?a:a+12:"ਸ਼ਾਮ"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"ਰਾਤ":a<10?"ਸਵੇਰ":a<17?"ਦੁਪਹਿਰ":a<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}});
|
||
//! moment.js locale configuration
|
||
//! locale : Polish [pl]
|
||
//! author : Rafal Hirsz : https://github.com/evoL
|
||
var Gh="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),Hh="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");a.defineLocale("pl",{months:function(a,b){return a?""===b?"("+Hh[a.month()]+"|"+Gh[a.month()]+")":/D MMMM/.test(b)?Hh[a.month()]:Gh[a.month()]:Gh},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:"[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",m:be,mm:be,h:be,hh:be,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:be,y:"rok",yy:be},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Portuguese (Brazil) [pt-br]
|
||
//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
|
||
a.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:"%s atrás",s:"poucos 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º"}),
|
||
//! moment.js locale configuration
|
||
//! locale : Portuguese [pt]
|
||
//! author : Jefferson : https://github.com/jalex79
|
||
a.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",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}}),a.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._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",m:"un minut",mm:ce,h:"o oră",hh:ce,d:"o zi",dd:ce,M:"o lună",MM:ce,y:"un an",yy:ce},week:{dow:1,doy:7}});var Ih=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];a.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:Ih,longMonthsParse:Ih,shortMonthsParse:Ih,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,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(a){if(a.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(a){if(a.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:"несколько секунд",m:ee,mm:ee,h:"час",hh:ee,d:"день",dd:ee,M:"месяц",MM:ee,y:"год",yy:ee},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return a<4?"ночи":a<12?"утра":a<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}});
|
||
//! moment.js locale configuration
|
||
//! locale : Sindhi [sd]
|
||
//! author : Narain Sagar : https://github.com/narainsagar
|
||
var Jh=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],Kh=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];a.defineLocale("sd",{months:Jh,monthsShort:Jh,weekdays:Kh,weekdaysShort:Kh,weekdaysMin:Kh,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(a){return"شام"===a},meridiem:function(a,b,c){return a<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(a){return a.replace(/،/g,",")},postformat:function(a){return a.replace(/,/g,"،")},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Northern Sami [se]
|
||
//! authors : Bård Rolstad Henriksen : https://github.com/karamell
|
||
a.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Sinhalese [si]
|
||
//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
|
||
a.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්ර_සි_සෙ".split("_"),weekdaysParseExact:!0,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:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(a){return a+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(a){return"ප.ව."===a||"පස් වරු"===a},meridiem:function(a,b,c){return a>11?c?"ප.ව.":"පස් වරු":c?"පෙ.ව.":"පෙර වරු"}});
|
||
//! moment.js locale configuration
|
||
//! locale : Slovak [sk]
|
||
//! author : Martin Minka : https://github.com/k2s
|
||
//! based on work of petrbela : https://github.com/petrbela
|
||
var Lh="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),Mh="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");a.defineLocale("sk",{months:Lh,monthsShort:Mh,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:ge,m:ge,mm:ge,h:ge,hh:ge,d:ge,dd:ge,M:ge,MM:ge,y:ge,yy:ge},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),a.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:he,m:he,mm:he,h:he,hh:he,d:he,dd:he,M:he,MM:he,y:he,yy:he},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Albanian [sq]
|
||
//! author : Flakërim Ismani : https://github.com/flakerimi
|
||
//! author : Menelion Elensúle : https://github.com/Oire
|
||
//! author : Oerd Cukalla : https://github.com/oerd
|
||
a.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(a){return"M"===a.charAt(0)},meridiem:function(a,b,c){return a<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",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}});
|
||
//! moment.js locale configuration
|
||
//! locale : Serbian Cyrillic [sr-cyrl]
|
||
//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
|
||
var Nh={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,b,c){var d=Nh.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Nh.correctGrammaticalCase(a,d)}};a.defineLocale("sr-cyrl",{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"},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(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:Nh.translate,mm:Nh.translate,h:Nh.translate,hh:Nh.translate,d:"дан",dd:Nh.translate,M:"месец",MM:Nh.translate,y:"годину",yy:Nh.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});
|
||
//! moment.js locale configuration
|
||
//! locale : Serbian [sr]
|
||
//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
|
||
var Oh={words:{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(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,b,c){var d=Oh.words[c];return 1===c.length?b?d[0]:d[1]:a+" "+Oh.correctGrammaticalCase(a,d)}};a.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(){var a=["[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"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:Oh.translate,mm:Oh.translate,h:Oh.translate,hh:Oh.translate,d:"dan",dd:Oh.translate,M:"mesec",MM:Oh.translate,y:"godinu",yy:Oh.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : siSwati [ss]
|
||
//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies
|
||
a.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,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:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(a,b,c){return a<11?"ekuseni":a<15?"emini":a<19?"entsambama":"ebusuku"},meridiemHour:function(a,b){return 12===a&&(a=0),"ekuseni"===b?a:"emini"===b?a>=11?a:a+12:"entsambama"===b||"ebusuku"===b?0===a?0:a+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Swedish [sv]
|
||
//! author : Jens Alm : https://github.com/ulmus
|
||
a.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",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(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Swahili [sw]
|
||
//! author : Fahad Kassim : https://github.com/fadsel
|
||
a.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".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:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});
|
||
//! moment.js locale configuration
|
||
//! locale : Tamil [ta]
|
||
//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
|
||
var Ph={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},Qh={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};a.defineLocale("ta",{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:"ஒரு சில விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(a){return a+"வது"},preparse:function(a){return a.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(a){return Qh[a]})},postformat:function(a){return a.replace(/\d/g,function(a){return Ph[a]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return a<2?" யாமம்":a<6?" வைகறை":a<10?" காலை":a<14?" நண்பகல்":a<18?" எற்பாடு":a<22?" மாலை":" யாமம்"},meridiemHour:function(a,b){return 12===a&&(a=0),"யாமம்"===b?a<2?a:a+12:"வைகறை"===b||"காலை"===b?a:"நண்பகல்"===b&&a>=10?a:a+12},week:{dow:0,doy:6}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Telugu [te]
|
||
//! author : Krishna Chaitanya Thota : https://github.com/kcthota
|
||
a.defineLocale("te",{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"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(a,b){return 12===a&&(a=0),"రాత్రి"===b?a<4?a:a+12:"ఉదయం"===b?a:"మధ్యాహ్నం"===b?a>=10?a:a+12:"సాయంత్రం"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?"రాత్రి":a<10?"ఉదయం":a<17?"మధ్యాహ్నం":a<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Tetun Dili (East Timor) [tet]
|
||
//! author : Joshua Brooks : https://github.com/joshbrooks
|
||
//! author : Onorio De J. Afonso : https://github.com/marobo
|
||
a.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sext_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Sex_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:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",m:"minutu ida",mm:"minutus %d",h:"horas ida",hh:"horas %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Thai [th]
|
||
//! author : Kridsada Thanabulpong : https://github.com/sirn
|
||
a.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(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return a<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Tagalog (Philippines) [tl-ph]
|
||
//! author : Dan Hagman : https://github.com/hagmandan
|
||
a.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Klingon [tlh]
|
||
//! author : Dominika Kruk : https://github.com/amaranthrose
|
||
var Rh="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");a.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".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:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:ie,past:je,s:"puS lup",m:"wa’ tup",mm:ke,h:"wa’ rep",hh:ke,d:"wa’ jaj",dd:ke,M:"wa’ jar",MM:ke,y:"wa’ DIS",yy:ke},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});
|
||
//! moment.js locale configuration
|
||
//! locale : Turkish [tr]
|
||
//! authors : Erhan Gundogan : https://github.com/erhangundogan,
|
||
//! Burak Yiğit Kaya: https://github.com/BYK
|
||
var Sh={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ı"};a.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:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç 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"},dayOfMonthOrdinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+"'ıncı";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Sh[b]||Sh[c]||Sh[d])},week:{dow:1,doy:7}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Talossan [tzl]
|
||
//! author : Robin van der Vliet : https://github.com/robin0van0der0v
|
||
//! author : Iustì Canun
|
||
a.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(a){return"d'o"===a.toLowerCase()},meridiem:function(a,b,c){return a>11?c?"d'o":"D'O":c?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:me,m:me,mm:me,h:me,hh:me,d:me,dd:me,M:me,MM:me,y:me,yy:me},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Central Atlas Tamazight Latin [tzm-latn]
|
||
//! author : Abdel Said : https://github.com/abdelsaid
|
||
a.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".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:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),
|
||
//! moment.js locale configuration
|
||
//! locale : Central Atlas Tamazight [tzm]
|
||
//! author : Abdel Said : https://github.com/abdelsaid
|
||
a.defineLocale("tzm",{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:"ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}}),a.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:pe,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:qe("[Сьогодні "),nextDay:qe("[Завтра "),lastDay:qe("[Вчора "),nextWeek:qe("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return qe("[Минулої] dddd [").call(this);case 1:case 2:case 4:return qe("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:oe,mm:oe,h:"годину",hh:oe,d:"день",dd:oe,M:"місяць",MM:oe,y:"рік",yy:oe},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return a<4?"ночі":a<12?"ранку":a<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}});
|
||
//! moment.js locale configuration
|
||
//! locale : Urdu [ur]
|
||
//! author : Sawood Alam : https://github.com/ibnesayeed
|
||
//! author : Zack : https://github.com/ZackVision
|
||
var Th=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],Uh=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];
|
||
//! moment.js locale configuration
|
||
//! locale : Uzbek Latin [uz-latn]
|
||
//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
|
||
//! moment.js locale configuration
|
||
//! locale : Uzbek [uz]
|
||
//! author : Sardor Muminov : https://github.com/muminoff
|
||
//! moment.js locale configuration
|
||
//! locale : Vietnamese [vi]
|
||
//! author : Bang Nguyen : https://github.com/bangnk
|
||
//! moment.js locale configuration
|
||
//! locale : Pseudo [x-pseudo]
|
||
//! author : Andrew Hood : https://github.com/andrewhood125
|
||
//! moment.js locale configuration
|
||
//! locale : Yoruba Nigeria [yo]
|
||
//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
|
||
//! moment.js locale configuration
|
||
//! locale : Chinese (China) [zh-cn]
|
||
//! author : suupic : https://github.com/suupic
|
||
//! author : Zeno Zeng : https://github.com/zenozeng
|
||
//! moment.js locale configuration
|
||
//! locale : Chinese (Hong Kong) [zh-hk]
|
||
//! author : Ben : https://github.com/ben-lin
|
||
//! author : Chris Lam : https://github.com/hehachris
|
||
//! author : Konstantin : https://github.com/skfd
|
||
//! moment.js locale configuration
|
||
//! locale : Chinese (Taiwan) [zh-tw]
|
||
//! author : Ben : https://github.com/ben-lin
|
||
//! author : Chris Lam : https://github.com/hehachris
|
||
return a.defineLocale("ur",{months:Th,monthsShort:Th,weekdays:Uh,weekdaysShort:Uh,weekdaysMin:Uh,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(a){return"شام"===a},meridiem:function(a,b,c){return a<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(a){return a.replace(/،/g,",")},postformat:function(a){return a.replace(/,/g,"،")},week:{dow:1,doy:4}}),a.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),a.defineLocale("uz",{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:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}}),a.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(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return a<12?c?"sa":"SA":c?"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 rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài 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(a){return a},week:{dow:1,doy:4}}),a.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}}),a.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".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:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}}),a.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年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日 HH:mm",llll:"YYYY年MMMD日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上午":d<1230?"中午":d<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"周";default:return a}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",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}}),a.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年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日 HH:mm",LLLL:"YYYY年MMMD日dddd HH:mm",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日 HH:mm",llll:"YYYY年MMMD日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上午":d<1230?"中午":d<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}}),a.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年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日 HH:mm",LLLL:"YYYY年MMMD日dddd HH:mm",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日 HH:mm",llll:"YYYY年MMMD日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?"凌晨":d<900?"早上":d<1130?"上午":d<1230?"中午":d<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}}),a.locale("en"),a});
|
||
/*!
|
||
|
||
handlebars v4.0.5
|
||
|
||
Copyright (C) 2011-2015 by Yehuda Katz
|
||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
of this software and associated documentation files (the "Software"), to deal
|
||
in the Software without restriction, including without limitation the rights
|
||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
copies of the Software, and to permit persons to whom the Software is
|
||
furnished to do so, subject to the following conditions:
|
||
|
||
The above copyright notice and this permission notice shall be included in
|
||
all copies or substantial portions of the Software.
|
||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||
THE SOFTWARE.
|
||
|
||
@license
|
||
*/
|
||
(function webpackUniversalModuleDefinition(root, factory) {
|
||
if(typeof exports === 'object' && typeof module === 'object')
|
||
module.exports = factory();
|
||
else if(typeof define === 'function' && define.amd)
|
||
define([], factory);
|
||
else if(typeof exports === 'object')
|
||
exports["Handlebars"] = factory();
|
||
else
|
||
root["Handlebars"] = factory();
|
||
})(this, function() {
|
||
return /******/ (function(modules) { // webpackBootstrap
|
||
/******/ // The module cache
|
||
/******/ var installedModules = {};
|
||
|
||
/******/ // The require function
|
||
/******/ function __webpack_require__(moduleId) {
|
||
|
||
/******/ // Check if module is in cache
|
||
/******/ if(installedModules[moduleId])
|
||
/******/ return installedModules[moduleId].exports;
|
||
|
||
/******/ // Create a new module (and put it into the cache)
|
||
/******/ var module = installedModules[moduleId] = {
|
||
/******/ exports: {},
|
||
/******/ id: moduleId,
|
||
/******/ loaded: false
|
||
/******/ };
|
||
|
||
/******/ // Execute the module function
|
||
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
||
|
||
/******/ // Flag the module as loaded
|
||
/******/ module.loaded = true;
|
||
|
||
/******/ // Return the exports of the module
|
||
/******/ return module.exports;
|
||
/******/ }
|
||
|
||
|
||
/******/ // expose the modules object (__webpack_modules__)
|
||
/******/ __webpack_require__.m = modules;
|
||
|
||
/******/ // expose the module cache
|
||
/******/ __webpack_require__.c = installedModules;
|
||
|
||
/******/ // __webpack_public_path__
|
||
/******/ __webpack_require__.p = "";
|
||
|
||
/******/ // Load entry module and return exports
|
||
/******/ return __webpack_require__(0);
|
||
/******/ })
|
||
/************************************************************************/
|
||
/******/ ([
|
||
/* 0 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _handlebarsRuntime = __webpack_require__(2);
|
||
|
||
var _handlebarsRuntime2 = _interopRequireDefault(_handlebarsRuntime);
|
||
|
||
// Compiler imports
|
||
|
||
var _handlebarsCompilerAst = __webpack_require__(21);
|
||
|
||
var _handlebarsCompilerAst2 = _interopRequireDefault(_handlebarsCompilerAst);
|
||
|
||
var _handlebarsCompilerBase = __webpack_require__(22);
|
||
|
||
var _handlebarsCompilerCompiler = __webpack_require__(27);
|
||
|
||
var _handlebarsCompilerJavascriptCompiler = __webpack_require__(28);
|
||
|
||
var _handlebarsCompilerJavascriptCompiler2 = _interopRequireDefault(_handlebarsCompilerJavascriptCompiler);
|
||
|
||
var _handlebarsCompilerVisitor = __webpack_require__(25);
|
||
|
||
var _handlebarsCompilerVisitor2 = _interopRequireDefault(_handlebarsCompilerVisitor);
|
||
|
||
var _handlebarsNoConflict = __webpack_require__(20);
|
||
|
||
var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
|
||
|
||
var _create = _handlebarsRuntime2['default'].create;
|
||
function create() {
|
||
var hb = _create();
|
||
|
||
hb.compile = function (input, options) {
|
||
return _handlebarsCompilerCompiler.compile(input, options, hb);
|
||
};
|
||
hb.precompile = function (input, options) {
|
||
return _handlebarsCompilerCompiler.precompile(input, options, hb);
|
||
};
|
||
|
||
hb.AST = _handlebarsCompilerAst2['default'];
|
||
hb.Compiler = _handlebarsCompilerCompiler.Compiler;
|
||
hb.JavaScriptCompiler = _handlebarsCompilerJavascriptCompiler2['default'];
|
||
hb.Parser = _handlebarsCompilerBase.parser;
|
||
hb.parse = _handlebarsCompilerBase.parse;
|
||
|
||
return hb;
|
||
}
|
||
|
||
var inst = create();
|
||
inst.create = create;
|
||
|
||
_handlebarsNoConflict2['default'](inst);
|
||
|
||
inst.Visitor = _handlebarsCompilerVisitor2['default'];
|
||
|
||
inst['default'] = inst;
|
||
|
||
exports['default'] = inst;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 1 */
|
||
/***/ function(module, exports) {
|
||
|
||
"use strict";
|
||
|
||
exports["default"] = function (obj) {
|
||
return obj && obj.__esModule ? obj : {
|
||
"default": obj
|
||
};
|
||
};
|
||
|
||
exports.__esModule = true;
|
||
|
||
/***/ },
|
||
/* 2 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireWildcard = __webpack_require__(3)['default'];
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _handlebarsBase = __webpack_require__(4);
|
||
|
||
var base = _interopRequireWildcard(_handlebarsBase);
|
||
|
||
// Each of these augment the Handlebars object. No need to setup here.
|
||
// (This is done to easily share code between commonjs and browse envs)
|
||
|
||
var _handlebarsSafeString = __webpack_require__(18);
|
||
|
||
var _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);
|
||
|
||
var _handlebarsException = __webpack_require__(6);
|
||
|
||
var _handlebarsException2 = _interopRequireDefault(_handlebarsException);
|
||
|
||
var _handlebarsUtils = __webpack_require__(5);
|
||
|
||
var Utils = _interopRequireWildcard(_handlebarsUtils);
|
||
|
||
var _handlebarsRuntime = __webpack_require__(19);
|
||
|
||
var runtime = _interopRequireWildcard(_handlebarsRuntime);
|
||
|
||
var _handlebarsNoConflict = __webpack_require__(20);
|
||
|
||
var _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);
|
||
|
||
// For compatibility and usage outside of module systems, make the Handlebars object a namespace
|
||
function create() {
|
||
var hb = new base.HandlebarsEnvironment();
|
||
|
||
Utils.extend(hb, base);
|
||
hb.SafeString = _handlebarsSafeString2['default'];
|
||
hb.Exception = _handlebarsException2['default'];
|
||
hb.Utils = Utils;
|
||
hb.escapeExpression = Utils.escapeExpression;
|
||
|
||
hb.VM = runtime;
|
||
hb.template = function (spec) {
|
||
return runtime.template(spec, hb);
|
||
};
|
||
|
||
return hb;
|
||
}
|
||
|
||
var inst = create();
|
||
inst.create = create;
|
||
|
||
_handlebarsNoConflict2['default'](inst);
|
||
|
||
inst['default'] = inst;
|
||
|
||
exports['default'] = inst;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 3 */
|
||
/***/ function(module, exports) {
|
||
|
||
"use strict";
|
||
|
||
exports["default"] = function (obj) {
|
||
if (obj && obj.__esModule) {
|
||
return obj;
|
||
} else {
|
||
var newObj = {};
|
||
|
||
if (obj != null) {
|
||
for (var key in obj) {
|
||
if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
|
||
}
|
||
}
|
||
|
||
newObj["default"] = obj;
|
||
return newObj;
|
||
}
|
||
};
|
||
|
||
exports.__esModule = true;
|
||
|
||
/***/ },
|
||
/* 4 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
exports.HandlebarsEnvironment = HandlebarsEnvironment;
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
var _exception = __webpack_require__(6);
|
||
|
||
var _exception2 = _interopRequireDefault(_exception);
|
||
|
||
var _helpers = __webpack_require__(7);
|
||
|
||
var _decorators = __webpack_require__(15);
|
||
|
||
var _logger = __webpack_require__(17);
|
||
|
||
var _logger2 = _interopRequireDefault(_logger);
|
||
|
||
var VERSION = '4.0.5';
|
||
exports.VERSION = VERSION;
|
||
var COMPILER_REVISION = 7;
|
||
|
||
exports.COMPILER_REVISION = COMPILER_REVISION;
|
||
var REVISION_CHANGES = {
|
||
1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it
|
||
2: '== 1.0.0-rc.3',
|
||
3: '== 1.0.0-rc.4',
|
||
4: '== 1.x.x',
|
||
5: '== 2.0.0-alpha.x',
|
||
6: '>= 2.0.0-beta.1',
|
||
7: '>= 4.0.0'
|
||
};
|
||
|
||
exports.REVISION_CHANGES = REVISION_CHANGES;
|
||
var objectType = '[object Object]';
|
||
|
||
function HandlebarsEnvironment(helpers, partials, decorators) {
|
||
this.helpers = helpers || {};
|
||
this.partials = partials || {};
|
||
this.decorators = decorators || {};
|
||
|
||
_helpers.registerDefaultHelpers(this);
|
||
_decorators.registerDefaultDecorators(this);
|
||
}
|
||
|
||
HandlebarsEnvironment.prototype = {
|
||
constructor: HandlebarsEnvironment,
|
||
|
||
logger: _logger2['default'],
|
||
log: _logger2['default'].log,
|
||
|
||
registerHelper: function registerHelper(name, fn) {
|
||
if (_utils.toString.call(name) === objectType) {
|
||
if (fn) {
|
||
throw new _exception2['default']('Arg not supported with multiple helpers');
|
||
}
|
||
_utils.extend(this.helpers, name);
|
||
} else {
|
||
this.helpers[name] = fn;
|
||
}
|
||
},
|
||
unregisterHelper: function unregisterHelper(name) {
|
||
delete this.helpers[name];
|
||
},
|
||
|
||
registerPartial: function registerPartial(name, partial) {
|
||
if (_utils.toString.call(name) === objectType) {
|
||
_utils.extend(this.partials, name);
|
||
} else {
|
||
if (typeof partial === 'undefined') {
|
||
throw new _exception2['default']('Attempting to register a partial called "' + name + '" as undefined');
|
||
}
|
||
this.partials[name] = partial;
|
||
}
|
||
},
|
||
unregisterPartial: function unregisterPartial(name) {
|
||
delete this.partials[name];
|
||
},
|
||
|
||
registerDecorator: function registerDecorator(name, fn) {
|
||
if (_utils.toString.call(name) === objectType) {
|
||
if (fn) {
|
||
throw new _exception2['default']('Arg not supported with multiple decorators');
|
||
}
|
||
_utils.extend(this.decorators, name);
|
||
} else {
|
||
this.decorators[name] = fn;
|
||
}
|
||
},
|
||
unregisterDecorator: function unregisterDecorator(name) {
|
||
delete this.decorators[name];
|
||
}
|
||
};
|
||
|
||
var log = _logger2['default'].log;
|
||
|
||
exports.log = log;
|
||
exports.createFrame = _utils.createFrame;
|
||
exports.logger = _logger2['default'];
|
||
|
||
/***/ },
|
||
/* 5 */
|
||
/***/ function(module, exports) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
exports.extend = extend;
|
||
exports.indexOf = indexOf;
|
||
exports.escapeExpression = escapeExpression;
|
||
exports.isEmpty = isEmpty;
|
||
exports.createFrame = createFrame;
|
||
exports.blockParams = blockParams;
|
||
exports.appendContextPath = appendContextPath;
|
||
var escape = {
|
||
'&': '&',
|
||
'<': '<',
|
||
'>': '>',
|
||
'"': '"',
|
||
"'": ''',
|
||
'`': '`',
|
||
'=': '='
|
||
};
|
||
|
||
var badChars = /[&<>"'`=]/g,
|
||
possible = /[&<>"'`=]/;
|
||
|
||
function escapeChar(chr) {
|
||
return escape[chr];
|
||
}
|
||
|
||
function extend(obj /* , ...source */) {
|
||
for (var i = 1; i < arguments.length; i++) {
|
||
for (var key in arguments[i]) {
|
||
if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {
|
||
obj[key] = arguments[i][key];
|
||
}
|
||
}
|
||
}
|
||
|
||
return obj;
|
||
}
|
||
|
||
var toString = Object.prototype.toString;
|
||
|
||
exports.toString = toString;
|
||
// Sourced from lodash
|
||
// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt
|
||
/* eslint-disable func-style */
|
||
var isFunction = function isFunction(value) {
|
||
return typeof value === 'function';
|
||
};
|
||
// fallback for older versions of Chrome and Safari
|
||
/* istanbul ignore next */
|
||
if (isFunction(/x/)) {
|
||
exports.isFunction = isFunction = function (value) {
|
||
return typeof value === 'function' && toString.call(value) === '[object Function]';
|
||
};
|
||
}
|
||
exports.isFunction = isFunction;
|
||
|
||
/* eslint-enable func-style */
|
||
|
||
/* istanbul ignore next */
|
||
var isArray = Array.isArray || function (value) {
|
||
return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;
|
||
};
|
||
|
||
exports.isArray = isArray;
|
||
// Older IE versions do not directly support indexOf so we must implement our own, sadly.
|
||
|
||
function indexOf(array, value) {
|
||
for (var i = 0, len = array.length; i < len; i++) {
|
||
if (array[i] === value) {
|
||
return i;
|
||
}
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
function escapeExpression(string) {
|
||
if (typeof string !== 'string') {
|
||
// don't escape SafeStrings, since they're already safe
|
||
if (string && string.toHTML) {
|
||
return string.toHTML();
|
||
} else if (string == null) {
|
||
return '';
|
||
} else if (!string) {
|
||
return string + '';
|
||
}
|
||
|
||
// Force a string conversion as this will be done by the append regardless and
|
||
// the regex test will do this transparently behind the scenes, causing issues if
|
||
// an object's to string has escaped characters in it.
|
||
string = '' + string;
|
||
}
|
||
|
||
if (!possible.test(string)) {
|
||
return string;
|
||
}
|
||
return string.replace(badChars, escapeChar);
|
||
}
|
||
|
||
function isEmpty(value) {
|
||
if (!value && value !== 0) {
|
||
return true;
|
||
} else if (isArray(value) && value.length === 0) {
|
||
return true;
|
||
} else {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
function createFrame(object) {
|
||
var frame = extend({}, object);
|
||
frame._parent = object;
|
||
return frame;
|
||
}
|
||
|
||
function blockParams(params, ids) {
|
||
params.path = ids;
|
||
return params;
|
||
}
|
||
|
||
function appendContextPath(contextPath, id) {
|
||
return (contextPath ? contextPath + '.' : '') + id;
|
||
}
|
||
|
||
/***/ },
|
||
/* 6 */
|
||
/***/ function(module, exports) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
var errorProps = ['description', 'fileName', 'lineNumber', 'message', 'name', 'number', 'stack'];
|
||
|
||
function Exception(message, node) {
|
||
var loc = node && node.loc,
|
||
line = undefined,
|
||
column = undefined;
|
||
if (loc) {
|
||
line = loc.start.line;
|
||
column = loc.start.column;
|
||
|
||
message += ' - ' + line + ':' + column;
|
||
}
|
||
|
||
var tmp = Error.prototype.constructor.call(this, message);
|
||
|
||
// Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.
|
||
for (var idx = 0; idx < errorProps.length; idx++) {
|
||
this[errorProps[idx]] = tmp[errorProps[idx]];
|
||
}
|
||
|
||
/* istanbul ignore else */
|
||
if (Error.captureStackTrace) {
|
||
Error.captureStackTrace(this, Exception);
|
||
}
|
||
|
||
if (loc) {
|
||
this.lineNumber = line;
|
||
this.column = column;
|
||
}
|
||
}
|
||
|
||
Exception.prototype = new Error();
|
||
|
||
exports['default'] = Exception;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 7 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
exports.registerDefaultHelpers = registerDefaultHelpers;
|
||
|
||
var _helpersBlockHelperMissing = __webpack_require__(8);
|
||
|
||
var _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);
|
||
|
||
var _helpersEach = __webpack_require__(9);
|
||
|
||
var _helpersEach2 = _interopRequireDefault(_helpersEach);
|
||
|
||
var _helpersHelperMissing = __webpack_require__(10);
|
||
|
||
var _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);
|
||
|
||
var _helpersIf = __webpack_require__(11);
|
||
|
||
var _helpersIf2 = _interopRequireDefault(_helpersIf);
|
||
|
||
var _helpersLog = __webpack_require__(12);
|
||
|
||
var _helpersLog2 = _interopRequireDefault(_helpersLog);
|
||
|
||
var _helpersLookup = __webpack_require__(13);
|
||
|
||
var _helpersLookup2 = _interopRequireDefault(_helpersLookup);
|
||
|
||
var _helpersWith = __webpack_require__(14);
|
||
|
||
var _helpersWith2 = _interopRequireDefault(_helpersWith);
|
||
|
||
function registerDefaultHelpers(instance) {
|
||
_helpersBlockHelperMissing2['default'](instance);
|
||
_helpersEach2['default'](instance);
|
||
_helpersHelperMissing2['default'](instance);
|
||
_helpersIf2['default'](instance);
|
||
_helpersLog2['default'](instance);
|
||
_helpersLookup2['default'](instance);
|
||
_helpersWith2['default'](instance);
|
||
}
|
||
|
||
/***/ },
|
||
/* 8 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
exports['default'] = function (instance) {
|
||
instance.registerHelper('blockHelperMissing', function (context, options) {
|
||
var inverse = options.inverse,
|
||
fn = options.fn;
|
||
|
||
if (context === true) {
|
||
return fn(this);
|
||
} else if (context === false || context == null) {
|
||
return inverse(this);
|
||
} else if (_utils.isArray(context)) {
|
||
if (context.length > 0) {
|
||
if (options.ids) {
|
||
options.ids = [options.name];
|
||
}
|
||
|
||
return instance.helpers.each(context, options);
|
||
} else {
|
||
return inverse(this);
|
||
}
|
||
} else {
|
||
if (options.data && options.ids) {
|
||
var data = _utils.createFrame(options.data);
|
||
data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);
|
||
options = { data: data };
|
||
}
|
||
|
||
return fn(context, options);
|
||
}
|
||
});
|
||
};
|
||
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 9 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
var _exception = __webpack_require__(6);
|
||
|
||
var _exception2 = _interopRequireDefault(_exception);
|
||
|
||
exports['default'] = function (instance) {
|
||
instance.registerHelper('each', function (context, options) {
|
||
if (!options) {
|
||
throw new _exception2['default']('Must pass iterator to #each');
|
||
}
|
||
|
||
var fn = options.fn,
|
||
inverse = options.inverse,
|
||
i = 0,
|
||
ret = '',
|
||
data = undefined,
|
||
contextPath = undefined;
|
||
|
||
if (options.data && options.ids) {
|
||
contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';
|
||
}
|
||
|
||
if (_utils.isFunction(context)) {
|
||
context = context.call(this);
|
||
}
|
||
|
||
if (options.data) {
|
||
data = _utils.createFrame(options.data);
|
||
}
|
||
|
||
function execIteration(field, index, last) {
|
||
if (data) {
|
||
data.key = field;
|
||
data.index = index;
|
||
data.first = index === 0;
|
||
data.last = !!last;
|
||
|
||
if (contextPath) {
|
||
data.contextPath = contextPath + field;
|
||
}
|
||
}
|
||
|
||
ret = ret + fn(context[field], {
|
||
data: data,
|
||
blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])
|
||
});
|
||
}
|
||
|
||
if (context && typeof context === 'object') {
|
||
if (_utils.isArray(context)) {
|
||
for (var j = context.length; i < j; i++) {
|
||
if (i in context) {
|
||
execIteration(i, i, i === context.length - 1);
|
||
}
|
||
}
|
||
} else {
|
||
var priorKey = undefined;
|
||
|
||
for (var key in context) {
|
||
if (context.hasOwnProperty(key)) {
|
||
// We're running the iterations one step out of sync so we can detect
|
||
// the last iteration without have to scan the object twice and create
|
||
// an itermediate keys array.
|
||
if (priorKey !== undefined) {
|
||
execIteration(priorKey, i - 1);
|
||
}
|
||
priorKey = key;
|
||
i++;
|
||
}
|
||
}
|
||
if (priorKey !== undefined) {
|
||
execIteration(priorKey, i - 1, true);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (i === 0) {
|
||
ret = inverse(this);
|
||
}
|
||
|
||
return ret;
|
||
});
|
||
};
|
||
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 10 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _exception = __webpack_require__(6);
|
||
|
||
var _exception2 = _interopRequireDefault(_exception);
|
||
|
||
exports['default'] = function (instance) {
|
||
instance.registerHelper('helperMissing', function () /* [args, ]options */{
|
||
if (arguments.length === 1) {
|
||
// A missing field in a {{foo}} construct.
|
||
return undefined;
|
||
} else {
|
||
// Someone is actually trying to call something, blow up.
|
||
throw new _exception2['default']('Missing helper: "' + arguments[arguments.length - 1].name + '"');
|
||
}
|
||
});
|
||
};
|
||
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 11 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
exports['default'] = function (instance) {
|
||
instance.registerHelper('if', function (conditional, options) {
|
||
if (_utils.isFunction(conditional)) {
|
||
conditional = conditional.call(this);
|
||
}
|
||
|
||
// Default behavior is to render the positive path if the value is truthy and not empty.
|
||
// The `includeZero` option may be set to treat the condtional as purely not empty based on the
|
||
// behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.
|
||
if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {
|
||
return options.inverse(this);
|
||
} else {
|
||
return options.fn(this);
|
||
}
|
||
});
|
||
|
||
instance.registerHelper('unless', function (conditional, options) {
|
||
return instance.helpers['if'].call(this, conditional, { fn: options.inverse, inverse: options.fn, hash: options.hash });
|
||
});
|
||
};
|
||
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 12 */
|
||
/***/ function(module, exports) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
exports['default'] = function (instance) {
|
||
instance.registerHelper('log', function () /* message, options */{
|
||
var args = [undefined],
|
||
options = arguments[arguments.length - 1];
|
||
for (var i = 0; i < arguments.length - 1; i++) {
|
||
args.push(arguments[i]);
|
||
}
|
||
|
||
var level = 1;
|
||
if (options.hash.level != null) {
|
||
level = options.hash.level;
|
||
} else if (options.data && options.data.level != null) {
|
||
level = options.data.level;
|
||
}
|
||
args[0] = level;
|
||
|
||
instance.log.apply(instance, args);
|
||
});
|
||
};
|
||
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 13 */
|
||
/***/ function(module, exports) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
exports['default'] = function (instance) {
|
||
instance.registerHelper('lookup', function (obj, field) {
|
||
return obj && obj[field];
|
||
});
|
||
};
|
||
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 14 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
exports['default'] = function (instance) {
|
||
instance.registerHelper('with', function (context, options) {
|
||
if (_utils.isFunction(context)) {
|
||
context = context.call(this);
|
||
}
|
||
|
||
var fn = options.fn;
|
||
|
||
if (!_utils.isEmpty(context)) {
|
||
var data = options.data;
|
||
if (options.data && options.ids) {
|
||
data = _utils.createFrame(options.data);
|
||
data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);
|
||
}
|
||
|
||
return fn(context, {
|
||
data: data,
|
||
blockParams: _utils.blockParams([context], [data && data.contextPath])
|
||
});
|
||
} else {
|
||
return options.inverse(this);
|
||
}
|
||
});
|
||
};
|
||
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 15 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
exports.registerDefaultDecorators = registerDefaultDecorators;
|
||
|
||
var _decoratorsInline = __webpack_require__(16);
|
||
|
||
var _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);
|
||
|
||
function registerDefaultDecorators(instance) {
|
||
_decoratorsInline2['default'](instance);
|
||
}
|
||
|
||
/***/ },
|
||
/* 16 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
exports['default'] = function (instance) {
|
||
instance.registerDecorator('inline', function (fn, props, container, options) {
|
||
var ret = fn;
|
||
if (!props.partials) {
|
||
props.partials = {};
|
||
ret = function (context, options) {
|
||
// Create a new partials stack frame prior to exec.
|
||
var original = container.partials;
|
||
container.partials = _utils.extend({}, original, props.partials);
|
||
var ret = fn(context, options);
|
||
container.partials = original;
|
||
return ret;
|
||
};
|
||
}
|
||
|
||
props.partials[options.args[0]] = options.fn;
|
||
|
||
return ret;
|
||
});
|
||
};
|
||
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 17 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
var logger = {
|
||
methodMap: ['debug', 'info', 'warn', 'error'],
|
||
level: 'info',
|
||
|
||
// Maps a given level value to the `methodMap` indexes above.
|
||
lookupLevel: function lookupLevel(level) {
|
||
if (typeof level === 'string') {
|
||
var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());
|
||
if (levelMap >= 0) {
|
||
level = levelMap;
|
||
} else {
|
||
level = parseInt(level, 10);
|
||
}
|
||
}
|
||
|
||
return level;
|
||
},
|
||
|
||
// Can be overridden in the host environment
|
||
log: function log(level) {
|
||
level = logger.lookupLevel(level);
|
||
|
||
if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {
|
||
var method = logger.methodMap[level];
|
||
if (!console[method]) {
|
||
// eslint-disable-line no-console
|
||
method = 'log';
|
||
}
|
||
|
||
for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
||
message[_key - 1] = arguments[_key];
|
||
}
|
||
|
||
console[method].apply(console, message); // eslint-disable-line no-console
|
||
}
|
||
}
|
||
};
|
||
|
||
exports['default'] = logger;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 18 */
|
||
/***/ function(module, exports) {
|
||
|
||
// Build out our basic SafeString type
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
function SafeString(string) {
|
||
this.string = string;
|
||
}
|
||
|
||
SafeString.prototype.toString = SafeString.prototype.toHTML = function () {
|
||
return '' + this.string;
|
||
};
|
||
|
||
exports['default'] = SafeString;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 19 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireWildcard = __webpack_require__(3)['default'];
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
exports.checkRevision = checkRevision;
|
||
exports.template = template;
|
||
exports.wrapProgram = wrapProgram;
|
||
exports.resolvePartial = resolvePartial;
|
||
exports.invokePartial = invokePartial;
|
||
exports.noop = noop;
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
var Utils = _interopRequireWildcard(_utils);
|
||
|
||
var _exception = __webpack_require__(6);
|
||
|
||
var _exception2 = _interopRequireDefault(_exception);
|
||
|
||
var _base = __webpack_require__(4);
|
||
|
||
function checkRevision(compilerInfo) {
|
||
var compilerRevision = compilerInfo && compilerInfo[0] || 1,
|
||
currentRevision = _base.COMPILER_REVISION;
|
||
|
||
if (compilerRevision !== currentRevision) {
|
||
if (compilerRevision < currentRevision) {
|
||
var runtimeVersions = _base.REVISION_CHANGES[currentRevision],
|
||
compilerVersions = _base.REVISION_CHANGES[compilerRevision];
|
||
throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');
|
||
} else {
|
||
// Use the embedded version info since the runtime doesn't know about this revision yet
|
||
throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');
|
||
}
|
||
}
|
||
}
|
||
|
||
function template(templateSpec, env) {
|
||
/* istanbul ignore next */
|
||
if (!env) {
|
||
throw new _exception2['default']('No environment passed to template');
|
||
}
|
||
if (!templateSpec || !templateSpec.main) {
|
||
throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);
|
||
}
|
||
|
||
templateSpec.main.decorator = templateSpec.main_d;
|
||
|
||
// Note: Using env.VM references rather than local var references throughout this section to allow
|
||
// for external users to override these as psuedo-supported APIs.
|
||
env.VM.checkRevision(templateSpec.compiler);
|
||
|
||
function invokePartialWrapper(partial, context, options) {
|
||
if (options.hash) {
|
||
context = Utils.extend({}, context, options.hash);
|
||
if (options.ids) {
|
||
options.ids[0] = true;
|
||
}
|
||
}
|
||
|
||
partial = env.VM.resolvePartial.call(this, partial, context, options);
|
||
var result = env.VM.invokePartial.call(this, partial, context, options);
|
||
|
||
if (result == null && env.compile) {
|
||
options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);
|
||
result = options.partials[options.name](context, options);
|
||
}
|
||
if (result != null) {
|
||
if (options.indent) {
|
||
var lines = result.split('\n');
|
||
for (var i = 0, l = lines.length; i < l; i++) {
|
||
if (!lines[i] && i + 1 === l) {
|
||
break;
|
||
}
|
||
|
||
lines[i] = options.indent + lines[i];
|
||
}
|
||
result = lines.join('\n');
|
||
}
|
||
return result;
|
||
} else {
|
||
throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');
|
||
}
|
||
}
|
||
|
||
// Just add water
|
||
var container = {
|
||
strict: function strict(obj, name) {
|
||
if (!(name in obj)) {
|
||
throw new _exception2['default']('"' + name + '" not defined in ' + obj);
|
||
}
|
||
return obj[name];
|
||
},
|
||
lookup: function lookup(depths, name) {
|
||
var len = depths.length;
|
||
for (var i = 0; i < len; i++) {
|
||
if (depths[i] && depths[i][name] != null) {
|
||
return depths[i][name];
|
||
}
|
||
}
|
||
},
|
||
lambda: function lambda(current, context) {
|
||
return typeof current === 'function' ? current.call(context) : current;
|
||
},
|
||
|
||
escapeExpression: Utils.escapeExpression,
|
||
invokePartial: invokePartialWrapper,
|
||
|
||
fn: function fn(i) {
|
||
var ret = templateSpec[i];
|
||
ret.decorator = templateSpec[i + '_d'];
|
||
return ret;
|
||
},
|
||
|
||
programs: [],
|
||
program: function program(i, data, declaredBlockParams, blockParams, depths) {
|
||
var programWrapper = this.programs[i],
|
||
fn = this.fn(i);
|
||
if (data || depths || blockParams || declaredBlockParams) {
|
||
programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);
|
||
} else if (!programWrapper) {
|
||
programWrapper = this.programs[i] = wrapProgram(this, i, fn);
|
||
}
|
||
return programWrapper;
|
||
},
|
||
|
||
data: function data(value, depth) {
|
||
while (value && depth--) {
|
||
value = value._parent;
|
||
}
|
||
return value;
|
||
},
|
||
merge: function merge(param, common) {
|
||
var obj = param || common;
|
||
|
||
if (param && common && param !== common) {
|
||
obj = Utils.extend({}, common, param);
|
||
}
|
||
|
||
return obj;
|
||
},
|
||
|
||
noop: env.VM.noop,
|
||
compilerInfo: templateSpec.compiler
|
||
};
|
||
|
||
function ret(context) {
|
||
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
||
|
||
var data = options.data;
|
||
|
||
ret._setup(options);
|
||
if (!options.partial && templateSpec.useData) {
|
||
data = initData(context, data);
|
||
}
|
||
var depths = undefined,
|
||
blockParams = templateSpec.useBlockParams ? [] : undefined;
|
||
if (templateSpec.useDepths) {
|
||
if (options.depths) {
|
||
depths = context !== options.depths[0] ? [context].concat(options.depths) : options.depths;
|
||
} else {
|
||
depths = [context];
|
||
}
|
||
}
|
||
|
||
function main(context /*, options*/) {
|
||
return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);
|
||
}
|
||
main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);
|
||
return main(context, options);
|
||
}
|
||
ret.isTop = true;
|
||
|
||
ret._setup = function (options) {
|
||
if (!options.partial) {
|
||
container.helpers = container.merge(options.helpers, env.helpers);
|
||
|
||
if (templateSpec.usePartial) {
|
||
container.partials = container.merge(options.partials, env.partials);
|
||
}
|
||
if (templateSpec.usePartial || templateSpec.useDecorators) {
|
||
container.decorators = container.merge(options.decorators, env.decorators);
|
||
}
|
||
} else {
|
||
container.helpers = options.helpers;
|
||
container.partials = options.partials;
|
||
container.decorators = options.decorators;
|
||
}
|
||
};
|
||
|
||
ret._child = function (i, data, blockParams, depths) {
|
||
if (templateSpec.useBlockParams && !blockParams) {
|
||
throw new _exception2['default']('must pass block params');
|
||
}
|
||
if (templateSpec.useDepths && !depths) {
|
||
throw new _exception2['default']('must pass parent depths');
|
||
}
|
||
|
||
return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);
|
||
};
|
||
return ret;
|
||
}
|
||
|
||
function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {
|
||
function prog(context) {
|
||
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
|
||
|
||
var currentDepths = depths;
|
||
if (depths && context !== depths[0]) {
|
||
currentDepths = [context].concat(depths);
|
||
}
|
||
|
||
return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);
|
||
}
|
||
|
||
prog = executeDecorators(fn, prog, container, depths, data, blockParams);
|
||
|
||
prog.program = i;
|
||
prog.depth = depths ? depths.length : 0;
|
||
prog.blockParams = declaredBlockParams || 0;
|
||
return prog;
|
||
}
|
||
|
||
function resolvePartial(partial, context, options) {
|
||
if (!partial) {
|
||
if (options.name === '@partial-block') {
|
||
partial = options.data['partial-block'];
|
||
} else {
|
||
partial = options.partials[options.name];
|
||
}
|
||
} else if (!partial.call && !options.name) {
|
||
// This is a dynamic partial that returned a string
|
||
options.name = partial;
|
||
partial = options.partials[partial];
|
||
}
|
||
return partial;
|
||
}
|
||
|
||
function invokePartial(partial, context, options) {
|
||
options.partial = true;
|
||
if (options.ids) {
|
||
options.data.contextPath = options.ids[0] || options.data.contextPath;
|
||
}
|
||
|
||
var partialBlock = undefined;
|
||
if (options.fn && options.fn !== noop) {
|
||
options.data = _base.createFrame(options.data);
|
||
partialBlock = options.data['partial-block'] = options.fn;
|
||
|
||
if (partialBlock.partials) {
|
||
options.partials = Utils.extend({}, options.partials, partialBlock.partials);
|
||
}
|
||
}
|
||
|
||
if (partial === undefined && partialBlock) {
|
||
partial = partialBlock;
|
||
}
|
||
|
||
if (partial === undefined) {
|
||
throw new _exception2['default']('The partial ' + options.name + ' could not be found');
|
||
} else if (partial instanceof Function) {
|
||
return partial(context, options);
|
||
}
|
||
}
|
||
|
||
function noop() {
|
||
return '';
|
||
}
|
||
|
||
function initData(context, data) {
|
||
if (!data || !('root' in data)) {
|
||
data = data ? _base.createFrame(data) : {};
|
||
data.root = context;
|
||
}
|
||
return data;
|
||
}
|
||
|
||
function executeDecorators(fn, prog, container, depths, data, blockParams) {
|
||
if (fn.decorator) {
|
||
var props = {};
|
||
prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);
|
||
Utils.extend(prog, props);
|
||
}
|
||
return prog;
|
||
}
|
||
|
||
/***/ },
|
||
/* 20 */
|
||
/***/ function(module, exports) {
|
||
|
||
/* WEBPACK VAR INJECTION */(function(global) {/* global window */
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
exports['default'] = function (Handlebars) {
|
||
/* istanbul ignore next */
|
||
var root = typeof global !== 'undefined' ? global : window,
|
||
$Handlebars = root.Handlebars;
|
||
/* istanbul ignore next */
|
||
Handlebars.noConflict = function () {
|
||
if (root.Handlebars === Handlebars) {
|
||
root.Handlebars = $Handlebars;
|
||
}
|
||
return Handlebars;
|
||
};
|
||
};
|
||
|
||
module.exports = exports['default'];
|
||
/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
|
||
|
||
/***/ },
|
||
/* 21 */
|
||
/***/ function(module, exports) {
|
||
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
var AST = {
|
||
// Public API used to evaluate derived attributes regarding AST nodes
|
||
helpers: {
|
||
// a mustache is definitely a helper if:
|
||
// * it is an eligible helper, and
|
||
// * it has at least one parameter or hash segment
|
||
helperExpression: function helperExpression(node) {
|
||
return node.type === 'SubExpression' || (node.type === 'MustacheStatement' || node.type === 'BlockStatement') && !!(node.params && node.params.length || node.hash);
|
||
},
|
||
|
||
scopedId: function scopedId(path) {
|
||
return (/^\.|this\b/.test(path.original)
|
||
);
|
||
},
|
||
|
||
// an ID is simple if it only has one part, and that part is not
|
||
// `..` or `this`.
|
||
simpleId: function simpleId(path) {
|
||
return path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth;
|
||
}
|
||
}
|
||
};
|
||
|
||
// Must be exported as an object rather than the root of the module as the jison lexer
|
||
// must modify the object to operate properly.
|
||
exports['default'] = AST;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 22 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
var _interopRequireWildcard = __webpack_require__(3)['default'];
|
||
|
||
exports.__esModule = true;
|
||
exports.parse = parse;
|
||
|
||
var _parser = __webpack_require__(23);
|
||
|
||
var _parser2 = _interopRequireDefault(_parser);
|
||
|
||
var _whitespaceControl = __webpack_require__(24);
|
||
|
||
var _whitespaceControl2 = _interopRequireDefault(_whitespaceControl);
|
||
|
||
var _helpers = __webpack_require__(26);
|
||
|
||
var Helpers = _interopRequireWildcard(_helpers);
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
exports.parser = _parser2['default'];
|
||
|
||
var yy = {};
|
||
_utils.extend(yy, Helpers);
|
||
|
||
function parse(input, options) {
|
||
// Just return if an already-compiled AST was passed in.
|
||
if (input.type === 'Program') {
|
||
return input;
|
||
}
|
||
|
||
_parser2['default'].yy = yy;
|
||
|
||
// Altering the shared object here, but this is ok as parser is a sync operation
|
||
yy.locInfo = function (locInfo) {
|
||
return new yy.SourceLocation(options && options.srcName, locInfo);
|
||
};
|
||
|
||
var strip = new _whitespaceControl2['default'](options);
|
||
return strip.accept(_parser2['default'].parse(input));
|
||
}
|
||
|
||
/***/ },
|
||
/* 23 */
|
||
/***/ function(module, exports) {
|
||
|
||
/* istanbul ignore next */
|
||
/* Jison generated parser */
|
||
"use strict";
|
||
|
||
var handlebars = (function () {
|
||
var parser = { trace: function trace() {},
|
||
yy: {},
|
||
symbols_: { "error": 2, "root": 3, "program": 4, "EOF": 5, "program_repetition0": 6, "statement": 7, "mustache": 8, "block": 9, "rawBlock": 10, "partial": 11, "partialBlock": 12, "content": 13, "COMMENT": 14, "CONTENT": 15, "openRawBlock": 16, "rawBlock_repetition_plus0": 17, "END_RAW_BLOCK": 18, "OPEN_RAW_BLOCK": 19, "helperName": 20, "openRawBlock_repetition0": 21, "openRawBlock_option0": 22, "CLOSE_RAW_BLOCK": 23, "openBlock": 24, "block_option0": 25, "closeBlock": 26, "openInverse": 27, "block_option1": 28, "OPEN_BLOCK": 29, "openBlock_repetition0": 30, "openBlock_option0": 31, "openBlock_option1": 32, "CLOSE": 33, "OPEN_INVERSE": 34, "openInverse_repetition0": 35, "openInverse_option0": 36, "openInverse_option1": 37, "openInverseChain": 38, "OPEN_INVERSE_CHAIN": 39, "openInverseChain_repetition0": 40, "openInverseChain_option0": 41, "openInverseChain_option1": 42, "inverseAndProgram": 43, "INVERSE": 44, "inverseChain": 45, "inverseChain_option0": 46, "OPEN_ENDBLOCK": 47, "OPEN": 48, "mustache_repetition0": 49, "mustache_option0": 50, "OPEN_UNESCAPED": 51, "mustache_repetition1": 52, "mustache_option1": 53, "CLOSE_UNESCAPED": 54, "OPEN_PARTIAL": 55, "partialName": 56, "partial_repetition0": 57, "partial_option0": 58, "openPartialBlock": 59, "OPEN_PARTIAL_BLOCK": 60, "openPartialBlock_repetition0": 61, "openPartialBlock_option0": 62, "param": 63, "sexpr": 64, "OPEN_SEXPR": 65, "sexpr_repetition0": 66, "sexpr_option0": 67, "CLOSE_SEXPR": 68, "hash": 69, "hash_repetition_plus0": 70, "hashSegment": 71, "ID": 72, "EQUALS": 73, "blockParams": 74, "OPEN_BLOCK_PARAMS": 75, "blockParams_repetition_plus0": 76, "CLOSE_BLOCK_PARAMS": 77, "path": 78, "dataName": 79, "STRING": 80, "NUMBER": 81, "BOOLEAN": 82, "UNDEFINED": 83, "NULL": 84, "DATA": 85, "pathSegments": 86, "SEP": 87, "$accept": 0, "$end": 1 },
|
||
terminals_: { 2: "error", 5: "EOF", 14: "COMMENT", 15: "CONTENT", 18: "END_RAW_BLOCK", 19: "OPEN_RAW_BLOCK", 23: "CLOSE_RAW_BLOCK", 29: "OPEN_BLOCK", 33: "CLOSE", 34: "OPEN_INVERSE", 39: "OPEN_INVERSE_CHAIN", 44: "INVERSE", 47: "OPEN_ENDBLOCK", 48: "OPEN", 51: "OPEN_UNESCAPED", 54: "CLOSE_UNESCAPED", 55: "OPEN_PARTIAL", 60: "OPEN_PARTIAL_BLOCK", 65: "OPEN_SEXPR", 68: "CLOSE_SEXPR", 72: "ID", 73: "EQUALS", 75: "OPEN_BLOCK_PARAMS", 77: "CLOSE_BLOCK_PARAMS", 80: "STRING", 81: "NUMBER", 82: "BOOLEAN", 83: "UNDEFINED", 84: "NULL", 85: "DATA", 87: "SEP" },
|
||
productions_: [0, [3, 2], [4, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [7, 1], [13, 1], [10, 3], [16, 5], [9, 4], [9, 4], [24, 6], [27, 6], [38, 6], [43, 2], [45, 3], [45, 1], [26, 3], [8, 5], [8, 5], [11, 5], [12, 3], [59, 5], [63, 1], [63, 1], [64, 5], [69, 1], [71, 3], [74, 3], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [20, 1], [56, 1], [56, 1], [79, 2], [78, 1], [86, 3], [86, 1], [6, 0], [6, 2], [17, 1], [17, 2], [21, 0], [21, 2], [22, 0], [22, 1], [25, 0], [25, 1], [28, 0], [28, 1], [30, 0], [30, 2], [31, 0], [31, 1], [32, 0], [32, 1], [35, 0], [35, 2], [36, 0], [36, 1], [37, 0], [37, 1], [40, 0], [40, 2], [41, 0], [41, 1], [42, 0], [42, 1], [46, 0], [46, 1], [49, 0], [49, 2], [50, 0], [50, 1], [52, 0], [52, 2], [53, 0], [53, 1], [57, 0], [57, 2], [58, 0], [58, 1], [61, 0], [61, 2], [62, 0], [62, 1], [66, 0], [66, 2], [67, 0], [67, 1], [70, 1], [70, 2], [76, 1], [76, 2]],
|
||
performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$
|
||
/**/) {
|
||
|
||
var $0 = $$.length - 1;
|
||
switch (yystate) {
|
||
case 1:
|
||
return $$[$0 - 1];
|
||
break;
|
||
case 2:
|
||
this.$ = yy.prepareProgram($$[$0]);
|
||
break;
|
||
case 3:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 4:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 5:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 6:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 7:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 8:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 9:
|
||
this.$ = {
|
||
type: 'CommentStatement',
|
||
value: yy.stripComment($$[$0]),
|
||
strip: yy.stripFlags($$[$0], $$[$0]),
|
||
loc: yy.locInfo(this._$)
|
||
};
|
||
|
||
break;
|
||
case 10:
|
||
this.$ = {
|
||
type: 'ContentStatement',
|
||
original: $$[$0],
|
||
value: $$[$0],
|
||
loc: yy.locInfo(this._$)
|
||
};
|
||
|
||
break;
|
||
case 11:
|
||
this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);
|
||
break;
|
||
case 12:
|
||
this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1] };
|
||
break;
|
||
case 13:
|
||
this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], false, this._$);
|
||
break;
|
||
case 14:
|
||
this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], true, this._$);
|
||
break;
|
||
case 15:
|
||
this.$ = { open: $$[$0 - 5], path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
|
||
break;
|
||
case 16:
|
||
this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
|
||
break;
|
||
case 17:
|
||
this.$ = { path: $$[$0 - 4], params: $$[$0 - 3], hash: $$[$0 - 2], blockParams: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 5], $$[$0]) };
|
||
break;
|
||
case 18:
|
||
this.$ = { strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]), program: $$[$0] };
|
||
break;
|
||
case 19:
|
||
var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], false, this._$),
|
||
program = yy.prepareProgram([inverse], $$[$0 - 1].loc);
|
||
program.chained = true;
|
||
|
||
this.$ = { strip: $$[$0 - 2].strip, program: program, chain: true };
|
||
|
||
break;
|
||
case 20:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 21:
|
||
this.$ = { path: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 2], $$[$0]) };
|
||
break;
|
||
case 22:
|
||
this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
|
||
break;
|
||
case 23:
|
||
this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
|
||
break;
|
||
case 24:
|
||
this.$ = {
|
||
type: 'PartialStatement',
|
||
name: $$[$0 - 3],
|
||
params: $$[$0 - 2],
|
||
hash: $$[$0 - 1],
|
||
indent: '',
|
||
strip: yy.stripFlags($$[$0 - 4], $$[$0]),
|
||
loc: yy.locInfo(this._$)
|
||
};
|
||
|
||
break;
|
||
case 25:
|
||
this.$ = yy.preparePartialBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);
|
||
break;
|
||
case 26:
|
||
this.$ = { path: $$[$0 - 3], params: $$[$0 - 2], hash: $$[$0 - 1], strip: yy.stripFlags($$[$0 - 4], $$[$0]) };
|
||
break;
|
||
case 27:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 28:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 29:
|
||
this.$ = {
|
||
type: 'SubExpression',
|
||
path: $$[$0 - 3],
|
||
params: $$[$0 - 2],
|
||
hash: $$[$0 - 1],
|
||
loc: yy.locInfo(this._$)
|
||
};
|
||
|
||
break;
|
||
case 30:
|
||
this.$ = { type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$) };
|
||
break;
|
||
case 31:
|
||
this.$ = { type: 'HashPair', key: yy.id($$[$0 - 2]), value: $$[$0], loc: yy.locInfo(this._$) };
|
||
break;
|
||
case 32:
|
||
this.$ = yy.id($$[$0 - 1]);
|
||
break;
|
||
case 33:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 34:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 35:
|
||
this.$ = { type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$) };
|
||
break;
|
||
case 36:
|
||
this.$ = { type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$) };
|
||
break;
|
||
case 37:
|
||
this.$ = { type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$) };
|
||
break;
|
||
case 38:
|
||
this.$ = { type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$) };
|
||
break;
|
||
case 39:
|
||
this.$ = { type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$) };
|
||
break;
|
||
case 40:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 41:
|
||
this.$ = $$[$0];
|
||
break;
|
||
case 42:
|
||
this.$ = yy.preparePath(true, $$[$0], this._$);
|
||
break;
|
||
case 43:
|
||
this.$ = yy.preparePath(false, $$[$0], this._$);
|
||
break;
|
||
case 44:
|
||
$$[$0 - 2].push({ part: yy.id($$[$0]), original: $$[$0], separator: $$[$0 - 1] });this.$ = $$[$0 - 2];
|
||
break;
|
||
case 45:
|
||
this.$ = [{ part: yy.id($$[$0]), original: $$[$0] }];
|
||
break;
|
||
case 46:
|
||
this.$ = [];
|
||
break;
|
||
case 47:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 48:
|
||
this.$ = [$$[$0]];
|
||
break;
|
||
case 49:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 50:
|
||
this.$ = [];
|
||
break;
|
||
case 51:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 58:
|
||
this.$ = [];
|
||
break;
|
||
case 59:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 64:
|
||
this.$ = [];
|
||
break;
|
||
case 65:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 70:
|
||
this.$ = [];
|
||
break;
|
||
case 71:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 78:
|
||
this.$ = [];
|
||
break;
|
||
case 79:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 82:
|
||
this.$ = [];
|
||
break;
|
||
case 83:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 86:
|
||
this.$ = [];
|
||
break;
|
||
case 87:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 90:
|
||
this.$ = [];
|
||
break;
|
||
case 91:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 94:
|
||
this.$ = [];
|
||
break;
|
||
case 95:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 98:
|
||
this.$ = [$$[$0]];
|
||
break;
|
||
case 99:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
case 100:
|
||
this.$ = [$$[$0]];
|
||
break;
|
||
case 101:
|
||
$$[$0 - 1].push($$[$0]);
|
||
break;
|
||
}
|
||
},
|
||
table: [{ 3: 1, 4: 2, 5: [2, 46], 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 1: [3] }, { 5: [1, 4] }, { 5: [2, 2], 7: 5, 8: 6, 9: 7, 10: 8, 11: 9, 12: 10, 13: 11, 14: [1, 12], 15: [1, 20], 16: 17, 19: [1, 23], 24: 15, 27: 16, 29: [1, 21], 34: [1, 22], 39: [2, 2], 44: [2, 2], 47: [2, 2], 48: [1, 13], 51: [1, 14], 55: [1, 18], 59: 19, 60: [1, 24] }, { 1: [2, 1] }, { 5: [2, 47], 14: [2, 47], 15: [2, 47], 19: [2, 47], 29: [2, 47], 34: [2, 47], 39: [2, 47], 44: [2, 47], 47: [2, 47], 48: [2, 47], 51: [2, 47], 55: [2, 47], 60: [2, 47] }, { 5: [2, 3], 14: [2, 3], 15: [2, 3], 19: [2, 3], 29: [2, 3], 34: [2, 3], 39: [2, 3], 44: [2, 3], 47: [2, 3], 48: [2, 3], 51: [2, 3], 55: [2, 3], 60: [2, 3] }, { 5: [2, 4], 14: [2, 4], 15: [2, 4], 19: [2, 4], 29: [2, 4], 34: [2, 4], 39: [2, 4], 44: [2, 4], 47: [2, 4], 48: [2, 4], 51: [2, 4], 55: [2, 4], 60: [2, 4] }, { 5: [2, 5], 14: [2, 5], 15: [2, 5], 19: [2, 5], 29: [2, 5], 34: [2, 5], 39: [2, 5], 44: [2, 5], 47: [2, 5], 48: [2, 5], 51: [2, 5], 55: [2, 5], 60: [2, 5] }, { 5: [2, 6], 14: [2, 6], 15: [2, 6], 19: [2, 6], 29: [2, 6], 34: [2, 6], 39: [2, 6], 44: [2, 6], 47: [2, 6], 48: [2, 6], 51: [2, 6], 55: [2, 6], 60: [2, 6] }, { 5: [2, 7], 14: [2, 7], 15: [2, 7], 19: [2, 7], 29: [2, 7], 34: [2, 7], 39: [2, 7], 44: [2, 7], 47: [2, 7], 48: [2, 7], 51: [2, 7], 55: [2, 7], 60: [2, 7] }, { 5: [2, 8], 14: [2, 8], 15: [2, 8], 19: [2, 8], 29: [2, 8], 34: [2, 8], 39: [2, 8], 44: [2, 8], 47: [2, 8], 48: [2, 8], 51: [2, 8], 55: [2, 8], 60: [2, 8] }, { 5: [2, 9], 14: [2, 9], 15: [2, 9], 19: [2, 9], 29: [2, 9], 34: [2, 9], 39: [2, 9], 44: [2, 9], 47: [2, 9], 48: [2, 9], 51: [2, 9], 55: [2, 9], 60: [2, 9] }, { 20: 25, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 36, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 37, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 4: 38, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 13: 40, 15: [1, 20], 17: 39 }, { 20: 42, 56: 41, 64: 43, 65: [1, 44], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 45, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 5: [2, 10], 14: [2, 10], 15: [2, 10], 18: [2, 10], 19: [2, 10], 29: [2, 10], 34: [2, 10], 39: [2, 10], 44: [2, 10], 47: [2, 10], 48: [2, 10], 51: [2, 10], 55: [2, 10], 60: [2, 10] }, { 20: 46, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 47, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 48, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 42, 56: 49, 64: 43, 65: [1, 44], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [2, 78], 49: 50, 65: [2, 78], 72: [2, 78], 80: [2, 78], 81: [2, 78], 82: [2, 78], 83: [2, 78], 84: [2, 78], 85: [2, 78] }, { 23: [2, 33], 33: [2, 33], 54: [2, 33], 65: [2, 33], 68: [2, 33], 72: [2, 33], 75: [2, 33], 80: [2, 33], 81: [2, 33], 82: [2, 33], 83: [2, 33], 84: [2, 33], 85: [2, 33] }, { 23: [2, 34], 33: [2, 34], 54: [2, 34], 65: [2, 34], 68: [2, 34], 72: [2, 34], 75: [2, 34], 80: [2, 34], 81: [2, 34], 82: [2, 34], 83: [2, 34], 84: [2, 34], 85: [2, 34] }, { 23: [2, 35], 33: [2, 35], 54: [2, 35], 65: [2, 35], 68: [2, 35], 72: [2, 35], 75: [2, 35], 80: [2, 35], 81: [2, 35], 82: [2, 35], 83: [2, 35], 84: [2, 35], 85: [2, 35] }, { 23: [2, 36], 33: [2, 36], 54: [2, 36], 65: [2, 36], 68: [2, 36], 72: [2, 36], 75: [2, 36], 80: [2, 36], 81: [2, 36], 82: [2, 36], 83: [2, 36], 84: [2, 36], 85: [2, 36] }, { 23: [2, 37], 33: [2, 37], 54: [2, 37], 65: [2, 37], 68: [2, 37], 72: [2, 37], 75: [2, 37], 80: [2, 37], 81: [2, 37], 82: [2, 37], 83: [2, 37], 84: [2, 37], 85: [2, 37] }, { 23: [2, 38], 33: [2, 38], 54: [2, 38], 65: [2, 38], 68: [2, 38], 72: [2, 38], 75: [2, 38], 80: [2, 38], 81: [2, 38], 82: [2, 38], 83: [2, 38], 84: [2, 38], 85: [2, 38] }, { 23: [2, 39], 33: [2, 39], 54: [2, 39], 65: [2, 39], 68: [2, 39], 72: [2, 39], 75: [2, 39], 80: [2, 39], 81: [2, 39], 82: [2, 39], 83: [2, 39], 84: [2, 39], 85: [2, 39] }, { 23: [2, 43], 33: [2, 43], 54: [2, 43], 65: [2, 43], 68: [2, 43], 72: [2, 43], 75: [2, 43], 80: [2, 43], 81: [2, 43], 82: [2, 43], 83: [2, 43], 84: [2, 43], 85: [2, 43], 87: [1, 51] }, { 72: [1, 35], 86: 52 }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 52: 53, 54: [2, 82], 65: [2, 82], 72: [2, 82], 80: [2, 82], 81: [2, 82], 82: [2, 82], 83: [2, 82], 84: [2, 82], 85: [2, 82] }, { 25: 54, 38: 56, 39: [1, 58], 43: 57, 44: [1, 59], 45: 55, 47: [2, 54] }, { 28: 60, 43: 61, 44: [1, 59], 47: [2, 56] }, { 13: 63, 15: [1, 20], 18: [1, 62] }, { 15: [2, 48], 18: [2, 48] }, { 33: [2, 86], 57: 64, 65: [2, 86], 72: [2, 86], 80: [2, 86], 81: [2, 86], 82: [2, 86], 83: [2, 86], 84: [2, 86], 85: [2, 86] }, { 33: [2, 40], 65: [2, 40], 72: [2, 40], 80: [2, 40], 81: [2, 40], 82: [2, 40], 83: [2, 40], 84: [2, 40], 85: [2, 40] }, { 33: [2, 41], 65: [2, 41], 72: [2, 41], 80: [2, 41], 81: [2, 41], 82: [2, 41], 83: [2, 41], 84: [2, 41], 85: [2, 41] }, { 20: 65, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 66, 47: [1, 67] }, { 30: 68, 33: [2, 58], 65: [2, 58], 72: [2, 58], 75: [2, 58], 80: [2, 58], 81: [2, 58], 82: [2, 58], 83: [2, 58], 84: [2, 58], 85: [2, 58] }, { 33: [2, 64], 35: 69, 65: [2, 64], 72: [2, 64], 75: [2, 64], 80: [2, 64], 81: [2, 64], 82: [2, 64], 83: [2, 64], 84: [2, 64], 85: [2, 64] }, { 21: 70, 23: [2, 50], 65: [2, 50], 72: [2, 50], 80: [2, 50], 81: [2, 50], 82: [2, 50], 83: [2, 50], 84: [2, 50], 85: [2, 50] }, { 33: [2, 90], 61: 71, 65: [2, 90], 72: [2, 90], 80: [2, 90], 81: [2, 90], 82: [2, 90], 83: [2, 90], 84: [2, 90], 85: [2, 90] }, { 20: 75, 33: [2, 80], 50: 72, 63: 73, 64: 76, 65: [1, 44], 69: 74, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 72: [1, 80] }, { 23: [2, 42], 33: [2, 42], 54: [2, 42], 65: [2, 42], 68: [2, 42], 72: [2, 42], 75: [2, 42], 80: [2, 42], 81: [2, 42], 82: [2, 42], 83: [2, 42], 84: [2, 42], 85: [2, 42], 87: [1, 51] }, { 20: 75, 53: 81, 54: [2, 84], 63: 82, 64: 76, 65: [1, 44], 69: 83, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 26: 84, 47: [1, 67] }, { 47: [2, 55] }, { 4: 85, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 39: [2, 46], 44: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 47: [2, 20] }, { 20: 86, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 4: 87, 6: 3, 14: [2, 46], 15: [2, 46], 19: [2, 46], 29: [2, 46], 34: [2, 46], 47: [2, 46], 48: [2, 46], 51: [2, 46], 55: [2, 46], 60: [2, 46] }, { 26: 88, 47: [1, 67] }, { 47: [2, 57] }, { 5: [2, 11], 14: [2, 11], 15: [2, 11], 19: [2, 11], 29: [2, 11], 34: [2, 11], 39: [2, 11], 44: [2, 11], 47: [2, 11], 48: [2, 11], 51: [2, 11], 55: [2, 11], 60: [2, 11] }, { 15: [2, 49], 18: [2, 49] }, { 20: 75, 33: [2, 88], 58: 89, 63: 90, 64: 76, 65: [1, 44], 69: 91, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 65: [2, 94], 66: 92, 68: [2, 94], 72: [2, 94], 80: [2, 94], 81: [2, 94], 82: [2, 94], 83: [2, 94], 84: [2, 94], 85: [2, 94] }, { 5: [2, 25], 14: [2, 25], 15: [2, 25], 19: [2, 25], 29: [2, 25], 34: [2, 25], 39: [2, 25], 44: [2, 25], 47: [2, 25], 48: [2, 25], 51: [2, 25], 55: [2, 25], 60: [2, 25] }, { 20: 93, 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 75, 31: 94, 33: [2, 60], 63: 95, 64: 76, 65: [1, 44], 69: 96, 70: 77, 71: 78, 72: [1, 79], 75: [2, 60], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 75, 33: [2, 66], 36: 97, 63: 98, 64: 76, 65: [1, 44], 69: 99, 70: 77, 71: 78, 72: [1, 79], 75: [2, 66], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 75, 22: 100, 23: [2, 52], 63: 101, 64: 76, 65: [1, 44], 69: 102, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 20: 75, 33: [2, 92], 62: 103, 63: 104, 64: 76, 65: [1, 44], 69: 105, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 106] }, { 33: [2, 79], 65: [2, 79], 72: [2, 79], 80: [2, 79], 81: [2, 79], 82: [2, 79], 83: [2, 79], 84: [2, 79], 85: [2, 79] }, { 33: [2, 81] }, { 23: [2, 27], 33: [2, 27], 54: [2, 27], 65: [2, 27], 68: [2, 27], 72: [2, 27], 75: [2, 27], 80: [2, 27], 81: [2, 27], 82: [2, 27], 83: [2, 27], 84: [2, 27], 85: [2, 27] }, { 23: [2, 28], 33: [2, 28], 54: [2, 28], 65: [2, 28], 68: [2, 28], 72: [2, 28], 75: [2, 28], 80: [2, 28], 81: [2, 28], 82: [2, 28], 83: [2, 28], 84: [2, 28], 85: [2, 28] }, { 23: [2, 30], 33: [2, 30], 54: [2, 30], 68: [2, 30], 71: 107, 72: [1, 108], 75: [2, 30] }, { 23: [2, 98], 33: [2, 98], 54: [2, 98], 68: [2, 98], 72: [2, 98], 75: [2, 98] }, { 23: [2, 45], 33: [2, 45], 54: [2, 45], 65: [2, 45], 68: [2, 45], 72: [2, 45], 73: [1, 109], 75: [2, 45], 80: [2, 45], 81: [2, 45], 82: [2, 45], 83: [2, 45], 84: [2, 45], 85: [2, 45], 87: [2, 45] }, { 23: [2, 44], 33: [2, 44], 54: [2, 44], 65: [2, 44], 68: [2, 44], 72: [2, 44], 75: [2, 44], 80: [2, 44], 81: [2, 44], 82: [2, 44], 83: [2, 44], 84: [2, 44], 85: [2, 44], 87: [2, 44] }, { 54: [1, 110] }, { 54: [2, 83], 65: [2, 83], 72: [2, 83], 80: [2, 83], 81: [2, 83], 82: [2, 83], 83: [2, 83], 84: [2, 83], 85: [2, 83] }, { 54: [2, 85] }, { 5: [2, 13], 14: [2, 13], 15: [2, 13], 19: [2, 13], 29: [2, 13], 34: [2, 13], 39: [2, 13], 44: [2, 13], 47: [2, 13], 48: [2, 13], 51: [2, 13], 55: [2, 13], 60: [2, 13] }, { 38: 56, 39: [1, 58], 43: 57, 44: [1, 59], 45: 112, 46: 111, 47: [2, 76] }, { 33: [2, 70], 40: 113, 65: [2, 70], 72: [2, 70], 75: [2, 70], 80: [2, 70], 81: [2, 70], 82: [2, 70], 83: [2, 70], 84: [2, 70], 85: [2, 70] }, { 47: [2, 18] }, { 5: [2, 14], 14: [2, 14], 15: [2, 14], 19: [2, 14], 29: [2, 14], 34: [2, 14], 39: [2, 14], 44: [2, 14], 47: [2, 14], 48: [2, 14], 51: [2, 14], 55: [2, 14], 60: [2, 14] }, { 33: [1, 114] }, { 33: [2, 87], 65: [2, 87], 72: [2, 87], 80: [2, 87], 81: [2, 87], 82: [2, 87], 83: [2, 87], 84: [2, 87], 85: [2, 87] }, { 33: [2, 89] }, { 20: 75, 63: 116, 64: 76, 65: [1, 44], 67: 115, 68: [2, 96], 69: 117, 70: 77, 71: 78, 72: [1, 79], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 33: [1, 118] }, { 32: 119, 33: [2, 62], 74: 120, 75: [1, 121] }, { 33: [2, 59], 65: [2, 59], 72: [2, 59], 75: [2, 59], 80: [2, 59], 81: [2, 59], 82: [2, 59], 83: [2, 59], 84: [2, 59], 85: [2, 59] }, { 33: [2, 61], 75: [2, 61] }, { 33: [2, 68], 37: 122, 74: 123, 75: [1, 121] }, { 33: [2, 65], 65: [2, 65], 72: [2, 65], 75: [2, 65], 80: [2, 65], 81: [2, 65], 82: [2, 65], 83: [2, 65], 84: [2, 65], 85: [2, 65] }, { 33: [2, 67], 75: [2, 67] }, { 23: [1, 124] }, { 23: [2, 51], 65: [2, 51], 72: [2, 51], 80: [2, 51], 81: [2, 51], 82: [2, 51], 83: [2, 51], 84: [2, 51], 85: [2, 51] }, { 23: [2, 53] }, { 33: [1, 125] }, { 33: [2, 91], 65: [2, 91], 72: [2, 91], 80: [2, 91], 81: [2, 91], 82: [2, 91], 83: [2, 91], 84: [2, 91], 85: [2, 91] }, { 33: [2, 93] }, { 5: [2, 22], 14: [2, 22], 15: [2, 22], 19: [2, 22], 29: [2, 22], 34: [2, 22], 39: [2, 22], 44: [2, 22], 47: [2, 22], 48: [2, 22], 51: [2, 22], 55: [2, 22], 60: [2, 22] }, { 23: [2, 99], 33: [2, 99], 54: [2, 99], 68: [2, 99], 72: [2, 99], 75: [2, 99] }, { 73: [1, 109] }, { 20: 75, 63: 126, 64: 76, 65: [1, 44], 72: [1, 35], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 23], 14: [2, 23], 15: [2, 23], 19: [2, 23], 29: [2, 23], 34: [2, 23], 39: [2, 23], 44: [2, 23], 47: [2, 23], 48: [2, 23], 51: [2, 23], 55: [2, 23], 60: [2, 23] }, { 47: [2, 19] }, { 47: [2, 77] }, { 20: 75, 33: [2, 72], 41: 127, 63: 128, 64: 76, 65: [1, 44], 69: 129, 70: 77, 71: 78, 72: [1, 79], 75: [2, 72], 78: 26, 79: 27, 80: [1, 28], 81: [1, 29], 82: [1, 30], 83: [1, 31], 84: [1, 32], 85: [1, 34], 86: 33 }, { 5: [2, 24], 14: [2, 24], 15: [2, 24], 19: [2, 24], 29: [2, 24], 34: [2, 24], 39: [2, 24], 44: [2, 24], 47: [2, 24], 48: [2, 24], 51: [2, 24], 55: [2, 24], 60: [2, 24] }, { 68: [1, 130] }, { 65: [2, 95], 68: [2, 95], 72: [2, 95], 80: [2, 95], 81: [2, 95], 82: [2, 95], 83: [2, 95], 84: [2, 95], 85: [2, 95] }, { 68: [2, 97] }, { 5: [2, 21], 14: [2, 21], 15: [2, 21], 19: [2, 21], 29: [2, 21], 34: [2, 21], 39: [2, 21], 44: [2, 21], 47: [2, 21], 48: [2, 21], 51: [2, 21], 55: [2, 21], 60: [2, 21] }, { 33: [1, 131] }, { 33: [2, 63] }, { 72: [1, 133], 76: 132 }, { 33: [1, 134] }, { 33: [2, 69] }, { 15: [2, 12] }, { 14: [2, 26], 15: [2, 26], 19: [2, 26], 29: [2, 26], 34: [2, 26], 47: [2, 26], 48: [2, 26], 51: [2, 26], 55: [2, 26], 60: [2, 26] }, { 23: [2, 31], 33: [2, 31], 54: [2, 31], 68: [2, 31], 72: [2, 31], 75: [2, 31] }, { 33: [2, 74], 42: 135, 74: 136, 75: [1, 121] }, { 33: [2, 71], 65: [2, 71], 72: [2, 71], 75: [2, 71], 80: [2, 71], 81: [2, 71], 82: [2, 71], 83: [2, 71], 84: [2, 71], 85: [2, 71] }, { 33: [2, 73], 75: [2, 73] }, { 23: [2, 29], 33: [2, 29], 54: [2, 29], 65: [2, 29], 68: [2, 29], 72: [2, 29], 75: [2, 29], 80: [2, 29], 81: [2, 29], 82: [2, 29], 83: [2, 29], 84: [2, 29], 85: [2, 29] }, { 14: [2, 15], 15: [2, 15], 19: [2, 15], 29: [2, 15], 34: [2, 15], 39: [2, 15], 44: [2, 15], 47: [2, 15], 48: [2, 15], 51: [2, 15], 55: [2, 15], 60: [2, 15] }, { 72: [1, 138], 77: [1, 137] }, { 72: [2, 100], 77: [2, 100] }, { 14: [2, 16], 15: [2, 16], 19: [2, 16], 29: [2, 16], 34: [2, 16], 44: [2, 16], 47: [2, 16], 48: [2, 16], 51: [2, 16], 55: [2, 16], 60: [2, 16] }, { 33: [1, 139] }, { 33: [2, 75] }, { 33: [2, 32] }, { 72: [2, 101], 77: [2, 101] }, { 14: [2, 17], 15: [2, 17], 19: [2, 17], 29: [2, 17], 34: [2, 17], 39: [2, 17], 44: [2, 17], 47: [2, 17], 48: [2, 17], 51: [2, 17], 55: [2, 17], 60: [2, 17] }],
|
||
defaultActions: { 4: [2, 1], 55: [2, 55], 57: [2, 20], 61: [2, 57], 74: [2, 81], 83: [2, 85], 87: [2, 18], 91: [2, 89], 102: [2, 53], 105: [2, 93], 111: [2, 19], 112: [2, 77], 117: [2, 97], 120: [2, 63], 123: [2, 69], 124: [2, 12], 136: [2, 75], 137: [2, 32] },
|
||
parseError: function parseError(str, hash) {
|
||
throw new Error(str);
|
||
},
|
||
parse: function parse(input) {
|
||
var self = this,
|
||
stack = [0],
|
||
vstack = [null],
|
||
lstack = [],
|
||
table = this.table,
|
||
yytext = "",
|
||
yylineno = 0,
|
||
yyleng = 0,
|
||
recovering = 0,
|
||
TERROR = 2,
|
||
EOF = 1;
|
||
this.lexer.setInput(input);
|
||
this.lexer.yy = this.yy;
|
||
this.yy.lexer = this.lexer;
|
||
this.yy.parser = this;
|
||
if (typeof this.lexer.yylloc == "undefined") this.lexer.yylloc = {};
|
||
var yyloc = this.lexer.yylloc;
|
||
lstack.push(yyloc);
|
||
var ranges = this.lexer.options && this.lexer.options.ranges;
|
||
if (typeof this.yy.parseError === "function") this.parseError = this.yy.parseError;
|
||
function popStack(n) {
|
||
stack.length = stack.length - 2 * n;
|
||
vstack.length = vstack.length - n;
|
||
lstack.length = lstack.length - n;
|
||
}
|
||
function lex() {
|
||
var token;
|
||
token = self.lexer.lex() || 1;
|
||
if (typeof token !== "number") {
|
||
token = self.symbols_[token] || token;
|
||
}
|
||
return token;
|
||
}
|
||
var symbol,
|
||
preErrorSymbol,
|
||
state,
|
||
action,
|
||
a,
|
||
r,
|
||
yyval = {},
|
||
p,
|
||
len,
|
||
newState,
|
||
expected;
|
||
while (true) {
|
||
state = stack[stack.length - 1];
|
||
if (this.defaultActions[state]) {
|
||
action = this.defaultActions[state];
|
||
} else {
|
||
if (symbol === null || typeof symbol == "undefined") {
|
||
symbol = lex();
|
||
}
|
||
action = table[state] && table[state][symbol];
|
||
}
|
||
if (typeof action === "undefined" || !action.length || !action[0]) {
|
||
var errStr = "";
|
||
if (!recovering) {
|
||
expected = [];
|
||
for (p in table[state]) if (this.terminals_[p] && p > 2) {
|
||
expected.push("'" + this.terminals_[p] + "'");
|
||
}
|
||
if (this.lexer.showPosition) {
|
||
errStr = "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'";
|
||
} else {
|
||
errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == 1 ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'");
|
||
}
|
||
this.parseError(errStr, { text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected });
|
||
}
|
||
}
|
||
if (action[0] instanceof Array && action.length > 1) {
|
||
throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
|
||
}
|
||
switch (action[0]) {
|
||
case 1:
|
||
stack.push(symbol);
|
||
vstack.push(this.lexer.yytext);
|
||
lstack.push(this.lexer.yylloc);
|
||
stack.push(action[1]);
|
||
symbol = null;
|
||
if (!preErrorSymbol) {
|
||
yyleng = this.lexer.yyleng;
|
||
yytext = this.lexer.yytext;
|
||
yylineno = this.lexer.yylineno;
|
||
yyloc = this.lexer.yylloc;
|
||
if (recovering > 0) recovering--;
|
||
} else {
|
||
symbol = preErrorSymbol;
|
||
preErrorSymbol = null;
|
||
}
|
||
break;
|
||
case 2:
|
||
len = this.productions_[action[1]][1];
|
||
yyval.$ = vstack[vstack.length - len];
|
||
yyval._$ = { first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column };
|
||
if (ranges) {
|
||
yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];
|
||
}
|
||
r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);
|
||
if (typeof r !== "undefined") {
|
||
return r;
|
||
}
|
||
if (len) {
|
||
stack = stack.slice(0, -1 * len * 2);
|
||
vstack = vstack.slice(0, -1 * len);
|
||
lstack = lstack.slice(0, -1 * len);
|
||
}
|
||
stack.push(this.productions_[action[1]][0]);
|
||
vstack.push(yyval.$);
|
||
lstack.push(yyval._$);
|
||
newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
|
||
stack.push(newState);
|
||
break;
|
||
case 3:
|
||
return true;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
};
|
||
/* Jison generated lexer */
|
||
var lexer = (function () {
|
||
var lexer = { EOF: 1,
|
||
parseError: function parseError(str, hash) {
|
||
if (this.yy.parser) {
|
||
this.yy.parser.parseError(str, hash);
|
||
} else {
|
||
throw new Error(str);
|
||
}
|
||
},
|
||
setInput: function setInput(input) {
|
||
this._input = input;
|
||
this._more = this._less = this.done = false;
|
||
this.yylineno = this.yyleng = 0;
|
||
this.yytext = this.matched = this.match = '';
|
||
this.conditionStack = ['INITIAL'];
|
||
this.yylloc = { first_line: 1, first_column: 0, last_line: 1, last_column: 0 };
|
||
if (this.options.ranges) this.yylloc.range = [0, 0];
|
||
this.offset = 0;
|
||
return this;
|
||
},
|
||
input: function input() {
|
||
var ch = this._input[0];
|
||
this.yytext += ch;
|
||
this.yyleng++;
|
||
this.offset++;
|
||
this.match += ch;
|
||
this.matched += ch;
|
||
var lines = ch.match(/(?:\r\n?|\n).*/g);
|
||
if (lines) {
|
||
this.yylineno++;
|
||
this.yylloc.last_line++;
|
||
} else {
|
||
this.yylloc.last_column++;
|
||
}
|
||
if (this.options.ranges) this.yylloc.range[1]++;
|
||
|
||
this._input = this._input.slice(1);
|
||
return ch;
|
||
},
|
||
unput: function unput(ch) {
|
||
var len = ch.length;
|
||
var lines = ch.split(/(?:\r\n?|\n)/g);
|
||
|
||
this._input = ch + this._input;
|
||
this.yytext = this.yytext.substr(0, this.yytext.length - len - 1);
|
||
//this.yyleng -= len;
|
||
this.offset -= len;
|
||
var oldLines = this.match.split(/(?:\r\n?|\n)/g);
|
||
this.match = this.match.substr(0, this.match.length - 1);
|
||
this.matched = this.matched.substr(0, this.matched.length - 1);
|
||
|
||
if (lines.length - 1) this.yylineno -= lines.length - 1;
|
||
var r = this.yylloc.range;
|
||
|
||
this.yylloc = { first_line: this.yylloc.first_line,
|
||
last_line: this.yylineno + 1,
|
||
first_column: this.yylloc.first_column,
|
||
last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
|
||
};
|
||
|
||
if (this.options.ranges) {
|
||
this.yylloc.range = [r[0], r[0] + this.yyleng - len];
|
||
}
|
||
return this;
|
||
},
|
||
more: function more() {
|
||
this._more = true;
|
||
return this;
|
||
},
|
||
less: function less(n) {
|
||
this.unput(this.match.slice(n));
|
||
},
|
||
pastInput: function pastInput() {
|
||
var past = this.matched.substr(0, this.matched.length - this.match.length);
|
||
return (past.length > 20 ? '...' : '') + past.substr(-20).replace(/\n/g, "");
|
||
},
|
||
upcomingInput: function upcomingInput() {
|
||
var next = this.match;
|
||
if (next.length < 20) {
|
||
next += this._input.substr(0, 20 - next.length);
|
||
}
|
||
return (next.substr(0, 20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
|
||
},
|
||
showPosition: function showPosition() {
|
||
var pre = this.pastInput();
|
||
var c = new Array(pre.length + 1).join("-");
|
||
return pre + this.upcomingInput() + "\n" + c + "^";
|
||
},
|
||
next: function next() {
|
||
if (this.done) {
|
||
return this.EOF;
|
||
}
|
||
if (!this._input) this.done = true;
|
||
|
||
var token, match, tempMatch, index, col, lines;
|
||
if (!this._more) {
|
||
this.yytext = '';
|
||
this.match = '';
|
||
}
|
||
var rules = this._currentRules();
|
||
for (var i = 0; i < rules.length; i++) {
|
||
tempMatch = this._input.match(this.rules[rules[i]]);
|
||
if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
|
||
match = tempMatch;
|
||
index = i;
|
||
if (!this.options.flex) break;
|
||
}
|
||
}
|
||
if (match) {
|
||
lines = match[0].match(/(?:\r\n?|\n).*/g);
|
||
if (lines) this.yylineno += lines.length;
|
||
this.yylloc = { first_line: this.yylloc.last_line,
|
||
last_line: this.yylineno + 1,
|
||
first_column: this.yylloc.last_column,
|
||
last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length };
|
||
this.yytext += match[0];
|
||
this.match += match[0];
|
||
this.matches = match;
|
||
this.yyleng = this.yytext.length;
|
||
if (this.options.ranges) {
|
||
this.yylloc.range = [this.offset, this.offset += this.yyleng];
|
||
}
|
||
this._more = false;
|
||
this._input = this._input.slice(match[0].length);
|
||
this.matched += match[0];
|
||
token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]);
|
||
if (this.done && this._input) this.done = false;
|
||
if (token) return token;else return;
|
||
}
|
||
if (this._input === "") {
|
||
return this.EOF;
|
||
} else {
|
||
return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), { text: "", token: null, line: this.yylineno });
|
||
}
|
||
},
|
||
lex: function lex() {
|
||
var r = this.next();
|
||
if (typeof r !== 'undefined') {
|
||
return r;
|
||
} else {
|
||
return this.lex();
|
||
}
|
||
},
|
||
begin: function begin(condition) {
|
||
this.conditionStack.push(condition);
|
||
},
|
||
popState: function popState() {
|
||
return this.conditionStack.pop();
|
||
},
|
||
_currentRules: function _currentRules() {
|
||
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
|
||
},
|
||
topState: function topState() {
|
||
return this.conditionStack[this.conditionStack.length - 2];
|
||
},
|
||
pushState: function begin(condition) {
|
||
this.begin(condition);
|
||
} };
|
||
lexer.options = {};
|
||
lexer.performAction = function anonymous(yy, yy_, $avoiding_name_collisions, YY_START
|
||
/**/) {
|
||
|
||
function strip(start, end) {
|
||
return yy_.yytext = yy_.yytext.substr(start, yy_.yyleng - end);
|
||
}
|
||
|
||
var YYSTATE = YY_START;
|
||
switch ($avoiding_name_collisions) {
|
||
case 0:
|
||
if (yy_.yytext.slice(-2) === "\\\\") {
|
||
strip(0, 1);
|
||
this.begin("mu");
|
||
} else if (yy_.yytext.slice(-1) === "\\") {
|
||
strip(0, 1);
|
||
this.begin("emu");
|
||
} else {
|
||
this.begin("mu");
|
||
}
|
||
if (yy_.yytext) return 15;
|
||
|
||
break;
|
||
case 1:
|
||
return 15;
|
||
break;
|
||
case 2:
|
||
this.popState();
|
||
return 15;
|
||
|
||
break;
|
||
case 3:
|
||
this.begin('raw');return 15;
|
||
break;
|
||
case 4:
|
||
this.popState();
|
||
// Should be using `this.topState()` below, but it currently
|
||
// returns the second top instead of the first top. Opened an
|
||
// issue about it at https://github.com/zaach/jison/issues/291
|
||
if (this.conditionStack[this.conditionStack.length - 1] === 'raw') {
|
||
return 15;
|
||
} else {
|
||
yy_.yytext = yy_.yytext.substr(5, yy_.yyleng - 9);
|
||
return 'END_RAW_BLOCK';
|
||
}
|
||
|
||
break;
|
||
case 5:
|
||
return 15;
|
||
break;
|
||
case 6:
|
||
this.popState();
|
||
return 14;
|
||
|
||
break;
|
||
case 7:
|
||
return 65;
|
||
break;
|
||
case 8:
|
||
return 68;
|
||
break;
|
||
case 9:
|
||
return 19;
|
||
break;
|
||
case 10:
|
||
this.popState();
|
||
this.begin('raw');
|
||
return 23;
|
||
|
||
break;
|
||
case 11:
|
||
return 55;
|
||
break;
|
||
case 12:
|
||
return 60;
|
||
break;
|
||
case 13:
|
||
return 29;
|
||
break;
|
||
case 14:
|
||
return 47;
|
||
break;
|
||
case 15:
|
||
this.popState();return 44;
|
||
break;
|
||
case 16:
|
||
this.popState();return 44;
|
||
break;
|
||
case 17:
|
||
return 34;
|
||
break;
|
||
case 18:
|
||
return 39;
|
||
break;
|
||
case 19:
|
||
return 51;
|
||
break;
|
||
case 20:
|
||
return 48;
|
||
break;
|
||
case 21:
|
||
this.unput(yy_.yytext);
|
||
this.popState();
|
||
this.begin('com');
|
||
|
||
break;
|
||
case 22:
|
||
this.popState();
|
||
return 14;
|
||
|
||
break;
|
||
case 23:
|
||
return 48;
|
||
break;
|
||
case 24:
|
||
return 73;
|
||
break;
|
||
case 25:
|
||
return 72;
|
||
break;
|
||
case 26:
|
||
return 72;
|
||
break;
|
||
case 27:
|
||
return 87;
|
||
break;
|
||
case 28:
|
||
// ignore whitespace
|
||
break;
|
||
case 29:
|
||
this.popState();return 54;
|
||
break;
|
||
case 30:
|
||
this.popState();return 33;
|
||
break;
|
||
case 31:
|
||
yy_.yytext = strip(1, 2).replace(/\\"/g, '"');return 80;
|
||
break;
|
||
case 32:
|
||
yy_.yytext = strip(1, 2).replace(/\\'/g, "'");return 80;
|
||
break;
|
||
case 33:
|
||
return 85;
|
||
break;
|
||
case 34:
|
||
return 82;
|
||
break;
|
||
case 35:
|
||
return 82;
|
||
break;
|
||
case 36:
|
||
return 83;
|
||
break;
|
||
case 37:
|
||
return 84;
|
||
break;
|
||
case 38:
|
||
return 81;
|
||
break;
|
||
case 39:
|
||
return 75;
|
||
break;
|
||
case 40:
|
||
return 77;
|
||
break;
|
||
case 41:
|
||
return 72;
|
||
break;
|
||
case 42:
|
||
yy_.yytext = yy_.yytext.replace(/\\([\\\]])/g, '$1');return 72;
|
||
break;
|
||
case 43:
|
||
return 'INVALID';
|
||
break;
|
||
case 44:
|
||
return 5;
|
||
break;
|
||
}
|
||
};
|
||
lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{(?=[^\/]))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]*?(?=(\{\{\{\{)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#>)/, /^(?:\{\{(~)?#\*?)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?\*?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[(\\\]|[^\]])*\])/, /^(?:.)/, /^(?:$)/];
|
||
lexer.conditions = { "mu": { "rules": [7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44], "inclusive": false }, "emu": { "rules": [2], "inclusive": false }, "com": { "rules": [6], "inclusive": false }, "raw": { "rules": [3, 4, 5], "inclusive": false }, "INITIAL": { "rules": [0, 1, 44], "inclusive": true } };
|
||
return lexer;
|
||
})();
|
||
parser.lexer = lexer;
|
||
function Parser() {
|
||
this.yy = {};
|
||
}Parser.prototype = parser;parser.Parser = Parser;
|
||
return new Parser();
|
||
})();exports.__esModule = true;
|
||
exports['default'] = handlebars;
|
||
|
||
/***/ },
|
||
/* 24 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _visitor = __webpack_require__(25);
|
||
|
||
var _visitor2 = _interopRequireDefault(_visitor);
|
||
|
||
function WhitespaceControl() {
|
||
var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
|
||
|
||
this.options = options;
|
||
}
|
||
WhitespaceControl.prototype = new _visitor2['default']();
|
||
|
||
WhitespaceControl.prototype.Program = function (program) {
|
||
var doStandalone = !this.options.ignoreStandalone;
|
||
|
||
var isRoot = !this.isRootSeen;
|
||
this.isRootSeen = true;
|
||
|
||
var body = program.body;
|
||
for (var i = 0, l = body.length; i < l; i++) {
|
||
var current = body[i],
|
||
strip = this.accept(current);
|
||
|
||
if (!strip) {
|
||
continue;
|
||
}
|
||
|
||
var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),
|
||
_isNextWhitespace = isNextWhitespace(body, i, isRoot),
|
||
openStandalone = strip.openStandalone && _isPrevWhitespace,
|
||
closeStandalone = strip.closeStandalone && _isNextWhitespace,
|
||
inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;
|
||
|
||
if (strip.close) {
|
||
omitRight(body, i, true);
|
||
}
|
||
if (strip.open) {
|
||
omitLeft(body, i, true);
|
||
}
|
||
|
||
if (doStandalone && inlineStandalone) {
|
||
omitRight(body, i);
|
||
|
||
if (omitLeft(body, i)) {
|
||
// If we are on a standalone node, save the indent info for partials
|
||
if (current.type === 'PartialStatement') {
|
||
// Pull out the whitespace from the final line
|
||
current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1];
|
||
}
|
||
}
|
||
}
|
||
if (doStandalone && openStandalone) {
|
||
omitRight((current.program || current.inverse).body);
|
||
|
||
// Strip out the previous content node if it's whitespace only
|
||
omitLeft(body, i);
|
||
}
|
||
if (doStandalone && closeStandalone) {
|
||
// Always strip the next node
|
||
omitRight(body, i);
|
||
|
||
omitLeft((current.inverse || current.program).body);
|
||
}
|
||
}
|
||
|
||
return program;
|
||
};
|
||
|
||
WhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function (block) {
|
||
this.accept(block.program);
|
||
this.accept(block.inverse);
|
||
|
||
// Find the inverse program that is involed with whitespace stripping.
|
||
var program = block.program || block.inverse,
|
||
inverse = block.program && block.inverse,
|
||
firstInverse = inverse,
|
||
lastInverse = inverse;
|
||
|
||
if (inverse && inverse.chained) {
|
||
firstInverse = inverse.body[0].program;
|
||
|
||
// Walk the inverse chain to find the last inverse that is actually in the chain.
|
||
while (lastInverse.chained) {
|
||
lastInverse = lastInverse.body[lastInverse.body.length - 1].program;
|
||
}
|
||
}
|
||
|
||
var strip = {
|
||
open: block.openStrip.open,
|
||
close: block.closeStrip.close,
|
||
|
||
// Determine the standalone candiacy. Basically flag our content as being possibly standalone
|
||
// so our parent can determine if we actually are standalone
|
||
openStandalone: isNextWhitespace(program.body),
|
||
closeStandalone: isPrevWhitespace((firstInverse || program).body)
|
||
};
|
||
|
||
if (block.openStrip.close) {
|
||
omitRight(program.body, null, true);
|
||
}
|
||
|
||
if (inverse) {
|
||
var inverseStrip = block.inverseStrip;
|
||
|
||
if (inverseStrip.open) {
|
||
omitLeft(program.body, null, true);
|
||
}
|
||
|
||
if (inverseStrip.close) {
|
||
omitRight(firstInverse.body, null, true);
|
||
}
|
||
if (block.closeStrip.open) {
|
||
omitLeft(lastInverse.body, null, true);
|
||
}
|
||
|
||
// Find standalone else statments
|
||
if (!this.options.ignoreStandalone && isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body)) {
|
||
omitLeft(program.body);
|
||
omitRight(firstInverse.body);
|
||
}
|
||
} else if (block.closeStrip.open) {
|
||
omitLeft(program.body, null, true);
|
||
}
|
||
|
||
return strip;
|
||
};
|
||
|
||
WhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function (mustache) {
|
||
return mustache.strip;
|
||
};
|
||
|
||
WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function (node) {
|
||
/* istanbul ignore next */
|
||
var strip = node.strip || {};
|
||
return {
|
||
inlineStandalone: true,
|
||
open: strip.open,
|
||
close: strip.close
|
||
};
|
||
};
|
||
|
||
function isPrevWhitespace(body, i, isRoot) {
|
||
if (i === undefined) {
|
||
i = body.length;
|
||
}
|
||
|
||
// Nodes that end with newlines are considered whitespace (but are special
|
||
// cased for strip operations)
|
||
var prev = body[i - 1],
|
||
sibling = body[i - 2];
|
||
if (!prev) {
|
||
return isRoot;
|
||
}
|
||
|
||
if (prev.type === 'ContentStatement') {
|
||
return (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original);
|
||
}
|
||
}
|
||
function isNextWhitespace(body, i, isRoot) {
|
||
if (i === undefined) {
|
||
i = -1;
|
||
}
|
||
|
||
var next = body[i + 1],
|
||
sibling = body[i + 2];
|
||
if (!next) {
|
||
return isRoot;
|
||
}
|
||
|
||
if (next.type === 'ContentStatement') {
|
||
return (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original);
|
||
}
|
||
}
|
||
|
||
// Marks the node to the right of the position as omitted.
|
||
// I.e. {{foo}}' ' will mark the ' ' node as omitted.
|
||
//
|
||
// If i is undefined, then the first child will be marked as such.
|
||
//
|
||
// If mulitple is truthy then all whitespace will be stripped out until non-whitespace
|
||
// content is met.
|
||
function omitRight(body, i, multiple) {
|
||
var current = body[i == null ? 0 : i + 1];
|
||
if (!current || current.type !== 'ContentStatement' || !multiple && current.rightStripped) {
|
||
return;
|
||
}
|
||
|
||
var original = current.value;
|
||
current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, '');
|
||
current.rightStripped = current.value !== original;
|
||
}
|
||
|
||
// Marks the node to the left of the position as omitted.
|
||
// I.e. ' '{{foo}} will mark the ' ' node as omitted.
|
||
//
|
||
// If i is undefined then the last child will be marked as such.
|
||
//
|
||
// If mulitple is truthy then all whitespace will be stripped out until non-whitespace
|
||
// content is met.
|
||
function omitLeft(body, i, multiple) {
|
||
var current = body[i == null ? body.length - 1 : i - 1];
|
||
if (!current || current.type !== 'ContentStatement' || !multiple && current.leftStripped) {
|
||
return;
|
||
}
|
||
|
||
// We omit the last node if it's whitespace only and not preceeded by a non-content node.
|
||
var original = current.value;
|
||
current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, '');
|
||
current.leftStripped = current.value !== original;
|
||
return current.leftStripped;
|
||
}
|
||
|
||
exports['default'] = WhitespaceControl;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 25 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _exception = __webpack_require__(6);
|
||
|
||
var _exception2 = _interopRequireDefault(_exception);
|
||
|
||
function Visitor() {
|
||
this.parents = [];
|
||
}
|
||
|
||
Visitor.prototype = {
|
||
constructor: Visitor,
|
||
mutating: false,
|
||
|
||
// Visits a given value. If mutating, will replace the value if necessary.
|
||
acceptKey: function acceptKey(node, name) {
|
||
var value = this.accept(node[name]);
|
||
if (this.mutating) {
|
||
// Hacky sanity check: This may have a few false positives for type for the helper
|
||
// methods but will generally do the right thing without a lot of overhead.
|
||
if (value && !Visitor.prototype[value.type]) {
|
||
throw new _exception2['default']('Unexpected node type "' + value.type + '" found when accepting ' + name + ' on ' + node.type);
|
||
}
|
||
node[name] = value;
|
||
}
|
||
},
|
||
|
||
// Performs an accept operation with added sanity check to ensure
|
||
// required keys are not removed.
|
||
acceptRequired: function acceptRequired(node, name) {
|
||
this.acceptKey(node, name);
|
||
|
||
if (!node[name]) {
|
||
throw new _exception2['default'](node.type + ' requires ' + name);
|
||
}
|
||
},
|
||
|
||
// Traverses a given array. If mutating, empty respnses will be removed
|
||
// for child elements.
|
||
acceptArray: function acceptArray(array) {
|
||
for (var i = 0, l = array.length; i < l; i++) {
|
||
this.acceptKey(array, i);
|
||
|
||
if (!array[i]) {
|
||
array.splice(i, 1);
|
||
i--;
|
||
l--;
|
||
}
|
||
}
|
||
},
|
||
|
||
accept: function accept(object) {
|
||
if (!object) {
|
||
return;
|
||
}
|
||
|
||
/* istanbul ignore next: Sanity code */
|
||
if (!this[object.type]) {
|
||
throw new _exception2['default']('Unknown type: ' + object.type, object);
|
||
}
|
||
|
||
if (this.current) {
|
||
this.parents.unshift(this.current);
|
||
}
|
||
this.current = object;
|
||
|
||
var ret = this[object.type](object);
|
||
|
||
this.current = this.parents.shift();
|
||
|
||
if (!this.mutating || ret) {
|
||
return ret;
|
||
} else if (ret !== false) {
|
||
return object;
|
||
}
|
||
},
|
||
|
||
Program: function Program(program) {
|
||
this.acceptArray(program.body);
|
||
},
|
||
|
||
MustacheStatement: visitSubExpression,
|
||
Decorator: visitSubExpression,
|
||
|
||
BlockStatement: visitBlock,
|
||
DecoratorBlock: visitBlock,
|
||
|
||
PartialStatement: visitPartial,
|
||
PartialBlockStatement: function PartialBlockStatement(partial) {
|
||
visitPartial.call(this, partial);
|
||
|
||
this.acceptKey(partial, 'program');
|
||
},
|
||
|
||
ContentStatement: function ContentStatement() /* content */{},
|
||
CommentStatement: function CommentStatement() /* comment */{},
|
||
|
||
SubExpression: visitSubExpression,
|
||
|
||
PathExpression: function PathExpression() /* path */{},
|
||
|
||
StringLiteral: function StringLiteral() /* string */{},
|
||
NumberLiteral: function NumberLiteral() /* number */{},
|
||
BooleanLiteral: function BooleanLiteral() /* bool */{},
|
||
UndefinedLiteral: function UndefinedLiteral() /* literal */{},
|
||
NullLiteral: function NullLiteral() /* literal */{},
|
||
|
||
Hash: function Hash(hash) {
|
||
this.acceptArray(hash.pairs);
|
||
},
|
||
HashPair: function HashPair(pair) {
|
||
this.acceptRequired(pair, 'value');
|
||
}
|
||
};
|
||
|
||
function visitSubExpression(mustache) {
|
||
this.acceptRequired(mustache, 'path');
|
||
this.acceptArray(mustache.params);
|
||
this.acceptKey(mustache, 'hash');
|
||
}
|
||
function visitBlock(block) {
|
||
visitSubExpression.call(this, block);
|
||
|
||
this.acceptKey(block, 'program');
|
||
this.acceptKey(block, 'inverse');
|
||
}
|
||
function visitPartial(partial) {
|
||
this.acceptRequired(partial, 'name');
|
||
this.acceptArray(partial.params);
|
||
this.acceptKey(partial, 'hash');
|
||
}
|
||
|
||
exports['default'] = Visitor;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 26 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
exports.SourceLocation = SourceLocation;
|
||
exports.id = id;
|
||
exports.stripFlags = stripFlags;
|
||
exports.stripComment = stripComment;
|
||
exports.preparePath = preparePath;
|
||
exports.prepareMustache = prepareMustache;
|
||
exports.prepareRawBlock = prepareRawBlock;
|
||
exports.prepareBlock = prepareBlock;
|
||
exports.prepareProgram = prepareProgram;
|
||
exports.preparePartialBlock = preparePartialBlock;
|
||
|
||
var _exception = __webpack_require__(6);
|
||
|
||
var _exception2 = _interopRequireDefault(_exception);
|
||
|
||
function validateClose(open, close) {
|
||
close = close.path ? close.path.original : close;
|
||
|
||
if (open.path.original !== close) {
|
||
var errorNode = { loc: open.path.loc };
|
||
|
||
throw new _exception2['default'](open.path.original + " doesn't match " + close, errorNode);
|
||
}
|
||
}
|
||
|
||
function SourceLocation(source, locInfo) {
|
||
this.source = source;
|
||
this.start = {
|
||
line: locInfo.first_line,
|
||
column: locInfo.first_column
|
||
};
|
||
this.end = {
|
||
line: locInfo.last_line,
|
||
column: locInfo.last_column
|
||
};
|
||
}
|
||
|
||
function id(token) {
|
||
if (/^\[.*\]$/.test(token)) {
|
||
return token.substr(1, token.length - 2);
|
||
} else {
|
||
return token;
|
||
}
|
||
}
|
||
|
||
function stripFlags(open, close) {
|
||
return {
|
||
open: open.charAt(2) === '~',
|
||
close: close.charAt(close.length - 3) === '~'
|
||
};
|
||
}
|
||
|
||
function stripComment(comment) {
|
||
return comment.replace(/^\{\{~?\!-?-?/, '').replace(/-?-?~?\}\}$/, '');
|
||
}
|
||
|
||
function preparePath(data, parts, loc) {
|
||
loc = this.locInfo(loc);
|
||
|
||
var original = data ? '@' : '',
|
||
dig = [],
|
||
depth = 0,
|
||
depthString = '';
|
||
|
||
for (var i = 0, l = parts.length; i < l; i++) {
|
||
var part = parts[i].part,
|
||
|
||
// If we have [] syntax then we do not treat path references as operators,
|
||
// i.e. foo.[this] resolves to approximately context.foo['this']
|
||
isLiteral = parts[i].original !== part;
|
||
original += (parts[i].separator || '') + part;
|
||
|
||
if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {
|
||
if (dig.length > 0) {
|
||
throw new _exception2['default']('Invalid path: ' + original, { loc: loc });
|
||
} else if (part === '..') {
|
||
depth++;
|
||
depthString += '../';
|
||
}
|
||
} else {
|
||
dig.push(part);
|
||
}
|
||
}
|
||
|
||
return {
|
||
type: 'PathExpression',
|
||
data: data,
|
||
depth: depth,
|
||
parts: dig,
|
||
original: original,
|
||
loc: loc
|
||
};
|
||
}
|
||
|
||
function prepareMustache(path, params, hash, open, strip, locInfo) {
|
||
// Must use charAt to support IE pre-10
|
||
var escapeFlag = open.charAt(3) || open.charAt(2),
|
||
escaped = escapeFlag !== '{' && escapeFlag !== '&';
|
||
|
||
var decorator = /\*/.test(open);
|
||
return {
|
||
type: decorator ? 'Decorator' : 'MustacheStatement',
|
||
path: path,
|
||
params: params,
|
||
hash: hash,
|
||
escaped: escaped,
|
||
strip: strip,
|
||
loc: this.locInfo(locInfo)
|
||
};
|
||
}
|
||
|
||
function prepareRawBlock(openRawBlock, contents, close, locInfo) {
|
||
validateClose(openRawBlock, close);
|
||
|
||
locInfo = this.locInfo(locInfo);
|
||
var program = {
|
||
type: 'Program',
|
||
body: contents,
|
||
strip: {},
|
||
loc: locInfo
|
||
};
|
||
|
||
return {
|
||
type: 'BlockStatement',
|
||
path: openRawBlock.path,
|
||
params: openRawBlock.params,
|
||
hash: openRawBlock.hash,
|
||
program: program,
|
||
openStrip: {},
|
||
inverseStrip: {},
|
||
closeStrip: {},
|
||
loc: locInfo
|
||
};
|
||
}
|
||
|
||
function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {
|
||
if (close && close.path) {
|
||
validateClose(openBlock, close);
|
||
}
|
||
|
||
var decorator = /\*/.test(openBlock.open);
|
||
|
||
program.blockParams = openBlock.blockParams;
|
||
|
||
var inverse = undefined,
|
||
inverseStrip = undefined;
|
||
|
||
if (inverseAndProgram) {
|
||
if (decorator) {
|
||
throw new _exception2['default']('Unexpected inverse block on decorator', inverseAndProgram);
|
||
}
|
||
|
||
if (inverseAndProgram.chain) {
|
||
inverseAndProgram.program.body[0].closeStrip = close.strip;
|
||
}
|
||
|
||
inverseStrip = inverseAndProgram.strip;
|
||
inverse = inverseAndProgram.program;
|
||
}
|
||
|
||
if (inverted) {
|
||
inverted = inverse;
|
||
inverse = program;
|
||
program = inverted;
|
||
}
|
||
|
||
return {
|
||
type: decorator ? 'DecoratorBlock' : 'BlockStatement',
|
||
path: openBlock.path,
|
||
params: openBlock.params,
|
||
hash: openBlock.hash,
|
||
program: program,
|
||
inverse: inverse,
|
||
openStrip: openBlock.strip,
|
||
inverseStrip: inverseStrip,
|
||
closeStrip: close && close.strip,
|
||
loc: this.locInfo(locInfo)
|
||
};
|
||
}
|
||
|
||
function prepareProgram(statements, loc) {
|
||
if (!loc && statements.length) {
|
||
var firstLoc = statements[0].loc,
|
||
lastLoc = statements[statements.length - 1].loc;
|
||
|
||
/* istanbul ignore else */
|
||
if (firstLoc && lastLoc) {
|
||
loc = {
|
||
source: firstLoc.source,
|
||
start: {
|
||
line: firstLoc.start.line,
|
||
column: firstLoc.start.column
|
||
},
|
||
end: {
|
||
line: lastLoc.end.line,
|
||
column: lastLoc.end.column
|
||
}
|
||
};
|
||
}
|
||
}
|
||
|
||
return {
|
||
type: 'Program',
|
||
body: statements,
|
||
strip: {},
|
||
loc: loc
|
||
};
|
||
}
|
||
|
||
function preparePartialBlock(open, program, close, locInfo) {
|
||
validateClose(open, close);
|
||
|
||
return {
|
||
type: 'PartialBlockStatement',
|
||
name: open.path,
|
||
params: open.params,
|
||
hash: open.hash,
|
||
program: program,
|
||
openStrip: open.strip,
|
||
closeStrip: close && close.strip,
|
||
loc: this.locInfo(locInfo)
|
||
};
|
||
}
|
||
|
||
/***/ },
|
||
/* 27 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
/* eslint-disable new-cap */
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
exports.Compiler = Compiler;
|
||
exports.precompile = precompile;
|
||
exports.compile = compile;
|
||
|
||
var _exception = __webpack_require__(6);
|
||
|
||
var _exception2 = _interopRequireDefault(_exception);
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
var _ast = __webpack_require__(21);
|
||
|
||
var _ast2 = _interopRequireDefault(_ast);
|
||
|
||
var slice = [].slice;
|
||
|
||
function Compiler() {}
|
||
|
||
// the foundHelper register will disambiguate helper lookup from finding a
|
||
// function in a context. This is necessary for mustache compatibility, which
|
||
// requires that context functions in blocks are evaluated by blockHelperMissing,
|
||
// and then proceed as if the resulting value was provided to blockHelperMissing.
|
||
|
||
Compiler.prototype = {
|
||
compiler: Compiler,
|
||
|
||
equals: function equals(other) {
|
||
var len = this.opcodes.length;
|
||
if (other.opcodes.length !== len) {
|
||
return false;
|
||
}
|
||
|
||
for (var i = 0; i < len; i++) {
|
||
var opcode = this.opcodes[i],
|
||
otherOpcode = other.opcodes[i];
|
||
if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// We know that length is the same between the two arrays because they are directly tied
|
||
// to the opcode behavior above.
|
||
len = this.children.length;
|
||
for (var i = 0; i < len; i++) {
|
||
if (!this.children[i].equals(other.children[i])) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
return true;
|
||
},
|
||
|
||
guid: 0,
|
||
|
||
compile: function compile(program, options) {
|
||
this.sourceNode = [];
|
||
this.opcodes = [];
|
||
this.children = [];
|
||
this.options = options;
|
||
this.stringParams = options.stringParams;
|
||
this.trackIds = options.trackIds;
|
||
|
||
options.blockParams = options.blockParams || [];
|
||
|
||
// These changes will propagate to the other compiler components
|
||
var knownHelpers = options.knownHelpers;
|
||
options.knownHelpers = {
|
||
'helperMissing': true,
|
||
'blockHelperMissing': true,
|
||
'each': true,
|
||
'if': true,
|
||
'unless': true,
|
||
'with': true,
|
||
'log': true,
|
||
'lookup': true
|
||
};
|
||
if (knownHelpers) {
|
||
for (var _name in knownHelpers) {
|
||
/* istanbul ignore else */
|
||
if (_name in knownHelpers) {
|
||
options.knownHelpers[_name] = knownHelpers[_name];
|
||
}
|
||
}
|
||
}
|
||
|
||
return this.accept(program);
|
||
},
|
||
|
||
compileProgram: function compileProgram(program) {
|
||
var childCompiler = new this.compiler(),
|
||
// eslint-disable-line new-cap
|
||
result = childCompiler.compile(program, this.options),
|
||
guid = this.guid++;
|
||
|
||
this.usePartial = this.usePartial || result.usePartial;
|
||
|
||
this.children[guid] = result;
|
||
this.useDepths = this.useDepths || result.useDepths;
|
||
|
||
return guid;
|
||
},
|
||
|
||
accept: function accept(node) {
|
||
/* istanbul ignore next: Sanity code */
|
||
if (!this[node.type]) {
|
||
throw new _exception2['default']('Unknown type: ' + node.type, node);
|
||
}
|
||
|
||
this.sourceNode.unshift(node);
|
||
var ret = this[node.type](node);
|
||
this.sourceNode.shift();
|
||
return ret;
|
||
},
|
||
|
||
Program: function Program(program) {
|
||
this.options.blockParams.unshift(program.blockParams);
|
||
|
||
var body = program.body,
|
||
bodyLength = body.length;
|
||
for (var i = 0; i < bodyLength; i++) {
|
||
this.accept(body[i]);
|
||
}
|
||
|
||
this.options.blockParams.shift();
|
||
|
||
this.isSimple = bodyLength === 1;
|
||
this.blockParams = program.blockParams ? program.blockParams.length : 0;
|
||
|
||
return this;
|
||
},
|
||
|
||
BlockStatement: function BlockStatement(block) {
|
||
transformLiteralToPath(block);
|
||
|
||
var program = block.program,
|
||
inverse = block.inverse;
|
||
|
||
program = program && this.compileProgram(program);
|
||
inverse = inverse && this.compileProgram(inverse);
|
||
|
||
var type = this.classifySexpr(block);
|
||
|
||
if (type === 'helper') {
|
||
this.helperSexpr(block, program, inverse);
|
||
} else if (type === 'simple') {
|
||
this.simpleSexpr(block);
|
||
|
||
// now that the simple mustache is resolved, we need to
|
||
// evaluate it by executing `blockHelperMissing`
|
||
this.opcode('pushProgram', program);
|
||
this.opcode('pushProgram', inverse);
|
||
this.opcode('emptyHash');
|
||
this.opcode('blockValue', block.path.original);
|
||
} else {
|
||
this.ambiguousSexpr(block, program, inverse);
|
||
|
||
// now that the simple mustache is resolved, we need to
|
||
// evaluate it by executing `blockHelperMissing`
|
||
this.opcode('pushProgram', program);
|
||
this.opcode('pushProgram', inverse);
|
||
this.opcode('emptyHash');
|
||
this.opcode('ambiguousBlockValue');
|
||
}
|
||
|
||
this.opcode('append');
|
||
},
|
||
|
||
DecoratorBlock: function DecoratorBlock(decorator) {
|
||
var program = decorator.program && this.compileProgram(decorator.program);
|
||
var params = this.setupFullMustacheParams(decorator, program, undefined),
|
||
path = decorator.path;
|
||
|
||
this.useDecorators = true;
|
||
this.opcode('registerDecorator', params.length, path.original);
|
||
},
|
||
|
||
PartialStatement: function PartialStatement(partial) {
|
||
this.usePartial = true;
|
||
|
||
var program = partial.program;
|
||
if (program) {
|
||
program = this.compileProgram(partial.program);
|
||
}
|
||
|
||
var params = partial.params;
|
||
if (params.length > 1) {
|
||
throw new _exception2['default']('Unsupported number of partial arguments: ' + params.length, partial);
|
||
} else if (!params.length) {
|
||
if (this.options.explicitPartialContext) {
|
||
this.opcode('pushLiteral', 'undefined');
|
||
} else {
|
||
params.push({ type: 'PathExpression', parts: [], depth: 0 });
|
||
}
|
||
}
|
||
|
||
var partialName = partial.name.original,
|
||
isDynamic = partial.name.type === 'SubExpression';
|
||
if (isDynamic) {
|
||
this.accept(partial.name);
|
||
}
|
||
|
||
this.setupFullMustacheParams(partial, program, undefined, true);
|
||
|
||
var indent = partial.indent || '';
|
||
if (this.options.preventIndent && indent) {
|
||
this.opcode('appendContent', indent);
|
||
indent = '';
|
||
}
|
||
|
||
this.opcode('invokePartial', isDynamic, partialName, indent);
|
||
this.opcode('append');
|
||
},
|
||
PartialBlockStatement: function PartialBlockStatement(partialBlock) {
|
||
this.PartialStatement(partialBlock);
|
||
},
|
||
|
||
MustacheStatement: function MustacheStatement(mustache) {
|
||
this.SubExpression(mustache);
|
||
|
||
if (mustache.escaped && !this.options.noEscape) {
|
||
this.opcode('appendEscaped');
|
||
} else {
|
||
this.opcode('append');
|
||
}
|
||
},
|
||
Decorator: function Decorator(decorator) {
|
||
this.DecoratorBlock(decorator);
|
||
},
|
||
|
||
ContentStatement: function ContentStatement(content) {
|
||
if (content.value) {
|
||
this.opcode('appendContent', content.value);
|
||
}
|
||
},
|
||
|
||
CommentStatement: function CommentStatement() {},
|
||
|
||
SubExpression: function SubExpression(sexpr) {
|
||
transformLiteralToPath(sexpr);
|
||
var type = this.classifySexpr(sexpr);
|
||
|
||
if (type === 'simple') {
|
||
this.simpleSexpr(sexpr);
|
||
} else if (type === 'helper') {
|
||
this.helperSexpr(sexpr);
|
||
} else {
|
||
this.ambiguousSexpr(sexpr);
|
||
}
|
||
},
|
||
ambiguousSexpr: function ambiguousSexpr(sexpr, program, inverse) {
|
||
var path = sexpr.path,
|
||
name = path.parts[0],
|
||
isBlock = program != null || inverse != null;
|
||
|
||
this.opcode('getContext', path.depth);
|
||
|
||
this.opcode('pushProgram', program);
|
||
this.opcode('pushProgram', inverse);
|
||
|
||
path.strict = true;
|
||
this.accept(path);
|
||
|
||
this.opcode('invokeAmbiguous', name, isBlock);
|
||
},
|
||
|
||
simpleSexpr: function simpleSexpr(sexpr) {
|
||
var path = sexpr.path;
|
||
path.strict = true;
|
||
this.accept(path);
|
||
this.opcode('resolvePossibleLambda');
|
||
},
|
||
|
||
helperSexpr: function helperSexpr(sexpr, program, inverse) {
|
||
var params = this.setupFullMustacheParams(sexpr, program, inverse),
|
||
path = sexpr.path,
|
||
name = path.parts[0];
|
||
|
||
if (this.options.knownHelpers[name]) {
|
||
this.opcode('invokeKnownHelper', params.length, name);
|
||
} else if (this.options.knownHelpersOnly) {
|
||
throw new _exception2['default']('You specified knownHelpersOnly, but used the unknown helper ' + name, sexpr);
|
||
} else {
|
||
path.strict = true;
|
||
path.falsy = true;
|
||
|
||
this.accept(path);
|
||
this.opcode('invokeHelper', params.length, path.original, _ast2['default'].helpers.simpleId(path));
|
||
}
|
||
},
|
||
|
||
PathExpression: function PathExpression(path) {
|
||
this.addDepth(path.depth);
|
||
this.opcode('getContext', path.depth);
|
||
|
||
var name = path.parts[0],
|
||
scoped = _ast2['default'].helpers.scopedId(path),
|
||
blockParamId = !path.depth && !scoped && this.blockParamIndex(name);
|
||
|
||
if (blockParamId) {
|
||
this.opcode('lookupBlockParam', blockParamId, path.parts);
|
||
} else if (!name) {
|
||
// Context reference, i.e. `{{foo .}}` or `{{foo ..}}`
|
||
this.opcode('pushContext');
|
||
} else if (path.data) {
|
||
this.options.data = true;
|
||
this.opcode('lookupData', path.depth, path.parts, path.strict);
|
||
} else {
|
||
this.opcode('lookupOnContext', path.parts, path.falsy, path.strict, scoped);
|
||
}
|
||
},
|
||
|
||
StringLiteral: function StringLiteral(string) {
|
||
this.opcode('pushString', string.value);
|
||
},
|
||
|
||
NumberLiteral: function NumberLiteral(number) {
|
||
this.opcode('pushLiteral', number.value);
|
||
},
|
||
|
||
BooleanLiteral: function BooleanLiteral(bool) {
|
||
this.opcode('pushLiteral', bool.value);
|
||
},
|
||
|
||
UndefinedLiteral: function UndefinedLiteral() {
|
||
this.opcode('pushLiteral', 'undefined');
|
||
},
|
||
|
||
NullLiteral: function NullLiteral() {
|
||
this.opcode('pushLiteral', 'null');
|
||
},
|
||
|
||
Hash: function Hash(hash) {
|
||
var pairs = hash.pairs,
|
||
i = 0,
|
||
l = pairs.length;
|
||
|
||
this.opcode('pushHash');
|
||
|
||
for (; i < l; i++) {
|
||
this.pushParam(pairs[i].value);
|
||
}
|
||
while (i--) {
|
||
this.opcode('assignToHash', pairs[i].key);
|
||
}
|
||
this.opcode('popHash');
|
||
},
|
||
|
||
// HELPERS
|
||
opcode: function opcode(name) {
|
||
this.opcodes.push({ opcode: name, args: slice.call(arguments, 1), loc: this.sourceNode[0].loc });
|
||
},
|
||
|
||
addDepth: function addDepth(depth) {
|
||
if (!depth) {
|
||
return;
|
||
}
|
||
|
||
this.useDepths = true;
|
||
},
|
||
|
||
classifySexpr: function classifySexpr(sexpr) {
|
||
var isSimple = _ast2['default'].helpers.simpleId(sexpr.path);
|
||
|
||
var isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);
|
||
|
||
// a mustache is an eligible helper if:
|
||
// * its id is simple (a single part, not `this` or `..`)
|
||
var isHelper = !isBlockParam && _ast2['default'].helpers.helperExpression(sexpr);
|
||
|
||
// if a mustache is an eligible helper but not a definite
|
||
// helper, it is ambiguous, and will be resolved in a later
|
||
// pass or at runtime.
|
||
var isEligible = !isBlockParam && (isHelper || isSimple);
|
||
|
||
// if ambiguous, we can possibly resolve the ambiguity now
|
||
// An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.
|
||
if (isEligible && !isHelper) {
|
||
var _name2 = sexpr.path.parts[0],
|
||
options = this.options;
|
||
|
||
if (options.knownHelpers[_name2]) {
|
||
isHelper = true;
|
||
} else if (options.knownHelpersOnly) {
|
||
isEligible = false;
|
||
}
|
||
}
|
||
|
||
if (isHelper) {
|
||
return 'helper';
|
||
} else if (isEligible) {
|
||
return 'ambiguous';
|
||
} else {
|
||
return 'simple';
|
||
}
|
||
},
|
||
|
||
pushParams: function pushParams(params) {
|
||
for (var i = 0, l = params.length; i < l; i++) {
|
||
this.pushParam(params[i]);
|
||
}
|
||
},
|
||
|
||
pushParam: function pushParam(val) {
|
||
var value = val.value != null ? val.value : val.original || '';
|
||
|
||
if (this.stringParams) {
|
||
if (value.replace) {
|
||
value = value.replace(/^(\.?\.\/)*/g, '').replace(/\//g, '.');
|
||
}
|
||
|
||
if (val.depth) {
|
||
this.addDepth(val.depth);
|
||
}
|
||
this.opcode('getContext', val.depth || 0);
|
||
this.opcode('pushStringParam', value, val.type);
|
||
|
||
if (val.type === 'SubExpression') {
|
||
// SubExpressions get evaluated and passed in
|
||
// in string params mode.
|
||
this.accept(val);
|
||
}
|
||
} else {
|
||
if (this.trackIds) {
|
||
var blockParamIndex = undefined;
|
||
if (val.parts && !_ast2['default'].helpers.scopedId(val) && !val.depth) {
|
||
blockParamIndex = this.blockParamIndex(val.parts[0]);
|
||
}
|
||
if (blockParamIndex) {
|
||
var blockParamChild = val.parts.slice(1).join('.');
|
||
this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);
|
||
} else {
|
||
value = val.original || value;
|
||
if (value.replace) {
|
||
value = value.replace(/^this(?:\.|$)/, '').replace(/^\.\//, '').replace(/^\.$/, '');
|
||
}
|
||
|
||
this.opcode('pushId', val.type, value);
|
||
}
|
||
}
|
||
this.accept(val);
|
||
}
|
||
},
|
||
|
||
setupFullMustacheParams: function setupFullMustacheParams(sexpr, program, inverse, omitEmpty) {
|
||
var params = sexpr.params;
|
||
this.pushParams(params);
|
||
|
||
this.opcode('pushProgram', program);
|
||
this.opcode('pushProgram', inverse);
|
||
|
||
if (sexpr.hash) {
|
||
this.accept(sexpr.hash);
|
||
} else {
|
||
this.opcode('emptyHash', omitEmpty);
|
||
}
|
||
|
||
return params;
|
||
},
|
||
|
||
blockParamIndex: function blockParamIndex(name) {
|
||
for (var depth = 0, len = this.options.blockParams.length; depth < len; depth++) {
|
||
var blockParams = this.options.blockParams[depth],
|
||
param = blockParams && _utils.indexOf(blockParams, name);
|
||
if (blockParams && param >= 0) {
|
||
return [depth, param];
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
function precompile(input, options, env) {
|
||
if (input == null || typeof input !== 'string' && input.type !== 'Program') {
|
||
throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' + input);
|
||
}
|
||
|
||
options = options || {};
|
||
if (!('data' in options)) {
|
||
options.data = true;
|
||
}
|
||
if (options.compat) {
|
||
options.useDepths = true;
|
||
}
|
||
|
||
var ast = env.parse(input, options),
|
||
environment = new env.Compiler().compile(ast, options);
|
||
return new env.JavaScriptCompiler().compile(environment, options);
|
||
}
|
||
|
||
function compile(input, options, env) {
|
||
if (options === undefined) options = {};
|
||
|
||
if (input == null || typeof input !== 'string' && input.type !== 'Program') {
|
||
throw new _exception2['default']('You must pass a string or Handlebars AST to Handlebars.compile. You passed ' + input);
|
||
}
|
||
|
||
if (!('data' in options)) {
|
||
options.data = true;
|
||
}
|
||
if (options.compat) {
|
||
options.useDepths = true;
|
||
}
|
||
|
||
var compiled = undefined;
|
||
|
||
function compileInput() {
|
||
var ast = env.parse(input, options),
|
||
environment = new env.Compiler().compile(ast, options),
|
||
templateSpec = new env.JavaScriptCompiler().compile(environment, options, undefined, true);
|
||
return env.template(templateSpec);
|
||
}
|
||
|
||
// Template is only compiled on first use and cached after that point.
|
||
function ret(context, execOptions) {
|
||
if (!compiled) {
|
||
compiled = compileInput();
|
||
}
|
||
return compiled.call(this, context, execOptions);
|
||
}
|
||
ret._setup = function (setupOptions) {
|
||
if (!compiled) {
|
||
compiled = compileInput();
|
||
}
|
||
return compiled._setup(setupOptions);
|
||
};
|
||
ret._child = function (i, data, blockParams, depths) {
|
||
if (!compiled) {
|
||
compiled = compileInput();
|
||
}
|
||
return compiled._child(i, data, blockParams, depths);
|
||
};
|
||
return ret;
|
||
}
|
||
|
||
function argEquals(a, b) {
|
||
if (a === b) {
|
||
return true;
|
||
}
|
||
|
||
if (_utils.isArray(a) && _utils.isArray(b) && a.length === b.length) {
|
||
for (var i = 0; i < a.length; i++) {
|
||
if (!argEquals(a[i], b[i])) {
|
||
return false;
|
||
}
|
||
}
|
||
return true;
|
||
}
|
||
}
|
||
|
||
function transformLiteralToPath(sexpr) {
|
||
if (!sexpr.path.parts) {
|
||
var literal = sexpr.path;
|
||
// Casting to string here to make false and 0 literal values play nicely with the rest
|
||
// of the system.
|
||
sexpr.path = {
|
||
type: 'PathExpression',
|
||
data: false,
|
||
depth: 0,
|
||
parts: [literal.original + ''],
|
||
original: literal.original + '',
|
||
loc: literal.loc
|
||
};
|
||
}
|
||
}
|
||
|
||
/***/ },
|
||
/* 28 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
'use strict';
|
||
|
||
var _interopRequireDefault = __webpack_require__(1)['default'];
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _base = __webpack_require__(4);
|
||
|
||
var _exception = __webpack_require__(6);
|
||
|
||
var _exception2 = _interopRequireDefault(_exception);
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
var _codeGen = __webpack_require__(29);
|
||
|
||
var _codeGen2 = _interopRequireDefault(_codeGen);
|
||
|
||
function Literal(value) {
|
||
this.value = value;
|
||
}
|
||
|
||
function JavaScriptCompiler() {}
|
||
|
||
JavaScriptCompiler.prototype = {
|
||
// PUBLIC API: You can override these methods in a subclass to provide
|
||
// alternative compiled forms for name lookup and buffering semantics
|
||
nameLookup: function nameLookup(parent, name /* , type*/) {
|
||
if (JavaScriptCompiler.isValidJavaScriptVariableName(name)) {
|
||
return [parent, '.', name];
|
||
} else {
|
||
return [parent, '[', JSON.stringify(name), ']'];
|
||
}
|
||
},
|
||
depthedLookup: function depthedLookup(name) {
|
||
return [this.aliasable('container.lookup'), '(depths, "', name, '")'];
|
||
},
|
||
|
||
compilerInfo: function compilerInfo() {
|
||
var revision = _base.COMPILER_REVISION,
|
||
versions = _base.REVISION_CHANGES[revision];
|
||
return [revision, versions];
|
||
},
|
||
|
||
appendToBuffer: function appendToBuffer(source, location, explicit) {
|
||
// Force a source as this simplifies the merge logic.
|
||
if (!_utils.isArray(source)) {
|
||
source = [source];
|
||
}
|
||
source = this.source.wrap(source, location);
|
||
|
||
if (this.environment.isSimple) {
|
||
return ['return ', source, ';'];
|
||
} else if (explicit) {
|
||
// This is a case where the buffer operation occurs as a child of another
|
||
// construct, generally braces. We have to explicitly output these buffer
|
||
// operations to ensure that the emitted code goes in the correct location.
|
||
return ['buffer += ', source, ';'];
|
||
} else {
|
||
source.appendToBuffer = true;
|
||
return source;
|
||
}
|
||
},
|
||
|
||
initializeBuffer: function initializeBuffer() {
|
||
return this.quotedString('');
|
||
},
|
||
// END PUBLIC API
|
||
|
||
compile: function compile(environment, options, context, asObject) {
|
||
this.environment = environment;
|
||
this.options = options;
|
||
this.stringParams = this.options.stringParams;
|
||
this.trackIds = this.options.trackIds;
|
||
this.precompile = !asObject;
|
||
|
||
this.name = this.environment.name;
|
||
this.isChild = !!context;
|
||
this.context = context || {
|
||
decorators: [],
|
||
programs: [],
|
||
environments: []
|
||
};
|
||
|
||
this.preamble();
|
||
|
||
this.stackSlot = 0;
|
||
this.stackVars = [];
|
||
this.aliases = {};
|
||
this.registers = { list: [] };
|
||
this.hashes = [];
|
||
this.compileStack = [];
|
||
this.inlineStack = [];
|
||
this.blockParams = [];
|
||
|
||
this.compileChildren(environment, options);
|
||
|
||
this.useDepths = this.useDepths || environment.useDepths || environment.useDecorators || this.options.compat;
|
||
this.useBlockParams = this.useBlockParams || environment.useBlockParams;
|
||
|
||
var opcodes = environment.opcodes,
|
||
opcode = undefined,
|
||
firstLoc = undefined,
|
||
i = undefined,
|
||
l = undefined;
|
||
|
||
for (i = 0, l = opcodes.length; i < l; i++) {
|
||
opcode = opcodes[i];
|
||
|
||
this.source.currentLocation = opcode.loc;
|
||
firstLoc = firstLoc || opcode.loc;
|
||
this[opcode.opcode].apply(this, opcode.args);
|
||
}
|
||
|
||
// Flush any trailing content that might be pending.
|
||
this.source.currentLocation = firstLoc;
|
||
this.pushSource('');
|
||
|
||
/* istanbul ignore next */
|
||
if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {
|
||
throw new _exception2['default']('Compile completed with content left on stack');
|
||
}
|
||
|
||
if (!this.decorators.isEmpty()) {
|
||
this.useDecorators = true;
|
||
|
||
this.decorators.prepend('var decorators = container.decorators;\n');
|
||
this.decorators.push('return fn;');
|
||
|
||
if (asObject) {
|
||
this.decorators = Function.apply(this, ['fn', 'props', 'container', 'depth0', 'data', 'blockParams', 'depths', this.decorators.merge()]);
|
||
} else {
|
||
this.decorators.prepend('function(fn, props, container, depth0, data, blockParams, depths) {\n');
|
||
this.decorators.push('}\n');
|
||
this.decorators = this.decorators.merge();
|
||
}
|
||
} else {
|
||
this.decorators = undefined;
|
||
}
|
||
|
||
var fn = this.createFunctionContext(asObject);
|
||
if (!this.isChild) {
|
||
var ret = {
|
||
compiler: this.compilerInfo(),
|
||
main: fn
|
||
};
|
||
|
||
if (this.decorators) {
|
||
ret.main_d = this.decorators; // eslint-disable-line camelcase
|
||
ret.useDecorators = true;
|
||
}
|
||
|
||
var _context = this.context;
|
||
var programs = _context.programs;
|
||
var decorators = _context.decorators;
|
||
|
||
for (i = 0, l = programs.length; i < l; i++) {
|
||
if (programs[i]) {
|
||
ret[i] = programs[i];
|
||
if (decorators[i]) {
|
||
ret[i + '_d'] = decorators[i];
|
||
ret.useDecorators = true;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (this.environment.usePartial) {
|
||
ret.usePartial = true;
|
||
}
|
||
if (this.options.data) {
|
||
ret.useData = true;
|
||
}
|
||
if (this.useDepths) {
|
||
ret.useDepths = true;
|
||
}
|
||
if (this.useBlockParams) {
|
||
ret.useBlockParams = true;
|
||
}
|
||
if (this.options.compat) {
|
||
ret.compat = true;
|
||
}
|
||
|
||
if (!asObject) {
|
||
ret.compiler = JSON.stringify(ret.compiler);
|
||
|
||
this.source.currentLocation = { start: { line: 1, column: 0 } };
|
||
ret = this.objectLiteral(ret);
|
||
|
||
if (options.srcName) {
|
||
ret = ret.toStringWithSourceMap({ file: options.destName });
|
||
ret.map = ret.map && ret.map.toString();
|
||
} else {
|
||
ret = ret.toString();
|
||
}
|
||
} else {
|
||
ret.compilerOptions = this.options;
|
||
}
|
||
|
||
return ret;
|
||
} else {
|
||
return fn;
|
||
}
|
||
},
|
||
|
||
preamble: function preamble() {
|
||
// track the last context pushed into place to allow skipping the
|
||
// getContext opcode when it would be a noop
|
||
this.lastContext = 0;
|
||
this.source = new _codeGen2['default'](this.options.srcName);
|
||
this.decorators = new _codeGen2['default'](this.options.srcName);
|
||
},
|
||
|
||
createFunctionContext: function createFunctionContext(asObject) {
|
||
var varDeclarations = '';
|
||
|
||
var locals = this.stackVars.concat(this.registers.list);
|
||
if (locals.length > 0) {
|
||
varDeclarations += ', ' + locals.join(', ');
|
||
}
|
||
|
||
// Generate minimizer alias mappings
|
||
//
|
||
// When using true SourceNodes, this will update all references to the given alias
|
||
// as the source nodes are reused in situ. For the non-source node compilation mode,
|
||
// aliases will not be used, but this case is already being run on the client and
|
||
// we aren't concern about minimizing the template size.
|
||
var aliasCount = 0;
|
||
for (var alias in this.aliases) {
|
||
// eslint-disable-line guard-for-in
|
||
var node = this.aliases[alias];
|
||
|
||
if (this.aliases.hasOwnProperty(alias) && node.children && node.referenceCount > 1) {
|
||
varDeclarations += ', alias' + ++aliasCount + '=' + alias;
|
||
node.children[0] = 'alias' + aliasCount;
|
||
}
|
||
}
|
||
|
||
var params = ['container', 'depth0', 'helpers', 'partials', 'data'];
|
||
|
||
if (this.useBlockParams || this.useDepths) {
|
||
params.push('blockParams');
|
||
}
|
||
if (this.useDepths) {
|
||
params.push('depths');
|
||
}
|
||
|
||
// Perform a second pass over the output to merge content when possible
|
||
var source = this.mergeSource(varDeclarations);
|
||
|
||
if (asObject) {
|
||
params.push(source);
|
||
|
||
return Function.apply(this, params);
|
||
} else {
|
||
return this.source.wrap(['function(', params.join(','), ') {\n ', source, '}']);
|
||
}
|
||
},
|
||
mergeSource: function mergeSource(varDeclarations) {
|
||
var isSimple = this.environment.isSimple,
|
||
appendOnly = !this.forceBuffer,
|
||
appendFirst = undefined,
|
||
sourceSeen = undefined,
|
||
bufferStart = undefined,
|
||
bufferEnd = undefined;
|
||
this.source.each(function (line) {
|
||
if (line.appendToBuffer) {
|
||
if (bufferStart) {
|
||
line.prepend(' + ');
|
||
} else {
|
||
bufferStart = line;
|
||
}
|
||
bufferEnd = line;
|
||
} else {
|
||
if (bufferStart) {
|
||
if (!sourceSeen) {
|
||
appendFirst = true;
|
||
} else {
|
||
bufferStart.prepend('buffer += ');
|
||
}
|
||
bufferEnd.add(';');
|
||
bufferStart = bufferEnd = undefined;
|
||
}
|
||
|
||
sourceSeen = true;
|
||
if (!isSimple) {
|
||
appendOnly = false;
|
||
}
|
||
}
|
||
});
|
||
|
||
if (appendOnly) {
|
||
if (bufferStart) {
|
||
bufferStart.prepend('return ');
|
||
bufferEnd.add(';');
|
||
} else if (!sourceSeen) {
|
||
this.source.push('return "";');
|
||
}
|
||
} else {
|
||
varDeclarations += ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());
|
||
|
||
if (bufferStart) {
|
||
bufferStart.prepend('return buffer + ');
|
||
bufferEnd.add(';');
|
||
} else {
|
||
this.source.push('return buffer;');
|
||
}
|
||
}
|
||
|
||
if (varDeclarations) {
|
||
this.source.prepend('var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\n'));
|
||
}
|
||
|
||
return this.source.merge();
|
||
},
|
||
|
||
// [blockValue]
|
||
//
|
||
// On stack, before: hash, inverse, program, value
|
||
// On stack, after: return value of blockHelperMissing
|
||
//
|
||
// The purpose of this opcode is to take a block of the form
|
||
// `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and
|
||
// replace it on the stack with the result of properly
|
||
// invoking blockHelperMissing.
|
||
blockValue: function blockValue(name) {
|
||
var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),
|
||
params = [this.contextName(0)];
|
||
this.setupHelperArgs(name, 0, params);
|
||
|
||
var blockName = this.popStack();
|
||
params.splice(1, 0, blockName);
|
||
|
||
this.push(this.source.functionCall(blockHelperMissing, 'call', params));
|
||
},
|
||
|
||
// [ambiguousBlockValue]
|
||
//
|
||
// On stack, before: hash, inverse, program, value
|
||
// Compiler value, before: lastHelper=value of last found helper, if any
|
||
// On stack, after, if no lastHelper: same as [blockValue]
|
||
// On stack, after, if lastHelper: value
|
||
ambiguousBlockValue: function ambiguousBlockValue() {
|
||
// We're being a bit cheeky and reusing the options value from the prior exec
|
||
var blockHelperMissing = this.aliasable('helpers.blockHelperMissing'),
|
||
params = [this.contextName(0)];
|
||
this.setupHelperArgs('', 0, params, true);
|
||
|
||
this.flushInline();
|
||
|
||
var current = this.topStack();
|
||
params.splice(1, 0, current);
|
||
|
||
this.pushSource(['if (!', this.lastHelper, ') { ', current, ' = ', this.source.functionCall(blockHelperMissing, 'call', params), '}']);
|
||
},
|
||
|
||
// [appendContent]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: ...
|
||
//
|
||
// Appends the string value of `content` to the current buffer
|
||
appendContent: function appendContent(content) {
|
||
if (this.pendingContent) {
|
||
content = this.pendingContent + content;
|
||
} else {
|
||
this.pendingLocation = this.source.currentLocation;
|
||
}
|
||
|
||
this.pendingContent = content;
|
||
},
|
||
|
||
// [append]
|
||
//
|
||
// On stack, before: value, ...
|
||
// On stack, after: ...
|
||
//
|
||
// Coerces `value` to a String and appends it to the current buffer.
|
||
//
|
||
// If `value` is truthy, or 0, it is coerced into a string and appended
|
||
// Otherwise, the empty string is appended
|
||
append: function append() {
|
||
if (this.isInline()) {
|
||
this.replaceStack(function (current) {
|
||
return [' != null ? ', current, ' : ""'];
|
||
});
|
||
|
||
this.pushSource(this.appendToBuffer(this.popStack()));
|
||
} else {
|
||
var local = this.popStack();
|
||
this.pushSource(['if (', local, ' != null) { ', this.appendToBuffer(local, undefined, true), ' }']);
|
||
if (this.environment.isSimple) {
|
||
this.pushSource(['else { ', this.appendToBuffer("''", undefined, true), ' }']);
|
||
}
|
||
}
|
||
},
|
||
|
||
// [appendEscaped]
|
||
//
|
||
// On stack, before: value, ...
|
||
// On stack, after: ...
|
||
//
|
||
// Escape `value` and append it to the buffer
|
||
appendEscaped: function appendEscaped() {
|
||
this.pushSource(this.appendToBuffer([this.aliasable('container.escapeExpression'), '(', this.popStack(), ')']));
|
||
},
|
||
|
||
// [getContext]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: ...
|
||
// Compiler value, after: lastContext=depth
|
||
//
|
||
// Set the value of the `lastContext` compiler value to the depth
|
||
getContext: function getContext(depth) {
|
||
this.lastContext = depth;
|
||
},
|
||
|
||
// [pushContext]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: currentContext, ...
|
||
//
|
||
// Pushes the value of the current context onto the stack.
|
||
pushContext: function pushContext() {
|
||
this.pushStackLiteral(this.contextName(this.lastContext));
|
||
},
|
||
|
||
// [lookupOnContext]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: currentContext[name], ...
|
||
//
|
||
// Looks up the value of `name` on the current context and pushes
|
||
// it onto the stack.
|
||
lookupOnContext: function lookupOnContext(parts, falsy, strict, scoped) {
|
||
var i = 0;
|
||
|
||
if (!scoped && this.options.compat && !this.lastContext) {
|
||
// The depthed query is expected to handle the undefined logic for the root level that
|
||
// is implemented below, so we evaluate that directly in compat mode
|
||
this.push(this.depthedLookup(parts[i++]));
|
||
} else {
|
||
this.pushContext();
|
||
}
|
||
|
||
this.resolvePath('context', parts, i, falsy, strict);
|
||
},
|
||
|
||
// [lookupBlockParam]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: blockParam[name], ...
|
||
//
|
||
// Looks up the value of `parts` on the given block param and pushes
|
||
// it onto the stack.
|
||
lookupBlockParam: function lookupBlockParam(blockParamId, parts) {
|
||
this.useBlockParams = true;
|
||
|
||
this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);
|
||
this.resolvePath('context', parts, 1);
|
||
},
|
||
|
||
// [lookupData]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: data, ...
|
||
//
|
||
// Push the data lookup operator
|
||
lookupData: function lookupData(depth, parts, strict) {
|
||
if (!depth) {
|
||
this.pushStackLiteral('data');
|
||
} else {
|
||
this.pushStackLiteral('container.data(data, ' + depth + ')');
|
||
}
|
||
|
||
this.resolvePath('data', parts, 0, true, strict);
|
||
},
|
||
|
||
resolvePath: function resolvePath(type, parts, i, falsy, strict) {
|
||
// istanbul ignore next
|
||
|
||
var _this = this;
|
||
|
||
if (this.options.strict || this.options.assumeObjects) {
|
||
this.push(strictLookup(this.options.strict && strict, this, parts, type));
|
||
return;
|
||
}
|
||
|
||
var len = parts.length;
|
||
for (; i < len; i++) {
|
||
/* eslint-disable no-loop-func */
|
||
this.replaceStack(function (current) {
|
||
var lookup = _this.nameLookup(current, parts[i], type);
|
||
// We want to ensure that zero and false are handled properly if the context (falsy flag)
|
||
// needs to have the special handling for these values.
|
||
if (!falsy) {
|
||
return [' != null ? ', lookup, ' : ', current];
|
||
} else {
|
||
// Otherwise we can use generic falsy handling
|
||
return [' && ', lookup];
|
||
}
|
||
});
|
||
/* eslint-enable no-loop-func */
|
||
}
|
||
},
|
||
|
||
// [resolvePossibleLambda]
|
||
//
|
||
// On stack, before: value, ...
|
||
// On stack, after: resolved value, ...
|
||
//
|
||
// If the `value` is a lambda, replace it on the stack by
|
||
// the return value of the lambda
|
||
resolvePossibleLambda: function resolvePossibleLambda() {
|
||
this.push([this.aliasable('container.lambda'), '(', this.popStack(), ', ', this.contextName(0), ')']);
|
||
},
|
||
|
||
// [pushStringParam]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: string, currentContext, ...
|
||
//
|
||
// This opcode is designed for use in string mode, which
|
||
// provides the string value of a parameter along with its
|
||
// depth rather than resolving it immediately.
|
||
pushStringParam: function pushStringParam(string, type) {
|
||
this.pushContext();
|
||
this.pushString(type);
|
||
|
||
// If it's a subexpression, the string result
|
||
// will be pushed after this opcode.
|
||
if (type !== 'SubExpression') {
|
||
if (typeof string === 'string') {
|
||
this.pushString(string);
|
||
} else {
|
||
this.pushStackLiteral(string);
|
||
}
|
||
}
|
||
},
|
||
|
||
emptyHash: function emptyHash(omitEmpty) {
|
||
if (this.trackIds) {
|
||
this.push('{}'); // hashIds
|
||
}
|
||
if (this.stringParams) {
|
||
this.push('{}'); // hashContexts
|
||
this.push('{}'); // hashTypes
|
||
}
|
||
this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');
|
||
},
|
||
pushHash: function pushHash() {
|
||
if (this.hash) {
|
||
this.hashes.push(this.hash);
|
||
}
|
||
this.hash = { values: [], types: [], contexts: [], ids: [] };
|
||
},
|
||
popHash: function popHash() {
|
||
var hash = this.hash;
|
||
this.hash = this.hashes.pop();
|
||
|
||
if (this.trackIds) {
|
||
this.push(this.objectLiteral(hash.ids));
|
||
}
|
||
if (this.stringParams) {
|
||
this.push(this.objectLiteral(hash.contexts));
|
||
this.push(this.objectLiteral(hash.types));
|
||
}
|
||
|
||
this.push(this.objectLiteral(hash.values));
|
||
},
|
||
|
||
// [pushString]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: quotedString(string), ...
|
||
//
|
||
// Push a quoted version of `string` onto the stack
|
||
pushString: function pushString(string) {
|
||
this.pushStackLiteral(this.quotedString(string));
|
||
},
|
||
|
||
// [pushLiteral]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: value, ...
|
||
//
|
||
// Pushes a value onto the stack. This operation prevents
|
||
// the compiler from creating a temporary variable to hold
|
||
// it.
|
||
pushLiteral: function pushLiteral(value) {
|
||
this.pushStackLiteral(value);
|
||
},
|
||
|
||
// [pushProgram]
|
||
//
|
||
// On stack, before: ...
|
||
// On stack, after: program(guid), ...
|
||
//
|
||
// Push a program expression onto the stack. This takes
|
||
// a compile-time guid and converts it into a runtime-accessible
|
||
// expression.
|
||
pushProgram: function pushProgram(guid) {
|
||
if (guid != null) {
|
||
this.pushStackLiteral(this.programExpression(guid));
|
||
} else {
|
||
this.pushStackLiteral(null);
|
||
}
|
||
},
|
||
|
||
// [registerDecorator]
|
||
//
|
||
// On stack, before: hash, program, params..., ...
|
||
// On stack, after: ...
|
||
//
|
||
// Pops off the decorator's parameters, invokes the decorator,
|
||
// and inserts the decorator into the decorators list.
|
||
registerDecorator: function registerDecorator(paramSize, name) {
|
||
var foundDecorator = this.nameLookup('decorators', name, 'decorator'),
|
||
options = this.setupHelperArgs(name, paramSize);
|
||
|
||
this.decorators.push(['fn = ', this.decorators.functionCall(foundDecorator, '', ['fn', 'props', 'container', options]), ' || fn;']);
|
||
},
|
||
|
||
// [invokeHelper]
|
||
//
|
||
// On stack, before: hash, inverse, program, params..., ...
|
||
// On stack, after: result of helper invocation
|
||
//
|
||
// Pops off the helper's parameters, invokes the helper,
|
||
// and pushes the helper's return value onto the stack.
|
||
//
|
||
// If the helper is not found, `helperMissing` is called.
|
||
invokeHelper: function invokeHelper(paramSize, name, isSimple) {
|
||
var nonHelper = this.popStack(),
|
||
helper = this.setupHelper(paramSize, name),
|
||
simple = isSimple ? [helper.name, ' || '] : '';
|
||
|
||
var lookup = ['('].concat(simple, nonHelper);
|
||
if (!this.options.strict) {
|
||
lookup.push(' || ', this.aliasable('helpers.helperMissing'));
|
||
}
|
||
lookup.push(')');
|
||
|
||
this.push(this.source.functionCall(lookup, 'call', helper.callParams));
|
||
},
|
||
|
||
// [invokeKnownHelper]
|
||
//
|
||
// On stack, before: hash, inverse, program, params..., ...
|
||
// On stack, after: result of helper invocation
|
||
//
|
||
// This operation is used when the helper is known to exist,
|
||
// so a `helperMissing` fallback is not required.
|
||
invokeKnownHelper: function invokeKnownHelper(paramSize, name) {
|
||
var helper = this.setupHelper(paramSize, name);
|
||
this.push(this.source.functionCall(helper.name, 'call', helper.callParams));
|
||
},
|
||
|
||
// [invokeAmbiguous]
|
||
//
|
||
// On stack, before: hash, inverse, program, params..., ...
|
||
// On stack, after: result of disambiguation
|
||
//
|
||
// This operation is used when an expression like `{{foo}}`
|
||
// is provided, but we don't know at compile-time whether it
|
||
// is a helper or a path.
|
||
//
|
||
// This operation emits more code than the other options,
|
||
// and can be avoided by passing the `knownHelpers` and
|
||
// `knownHelpersOnly` flags at compile-time.
|
||
invokeAmbiguous: function invokeAmbiguous(name, helperCall) {
|
||
this.useRegister('helper');
|
||
|
||
var nonHelper = this.popStack();
|
||
|
||
this.emptyHash();
|
||
var helper = this.setupHelper(0, name, helperCall);
|
||
|
||
var helperName = this.lastHelper = this.nameLookup('helpers', name, 'helper');
|
||
|
||
var lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];
|
||
if (!this.options.strict) {
|
||
lookup[0] = '(helper = ';
|
||
lookup.push(' != null ? helper : ', this.aliasable('helpers.helperMissing'));
|
||
}
|
||
|
||
this.push(['(', lookup, helper.paramsInit ? ['),(', helper.paramsInit] : [], '),', '(typeof helper === ', this.aliasable('"function"'), ' ? ', this.source.functionCall('helper', 'call', helper.callParams), ' : helper))']);
|
||
},
|
||
|
||
// [invokePartial]
|
||
//
|
||
// On stack, before: context, ...
|
||
// On stack after: result of partial invocation
|
||
//
|
||
// This operation pops off a context, invokes a partial with that context,
|
||
// and pushes the result of the invocation back.
|
||
invokePartial: function invokePartial(isDynamic, name, indent) {
|
||
var params = [],
|
||
options = this.setupParams(name, 1, params);
|
||
|
||
if (isDynamic) {
|
||
name = this.popStack();
|
||
delete options.name;
|
||
}
|
||
|
||
if (indent) {
|
||
options.indent = JSON.stringify(indent);
|
||
}
|
||
options.helpers = 'helpers';
|
||
options.partials = 'partials';
|
||
options.decorators = 'container.decorators';
|
||
|
||
if (!isDynamic) {
|
||
params.unshift(this.nameLookup('partials', name, 'partial'));
|
||
} else {
|
||
params.unshift(name);
|
||
}
|
||
|
||
if (this.options.compat) {
|
||
options.depths = 'depths';
|
||
}
|
||
options = this.objectLiteral(options);
|
||
params.push(options);
|
||
|
||
this.push(this.source.functionCall('container.invokePartial', '', params));
|
||
},
|
||
|
||
// [assignToHash]
|
||
//
|
||
// On stack, before: value, ..., hash, ...
|
||
// On stack, after: ..., hash, ...
|
||
//
|
||
// Pops a value off the stack and assigns it to the current hash
|
||
assignToHash: function assignToHash(key) {
|
||
var value = this.popStack(),
|
||
context = undefined,
|
||
type = undefined,
|
||
id = undefined;
|
||
|
||
if (this.trackIds) {
|
||
id = this.popStack();
|
||
}
|
||
if (this.stringParams) {
|
||
type = this.popStack();
|
||
context = this.popStack();
|
||
}
|
||
|
||
var hash = this.hash;
|
||
if (context) {
|
||
hash.contexts[key] = context;
|
||
}
|
||
if (type) {
|
||
hash.types[key] = type;
|
||
}
|
||
if (id) {
|
||
hash.ids[key] = id;
|
||
}
|
||
hash.values[key] = value;
|
||
},
|
||
|
||
pushId: function pushId(type, name, child) {
|
||
if (type === 'BlockParam') {
|
||
this.pushStackLiteral('blockParams[' + name[0] + '].path[' + name[1] + ']' + (child ? ' + ' + JSON.stringify('.' + child) : ''));
|
||
} else if (type === 'PathExpression') {
|
||
this.pushString(name);
|
||
} else if (type === 'SubExpression') {
|
||
this.pushStackLiteral('true');
|
||
} else {
|
||
this.pushStackLiteral('null');
|
||
}
|
||
},
|
||
|
||
// HELPERS
|
||
|
||
compiler: JavaScriptCompiler,
|
||
|
||
compileChildren: function compileChildren(environment, options) {
|
||
var children = environment.children,
|
||
child = undefined,
|
||
compiler = undefined;
|
||
|
||
for (var i = 0, l = children.length; i < l; i++) {
|
||
child = children[i];
|
||
compiler = new this.compiler(); // eslint-disable-line new-cap
|
||
|
||
var index = this.matchExistingProgram(child);
|
||
|
||
if (index == null) {
|
||
this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children
|
||
index = this.context.programs.length;
|
||
child.index = index;
|
||
child.name = 'program' + index;
|
||
this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile);
|
||
this.context.decorators[index] = compiler.decorators;
|
||
this.context.environments[index] = child;
|
||
|
||
this.useDepths = this.useDepths || compiler.useDepths;
|
||
this.useBlockParams = this.useBlockParams || compiler.useBlockParams;
|
||
} else {
|
||
child.index = index;
|
||
child.name = 'program' + index;
|
||
|
||
this.useDepths = this.useDepths || child.useDepths;
|
||
this.useBlockParams = this.useBlockParams || child.useBlockParams;
|
||
}
|
||
}
|
||
},
|
||
matchExistingProgram: function matchExistingProgram(child) {
|
||
for (var i = 0, len = this.context.environments.length; i < len; i++) {
|
||
var environment = this.context.environments[i];
|
||
if (environment && environment.equals(child)) {
|
||
return i;
|
||
}
|
||
}
|
||
},
|
||
|
||
programExpression: function programExpression(guid) {
|
||
var child = this.environment.children[guid],
|
||
programParams = [child.index, 'data', child.blockParams];
|
||
|
||
if (this.useBlockParams || this.useDepths) {
|
||
programParams.push('blockParams');
|
||
}
|
||
if (this.useDepths) {
|
||
programParams.push('depths');
|
||
}
|
||
|
||
return 'container.program(' + programParams.join(', ') + ')';
|
||
},
|
||
|
||
useRegister: function useRegister(name) {
|
||
if (!this.registers[name]) {
|
||
this.registers[name] = true;
|
||
this.registers.list.push(name);
|
||
}
|
||
},
|
||
|
||
push: function push(expr) {
|
||
if (!(expr instanceof Literal)) {
|
||
expr = this.source.wrap(expr);
|
||
}
|
||
|
||
this.inlineStack.push(expr);
|
||
return expr;
|
||
},
|
||
|
||
pushStackLiteral: function pushStackLiteral(item) {
|
||
this.push(new Literal(item));
|
||
},
|
||
|
||
pushSource: function pushSource(source) {
|
||
if (this.pendingContent) {
|
||
this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation));
|
||
this.pendingContent = undefined;
|
||
}
|
||
|
||
if (source) {
|
||
this.source.push(source);
|
||
}
|
||
},
|
||
|
||
replaceStack: function replaceStack(callback) {
|
||
var prefix = ['('],
|
||
stack = undefined,
|
||
createdStack = undefined,
|
||
usedLiteral = undefined;
|
||
|
||
/* istanbul ignore next */
|
||
if (!this.isInline()) {
|
||
throw new _exception2['default']('replaceStack on non-inline');
|
||
}
|
||
|
||
// We want to merge the inline statement into the replacement statement via ','
|
||
var top = this.popStack(true);
|
||
|
||
if (top instanceof Literal) {
|
||
// Literals do not need to be inlined
|
||
stack = [top.value];
|
||
prefix = ['(', stack];
|
||
usedLiteral = true;
|
||
} else {
|
||
// Get or create the current stack name for use by the inline
|
||
createdStack = true;
|
||
var _name = this.incrStack();
|
||
|
||
prefix = ['((', this.push(_name), ' = ', top, ')'];
|
||
stack = this.topStack();
|
||
}
|
||
|
||
var item = callback.call(this, stack);
|
||
|
||
if (!usedLiteral) {
|
||
this.popStack();
|
||
}
|
||
if (createdStack) {
|
||
this.stackSlot--;
|
||
}
|
||
this.push(prefix.concat(item, ')'));
|
||
},
|
||
|
||
incrStack: function incrStack() {
|
||
this.stackSlot++;
|
||
if (this.stackSlot > this.stackVars.length) {
|
||
this.stackVars.push('stack' + this.stackSlot);
|
||
}
|
||
return this.topStackName();
|
||
},
|
||
topStackName: function topStackName() {
|
||
return 'stack' + this.stackSlot;
|
||
},
|
||
flushInline: function flushInline() {
|
||
var inlineStack = this.inlineStack;
|
||
this.inlineStack = [];
|
||
for (var i = 0, len = inlineStack.length; i < len; i++) {
|
||
var entry = inlineStack[i];
|
||
/* istanbul ignore if */
|
||
if (entry instanceof Literal) {
|
||
this.compileStack.push(entry);
|
||
} else {
|
||
var stack = this.incrStack();
|
||
this.pushSource([stack, ' = ', entry, ';']);
|
||
this.compileStack.push(stack);
|
||
}
|
||
}
|
||
},
|
||
isInline: function isInline() {
|
||
return this.inlineStack.length;
|
||
},
|
||
|
||
popStack: function popStack(wrapped) {
|
||
var inline = this.isInline(),
|
||
item = (inline ? this.inlineStack : this.compileStack).pop();
|
||
|
||
if (!wrapped && item instanceof Literal) {
|
||
return item.value;
|
||
} else {
|
||
if (!inline) {
|
||
/* istanbul ignore next */
|
||
if (!this.stackSlot) {
|
||
throw new _exception2['default']('Invalid stack pop');
|
||
}
|
||
this.stackSlot--;
|
||
}
|
||
return item;
|
||
}
|
||
},
|
||
|
||
topStack: function topStack() {
|
||
var stack = this.isInline() ? this.inlineStack : this.compileStack,
|
||
item = stack[stack.length - 1];
|
||
|
||
/* istanbul ignore if */
|
||
if (item instanceof Literal) {
|
||
return item.value;
|
||
} else {
|
||
return item;
|
||
}
|
||
},
|
||
|
||
contextName: function contextName(context) {
|
||
if (this.useDepths && context) {
|
||
return 'depths[' + context + ']';
|
||
} else {
|
||
return 'depth' + context;
|
||
}
|
||
},
|
||
|
||
quotedString: function quotedString(str) {
|
||
return this.source.quotedString(str);
|
||
},
|
||
|
||
objectLiteral: function objectLiteral(obj) {
|
||
return this.source.objectLiteral(obj);
|
||
},
|
||
|
||
aliasable: function aliasable(name) {
|
||
var ret = this.aliases[name];
|
||
if (ret) {
|
||
ret.referenceCount++;
|
||
return ret;
|
||
}
|
||
|
||
ret = this.aliases[name] = this.source.wrap(name);
|
||
ret.aliasable = true;
|
||
ret.referenceCount = 1;
|
||
|
||
return ret;
|
||
},
|
||
|
||
setupHelper: function setupHelper(paramSize, name, blockHelper) {
|
||
var params = [],
|
||
paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);
|
||
var foundHelper = this.nameLookup('helpers', name, 'helper'),
|
||
callContext = this.aliasable(this.contextName(0) + ' != null ? ' + this.contextName(0) + ' : {}');
|
||
|
||
return {
|
||
params: params,
|
||
paramsInit: paramsInit,
|
||
name: foundHelper,
|
||
callParams: [callContext].concat(params)
|
||
};
|
||
},
|
||
|
||
setupParams: function setupParams(helper, paramSize, params) {
|
||
var options = {},
|
||
contexts = [],
|
||
types = [],
|
||
ids = [],
|
||
objectArgs = !params,
|
||
param = undefined;
|
||
|
||
if (objectArgs) {
|
||
params = [];
|
||
}
|
||
|
||
options.name = this.quotedString(helper);
|
||
options.hash = this.popStack();
|
||
|
||
if (this.trackIds) {
|
||
options.hashIds = this.popStack();
|
||
}
|
||
if (this.stringParams) {
|
||
options.hashTypes = this.popStack();
|
||
options.hashContexts = this.popStack();
|
||
}
|
||
|
||
var inverse = this.popStack(),
|
||
program = this.popStack();
|
||
|
||
// Avoid setting fn and inverse if neither are set. This allows
|
||
// helpers to do a check for `if (options.fn)`
|
||
if (program || inverse) {
|
||
options.fn = program || 'container.noop';
|
||
options.inverse = inverse || 'container.noop';
|
||
}
|
||
|
||
// The parameters go on to the stack in order (making sure that they are evaluated in order)
|
||
// so we need to pop them off the stack in reverse order
|
||
var i = paramSize;
|
||
while (i--) {
|
||
param = this.popStack();
|
||
params[i] = param;
|
||
|
||
if (this.trackIds) {
|
||
ids[i] = this.popStack();
|
||
}
|
||
if (this.stringParams) {
|
||
types[i] = this.popStack();
|
||
contexts[i] = this.popStack();
|
||
}
|
||
}
|
||
|
||
if (objectArgs) {
|
||
options.args = this.source.generateArray(params);
|
||
}
|
||
|
||
if (this.trackIds) {
|
||
options.ids = this.source.generateArray(ids);
|
||
}
|
||
if (this.stringParams) {
|
||
options.types = this.source.generateArray(types);
|
||
options.contexts = this.source.generateArray(contexts);
|
||
}
|
||
|
||
if (this.options.data) {
|
||
options.data = 'data';
|
||
}
|
||
if (this.useBlockParams) {
|
||
options.blockParams = 'blockParams';
|
||
}
|
||
return options;
|
||
},
|
||
|
||
setupHelperArgs: function setupHelperArgs(helper, paramSize, params, useRegister) {
|
||
var options = this.setupParams(helper, paramSize, params);
|
||
options = this.objectLiteral(options);
|
||
if (useRegister) {
|
||
this.useRegister('options');
|
||
params.push('options');
|
||
return ['options=', options];
|
||
} else if (params) {
|
||
params.push(options);
|
||
return '';
|
||
} else {
|
||
return options;
|
||
}
|
||
}
|
||
};
|
||
|
||
(function () {
|
||
var reservedWords = ('break else new var' + ' case finally return void' + ' catch for switch while' + ' continue function this with' + ' default if throw' + ' delete in try' + ' do instanceof typeof' + ' abstract enum int short' + ' boolean export interface static' + ' byte extends long super' + ' char final native synchronized' + ' class float package throws' + ' const goto private transient' + ' debugger implements protected volatile' + ' double import public let yield await' + ' null true false').split(' ');
|
||
|
||
var compilerWords = JavaScriptCompiler.RESERVED_WORDS = {};
|
||
|
||
for (var i = 0, l = reservedWords.length; i < l; i++) {
|
||
compilerWords[reservedWords[i]] = true;
|
||
}
|
||
})();
|
||
|
||
JavaScriptCompiler.isValidJavaScriptVariableName = function (name) {
|
||
return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name);
|
||
};
|
||
|
||
function strictLookup(requireTerminal, compiler, parts, type) {
|
||
var stack = compiler.popStack(),
|
||
i = 0,
|
||
len = parts.length;
|
||
if (requireTerminal) {
|
||
len--;
|
||
}
|
||
|
||
for (; i < len; i++) {
|
||
stack = compiler.nameLookup(stack, parts[i], type);
|
||
}
|
||
|
||
if (requireTerminal) {
|
||
return [compiler.aliasable('container.strict'), '(', stack, ', ', compiler.quotedString(parts[i]), ')'];
|
||
} else {
|
||
return stack;
|
||
}
|
||
}
|
||
|
||
exports['default'] = JavaScriptCompiler;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ },
|
||
/* 29 */
|
||
/***/ function(module, exports, __webpack_require__) {
|
||
|
||
/* global define */
|
||
'use strict';
|
||
|
||
exports.__esModule = true;
|
||
|
||
var _utils = __webpack_require__(5);
|
||
|
||
var SourceNode = undefined;
|
||
|
||
try {
|
||
/* istanbul ignore next */
|
||
if (false) {
|
||
// We don't support this in AMD environments. For these environments, we asusme that
|
||
// they are running on the browser and thus have no need for the source-map library.
|
||
var SourceMap = require('source-map');
|
||
SourceNode = SourceMap.SourceNode;
|
||
}
|
||
} catch (err) {}
|
||
/* NOP */
|
||
|
||
/* istanbul ignore if: tested but not covered in istanbul due to dist build */
|
||
if (!SourceNode) {
|
||
SourceNode = function (line, column, srcFile, chunks) {
|
||
this.src = '';
|
||
if (chunks) {
|
||
this.add(chunks);
|
||
}
|
||
};
|
||
/* istanbul ignore next */
|
||
SourceNode.prototype = {
|
||
add: function add(chunks) {
|
||
if (_utils.isArray(chunks)) {
|
||
chunks = chunks.join('');
|
||
}
|
||
this.src += chunks;
|
||
},
|
||
prepend: function prepend(chunks) {
|
||
if (_utils.isArray(chunks)) {
|
||
chunks = chunks.join('');
|
||
}
|
||
this.src = chunks + this.src;
|
||
},
|
||
toStringWithSourceMap: function toStringWithSourceMap() {
|
||
return { code: this.toString() };
|
||
},
|
||
toString: function toString() {
|
||
return this.src;
|
||
}
|
||
};
|
||
}
|
||
|
||
function castChunk(chunk, codeGen, loc) {
|
||
if (_utils.isArray(chunk)) {
|
||
var ret = [];
|
||
|
||
for (var i = 0, len = chunk.length; i < len; i++) {
|
||
ret.push(codeGen.wrap(chunk[i], loc));
|
||
}
|
||
return ret;
|
||
} else if (typeof chunk === 'boolean' || typeof chunk === 'number') {
|
||
// Handle primitives that the SourceNode will throw up on
|
||
return chunk + '';
|
||
}
|
||
return chunk;
|
||
}
|
||
|
||
function CodeGen(srcFile) {
|
||
this.srcFile = srcFile;
|
||
this.source = [];
|
||
}
|
||
|
||
CodeGen.prototype = {
|
||
isEmpty: function isEmpty() {
|
||
return !this.source.length;
|
||
},
|
||
prepend: function prepend(source, loc) {
|
||
this.source.unshift(this.wrap(source, loc));
|
||
},
|
||
push: function push(source, loc) {
|
||
this.source.push(this.wrap(source, loc));
|
||
},
|
||
|
||
merge: function merge() {
|
||
var source = this.empty();
|
||
this.each(function (line) {
|
||
source.add([' ', line, '\n']);
|
||
});
|
||
return source;
|
||
},
|
||
|
||
each: function each(iter) {
|
||
for (var i = 0, len = this.source.length; i < len; i++) {
|
||
iter(this.source[i]);
|
||
}
|
||
},
|
||
|
||
empty: function empty() {
|
||
var loc = this.currentLocation || { start: {} };
|
||
return new SourceNode(loc.start.line, loc.start.column, this.srcFile);
|
||
},
|
||
wrap: function wrap(chunk) {
|
||
var loc = arguments.length <= 1 || arguments[1] === undefined ? this.currentLocation || { start: {} } : arguments[1];
|
||
|
||
if (chunk instanceof SourceNode) {
|
||
return chunk;
|
||
}
|
||
|
||
chunk = castChunk(chunk, this, loc);
|
||
|
||
return new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk);
|
||
},
|
||
|
||
functionCall: function functionCall(fn, type, params) {
|
||
params = this.generateList(params);
|
||
return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);
|
||
},
|
||
|
||
quotedString: function quotedString(str) {
|
||
return '"' + (str + '').replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\u2028/g, '\\u2028') // Per Ecma-262 7.3 + 7.8.4
|
||
.replace(/\u2029/g, '\\u2029') + '"';
|
||
},
|
||
|
||
objectLiteral: function objectLiteral(obj) {
|
||
var pairs = [];
|
||
|
||
for (var key in obj) {
|
||
if (obj.hasOwnProperty(key)) {
|
||
var value = castChunk(obj[key], this);
|
||
if (value !== 'undefined') {
|
||
pairs.push([this.quotedString(key), ':', value]);
|
||
}
|
||
}
|
||
}
|
||
|
||
var ret = this.generateList(pairs);
|
||
ret.prepend('{');
|
||
ret.add('}');
|
||
return ret;
|
||
},
|
||
|
||
generateList: function generateList(entries) {
|
||
var ret = this.empty();
|
||
|
||
for (var i = 0, len = entries.length; i < len; i++) {
|
||
if (i) {
|
||
ret.add(',');
|
||
}
|
||
|
||
ret.add(castChunk(entries[i], this));
|
||
}
|
||
|
||
return ret;
|
||
},
|
||
|
||
generateArray: function generateArray(entries) {
|
||
var ret = this.generateList(entries);
|
||
ret.prepend('[');
|
||
ret.add(']');
|
||
|
||
return ret;
|
||
}
|
||
};
|
||
|
||
exports['default'] = CodeGen;
|
||
module.exports = exports['default'];
|
||
|
||
/***/ }
|
||
/******/ ])
|
||
});
|
||
;
|
||
!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t),e=(n>>16)+(t>>16)+(r>>16);return e<<16|65535&r}function r(n,t){return n<<t|n>>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<<r%32,n[(r+64>>>9<<4)+14]=r;var e,i,a,h,d,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e<n.length;e+=16)i=l,a=g,h=v,d=m,l=o(l,g,v,m,n[e],7,-680876936),m=o(m,l,g,v,n[e+1],12,-389564586),v=o(v,m,l,g,n[e+2],17,606105819),g=o(g,v,m,l,n[e+3],22,-1044525330),l=o(l,g,v,m,n[e+4],7,-176418897),m=o(m,l,g,v,n[e+5],12,1200080426),v=o(v,m,l,g,n[e+6],17,-1473231341),g=o(g,v,m,l,n[e+7],22,-45705983),l=o(l,g,v,m,n[e+8],7,1770035416),m=o(m,l,g,v,n[e+9],12,-1958414417),v=o(v,m,l,g,n[e+10],17,-42063),g=o(g,v,m,l,n[e+11],22,-1990404162),l=o(l,g,v,m,n[e+12],7,1804603682),m=o(m,l,g,v,n[e+13],12,-40341101),v=o(v,m,l,g,n[e+14],17,-1502002290),g=o(g,v,m,l,n[e+15],22,1236535329),l=u(l,g,v,m,n[e+1],5,-165796510),m=u(m,l,g,v,n[e+6],9,-1069501632),v=u(v,m,l,g,n[e+11],14,643717713),g=u(g,v,m,l,n[e],20,-373897302),l=u(l,g,v,m,n[e+5],5,-701558691),m=u(m,l,g,v,n[e+10],9,38016083),v=u(v,m,l,g,n[e+15],14,-660478335),g=u(g,v,m,l,n[e+4],20,-405537848),l=u(l,g,v,m,n[e+9],5,568446438),m=u(m,l,g,v,n[e+14],9,-1019803690),v=u(v,m,l,g,n[e+3],14,-187363961),g=u(g,v,m,l,n[e+8],20,1163531501),l=u(l,g,v,m,n[e+13],5,-1444681467),m=u(m,l,g,v,n[e+2],9,-51403784),v=u(v,m,l,g,n[e+7],14,1735328473),g=u(g,v,m,l,n[e+12],20,-1926607734),l=c(l,g,v,m,n[e+5],4,-378558),m=c(m,l,g,v,n[e+8],11,-2022574463),v=c(v,m,l,g,n[e+11],16,1839030562),g=c(g,v,m,l,n[e+14],23,-35309556),l=c(l,g,v,m,n[e+1],4,-1530992060),m=c(m,l,g,v,n[e+4],11,1272893353),v=c(v,m,l,g,n[e+7],16,-155497632),g=c(g,v,m,l,n[e+10],23,-1094730640),l=c(l,g,v,m,n[e+13],4,681279174),m=c(m,l,g,v,n[e],11,-358537222),v=c(v,m,l,g,n[e+3],16,-722521979),g=c(g,v,m,l,n[e+6],23,76029189),l=c(l,g,v,m,n[e+9],4,-640364487),m=c(m,l,g,v,n[e+12],11,-421815835),v=c(v,m,l,g,n[e+15],16,530742520),g=c(g,v,m,l,n[e+2],23,-995338651),l=f(l,g,v,m,n[e],6,-198630844),m=f(m,l,g,v,n[e+7],10,1126891415),v=f(v,m,l,g,n[e+14],15,-1416354905),g=f(g,v,m,l,n[e+5],21,-57434055),l=f(l,g,v,m,n[e+12],6,1700485571),m=f(m,l,g,v,n[e+3],10,-1894986606),v=f(v,m,l,g,n[e+10],15,-1051523),g=f(g,v,m,l,n[e+1],21,-2054922799),l=f(l,g,v,m,n[e+8],6,1873313359),m=f(m,l,g,v,n[e+15],10,-30611744),v=f(v,m,l,g,n[e+6],15,-1560198380),g=f(g,v,m,l,n[e+13],21,1309151649),l=f(l,g,v,m,n[e+4],6,-145523070),m=f(m,l,g,v,n[e+11],10,-1120210379),v=f(v,m,l,g,n[e+2],15,718787259),g=f(g,v,m,l,n[e+9],21,-343485551),l=t(l,i),g=t(g,a),v=t(v,h),m=t(m,d);return[l,g,v,m]}function a(n){var t,r="",e=32*n.length;for(t=0;t<e;t+=8)r+=String.fromCharCode(n[t>>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;var e=8*n.length;for(t=0;t<e;t+=8)r[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return r}function d(n){return a(i(h(n),8*n.length))}function l(n,t){var r,e,o=h(n),u=[],c=[];for(u[15]=c[15]=void 0,o.length>16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="0123456789abcdef",o="";for(r=0;r<n.length;r+=1)t=n.charCodeAt(r),o+=e.charAt(t>>>4&15)+e.charAt(15&t);return o}function v(n){return unescape(encodeURIComponent(n))}function m(n){return d(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this);
|
||
//# sourceMappingURL=md5.min.js.map
|
||
/* ========================================================================
|
||
* Bootstrap: tooltip.js v3.3.6
|
||
* http://getbootstrap.com/javascript/#tooltip
|
||
* Inspired by the original jQuery.tipsy by Jason Frame
|
||
* ========================================================================
|
||
* Copyright 2011-2015 Twitter, Inc.
|
||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||
* ======================================================================== */
|
||
|
||
|
||
+function ($) {
|
||
'use strict';
|
||
|
||
// TOOLTIP PUBLIC CLASS DEFINITION
|
||
// ===============================
|
||
|
||
var Tooltip = function (element, options) {
|
||
this.type = null
|
||
this.options = null
|
||
this.enabled = null
|
||
this.timeout = null
|
||
this.hoverState = null
|
||
this.$element = null
|
||
this.inState = null
|
||
|
||
this.init('tooltip', element, options)
|
||
}
|
||
|
||
Tooltip.VERSION = '3.3.6'
|
||
|
||
Tooltip.TRANSITION_DURATION = 150
|
||
|
||
Tooltip.DEFAULTS = {
|
||
animation: true,
|
||
placement: 'top',
|
||
selector: false,
|
||
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
|
||
trigger: 'hover focus',
|
||
title: '',
|
||
delay: 0,
|
||
html: false,
|
||
container: false,
|
||
viewport: {
|
||
selector: 'body',
|
||
padding: 0
|
||
}
|
||
}
|
||
|
||
Tooltip.prototype.init = function (type, element, options) {
|
||
this.enabled = true
|
||
this.type = type
|
||
this.$element = $(element)
|
||
this.options = this.getOptions(options)
|
||
this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
|
||
this.inState = { click: false, hover: false, focus: false }
|
||
|
||
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
|
||
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
|
||
}
|
||
|
||
var triggers = this.options.trigger.split(' ')
|
||
|
||
for (var i = triggers.length; i--;) {
|
||
var trigger = triggers[i]
|
||
|
||
if (trigger == 'click') {
|
||
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
|
||
} else if (trigger != 'manual') {
|
||
var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
|
||
var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
|
||
|
||
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
|
||
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
|
||
}
|
||
}
|
||
|
||
this.options.selector ?
|
||
(this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
|
||
this.fixTitle()
|
||
}
|
||
|
||
Tooltip.prototype.getDefaults = function () {
|
||
return Tooltip.DEFAULTS
|
||
}
|
||
|
||
Tooltip.prototype.getOptions = function (options) {
|
||
options = $.extend({}, this.getDefaults(), this.$element.data(), options)
|
||
|
||
if (options.delay && typeof options.delay == 'number') {
|
||
options.delay = {
|
||
show: options.delay,
|
||
hide: options.delay
|
||
}
|
||
}
|
||
|
||
return options
|
||
}
|
||
|
||
Tooltip.prototype.getDelegateOptions = function () {
|
||
var options = {}
|
||
var defaults = this.getDefaults()
|
||
|
||
this._options && $.each(this._options, function (key, value) {
|
||
if (defaults[key] != value) options[key] = value
|
||
})
|
||
|
||
return options
|
||
}
|
||
|
||
Tooltip.prototype.enter = function (obj) {
|
||
var self = obj instanceof this.constructor ?
|
||
obj : $(obj.currentTarget).data('bs.' + this.type)
|
||
|
||
if (!self) {
|
||
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
|
||
$(obj.currentTarget).data('bs.' + this.type, self)
|
||
}
|
||
|
||
if (obj instanceof $.Event) {
|
||
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
|
||
}
|
||
|
||
if (self.tip().hasClass('in') || self.hoverState == 'in') {
|
||
self.hoverState = 'in'
|
||
return
|
||
}
|
||
|
||
clearTimeout(self.timeout)
|
||
|
||
self.hoverState = 'in'
|
||
|
||
if (!self.options.delay || !self.options.delay.show) return self.show()
|
||
|
||
self.timeout = setTimeout(function () {
|
||
if (self.hoverState == 'in') self.show()
|
||
}, self.options.delay.show)
|
||
}
|
||
|
||
Tooltip.prototype.isInStateTrue = function () {
|
||
for (var key in this.inState) {
|
||
if (this.inState[key]) return true
|
||
}
|
||
|
||
return false
|
||
}
|
||
|
||
Tooltip.prototype.leave = function (obj) {
|
||
var self = obj instanceof this.constructor ?
|
||
obj : $(obj.currentTarget).data('bs.' + this.type)
|
||
|
||
if (!self) {
|
||
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
|
||
$(obj.currentTarget).data('bs.' + this.type, self)
|
||
}
|
||
|
||
if (obj instanceof $.Event) {
|
||
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
|
||
}
|
||
|
||
if (self.isInStateTrue()) return
|
||
|
||
clearTimeout(self.timeout)
|
||
|
||
self.hoverState = 'out'
|
||
|
||
if (!self.options.delay || !self.options.delay.hide) return self.hide()
|
||
|
||
self.timeout = setTimeout(function () {
|
||
if (self.hoverState == 'out') self.hide()
|
||
}, self.options.delay.hide)
|
||
}
|
||
|
||
Tooltip.prototype.show = function () {
|
||
var e = $.Event('show.bs.' + this.type)
|
||
|
||
if (this.hasContent() && this.enabled) {
|
||
this.$element.trigger(e)
|
||
|
||
var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
|
||
if (e.isDefaultPrevented() || !inDom) return
|
||
var that = this
|
||
|
||
var $tip = this.tip()
|
||
|
||
var tipId = this.getUID(this.type)
|
||
|
||
this.setContent()
|
||
$tip.attr('id', tipId)
|
||
this.$element.attr('aria-describedby', tipId)
|
||
|
||
if (this.options.animation) $tip.addClass('fade')
|
||
|
||
var placement = typeof this.options.placement == 'function' ?
|
||
this.options.placement.call(this, $tip[0], this.$element[0]) :
|
||
this.options.placement
|
||
|
||
var autoToken = /\s?auto?\s?/i
|
||
var autoPlace = autoToken.test(placement)
|
||
if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
|
||
|
||
$tip
|
||
.detach()
|
||
.css({ top: 0, left: 0, display: 'block' })
|
||
.addClass(placement)
|
||
.data('bs.' + this.type, this)
|
||
|
||
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
|
||
this.$element.trigger('inserted.bs.' + this.type)
|
||
|
||
var pos = this.getPosition()
|
||
var actualWidth = $tip[0].offsetWidth
|
||
var actualHeight = $tip[0].offsetHeight
|
||
|
||
if (autoPlace) {
|
||
var orgPlacement = placement
|
||
var viewportDim = this.getPosition(this.$viewport)
|
||
|
||
placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
|
||
placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
|
||
placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
|
||
placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
|
||
placement
|
||
|
||
$tip
|
||
.removeClass(orgPlacement)
|
||
.addClass(placement)
|
||
}
|
||
|
||
var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
|
||
|
||
this.applyPlacement(calculatedOffset, placement)
|
||
|
||
var complete = function () {
|
||
var prevHoverState = that.hoverState
|
||
that.$element.trigger('shown.bs.' + that.type)
|
||
that.hoverState = null
|
||
|
||
if (prevHoverState == 'out') that.leave(that)
|
||
}
|
||
|
||
$.support.transition && this.$tip.hasClass('fade') ?
|
||
$tip
|
||
.one('bsTransitionEnd', complete)
|
||
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
|
||
complete()
|
||
}
|
||
}
|
||
|
||
Tooltip.prototype.applyPlacement = function (offset, placement) {
|
||
var $tip = this.tip()
|
||
var width = $tip[0].offsetWidth
|
||
var height = $tip[0].offsetHeight
|
||
|
||
// manually read margins because getBoundingClientRect includes difference
|
||
var marginTop = parseInt($tip.css('margin-top'), 10)
|
||
var marginLeft = parseInt($tip.css('margin-left'), 10)
|
||
|
||
// we must check for NaN for ie 8/9
|
||
if (isNaN(marginTop)) marginTop = 0
|
||
if (isNaN(marginLeft)) marginLeft = 0
|
||
|
||
offset.top += marginTop
|
||
offset.left += marginLeft
|
||
|
||
// $.fn.offset doesn't round pixel values
|
||
// so we use setOffset directly with our own function B-0
|
||
$.offset.setOffset($tip[0], $.extend({
|
||
using: function (props) {
|
||
$tip.css({
|
||
top: Math.round(props.top),
|
||
left: Math.round(props.left)
|
||
})
|
||
}
|
||
}, offset), 0)
|
||
|
||
$tip.addClass('in')
|
||
|
||
// check to see if placing tip in new offset caused the tip to resize itself
|
||
var actualWidth = $tip[0].offsetWidth
|
||
var actualHeight = $tip[0].offsetHeight
|
||
|
||
if (placement == 'top' && actualHeight != height) {
|
||
offset.top = offset.top + height - actualHeight
|
||
}
|
||
|
||
var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
|
||
|
||
if (delta.left) offset.left += delta.left
|
||
else offset.top += delta.top
|
||
|
||
var isVertical = /top|bottom/.test(placement)
|
||
var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
|
||
var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
|
||
|
||
$tip.offset(offset)
|
||
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
|
||
}
|
||
|
||
Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
|
||
this.arrow()
|
||
.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
|
||
.css(isVertical ? 'top' : 'left', '')
|
||
}
|
||
|
||
Tooltip.prototype.setContent = function () {
|
||
var $tip = this.tip()
|
||
var title = this.getTitle()
|
||
|
||
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
|
||
$tip.removeClass('fade in top bottom left right')
|
||
}
|
||
|
||
Tooltip.prototype.hide = function (callback) {
|
||
var that = this
|
||
var $tip = $(this.$tip)
|
||
var e = $.Event('hide.bs.' + this.type)
|
||
|
||
function complete() {
|
||
if (that.hoverState != 'in') $tip.detach()
|
||
that.$element
|
||
.removeAttr('aria-describedby')
|
||
.trigger('hidden.bs.' + that.type)
|
||
callback && callback()
|
||
}
|
||
|
||
this.$element.trigger(e)
|
||
|
||
if (e.isDefaultPrevented()) return
|
||
|
||
$tip.removeClass('in')
|
||
|
||
$.support.transition && $tip.hasClass('fade') ?
|
||
$tip
|
||
.one('bsTransitionEnd', complete)
|
||
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
|
||
complete()
|
||
|
||
this.hoverState = null
|
||
|
||
return this
|
||
}
|
||
|
||
Tooltip.prototype.fixTitle = function () {
|
||
var $e = this.$element
|
||
if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
|
||
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
|
||
}
|
||
}
|
||
|
||
Tooltip.prototype.hasContent = function () {
|
||
return this.getTitle()
|
||
}
|
||
|
||
Tooltip.prototype.getPosition = function ($element) {
|
||
$element = $element || this.$element
|
||
|
||
var el = $element[0]
|
||
var isBody = el.tagName == 'BODY'
|
||
|
||
var elRect = el.getBoundingClientRect()
|
||
if (elRect.width == null) {
|
||
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
|
||
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
|
||
}
|
||
var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
|
||
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
|
||
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
|
||
|
||
return $.extend({}, elRect, scroll, outerDims, elOffset)
|
||
}
|
||
|
||
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
|
||
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
|
||
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
|
||
placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
|
||
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
|
||
|
||
}
|
||
|
||
Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
|
||
var delta = { top: 0, left: 0 }
|
||
if (!this.$viewport) return delta
|
||
|
||
var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
|
||
var viewportDimensions = this.getPosition(this.$viewport)
|
||
|
||
if (/right|left/.test(placement)) {
|
||
var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
|
||
var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
|
||
if (topEdgeOffset < viewportDimensions.top) { // top overflow
|
||
delta.top = viewportDimensions.top - topEdgeOffset
|
||
} else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
|
||
delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
|
||
}
|
||
} else {
|
||
var leftEdgeOffset = pos.left - viewportPadding
|
||
var rightEdgeOffset = pos.left + viewportPadding + actualWidth
|
||
if (leftEdgeOffset < viewportDimensions.left) { // left overflow
|
||
delta.left = viewportDimensions.left - leftEdgeOffset
|
||
} else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
|
||
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
|
||
}
|
||
}
|
||
|
||
return delta
|
||
}
|
||
|
||
Tooltip.prototype.getTitle = function () {
|
||
var title
|
||
var $e = this.$element
|
||
var o = this.options
|
||
|
||
title = $e.attr('data-original-title')
|
||
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
|
||
|
||
return title
|
||
}
|
||
|
||
Tooltip.prototype.getUID = function (prefix) {
|
||
do prefix += ~~(Math.random() * 1000000)
|
||
while (document.getElementById(prefix))
|
||
return prefix
|
||
}
|
||
|
||
Tooltip.prototype.tip = function () {
|
||
if (!this.$tip) {
|
||
this.$tip = $(this.options.template)
|
||
if (this.$tip.length != 1) {
|
||
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
|
||
}
|
||
}
|
||
return this.$tip
|
||
}
|
||
|
||
Tooltip.prototype.arrow = function () {
|
||
return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
|
||
}
|
||
|
||
Tooltip.prototype.enable = function () {
|
||
this.enabled = true
|
||
}
|
||
|
||
Tooltip.prototype.disable = function () {
|
||
this.enabled = false
|
||
}
|
||
|
||
Tooltip.prototype.toggleEnabled = function () {
|
||
this.enabled = !this.enabled
|
||
}
|
||
|
||
Tooltip.prototype.toggle = function (e) {
|
||
var self = this
|
||
if (e) {
|
||
self = $(e.currentTarget).data('bs.' + this.type)
|
||
if (!self) {
|
||
self = new this.constructor(e.currentTarget, this.getDelegateOptions())
|
||
$(e.currentTarget).data('bs.' + this.type, self)
|
||
}
|
||
}
|
||
|
||
if (e) {
|
||
self.inState.click = !self.inState.click
|
||
if (self.isInStateTrue()) self.enter(self)
|
||
else self.leave(self)
|
||
} else {
|
||
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
|
||
}
|
||
}
|
||
|
||
Tooltip.prototype.destroy = function () {
|
||
var that = this
|
||
clearTimeout(this.timeout)
|
||
this.hide(function () {
|
||
that.$element.off('.' + that.type).removeData('bs.' + that.type)
|
||
if (that.$tip) {
|
||
that.$tip.detach()
|
||
}
|
||
that.$tip = null
|
||
that.$arrow = null
|
||
that.$viewport = null
|
||
})
|
||
}
|
||
|
||
|
||
// TOOLTIP PLUGIN DEFINITION
|
||
// =========================
|
||
|
||
function Plugin(option) {
|
||
return this.each(function () {
|
||
var $this = $(this)
|
||
var data = $this.data('bs.tooltip')
|
||
var options = typeof option == 'object' && option
|
||
|
||
if (!data && /destroy|hide/.test(option)) return
|
||
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
|
||
if (typeof option == 'string') data[option]()
|
||
})
|
||
}
|
||
|
||
var old = $.fn.tooltip
|
||
|
||
$.fn.tooltip = Plugin
|
||
$.fn.tooltip.Constructor = Tooltip
|
||
|
||
|
||
// TOOLTIP NO CONFLICT
|
||
// ===================
|
||
|
||
$.fn.tooltip.noConflict = function () {
|
||
$.fn.tooltip = old
|
||
return this
|
||
}
|
||
|
||
}(jQuery);
|
||
|
||
// Backbone.js 1.2.3
|
||
|
||
// (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||
// Backbone may be freely distributed under the MIT license.
|
||
// For all details and documentation:
|
||
// http://backbonejs.org
|
||
|
||
(function(factory) {
|
||
|
||
// Establish the root object, `window` (`self`) in the browser, or `global` on the server.
|
||
// We use `self` instead of `window` for `WebWorker` support.
|
||
var root = (typeof self == 'object' && self.self == self && self) ||
|
||
(typeof global == 'object' && global.global == global && global);
|
||
|
||
// Set up Backbone appropriately for the environment. Start with AMD.
|
||
if (typeof define === 'function' && define.amd) {
|
||
define(['underscore', 'jquery', 'exports'], function(_, $, exports) {
|
||
// Export global even in AMD case in case this script is loaded with
|
||
// others that may still expect a global Backbone.
|
||
root.Backbone = factory(root, exports, _, $);
|
||
});
|
||
|
||
// Next for Node.js or CommonJS. jQuery may not be needed as a module.
|
||
} else if (typeof exports !== 'undefined') {
|
||
var _ = require('underscore'), $;
|
||
try { $ = require('jquery'); } catch(e) {}
|
||
factory(root, exports, _, $);
|
||
|
||
// Finally, as a browser global.
|
||
} else {
|
||
root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));
|
||
}
|
||
|
||
}(function(root, Backbone, _, $) {
|
||
|
||
// Initial Setup
|
||
// -------------
|
||
|
||
// Save the previous value of the `Backbone` variable, so that it can be
|
||
// restored later on, if `noConflict` is used.
|
||
var previousBackbone = root.Backbone;
|
||
|
||
// Create a local reference to a common array method we'll want to use later.
|
||
var slice = Array.prototype.slice;
|
||
|
||
// Current version of the library. Keep in sync with `package.json`.
|
||
Backbone.VERSION = '1.2.3';
|
||
|
||
// For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns
|
||
// the `$` variable.
|
||
Backbone.$ = $;
|
||
|
||
// Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable
|
||
// to its previous owner. Returns a reference to this Backbone object.
|
||
Backbone.noConflict = function() {
|
||
root.Backbone = previousBackbone;
|
||
return this;
|
||
};
|
||
|
||
// Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option
|
||
// will fake `"PATCH"`, `"PUT"` and `"DELETE"` requests via the `_method` parameter and
|
||
// set a `X-Http-Method-Override` header.
|
||
Backbone.emulateHTTP = false;
|
||
|
||
// Turn on `emulateJSON` to support legacy servers that can't deal with direct
|
||
// `application/json` requests ... this will encode the body as
|
||
// `application/x-www-form-urlencoded` instead and will send the model in a
|
||
// form param named `model`.
|
||
Backbone.emulateJSON = false;
|
||
|
||
// Proxy Backbone class methods to Underscore functions, wrapping the model's
|
||
// `attributes` object or collection's `models` array behind the scenes.
|
||
//
|
||
// collection.filter(function(model) { return model.get('age') > 10 });
|
||
// collection.each(this.addView);
|
||
//
|
||
// `Function#apply` can be slow so we use the method's arg count, if we know it.
|
||
var addMethod = function(length, method, attribute) {
|
||
switch (length) {
|
||
case 1: return function() {
|
||
return _[method](this[attribute]);
|
||
};
|
||
case 2: return function(value) {
|
||
return _[method](this[attribute], value);
|
||
};
|
||
case 3: return function(iteratee, context) {
|
||
return _[method](this[attribute], cb(iteratee, this), context);
|
||
};
|
||
case 4: return function(iteratee, defaultVal, context) {
|
||
return _[method](this[attribute], cb(iteratee, this), defaultVal, context);
|
||
};
|
||
default: return function() {
|
||
var args = slice.call(arguments);
|
||
args.unshift(this[attribute]);
|
||
return _[method].apply(_, args);
|
||
};
|
||
}
|
||
};
|
||
var addUnderscoreMethods = function(Class, methods, attribute) {
|
||
_.each(methods, function(length, method) {
|
||
if (_[method]) Class.prototype[method] = addMethod(length, method, attribute);
|
||
});
|
||
};
|
||
|
||
// Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.
|
||
var cb = function(iteratee, instance) {
|
||
if (_.isFunction(iteratee)) return iteratee;
|
||
if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);
|
||
if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };
|
||
return iteratee;
|
||
};
|
||
var modelMatcher = function(attrs) {
|
||
var matcher = _.matches(attrs);
|
||
return function(model) {
|
||
return matcher(model.attributes);
|
||
};
|
||
};
|
||
|
||
// Backbone.Events
|
||
// ---------------
|
||
|
||
// A module that can be mixed in to *any object* in order to provide it with
|
||
// a custom event channel. You may bind a callback to an event with `on` or
|
||
// remove with `off`; `trigger`-ing an event fires all callbacks in
|
||
// succession.
|
||
//
|
||
// var object = {};
|
||
// _.extend(object, Backbone.Events);
|
||
// object.on('expand', function(){ alert('expanded'); });
|
||
// object.trigger('expand');
|
||
//
|
||
var Events = Backbone.Events = {};
|
||
|
||
// Regular expression used to split event strings.
|
||
var eventSplitter = /\s+/;
|
||
|
||
// Iterates over the standard `event, callback` (as well as the fancy multiple
|
||
// space-separated events `"change blur", callback` and jQuery-style event
|
||
// maps `{event: callback}`).
|
||
var eventsApi = function(iteratee, events, name, callback, opts) {
|
||
var i = 0, names;
|
||
if (name && typeof name === 'object') {
|
||
// Handle event maps.
|
||
if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;
|
||
for (names = _.keys(name); i < names.length ; i++) {
|
||
events = eventsApi(iteratee, events, names[i], name[names[i]], opts);
|
||
}
|
||
} else if (name && eventSplitter.test(name)) {
|
||
// Handle space separated event names by delegating them individually.
|
||
for (names = name.split(eventSplitter); i < names.length; i++) {
|
||
events = iteratee(events, names[i], callback, opts);
|
||
}
|
||
} else {
|
||
// Finally, standard events.
|
||
events = iteratee(events, name, callback, opts);
|
||
}
|
||
return events;
|
||
};
|
||
|
||
// Bind an event to a `callback` function. Passing `"all"` will bind
|
||
// the callback to all events fired.
|
||
Events.on = function(name, callback, context) {
|
||
return internalOn(this, name, callback, context);
|
||
};
|
||
|
||
// Guard the `listening` argument from the public API.
|
||
var internalOn = function(obj, name, callback, context, listening) {
|
||
obj._events = eventsApi(onApi, obj._events || {}, name, callback, {
|
||
context: context,
|
||
ctx: obj,
|
||
listening: listening
|
||
});
|
||
|
||
if (listening) {
|
||
var listeners = obj._listeners || (obj._listeners = {});
|
||
listeners[listening.id] = listening;
|
||
}
|
||
|
||
return obj;
|
||
};
|
||
|
||
// Inversion-of-control versions of `on`. Tell *this* object to listen to
|
||
// an event in another object... keeping track of what it's listening to
|
||
// for easier unbinding later.
|
||
Events.listenTo = function(obj, name, callback) {
|
||
if (!obj) return this;
|
||
var id = obj._listenId || (obj._listenId = _.uniqueId('l'));
|
||
var listeningTo = this._listeningTo || (this._listeningTo = {});
|
||
var listening = listeningTo[id];
|
||
|
||
// This object is not listening to any other events on `obj` yet.
|
||
// Setup the necessary references to track the listening callbacks.
|
||
if (!listening) {
|
||
var thisId = this._listenId || (this._listenId = _.uniqueId('l'));
|
||
listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};
|
||
}
|
||
|
||
// Bind callbacks on obj, and keep track of them on listening.
|
||
internalOn(obj, name, callback, this, listening);
|
||
return this;
|
||
};
|
||
|
||
// The reducing API that adds a callback to the `events` object.
|
||
var onApi = function(events, name, callback, options) {
|
||
if (callback) {
|
||
var handlers = events[name] || (events[name] = []);
|
||
var context = options.context, ctx = options.ctx, listening = options.listening;
|
||
if (listening) listening.count++;
|
||
|
||
handlers.push({ callback: callback, context: context, ctx: context || ctx, listening: listening });
|
||
}
|
||
return events;
|
||
};
|
||
|
||
// Remove one or many callbacks. If `context` is null, removes all
|
||
// callbacks with that function. If `callback` is null, removes all
|
||
// callbacks for the event. If `name` is null, removes all bound
|
||
// callbacks for all events.
|
||
Events.off = function(name, callback, context) {
|
||
if (!this._events) return this;
|
||
this._events = eventsApi(offApi, this._events, name, callback, {
|
||
context: context,
|
||
listeners: this._listeners
|
||
});
|
||
return this;
|
||
};
|
||
|
||
// Tell this object to stop listening to either specific events ... or
|
||
// to every object it's currently listening to.
|
||
Events.stopListening = function(obj, name, callback) {
|
||
var listeningTo = this._listeningTo;
|
||
if (!listeningTo) return this;
|
||
|
||
var ids = obj ? [obj._listenId] : _.keys(listeningTo);
|
||
|
||
for (var i = 0; i < ids.length; i++) {
|
||
var listening = listeningTo[ids[i]];
|
||
|
||
// If listening doesn't exist, this object is not currently
|
||
// listening to obj. Break out early.
|
||
if (!listening) break;
|
||
|
||
listening.obj.off(name, callback, this);
|
||
}
|
||
if (_.isEmpty(listeningTo)) this._listeningTo = void 0;
|
||
|
||
return this;
|
||
};
|
||
|
||
// The reducing API that removes a callback from the `events` object.
|
||
var offApi = function(events, name, callback, options) {
|
||
if (!events) return;
|
||
|
||
var i = 0, listening;
|
||
var context = options.context, listeners = options.listeners;
|
||
|
||
// Delete all events listeners and "drop" events.
|
||
if (!name && !callback && !context) {
|
||
var ids = _.keys(listeners);
|
||
for (; i < ids.length; i++) {
|
||
listening = listeners[ids[i]];
|
||
delete listeners[listening.id];
|
||
delete listening.listeningTo[listening.objId];
|
||
}
|
||
return;
|
||
}
|
||
|
||
var names = name ? [name] : _.keys(events);
|
||
for (; i < names.length; i++) {
|
||
name = names[i];
|
||
var handlers = events[name];
|
||
|
||
// Bail out if there are no events stored.
|
||
if (!handlers) break;
|
||
|
||
// Replace events if there are any remaining. Otherwise, clean up.
|
||
var remaining = [];
|
||
for (var j = 0; j < handlers.length; j++) {
|
||
var handler = handlers[j];
|
||
if (
|
||
callback && callback !== handler.callback &&
|
||
callback !== handler.callback._callback ||
|
||
context && context !== handler.context
|
||
) {
|
||
remaining.push(handler);
|
||
} else {
|
||
listening = handler.listening;
|
||
if (listening && --listening.count === 0) {
|
||
delete listeners[listening.id];
|
||
delete listening.listeningTo[listening.objId];
|
||
}
|
||
}
|
||
}
|
||
|
||
// Update tail event if the list has any events. Otherwise, clean up.
|
||
if (remaining.length) {
|
||
events[name] = remaining;
|
||
} else {
|
||
delete events[name];
|
||
}
|
||
}
|
||
if (_.size(events)) return events;
|
||
};
|
||
|
||
// Bind an event to only be triggered a single time. After the first time
|
||
// the callback is invoked, its listener will be removed. If multiple events
|
||
// are passed in using the space-separated syntax, the handler will fire
|
||
// once for each event, not once for a combination of all events.
|
||
Events.once = function(name, callback, context) {
|
||
// Map the event into a `{event: once}` object.
|
||
var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));
|
||
return this.on(events, void 0, context);
|
||
};
|
||
|
||
// Inversion-of-control versions of `once`.
|
||
Events.listenToOnce = function(obj, name, callback) {
|
||
// Map the event into a `{event: once}` object.
|
||
var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));
|
||
return this.listenTo(obj, events);
|
||
};
|
||
|
||
// Reduces the event callbacks into a map of `{event: onceWrapper}`.
|
||
// `offer` unbinds the `onceWrapper` after it has been called.
|
||
var onceMap = function(map, name, callback, offer) {
|
||
if (callback) {
|
||
var once = map[name] = _.once(function() {
|
||
offer(name, once);
|
||
callback.apply(this, arguments);
|
||
});
|
||
once._callback = callback;
|
||
}
|
||
return map;
|
||
};
|
||
|
||
// Trigger one or many events, firing all bound callbacks. Callbacks are
|
||
// passed the same arguments as `trigger` is, apart from the event name
|
||
// (unless you're listening on `"all"`, which will cause your callback to
|
||
// receive the true name of the event as the first argument).
|
||
Events.trigger = function(name) {
|
||
if (!this._events) return this;
|
||
|
||
var length = Math.max(0, arguments.length - 1);
|
||
var args = Array(length);
|
||
for (var i = 0; i < length; i++) args[i] = arguments[i + 1];
|
||
|
||
eventsApi(triggerApi, this._events, name, void 0, args);
|
||
return this;
|
||
};
|
||
|
||
// Handles triggering the appropriate event callbacks.
|
||
var triggerApi = function(objEvents, name, cb, args) {
|
||
if (objEvents) {
|
||
var events = objEvents[name];
|
||
var allEvents = objEvents.all;
|
||
if (events && allEvents) allEvents = allEvents.slice();
|
||
if (events) triggerEvents(events, args);
|
||
if (allEvents) triggerEvents(allEvents, [name].concat(args));
|
||
}
|
||
return objEvents;
|
||
};
|
||
|
||
// A difficult-to-believe, but optimized internal dispatch function for
|
||
// triggering events. Tries to keep the usual cases speedy (most internal
|
||
// Backbone events have 3 arguments).
|
||
var triggerEvents = function(events, args) {
|
||
var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];
|
||
switch (args.length) {
|
||
case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;
|
||
case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;
|
||
case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;
|
||
case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;
|
||
default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;
|
||
}
|
||
};
|
||
|
||
// Aliases for backwards compatibility.
|
||
Events.bind = Events.on;
|
||
Events.unbind = Events.off;
|
||
|
||
// Allow the `Backbone` object to serve as a global event bus, for folks who
|
||
// want global "pubsub" in a convenient place.
|
||
_.extend(Backbone, Events);
|
||
|
||
// Backbone.Model
|
||
// --------------
|
||
|
||
// Backbone **Models** are the basic data object in the framework --
|
||
// frequently representing a row in a table in a database on your server.
|
||
// A discrete chunk of data and a bunch of useful, related methods for
|
||
// performing computations and transformations on that data.
|
||
|
||
// Create a new model with the specified attributes. A client id (`cid`)
|
||
// is automatically generated and assigned for you.
|
||
var Model = Backbone.Model = function(attributes, options) {
|
||
var attrs = attributes || {};
|
||
options || (options = {});
|
||
this.cid = _.uniqueId(this.cidPrefix);
|
||
this.attributes = {};
|
||
if (options.collection) this.collection = options.collection;
|
||
if (options.parse) attrs = this.parse(attrs, options) || {};
|
||
attrs = _.defaults({}, attrs, _.result(this, 'defaults'));
|
||
this.set(attrs, options);
|
||
this.changed = {};
|
||
this.initialize.apply(this, arguments);
|
||
};
|
||
|
||
// Attach all inheritable methods to the Model prototype.
|
||
_.extend(Model.prototype, Events, {
|
||
|
||
// A hash of attributes whose current and previous value differ.
|
||
changed: null,
|
||
|
||
// The value returned during the last failed validation.
|
||
validationError: null,
|
||
|
||
// The default name for the JSON `id` attribute is `"id"`. MongoDB and
|
||
// CouchDB users may want to set this to `"_id"`.
|
||
idAttribute: 'id',
|
||
|
||
// The prefix is used to create the client id which is used to identify models locally.
|
||
// You may want to override this if you're experiencing name clashes with model ids.
|
||
cidPrefix: 'c',
|
||
|
||
// Initialize is an empty function by default. Override it with your own
|
||
// initialization logic.
|
||
initialize: function(){},
|
||
|
||
// Return a copy of the model's `attributes` object.
|
||
toJSON: function(options) {
|
||
return _.clone(this.attributes);
|
||
},
|
||
|
||
// Proxy `Backbone.sync` by default -- but override this if you need
|
||
// custom syncing semantics for *this* particular model.
|
||
sync: function() {
|
||
return Backbone.sync.apply(this, arguments);
|
||
},
|
||
|
||
// Get the value of an attribute.
|
||
get: function(attr) {
|
||
return this.attributes[attr];
|
||
},
|
||
|
||
// Get the HTML-escaped value of an attribute.
|
||
escape: function(attr) {
|
||
return _.escape(this.get(attr));
|
||
},
|
||
|
||
// Returns `true` if the attribute contains a value that is not null
|
||
// or undefined.
|
||
has: function(attr) {
|
||
return this.get(attr) != null;
|
||
},
|
||
|
||
// Special-cased proxy to underscore's `_.matches` method.
|
||
matches: function(attrs) {
|
||
return !!_.iteratee(attrs, this)(this.attributes);
|
||
},
|
||
|
||
// Set a hash of model attributes on the object, firing `"change"`. This is
|
||
// the core primitive operation of a model, updating the data and notifying
|
||
// anyone who needs to know about the change in state. The heart of the beast.
|
||
set: function(key, val, options) {
|
||
if (key == null) return this;
|
||
|
||
// Handle both `"key", value` and `{key: value}` -style arguments.
|
||
var attrs;
|
||
if (typeof key === 'object') {
|
||
attrs = key;
|
||
options = val;
|
||
} else {
|
||
(attrs = {})[key] = val;
|
||
}
|
||
|
||
options || (options = {});
|
||
|
||
// Run validation.
|
||
if (!this._validate(attrs, options)) return false;
|
||
|
||
// Extract attributes and options.
|
||
var unset = options.unset;
|
||
var silent = options.silent;
|
||
var changes = [];
|
||
var changing = this._changing;
|
||
this._changing = true;
|
||
|
||
if (!changing) {
|
||
this._previousAttributes = _.clone(this.attributes);
|
||
this.changed = {};
|
||
}
|
||
|
||
var current = this.attributes;
|
||
var changed = this.changed;
|
||
var prev = this._previousAttributes;
|
||
|
||
// For each `set` attribute, update or delete the current value.
|
||
for (var attr in attrs) {
|
||
val = attrs[attr];
|
||
if (!_.isEqual(current[attr], val)) changes.push(attr);
|
||
if (!_.isEqual(prev[attr], val)) {
|
||
changed[attr] = val;
|
||
} else {
|
||
delete changed[attr];
|
||
}
|
||
unset ? delete current[attr] : current[attr] = val;
|
||
}
|
||
|
||
// Update the `id`.
|
||
this.id = this.get(this.idAttribute);
|
||
|
||
// Trigger all relevant attribute changes.
|
||
if (!silent) {
|
||
if (changes.length) this._pending = options;
|
||
for (var i = 0; i < changes.length; i++) {
|
||
this.trigger('change:' + changes[i], this, current[changes[i]], options);
|
||
}
|
||
}
|
||
|
||
// You might be wondering why there's a `while` loop here. Changes can
|
||
// be recursively nested within `"change"` events.
|
||
if (changing) return this;
|
||
if (!silent) {
|
||
while (this._pending) {
|
||
options = this._pending;
|
||
this._pending = false;
|
||
this.trigger('change', this, options);
|
||
}
|
||
}
|
||
this._pending = false;
|
||
this._changing = false;
|
||
return this;
|
||
},
|
||
|
||
// Remove an attribute from the model, firing `"change"`. `unset` is a noop
|
||
// if the attribute doesn't exist.
|
||
unset: function(attr, options) {
|
||
return this.set(attr, void 0, _.extend({}, options, {unset: true}));
|
||
},
|
||
|
||
// Clear all attributes on the model, firing `"change"`.
|
||
clear: function(options) {
|
||
var attrs = {};
|
||
for (var key in this.attributes) attrs[key] = void 0;
|
||
return this.set(attrs, _.extend({}, options, {unset: true}));
|
||
},
|
||
|
||
// Determine if the model has changed since the last `"change"` event.
|
||
// If you specify an attribute name, determine if that attribute has changed.
|
||
hasChanged: function(attr) {
|
||
if (attr == null) return !_.isEmpty(this.changed);
|
||
return _.has(this.changed, attr);
|
||
},
|
||
|
||
// Return an object containing all the attributes that have changed, or
|
||
// false if there are no changed attributes. Useful for determining what
|
||
// parts of a view need to be updated and/or what attributes need to be
|
||
// persisted to the server. Unset attributes will be set to undefined.
|
||
// You can also pass an attributes object to diff against the model,
|
||
// determining if there *would be* a change.
|
||
changedAttributes: function(diff) {
|
||
if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;
|
||
var old = this._changing ? this._previousAttributes : this.attributes;
|
||
var changed = {};
|
||
for (var attr in diff) {
|
||
var val = diff[attr];
|
||
if (_.isEqual(old[attr], val)) continue;
|
||
changed[attr] = val;
|
||
}
|
||
return _.size(changed) ? changed : false;
|
||
},
|
||
|
||
// Get the previous value of an attribute, recorded at the time the last
|
||
// `"change"` event was fired.
|
||
previous: function(attr) {
|
||
if (attr == null || !this._previousAttributes) return null;
|
||
return this._previousAttributes[attr];
|
||
},
|
||
|
||
// Get all of the attributes of the model at the time of the previous
|
||
// `"change"` event.
|
||
previousAttributes: function() {
|
||
return _.clone(this._previousAttributes);
|
||
},
|
||
|
||
// Fetch the model from the server, merging the response with the model's
|
||
// local attributes. Any changed attributes will trigger a "change" event.
|
||
fetch: function(options) {
|
||
options = _.extend({parse: true}, options);
|
||
var model = this;
|
||
var success = options.success;
|
||
options.success = function(resp) {
|
||
var serverAttrs = options.parse ? model.parse(resp, options) : resp;
|
||
if (!model.set(serverAttrs, options)) return false;
|
||
if (success) success.call(options.context, model, resp, options);
|
||
model.trigger('sync', model, resp, options);
|
||
};
|
||
wrapError(this, options);
|
||
return this.sync('read', this, options);
|
||
},
|
||
|
||
// Set a hash of model attributes, and sync the model to the server.
|
||
// If the server returns an attributes hash that differs, the model's
|
||
// state will be `set` again.
|
||
save: function(key, val, options) {
|
||
// Handle both `"key", value` and `{key: value}` -style arguments.
|
||
var attrs;
|
||
if (key == null || typeof key === 'object') {
|
||
attrs = key;
|
||
options = val;
|
||
} else {
|
||
(attrs = {})[key] = val;
|
||
}
|
||
|
||
options = _.extend({validate: true, parse: true}, options);
|
||
var wait = options.wait;
|
||
|
||
// If we're not waiting and attributes exist, save acts as
|
||
// `set(attr).save(null, opts)` with validation. Otherwise, check if
|
||
// the model will be valid when the attributes, if any, are set.
|
||
if (attrs && !wait) {
|
||
if (!this.set(attrs, options)) return false;
|
||
} else {
|
||
if (!this._validate(attrs, options)) return false;
|
||
}
|
||
|
||
// After a successful server-side save, the client is (optionally)
|
||
// updated with the server-side state.
|
||
var model = this;
|
||
var success = options.success;
|
||
var attributes = this.attributes;
|
||
options.success = function(resp) {
|
||
// Ensure attributes are restored during synchronous saves.
|
||
model.attributes = attributes;
|
||
var serverAttrs = options.parse ? model.parse(resp, options) : resp;
|
||
if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);
|
||
if (serverAttrs && !model.set(serverAttrs, options)) return false;
|
||
if (success) success.call(options.context, model, resp, options);
|
||
model.trigger('sync', model, resp, options);
|
||
};
|
||
wrapError(this, options);
|
||
|
||
// Set temporary attributes if `{wait: true}` to properly find new ids.
|
||
if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);
|
||
|
||
var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');
|
||
if (method === 'patch' && !options.attrs) options.attrs = attrs;
|
||
var xhr = this.sync(method, this, options);
|
||
|
||
// Restore attributes.
|
||
this.attributes = attributes;
|
||
|
||
return xhr;
|
||
},
|
||
|
||
// Destroy this model on the server if it was already persisted.
|
||
// Optimistically removes the model from its collection, if it has one.
|
||
// If `wait: true` is passed, waits for the server to respond before removal.
|
||
destroy: function(options) {
|
||
options = options ? _.clone(options) : {};
|
||
var model = this;
|
||
var success = options.success;
|
||
var wait = options.wait;
|
||
|
||
var destroy = function() {
|
||
model.stopListening();
|
||
model.trigger('destroy', model, model.collection, options);
|
||
};
|
||
|
||
options.success = function(resp) {
|
||
if (wait) destroy();
|
||
if (success) success.call(options.context, model, resp, options);
|
||
if (!model.isNew()) model.trigger('sync', model, resp, options);
|
||
};
|
||
|
||
var xhr = false;
|
||
if (this.isNew()) {
|
||
_.defer(options.success);
|
||
} else {
|
||
wrapError(this, options);
|
||
xhr = this.sync('delete', this, options);
|
||
}
|
||
if (!wait) destroy();
|
||
return xhr;
|
||
},
|
||
|
||
// Default URL for the model's representation on the server -- if you're
|
||
// using Backbone's restful methods, override this to change the endpoint
|
||
// that will be called.
|
||
url: function() {
|
||
var base =
|
||
_.result(this, 'urlRoot') ||
|
||
_.result(this.collection, 'url') ||
|
||
urlError();
|
||
if (this.isNew()) return base;
|
||
var id = this.get(this.idAttribute);
|
||
return base.replace(/[^\/]$/, '$&/') + encodeURIComponent(id);
|
||
},
|
||
|
||
// **parse** converts a response into the hash of attributes to be `set` on
|
||
// the model. The default implementation is just to pass the response along.
|
||
parse: function(resp, options) {
|
||
return resp;
|
||
},
|
||
|
||
// Create a new model with identical attributes to this one.
|
||
clone: function() {
|
||
return new this.constructor(this.attributes);
|
||
},
|
||
|
||
// A model is new if it has never been saved to the server, and lacks an id.
|
||
isNew: function() {
|
||
return !this.has(this.idAttribute);
|
||
},
|
||
|
||
// Check if the model is currently in a valid state.
|
||
isValid: function(options) {
|
||
return this._validate({}, _.defaults({validate: true}, options));
|
||
},
|
||
|
||
// Run validation against the next complete set of model attributes,
|
||
// returning `true` if all is well. Otherwise, fire an `"invalid"` event.
|
||
_validate: function(attrs, options) {
|
||
if (!options.validate || !this.validate) return true;
|
||
attrs = _.extend({}, this.attributes, attrs);
|
||
var error = this.validationError = this.validate(attrs, options) || null;
|
||
if (!error) return true;
|
||
this.trigger('invalid', this, error, _.extend(options, {validationError: error}));
|
||
return false;
|
||
}
|
||
|
||
});
|
||
|
||
// Underscore methods that we want to implement on the Model, mapped to the
|
||
// number of arguments they take.
|
||
var modelMethods = { keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,
|
||
omit: 0, chain: 1, isEmpty: 1 };
|
||
|
||
// Mix in each Underscore method as a proxy to `Model#attributes`.
|
||
addUnderscoreMethods(Model, modelMethods, 'attributes');
|
||
|
||
// Backbone.Collection
|
||
// -------------------
|
||
|
||
// If models tend to represent a single row of data, a Backbone Collection is
|
||
// more analogous to a table full of data ... or a small slice or page of that
|
||
// table, or a collection of rows that belong together for a particular reason
|
||
// -- all of the messages in this particular folder, all of the documents
|
||
// belonging to this particular author, and so on. Collections maintain
|
||
// indexes of their models, both in order, and for lookup by `id`.
|
||
|
||
// Create a new **Collection**, perhaps to contain a specific type of `model`.
|
||
// If a `comparator` is specified, the Collection will maintain
|
||
// its models in sort order, as they're added and removed.
|
||
var Collection = Backbone.Collection = function(models, options) {
|
||
options || (options = {});
|
||
if (options.model) this.model = options.model;
|
||
if (options.comparator !== void 0) this.comparator = options.comparator;
|
||
this._reset();
|
||
this.initialize.apply(this, arguments);
|
||
if (models) this.reset(models, _.extend({silent: true}, options));
|
||
};
|
||
|
||
// Default options for `Collection#set`.
|
||
var setOptions = {add: true, remove: true, merge: true};
|
||
var addOptions = {add: true, remove: false};
|
||
|
||
// Splices `insert` into `array` at index `at`.
|
||
var splice = function(array, insert, at) {
|
||
at = Math.min(Math.max(at, 0), array.length);
|
||
var tail = Array(array.length - at);
|
||
var length = insert.length;
|
||
for (var i = 0; i < tail.length; i++) tail[i] = array[i + at];
|
||
for (i = 0; i < length; i++) array[i + at] = insert[i];
|
||
for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];
|
||
};
|
||
|
||
// Define the Collection's inheritable methods.
|
||
_.extend(Collection.prototype, Events, {
|
||
|
||
// The default model for a collection is just a **Backbone.Model**.
|
||
// This should be overridden in most cases.
|
||
model: Model,
|
||
|
||
// Initialize is an empty function by default. Override it with your own
|
||
// initialization logic.
|
||
initialize: function(){},
|
||
|
||
// The JSON representation of a Collection is an array of the
|
||
// models' attributes.
|
||
toJSON: function(options) {
|
||
return this.map(function(model) { return model.toJSON(options); });
|
||
},
|
||
|
||
// Proxy `Backbone.sync` by default.
|
||
sync: function() {
|
||
return Backbone.sync.apply(this, arguments);
|
||
},
|
||
|
||
// Add a model, or list of models to the set. `models` may be Backbone
|
||
// Models or raw JavaScript objects to be converted to Models, or any
|
||
// combination of the two.
|
||
add: function(models, options) {
|
||
return this.set(models, _.extend({merge: false}, options, addOptions));
|
||
},
|
||
|
||
// Remove a model, or a list of models from the set.
|
||
remove: function(models, options) {
|
||
options = _.extend({}, options);
|
||
var singular = !_.isArray(models);
|
||
models = singular ? [models] : _.clone(models);
|
||
var removed = this._removeModels(models, options);
|
||
if (!options.silent && removed) this.trigger('update', this, options);
|
||
return singular ? removed[0] : removed;
|
||
},
|
||
|
||
// Update a collection by `set`-ing a new list of models, adding new ones,
|
||
// removing models that are no longer present, and merging models that
|
||
// already exist in the collection, as necessary. Similar to **Model#set**,
|
||
// the core operation for updating the data contained by the collection.
|
||
set: function(models, options) {
|
||
if (models == null) return;
|
||
|
||
options = _.defaults({}, options, setOptions);
|
||
if (options.parse && !this._isModel(models)) models = this.parse(models, options);
|
||
|
||
var singular = !_.isArray(models);
|
||
models = singular ? [models] : models.slice();
|
||
|
||
var at = options.at;
|
||
if (at != null) at = +at;
|
||
if (at < 0) at += this.length + 1;
|
||
|
||
var set = [];
|
||
var toAdd = [];
|
||
var toRemove = [];
|
||
var modelMap = {};
|
||
|
||
var add = options.add;
|
||
var merge = options.merge;
|
||
var remove = options.remove;
|
||
|
||
var sort = false;
|
||
var sortable = this.comparator && (at == null) && options.sort !== false;
|
||
var sortAttr = _.isString(this.comparator) ? this.comparator : null;
|
||
|
||
// Turn bare objects into model references, and prevent invalid models
|
||
// from being added.
|
||
var model;
|
||
for (var i = 0; i < models.length; i++) {
|
||
model = models[i];
|
||
|
||
// If a duplicate is found, prevent it from being added and
|
||
// optionally merge it into the existing model.
|
||
var existing = this.get(model);
|
||
if (existing) {
|
||
if (merge && model !== existing) {
|
||
var attrs = this._isModel(model) ? model.attributes : model;
|
||
if (options.parse) attrs = existing.parse(attrs, options);
|
||
existing.set(attrs, options);
|
||
if (sortable && !sort) sort = existing.hasChanged(sortAttr);
|
||
}
|
||
if (!modelMap[existing.cid]) {
|
||
modelMap[existing.cid] = true;
|
||
set.push(existing);
|
||
}
|
||
models[i] = existing;
|
||
|
||
// If this is a new, valid model, push it to the `toAdd` list.
|
||
} else if (add) {
|
||
model = models[i] = this._prepareModel(model, options);
|
||
if (model) {
|
||
toAdd.push(model);
|
||
this._addReference(model, options);
|
||
modelMap[model.cid] = true;
|
||
set.push(model);
|
||
}
|
||
}
|
||
}
|
||
|
||
// Remove stale models.
|
||
if (remove) {
|
||
for (i = 0; i < this.length; i++) {
|
||
model = this.models[i];
|
||
if (!modelMap[model.cid]) toRemove.push(model);
|
||
}
|
||
if (toRemove.length) this._removeModels(toRemove, options);
|
||
}
|
||
|
||
// See if sorting is needed, update `length` and splice in new models.
|
||
var orderChanged = false;
|
||
var replace = !sortable && add && remove;
|
||
if (set.length && replace) {
|
||
orderChanged = this.length != set.length || _.some(this.models, function(model, index) {
|
||
return model !== set[index];
|
||
});
|
||
this.models.length = 0;
|
||
splice(this.models, set, 0);
|
||
this.length = this.models.length;
|
||
} else if (toAdd.length) {
|
||
if (sortable) sort = true;
|
||
splice(this.models, toAdd, at == null ? this.length : at);
|
||
this.length = this.models.length;
|
||
}
|
||
|
||
// Silently sort the collection if appropriate.
|
||
if (sort) this.sort({silent: true});
|
||
|
||
// Unless silenced, it's time to fire all appropriate add/sort events.
|
||
if (!options.silent) {
|
||
for (i = 0; i < toAdd.length; i++) {
|
||
if (at != null) options.index = at + i;
|
||
model = toAdd[i];
|
||
model.trigger('add', model, this, options);
|
||
}
|
||
if (sort || orderChanged) this.trigger('sort', this, options);
|
||
if (toAdd.length || toRemove.length) this.trigger('update', this, options);
|
||
}
|
||
|
||
// Return the added (or merged) model (or models).
|
||
return singular ? models[0] : models;
|
||
},
|
||
|
||
// When you have more items than you want to add or remove individually,
|
||
// you can reset the entire set with a new list of models, without firing
|
||
// any granular `add` or `remove` events. Fires `reset` when finished.
|
||
// Useful for bulk operations and optimizations.
|
||
reset: function(models, options) {
|
||
options = options ? _.clone(options) : {};
|
||
for (var i = 0; i < this.models.length; i++) {
|
||
this._removeReference(this.models[i], options);
|
||
}
|
||
options.previousModels = this.models;
|
||
this._reset();
|
||
models = this.add(models, _.extend({silent: true}, options));
|
||
if (!options.silent) this.trigger('reset', this, options);
|
||
return models;
|
||
},
|
||
|
||
// Add a model to the end of the collection.
|
||
push: function(model, options) {
|
||
return this.add(model, _.extend({at: this.length}, options));
|
||
},
|
||
|
||
// Remove a model from the end of the collection.
|
||
pop: function(options) {
|
||
var model = this.at(this.length - 1);
|
||
return this.remove(model, options);
|
||
},
|
||
|
||
// Add a model to the beginning of the collection.
|
||
unshift: function(model, options) {
|
||
return this.add(model, _.extend({at: 0}, options));
|
||
},
|
||
|
||
// Remove a model from the beginning of the collection.
|
||
shift: function(options) {
|
||
var model = this.at(0);
|
||
return this.remove(model, options);
|
||
},
|
||
|
||
// Slice out a sub-array of models from the collection.
|
||
slice: function() {
|
||
return slice.apply(this.models, arguments);
|
||
},
|
||
|
||
// Get a model from the set by id.
|
||
get: function(obj) {
|
||
if (obj == null) return void 0;
|
||
var id = this.modelId(this._isModel(obj) ? obj.attributes : obj);
|
||
return this._byId[obj] || this._byId[id] || this._byId[obj.cid];
|
||
},
|
||
|
||
// Get the model at the given index.
|
||
at: function(index) {
|
||
if (index < 0) index += this.length;
|
||
return this.models[index];
|
||
},
|
||
|
||
// Return models with matching attributes. Useful for simple cases of
|
||
// `filter`.
|
||
where: function(attrs, first) {
|
||
return this[first ? 'find' : 'filter'](attrs);
|
||
},
|
||
|
||
// Return the first model with matching attributes. Useful for simple cases
|
||
// of `find`.
|
||
findWhere: function(attrs) {
|
||
return this.where(attrs, true);
|
||
},
|
||
|
||
// Force the collection to re-sort itself. You don't need to call this under
|
||
// normal circumstances, as the set will maintain sort order as each item
|
||
// is added.
|
||
sort: function(options) {
|
||
var comparator = this.comparator;
|
||
if (!comparator) throw new Error('Cannot sort a set without a comparator');
|
||
options || (options = {});
|
||
|
||
var length = comparator.length;
|
||
if (_.isFunction(comparator)) comparator = _.bind(comparator, this);
|
||
|
||
// Run sort based on type of `comparator`.
|
||
if (length === 1 || _.isString(comparator)) {
|
||
this.models = this.sortBy(comparator);
|
||
} else {
|
||
this.models.sort(comparator);
|
||
}
|
||
if (!options.silent) this.trigger('sort', this, options);
|
||
return this;
|
||
},
|
||
|
||
// Pluck an attribute from each model in the collection.
|
||
pluck: function(attr) {
|
||
return _.invoke(this.models, 'get', attr);
|
||
},
|
||
|
||
// Fetch the default set of models for this collection, resetting the
|
||
// collection when they arrive. If `reset: true` is passed, the response
|
||
// data will be passed through the `reset` method instead of `set`.
|
||
fetch: function(options) {
|
||
options = _.extend({parse: true}, options);
|
||
var success = options.success;
|
||
var collection = this;
|
||
options.success = function(resp) {
|
||
var method = options.reset ? 'reset' : 'set';
|
||
collection[method](resp, options);
|
||
if (success) success.call(options.context, collection, resp, options);
|
||
collection.trigger('sync', collection, resp, options);
|
||
};
|
||
wrapError(this, options);
|
||
return this.sync('read', this, options);
|
||
},
|
||
|
||
// Create a new instance of a model in this collection. Add the model to the
|
||
// collection immediately, unless `wait: true` is passed, in which case we
|
||
// wait for the server to agree.
|
||
create: function(model, options) {
|
||
options = options ? _.clone(options) : {};
|
||
var wait = options.wait;
|
||
model = this._prepareModel(model, options);
|
||
if (!model) return false;
|
||
if (!wait) this.add(model, options);
|
||
var collection = this;
|
||
var success = options.success;
|
||
options.success = function(model, resp, callbackOpts) {
|
||
if (wait) collection.add(model, callbackOpts);
|
||
if (success) success.call(callbackOpts.context, model, resp, callbackOpts);
|
||
};
|
||
model.save(null, options);
|
||
return model;
|
||
},
|
||
|
||
// **parse** converts a response into a list of models to be added to the
|
||
// collection. The default implementation is just to pass it through.
|
||
parse: function(resp, options) {
|
||
return resp;
|
||
},
|
||
|
||
// Create a new collection with an identical list of models as this one.
|
||
clone: function() {
|
||
return new this.constructor(this.models, {
|
||
model: this.model,
|
||
comparator: this.comparator
|
||
});
|
||
},
|
||
|
||
// Define how to uniquely identify models in the collection.
|
||
modelId: function (attrs) {
|
||
return attrs[this.model.prototype.idAttribute || 'id'];
|
||
},
|
||
|
||
// Private method to reset all internal state. Called when the collection
|
||
// is first initialized or reset.
|
||
_reset: function() {
|
||
this.length = 0;
|
||
this.models = [];
|
||
this._byId = {};
|
||
},
|
||
|
||
// Prepare a hash of attributes (or other model) to be added to this
|
||
// collection.
|
||
_prepareModel: function(attrs, options) {
|
||
if (this._isModel(attrs)) {
|
||
if (!attrs.collection) attrs.collection = this;
|
||
return attrs;
|
||
}
|
||
options = options ? _.clone(options) : {};
|
||
options.collection = this;
|
||
var model = new this.model(attrs, options);
|
||
if (!model.validationError) return model;
|
||
this.trigger('invalid', this, model.validationError, options);
|
||
return false;
|
||
},
|
||
|
||
// Internal method called by both remove and set.
|
||
_removeModels: function(models, options) {
|
||
var removed = [];
|
||
for (var i = 0; i < models.length; i++) {
|
||
var model = this.get(models[i]);
|
||
if (!model) continue;
|
||
|
||
var index = this.indexOf(model);
|
||
this.models.splice(index, 1);
|
||
this.length--;
|
||
|
||
if (!options.silent) {
|
||
options.index = index;
|
||
model.trigger('remove', model, this, options);
|
||
}
|
||
|
||
removed.push(model);
|
||
this._removeReference(model, options);
|
||
}
|
||
return removed.length ? removed : false;
|
||
},
|
||
|
||
// Method for checking whether an object should be considered a model for
|
||
// the purposes of adding to the collection.
|
||
_isModel: function (model) {
|
||
return model instanceof Model;
|
||
},
|
||
|
||
// Internal method to create a model's ties to a collection.
|
||
_addReference: function(model, options) {
|
||
this._byId[model.cid] = model;
|
||
var id = this.modelId(model.attributes);
|
||
if (id != null) this._byId[id] = model;
|
||
model.on('all', this._onModelEvent, this);
|
||
},
|
||
|
||
// Internal method to sever a model's ties to a collection.
|
||
_removeReference: function(model, options) {
|
||
delete this._byId[model.cid];
|
||
var id = this.modelId(model.attributes);
|
||
if (id != null) delete this._byId[id];
|
||
if (this === model.collection) delete model.collection;
|
||
model.off('all', this._onModelEvent, this);
|
||
},
|
||
|
||
// Internal method called every time a model in the set fires an event.
|
||
// Sets need to update their indexes when models change ids. All other
|
||
// events simply proxy through. "add" and "remove" events that originate
|
||
// in other collections are ignored.
|
||
_onModelEvent: function(event, model, collection, options) {
|
||
if ((event === 'add' || event === 'remove') && collection !== this) return;
|
||
if (event === 'destroy') this.remove(model, options);
|
||
if (event === 'change') {
|
||
var prevId = this.modelId(model.previousAttributes());
|
||
var id = this.modelId(model.attributes);
|
||
if (prevId !== id) {
|
||
if (prevId != null) delete this._byId[prevId];
|
||
if (id != null) this._byId[id] = model;
|
||
}
|
||
}
|
||
this.trigger.apply(this, arguments);
|
||
}
|
||
|
||
});
|
||
|
||
// Underscore methods that we want to implement on the Collection.
|
||
// 90% of the core usefulness of Backbone Collections is actually implemented
|
||
// right here:
|
||
var collectionMethods = { forEach: 3, each: 3, map: 3, collect: 3, reduce: 4,
|
||
foldl: 4, inject: 4, reduceRight: 4, foldr: 4, find: 3, detect: 3, filter: 3,
|
||
select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,
|
||
contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,
|
||
head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,
|
||
without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,
|
||
isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,
|
||
sortBy: 3, indexBy: 3};
|
||
|
||
// Mix in each Underscore method as a proxy to `Collection#models`.
|
||
addUnderscoreMethods(Collection, collectionMethods, 'models');
|
||
|
||
// Backbone.View
|
||
// -------------
|
||
|
||
// Backbone Views are almost more convention than they are actual code. A View
|
||
// is simply a JavaScript object that represents a logical chunk of UI in the
|
||
// DOM. This might be a single item, an entire list, a sidebar or panel, or
|
||
// even the surrounding frame which wraps your whole app. Defining a chunk of
|
||
// UI as a **View** allows you to define your DOM events declaratively, without
|
||
// having to worry about render order ... and makes it easy for the view to
|
||
// react to specific changes in the state of your models.
|
||
|
||
// Creating a Backbone.View creates its initial element outside of the DOM,
|
||
// if an existing element is not provided...
|
||
var View = Backbone.View = function(options) {
|
||
this.cid = _.uniqueId('view');
|
||
_.extend(this, _.pick(options, viewOptions));
|
||
this._ensureElement();
|
||
this.initialize.apply(this, arguments);
|
||
};
|
||
|
||
// Cached regex to split keys for `delegate`.
|
||
var delegateEventSplitter = /^(\S+)\s*(.*)$/;
|
||
|
||
// List of view options to be set as properties.
|
||
var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];
|
||
|
||
// Set up all inheritable **Backbone.View** properties and methods.
|
||
_.extend(View.prototype, Events, {
|
||
|
||
// The default `tagName` of a View's element is `"div"`.
|
||
tagName: 'div',
|
||
|
||
// jQuery delegate for element lookup, scoped to DOM elements within the
|
||
// current view. This should be preferred to global lookups where possible.
|
||
$: function(selector) {
|
||
return this.$el.find(selector);
|
||
},
|
||
|
||
// Initialize is an empty function by default. Override it with your own
|
||
// initialization logic.
|
||
initialize: function(){},
|
||
|
||
// **render** is the core function that your view should override, in order
|
||
// to populate its element (`this.el`), with the appropriate HTML. The
|
||
// convention is for **render** to always return `this`.
|
||
render: function() {
|
||
return this;
|
||
},
|
||
|
||
// Remove this view by taking the element out of the DOM, and removing any
|
||
// applicable Backbone.Events listeners.
|
||
remove: function() {
|
||
this._removeElement();
|
||
this.stopListening();
|
||
return this;
|
||
},
|
||
|
||
// Remove this view's element from the document and all event listeners
|
||
// attached to it. Exposed for subclasses using an alternative DOM
|
||
// manipulation API.
|
||
_removeElement: function() {
|
||
this.$el.remove();
|
||
},
|
||
|
||
// Change the view's element (`this.el` property) and re-delegate the
|
||
// view's events on the new element.
|
||
setElement: function(element) {
|
||
this.undelegateEvents();
|
||
this._setElement(element);
|
||
this.delegateEvents();
|
||
return this;
|
||
},
|
||
|
||
// Creates the `this.el` and `this.$el` references for this view using the
|
||
// given `el`. `el` can be a CSS selector or an HTML string, a jQuery
|
||
// context or an element. Subclasses can override this to utilize an
|
||
// alternative DOM manipulation API and are only required to set the
|
||
// `this.el` property.
|
||
_setElement: function(el) {
|
||
this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);
|
||
this.el = this.$el[0];
|
||
},
|
||
|
||
// Set callbacks, where `this.events` is a hash of
|
||
//
|
||
// *{"event selector": "callback"}*
|
||
//
|
||
// {
|
||
// 'mousedown .title': 'edit',
|
||
// 'click .button': 'save',
|
||
// 'click .open': function(e) { ... }
|
||
// }
|
||
//
|
||
// pairs. Callbacks will be bound to the view, with `this` set properly.
|
||
// Uses event delegation for efficiency.
|
||
// Omitting the selector binds the event to `this.el`.
|
||
delegateEvents: function(events) {
|
||
events || (events = _.result(this, 'events'));
|
||
if (!events) return this;
|
||
this.undelegateEvents();
|
||
for (var key in events) {
|
||
var method = events[key];
|
||
if (!_.isFunction(method)) method = this[method];
|
||
if (!method) continue;
|
||
var match = key.match(delegateEventSplitter);
|
||
this.delegate(match[1], match[2], _.bind(method, this));
|
||
}
|
||
return this;
|
||
},
|
||
|
||
// Add a single event listener to the view's element (or a child element
|
||
// using `selector`). This only works for delegate-able events: not `focus`,
|
||
// `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.
|
||
delegate: function(eventName, selector, listener) {
|
||
this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);
|
||
return this;
|
||
},
|
||
|
||
// Clears all callbacks previously bound to the view by `delegateEvents`.
|
||
// You usually don't need to use this, but may wish to if you have multiple
|
||
// Backbone views attached to the same DOM element.
|
||
undelegateEvents: function() {
|
||
if (this.$el) this.$el.off('.delegateEvents' + this.cid);
|
||
return this;
|
||
},
|
||
|
||
// A finer-grained `undelegateEvents` for removing a single delegated event.
|
||
// `selector` and `listener` are both optional.
|
||
undelegate: function(eventName, selector, listener) {
|
||
this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);
|
||
return this;
|
||
},
|
||
|
||
// Produces a DOM element to be assigned to your view. Exposed for
|
||
// subclasses using an alternative DOM manipulation API.
|
||
_createElement: function(tagName) {
|
||
return document.createElement(tagName);
|
||
},
|
||
|
||
// Ensure that the View has a DOM element to render into.
|
||
// If `this.el` is a string, pass it through `$()`, take the first
|
||
// matching element, and re-assign it to `el`. Otherwise, create
|
||
// an element from the `id`, `className` and `tagName` properties.
|
||
_ensureElement: function() {
|
||
if (!this.el) {
|
||
var attrs = _.extend({}, _.result(this, 'attributes'));
|
||
if (this.id) attrs.id = _.result(this, 'id');
|
||
if (this.className) attrs['class'] = _.result(this, 'className');
|
||
this.setElement(this._createElement(_.result(this, 'tagName')));
|
||
this._setAttributes(attrs);
|
||
} else {
|
||
this.setElement(_.result(this, 'el'));
|
||
}
|
||
},
|
||
|
||
// Set attributes from a hash on this view's element. Exposed for
|
||
// subclasses using an alternative DOM manipulation API.
|
||
_setAttributes: function(attributes) {
|
||
this.$el.attr(attributes);
|
||
}
|
||
|
||
});
|
||
|
||
// Backbone.sync
|
||
// -------------
|
||
|
||
// Override this function to change the manner in which Backbone persists
|
||
// models to the server. You will be passed the type of request, and the
|
||
// model in question. By default, makes a RESTful Ajax request
|
||
// to the model's `url()`. Some possible customizations could be:
|
||
//
|
||
// * Use `setTimeout` to batch rapid-fire updates into a single request.
|
||
// * Send up the models as XML instead of JSON.
|
||
// * Persist models via WebSockets instead of Ajax.
|
||
//
|
||
// Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests
|
||
// as `POST`, with a `_method` parameter containing the true HTTP method,
|
||
// as well as all requests with the body as `application/x-www-form-urlencoded`
|
||
// instead of `application/json` with the model in a param named `model`.
|
||
// Useful when interfacing with server-side languages like **PHP** that make
|
||
// it difficult to read the body of `PUT` requests.
|
||
Backbone.sync = function(method, model, options) {
|
||
var type = methodMap[method];
|
||
|
||
// Default options, unless specified.
|
||
_.defaults(options || (options = {}), {
|
||
emulateHTTP: Backbone.emulateHTTP,
|
||
emulateJSON: Backbone.emulateJSON
|
||
});
|
||
|
||
// Default JSON-request options.
|
||
var params = {type: type, dataType: 'json'};
|
||
|
||
// Ensure that we have a URL.
|
||
if (!options.url) {
|
||
params.url = _.result(model, 'url') || urlError();
|
||
}
|
||
|
||
// Ensure that we have the appropriate request data.
|
||
if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {
|
||
params.contentType = 'application/json';
|
||
params.data = JSON.stringify(options.attrs || model.toJSON(options));
|
||
}
|
||
|
||
// For older servers, emulate JSON by encoding the request into an HTML-form.
|
||
if (options.emulateJSON) {
|
||
params.contentType = 'application/x-www-form-urlencoded';
|
||
params.data = params.data ? {model: params.data} : {};
|
||
}
|
||
|
||
// For older servers, emulate HTTP by mimicking the HTTP method with `_method`
|
||
// And an `X-HTTP-Method-Override` header.
|
||
if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {
|
||
params.type = 'POST';
|
||
if (options.emulateJSON) params.data._method = type;
|
||
var beforeSend = options.beforeSend;
|
||
options.beforeSend = function(xhr) {
|
||
xhr.setRequestHeader('X-HTTP-Method-Override', type);
|
||
if (beforeSend) return beforeSend.apply(this, arguments);
|
||
};
|
||
}
|
||
|
||
// Don't process data on a non-GET request.
|
||
if (params.type !== 'GET' && !options.emulateJSON) {
|
||
params.processData = false;
|
||
}
|
||
|
||
// Pass along `textStatus` and `errorThrown` from jQuery.
|
||
var error = options.error;
|
||
options.error = function(xhr, textStatus, errorThrown) {
|
||
options.textStatus = textStatus;
|
||
options.errorThrown = errorThrown;
|
||
if (error) error.call(options.context, xhr, textStatus, errorThrown);
|
||
};
|
||
|
||
// Make the request, allowing the user to override any Ajax options.
|
||
var xhr = options.xhr = Backbone.ajax(_.extend(params, options));
|
||
model.trigger('request', model, xhr, options);
|
||
return xhr;
|
||
};
|
||
|
||
// Map from CRUD to HTTP for our default `Backbone.sync` implementation.
|
||
var methodMap = {
|
||
'create': 'POST',
|
||
'update': 'PUT',
|
||
'patch': 'PATCH',
|
||
'delete': 'DELETE',
|
||
'read': 'GET'
|
||
};
|
||
|
||
// Set the default implementation of `Backbone.ajax` to proxy through to `$`.
|
||
// Override this if you'd like to use a different library.
|
||
Backbone.ajax = function() {
|
||
return Backbone.$.ajax.apply(Backbone.$, arguments);
|
||
};
|
||
|
||
// Backbone.Router
|
||
// ---------------
|
||
|
||
// Routers map faux-URLs to actions, and fire events when routes are
|
||
// matched. Creating a new one sets its `routes` hash, if not set statically.
|
||
var Router = Backbone.Router = function(options) {
|
||
options || (options = {});
|
||
if (options.routes) this.routes = options.routes;
|
||
this._bindRoutes();
|
||
this.initialize.apply(this, arguments);
|
||
};
|
||
|
||
// Cached regular expressions for matching named param parts and splatted
|
||
// parts of route strings.
|
||
var optionalParam = /\((.*?)\)/g;
|
||
var namedParam = /(\(\?)?:\w+/g;
|
||
var splatParam = /\*\w+/g;
|
||
var escapeRegExp = /[\-{}\[\]+?.,\\\^$|#\s]/g;
|
||
|
||
// Set up all inheritable **Backbone.Router** properties and methods.
|
||
_.extend(Router.prototype, Events, {
|
||
|
||
// Initialize is an empty function by default. Override it with your own
|
||
// initialization logic.
|
||
initialize: function(){},
|
||
|
||
// Manually bind a single named route to a callback. For example:
|
||
//
|
||
// this.route('search/:query/p:num', 'search', function(query, num) {
|
||
// ...
|
||
// });
|
||
//
|
||
route: function(route, name, callback) {
|
||
if (!_.isRegExp(route)) route = this._routeToRegExp(route);
|
||
if (_.isFunction(name)) {
|
||
callback = name;
|
||
name = '';
|
||
}
|
||
if (!callback) callback = this[name];
|
||
var router = this;
|
||
Backbone.history.route(route, function(fragment) {
|
||
var args = router._extractParameters(route, fragment);
|
||
if (router.execute(callback, args, name) !== false) {
|
||
router.trigger.apply(router, ['route:' + name].concat(args));
|
||
router.trigger('route', name, args);
|
||
Backbone.history.trigger('route', router, name, args);
|
||
}
|
||
});
|
||
return this;
|
||
},
|
||
|
||
// Execute a route handler with the provided parameters. This is an
|
||
// excellent place to do pre-route setup or post-route cleanup.
|
||
execute: function(callback, args, name) {
|
||
if (callback) callback.apply(this, args);
|
||
},
|
||
|
||
// Simple proxy to `Backbone.history` to save a fragment into the history.
|
||
navigate: function(fragment, options) {
|
||
Backbone.history.navigate(fragment, options);
|
||
return this;
|
||
},
|
||
|
||
// Bind all defined routes to `Backbone.history`. We have to reverse the
|
||
// order of the routes here to support behavior where the most general
|
||
// routes can be defined at the bottom of the route map.
|
||
_bindRoutes: function() {
|
||
if (!this.routes) return;
|
||
this.routes = _.result(this, 'routes');
|
||
var route, routes = _.keys(this.routes);
|
||
while ((route = routes.pop()) != null) {
|
||
this.route(route, this.routes[route]);
|
||
}
|
||
},
|
||
|
||
// Convert a route string into a regular expression, suitable for matching
|
||
// against the current location hash.
|
||
_routeToRegExp: function(route) {
|
||
route = route.replace(escapeRegExp, '\\$&')
|
||
.replace(optionalParam, '(?:$1)?')
|
||
.replace(namedParam, function(match, optional) {
|
||
return optional ? match : '([^/?]+)';
|
||
})
|
||
.replace(splatParam, '([^?]*?)');
|
||
return new RegExp('^' + route + '(?:\\?([\\s\\S]*))?$');
|
||
},
|
||
|
||
// Given a route, and a URL fragment that it matches, return the array of
|
||
// extracted decoded parameters. Empty or unmatched parameters will be
|
||
// treated as `null` to normalize cross-browser behavior.
|
||
_extractParameters: function(route, fragment) {
|
||
var params = route.exec(fragment).slice(1);
|
||
return _.map(params, function(param, i) {
|
||
// Don't decode the search params.
|
||
if (i === params.length - 1) return param || null;
|
||
return param ? decodeURIComponent(param) : null;
|
||
});
|
||
}
|
||
|
||
});
|
||
|
||
// Backbone.History
|
||
// ----------------
|
||
|
||
// Handles cross-browser history management, based on either
|
||
// [pushState](http://diveintohtml5.info/history.html) and real URLs, or
|
||
// [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)
|
||
// and URL fragments. If the browser supports neither (old IE, natch),
|
||
// falls back to polling.
|
||
var History = Backbone.History = function() {
|
||
this.handlers = [];
|
||
this.checkUrl = _.bind(this.checkUrl, this);
|
||
|
||
// Ensure that `History` can be used outside of the browser.
|
||
if (typeof window !== 'undefined') {
|
||
this.location = window.location;
|
||
this.history = window.history;
|
||
}
|
||
};
|
||
|
||
// Cached regex for stripping a leading hash/slash and trailing space.
|
||
var routeStripper = /^[#\/]|\s+$/g;
|
||
|
||
// Cached regex for stripping leading and trailing slashes.
|
||
var rootStripper = /^\/+|\/+$/g;
|
||
|
||
// Cached regex for stripping urls of hash.
|
||
var pathStripper = /#.*$/;
|
||
|
||
// Has the history handling already been started?
|
||
History.started = false;
|
||
|
||
// Set up all inheritable **Backbone.History** properties and methods.
|
||
_.extend(History.prototype, Events, {
|
||
|
||
// The default interval to poll for hash changes, if necessary, is
|
||
// twenty times a second.
|
||
interval: 50,
|
||
|
||
// Are we at the app root?
|
||
atRoot: function() {
|
||
var path = this.location.pathname.replace(/[^\/]$/, '$&/');
|
||
return path === this.root && !this.getSearch();
|
||
},
|
||
|
||
// Does the pathname match the root?
|
||
matchRoot: function() {
|
||
var path = this.decodeFragment(this.location.pathname);
|
||
var root = path.slice(0, this.root.length - 1) + '/';
|
||
return root === this.root;
|
||
},
|
||
|
||
// Unicode characters in `location.pathname` are percent encoded so they're
|
||
// decoded for comparison. `%25` should not be decoded since it may be part
|
||
// of an encoded parameter.
|
||
decodeFragment: function(fragment) {
|
||
return decodeURI(fragment.replace(/%25/g, '%2525'));
|
||
},
|
||
|
||
// In IE6, the hash fragment and search params are incorrect if the
|
||
// fragment contains `?`.
|
||
getSearch: function() {
|
||
var match = this.location.href.replace(/#.*/, '').match(/\?.+/);
|
||
return match ? match[0] : '';
|
||
},
|
||
|
||
// Gets the true hash value. Cannot use location.hash directly due to bug
|
||
// in Firefox where location.hash will always be decoded.
|
||
getHash: function(window) {
|
||
var match = (window || this).location.href.match(/#(.*)$/);
|
||
return match ? match[1] : '';
|
||
},
|
||
|
||
// Get the pathname and search params, without the root.
|
||
getPath: function() {
|
||
var path = this.decodeFragment(
|
||
this.location.pathname + this.getSearch()
|
||
).slice(this.root.length - 1);
|
||
return path.charAt(0) === '/' ? path.slice(1) : path;
|
||
},
|
||
|
||
// Get the cross-browser normalized URL fragment from the path or hash.
|
||
getFragment: function(fragment) {
|
||
if (fragment == null) {
|
||
if (this._usePushState || !this._wantsHashChange) {
|
||
fragment = this.getPath();
|
||
} else {
|
||
fragment = this.getHash();
|
||
}
|
||
}
|
||
return fragment.replace(routeStripper, '');
|
||
},
|
||
|
||
// Start the hash change handling, returning `true` if the current URL matches
|
||
// an existing route, and `false` otherwise.
|
||
start: function(options) {
|
||
if (History.started) throw new Error('Backbone.history has already been started');
|
||
History.started = true;
|
||
|
||
// Figure out the initial configuration. Do we need an iframe?
|
||
// Is pushState desired ... is it available?
|
||
this.options = _.extend({root: '/'}, this.options, options);
|
||
this.root = this.options.root;
|
||
this._wantsHashChange = this.options.hashChange !== false;
|
||
this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);
|
||
this._useHashChange = this._wantsHashChange && this._hasHashChange;
|
||
this._wantsPushState = !!this.options.pushState;
|
||
this._hasPushState = !!(this.history && this.history.pushState);
|
||
this._usePushState = this._wantsPushState && this._hasPushState;
|
||
this.fragment = this.getFragment();
|
||
|
||
// Normalize root to always include a leading and trailing slash.
|
||
this.root = ('/' + this.root + '/').replace(rootStripper, '/');
|
||
|
||
// Transition from hashChange to pushState or vice versa if both are
|
||
// requested.
|
||
if (this._wantsHashChange && this._wantsPushState) {
|
||
|
||
// If we've started off with a route from a `pushState`-enabled
|
||
// browser, but we're currently in a browser that doesn't support it...
|
||
if (!this._hasPushState && !this.atRoot()) {
|
||
var root = this.root.slice(0, -1) || '/';
|
||
this.location.replace(root + '#' + this.getPath());
|
||
// Return immediately as browser will do redirect to new url
|
||
return true;
|
||
|
||
// Or if we've started out with a hash-based route, but we're currently
|
||
// in a browser where it could be `pushState`-based instead...
|
||
} else if (this._hasPushState && this.atRoot()) {
|
||
this.navigate(this.getHash(), {replace: true});
|
||
}
|
||
|
||
}
|
||
|
||
// Proxy an iframe to handle location events if the browser doesn't
|
||
// support the `hashchange` event, HTML5 history, or the user wants
|
||
// `hashChange` but not `pushState`.
|
||
if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {
|
||
this.iframe = document.createElement('iframe');
|
||
this.iframe.src = 'javascript:0';
|
||
this.iframe.style.display = 'none';
|
||
this.iframe.tabIndex = -1;
|
||
var body = document.body;
|
||
// Using `appendChild` will throw on IE < 9 if the document is not ready.
|
||
var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;
|
||
iWindow.document.open();
|
||
iWindow.document.close();
|
||
iWindow.location.hash = '#' + this.fragment;
|
||
}
|
||
|
||
// Add a cross-platform `addEventListener` shim for older browsers.
|
||
var addEventListener = window.addEventListener || function (eventName, listener) {
|
||
return attachEvent('on' + eventName, listener);
|
||
};
|
||
|
||
// Depending on whether we're using pushState or hashes, and whether
|
||
// 'onhashchange' is supported, determine how we check the URL state.
|
||
if (this._usePushState) {
|
||
addEventListener('popstate', this.checkUrl, false);
|
||
} else if (this._useHashChange && !this.iframe) {
|
||
addEventListener('hashchange', this.checkUrl, false);
|
||
} else if (this._wantsHashChange) {
|
||
this._checkUrlInterval = setInterval(this.checkUrl, this.interval);
|
||
}
|
||
|
||
if (!this.options.silent) return this.loadUrl();
|
||
},
|
||
|
||
// Disable Backbone.history, perhaps temporarily. Not useful in a real app,
|
||
// but possibly useful for unit testing Routers.
|
||
stop: function() {
|
||
// Add a cross-platform `removeEventListener` shim for older browsers.
|
||
var removeEventListener = window.removeEventListener || function (eventName, listener) {
|
||
return detachEvent('on' + eventName, listener);
|
||
};
|
||
|
||
// Remove window listeners.
|
||
if (this._usePushState) {
|
||
removeEventListener('popstate', this.checkUrl, false);
|
||
} else if (this._useHashChange && !this.iframe) {
|
||
removeEventListener('hashchange', this.checkUrl, false);
|
||
}
|
||
|
||
// Clean up the iframe if necessary.
|
||
if (this.iframe) {
|
||
document.body.removeChild(this.iframe);
|
||
this.iframe = null;
|
||
}
|
||
|
||
// Some environments will throw when clearing an undefined interval.
|
||
if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);
|
||
History.started = false;
|
||
},
|
||
|
||
// Add a route to be tested when the fragment changes. Routes added later
|
||
// may override previous routes.
|
||
route: function(route, callback) {
|
||
this.handlers.unshift({route: route, callback: callback});
|
||
},
|
||
|
||
// Checks the current URL to see if it has changed, and if it has,
|
||
// calls `loadUrl`, normalizing across the hidden iframe.
|
||
checkUrl: function(e) {
|
||
var current = this.getFragment();
|
||
|
||
// If the user pressed the back button, the iframe's hash will have
|
||
// changed and we should use that for comparison.
|
||
if (current === this.fragment && this.iframe) {
|
||
current = this.getHash(this.iframe.contentWindow);
|
||
}
|
||
|
||
if (current === this.fragment) return false;
|
||
if (this.iframe) this.navigate(current);
|
||
this.loadUrl();
|
||
},
|
||
|
||
// Attempt to load the current URL fragment. If a route succeeds with a
|
||
// match, returns `true`. If no defined routes matches the fragment,
|
||
// returns `false`.
|
||
loadUrl: function(fragment) {
|
||
// If the root doesn't match, no routes can match either.
|
||
if (!this.matchRoot()) return false;
|
||
fragment = this.fragment = this.getFragment(fragment);
|
||
return _.some(this.handlers, function(handler) {
|
||
if (handler.route.test(fragment)) {
|
||
handler.callback(fragment);
|
||
return true;
|
||
}
|
||
});
|
||
},
|
||
|
||
// Save a fragment into the hash history, or replace the URL state if the
|
||
// 'replace' option is passed. You are responsible for properly URL-encoding
|
||
// the fragment in advance.
|
||
//
|
||
// The options object can contain `trigger: true` if you wish to have the
|
||
// route callback be fired (not usually desirable), or `replace: true`, if
|
||
// you wish to modify the current URL without adding an entry to the history.
|
||
navigate: function(fragment, options) {
|
||
if (!History.started) return false;
|
||
if (!options || options === true) options = {trigger: !!options};
|
||
|
||
// Normalize the fragment.
|
||
fragment = this.getFragment(fragment || '');
|
||
|
||
// Don't include a trailing slash on the root.
|
||
var root = this.root;
|
||
if (fragment === '' || fragment.charAt(0) === '?') {
|
||
root = root.slice(0, -1) || '/';
|
||
}
|
||
var url = root + fragment;
|
||
|
||
// Strip the hash and decode for matching.
|
||
fragment = this.decodeFragment(fragment.replace(pathStripper, ''));
|
||
|
||
if (this.fragment === fragment) return;
|
||
this.fragment = fragment;
|
||
|
||
// If pushState is available, we use it to set the fragment as a real URL.
|
||
if (this._usePushState) {
|
||
this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);
|
||
|
||
// If hash changes haven't been explicitly disabled, update the hash
|
||
// fragment to store history.
|
||
} else if (this._wantsHashChange) {
|
||
this._updateHash(this.location, fragment, options.replace);
|
||
if (this.iframe && (fragment !== this.getHash(this.iframe.contentWindow))) {
|
||
var iWindow = this.iframe.contentWindow;
|
||
|
||
// Opening and closing the iframe tricks IE7 and earlier to push a
|
||
// history entry on hash-tag change. When replace is true, we don't
|
||
// want this.
|
||
if (!options.replace) {
|
||
iWindow.document.open();
|
||
iWindow.document.close();
|
||
}
|
||
|
||
this._updateHash(iWindow.location, fragment, options.replace);
|
||
}
|
||
|
||
// If you've told us that you explicitly don't want fallback hashchange-
|
||
// based history, then `navigate` becomes a page refresh.
|
||
} else {
|
||
return this.location.assign(url);
|
||
}
|
||
if (options.trigger) return this.loadUrl(fragment);
|
||
},
|
||
|
||
// Update the hash location, either replacing the current entry, or adding
|
||
// a new one to the browser history.
|
||
_updateHash: function(location, fragment, replace) {
|
||
if (replace) {
|
||
var href = location.href.replace(/(javascript:|#).*$/, '');
|
||
location.replace(href + '#' + fragment);
|
||
} else {
|
||
// Some browsers require that `hash` contains a leading #.
|
||
location.hash = '#' + fragment;
|
||
}
|
||
}
|
||
|
||
});
|
||
|
||
// Create the default Backbone.history.
|
||
Backbone.history = new History;
|
||
|
||
// Helpers
|
||
// -------
|
||
|
||
// Helper function to correctly set up the prototype chain for subclasses.
|
||
// Similar to `goog.inherits`, but uses a hash of prototype properties and
|
||
// class properties to be extended.
|
||
var extend = function(protoProps, staticProps) {
|
||
var parent = this;
|
||
var child;
|
||
|
||
// The constructor function for the new subclass is either defined by you
|
||
// (the "constructor" property in your `extend` definition), or defaulted
|
||
// by us to simply call the parent constructor.
|
||
if (protoProps && _.has(protoProps, 'constructor')) {
|
||
child = protoProps.constructor;
|
||
} else {
|
||
child = function(){ return parent.apply(this, arguments); };
|
||
}
|
||
|
||
// Add static properties to the constructor function, if supplied.
|
||
_.extend(child, parent, staticProps);
|
||
|
||
// Set the prototype chain to inherit from `parent`, without calling
|
||
// `parent` constructor function.
|
||
var Surrogate = function(){ this.constructor = child; };
|
||
Surrogate.prototype = parent.prototype;
|
||
child.prototype = new Surrogate;
|
||
|
||
// Add prototype properties (instance properties) to the subclass,
|
||
// if supplied.
|
||
if (protoProps) _.extend(child.prototype, protoProps);
|
||
|
||
// Set a convenience property in case the parent's prototype is needed
|
||
// later.
|
||
child.__super__ = parent.prototype;
|
||
|
||
return child;
|
||
};
|
||
|
||
// Set up inheritance for the model, collection, router, view and history.
|
||
Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;
|
||
|
||
// Throw an error when a URL is needed, and none is supplied.
|
||
var urlError = function() {
|
||
throw new Error('A "url" property or function must be specified');
|
||
};
|
||
|
||
// Wrap an optional error callback with a fallback error event.
|
||
var wrapError = function(model, options) {
|
||
var error = options.error;
|
||
options.error = function(resp) {
|
||
if (error) error.call(options.context, model, resp, options);
|
||
model.trigger('error', model, resp, options);
|
||
};
|
||
};
|
||
|
||
return Backbone;
|
||
|
||
}));
|
||
|
||
/*!
|
||
* @overview es6-promise - a tiny implementation of Promises/A+.
|
||
* @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
|
||
* @license Licensed under MIT license
|
||
* See https://raw.githubusercontent.com/jakearchibald/es6-promise/master/LICENSE
|
||
* @version 2.3.0
|
||
*/
|
||
|
||
(function() {
|
||
"use strict";
|
||
function lib$es6$promise$utils$$objectOrFunction(x) {
|
||
return typeof x === 'function' || (typeof x === 'object' && x !== null);
|
||
}
|
||
|
||
function lib$es6$promise$utils$$isFunction(x) {
|
||
return typeof x === 'function';
|
||
}
|
||
|
||
function lib$es6$promise$utils$$isMaybeThenable(x) {
|
||
return typeof x === 'object' && x !== null;
|
||
}
|
||
|
||
var lib$es6$promise$utils$$_isArray;
|
||
if (!Array.isArray) {
|
||
lib$es6$promise$utils$$_isArray = function (x) {
|
||
return Object.prototype.toString.call(x) === '[object Array]';
|
||
};
|
||
} else {
|
||
lib$es6$promise$utils$$_isArray = Array.isArray;
|
||
}
|
||
|
||
var lib$es6$promise$utils$$isArray = lib$es6$promise$utils$$_isArray;
|
||
var lib$es6$promise$asap$$len = 0;
|
||
var lib$es6$promise$asap$$toString = {}.toString;
|
||
var lib$es6$promise$asap$$vertxNext;
|
||
var lib$es6$promise$asap$$customSchedulerFn;
|
||
|
||
var lib$es6$promise$asap$$asap = function asap(callback, arg) {
|
||
lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len] = callback;
|
||
lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len + 1] = arg;
|
||
lib$es6$promise$asap$$len += 2;
|
||
if (lib$es6$promise$asap$$len === 2) {
|
||
// If len is 2, that means that we need to schedule an async flush.
|
||
// If additional callbacks are queued before the queue is flushed, they
|
||
// will be processed by this flush that we are scheduling.
|
||
if (lib$es6$promise$asap$$customSchedulerFn) {
|
||
lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush);
|
||
} else {
|
||
lib$es6$promise$asap$$scheduleFlush();
|
||
}
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$asap$$setScheduler(scheduleFn) {
|
||
lib$es6$promise$asap$$customSchedulerFn = scheduleFn;
|
||
}
|
||
|
||
function lib$es6$promise$asap$$setAsap(asapFn) {
|
||
lib$es6$promise$asap$$asap = asapFn;
|
||
}
|
||
|
||
var lib$es6$promise$asap$$browserWindow = (typeof window !== 'undefined') ? window : undefined;
|
||
var lib$es6$promise$asap$$browserGlobal = lib$es6$promise$asap$$browserWindow || {};
|
||
var lib$es6$promise$asap$$BrowserMutationObserver = lib$es6$promise$asap$$browserGlobal.MutationObserver || lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;
|
||
var lib$es6$promise$asap$$isNode = typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
|
||
|
||
// test for web worker but not in IE10
|
||
var lib$es6$promise$asap$$isWorker = typeof Uint8ClampedArray !== 'undefined' &&
|
||
typeof importScripts !== 'undefined' &&
|
||
typeof MessageChannel !== 'undefined';
|
||
|
||
// node
|
||
function lib$es6$promise$asap$$useNextTick() {
|
||
var nextTick = process.nextTick;
|
||
// node version 0.10.x displays a deprecation warning when nextTick is used recursively
|
||
// setImmediate should be used instead instead
|
||
var version = process.versions.node.match(/^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/);
|
||
if (Array.isArray(version) && version[1] === '0' && version[2] === '10') {
|
||
nextTick = setImmediate;
|
||
}
|
||
return function() {
|
||
nextTick(lib$es6$promise$asap$$flush);
|
||
};
|
||
}
|
||
|
||
// vertx
|
||
function lib$es6$promise$asap$$useVertxTimer() {
|
||
return function() {
|
||
lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush);
|
||
};
|
||
}
|
||
|
||
function lib$es6$promise$asap$$useMutationObserver() {
|
||
var iterations = 0;
|
||
var observer = new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);
|
||
var node = document.createTextNode('');
|
||
observer.observe(node, { characterData: true });
|
||
|
||
return function() {
|
||
node.data = (iterations = ++iterations % 2);
|
||
};
|
||
}
|
||
|
||
// web worker
|
||
function lib$es6$promise$asap$$useMessageChannel() {
|
||
var channel = new MessageChannel();
|
||
channel.port1.onmessage = lib$es6$promise$asap$$flush;
|
||
return function () {
|
||
channel.port2.postMessage(0);
|
||
};
|
||
}
|
||
|
||
function lib$es6$promise$asap$$useSetTimeout() {
|
||
return function() {
|
||
setTimeout(lib$es6$promise$asap$$flush, 1);
|
||
};
|
||
}
|
||
|
||
var lib$es6$promise$asap$$queue = new Array(1000);
|
||
function lib$es6$promise$asap$$flush() {
|
||
for (var i = 0; i < lib$es6$promise$asap$$len; i+=2) {
|
||
var callback = lib$es6$promise$asap$$queue[i];
|
||
var arg = lib$es6$promise$asap$$queue[i+1];
|
||
|
||
callback(arg);
|
||
|
||
lib$es6$promise$asap$$queue[i] = undefined;
|
||
lib$es6$promise$asap$$queue[i+1] = undefined;
|
||
}
|
||
|
||
lib$es6$promise$asap$$len = 0;
|
||
}
|
||
|
||
function lib$es6$promise$asap$$attemptVertex() {
|
||
try {
|
||
var r = require;
|
||
var vertx = r('vertx');
|
||
lib$es6$promise$asap$$vertxNext = vertx.runOnLoop || vertx.runOnContext;
|
||
return lib$es6$promise$asap$$useVertxTimer();
|
||
} catch(e) {
|
||
return lib$es6$promise$asap$$useSetTimeout();
|
||
}
|
||
}
|
||
|
||
var lib$es6$promise$asap$$scheduleFlush;
|
||
// Decide what async method to use to triggering processing of queued callbacks:
|
||
if (lib$es6$promise$asap$$isNode) {
|
||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useNextTick();
|
||
} else if (lib$es6$promise$asap$$BrowserMutationObserver) {
|
||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMutationObserver();
|
||
} else if (lib$es6$promise$asap$$isWorker) {
|
||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useMessageChannel();
|
||
} else if (lib$es6$promise$asap$$browserWindow === undefined && typeof require === 'function') {
|
||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$attemptVertex();
|
||
} else {
|
||
lib$es6$promise$asap$$scheduleFlush = lib$es6$promise$asap$$useSetTimeout();
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$noop() {}
|
||
|
||
var lib$es6$promise$$internal$$PENDING = void 0;
|
||
var lib$es6$promise$$internal$$FULFILLED = 1;
|
||
var lib$es6$promise$$internal$$REJECTED = 2;
|
||
|
||
var lib$es6$promise$$internal$$GET_THEN_ERROR = new lib$es6$promise$$internal$$ErrorObject();
|
||
|
||
function lib$es6$promise$$internal$$selfFullfillment() {
|
||
return new TypeError("You cannot resolve a promise with itself");
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$cannotReturnOwn() {
|
||
return new TypeError('A promises callback cannot return that same promise.');
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$getThen(promise) {
|
||
try {
|
||
return promise.then;
|
||
} catch(error) {
|
||
lib$es6$promise$$internal$$GET_THEN_ERROR.error = error;
|
||
return lib$es6$promise$$internal$$GET_THEN_ERROR;
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$tryThen(then, value, fulfillmentHandler, rejectionHandler) {
|
||
try {
|
||
then.call(value, fulfillmentHandler, rejectionHandler);
|
||
} catch(e) {
|
||
return e;
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$handleForeignThenable(promise, thenable, then) {
|
||
lib$es6$promise$asap$$asap(function(promise) {
|
||
var sealed = false;
|
||
var error = lib$es6$promise$$internal$$tryThen(then, thenable, function(value) {
|
||
if (sealed) { return; }
|
||
sealed = true;
|
||
if (thenable !== value) {
|
||
lib$es6$promise$$internal$$resolve(promise, value);
|
||
} else {
|
||
lib$es6$promise$$internal$$fulfill(promise, value);
|
||
}
|
||
}, function(reason) {
|
||
if (sealed) { return; }
|
||
sealed = true;
|
||
|
||
lib$es6$promise$$internal$$reject(promise, reason);
|
||
}, 'Settle: ' + (promise._label || ' unknown promise'));
|
||
|
||
if (!sealed && error) {
|
||
sealed = true;
|
||
lib$es6$promise$$internal$$reject(promise, error);
|
||
}
|
||
}, promise);
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$handleOwnThenable(promise, thenable) {
|
||
if (thenable._state === lib$es6$promise$$internal$$FULFILLED) {
|
||
lib$es6$promise$$internal$$fulfill(promise, thenable._result);
|
||
} else if (thenable._state === lib$es6$promise$$internal$$REJECTED) {
|
||
lib$es6$promise$$internal$$reject(promise, thenable._result);
|
||
} else {
|
||
lib$es6$promise$$internal$$subscribe(thenable, undefined, function(value) {
|
||
lib$es6$promise$$internal$$resolve(promise, value);
|
||
}, function(reason) {
|
||
lib$es6$promise$$internal$$reject(promise, reason);
|
||
});
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$handleMaybeThenable(promise, maybeThenable) {
|
||
if (maybeThenable.constructor === promise.constructor) {
|
||
lib$es6$promise$$internal$$handleOwnThenable(promise, maybeThenable);
|
||
} else {
|
||
var then = lib$es6$promise$$internal$$getThen(maybeThenable);
|
||
|
||
if (then === lib$es6$promise$$internal$$GET_THEN_ERROR) {
|
||
lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$GET_THEN_ERROR.error);
|
||
} else if (then === undefined) {
|
||
lib$es6$promise$$internal$$fulfill(promise, maybeThenable);
|
||
} else if (lib$es6$promise$utils$$isFunction(then)) {
|
||
lib$es6$promise$$internal$$handleForeignThenable(promise, maybeThenable, then);
|
||
} else {
|
||
lib$es6$promise$$internal$$fulfill(promise, maybeThenable);
|
||
}
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$resolve(promise, value) {
|
||
if (promise === value) {
|
||
lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$selfFullfillment());
|
||
} else if (lib$es6$promise$utils$$objectOrFunction(value)) {
|
||
lib$es6$promise$$internal$$handleMaybeThenable(promise, value);
|
||
} else {
|
||
lib$es6$promise$$internal$$fulfill(promise, value);
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$publishRejection(promise) {
|
||
if (promise._onerror) {
|
||
promise._onerror(promise._result);
|
||
}
|
||
|
||
lib$es6$promise$$internal$$publish(promise);
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$fulfill(promise, value) {
|
||
if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }
|
||
|
||
promise._result = value;
|
||
promise._state = lib$es6$promise$$internal$$FULFILLED;
|
||
|
||
if (promise._subscribers.length !== 0) {
|
||
lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, promise);
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$reject(promise, reason) {
|
||
if (promise._state !== lib$es6$promise$$internal$$PENDING) { return; }
|
||
promise._state = lib$es6$promise$$internal$$REJECTED;
|
||
promise._result = reason;
|
||
|
||
lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection, promise);
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection) {
|
||
var subscribers = parent._subscribers;
|
||
var length = subscribers.length;
|
||
|
||
parent._onerror = null;
|
||
|
||
subscribers[length] = child;
|
||
subscribers[length + lib$es6$promise$$internal$$FULFILLED] = onFulfillment;
|
||
subscribers[length + lib$es6$promise$$internal$$REJECTED] = onRejection;
|
||
|
||
if (length === 0 && parent._state) {
|
||
lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish, parent);
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$publish(promise) {
|
||
var subscribers = promise._subscribers;
|
||
var settled = promise._state;
|
||
|
||
if (subscribers.length === 0) { return; }
|
||
|
||
var child, callback, detail = promise._result;
|
||
|
||
for (var i = 0; i < subscribers.length; i += 3) {
|
||
child = subscribers[i];
|
||
callback = subscribers[i + settled];
|
||
|
||
if (child) {
|
||
lib$es6$promise$$internal$$invokeCallback(settled, child, callback, detail);
|
||
} else {
|
||
callback(detail);
|
||
}
|
||
}
|
||
|
||
promise._subscribers.length = 0;
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$ErrorObject() {
|
||
this.error = null;
|
||
}
|
||
|
||
var lib$es6$promise$$internal$$TRY_CATCH_ERROR = new lib$es6$promise$$internal$$ErrorObject();
|
||
|
||
function lib$es6$promise$$internal$$tryCatch(callback, detail) {
|
||
try {
|
||
return callback(detail);
|
||
} catch(e) {
|
||
lib$es6$promise$$internal$$TRY_CATCH_ERROR.error = e;
|
||
return lib$es6$promise$$internal$$TRY_CATCH_ERROR;
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$invokeCallback(settled, promise, callback, detail) {
|
||
var hasCallback = lib$es6$promise$utils$$isFunction(callback),
|
||
value, error, succeeded, failed;
|
||
|
||
if (hasCallback) {
|
||
value = lib$es6$promise$$internal$$tryCatch(callback, detail);
|
||
|
||
if (value === lib$es6$promise$$internal$$TRY_CATCH_ERROR) {
|
||
failed = true;
|
||
error = value.error;
|
||
value = null;
|
||
} else {
|
||
succeeded = true;
|
||
}
|
||
|
||
if (promise === value) {
|
||
lib$es6$promise$$internal$$reject(promise, lib$es6$promise$$internal$$cannotReturnOwn());
|
||
return;
|
||
}
|
||
|
||
} else {
|
||
value = detail;
|
||
succeeded = true;
|
||
}
|
||
|
||
if (promise._state !== lib$es6$promise$$internal$$PENDING) {
|
||
// noop
|
||
} else if (hasCallback && succeeded) {
|
||
lib$es6$promise$$internal$$resolve(promise, value);
|
||
} else if (failed) {
|
||
lib$es6$promise$$internal$$reject(promise, error);
|
||
} else if (settled === lib$es6$promise$$internal$$FULFILLED) {
|
||
lib$es6$promise$$internal$$fulfill(promise, value);
|
||
} else if (settled === lib$es6$promise$$internal$$REJECTED) {
|
||
lib$es6$promise$$internal$$reject(promise, value);
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$$internal$$initializePromise(promise, resolver) {
|
||
try {
|
||
resolver(function resolvePromise(value){
|
||
lib$es6$promise$$internal$$resolve(promise, value);
|
||
}, function rejectPromise(reason) {
|
||
lib$es6$promise$$internal$$reject(promise, reason);
|
||
});
|
||
} catch(e) {
|
||
lib$es6$promise$$internal$$reject(promise, e);
|
||
}
|
||
}
|
||
|
||
function lib$es6$promise$enumerator$$Enumerator(Constructor, input) {
|
||
var enumerator = this;
|
||
|
||
enumerator._instanceConstructor = Constructor;
|
||
enumerator.promise = new Constructor(lib$es6$promise$$internal$$noop);
|
||
|
||
if (enumerator._validateInput(input)) {
|
||
enumerator._input = input;
|
||
enumerator.length = input.length;
|
||
enumerator._remaining = input.length;
|
||
|
||
enumerator._init();
|
||
|
||
if (enumerator.length === 0) {
|
||
lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result);
|
||
} else {
|
||
enumerator.length = enumerator.length || 0;
|
||
enumerator._enumerate();
|
||
if (enumerator._remaining === 0) {
|
||
lib$es6$promise$$internal$$fulfill(enumerator.promise, enumerator._result);
|
||
}
|
||
}
|
||
} else {
|
||
lib$es6$promise$$internal$$reject(enumerator.promise, enumerator._validationError());
|
||
}
|
||
}
|
||
|
||
lib$es6$promise$enumerator$$Enumerator.prototype._validateInput = function(input) {
|
||
return lib$es6$promise$utils$$isArray(input);
|
||
};
|
||
|
||
lib$es6$promise$enumerator$$Enumerator.prototype._validationError = function() {
|
||
return new Error('Array Methods must be provided an Array');
|
||
};
|
||
|
||
lib$es6$promise$enumerator$$Enumerator.prototype._init = function() {
|
||
this._result = new Array(this.length);
|
||
};
|
||
|
||
var lib$es6$promise$enumerator$$default = lib$es6$promise$enumerator$$Enumerator;
|
||
|
||
lib$es6$promise$enumerator$$Enumerator.prototype._enumerate = function() {
|
||
var enumerator = this;
|
||
|
||
var length = enumerator.length;
|
||
var promise = enumerator.promise;
|
||
var input = enumerator._input;
|
||
|
||
for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {
|
||
enumerator._eachEntry(input[i], i);
|
||
}
|
||
};
|
||
|
||
lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry = function(entry, i) {
|
||
var enumerator = this;
|
||
var c = enumerator._instanceConstructor;
|
||
|
||
if (lib$es6$promise$utils$$isMaybeThenable(entry)) {
|
||
if (entry.constructor === c && entry._state !== lib$es6$promise$$internal$$PENDING) {
|
||
entry._onerror = null;
|
||
enumerator._settledAt(entry._state, i, entry._result);
|
||
} else {
|
||
enumerator._willSettleAt(c.resolve(entry), i);
|
||
}
|
||
} else {
|
||
enumerator._remaining--;
|
||
enumerator._result[i] = entry;
|
||
}
|
||
};
|
||
|
||
lib$es6$promise$enumerator$$Enumerator.prototype._settledAt = function(state, i, value) {
|
||
var enumerator = this;
|
||
var promise = enumerator.promise;
|
||
|
||
if (promise._state === lib$es6$promise$$internal$$PENDING) {
|
||
enumerator._remaining--;
|
||
|
||
if (state === lib$es6$promise$$internal$$REJECTED) {
|
||
lib$es6$promise$$internal$$reject(promise, value);
|
||
} else {
|
||
enumerator._result[i] = value;
|
||
}
|
||
}
|
||
|
||
if (enumerator._remaining === 0) {
|
||
lib$es6$promise$$internal$$fulfill(promise, enumerator._result);
|
||
}
|
||
};
|
||
|
||
lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt = function(promise, i) {
|
||
var enumerator = this;
|
||
|
||
lib$es6$promise$$internal$$subscribe(promise, undefined, function(value) {
|
||
enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED, i, value);
|
||
}, function(reason) {
|
||
enumerator._settledAt(lib$es6$promise$$internal$$REJECTED, i, reason);
|
||
});
|
||
};
|
||
function lib$es6$promise$promise$all$$all(entries) {
|
||
return new lib$es6$promise$enumerator$$default(this, entries).promise;
|
||
}
|
||
var lib$es6$promise$promise$all$$default = lib$es6$promise$promise$all$$all;
|
||
function lib$es6$promise$promise$race$$race(entries) {
|
||
/*jshint validthis:true */
|
||
var Constructor = this;
|
||
|
||
var promise = new Constructor(lib$es6$promise$$internal$$noop);
|
||
|
||
if (!lib$es6$promise$utils$$isArray(entries)) {
|
||
lib$es6$promise$$internal$$reject(promise, new TypeError('You must pass an array to race.'));
|
||
return promise;
|
||
}
|
||
|
||
var length = entries.length;
|
||
|
||
function onFulfillment(value) {
|
||
lib$es6$promise$$internal$$resolve(promise, value);
|
||
}
|
||
|
||
function onRejection(reason) {
|
||
lib$es6$promise$$internal$$reject(promise, reason);
|
||
}
|
||
|
||
for (var i = 0; promise._state === lib$es6$promise$$internal$$PENDING && i < length; i++) {
|
||
lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]), undefined, onFulfillment, onRejection);
|
||
}
|
||
|
||
return promise;
|
||
}
|
||
var lib$es6$promise$promise$race$$default = lib$es6$promise$promise$race$$race;
|
||
function lib$es6$promise$promise$resolve$$resolve(object) {
|
||
/*jshint validthis:true */
|
||
var Constructor = this;
|
||
|
||
if (object && typeof object === 'object' && object.constructor === Constructor) {
|
||
return object;
|
||
}
|
||
|
||
var promise = new Constructor(lib$es6$promise$$internal$$noop);
|
||
lib$es6$promise$$internal$$resolve(promise, object);
|
||
return promise;
|
||
}
|
||
var lib$es6$promise$promise$resolve$$default = lib$es6$promise$promise$resolve$$resolve;
|
||
function lib$es6$promise$promise$reject$$reject(reason) {
|
||
/*jshint validthis:true */
|
||
var Constructor = this;
|
||
var promise = new Constructor(lib$es6$promise$$internal$$noop);
|
||
lib$es6$promise$$internal$$reject(promise, reason);
|
||
return promise;
|
||
}
|
||
var lib$es6$promise$promise$reject$$default = lib$es6$promise$promise$reject$$reject;
|
||
|
||
var lib$es6$promise$promise$$counter = 0;
|
||
|
||
function lib$es6$promise$promise$$needsResolver() {
|
||
throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
|
||
}
|
||
|
||
function lib$es6$promise$promise$$needsNew() {
|
||
throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
|
||
}
|
||
|
||
var lib$es6$promise$promise$$default = lib$es6$promise$promise$$Promise;
|
||
/**
|
||
Promise objects represent the eventual result of an asynchronous operation. The
|
||
primary way of interacting with a promise is through its `then` method, which
|
||
registers callbacks to receive either a promise's eventual value or the reason
|
||
why the promise cannot be fulfilled.
|
||
|
||
Terminology
|
||
-----------
|
||
|
||
- `promise` is an object or function with a `then` method whose behavior conforms to this specification.
|
||
- `thenable` is an object or function that defines a `then` method.
|
||
- `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
|
||
- `exception` is a value that is thrown using the throw statement.
|
||
- `reason` is a value that indicates why a promise was rejected.
|
||
- `settled` the final resting state of a promise, fulfilled or rejected.
|
||
|
||
A promise can be in one of three states: pending, fulfilled, or rejected.
|
||
|
||
Promises that are fulfilled have a fulfillment value and are in the fulfilled
|
||
state. Promises that are rejected have a rejection reason and are in the
|
||
rejected state. A fulfillment value is never a thenable.
|
||
|
||
Promises can also be said to *resolve* a value. If this value is also a
|
||
promise, then the original promise's settled state will match the value's
|
||
settled state. So a promise that *resolves* a promise that rejects will
|
||
itself reject, and a promise that *resolves* a promise that fulfills will
|
||
itself fulfill.
|
||
|
||
|
||
Basic Usage:
|
||
------------
|
||
|
||
```js
|
||
var promise = new Promise(function(resolve, reject) {
|
||
// on success
|
||
resolve(value);
|
||
|
||
// on failure
|
||
reject(reason);
|
||
});
|
||
|
||
promise.then(function(value) {
|
||
// on fulfillment
|
||
}, function(reason) {
|
||
// on rejection
|
||
});
|
||
```
|
||
|
||
Advanced Usage:
|
||
---------------
|
||
|
||
Promises shine when abstracting away asynchronous interactions such as
|
||
`XMLHttpRequest`s.
|
||
|
||
```js
|
||
function getJSON(url) {
|
||
return new Promise(function(resolve, reject){
|
||
var xhr = new XMLHttpRequest();
|
||
|
||
xhr.open('GET', url);
|
||
xhr.onreadystatechange = handler;
|
||
xhr.responseType = 'json';
|
||
xhr.setRequestHeader('Accept', 'application/json');
|
||
xhr.send();
|
||
|
||
function handler() {
|
||
if (this.readyState === this.DONE) {
|
||
if (this.status === 200) {
|
||
resolve(this.response);
|
||
} else {
|
||
reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
|
||
}
|
||
}
|
||
};
|
||
});
|
||
}
|
||
|
||
getJSON('/posts.json').then(function(json) {
|
||
// on fulfillment
|
||
}, function(reason) {
|
||
// on rejection
|
||
});
|
||
```
|
||
|
||
Unlike callbacks, promises are great composable primitives.
|
||
|
||
```js
|
||
Promise.all([
|
||
getJSON('/posts'),
|
||
getJSON('/comments')
|
||
]).then(function(values){
|
||
values[0] // => postsJSON
|
||
values[1] // => commentsJSON
|
||
|
||
return values;
|
||
});
|
||
```
|
||
|
||
@class Promise
|
||
@param {function} resolver
|
||
Useful for tooling.
|
||
@constructor
|
||
*/
|
||
function lib$es6$promise$promise$$Promise(resolver) {
|
||
this._id = lib$es6$promise$promise$$counter++;
|
||
this._state = undefined;
|
||
this._result = undefined;
|
||
this._subscribers = [];
|
||
|
||
if (lib$es6$promise$$internal$$noop !== resolver) {
|
||
if (!lib$es6$promise$utils$$isFunction(resolver)) {
|
||
lib$es6$promise$promise$$needsResolver();
|
||
}
|
||
|
||
if (!(this instanceof lib$es6$promise$promise$$Promise)) {
|
||
lib$es6$promise$promise$$needsNew();
|
||
}
|
||
|
||
lib$es6$promise$$internal$$initializePromise(this, resolver);
|
||
}
|
||
}
|
||
|
||
lib$es6$promise$promise$$Promise.all = lib$es6$promise$promise$all$$default;
|
||
lib$es6$promise$promise$$Promise.race = lib$es6$promise$promise$race$$default;
|
||
lib$es6$promise$promise$$Promise.resolve = lib$es6$promise$promise$resolve$$default;
|
||
lib$es6$promise$promise$$Promise.reject = lib$es6$promise$promise$reject$$default;
|
||
lib$es6$promise$promise$$Promise._setScheduler = lib$es6$promise$asap$$setScheduler;
|
||
lib$es6$promise$promise$$Promise._setAsap = lib$es6$promise$asap$$setAsap;
|
||
lib$es6$promise$promise$$Promise._asap = lib$es6$promise$asap$$asap;
|
||
|
||
lib$es6$promise$promise$$Promise.prototype = {
|
||
constructor: lib$es6$promise$promise$$Promise,
|
||
|
||
/**
|
||
The primary way of interacting with a promise is through its `then` method,
|
||
which registers callbacks to receive either a promise's eventual value or the
|
||
reason why the promise cannot be fulfilled.
|
||
|
||
```js
|
||
findUser().then(function(user){
|
||
// user is available
|
||
}, function(reason){
|
||
// user is unavailable, and you are given the reason why
|
||
});
|
||
```
|
||
|
||
Chaining
|
||
--------
|
||
|
||
The return value of `then` is itself a promise. This second, 'downstream'
|
||
promise is resolved with the return value of the first promise's fulfillment
|
||
or rejection handler, or rejected if the handler throws an exception.
|
||
|
||
```js
|
||
findUser().then(function (user) {
|
||
return user.name;
|
||
}, function (reason) {
|
||
return 'default name';
|
||
}).then(function (userName) {
|
||
// If `findUser` fulfilled, `userName` will be the user's name, otherwise it
|
||
// will be `'default name'`
|
||
});
|
||
|
||
findUser().then(function (user) {
|
||
throw new Error('Found user, but still unhappy');
|
||
}, function (reason) {
|
||
throw new Error('`findUser` rejected and we're unhappy');
|
||
}).then(function (value) {
|
||
// never reached
|
||
}, function (reason) {
|
||
// if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
|
||
// If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
|
||
});
|
||
```
|
||
If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
|
||
|
||
```js
|
||
findUser().then(function (user) {
|
||
throw new PedagogicalException('Upstream error');
|
||
}).then(function (value) {
|
||
// never reached
|
||
}).then(function (value) {
|
||
// never reached
|
||
}, function (reason) {
|
||
// The `PedgagocialException` is propagated all the way down to here
|
||
});
|
||
```
|
||
|
||
Assimilation
|
||
------------
|
||
|
||
Sometimes the value you want to propagate to a downstream promise can only be
|
||
retrieved asynchronously. This can be achieved by returning a promise in the
|
||
fulfillment or rejection handler. The downstream promise will then be pending
|
||
until the returned promise is settled. This is called *assimilation*.
|
||
|
||
```js
|
||
findUser().then(function (user) {
|
||
return findCommentsByAuthor(user);
|
||
}).then(function (comments) {
|
||
// The user's comments are now available
|
||
});
|
||
```
|
||
|
||
If the assimliated promise rejects, then the downstream promise will also reject.
|
||
|
||
```js
|
||
findUser().then(function (user) {
|
||
return findCommentsByAuthor(user);
|
||
}).then(function (comments) {
|
||
// If `findCommentsByAuthor` fulfills, we'll have the value here
|
||
}, function (reason) {
|
||
// If `findCommentsByAuthor` rejects, we'll have the reason here
|
||
});
|
||
```
|
||
|
||
Simple Example
|
||
--------------
|
||
|
||
Synchronous Example
|
||
|
||
```javascript
|
||
var result;
|
||
|
||
try {
|
||
result = findResult();
|
||
// success
|
||
} catch(reason) {
|
||
// failure
|
||
}
|
||
```
|
||
|
||
Errback Example
|
||
|
||
```js
|
||
findResult(function(result, err){
|
||
if (err) {
|
||
// failure
|
||
} else {
|
||
// success
|
||
}
|
||
});
|
||
```
|
||
|
||
Promise Example;
|
||
|
||
```javascript
|
||
findResult().then(function(result){
|
||
// success
|
||
}, function(reason){
|
||
// failure
|
||
});
|
||
```
|
||
|
||
Advanced Example
|
||
--------------
|
||
|
||
Synchronous Example
|
||
|
||
```javascript
|
||
var author, books;
|
||
|
||
try {
|
||
author = findAuthor();
|
||
books = findBooksByAuthor(author);
|
||
// success
|
||
} catch(reason) {
|
||
// failure
|
||
}
|
||
```
|
||
|
||
Errback Example
|
||
|
||
```js
|
||
|
||
function foundBooks(books) {
|
||
|
||
}
|
||
|
||
function failure(reason) {
|
||
|
||
}
|
||
|
||
findAuthor(function(author, err){
|
||
if (err) {
|
||
failure(err);
|
||
// failure
|
||
} else {
|
||
try {
|
||
findBoooksByAuthor(author, function(books, err) {
|
||
if (err) {
|
||
failure(err);
|
||
} else {
|
||
try {
|
||
foundBooks(books);
|
||
} catch(reason) {
|
||
failure(reason);
|
||
}
|
||
}
|
||
});
|
||
} catch(error) {
|
||
failure(err);
|
||
}
|
||
// success
|
||
}
|
||
});
|
||
```
|
||
|
||
Promise Example;
|
||
|
||
```javascript
|
||
findAuthor().
|
||
then(findBooksByAuthor).
|
||
then(function(books){
|
||
// found books
|
||
}).catch(function(reason){
|
||
// something went wrong
|
||
});
|
||
```
|
||
|
||
@method then
|
||
@param {Function} onFulfilled
|
||
@param {Function} onRejected
|
||
Useful for tooling.
|
||
@return {Promise}
|
||
*/
|
||
then: function(onFulfillment, onRejection) {
|
||
var parent = this;
|
||
var state = parent._state;
|
||
|
||
if (state === lib$es6$promise$$internal$$FULFILLED && !onFulfillment || state === lib$es6$promise$$internal$$REJECTED && !onRejection) {
|
||
return this;
|
||
}
|
||
|
||
var child = new this.constructor(lib$es6$promise$$internal$$noop);
|
||
var result = parent._result;
|
||
|
||
if (state) {
|
||
var callback = arguments[state - 1];
|
||
lib$es6$promise$asap$$asap(function(){
|
||
lib$es6$promise$$internal$$invokeCallback(state, child, callback, result);
|
||
});
|
||
} else {
|
||
lib$es6$promise$$internal$$subscribe(parent, child, onFulfillment, onRejection);
|
||
}
|
||
|
||
return child;
|
||
},
|
||
|
||
/**
|
||
`catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
|
||
as the catch block of a try/catch statement.
|
||
|
||
```js
|
||
function findAuthor(){
|
||
throw new Error('couldn't find that author');
|
||
}
|
||
|
||
// synchronous
|
||
try {
|
||
findAuthor();
|
||
} catch(reason) {
|
||
// something went wrong
|
||
}
|
||
|
||
// async with promises
|
||
findAuthor().catch(function(reason){
|
||
// something went wrong
|
||
});
|
||
```
|
||
|
||
@method catch
|
||
@param {Function} onRejection
|
||
Useful for tooling.
|
||
@return {Promise}
|
||
*/
|
||
'catch': function(onRejection) {
|
||
return this.then(null, onRejection);
|
||
}
|
||
};
|
||
function lib$es6$promise$polyfill$$polyfill() {
|
||
var local;
|
||
|
||
if (typeof global !== 'undefined') {
|
||
local = global;
|
||
} else if (typeof self !== 'undefined') {
|
||
local = self;
|
||
} else {
|
||
try {
|
||
local = Function('return this')();
|
||
} catch (e) {
|
||
throw new Error('polyfill failed because global object is unavailable in this environment');
|
||
}
|
||
}
|
||
|
||
var P = local.Promise;
|
||
|
||
if (P && Object.prototype.toString.call(P.resolve()) === '[object Promise]' && !P.cast) {
|
||
return;
|
||
}
|
||
|
||
local.Promise = lib$es6$promise$promise$$default;
|
||
}
|
||
var lib$es6$promise$polyfill$$default = lib$es6$promise$polyfill$$polyfill;
|
||
|
||
var lib$es6$promise$umd$$ES6Promise = {
|
||
'Promise': lib$es6$promise$promise$$default,
|
||
'polyfill': lib$es6$promise$polyfill$$default
|
||
};
|
||
|
||
/* global define:true module:true window: true */
|
||
if (typeof define === 'function' && define['amd']) {
|
||
define(function() { return lib$es6$promise$umd$$ES6Promise; });
|
||
} else if (typeof module !== 'undefined' && module['exports']) {
|
||
module['exports'] = lib$es6$promise$umd$$ES6Promise;
|
||
} else if (typeof this !== 'undefined') {
|
||
this['ES6Promise'] = lib$es6$promise$umd$$ES6Promise;
|
||
}
|
||
|
||
lib$es6$promise$polyfill$$default();
|
||
}).call(this);
|
||
|
||
|
||
/*
|
||
* vim: expandtab shiftwidth=4 softtabstop=4
|
||
*/
|
||
|
||
/* global dav */
|
||
if (typeof dav == 'undefined') { dav = {}; };
|
||
|
||
dav._XML_CHAR_MAP = {
|
||
'<': '<',
|
||
'>': '>',
|
||
'&': '&',
|
||
'"': '"',
|
||
"'": '''
|
||
};
|
||
|
||
dav._escapeXml = function(s) {
|
||
return s.replace(/[<>&"']/g, function (ch) {
|
||
return dav._XML_CHAR_MAP[ch];
|
||
});
|
||
};
|
||
|
||
dav.Client = function(options) {
|
||
var i;
|
||
for(i in options) {
|
||
this[i] = options[i];
|
||
}
|
||
|
||
};
|
||
|
||
dav.Client.prototype = {
|
||
|
||
baseUrl : null,
|
||
|
||
userName : null,
|
||
|
||
password : null,
|
||
|
||
|
||
xmlNamespaces : {
|
||
'DAV:' : 'd'
|
||
},
|
||
|
||
/**
|
||
* Generates a propFind request.
|
||
*
|
||
* @param {string} url Url to do the propfind request on
|
||
* @param {Array} properties List of properties to retrieve.
|
||
* @param {Object} [headers] headers
|
||
* @return {Promise}
|
||
*/
|
||
propFind : function(url, properties, depth, headers) {
|
||
|
||
if(typeof depth == "undefined") {
|
||
depth = 0;
|
||
}
|
||
|
||
headers = headers || {};
|
||
|
||
headers['Depth'] = depth;
|
||
headers['Content-Type'] = 'application/xml; charset=utf-8';
|
||
|
||
var body =
|
||
'<?xml version="1.0"?>\n' +
|
||
'<d:propfind ';
|
||
var namespace;
|
||
for (namespace in this.xmlNamespaces) {
|
||
body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"';
|
||
}
|
||
body += '>\n' +
|
||
' <d:prop>\n';
|
||
|
||
for(var ii in properties) {
|
||
|
||
var property = this.parseClarkNotation(properties[ii]);
|
||
if (this.xmlNamespaces[property.namespace]) {
|
||
body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\n';
|
||
} else {
|
||
body+=' <x:' + property.name + ' xmlns:x="' + property.namespace + '" />\n';
|
||
}
|
||
|
||
}
|
||
body+=' </d:prop>\n';
|
||
body+='</d:propfind>';
|
||
|
||
return this.request('PROPFIND', url, headers, body).then(
|
||
function(result) {
|
||
|
||
if (depth===0) {
|
||
return {
|
||
status: result.status,
|
||
body: result.body[0],
|
||
xhr: result.xhr
|
||
};
|
||
} else {
|
||
return {
|
||
status: result.status,
|
||
body: result.body,
|
||
xhr: result.xhr
|
||
};
|
||
}
|
||
|
||
}.bind(this)
|
||
);
|
||
|
||
},
|
||
|
||
/**
|
||
* Renders a "d:set" block for the given properties.
|
||
*
|
||
* @param {Object.<String,String>} properties
|
||
* @return {String} XML "<d:set>" block
|
||
*/
|
||
_renderPropSet: function(properties) {
|
||
var body = ' <d:set>\n' +
|
||
' <d:prop>\n';
|
||
|
||
for(var ii in properties) {
|
||
var property = this.parseClarkNotation(ii);
|
||
var propName;
|
||
var propValue = properties[ii];
|
||
if (this.xmlNamespaces[property.namespace]) {
|
||
propName = this.xmlNamespaces[property.namespace] + ':' + property.name;
|
||
} else {
|
||
propName = 'x:' + property.name + ' xmlns:x="' + property.namespace + '"';
|
||
}
|
||
|
||
// FIXME: hard-coded for now until we allow properties to
|
||
// specify whether to be escaped or not
|
||
if (propName !== 'd:resourcetype') {
|
||
propValue = dav._escapeXml(propValue);
|
||
}
|
||
body += ' <' + propName + '>' + propValue + '</' + propName + '>\n';
|
||
}
|
||
body +=' </d:prop>\n';
|
||
body +=' </d:set>\n';
|
||
return body;
|
||
},
|
||
|
||
/**
|
||
* Generates a propPatch request.
|
||
*
|
||
* @param {string} url Url to do the proppatch request on
|
||
* @param {Object.<String,String>} properties List of properties to store.
|
||
* @param {Object} [headers] headers
|
||
* @return {Promise}
|
||
*/
|
||
propPatch : function(url, properties, headers) {
|
||
headers = headers || {};
|
||
|
||
headers['Content-Type'] = 'application/xml; charset=utf-8';
|
||
|
||
var body =
|
||
'<?xml version="1.0"?>\n' +
|
||
'<d:propertyupdate ';
|
||
var namespace;
|
||
for (namespace in this.xmlNamespaces) {
|
||
body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"';
|
||
}
|
||
body += '>\n' + this._renderPropSet(properties);
|
||
body += '</d:propertyupdate>';
|
||
|
||
return this.request('PROPPATCH', url, headers, body).then(
|
||
function(result) {
|
||
return {
|
||
status: result.status,
|
||
body: result.body,
|
||
xhr: result.xhr
|
||
};
|
||
}.bind(this)
|
||
);
|
||
|
||
},
|
||
|
||
/**
|
||
* Generates a MKCOL request.
|
||
* If attributes are given, it will use an extended MKCOL request.
|
||
*
|
||
* @param {string} url Url to do the proppatch request on
|
||
* @param {Object.<String,String>} [properties] list of properties to store.
|
||
* @param {Object} [headers] headers
|
||
* @return {Promise}
|
||
*/
|
||
mkcol : function(url, properties, headers) {
|
||
var body = '';
|
||
headers = headers || {};
|
||
headers['Content-Type'] = 'application/xml; charset=utf-8';
|
||
|
||
if (properties) {
|
||
body =
|
||
'<?xml version="1.0"?>\n' +
|
||
'<d:mkcol';
|
||
var namespace;
|
||
for (namespace in this.xmlNamespaces) {
|
||
body += ' xmlns:' + this.xmlNamespaces[namespace] + '="' + namespace + '"';
|
||
}
|
||
body += '>\n' + this._renderPropSet(properties);
|
||
body +='</d:mkcol>';
|
||
}
|
||
|
||
return this.request('MKCOL', url, headers, body).then(
|
||
function(result) {
|
||
return {
|
||
status: result.status,
|
||
body: result.body,
|
||
xhr: result.xhr
|
||
};
|
||
}.bind(this)
|
||
);
|
||
|
||
},
|
||
|
||
/**
|
||
* Performs a HTTP request, and returns a Promise
|
||
*
|
||
* @param {string} method HTTP method
|
||
* @param {string} url Relative or absolute url
|
||
* @param {Object} headers HTTP headers as an object.
|
||
* @param {string} body HTTP request body.
|
||
* @return {Promise}
|
||
*/
|
||
request : function(method, url, headers, body) {
|
||
|
||
var self = this;
|
||
var xhr = this.xhrProvider();
|
||
headers = headers || {};
|
||
|
||
if (this.userName) {
|
||
headers['Authorization'] = 'Basic ' + btoa(this.userName + ':' + this.password);
|
||
// xhr.open(method, this.resolveUrl(url), true, this.userName, this.password);
|
||
}
|
||
xhr.open(method, this.resolveUrl(url), true);
|
||
var ii;
|
||
for(ii in headers) {
|
||
xhr.setRequestHeader(ii, headers[ii]);
|
||
}
|
||
|
||
// Work around for edge
|
||
if (body === undefined) {
|
||
xhr.send();
|
||
} else {
|
||
xhr.send(body);
|
||
}
|
||
|
||
return new Promise(function(fulfill, reject) {
|
||
|
||
xhr.onreadystatechange = function() {
|
||
|
||
if (xhr.readyState !== 4) {
|
||
return;
|
||
}
|
||
|
||
var resultBody = xhr.response;
|
||
if (xhr.status === 207) {
|
||
resultBody = self.parseMultiStatus(xhr.response);
|
||
}
|
||
|
||
fulfill({
|
||
body: resultBody,
|
||
status: xhr.status,
|
||
xhr: xhr
|
||
});
|
||
|
||
};
|
||
|
||
xhr.ontimeout = function() {
|
||
|
||
reject(new Error('Timeout exceeded'));
|
||
|
||
};
|
||
|
||
});
|
||
|
||
},
|
||
|
||
/**
|
||
* Returns an XMLHttpRequest object.
|
||
*
|
||
* This is in its own method, so it can be easily overridden.
|
||
*
|
||
* @return {XMLHttpRequest}
|
||
*/
|
||
xhrProvider : function() {
|
||
|
||
return new XMLHttpRequest();
|
||
|
||
},
|
||
|
||
/**
|
||
* Parses a property node.
|
||
*
|
||
* Either returns a string if the node only contains text, or returns an
|
||
* array of non-text subnodes.
|
||
*
|
||
* @param {Object} propNode node to parse
|
||
* @return {string|Array} text content as string or array of subnodes, excluding text nodes
|
||
*/
|
||
_parsePropNode: function(propNode) {
|
||
var content = null;
|
||
if (propNode.childNodes && propNode.childNodes.length > 0) {
|
||
var subNodes = [];
|
||
// filter out text nodes
|
||
for (var j = 0; j < propNode.childNodes.length; j++) {
|
||
var node = propNode.childNodes[j];
|
||
if (node.nodeType === 1) {
|
||
subNodes.push(node);
|
||
}
|
||
}
|
||
if (subNodes.length) {
|
||
content = subNodes;
|
||
}
|
||
}
|
||
|
||
return content || propNode.textContent || propNode.text || '';
|
||
},
|
||
|
||
/**
|
||
* Parses a multi-status response body.
|
||
*
|
||
* @param {string} xmlBody
|
||
* @param {Array}
|
||
*/
|
||
parseMultiStatus : function(xmlBody) {
|
||
|
||
var parser = new DOMParser();
|
||
var doc = parser.parseFromString(xmlBody, "application/xml");
|
||
|
||
var resolver = function(foo) {
|
||
var ii;
|
||
for(ii in this.xmlNamespaces) {
|
||
if (this.xmlNamespaces[ii] === foo) {
|
||
return ii;
|
||
}
|
||
}
|
||
}.bind(this);
|
||
|
||
var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);
|
||
|
||
var result = [];
|
||
var responseNode = responseIterator.iterateNext();
|
||
|
||
while(responseNode) {
|
||
|
||
var response = {
|
||
href : null,
|
||
propStat : []
|
||
};
|
||
|
||
response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;
|
||
|
||
var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);
|
||
var propStatNode = propStatIterator.iterateNext();
|
||
|
||
while(propStatNode) {
|
||
var propStat = {
|
||
status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,
|
||
properties : {},
|
||
};
|
||
|
||
var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);
|
||
|
||
var propNode = propIterator.iterateNext();
|
||
while(propNode) {
|
||
var content = this._parsePropNode(propNode);
|
||
propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;
|
||
propNode = propIterator.iterateNext();
|
||
|
||
}
|
||
response.propStat.push(propStat);
|
||
propStatNode = propStatIterator.iterateNext();
|
||
|
||
|
||
}
|
||
|
||
result.push(response);
|
||
responseNode = responseIterator.iterateNext();
|
||
|
||
}
|
||
|
||
return result;
|
||
|
||
},
|
||
|
||
/**
|
||
* Takes a relative url, and maps it to an absolute url, using the baseUrl
|
||
*
|
||
* @param {string} url
|
||
* @return {string}
|
||
*/
|
||
resolveUrl : function(url) {
|
||
|
||
// Note: this is rudamentary.. not sure yet if it handles every case.
|
||
if (/^https?:\/\//i.test(url)) {
|
||
// absolute
|
||
return url;
|
||
}
|
||
|
||
var baseParts = this.parseUrl(this.baseUrl);
|
||
if (url.charAt('/')) {
|
||
// Url starts with a slash
|
||
return baseParts.root + url;
|
||
}
|
||
|
||
// Url does not start with a slash, we need grab the base url right up until the last slash.
|
||
var newUrl = baseParts.root + '/';
|
||
if (baseParts.path.lastIndexOf('/')!==-1) {
|
||
newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';
|
||
}
|
||
newUrl+=url;
|
||
return url;
|
||
|
||
},
|
||
|
||
/**
|
||
* Parses a url and returns its individual components.
|
||
*
|
||
* @param {String} url
|
||
* @return {Object}
|
||
*/
|
||
parseUrl : function(url) {
|
||
|
||
var parts = url.match(/^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/);
|
||
var result = {
|
||
url : parts[0],
|
||
scheme : parts[1],
|
||
host : parts[3],
|
||
port : parts[4],
|
||
path : parts[5],
|
||
query : parts[6],
|
||
fragment : parts[7],
|
||
};
|
||
result.root =
|
||
result.scheme + '://' +
|
||
result.host +
|
||
(result.port ? ':' + result.port : '');
|
||
|
||
return result;
|
||
|
||
},
|
||
|
||
parseClarkNotation : function(propertyName) {
|
||
|
||
var result = propertyName.match(/^{([^}]+)}(.*)$/);
|
||
if (!result) {
|
||
return;
|
||
}
|
||
|
||
return {
|
||
name : result[2],
|
||
namespace : result[1]
|
||
};
|
||
|
||
}
|
||
|
||
};
|
||
|
||
|
||
/*!
|
||
* clipboard.js v1.6.1
|
||
* https://zenorocha.github.io/clipboard.js
|
||
*
|
||
* Licensed MIT © Zeno Rocha
|
||
*/
|
||
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Clipboard=e()}}(function(){var e,t,n;return function e(t,n,o){function i(a,c){if(!n[a]){if(!t[a]){var l="function"==typeof require&&require;if(!c&&l)return l(a,!0);if(r)return r(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var s=n[a]={exports:{}};t[a][0].call(s.exports,function(e){var n=t[a][1][e];return i(n?n:e)},s,s.exports,e,t,n,o)}return n[a].exports}for(var r="function"==typeof require&&require,a=0;a<o.length;a++)i(o[a]);return i}({1:[function(e,t,n){function o(e,t){for(;e&&e.nodeType!==i;){if(e.matches(t))return e;e=e.parentNode}}var i=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}t.exports=o},{}],2:[function(e,t,n){function o(e,t,n,o,r){var a=i.apply(this,arguments);return e.addEventListener(n,a,r),{destroy:function(){e.removeEventListener(n,a,r)}}}function i(e,t,n,o){return function(n){n.delegateTarget=r(n.target,t),n.delegateTarget&&o.call(e,n)}}var r=e("./closest");t.exports=o},{"./closest":1}],3:[function(e,t,n){n.node=function(e){return void 0!==e&&e instanceof HTMLElement&&1===e.nodeType},n.nodeList=function(e){var t=Object.prototype.toString.call(e);return void 0!==e&&("[object NodeList]"===t||"[object HTMLCollection]"===t)&&"length"in e&&(0===e.length||n.node(e[0]))},n.string=function(e){return"string"==typeof e||e instanceof String},n.fn=function(e){var t=Object.prototype.toString.call(e);return"[object Function]"===t}},{}],4:[function(e,t,n){function o(e,t,n){if(!e&&!t&&!n)throw new Error("Missing required arguments");if(!c.string(t))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(e))return i(e,t,n);if(c.nodeList(e))return r(e,t,n);if(c.string(e))return a(e,t,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function i(e,t,n){return e.addEventListener(t,n),{destroy:function(){e.removeEventListener(t,n)}}}function r(e,t,n){return Array.prototype.forEach.call(e,function(e){e.addEventListener(t,n)}),{destroy:function(){Array.prototype.forEach.call(e,function(e){e.removeEventListener(t,n)})}}}function a(e,t,n){return l(document.body,e,t,n)}var c=e("./is"),l=e("delegate");t.exports=o},{"./is":3,delegate:2}],5:[function(e,t,n){function o(e){var t;if("SELECT"===e.nodeName)e.focus(),t=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){var n=e.hasAttribute("readonly");n||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),n||e.removeAttribute("readonly"),t=e.value}else{e.hasAttribute("contenteditable")&&e.focus();var o=window.getSelection(),i=document.createRange();i.selectNodeContents(e),o.removeAllRanges(),o.addRange(i),t=o.toString()}return t}t.exports=o},{}],6:[function(e,t,n){function o(){}o.prototype={on:function(e,t,n){var o=this.e||(this.e={});return(o[e]||(o[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){function o(){i.off(e,o),t.apply(n,arguments)}var i=this;return o._=t,this.on(e,o,n)},emit:function(e){var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),o=0,i=n.length;for(o;o<i;o++)n[o].fn.apply(n[o].ctx,t);return this},off:function(e,t){var n=this.e||(this.e={}),o=n[e],i=[];if(o&&t)for(var r=0,a=o.length;r<a;r++)o[r].fn!==t&&o[r].fn._!==t&&i.push(o[r]);return i.length?n[e]=i:delete n[e],this}},t.exports=o},{}],7:[function(t,n,o){!function(i,r){if("function"==typeof e&&e.amd)e(["module","select"],r);else if("undefined"!=typeof o)r(n,t("select"));else{var a={exports:{}};r(a,i.select),i.clipboardAction=a.exports}}(this,function(e,t){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=n(t),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),c=function(){function e(t){o(this,e),this.resolveOptions(t),this.initSelection()}return a(e,[{key:"resolveOptions",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function e(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function e(){var t=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=document.body.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px";var o=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=o+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,document.body.appendChild(this.fakeElem),this.selectedText=(0,i.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function e(){this.fakeHandler&&(document.body.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(document.body.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function e(){this.selectedText=(0,i.default)(this.target),this.copyText()}},{key:"copyText",value:function e(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function e(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function e(){this.target&&this.target.blur(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function e(){this.removeFake()}},{key:"action",set:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function e(){return this._action}},{key:"target",set:function e(t){if(void 0!==t){if(!t||"object"!==("undefined"==typeof t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function e(){return this._target}}]),e}();e.exports=c})},{select:5}],8:[function(t,n,o){!function(i,r){if("function"==typeof e&&e.amd)e(["module","./clipboard-action","tiny-emitter","good-listener"],r);else if("undefined"!=typeof o)r(n,t("./clipboard-action"),t("tiny-emitter"),t("good-listener"));else{var a={exports:{}};r(a,i.clipboardAction,i.tinyEmitter,i.goodListener),i.clipboard=a.exports}}(this,function(e,t,n,o){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function c(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e,t){var n="data-clipboard-"+e;if(t.hasAttribute(n))return t.getAttribute(n)}var u=i(t),s=i(n),f=i(o),d=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),h=function(e){function t(e,n){r(this,t);var o=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.resolveOptions(n),o.listenClick(e),o}return c(t,e),d(t,[{key:"resolveOptions",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText}},{key:"listenClick",value:function e(t){var n=this;this.listener=(0,f.default)(t,"click",function(e){return n.onClick(e)})}},{key:"onClick",value:function e(t){var n=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new u.default({action:this.action(n),target:this.target(n),text:this.text(n),trigger:n,emitter:this})}},{key:"defaultAction",value:function e(t){return l("action",t)}},{key:"defaultTarget",value:function e(t){var n=l("target",t);if(n)return document.querySelector(n)}},{key:"defaultText",value:function e(t){return l("text",t)}},{key:"destroy",value:function e(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],n="string"==typeof t?[t]:t,o=!!document.queryCommandSupported;return n.forEach(function(e){o=o&&!!document.queryCommandSupported(e)}),o}}]),t}(s.default);e.exports=h})},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8)});
|
||
/*!
|
||
Autosize 3.0.20
|
||
license: MIT
|
||
http://www.jacklmoore.com/autosize
|
||
*/
|
||
!function(e,t){if("function"==typeof define&&define.amd)define(["exports","module"],t);else if("undefined"!=typeof exports&&"undefined"!=typeof module)t(exports,module);else{var n={exports:{}};t(n.exports,n),e.autosize=n.exports}}(this,function(e,t){"use strict";function n(e){function t(){var t=window.getComputedStyle(e,null);"vertical"===t.resize?e.style.resize="none":"both"===t.resize&&(e.style.resize="horizontal"),s="content-box"===t.boxSizing?-(parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)):parseFloat(t.borderTopWidth)+parseFloat(t.borderBottomWidth),isNaN(s)&&(s=0),l()}function n(t){var n=e.style.width;e.style.width="0px",e.offsetWidth,e.style.width=n,e.style.overflowY=t}function o(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push({node:e.parentNode,scrollTop:e.parentNode.scrollTop}),e=e.parentNode;return t}function r(){var t=e.style.height,n=o(e),r=document.documentElement&&document.documentElement.scrollTop;e.style.height="auto";var i=e.scrollHeight+s;return 0===e.scrollHeight?void(e.style.height=t):(e.style.height=i+"px",u=e.clientWidth,n.forEach(function(e){e.node.scrollTop=e.scrollTop}),void(r&&(document.documentElement.scrollTop=r)))}function l(){r();var t=Math.round(parseFloat(e.style.height)),o=window.getComputedStyle(e,null),i=Math.round(parseFloat(o.height));if(i!==t?"visible"!==o.overflowY&&(n("visible"),r(),i=Math.round(parseFloat(window.getComputedStyle(e,null).height))):"hidden"!==o.overflowY&&(n("hidden"),r(),i=Math.round(parseFloat(window.getComputedStyle(e,null).height))),a!==i){a=i;var l=d("autosize:resized");try{e.dispatchEvent(l)}catch(e){}}}if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!i.has(e)){var s=null,u=e.clientWidth,a=null,p=function(){e.clientWidth!==u&&l()},c=function(t){window.removeEventListener("resize",p,!1),e.removeEventListener("input",l,!1),e.removeEventListener("keyup",l,!1),e.removeEventListener("autosize:destroy",c,!1),e.removeEventListener("autosize:update",l,!1),Object.keys(t).forEach(function(n){e.style[n]=t[n]}),i.delete(e)}.bind(e,{height:e.style.height,resize:e.style.resize,overflowY:e.style.overflowY,overflowX:e.style.overflowX,wordWrap:e.style.wordWrap});e.addEventListener("autosize:destroy",c,!1),"onpropertychange"in e&&"oninput"in e&&e.addEventListener("keyup",l,!1),window.addEventListener("resize",p,!1),e.addEventListener("input",l,!1),e.addEventListener("autosize:update",l,!1),e.style.overflowX="hidden",e.style.wordWrap="break-word",i.set(e,{destroy:c,update:l}),t()}}function o(e){var t=i.get(e);t&&t.destroy()}function r(e){var t=i.get(e);t&&t.update()}var i="function"==typeof Map?new Map:function(){var e=[],t=[];return{has:function(t){return e.indexOf(t)>-1},get:function(n){return t[e.indexOf(n)]},set:function(n,o){e.indexOf(n)===-1&&(e.push(n),t.push(o))},delete:function(n){var o=e.indexOf(n);o>-1&&(e.splice(o,1),t.splice(o,1))}}}(),d=function(e){return new Event(e,{bubbles:!0})};try{new Event("test")}catch(e){d=function(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!1),t}}var l=null;"undefined"==typeof window||"function"!=typeof window.getComputedStyle?(l=function(e){return e},l.destroy=function(e){return e},l.update=function(e){return e}):(l=function(e,t){return e&&Array.prototype.forEach.call(e.length?e:[e],function(e){return n(e,t)}),e},l.destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e},l.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],r),e}),t.exports=l});
|
||
(function(e){"use strict";var t=typeof window==="undefined"?null:window;if(typeof define==="function"&&define.amd){define(function(){return e(t)})}else if(typeof module!=="undefined"){module.exports=e(t)}else{t.DOMPurify=e(t)}})(function e(t){"use strict";var r=function(t){return e(t)};r.version="0.8.5";r.removed=[];if(!t||!t.document||t.document.nodeType!==9){r.isSupported=false;return r}var n=t.document;var a=n;var i=t.DocumentFragment;var o=t.HTMLTemplateElement;var l=t.Node;var s=t.NodeFilter;var f=t.NamedNodeMap||t.MozNamedAttrMap;var c=t.Text;var u=t.Comment;var d=t.DOMParser;if(typeof o==="function"){var m=n.createElement("template");if(m.content&&m.content.ownerDocument){n=m.content.ownerDocument}}var p=n.implementation;var v=n.createNodeIterator;var h=n.getElementsByTagName;var g=n.createDocumentFragment;var y=a.importNode;var b={};r.isSupported=typeof p.createHTMLDocument!=="undefined"&&n.documentMode!==9;var T=function(e,t){var r=t.length;while(r--){if(typeof t[r]==="string"){t[r]=t[r].toLowerCase()}e[t[r]]=true}return e};var A=function(e){var t={};var r;for(r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return t};var x=null;var k=T({},["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr","svg","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","switch","symbol","text","textpath","title","tref","tspan","view","vkern","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feMerge","feMergeNode","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmuliscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mpspace","msqrt","mystyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","#text"]);var w=null;var E=T({},["accept","action","align","alt","autocomplete","background","bgcolor","border","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","coords","datetime","default","dir","disabled","download","enctype","face","for","headers","height","hidden","high","href","hreflang","id","ismap","label","lang","list","loop","low","max","maxlength","media","method","min","multiple","name","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","rows","rowspan","spellcheck","scope","selected","shape","size","span","srclang","start","src","step","style","summary","tabindex","title","type","usemap","valign","value","width","xmlns","accent-height","accumulate","additivive","alignment-baseline","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","fill","fill-opacity","fill-rule","filter","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","image-rendering","in","in2","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mode","min","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","specularconstant","specularexponent","spreadmethod","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","surfacescale","targetx","targety","transform","text-anchor","text-decoration","text-rendering","textlength","u1","u2","unicode","values","viewbox","visibility","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","y","y1","y2","z","zoomandpan","accent","accentunder","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","display","displaystyle","fence","frame","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]);var S=null;var N=null;var D=true;var M=false;var O=false;var L=false;var _=/\{\{[\s\S]*|[\s\S]*\}\}/gm;var C=/<%[\s\S]*|[\s\S]*%>/gm;var R=false;var z=false;var F=false;var H=false;var j=true;var B=true;var I=T({},["audio","head","math","script","style","svg","video"]);var W=T({},["audio","video","img","source"]);var G=T({},["alt","class","for","id","label","name","pattern","placeholder","summary","title","value","style","xmlns"]);var q=null;var P=n.createElement("form");var U=function(e){if(typeof e!=="object"){e={}}x="ALLOWED_TAGS"in e?T({},e.ALLOWED_TAGS):k;w="ALLOWED_ATTR"in e?T({},e.ALLOWED_ATTR):E;S="FORBID_TAGS"in e?T({},e.FORBID_TAGS):{};N="FORBID_ATTR"in e?T({},e.FORBID_ATTR):{};D=e.ALLOW_DATA_ATTR!==false;M=e.ALLOW_UNKNOWN_PROTOCOLS||false;O=e.SAFE_FOR_JQUERY||false;L=e.SAFE_FOR_TEMPLATES||false;R=e.WHOLE_DOCUMENT||false;z=e.RETURN_DOM||false;F=e.RETURN_DOM_FRAGMENT||false;H=e.RETURN_DOM_IMPORT||false;j=e.SANITIZE_DOM!==false;B=e.KEEP_CONTENT!==false;if(L){D=false}if(F){z=true}if(e.ADD_TAGS){if(x===k){x=A(x)}T(x,e.ADD_TAGS)}if(e.ADD_ATTR){if(w===E){w=A(w)}T(w,e.ADD_ATTR)}if(e.ADD_URI_SAFE_ATTR){T(G,e.ADD_URI_SAFE_ATTR)}if(B){x["#text"]=true}if(Object&&"freeze"in Object){Object.freeze(e)}q=e};var V=function(e){r.removed.push({element:e});try{e.parentNode.removeChild(e)}catch(t){e.outerHTML=""}};var K=function(e,t){r.removed.push({attribute:t.getAttributeNode(e),from:t});t.removeAttribute(e)};var Y=function(e){var t,r;try{t=(new d).parseFromString(e,"text/html")}catch(n){}if(!t||!t.documentElement){t=p.createHTMLDocument("");r=t.body;r.parentNode.removeChild(r.parentNode.firstElementChild);r.outerHTML=e}if(typeof t.getElementsByTagName==="function"){return t.getElementsByTagName(R?"html":"body")[0]}return h.call(t,R?"html":"body")[0]};var J=function(e){return v.call(e.ownerDocument||e,e,s.SHOW_ELEMENT|s.SHOW_COMMENT|s.SHOW_TEXT,function(){return s.FILTER_ACCEPT},false)};var Q=function(e){if(e instanceof c||e instanceof u){return false}if(typeof e.nodeName!=="string"||typeof e.textContent!=="string"||typeof e.removeChild!=="function"||!(e.attributes instanceof f)||typeof e.removeAttribute!=="function"||typeof e.setAttribute!=="function"){return true}return false};var X=function(e){return typeof l==="object"?e instanceof l:e&&typeof e==="object"&&typeof e.nodeType==="number"&&typeof e.nodeName==="string"};var Z=function(e){var t,n;ie("beforeSanitizeElements",e,null);if(Q(e)){V(e);return true}t=e.nodeName.toLowerCase();ie("uponSanitizeElement",e,{tagName:t,allowedTags:x});if(!x[t]||S[t]){if(B&&!I[t]&&typeof e.insertAdjacentHTML==="function"){try{e.insertAdjacentHTML("AfterEnd",e.innerHTML)}catch(a){}}V(e);return true}if(O&&!e.firstElementChild&&(!e.content||!e.content.firstElementChild)&&/</g.test(e.textContent)){r.removed.push({element:e.cloneNode()});e.innerHTML=e.textContent.replace(/</g,"<")}if(L&&e.nodeType===3){n=e.textContent;n=n.replace(_," ");n=n.replace(C," ");if(e.textContent!==n){r.removed.push({element:e.cloneNode()});e.textContent=n}}ie("afterSanitizeElements",e,null);return false};var $=/^data-[\-\w.\u00B7-\uFFFF]/;var ee=/^(?:(?:(?:f|ht)tps?|mailto|tel):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i;var te=/^(?:\w+script|data):/i;var re=/[\x00-\x20\xA0\u1680\u180E\u2000-\u2029\u205f\u3000]/g;var ne=function(e){var a,i,o,l,s,f,c,u;ie("beforeSanitizeAttributes",e,null);f=e.attributes;if(!f){return}c={attrName:"",attrValue:"",keepAttr:true,allowedAttributes:w};u=f.length;while(u--){a=f[u];i=a.name;o=a.value.trim();l=i.toLowerCase();c.attrName=l;c.attrValue=o;c.keepAttr=true;ie("uponSanitizeAttribute",e,c);o=c.attrValue;if(l==="name"&&e.nodeName==="IMG"&&f.id){s=f.id;f=Array.prototype.slice.apply(f);K("id",e);K(i,e);if(f.indexOf(s)>u){e.setAttribute("id",s.value)}}else{if(i==="id"){e.setAttribute(i,"")}K(i,e)}if(!c.keepAttr){continue}if(j&&(l==="id"||l==="name")&&(o in t||o in n||o in P)){continue}if(L){o=o.replace(_," ");o=o.replace(C," ")}if(D&&$.test(l)){}else if(!w[l]||N[l]){continue}else if(G[l]){}else if(ee.test(o.replace(re,""))){}else if(l==="src"&&o.indexOf("data:")===0&&W[e.nodeName.toLowerCase()]){}else if(M&&!te.test(o.replace(re,""))){}else if(!o){}else{continue}try{e.setAttribute(i,o);r.removed.pop()}catch(d){}}ie("afterSanitizeAttributes",e,null)};var ae=function(e){var t;var r=J(e);ie("beforeSanitizeShadowDOM",e,null);while(t=r.nextNode()){ie("uponSanitizeShadowNode",t,null);if(Z(t)){continue}if(t.content instanceof i){ae(t.content)}ne(t)}ie("afterSanitizeShadowDOM",e,null)};var ie=function(e,t,n){if(!b[e]){return}b[e].forEach(function(e){e.call(r,t,n,q)})};r.sanitize=function(e,n){var o,s,f,c,u,d;if(!e){e="<!-->"}if(typeof e!=="string"&&!X(e)){if(typeof e.toString!=="function"){throw new TypeError("toString is not a function")}else{e=e.toString()}}if(!r.isSupported){if(typeof t.toStaticHTML==="object"||typeof t.toStaticHTML==="function"){if(typeof e==="string"){return t.toStaticHTML(e)}else if(X(e)){return t.toStaticHTML(e.outerHTML)}}return e}U(n);r.removed=[];if(e instanceof l){o=Y("<!-->");s=o.ownerDocument.importNode(e,true);if(s.nodeType===1&&s.nodeName==="BODY"){o=s}else{o.appendChild(s)}}else{if(!z&&!R&&e.indexOf("<")===-1){return e}o=Y(e);if(!o){return z?null:""}}u=J(o);while(f=u.nextNode()){if(f.nodeType===3&&f===c){continue}if(Z(f)){continue}if(f.content instanceof i){ae(f.content)}ne(f);c=f}if(z){if(F){d=g.call(o.ownerDocument);while(o.firstChild){d.appendChild(o.firstChild)}}else{d=o}if(H){d=y.call(a,d,true)}return d}return R?o.outerHTML:o.innerHTML};r.addHook=function(e,t){if(typeof t!=="function"){return}b[e]=b[e]||[];b[e].push(t)};r.removeHook=function(e){if(b[e]){b[e].pop()}};r.removeHooks=function(e){if(b[e]){b[e]=[]}};r.removeAllHooks=function(){b={}};return r});
|
||
//# sourceMappingURL=./dist/purify.min.js.map
|
||
/*! Snap.js v2.0.0-rc1 */
|
||
(function(win, doc) {
|
||
|
||
'use strict';
|
||
|
||
// Our export
|
||
var Namespace = 'Snap';
|
||
|
||
// Our main toolbelt
|
||
var utils = {
|
||
|
||
/**
|
||
* Deeply extends two objects
|
||
* @param {Object} destination The destination object
|
||
* @param {Object} source The custom options to extend destination by
|
||
* @return {Object} The desination object
|
||
*/
|
||
extend: function(destination, source) {
|
||
var property;
|
||
for (property in source) {
|
||
if (source[property] && source[property].constructor && source[property].constructor === Object) {
|
||
destination[property] = destination[property] || {};
|
||
utils.extend(destination[property], source[property]);
|
||
} else {
|
||
destination[property] = source[property];
|
||
}
|
||
}
|
||
return destination;
|
||
}
|
||
};
|
||
|
||
/**
|
||
* Our Snap global that initializes our instance
|
||
* @param {Object} opts The custom Snap.js options
|
||
*/
|
||
var Core = function( opts ) {
|
||
|
||
var self = this;
|
||
|
||
/**
|
||
* Our default settings for a Snap instance
|
||
* @type {Object}
|
||
*/
|
||
var settings = self.settings = {
|
||
element: null,
|
||
dragger: null,
|
||
disable: 'none',
|
||
addBodyClasses: true,
|
||
hyperextensible: true,
|
||
resistance: 0.5,
|
||
flickThreshold: 50,
|
||
transitionSpeed: 0.3,
|
||
easing: 'ease',
|
||
maxPosition: 266,
|
||
minPosition: -266,
|
||
tapToClose: true,
|
||
touchToDrag: true,
|
||
clickToDrag: true,
|
||
slideIntent: 40, // degrees
|
||
minDragDistance: 5
|
||
};
|
||
|
||
/**
|
||
* Stores internally global data
|
||
* @type {Object}
|
||
*/
|
||
var cache = self.cache = {
|
||
isDragging: false,
|
||
simpleStates: {
|
||
opening: null,
|
||
towards: null,
|
||
hyperExtending: null,
|
||
halfway: null,
|
||
flick: null,
|
||
translation: {
|
||
absolute: 0,
|
||
relative: 0,
|
||
sinceDirectionChange: 0,
|
||
percentage: 0
|
||
}
|
||
}
|
||
};
|
||
|
||
var eventList = self.eventList = {};
|
||
|
||
utils.extend(utils, {
|
||
|
||
/**
|
||
* Determines if we are interacting with a touch device
|
||
* @type {Boolean}
|
||
*/
|
||
hasTouch: ('ontouchstart' in doc.documentElement || win.navigator.msPointerEnabled),
|
||
|
||
/**
|
||
* Returns the appropriate event type based on whether we are a touch device or not
|
||
* @param {String} action The "action" event you're looking for: up, down, move, out
|
||
* @return {String} The browsers supported event name
|
||
*/
|
||
eventType: function(action) {
|
||
var eventTypes = {
|
||
down: (utils.hasTouch ? 'touchstart' : settings.clickToDrag ? 'mousedown' : ''),
|
||
move: (utils.hasTouch ? 'touchmove' : settings.clickToDrag ? 'mousemove' : ''),
|
||
up: (utils.hasTouch ? 'touchend' : settings.clickToDrag ? 'mouseup': ''),
|
||
out: (utils.hasTouch ? 'touchcancel' : settings.clickToDrag ? 'mouseout' : '')
|
||
};
|
||
return eventTypes[action];
|
||
},
|
||
|
||
/**
|
||
* Returns the correct "cursor" position on both browser and mobile
|
||
* @param {String} t The coordinate to retrieve, either "X" or "Y"
|
||
* @param {Object} e The event object being triggered
|
||
* @return {Number} The desired coordiante for the events interaction
|
||
*/
|
||
page: function(t, e){
|
||
return (utils.hasTouch && e.touches.length && e.touches[0]) ? e.touches[0]['page'+t] : e['page'+t];
|
||
},
|
||
|
||
|
||
klass: {
|
||
|
||
/**
|
||
* Checks if an element has a class name
|
||
* @param {Object} el The element to check
|
||
* @param {String} name The class name to search for
|
||
* @return {Boolean} Returns true if the class exists
|
||
*/
|
||
has: function(el, name){
|
||
return (el.className).indexOf(name) !== -1;
|
||
},
|
||
|
||
/**
|
||
* Adds a class name to an element
|
||
* @param {Object} el The element to add to
|
||
* @param {String} name The class name to add
|
||
*/
|
||
add: function(el, name){
|
||
if(!utils.klass.has(el, name) && settings.addBodyClasses){
|
||
el.className += " "+name;
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Removes a class name
|
||
* @param {Object} el The element to remove from
|
||
* @param {String} name The class name to remove
|
||
*/
|
||
remove: function(el, name){
|
||
if(utils.klass.has(el, name) && settings.addBodyClasses){
|
||
el.className = (el.className).replace(name, "").replace(/^\s+|\s+$/g, '');
|
||
}
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Dispatch a custom Snap.js event
|
||
* @param {String} type The event name
|
||
*/
|
||
dispatchEvent: function(type) {
|
||
if( typeof eventList[type] === 'function') {
|
||
return eventList[type].apply();
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Determines the browsers vendor prefix for CSS3
|
||
* @return {String} The browsers vendor prefix
|
||
*/
|
||
vendor: function(){
|
||
var tmp = doc.createElement("div"),
|
||
prefixes = 'webkit Moz O ms'.split(' '),
|
||
i;
|
||
for (i in prefixes) {
|
||
if (typeof tmp.style[prefixes[i] + 'Transition'] !== 'undefined') {
|
||
return prefixes[i];
|
||
}
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Determines the browsers vendor prefix for transition callback events
|
||
* @return {String} The event name
|
||
*/
|
||
transitionCallback: function(){
|
||
return (cache.vendor==='Moz' || cache.vendor==='ms') ? 'transitionend' : cache.vendor+'TransitionEnd';
|
||
},
|
||
|
||
/**
|
||
* Determines if the users browser supports CSS3 transformations
|
||
* @return {[type]} [description]
|
||
*/
|
||
canTransform: function(){
|
||
return typeof settings.element.style[cache.vendor+'Transform'] !== 'undefined';
|
||
},
|
||
|
||
/**
|
||
* Determines an angle between two points
|
||
* @param {Number} x The X coordinate
|
||
* @param {Number} y The Y coordinate
|
||
* @return {Number} The number of degrees between the two points
|
||
*/
|
||
angleOfDrag: function(x, y) {
|
||
var degrees, theta;
|
||
// Calc Theta
|
||
theta = Math.atan2(-(cache.startDragY - y), (cache.startDragX - x));
|
||
if (theta < 0) {
|
||
theta += 2 * Math.PI;
|
||
}
|
||
// Calc Degrees
|
||
degrees = Math.floor(theta * (180 / Math.PI) - 180);
|
||
if (degrees < 0 && degrees > -180) {
|
||
degrees = 360 - Math.abs(degrees);
|
||
}
|
||
return Math.abs(degrees);
|
||
},
|
||
|
||
|
||
events: {
|
||
|
||
/**
|
||
* Adds an event to an element
|
||
* @param {Object} element Element to add event to
|
||
* @param {String} eventName The event name
|
||
* @param {Function} func Callback function
|
||
*/
|
||
addEvent: function addEvent(element, eventName, func) {
|
||
if (element.addEventListener) {
|
||
return element.addEventListener(eventName, func, false);
|
||
} else if (element.attachEvent) {
|
||
return element.attachEvent("on" + eventName, func);
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Removes an event to an element
|
||
* @param {Object} element Element to remove event from
|
||
* @param {String} eventName The event name
|
||
* @param {Function} func Callback function
|
||
*/
|
||
removeEvent: function addEvent(element, eventName, func) {
|
||
if (element.addEventListener) {
|
||
return element.removeEventListener(eventName, func, false);
|
||
} else if (element.attachEvent) {
|
||
return element.detachEvent("on" + eventName, func);
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Prevents the default event
|
||
* @param {Object} e The event object
|
||
*/
|
||
prevent: function(e) {
|
||
if (e.preventDefault) {
|
||
e.preventDefault();
|
||
} else {
|
||
e.returnValue = false;
|
||
}
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Searches the parent element until a specified attribute has been matched
|
||
* @param {Object} el The element to search from
|
||
* @param {String} attr The attribute to search for
|
||
* @return {Object|null} Returns a matched element if it exists, else, null
|
||
*/
|
||
parentUntil: function(el, attr) {
|
||
var isStr = typeof attr === 'string';
|
||
while (el.parentNode) {
|
||
if (isStr && el.getAttribute && el.getAttribute(attr)){
|
||
return el;
|
||
} else if(!isStr && el === attr){
|
||
return el;
|
||
}
|
||
el = el.parentNode;
|
||
}
|
||
return null;
|
||
}
|
||
});
|
||
|
||
|
||
var action = self.action = {
|
||
|
||
/**
|
||
* Handles translating the elements position
|
||
* @type {Object}
|
||
*/
|
||
translate: {
|
||
get: {
|
||
|
||
/**
|
||
* Returns the amount an element is translated
|
||
* @param {Number} index The index desired from the CSS3 values of translate3d
|
||
* @return {Number} The amount of pixels an element is translated
|
||
*/
|
||
matrix: function(index) {
|
||
|
||
if( !cache.canTransform ){
|
||
return parseInt(settings.element.style.left, 10);
|
||
} else {
|
||
var matrix = win.getComputedStyle(settings.element)[cache.vendor+'Transform'].match(/\((.*)\)/),
|
||
ieOffset = 8;
|
||
if (matrix) {
|
||
matrix = matrix[1].split(',');
|
||
|
||
// Internet Explorer likes to give us 16 fucking values
|
||
if(matrix.length===16){
|
||
index+=ieOffset;
|
||
}
|
||
return parseInt(matrix[index], 10);
|
||
}
|
||
return 0;
|
||
}
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Called when the element has finished transitioning
|
||
*/
|
||
easeCallback: function(fn){
|
||
settings.element.style[cache.vendor+'Transition'] = '';
|
||
cache.translation = action.translate.get.matrix(4);
|
||
cache.easing = false;
|
||
|
||
if(cache.easingTo===0){
|
||
utils.klass.remove(doc.body, 'snapjs-right');
|
||
utils.klass.remove(doc.body, 'snapjs-left');
|
||
}
|
||
|
||
if( cache.once ){
|
||
cache.once.call(self, self.state());
|
||
delete cache.once;
|
||
}
|
||
|
||
utils.dispatchEvent('animated');
|
||
utils.events.removeEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback);
|
||
|
||
},
|
||
|
||
/**
|
||
* Animates the pane by the specified amount of pixels
|
||
* @param {Number} n The amount of pixels to move the pane
|
||
*/
|
||
easeTo: function(n, cb) {
|
||
|
||
if( !cache.canTransform ){
|
||
cache.translation = n;
|
||
action.translate.x(n);
|
||
} else {
|
||
cache.easing = true;
|
||
cache.easingTo = n;
|
||
|
||
settings.element.style[cache.vendor+'Transition'] = 'all ' + settings.transitionSpeed + 's ' + settings.easing;
|
||
|
||
cache.once = cb;
|
||
|
||
utils.events.addEvent(settings.element, utils.transitionCallback(), action.translate.easeCallback);
|
||
action.translate.x(n);
|
||
}
|
||
if(n===0){
|
||
settings.element.style[cache.vendor+'Transform'] = '';
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Immediately translates the element on its X axis
|
||
* @param {Number} n Amount of pixels to translate
|
||
*/
|
||
x: function(n) {
|
||
if( (settings.disable==='left' && n>0) ||
|
||
(settings.disable==='right' && n<0)
|
||
){ return; }
|
||
|
||
if( !settings.hyperextensible ){
|
||
if( n===settings.maxPosition || n>settings.maxPosition ){
|
||
n=settings.maxPosition;
|
||
} else if( n===settings.minPosition || n<settings.minPosition ){
|
||
n=settings.minPosition;
|
||
}
|
||
}
|
||
|
||
n = parseInt(n, 10);
|
||
if(isNaN(n)){
|
||
n = 0;
|
||
}
|
||
|
||
if( cache.canTransform ){
|
||
var theTranslate = 'translate3d(' + n + 'px, 0,0)';
|
||
settings.element.style[cache.vendor+'Transform'] = theTranslate;
|
||
} else {
|
||
settings.element.style.width = (win.innerWidth || doc.documentElement.clientWidth)+'px';
|
||
|
||
settings.element.style.left = n+'px';
|
||
settings.element.style.right = '';
|
||
}
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Handles all the events that interface with dragging
|
||
* @type {Object}
|
||
*/
|
||
drag: {
|
||
|
||
/**
|
||
* Begins listening for drag events on our element
|
||
*/
|
||
listen: function() {
|
||
cache.translation = 0;
|
||
cache.easing = false;
|
||
utils.events.addEvent(self.settings.element, utils.eventType('down'), action.drag.startDrag);
|
||
utils.events.addEvent(self.settings.element, utils.eventType('move'), action.drag.dragging);
|
||
utils.events.addEvent(self.settings.element, utils.eventType('up'), action.drag.endDrag);
|
||
},
|
||
|
||
/**
|
||
* Stops listening for drag events on our element
|
||
*/
|
||
stopListening: function() {
|
||
utils.events.removeEvent(settings.element, utils.eventType('down'), action.drag.startDrag);
|
||
utils.events.removeEvent(settings.element, utils.eventType('move'), action.drag.dragging);
|
||
utils.events.removeEvent(settings.element, utils.eventType('up'), action.drag.endDrag);
|
||
},
|
||
|
||
/**
|
||
* Fired immediately when the user begins to drag the content pane
|
||
* @param {Object} e Event object
|
||
*/
|
||
startDrag: function(e) {
|
||
// No drag on ignored elements
|
||
var target = e.target ? e.target : e.srcElement,
|
||
ignoreParent = utils.parentUntil(target, 'data-snap-ignore');
|
||
|
||
if (ignoreParent) {
|
||
utils.dispatchEvent('ignore');
|
||
return;
|
||
}
|
||
|
||
|
||
if(settings.dragger){
|
||
var dragParent = utils.parentUntil(target, settings.dragger);
|
||
|
||
// Only use dragger if we're in a closed state
|
||
if( !dragParent &&
|
||
(cache.translation !== settings.minPosition &&
|
||
cache.translation !== settings.maxPosition
|
||
)){
|
||
return;
|
||
}
|
||
}
|
||
|
||
utils.dispatchEvent('start');
|
||
settings.element.style[cache.vendor+'Transition'] = '';
|
||
cache.isDragging = true;
|
||
|
||
cache.intentChecked = false;
|
||
cache.startDragX = utils.page('X', e);
|
||
cache.startDragY = utils.page('Y', e);
|
||
cache.dragWatchers = {
|
||
current: 0,
|
||
last: 0,
|
||
hold: 0,
|
||
state: ''
|
||
};
|
||
cache.simpleStates = {
|
||
opening: null,
|
||
towards: null,
|
||
hyperExtending: null,
|
||
halfway: null,
|
||
flick: null,
|
||
translation: {
|
||
absolute: 0,
|
||
relative: 0,
|
||
sinceDirectionChange: 0,
|
||
percentage: 0
|
||
}
|
||
};
|
||
},
|
||
|
||
/**
|
||
* Fired while the user is moving the content pane
|
||
* @param {Object} e Event object
|
||
*/
|
||
dragging: function(e) {
|
||
|
||
if (cache.isDragging && settings.touchToDrag) {
|
||
|
||
var thePageX = utils.page('X', e),
|
||
thePageY = utils.page('Y', e),
|
||
translated = cache.translation,
|
||
absoluteTranslation = action.translate.get.matrix(4),
|
||
whileDragX = thePageX - cache.startDragX,
|
||
openingLeft = absoluteTranslation > 0,
|
||
translateTo = whileDragX,
|
||
diff;
|
||
|
||
// Shown no intent already
|
||
if((cache.intentChecked && !cache.hasIntent)){
|
||
return;
|
||
}
|
||
|
||
if(settings.addBodyClasses){
|
||
if((absoluteTranslation)>0){
|
||
utils.klass.add(doc.body, 'snapjs-left');
|
||
utils.klass.remove(doc.body, 'snapjs-right');
|
||
} else if((absoluteTranslation)<0){
|
||
utils.klass.add(doc.body, 'snapjs-right');
|
||
utils.klass.remove(doc.body, 'snapjs-left');
|
||
}
|
||
}
|
||
|
||
if (cache.hasIntent === false || cache.hasIntent === null) {
|
||
|
||
var deg = utils.angleOfDrag(thePageX, thePageY),
|
||
inRightRange = (deg >= 0 && deg <= settings.slideIntent) || (deg <= 360 && deg > (360 - settings.slideIntent)),
|
||
inLeftRange = (deg >= 180 && deg <= (180 + settings.slideIntent)) || (deg <= 180 && deg >= (180 - settings.slideIntent));
|
||
if (!inLeftRange && !inRightRange) {
|
||
cache.hasIntent = false;
|
||
} else {
|
||
cache.hasIntent = true;
|
||
}
|
||
cache.intentChecked = true;
|
||
}
|
||
|
||
if (
|
||
(settings.minDragDistance>=Math.abs(thePageX-cache.startDragX)) || // Has user met minimum drag distance?
|
||
(cache.hasIntent === false)
|
||
) {
|
||
return;
|
||
}
|
||
|
||
utils.events.prevent(e);
|
||
utils.dispatchEvent('drag');
|
||
|
||
cache.dragWatchers.current = thePageX;
|
||
|
||
// Determine which direction we are going
|
||
if (cache.dragWatchers.last > thePageX) {
|
||
if (cache.dragWatchers.state !== 'left') {
|
||
cache.dragWatchers.state = 'left';
|
||
cache.dragWatchers.hold = thePageX;
|
||
}
|
||
cache.dragWatchers.last = thePageX;
|
||
} else if (cache.dragWatchers.last < thePageX) {
|
||
if (cache.dragWatchers.state !== 'right') {
|
||
cache.dragWatchers.state = 'right';
|
||
cache.dragWatchers.hold = thePageX;
|
||
}
|
||
cache.dragWatchers.last = thePageX;
|
||
}
|
||
if (openingLeft) {
|
||
// Pulling too far to the right
|
||
if (settings.maxPosition < absoluteTranslation) {
|
||
diff = (absoluteTranslation - settings.maxPosition) * settings.resistance;
|
||
translateTo = whileDragX - diff;
|
||
}
|
||
cache.simpleStates = {
|
||
opening: 'left',
|
||
towards: cache.dragWatchers.state,
|
||
hyperExtending: settings.maxPosition < absoluteTranslation,
|
||
halfway: absoluteTranslation > (settings.maxPosition / 2),
|
||
flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold,
|
||
translation: {
|
||
absolute: absoluteTranslation,
|
||
relative: whileDragX,
|
||
sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold),
|
||
percentage: (absoluteTranslation/settings.maxPosition)*100
|
||
}
|
||
};
|
||
} else {
|
||
// Pulling too far to the left
|
||
if (settings.minPosition > absoluteTranslation) {
|
||
diff = (absoluteTranslation - settings.minPosition) * settings.resistance;
|
||
translateTo = whileDragX - diff;
|
||
}
|
||
cache.simpleStates = {
|
||
opening: 'right',
|
||
towards: cache.dragWatchers.state,
|
||
hyperExtending: settings.minPosition > absoluteTranslation,
|
||
halfway: absoluteTranslation < (settings.minPosition / 2),
|
||
flick: Math.abs(cache.dragWatchers.current - cache.dragWatchers.hold) > settings.flickThreshold,
|
||
translation: {
|
||
absolute: absoluteTranslation,
|
||
relative: whileDragX,
|
||
sinceDirectionChange: (cache.dragWatchers.current - cache.dragWatchers.hold),
|
||
percentage: (absoluteTranslation/settings.minPosition)*100
|
||
}
|
||
};
|
||
}
|
||
action.translate.x(translateTo + translated);
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Fired when the user releases the content pane
|
||
* @param {Object} e Event object
|
||
*/
|
||
endDrag: function(e) {
|
||
if (cache.isDragging) {
|
||
utils.dispatchEvent('end');
|
||
var translated = action.translate.get.matrix(4);
|
||
|
||
// Tap Close
|
||
if (cache.dragWatchers.current === 0 && translated !== 0 && settings.tapToClose) {
|
||
utils.dispatchEvent('close');
|
||
utils.events.prevent(e);
|
||
action.translate.easeTo(0);
|
||
cache.isDragging = false;
|
||
cache.startDragX = 0;
|
||
return;
|
||
}
|
||
|
||
// Revealing Left
|
||
if (cache.simpleStates.opening === 'left') {
|
||
// Halfway, Flicking, or Too Far Out
|
||
if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) {
|
||
if (cache.simpleStates.flick && cache.simpleStates.towards === 'left') { // Flicking Closed
|
||
action.translate.easeTo(0);
|
||
} else if (
|
||
(cache.simpleStates.flick && cache.simpleStates.towards === 'right') || // Flicking Open OR
|
||
(cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending
|
||
) {
|
||
action.translate.easeTo(settings.maxPosition); // Open Left
|
||
}
|
||
} else {
|
||
action.translate.easeTo(0); // Close Left
|
||
}
|
||
// Revealing Right
|
||
} else if (cache.simpleStates.opening === 'right') {
|
||
// Halfway, Flicking, or Too Far Out
|
||
if ((cache.simpleStates.halfway || cache.simpleStates.hyperExtending || cache.simpleStates.flick)) {
|
||
if (cache.simpleStates.flick && cache.simpleStates.towards === 'right') { // Flicking Closed
|
||
action.translate.easeTo(0);
|
||
} else if (
|
||
(cache.simpleStates.flick && cache.simpleStates.towards === 'left') || // Flicking Open OR
|
||
(cache.simpleStates.halfway || cache.simpleStates.hyperExtending) // At least halfway open OR hyperextending
|
||
) {
|
||
action.translate.easeTo(settings.minPosition); // Open Right
|
||
}
|
||
} else {
|
||
action.translate.easeTo(0); // Close Right
|
||
}
|
||
}
|
||
cache.isDragging = false;
|
||
cache.startDragX = utils.page('X', e);
|
||
}
|
||
}
|
||
}
|
||
};
|
||
|
||
|
||
// Initialize
|
||
if (opts.element) {
|
||
utils.extend(settings, opts);
|
||
cache.vendor = utils.vendor();
|
||
cache.canTransform = utils.canTransform();
|
||
action.drag.listen();
|
||
}
|
||
};
|
||
|
||
|
||
utils.extend(Core.prototype, {
|
||
|
||
/**
|
||
* Opens the specified side menu
|
||
* @param {String} side Must be "left" or "right"
|
||
*/
|
||
open: function(side, cb) {
|
||
utils.dispatchEvent('open');
|
||
utils.klass.remove(doc.body, 'snapjs-expand-left');
|
||
utils.klass.remove(doc.body, 'snapjs-expand-right');
|
||
|
||
if (side === 'left') {
|
||
this.cache.simpleStates.opening = 'left';
|
||
this.cache.simpleStates.towards = 'right';
|
||
utils.klass.add(doc.body, 'snapjs-left');
|
||
utils.klass.remove(doc.body, 'snapjs-right');
|
||
this.action.translate.easeTo(this.settings.maxPosition, cb);
|
||
} else if (side === 'right') {
|
||
this.cache.simpleStates.opening = 'right';
|
||
this.cache.simpleStates.towards = 'left';
|
||
utils.klass.remove(doc.body, 'snapjs-left');
|
||
utils.klass.add(doc.body, 'snapjs-right');
|
||
this.action.translate.easeTo(this.settings.minPosition, cb);
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Closes the pane
|
||
*/
|
||
close: function(cb) {
|
||
utils.dispatchEvent('close');
|
||
this.action.translate.easeTo(0, cb);
|
||
},
|
||
|
||
/**
|
||
* Hides the content pane completely allowing for full menu visibility
|
||
* @param {String} side Must be "left" or "right"
|
||
*/
|
||
expand: function(side){
|
||
var to = win.innerWidth || doc.documentElement.clientWidth;
|
||
|
||
if(side==='left'){
|
||
utils.dispatchEvent('expandLeft');
|
||
utils.klass.add(doc.body, 'snapjs-expand-left');
|
||
utils.klass.remove(doc.body, 'snapjs-expand-right');
|
||
} else {
|
||
utils.dispatchEvent('expandRight');
|
||
utils.klass.add(doc.body, 'snapjs-expand-right');
|
||
utils.klass.remove(doc.body, 'snapjs-expand-left');
|
||
to *= -1;
|
||
}
|
||
this.action.translate.easeTo(to);
|
||
},
|
||
|
||
/**
|
||
* Listen in to custom Snap events
|
||
* @param {String} evt The snap event name
|
||
* @param {Function} fn Callback function
|
||
* @return {Object} Snap instance
|
||
*/
|
||
on: function(evt, fn) {
|
||
this.eventList[evt] = fn;
|
||
return this;
|
||
},
|
||
|
||
/**
|
||
* Stops listening to custom Snap events
|
||
* @param {String} evt The snap event name
|
||
*/
|
||
off: function(evt) {
|
||
if (this.eventList[evt]) {
|
||
this.eventList[evt] = false;
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Enables Snap.js events
|
||
*/
|
||
enable: function() {
|
||
utils.dispatchEvent('enable');
|
||
this.action.drag.listen();
|
||
},
|
||
|
||
/**
|
||
* Disables Snap.js events
|
||
*/
|
||
disable: function() {
|
||
utils.dispatchEvent('disable');
|
||
this.action.drag.stopListening();
|
||
},
|
||
|
||
/**
|
||
* Updates the instances settings
|
||
* @param {Object} opts The Snap options to set
|
||
*/
|
||
settings: function(opts){
|
||
utils.extend(this.settings, opts);
|
||
},
|
||
|
||
/**
|
||
* Returns information about the state of the content pane
|
||
* @return {Object} Information regarding the state of the pane
|
||
*/
|
||
state: function() {
|
||
var state,
|
||
fromLeft = this.action.translate.get.matrix(4);
|
||
if (fromLeft === this.settings.maxPosition) {
|
||
state = 'left';
|
||
} else if (fromLeft === this.settings.minPosition) {
|
||
state = 'right';
|
||
} else {
|
||
state = 'closed';
|
||
}
|
||
return {
|
||
state: state,
|
||
info: this.cache.simpleStates
|
||
};
|
||
}
|
||
});
|
||
|
||
// Assign to the global namespace
|
||
this[Namespace] = Core;
|
||
|
||
}).call(this, window, document);
|
||
|
||
/*
|
||
Copyright 2012 Igor Vaynberg
|
||
|
||
Version: 3.4.8 Timestamp: Thu May 1 09:50:32 EDT 2014
|
||
|
||
This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
|
||
General Public License version 2 (the "GPL License"). You may choose either license to govern your
|
||
use of this software only upon the condition that you accept all of the terms of either the Apache
|
||
License or the GPL License.
|
||
|
||
You may obtain a copy of the Apache License and the GPL License at:
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
http://www.gnu.org/licenses/gpl-2.0.html
|
||
|
||
Unless required by applicable law or agreed to in writing, software distributed under the
|
||
Apache License or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
||
CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for
|
||
the specific language governing permissions and limitations under the Apache License and the GPL License.
|
||
*/
|
||
(function ($) {
|
||
if(typeof $.fn.each2 == "undefined") {
|
||
$.extend($.fn, {
|
||
/*
|
||
* 4-10 times faster .each replacement
|
||
* use it carefully, as it overrides jQuery context of element on each iteration
|
||
*/
|
||
each2 : function (c) {
|
||
var j = $([0]), i = -1, l = this.length;
|
||
while (
|
||
++i < l
|
||
&& (j.context = j[0] = this[i])
|
||
&& c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object
|
||
);
|
||
return this;
|
||
}
|
||
});
|
||
}
|
||
})(jQuery);
|
||
|
||
(function ($, undefined) {
|
||
"use strict";
|
||
/*global document, window, jQuery, console */
|
||
|
||
if (window.Select2 !== undefined) {
|
||
return;
|
||
}
|
||
|
||
var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,
|
||
lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,
|
||
|
||
KEY = {
|
||
TAB: 9,
|
||
ENTER: 13,
|
||
ESC: 27,
|
||
SPACE: 32,
|
||
LEFT: 37,
|
||
UP: 38,
|
||
RIGHT: 39,
|
||
DOWN: 40,
|
||
SHIFT: 16,
|
||
CTRL: 17,
|
||
ALT: 18,
|
||
PAGE_UP: 33,
|
||
PAGE_DOWN: 34,
|
||
HOME: 36,
|
||
END: 35,
|
||
BACKSPACE: 8,
|
||
DELETE: 46,
|
||
isArrow: function (k) {
|
||
k = k.which ? k.which : k;
|
||
switch (k) {
|
||
case KEY.LEFT:
|
||
case KEY.RIGHT:
|
||
case KEY.UP:
|
||
case KEY.DOWN:
|
||
return true;
|
||
}
|
||
return false;
|
||
},
|
||
isControl: function (e) {
|
||
var k = e.which;
|
||
switch (k) {
|
||
case KEY.SHIFT:
|
||
case KEY.CTRL:
|
||
case KEY.ALT:
|
||
return true;
|
||
}
|
||
|
||
if (e.metaKey) return true;
|
||
|
||
return false;
|
||
},
|
||
isFunctionKey: function (k) {
|
||
k = k.which ? k.which : k;
|
||
return k >= 112 && k <= 123;
|
||
}
|
||
},
|
||
MEASURE_SCROLLBAR_TEMPLATE = "<div class='select2-measure-scrollbar'></div>",
|
||
|
||
DIACRITICS = {"\u24B6":"A","\uFF21":"A","\u00C0":"A","\u00C1":"A","\u00C2":"A","\u1EA6":"A","\u1EA4":"A","\u1EAA":"A","\u1EA8":"A","\u00C3":"A","\u0100":"A","\u0102":"A","\u1EB0":"A","\u1EAE":"A","\u1EB4":"A","\u1EB2":"A","\u0226":"A","\u01E0":"A","\u00C4":"A","\u01DE":"A","\u1EA2":"A","\u00C5":"A","\u01FA":"A","\u01CD":"A","\u0200":"A","\u0202":"A","\u1EA0":"A","\u1EAC":"A","\u1EB6":"A","\u1E00":"A","\u0104":"A","\u023A":"A","\u2C6F":"A","\uA732":"AA","\u00C6":"AE","\u01FC":"AE","\u01E2":"AE","\uA734":"AO","\uA736":"AU","\uA738":"AV","\uA73A":"AV","\uA73C":"AY","\u24B7":"B","\uFF22":"B","\u1E02":"B","\u1E04":"B","\u1E06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24B8":"C","\uFF23":"C","\u0106":"C","\u0108":"C","\u010A":"C","\u010C":"C","\u00C7":"C","\u1E08":"C","\u0187":"C","\u023B":"C","\uA73E":"C","\u24B9":"D","\uFF24":"D","\u1E0A":"D","\u010E":"D","\u1E0C":"D","\u1E10":"D","\u1E12":"D","\u1E0E":"D","\u0110":"D","\u018B":"D","\u018A":"D","\u0189":"D","\uA779":"D","\u01F1":"DZ","\u01C4":"DZ","\u01F2":"Dz","\u01C5":"Dz","\u24BA":"E","\uFF25":"E","\u00C8":"E","\u00C9":"E","\u00CA":"E","\u1EC0":"E","\u1EBE":"E","\u1EC4":"E","\u1EC2":"E","\u1EBC":"E","\u0112":"E","\u1E14":"E","\u1E16":"E","\u0114":"E","\u0116":"E","\u00CB":"E","\u1EBA":"E","\u011A":"E","\u0204":"E","\u0206":"E","\u1EB8":"E","\u1EC6":"E","\u0228":"E","\u1E1C":"E","\u0118":"E","\u1E18":"E","\u1E1A":"E","\u0190":"E","\u018E":"E","\u24BB":"F","\uFF26":"F","\u1E1E":"F","\u0191":"F","\uA77B":"F","\u24BC":"G","\uFF27":"G","\u01F4":"G","\u011C":"G","\u1E20":"G","\u011E":"G","\u0120":"G","\u01E6":"G","\u0122":"G","\u01E4":"G","\u0193":"G","\uA7A0":"G","\uA77D":"G","\uA77E":"G","\u24BD":"H","\uFF28":"H","\u0124":"H","\u1E22":"H","\u1E26":"H","\u021E":"H","\u1E24":"H","\u1E28":"H","\u1E2A":"H","\u0126":"H","\u2C67":"H","\u2C75":"H","\uA78D":"H","\u24BE":"I","\uFF29":"I","\u00CC":"I","\u00CD":"I","\u00CE":"I","\u0128":"I","\u012A":"I","\u012C":"I","\u0130":"I","\u00CF":"I","\u1E2E":"I","\u1EC8":"I","\u01CF":"I","\u0208":"I","\u020A":"I","\u1ECA":"I","\u012E":"I","\u1E2C":"I","\u0197":"I","\u24BF":"J","\uFF2A":"J","\u0134":"J","\u0248":"J","\u24C0":"K","\uFF2B":"K","\u1E30":"K","\u01E8":"K","\u1E32":"K","\u0136":"K","\u1E34":"K","\u0198":"K","\u2C69":"K","\uA740":"K","\uA742":"K","\uA744":"K","\uA7A2":"K","\u24C1":"L","\uFF2C":"L","\u013F":"L","\u0139":"L","\u013D":"L","\u1E36":"L","\u1E38":"L","\u013B":"L","\u1E3C":"L","\u1E3A":"L","\u0141":"L","\u023D":"L","\u2C62":"L","\u2C60":"L","\uA748":"L","\uA746":"L","\uA780":"L","\u01C7":"LJ","\u01C8":"Lj","\u24C2":"M","\uFF2D":"M","\u1E3E":"M","\u1E40":"M","\u1E42":"M","\u2C6E":"M","\u019C":"M","\u24C3":"N","\uFF2E":"N","\u01F8":"N","\u0143":"N","\u00D1":"N","\u1E44":"N","\u0147":"N","\u1E46":"N","\u0145":"N","\u1E4A":"N","\u1E48":"N","\u0220":"N","\u019D":"N","\uA790":"N","\uA7A4":"N","\u01CA":"NJ","\u01CB":"Nj","\u24C4":"O","\uFF2F":"O","\u00D2":"O","\u00D3":"O","\u00D4":"O","\u1ED2":"O","\u1ED0":"O","\u1ED6":"O","\u1ED4":"O","\u00D5":"O","\u1E4C":"O","\u022C":"O","\u1E4E":"O","\u014C":"O","\u1E50":"O","\u1E52":"O","\u014E":"O","\u022E":"O","\u0230":"O","\u00D6":"O","\u022A":"O","\u1ECE":"O","\u0150":"O","\u01D1":"O","\u020C":"O","\u020E":"O","\u01A0":"O","\u1EDC":"O","\u1EDA":"O","\u1EE0":"O","\u1EDE":"O","\u1EE2":"O","\u1ECC":"O","\u1ED8":"O","\u01EA":"O","\u01EC":"O","\u00D8":"O","\u01FE":"O","\u0186":"O","\u019F":"O","\uA74A":"O","\uA74C":"O","\u01A2":"OI","\uA74E":"OO","\u0222":"OU","\u24C5":"P","\uFF30":"P","\u1E54":"P","\u1E56":"P","\u01A4":"P","\u2C63":"P","\uA750":"P","\uA752":"P","\uA754":"P","\u24C6":"Q","\uFF31":"Q","\uA756":"Q","\uA758":"Q","\u024A":"Q","\u24C7":"R","\uFF32":"R","\u0154":"R","\u1E58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1E5A":"R","\u1E5C":"R","\u0156":"R","\u1E5E":"R","\u024C":"R","\u2C64":"R","\uA75A":"R","\uA7A6":"R","\uA782":"R","\u24C8":"S","\uFF33":"S","\u1E9E":"S","\u015A":"S","\u1E64":"S","\u015C":"S","\u1E60":"S","\u0160":"S","\u1E66":"S","\u1E62":"S","\u1E68":"S","\u0218":"S","\u015E":"S","\u2C7E":"S","\uA7A8":"S","\uA784":"S","\u24C9":"T","\uFF34":"T","\u1E6A":"T","\u0164":"T","\u1E6C":"T","\u021A":"T","\u0162":"T","\u1E70":"T","\u1E6E":"T","\u0166":"T","\u01AC":"T","\u01AE":"T","\u023E":"T","\uA786":"T","\uA728":"TZ","\u24CA":"U","\uFF35":"U","\u00D9":"U","\u00DA":"U","\u00DB":"U","\u0168":"U","\u1E78":"U","\u016A":"U","\u1E7A":"U","\u016C":"U","\u00DC":"U","\u01DB":"U","\u01D7":"U","\u01D5":"U","\u01D9":"U","\u1EE6":"U","\u016E":"U","\u0170":"U","\u01D3":"U","\u0214":"U","\u0216":"U","\u01AF":"U","\u1EEA":"U","\u1EE8":"U","\u1EEE":"U","\u1EEC":"U","\u1EF0":"U","\u1EE4":"U","\u1E72":"U","\u0172":"U","\u1E76":"U","\u1E74":"U","\u0244":"U","\u24CB":"V","\uFF36":"V","\u1E7C":"V","\u1E7E":"V","\u01B2":"V","\uA75E":"V","\u0245":"V","\uA760":"VY","\u24CC":"W","\uFF37":"W","\u1E80":"W","\u1E82":"W","\u0174":"W","\u1E86":"W","\u1E84":"W","\u1E88":"W","\u2C72":"W","\u24CD":"X","\uFF38":"X","\u1E8A":"X","\u1E8C":"X","\u24CE":"Y","\uFF39":"Y","\u1EF2":"Y","\u00DD":"Y","\u0176":"Y","\u1EF8":"Y","\u0232":"Y","\u1E8E":"Y","\u0178":"Y","\u1EF6":"Y","\u1EF4":"Y","\u01B3":"Y","\u024E":"Y","\u1EFE":"Y","\u24CF":"Z","\uFF3A":"Z","\u0179":"Z","\u1E90":"Z","\u017B":"Z","\u017D":"Z","\u1E92":"Z","\u1E94":"Z","\u01B5":"Z","\u0224":"Z","\u2C7F":"Z","\u2C6B":"Z","\uA762":"Z","\u24D0":"a","\uFF41":"a","\u1E9A":"a","\u00E0":"a","\u00E1":"a","\u00E2":"a","\u1EA7":"a","\u1EA5":"a","\u1EAB":"a","\u1EA9":"a","\u00E3":"a","\u0101":"a","\u0103":"a","\u1EB1":"a","\u1EAF":"a","\u1EB5":"a","\u1EB3":"a","\u0227":"a","\u01E1":"a","\u00E4":"a","\u01DF":"a","\u1EA3":"a","\u00E5":"a","\u01FB":"a","\u01CE":"a","\u0201":"a","\u0203":"a","\u1EA1":"a","\u1EAD":"a","\u1EB7":"a","\u1E01":"a","\u0105":"a","\u2C65":"a","\u0250":"a","\uA733":"aa","\u00E6":"ae","\u01FD":"ae","\u01E3":"ae","\uA735":"ao","\uA737":"au","\uA739":"av","\uA73B":"av","\uA73D":"ay","\u24D1":"b","\uFF42":"b","\u1E03":"b","\u1E05":"b","\u1E07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24D2":"c","\uFF43":"c","\u0107":"c","\u0109":"c","\u010B":"c","\u010D":"c","\u00E7":"c","\u1E09":"c","\u0188":"c","\u023C":"c","\uA73F":"c","\u2184":"c","\u24D3":"d","\uFF44":"d","\u1E0B":"d","\u010F":"d","\u1E0D":"d","\u1E11":"d","\u1E13":"d","\u1E0F":"d","\u0111":"d","\u018C":"d","\u0256":"d","\u0257":"d","\uA77A":"d","\u01F3":"dz","\u01C6":"dz","\u24D4":"e","\uFF45":"e","\u00E8":"e","\u00E9":"e","\u00EA":"e","\u1EC1":"e","\u1EBF":"e","\u1EC5":"e","\u1EC3":"e","\u1EBD":"e","\u0113":"e","\u1E15":"e","\u1E17":"e","\u0115":"e","\u0117":"e","\u00EB":"e","\u1EBB":"e","\u011B":"e","\u0205":"e","\u0207":"e","\u1EB9":"e","\u1EC7":"e","\u0229":"e","\u1E1D":"e","\u0119":"e","\u1E19":"e","\u1E1B":"e","\u0247":"e","\u025B":"e","\u01DD":"e","\u24D5":"f","\uFF46":"f","\u1E1F":"f","\u0192":"f","\uA77C":"f","\u24D6":"g","\uFF47":"g","\u01F5":"g","\u011D":"g","\u1E21":"g","\u011F":"g","\u0121":"g","\u01E7":"g","\u0123":"g","\u01E5":"g","\u0260":"g","\uA7A1":"g","\u1D79":"g","\uA77F":"g","\u24D7":"h","\uFF48":"h","\u0125":"h","\u1E23":"h","\u1E27":"h","\u021F":"h","\u1E25":"h","\u1E29":"h","\u1E2B":"h","\u1E96":"h","\u0127":"h","\u2C68":"h","\u2C76":"h","\u0265":"h","\u0195":"hv","\u24D8":"i","\uFF49":"i","\u00EC":"i","\u00ED":"i","\u00EE":"i","\u0129":"i","\u012B":"i","\u012D":"i","\u00EF":"i","\u1E2F":"i","\u1EC9":"i","\u01D0":"i","\u0209":"i","\u020B":"i","\u1ECB":"i","\u012F":"i","\u1E2D":"i","\u0268":"i","\u0131":"i","\u24D9":"j","\uFF4A":"j","\u0135":"j","\u01F0":"j","\u0249":"j","\u24DA":"k","\uFF4B":"k","\u1E31":"k","\u01E9":"k","\u1E33":"k","\u0137":"k","\u1E35":"k","\u0199":"k","\u2C6A":"k","\uA741":"k","\uA743":"k","\uA745":"k","\uA7A3":"k","\u24DB":"l","\uFF4C":"l","\u0140":"l","\u013A":"l","\u013E":"l","\u1E37":"l","\u1E39":"l","\u013C":"l","\u1E3D":"l","\u1E3B":"l","\u017F":"l","\u0142":"l","\u019A":"l","\u026B":"l","\u2C61":"l","\uA749":"l","\uA781":"l","\uA747":"l","\u01C9":"lj","\u24DC":"m","\uFF4D":"m","\u1E3F":"m","\u1E41":"m","\u1E43":"m","\u0271":"m","\u026F":"m","\u24DD":"n","\uFF4E":"n","\u01F9":"n","\u0144":"n","\u00F1":"n","\u1E45":"n","\u0148":"n","\u1E47":"n","\u0146":"n","\u1E4B":"n","\u1E49":"n","\u019E":"n","\u0272":"n","\u0149":"n","\uA791":"n","\uA7A5":"n","\u01CC":"nj","\u24DE":"o","\uFF4F":"o","\u00F2":"o","\u00F3":"o","\u00F4":"o","\u1ED3":"o","\u1ED1":"o","\u1ED7":"o","\u1ED5":"o","\u00F5":"o","\u1E4D":"o","\u022D":"o","\u1E4F":"o","\u014D":"o","\u1E51":"o","\u1E53":"o","\u014F":"o","\u022F":"o","\u0231":"o","\u00F6":"o","\u022B":"o","\u1ECF":"o","\u0151":"o","\u01D2":"o","\u020D":"o","\u020F":"o","\u01A1":"o","\u1EDD":"o","\u1EDB":"o","\u1EE1":"o","\u1EDF":"o","\u1EE3":"o","\u1ECD":"o","\u1ED9":"o","\u01EB":"o","\u01ED":"o","\u00F8":"o","\u01FF":"o","\u0254":"o","\uA74B":"o","\uA74D":"o","\u0275":"o","\u01A3":"oi","\u0223":"ou","\uA74F":"oo","\u24DF":"p","\uFF50":"p","\u1E55":"p","\u1E57":"p","\u01A5":"p","\u1D7D":"p","\uA751":"p","\uA753":"p","\uA755":"p","\u24E0":"q","\uFF51":"q","\u024B":"q","\uA757":"q","\uA759":"q","\u24E1":"r","\uFF52":"r","\u0155":"r","\u1E59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1E5B":"r","\u1E5D":"r","\u0157":"r","\u1E5F":"r","\u024D":"r","\u027D":"r","\uA75B":"r","\uA7A7":"r","\uA783":"r","\u24E2":"s","\uFF53":"s","\u00DF":"s","\u015B":"s","\u1E65":"s","\u015D":"s","\u1E61":"s","\u0161":"s","\u1E67":"s","\u1E63":"s","\u1E69":"s","\u0219":"s","\u015F":"s","\u023F":"s","\uA7A9":"s","\uA785":"s","\u1E9B":"s","\u24E3":"t","\uFF54":"t","\u1E6B":"t","\u1E97":"t","\u0165":"t","\u1E6D":"t","\u021B":"t","\u0163":"t","\u1E71":"t","\u1E6F":"t","\u0167":"t","\u01AD":"t","\u0288":"t","\u2C66":"t","\uA787":"t","\uA729":"tz","\u24E4":"u","\uFF55":"u","\u00F9":"u","\u00FA":"u","\u00FB":"u","\u0169":"u","\u1E79":"u","\u016B":"u","\u1E7B":"u","\u016D":"u","\u00FC":"u","\u01DC":"u","\u01D8":"u","\u01D6":"u","\u01DA":"u","\u1EE7":"u","\u016F":"u","\u0171":"u","\u01D4":"u","\u0215":"u","\u0217":"u","\u01B0":"u","\u1EEB":"u","\u1EE9":"u","\u1EEF":"u","\u1EED":"u","\u1EF1":"u","\u1EE5":"u","\u1E73":"u","\u0173":"u","\u1E77":"u","\u1E75":"u","\u0289":"u","\u24E5":"v","\uFF56":"v","\u1E7D":"v","\u1E7F":"v","\u028B":"v","\uA75F":"v","\u028C":"v","\uA761":"vy","\u24E6":"w","\uFF57":"w","\u1E81":"w","\u1E83":"w","\u0175":"w","\u1E87":"w","\u1E85":"w","\u1E98":"w","\u1E89":"w","\u2C73":"w","\u24E7":"x","\uFF58":"x","\u1E8B":"x","\u1E8D":"x","\u24E8":"y","\uFF59":"y","\u1EF3":"y","\u00FD":"y","\u0177":"y","\u1EF9":"y","\u0233":"y","\u1E8F":"y","\u00FF":"y","\u1EF7":"y","\u1E99":"y","\u1EF5":"y","\u01B4":"y","\u024F":"y","\u1EFF":"y","\u24E9":"z","\uFF5A":"z","\u017A":"z","\u1E91":"z","\u017C":"z","\u017E":"z","\u1E93":"z","\u1E95":"z","\u01B6":"z","\u0225":"z","\u0240":"z","\u2C6C":"z","\uA763":"z"};
|
||
|
||
$document = $(document);
|
||
|
||
nextUid=(function() { var counter=1; return function() { return counter++; }; }());
|
||
|
||
|
||
function reinsertElement(element) {
|
||
var placeholder = $(document.createTextNode(''));
|
||
|
||
element.before(placeholder);
|
||
placeholder.before(element);
|
||
placeholder.remove();
|
||
}
|
||
|
||
function stripDiacritics(str) {
|
||
// Used 'uni range + named function' from http://jsperf.com/diacritics/18
|
||
function match(a) {
|
||
return DIACRITICS[a] || a;
|
||
}
|
||
|
||
return str.replace(/[^\u0000-\u007E]/g, match);
|
||
}
|
||
|
||
function indexOf(value, array) {
|
||
var i = 0, l = array.length;
|
||
for (; i < l; i = i + 1) {
|
||
if (equal(value, array[i])) return i;
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
function measureScrollbar () {
|
||
var $template = $( MEASURE_SCROLLBAR_TEMPLATE );
|
||
$template.appendTo('body');
|
||
|
||
var dim = {
|
||
width: $template.width() - $template[0].clientWidth,
|
||
height: $template.height() - $template[0].clientHeight
|
||
};
|
||
$template.remove();
|
||
|
||
return dim;
|
||
}
|
||
|
||
/**
|
||
* Compares equality of a and b
|
||
* @param a
|
||
* @param b
|
||
*/
|
||
function equal(a, b) {
|
||
if (a === b) return true;
|
||
if (a === undefined || b === undefined) return false;
|
||
if (a === null || b === null) return false;
|
||
// Check whether 'a' or 'b' is a string (primitive or object).
|
||
// The concatenation of an empty string (+'') converts its argument to a string's primitive.
|
||
if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object
|
||
if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty
|
||
* strings
|
||
* @param string
|
||
* @param separator
|
||
*/
|
||
function splitVal(string, separator) {
|
||
var val, i, l;
|
||
if (string === null || string.length < 1) return [];
|
||
val = string.split(separator);
|
||
for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);
|
||
return val;
|
||
}
|
||
|
||
function getSideBorderPadding(element) {
|
||
return element.outerWidth(false) - element.width();
|
||
}
|
||
|
||
function installKeyUpChangeEvent(element) {
|
||
var key="keyup-change-value";
|
||
element.on("keydown", function () {
|
||
if ($.data(element, key) === undefined) {
|
||
$.data(element, key, element.val());
|
||
}
|
||
});
|
||
element.on("keyup", function () {
|
||
var val= $.data(element, key);
|
||
if (val !== undefined && element.val() !== val) {
|
||
$.removeData(element, key);
|
||
element.trigger("keyup-change");
|
||
}
|
||
});
|
||
}
|
||
|
||
$document.on("mousemove", function (e) {
|
||
lastMousePosition.x = e.pageX;
|
||
lastMousePosition.y = e.pageY;
|
||
});
|
||
|
||
/**
|
||
* filters mouse events so an event is fired only if the mouse moved.
|
||
*
|
||
* filters out mouse events that occur when mouse is stationary but
|
||
* the elements under the pointer are scrolled.
|
||
*/
|
||
function installFilteredMouseMove(element) {
|
||
element.on("mousemove", function (e) {
|
||
var lastpos = lastMousePosition;
|
||
if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {
|
||
$(e.target).trigger("mousemove-filtered", e);
|
||
}
|
||
});
|
||
}
|
||
|
||
/**
|
||
* Debounces a function. Returns a function that calls the original fn function only if no invocations have been made
|
||
* within the last quietMillis milliseconds.
|
||
*
|
||
* @param quietMillis number of milliseconds to wait before invoking fn
|
||
* @param fn function to be debounced
|
||
* @param ctx object to be used as this reference within fn
|
||
* @return debounced version of fn
|
||
*/
|
||
function debounce(quietMillis, fn, ctx) {
|
||
ctx = ctx || undefined;
|
||
var timeout;
|
||
return function () {
|
||
var args = arguments;
|
||
window.clearTimeout(timeout);
|
||
timeout = window.setTimeout(function() {
|
||
fn.apply(ctx, args);
|
||
}, quietMillis);
|
||
};
|
||
}
|
||
|
||
function installDebouncedScroll(threshold, element) {
|
||
var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);});
|
||
element.on("scroll", function (e) {
|
||
if (indexOf(e.target, element.get()) >= 0) notify(e);
|
||
});
|
||
}
|
||
|
||
function focus($el) {
|
||
if ($el[0] === document.activeElement) return;
|
||
|
||
/* set the focus in a 0 timeout - that way the focus is set after the processing
|
||
of the current event has finished - which seems like the only reliable way
|
||
to set focus */
|
||
window.setTimeout(function() {
|
||
var el=$el[0], pos=$el.val().length, range;
|
||
|
||
$el.focus();
|
||
|
||
/* make sure el received focus so we do not error out when trying to manipulate the caret.
|
||
sometimes modals or others listeners may steal it after its set */
|
||
var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0);
|
||
if (isVisible && el === document.activeElement) {
|
||
|
||
/* after the focus is set move the caret to the end, necessary when we val()
|
||
just before setting focus */
|
||
if(el.setSelectionRange)
|
||
{
|
||
el.setSelectionRange(pos, pos);
|
||
}
|
||
else if (el.createTextRange) {
|
||
range = el.createTextRange();
|
||
range.collapse(false);
|
||
range.select();
|
||
}
|
||
}
|
||
}, 0);
|
||
}
|
||
|
||
function getCursorInfo(el) {
|
||
el = $(el)[0];
|
||
var offset = 0;
|
||
var length = 0;
|
||
if ('selectionStart' in el) {
|
||
offset = el.selectionStart;
|
||
length = el.selectionEnd - offset;
|
||
} else if ('selection' in document) {
|
||
el.focus();
|
||
var sel = document.selection.createRange();
|
||
length = document.selection.createRange().text.length;
|
||
sel.moveStart('character', -el.value.length);
|
||
offset = sel.text.length - length;
|
||
}
|
||
return { offset: offset, length: length };
|
||
}
|
||
|
||
function killEvent(event) {
|
||
event.preventDefault();
|
||
event.stopPropagation();
|
||
}
|
||
function killEventImmediately(event) {
|
||
event.preventDefault();
|
||
event.stopImmediatePropagation();
|
||
}
|
||
|
||
function measureTextWidth(e) {
|
||
if (!sizer){
|
||
var style = e[0].currentStyle || window.getComputedStyle(e[0], null);
|
||
sizer = $(document.createElement("div")).css({
|
||
position: "absolute",
|
||
left: "-10000px",
|
||
top: "-10000px",
|
||
display: "none",
|
||
fontSize: style.fontSize,
|
||
fontFamily: style.fontFamily,
|
||
fontStyle: style.fontStyle,
|
||
fontWeight: style.fontWeight,
|
||
letterSpacing: style.letterSpacing,
|
||
textTransform: style.textTransform,
|
||
whiteSpace: "nowrap"
|
||
});
|
||
sizer.attr("class","select2-sizer");
|
||
$("body").append(sizer);
|
||
}
|
||
sizer.text(e.val());
|
||
return sizer.width();
|
||
}
|
||
|
||
function syncCssClasses(dest, src, adapter) {
|
||
var classes, replacements = [], adapted;
|
||
|
||
classes = dest.attr("class");
|
||
if (classes) {
|
||
classes = '' + classes; // for IE which returns object
|
||
$(classes.split(" ")).each2(function() {
|
||
if (this.indexOf("select2-") === 0) {
|
||
replacements.push(this);
|
||
}
|
||
});
|
||
}
|
||
classes = src.attr("class");
|
||
if (classes) {
|
||
classes = '' + classes; // for IE which returns object
|
||
$(classes.split(" ")).each2(function() {
|
||
if (this.indexOf("select2-") !== 0) {
|
||
adapted = adapter(this);
|
||
if (adapted) {
|
||
replacements.push(adapted);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
dest.attr("class", replacements.join(" "));
|
||
}
|
||
|
||
|
||
function markMatch(text, term, markup, escapeMarkup) {
|
||
var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),
|
||
tl=term.length;
|
||
|
||
if (match<0) {
|
||
markup.push(escapeMarkup(text));
|
||
return;
|
||
}
|
||
|
||
markup.push(escapeMarkup(text.substring(0, match)));
|
||
markup.push("<span class='select2-match'>");
|
||
markup.push(escapeMarkup(text.substring(match, match + tl)));
|
||
markup.push("</span>");
|
||
markup.push(escapeMarkup(text.substring(match + tl, text.length)));
|
||
}
|
||
|
||
function defaultEscapeMarkup(markup) {
|
||
var replace_map = {
|
||
'\\': '\',
|
||
'&': '&',
|
||
'<': '<',
|
||
'>': '>',
|
||
'"': '"',
|
||
"'": ''',
|
||
"/": '/'
|
||
};
|
||
|
||
return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
|
||
return replace_map[match];
|
||
});
|
||
}
|
||
|
||
/**
|
||
* Produces an ajax-based query function
|
||
*
|
||
* @param options object containing configuration parameters
|
||
* @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax
|
||
* @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax
|
||
* @param options.url url for the data
|
||
* @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.
|
||
* @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified
|
||
* @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often
|
||
* @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2.
|
||
* The expected format is an object containing the following keys:
|
||
* results array of objects that will be used as choices
|
||
* more (optional) boolean indicating whether there are more results available
|
||
* Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}
|
||
*/
|
||
function ajax(options) {
|
||
var timeout, // current scheduled but not yet executed request
|
||
handler = null,
|
||
quietMillis = options.quietMillis || 100,
|
||
ajaxUrl = options.url,
|
||
self = this;
|
||
|
||
return function (query) {
|
||
window.clearTimeout(timeout);
|
||
timeout = window.setTimeout(function () {
|
||
var data = options.data, // ajax data function
|
||
url = ajaxUrl, // ajax url string or function
|
||
transport = options.transport || $.fn.select2.ajaxDefaults.transport,
|
||
// deprecated - to be removed in 4.0 - use params instead
|
||
deprecated = {
|
||
type: options.type || 'GET', // set type of request (GET or POST)
|
||
cache: options.cache || false,
|
||
jsonpCallback: options.jsonpCallback||undefined,
|
||
dataType: options.dataType||"json"
|
||
},
|
||
params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);
|
||
|
||
data = data ? data.call(self, query.term, query.page, query.context) : null;
|
||
url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;
|
||
|
||
if (handler && typeof handler.abort === "function") { handler.abort(); }
|
||
|
||
if (options.params) {
|
||
if ($.isFunction(options.params)) {
|
||
$.extend(params, options.params.call(self));
|
||
} else {
|
||
$.extend(params, options.params);
|
||
}
|
||
}
|
||
|
||
$.extend(params, {
|
||
url: url,
|
||
dataType: options.dataType,
|
||
data: data,
|
||
success: function (data) {
|
||
// TODO - replace query.page with query so users have access to term, page, etc.
|
||
var results = options.results(data, query.page);
|
||
query.callback(results);
|
||
}
|
||
});
|
||
handler = transport.call(self, params);
|
||
}, quietMillis);
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Produces a query function that works with a local array
|
||
*
|
||
* @param options object containing configuration parameters. The options parameter can either be an array or an
|
||
* object.
|
||
*
|
||
* If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.
|
||
*
|
||
* If the object form is used it is assumed that it contains 'data' and 'text' keys. The 'data' key should contain
|
||
* an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'
|
||
* key can either be a String in which case it is expected that each element in the 'data' array has a key with the
|
||
* value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract
|
||
* the text.
|
||
*/
|
||
function local(options) {
|
||
var data = options, // data elements
|
||
dataText,
|
||
tmp,
|
||
text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search
|
||
|
||
if ($.isArray(data)) {
|
||
tmp = data;
|
||
data = { results: tmp };
|
||
}
|
||
|
||
if ($.isFunction(data) === false) {
|
||
tmp = data;
|
||
data = function() { return tmp; };
|
||
}
|
||
|
||
var dataItem = data();
|
||
if (dataItem.text) {
|
||
text = dataItem.text;
|
||
// if text is not a function we assume it to be a key name
|
||
if (!$.isFunction(text)) {
|
||
dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available
|
||
text = function (item) { return item[dataText]; };
|
||
}
|
||
}
|
||
|
||
return function (query) {
|
||
var t = query.term, filtered = { results: [] }, process;
|
||
if (t === "") {
|
||
query.callback(data());
|
||
return;
|
||
}
|
||
|
||
process = function(datum, collection) {
|
||
var group, attr;
|
||
datum = datum[0];
|
||
if (datum.children) {
|
||
group = {};
|
||
for (attr in datum) {
|
||
if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];
|
||
}
|
||
group.children=[];
|
||
$(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });
|
||
if (group.children.length || query.matcher(t, text(group), datum)) {
|
||
collection.push(group);
|
||
}
|
||
} else {
|
||
if (query.matcher(t, text(datum), datum)) {
|
||
collection.push(datum);
|
||
}
|
||
}
|
||
};
|
||
|
||
$(data().results).each2(function(i, datum) { process(datum, filtered.results); });
|
||
query.callback(filtered);
|
||
};
|
||
}
|
||
|
||
// TODO javadoc
|
||
function tags(data) {
|
||
var isFunc = $.isFunction(data);
|
||
return function (query) {
|
||
var t = query.term, filtered = {results: []};
|
||
var result = isFunc ? data(query) : data;
|
||
if ($.isArray(result)) {
|
||
$(result).each(function () {
|
||
var isObject = this.text !== undefined,
|
||
text = isObject ? this.text : this;
|
||
if (t === "" || query.matcher(t, text)) {
|
||
filtered.results.push(isObject ? this : {id: this, text: this});
|
||
}
|
||
});
|
||
query.callback(filtered);
|
||
}
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Checks if the formatter function should be used.
|
||
*
|
||
* Throws an error if it is not a function. Returns true if it should be used,
|
||
* false if no formatting should be performed.
|
||
*
|
||
* @param formatter
|
||
*/
|
||
function checkFormatter(formatter, formatterName) {
|
||
if ($.isFunction(formatter)) return true;
|
||
if (!formatter) return false;
|
||
if (typeof(formatter) === 'string') return true;
|
||
throw new Error(formatterName +" must be a string, function, or falsy value");
|
||
}
|
||
|
||
function evaluate(val) {
|
||
if ($.isFunction(val)) {
|
||
var args = Array.prototype.slice.call(arguments, 1);
|
||
return val.apply(null, args);
|
||
}
|
||
return val;
|
||
}
|
||
|
||
function countResults(results) {
|
||
var count = 0;
|
||
$.each(results, function(i, item) {
|
||
if (item.children) {
|
||
count += countResults(item.children);
|
||
} else {
|
||
count++;
|
||
}
|
||
});
|
||
return count;
|
||
}
|
||
|
||
/**
|
||
* Default tokenizer. This function uses breaks the input on substring match of any string from the
|
||
* opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those
|
||
* two options have to be defined in order for the tokenizer to work.
|
||
*
|
||
* @param input text user has typed so far or pasted into the search field
|
||
* @param selection currently selected choices
|
||
* @param selectCallback function(choice) callback tho add the choice to selection
|
||
* @param opts select2's opts
|
||
* @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value
|
||
*/
|
||
function defaultTokenizer(input, selection, selectCallback, opts) {
|
||
var original = input, // store the original so we can compare and know if we need to tell the search to update its text
|
||
dupe = false, // check for whether a token we extracted represents a duplicate selected choice
|
||
token, // token
|
||
index, // position at which the separator was found
|
||
i, l, // looping variables
|
||
separator; // the matched separator
|
||
|
||
if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;
|
||
|
||
while (true) {
|
||
index = -1;
|
||
|
||
for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {
|
||
separator = opts.tokenSeparators[i];
|
||
index = input.indexOf(separator);
|
||
if (index >= 0) break;
|
||
}
|
||
|
||
if (index < 0) break; // did not find any token separator in the input string, bail
|
||
|
||
token = input.substring(0, index);
|
||
input = input.substring(index + separator.length);
|
||
|
||
if (token.length > 0) {
|
||
token = opts.createSearchChoice.call(this, token, selection);
|
||
if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {
|
||
dupe = false;
|
||
for (i = 0, l = selection.length; i < l; i++) {
|
||
if (equal(opts.id(token), opts.id(selection[i]))) {
|
||
dupe = true; break;
|
||
}
|
||
}
|
||
|
||
if (!dupe) selectCallback(token);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (original!==input) return input;
|
||
}
|
||
|
||
function cleanupJQueryElements() {
|
||
var self = this;
|
||
|
||
Array.prototype.forEach.call(arguments, function (element) {
|
||
self[element].remove();
|
||
self[element] = null;
|
||
});
|
||
}
|
||
|
||
/**
|
||
* Creates a new class
|
||
*
|
||
* @param superClass
|
||
* @param methods
|
||
*/
|
||
function clazz(SuperClass, methods) {
|
||
var constructor = function () {};
|
||
constructor.prototype = new SuperClass;
|
||
constructor.prototype.constructor = constructor;
|
||
constructor.prototype.parent = SuperClass.prototype;
|
||
constructor.prototype = $.extend(constructor.prototype, methods);
|
||
return constructor;
|
||
}
|
||
|
||
AbstractSelect2 = clazz(Object, {
|
||
|
||
// abstract
|
||
bind: function (func) {
|
||
var self = this;
|
||
return function () {
|
||
func.apply(self, arguments);
|
||
};
|
||
},
|
||
|
||
// abstract
|
||
init: function (opts) {
|
||
var results, search, resultsSelector = ".select2-results";
|
||
|
||
// prepare options
|
||
this.opts = opts = this.prepareOpts(opts);
|
||
|
||
this.id=opts.id;
|
||
|
||
// destroy if called on an existing component
|
||
if (opts.element.data("select2") !== undefined &&
|
||
opts.element.data("select2") !== null) {
|
||
opts.element.data("select2").destroy();
|
||
}
|
||
|
||
this.container = this.createContainer();
|
||
|
||
this.liveRegion = $("<span>", {
|
||
role: "status",
|
||
"aria-live": "polite"
|
||
})
|
||
.addClass("select2-hidden-accessible")
|
||
.appendTo(document.body);
|
||
|
||
this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid());
|
||
this.containerEventName= this.containerId
|
||
.replace(/([.])/g, '_')
|
||
.replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
|
||
this.container.attr("id", this.containerId);
|
||
|
||
this.container.attr("title", opts.element.attr("title"));
|
||
|
||
this.body = $("body");
|
||
|
||
syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
|
||
|
||
this.container.attr("style", opts.element.attr("style"));
|
||
this.container.css(evaluate(opts.containerCss));
|
||
this.container.addClass(evaluate(opts.containerCssClass));
|
||
|
||
this.elementTabIndex = this.opts.element.attr("tabindex");
|
||
|
||
// swap container for the element
|
||
this.opts.element
|
||
.data("select2", this)
|
||
.attr("tabindex", "-1")
|
||
.before(this.container)
|
||
.on("click.select2", killEvent); // do not leak click events
|
||
|
||
this.container.data("select2", this);
|
||
|
||
this.dropdown = this.container.find(".select2-drop");
|
||
|
||
syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);
|
||
|
||
this.dropdown.addClass(evaluate(opts.dropdownCssClass));
|
||
this.dropdown.data("select2", this);
|
||
this.dropdown.on("click", killEvent);
|
||
|
||
this.results = results = this.container.find(resultsSelector);
|
||
this.search = search = this.container.find("input.select2-input");
|
||
|
||
this.queryCount = 0;
|
||
this.resultsPage = 0;
|
||
this.context = null;
|
||
|
||
// initialize the container
|
||
this.initContainer();
|
||
|
||
this.container.on("click", killEvent);
|
||
|
||
installFilteredMouseMove(this.results);
|
||
|
||
this.dropdown.on("mousemove-filtered", resultsSelector, this.bind(this.highlightUnderEvent));
|
||
this.dropdown.on("touchstart touchmove touchend", resultsSelector, this.bind(function (event) {
|
||
this._touchEvent = true;
|
||
this.highlightUnderEvent(event);
|
||
}));
|
||
this.dropdown.on("touchmove", resultsSelector, this.bind(this.touchMoved));
|
||
this.dropdown.on("touchstart touchend", resultsSelector, this.bind(this.clearTouchMoved));
|
||
|
||
// Waiting for a click event on touch devices to select option and hide dropdown
|
||
// otherwise click will be triggered on an underlying element
|
||
this.dropdown.on('click', this.bind(function (event) {
|
||
if (this._touchEvent) {
|
||
this._touchEvent = false;
|
||
this.selectHighlighted();
|
||
}
|
||
}));
|
||
|
||
installDebouncedScroll(80, this.results);
|
||
this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded));
|
||
|
||
// do not propagate change event from the search field out of the component
|
||
$(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();});
|
||
$(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();});
|
||
|
||
// if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel
|
||
if ($.fn.mousewheel) {
|
||
results.mousewheel(function (e, delta, deltaX, deltaY) {
|
||
var top = results.scrollTop();
|
||
if (deltaY > 0 && top - deltaY <= 0) {
|
||
results.scrollTop(0);
|
||
killEvent(e);
|
||
} else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {
|
||
results.scrollTop(results.get(0).scrollHeight - results.height());
|
||
killEvent(e);
|
||
}
|
||
});
|
||
}
|
||
|
||
installKeyUpChangeEvent(search);
|
||
search.on("keyup-change input paste", this.bind(this.updateResults));
|
||
search.on("focus", function () { search.addClass("select2-focused"); });
|
||
search.on("blur", function () { search.removeClass("select2-focused");});
|
||
|
||
this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) {
|
||
if ($(e.target).closest(".select2-result-selectable").length > 0) {
|
||
this.highlightUnderEvent(e);
|
||
this.selectHighlighted(e);
|
||
}
|
||
}));
|
||
|
||
// trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening
|
||
// for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's
|
||
// dom it will trigger the popup close, which is not what we want
|
||
// focusin can cause focus wars between modals and select2 since the dropdown is outside the modal.
|
||
this.dropdown.on("click mouseup mousedown touchstart touchend focusin", function (e) { e.stopPropagation(); });
|
||
|
||
this.nextSearchTerm = undefined;
|
||
|
||
if ($.isFunction(this.opts.initSelection)) {
|
||
// initialize selection based on the current value of the source element
|
||
this.initSelection();
|
||
|
||
// if the user has provided a function that can set selection based on the value of the source element
|
||
// we monitor the change event on the element and trigger it, allowing for two way synchronization
|
||
this.monitorSource();
|
||
}
|
||
|
||
if (opts.maximumInputLength !== null) {
|
||
this.search.attr("maxlength", opts.maximumInputLength);
|
||
}
|
||
|
||
var disabled = opts.element.prop("disabled");
|
||
if (disabled === undefined) disabled = false;
|
||
this.enable(!disabled);
|
||
|
||
var readonly = opts.element.prop("readonly");
|
||
if (readonly === undefined) readonly = false;
|
||
this.readonly(readonly);
|
||
|
||
// Calculate size of scrollbar
|
||
scrollBarDimensions = scrollBarDimensions || measureScrollbar();
|
||
|
||
this.autofocus = opts.element.prop("autofocus");
|
||
opts.element.prop("autofocus", false);
|
||
if (this.autofocus) this.focus();
|
||
|
||
this.search.attr("placeholder", opts.searchInputPlaceholder);
|
||
},
|
||
|
||
// abstract
|
||
destroy: function () {
|
||
var element=this.opts.element, select2 = element.data("select2");
|
||
|
||
this.close();
|
||
|
||
if (this.propertyObserver) {
|
||
this.propertyObserver.disconnect();
|
||
this.propertyObserver = null;
|
||
}
|
||
|
||
if (select2 !== undefined) {
|
||
select2.container.remove();
|
||
select2.liveRegion.remove();
|
||
select2.dropdown.remove();
|
||
element
|
||
.removeClass("select2-offscreen")
|
||
.removeData("select2")
|
||
.off(".select2")
|
||
.prop("autofocus", this.autofocus || false);
|
||
if (this.elementTabIndex) {
|
||
element.attr({tabindex: this.elementTabIndex});
|
||
} else {
|
||
element.removeAttr("tabindex");
|
||
}
|
||
element.show();
|
||
}
|
||
|
||
cleanupJQueryElements.call(this,
|
||
"container",
|
||
"liveRegion",
|
||
"dropdown",
|
||
"results",
|
||
"search"
|
||
);
|
||
},
|
||
|
||
// abstract
|
||
optionToData: function(element) {
|
||
if (element.is("option")) {
|
||
return {
|
||
id:element.prop("value"),
|
||
text:element.text(),
|
||
element: element.get(),
|
||
css: element.attr("class"),
|
||
disabled: element.prop("disabled"),
|
||
locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true)
|
||
};
|
||
} else if (element.is("optgroup")) {
|
||
return {
|
||
text:element.attr("label"),
|
||
children:[],
|
||
element: element.get(),
|
||
css: element.attr("class")
|
||
};
|
||
}
|
||
},
|
||
|
||
// abstract
|
||
prepareOpts: function (opts) {
|
||
var element, select, idKey, ajaxUrl, self = this;
|
||
|
||
element = opts.element;
|
||
|
||
if (element.get(0).tagName.toLowerCase() === "select") {
|
||
this.select = select = opts.element;
|
||
}
|
||
|
||
if (select) {
|
||
// these options are not allowed when attached to a select because they are picked up off the element itself
|
||
$.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () {
|
||
if (this in opts) {
|
||
throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a <select> element.");
|
||
}
|
||
});
|
||
}
|
||
|
||
opts = $.extend({}, {
|
||
populateResults: function(container, results, query) {
|
||
var populate, id=this.opts.id, liveRegion=this.liveRegion;
|
||
|
||
populate=function(results, container, depth) {
|
||
|
||
var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;
|
||
|
||
results = opts.sortResults(results, container, query);
|
||
|
||
for (i = 0, l = results.length; i < l; i = i + 1) {
|
||
|
||
result=results[i];
|
||
|
||
disabled = (result.disabled === true);
|
||
selectable = (!disabled) && (id(result) !== undefined);
|
||
|
||
compound=result.children && result.children.length > 0;
|
||
|
||
node=$("<li></li>");
|
||
node.addClass("select2-results-dept-"+depth);
|
||
node.addClass("select2-result");
|
||
node.addClass(selectable ? "select2-result-selectable" : "select2-result-unselectable");
|
||
if (disabled) { node.addClass("select2-disabled"); }
|
||
if (compound) { node.addClass("select2-result-with-children"); }
|
||
node.addClass(self.opts.formatResultCssClass(result));
|
||
node.attr("role", "presentation");
|
||
|
||
label=$(document.createElement("div"));
|
||
label.addClass("select2-result-label");
|
||
label.attr("id", "select2-result-label-" + nextUid());
|
||
label.attr("role", "option");
|
||
|
||
formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);
|
||
if (formatted!==undefined) {
|
||
label.html(formatted);
|
||
node.append(label);
|
||
}
|
||
|
||
|
||
if (compound) {
|
||
|
||
innerContainer=$("<ul></ul>");
|
||
innerContainer.addClass("select2-result-sub");
|
||
populate(result.children, innerContainer, depth+1);
|
||
node.append(innerContainer);
|
||
}
|
||
|
||
node.data("select2-data", result);
|
||
container.append(node);
|
||
}
|
||
|
||
liveRegion.text(opts.formatMatches(results.length));
|
||
};
|
||
|
||
populate(results, container, 0);
|
||
}
|
||
}, $.fn.select2.defaults, opts);
|
||
|
||
if (typeof(opts.id) !== "function") {
|
||
idKey = opts.id;
|
||
opts.id = function (e) { return e[idKey]; };
|
||
}
|
||
|
||
if ($.isArray(opts.element.data("select2Tags"))) {
|
||
if ("tags" in opts) {
|
||
throw "tags specified as both an attribute 'data-select2-tags' and in options of Select2 " + opts.element.attr("id");
|
||
}
|
||
opts.tags=opts.element.data("select2Tags");
|
||
}
|
||
|
||
if (select) {
|
||
opts.query = this.bind(function (query) {
|
||
var data = { results: [], more: false },
|
||
term = query.term,
|
||
children, placeholderOption, process;
|
||
|
||
process=function(element, collection) {
|
||
var group;
|
||
if (element.is("option")) {
|
||
if (query.matcher(term, element.text(), element)) {
|
||
collection.push(self.optionToData(element));
|
||
}
|
||
} else if (element.is("optgroup")) {
|
||
group=self.optionToData(element);
|
||
element.children().each2(function(i, elm) { process(elm, group.children); });
|
||
if (group.children.length>0) {
|
||
collection.push(group);
|
||
}
|
||
}
|
||
};
|
||
|
||
children=element.children();
|
||
|
||
// ignore the placeholder option if there is one
|
||
if (this.getPlaceholder() !== undefined && children.length > 0) {
|
||
placeholderOption = this.getPlaceholderOption();
|
||
if (placeholderOption) {
|
||
children=children.not(placeholderOption);
|
||
}
|
||
}
|
||
|
||
children.each2(function(i, elm) { process(elm, data.results); });
|
||
|
||
query.callback(data);
|
||
});
|
||
// this is needed because inside val() we construct choices from options and there id is hardcoded
|
||
opts.id=function(e) { return e.id; };
|
||
} else {
|
||
if (!("query" in opts)) {
|
||
|
||
if ("ajax" in opts) {
|
||
ajaxUrl = opts.element.data("ajax-url");
|
||
if (ajaxUrl && ajaxUrl.length > 0) {
|
||
opts.ajax.url = ajaxUrl;
|
||
}
|
||
opts.query = ajax.call(opts.element, opts.ajax);
|
||
} else if ("data" in opts) {
|
||
opts.query = local(opts.data);
|
||
} else if ("tags" in opts) {
|
||
opts.query = tags(opts.tags);
|
||
if (opts.createSearchChoice === undefined) {
|
||
opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; };
|
||
}
|
||
if (opts.initSelection === undefined) {
|
||
opts.initSelection = function (element, callback) {
|
||
var data = [];
|
||
$(splitVal(element.val(), opts.separator)).each(function () {
|
||
var obj = { id: this, text: this },
|
||
tags = opts.tags;
|
||
if ($.isFunction(tags)) tags=tags();
|
||
$(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } });
|
||
data.push(obj);
|
||
});
|
||
|
||
callback(data);
|
||
};
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (typeof(opts.query) !== "function") {
|
||
throw "query function not defined for Select2 " + opts.element.attr("id");
|
||
}
|
||
|
||
if (opts.createSearchChoicePosition === 'top') {
|
||
opts.createSearchChoicePosition = function(list, item) { list.unshift(item); };
|
||
}
|
||
else if (opts.createSearchChoicePosition === 'bottom') {
|
||
opts.createSearchChoicePosition = function(list, item) { list.push(item); };
|
||
}
|
||
else if (typeof(opts.createSearchChoicePosition) !== "function") {
|
||
throw "invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function";
|
||
}
|
||
|
||
return opts;
|
||
},
|
||
|
||
/**
|
||
* Monitor the original element for changes and update select2 accordingly
|
||
*/
|
||
// abstract
|
||
monitorSource: function () {
|
||
var el = this.opts.element, sync, observer;
|
||
|
||
el.on("change.select2", this.bind(function (e) {
|
||
if (this.opts.element.data("select2-change-triggered") !== true) {
|
||
this.initSelection();
|
||
}
|
||
}));
|
||
|
||
sync = this.bind(function () {
|
||
|
||
// sync enabled state
|
||
var disabled = el.prop("disabled");
|
||
if (disabled === undefined) disabled = false;
|
||
this.enable(!disabled);
|
||
|
||
var readonly = el.prop("readonly");
|
||
if (readonly === undefined) readonly = false;
|
||
this.readonly(readonly);
|
||
|
||
syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
|
||
this.container.addClass(evaluate(this.opts.containerCssClass));
|
||
|
||
syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);
|
||
this.dropdown.addClass(evaluate(this.opts.dropdownCssClass));
|
||
|
||
});
|
||
|
||
// IE8-10 (IE9/10 won't fire propertyChange via attachEventListener)
|
||
if (el.length && el[0].attachEvent) {
|
||
el.each(function() {
|
||
this.attachEvent("onpropertychange", sync);
|
||
});
|
||
}
|
||
|
||
// safari, chrome, firefox, IE11
|
||
observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver;
|
||
if (observer !== undefined) {
|
||
if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }
|
||
this.propertyObserver = new observer(function (mutations) {
|
||
mutations.forEach(sync);
|
||
});
|
||
this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });
|
||
}
|
||
},
|
||
|
||
// abstract
|
||
triggerSelect: function(data) {
|
||
var evt = $.Event("select2-selecting", { val: this.id(data), object: data });
|
||
this.opts.element.trigger(evt);
|
||
return !evt.isDefaultPrevented();
|
||
},
|
||
|
||
/**
|
||
* Triggers the change event on the source element
|
||
*/
|
||
// abstract
|
||
triggerChange: function (details) {
|
||
|
||
details = details || {};
|
||
details= $.extend({}, details, { type: "change", val: this.val() });
|
||
// prevents recursive triggering
|
||
this.opts.element.data("select2-change-triggered", true);
|
||
this.opts.element.trigger(details);
|
||
this.opts.element.data("select2-change-triggered", false);
|
||
|
||
// some validation frameworks ignore the change event and listen instead to keyup, click for selects
|
||
// so here we trigger the click event manually
|
||
this.opts.element.click();
|
||
|
||
// ValidationEngine ignores the change event and listens instead to blur
|
||
// so here we trigger the blur event manually if so desired
|
||
if (this.opts.blurOnChange)
|
||
this.opts.element.blur();
|
||
},
|
||
|
||
//abstract
|
||
isInterfaceEnabled: function()
|
||
{
|
||
return this.enabledInterface === true;
|
||
},
|
||
|
||
// abstract
|
||
enableInterface: function() {
|
||
var enabled = this._enabled && !this._readonly,
|
||
disabled = !enabled;
|
||
|
||
if (enabled === this.enabledInterface) return false;
|
||
|
||
this.container.toggleClass("select2-container-disabled", disabled);
|
||
this.close();
|
||
this.enabledInterface = enabled;
|
||
|
||
return true;
|
||
},
|
||
|
||
// abstract
|
||
enable: function(enabled) {
|
||
if (enabled === undefined) enabled = true;
|
||
if (this._enabled === enabled) return;
|
||
this._enabled = enabled;
|
||
|
||
this.opts.element.prop("disabled", !enabled);
|
||
this.enableInterface();
|
||
},
|
||
|
||
// abstract
|
||
disable: function() {
|
||
this.enable(false);
|
||
},
|
||
|
||
// abstract
|
||
readonly: function(enabled) {
|
||
if (enabled === undefined) enabled = false;
|
||
if (this._readonly === enabled) return;
|
||
this._readonly = enabled;
|
||
|
||
this.opts.element.prop("readonly", enabled);
|
||
this.enableInterface();
|
||
},
|
||
|
||
// abstract
|
||
opened: function () {
|
||
return this.container.hasClass("select2-dropdown-open");
|
||
},
|
||
|
||
// abstract
|
||
positionDropdown: function() {
|
||
var $dropdown = this.dropdown,
|
||
offset = this.container.offset(),
|
||
height = this.container.outerHeight(false),
|
||
width = this.container.outerWidth(false),
|
||
dropHeight = $dropdown.outerHeight(false),
|
||
$window = $(window),
|
||
windowWidth = $window.width(),
|
||
windowHeight = $window.height(),
|
||
viewPortRight = $window.scrollLeft() + windowWidth,
|
||
viewportBottom = $window.scrollTop() + windowHeight,
|
||
dropTop = offset.top + height,
|
||
dropLeft = offset.left,
|
||
enoughRoomBelow = dropTop + dropHeight <= viewportBottom,
|
||
enoughRoomAbove = (offset.top - dropHeight) >= $window.scrollTop(),
|
||
dropWidth = $dropdown.outerWidth(false),
|
||
enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight,
|
||
aboveNow = $dropdown.hasClass("select2-drop-above"),
|
||
bodyOffset,
|
||
above,
|
||
changeDirection,
|
||
css,
|
||
resultsListNode;
|
||
|
||
// always prefer the current above/below alignment, unless there is not enough room
|
||
if (aboveNow) {
|
||
above = true;
|
||
if (!enoughRoomAbove && enoughRoomBelow) {
|
||
changeDirection = true;
|
||
above = false;
|
||
}
|
||
} else {
|
||
above = false;
|
||
if (!enoughRoomBelow && enoughRoomAbove) {
|
||
changeDirection = true;
|
||
above = true;
|
||
}
|
||
}
|
||
|
||
//if we are changing direction we need to get positions when dropdown is hidden;
|
||
if (changeDirection) {
|
||
$dropdown.hide();
|
||
offset = this.container.offset();
|
||
height = this.container.outerHeight(false);
|
||
width = this.container.outerWidth(false);
|
||
dropHeight = $dropdown.outerHeight(false);
|
||
viewPortRight = $window.scrollLeft() + windowWidth;
|
||
viewportBottom = $window.scrollTop() + windowHeight;
|
||
dropTop = offset.top + height;
|
||
dropLeft = offset.left;
|
||
dropWidth = $dropdown.outerWidth(false);
|
||
enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;
|
||
$dropdown.show();
|
||
|
||
// fix so the cursor does not move to the left within the search-textbox in IE
|
||
this.focusSearch();
|
||
}
|
||
|
||
if (this.opts.dropdownAutoWidth) {
|
||
resultsListNode = $('.select2-results', $dropdown)[0];
|
||
$dropdown.addClass('select2-drop-auto-width');
|
||
$dropdown.css('width', '');
|
||
// Add scrollbar width to dropdown if vertical scrollbar is present
|
||
dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);
|
||
dropWidth > width ? width = dropWidth : dropWidth = width;
|
||
dropHeight = $dropdown.outerHeight(false);
|
||
enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;
|
||
}
|
||
else {
|
||
this.container.removeClass('select2-drop-auto-width');
|
||
}
|
||
|
||
//console.log("below/ droptop:", dropTop, "dropHeight", dropHeight, "sum", (dropTop+dropHeight)+" viewport bottom", viewportBottom, "enough?", enoughRoomBelow);
|
||
//console.log("above/ offset.top", offset.top, "dropHeight", dropHeight, "top", (offset.top-dropHeight), "scrollTop", this.body.scrollTop(), "enough?", enoughRoomAbove);
|
||
|
||
// fix positioning when body has an offset and is not position: static
|
||
if (this.body.css('position') !== 'static') {
|
||
bodyOffset = this.body.offset();
|
||
dropTop -= bodyOffset.top;
|
||
dropLeft -= bodyOffset.left;
|
||
}
|
||
|
||
if (!enoughRoomOnRight) {
|
||
dropLeft = offset.left + this.container.outerWidth(false) - dropWidth;
|
||
}
|
||
|
||
css = {
|
||
left: dropLeft,
|
||
width: width
|
||
};
|
||
|
||
if (above) {
|
||
css.top = offset.top - dropHeight;
|
||
css.bottom = 'auto';
|
||
this.container.addClass("select2-drop-above");
|
||
$dropdown.addClass("select2-drop-above");
|
||
}
|
||
else {
|
||
css.top = dropTop;
|
||
css.bottom = 'auto';
|
||
this.container.removeClass("select2-drop-above");
|
||
$dropdown.removeClass("select2-drop-above");
|
||
}
|
||
css = $.extend(css, evaluate(this.opts.dropdownCss));
|
||
|
||
$dropdown.css(css);
|
||
},
|
||
|
||
// abstract
|
||
shouldOpen: function() {
|
||
var event;
|
||
|
||
if (this.opened()) return false;
|
||
|
||
if (this._enabled === false || this._readonly === true) return false;
|
||
|
||
event = $.Event("select2-opening");
|
||
this.opts.element.trigger(event);
|
||
return !event.isDefaultPrevented();
|
||
},
|
||
|
||
// abstract
|
||
clearDropdownAlignmentPreference: function() {
|
||
// clear the classes used to figure out the preference of where the dropdown should be opened
|
||
this.container.removeClass("select2-drop-above");
|
||
this.dropdown.removeClass("select2-drop-above");
|
||
},
|
||
|
||
/**
|
||
* Opens the dropdown
|
||
*
|
||
* @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,
|
||
* the dropdown is already open, or if the 'open' event listener on the element called preventDefault().
|
||
*/
|
||
// abstract
|
||
open: function () {
|
||
|
||
if (!this.shouldOpen()) return false;
|
||
|
||
this.opening();
|
||
|
||
return true;
|
||
},
|
||
|
||
/**
|
||
* Performs the opening of the dropdown
|
||
*/
|
||
// abstract
|
||
opening: function() {
|
||
var cid = this.containerEventName,
|
||
scroll = "scroll." + cid,
|
||
resize = "resize."+cid,
|
||
orient = "orientationchange."+cid,
|
||
mask;
|
||
|
||
this.container.addClass("select2-dropdown-open").addClass("select2-container-active");
|
||
|
||
this.clearDropdownAlignmentPreference();
|
||
|
||
if(this.dropdown[0] !== this.body.children().last()[0]) {
|
||
this.dropdown.detach().appendTo(this.body);
|
||
}
|
||
|
||
// create the dropdown mask if doesn't already exist
|
||
mask = $("#select2-drop-mask");
|
||
if (mask.length == 0) {
|
||
mask = $(document.createElement("div"));
|
||
mask.attr("id","select2-drop-mask").attr("class","select2-drop-mask");
|
||
mask.hide();
|
||
mask.appendTo(this.body);
|
||
mask.on("mousedown touchstart click", function (e) {
|
||
// Prevent IE from generating a click event on the body
|
||
reinsertElement(mask);
|
||
|
||
var dropdown = $("#select2-drop"), self;
|
||
if (dropdown.length > 0) {
|
||
self=dropdown.data("select2");
|
||
if (self.opts.selectOnBlur) {
|
||
self.selectHighlighted({noFocus: true});
|
||
}
|
||
self.close();
|
||
e.preventDefault();
|
||
e.stopPropagation();
|
||
}
|
||
});
|
||
}
|
||
|
||
// ensure the mask is always right before the dropdown
|
||
if (this.dropdown.prev()[0] !== mask[0]) {
|
||
this.dropdown.before(mask);
|
||
}
|
||
|
||
// move the global id to the correct dropdown
|
||
$("#select2-drop").removeAttr("id");
|
||
this.dropdown.attr("id", "select2-drop");
|
||
|
||
// show the elements
|
||
mask.show();
|
||
|
||
this.positionDropdown();
|
||
this.dropdown.show();
|
||
this.positionDropdown();
|
||
|
||
this.dropdown.addClass("select2-drop-active");
|
||
|
||
// attach listeners to events that can change the position of the container and thus require
|
||
// the position of the dropdown to be updated as well so it does not come unglued from the container
|
||
var that = this;
|
||
this.container.parents().add(window).each(function () {
|
||
$(this).on(resize+" "+scroll+" "+orient, function (e) {
|
||
if (that.opened()) that.positionDropdown();
|
||
});
|
||
});
|
||
|
||
|
||
},
|
||
|
||
// abstract
|
||
close: function () {
|
||
if (!this.opened()) return;
|
||
|
||
var cid = this.containerEventName,
|
||
scroll = "scroll." + cid,
|
||
resize = "resize."+cid,
|
||
orient = "orientationchange."+cid;
|
||
|
||
// unbind event listeners
|
||
this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });
|
||
|
||
this.clearDropdownAlignmentPreference();
|
||
|
||
$("#select2-drop-mask").hide();
|
||
this.dropdown.removeAttr("id"); // only the active dropdown has the select2-drop id
|
||
this.dropdown.hide();
|
||
this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active");
|
||
this.results.empty();
|
||
|
||
|
||
this.clearSearch();
|
||
this.search.removeClass("select2-active");
|
||
this.opts.element.trigger($.Event("select2-close"));
|
||
},
|
||
|
||
/**
|
||
* Opens control, sets input value, and updates results.
|
||
*/
|
||
// abstract
|
||
externalSearch: function (term) {
|
||
this.open();
|
||
this.search.val(term);
|
||
this.updateResults(false);
|
||
},
|
||
|
||
// abstract
|
||
clearSearch: function () {
|
||
|
||
},
|
||
|
||
//abstract
|
||
getMaximumSelectionSize: function() {
|
||
return evaluate(this.opts.maximumSelectionSize);
|
||
},
|
||
|
||
// abstract
|
||
ensureHighlightVisible: function () {
|
||
var results = this.results, children, index, child, hb, rb, y, more;
|
||
|
||
index = this.highlight();
|
||
|
||
if (index < 0) return;
|
||
|
||
if (index == 0) {
|
||
|
||
// if the first element is highlighted scroll all the way to the top,
|
||
// that way any unselectable headers above it will also be scrolled
|
||
// into view
|
||
|
||
results.scrollTop(0);
|
||
return;
|
||
}
|
||
|
||
children = this.findHighlightableChoices().find('.select2-result-label');
|
||
|
||
child = $(children[index]);
|
||
|
||
hb = child.offset().top + child.outerHeight(true);
|
||
|
||
// if this is the last child lets also make sure select2-more-results is visible
|
||
if (index === children.length - 1) {
|
||
more = results.find("li.select2-more-results");
|
||
if (more.length > 0) {
|
||
hb = more.offset().top + more.outerHeight(true);
|
||
}
|
||
}
|
||
|
||
rb = results.offset().top + results.outerHeight(true);
|
||
if (hb > rb) {
|
||
results.scrollTop(results.scrollTop() + (hb - rb));
|
||
}
|
||
y = child.offset().top - results.offset().top;
|
||
|
||
// make sure the top of the element is visible
|
||
if (y < 0 && child.css('display') != 'none' ) {
|
||
results.scrollTop(results.scrollTop() + y); // y is negative
|
||
}
|
||
},
|
||
|
||
// abstract
|
||
findHighlightableChoices: function() {
|
||
return this.results.find(".select2-result-selectable:not(.select2-disabled):not(.select2-selected)");
|
||
},
|
||
|
||
// abstract
|
||
moveHighlight: function (delta) {
|
||
var choices = this.findHighlightableChoices(),
|
||
index = this.highlight();
|
||
|
||
while (index > -1 && index < choices.length) {
|
||
index += delta;
|
||
var choice = $(choices[index]);
|
||
if (choice.hasClass("select2-result-selectable") && !choice.hasClass("select2-disabled") && !choice.hasClass("select2-selected")) {
|
||
this.highlight(index);
|
||
break;
|
||
}
|
||
}
|
||
},
|
||
|
||
// abstract
|
||
highlight: function (index) {
|
||
var choices = this.findHighlightableChoices(),
|
||
choice,
|
||
data;
|
||
|
||
if (arguments.length === 0) {
|
||
return indexOf(choices.filter(".select2-highlighted")[0], choices.get());
|
||
}
|
||
|
||
if (index >= choices.length) index = choices.length - 1;
|
||
if (index < 0) index = 0;
|
||
|
||
this.removeHighlight();
|
||
|
||
choice = $(choices[index]);
|
||
choice.addClass("select2-highlighted");
|
||
|
||
// ensure assistive technology can determine the active choice
|
||
this.search.attr("aria-activedescendant", choice.find(".select2-result-label").attr("id"));
|
||
|
||
this.ensureHighlightVisible();
|
||
|
||
this.liveRegion.text(choice.text());
|
||
|
||
data = choice.data("select2-data");
|
||
if (data) {
|
||
this.opts.element.trigger({ type: "select2-highlight", val: this.id(data), choice: data });
|
||
}
|
||
},
|
||
|
||
removeHighlight: function() {
|
||
this.results.find(".select2-highlighted").removeClass("select2-highlighted");
|
||
},
|
||
|
||
touchMoved: function() {
|
||
this._touchMoved = true;
|
||
},
|
||
|
||
clearTouchMoved: function() {
|
||
this._touchMoved = false;
|
||
},
|
||
|
||
// abstract
|
||
countSelectableResults: function() {
|
||
return this.findHighlightableChoices().length;
|
||
},
|
||
|
||
// abstract
|
||
highlightUnderEvent: function (event) {
|
||
var el = $(event.target).closest(".select2-result-selectable");
|
||
if (el.length > 0 && !el.is(".select2-highlighted")) {
|
||
var choices = this.findHighlightableChoices();
|
||
this.highlight(choices.index(el));
|
||
} else if (el.length == 0) {
|
||
// if we are over an unselectable item remove all highlights
|
||
this.removeHighlight();
|
||
}
|
||
},
|
||
|
||
// abstract
|
||
loadMoreIfNeeded: function () {
|
||
var results = this.results,
|
||
more = results.find("li.select2-more-results"),
|
||
below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible
|
||
page = this.resultsPage + 1,
|
||
self=this,
|
||
term=this.search.val(),
|
||
context=this.context;
|
||
|
||
if (more.length === 0) return;
|
||
below = more.offset().top - results.offset().top - results.height();
|
||
|
||
if (below <= this.opts.loadMorePadding) {
|
||
more.addClass("select2-active");
|
||
this.opts.query({
|
||
element: this.opts.element,
|
||
term: term,
|
||
page: page,
|
||
context: context,
|
||
matcher: this.opts.matcher,
|
||
callback: this.bind(function (data) {
|
||
|
||
// ignore a response if the select2 has been closed before it was received
|
||
if (!self.opened()) return;
|
||
|
||
|
||
self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});
|
||
self.postprocessResults(data, false, false);
|
||
|
||
if (data.more===true) {
|
||
more.detach().appendTo(results).text(evaluate(self.opts.formatLoadMore, page+1));
|
||
window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
|
||
} else {
|
||
more.remove();
|
||
}
|
||
self.positionDropdown();
|
||
self.resultsPage = page;
|
||
self.context = data.context;
|
||
this.opts.element.trigger({ type: "select2-loaded", items: data });
|
||
})});
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Default tokenizer function which does nothing
|
||
*/
|
||
tokenize: function() {
|
||
|
||
},
|
||
|
||
/**
|
||
* @param initial whether or not this is the call to this method right after the dropdown has been opened
|
||
*/
|
||
// abstract
|
||
updateResults: function (initial) {
|
||
var search = this.search,
|
||
results = this.results,
|
||
opts = this.opts,
|
||
data,
|
||
self = this,
|
||
input,
|
||
term = search.val(),
|
||
lastTerm = $.data(this.container, "select2-last-term"),
|
||
// sequence number used to drop out-of-order responses
|
||
queryNumber;
|
||
|
||
// prevent duplicate queries against the same term
|
||
if (initial !== true && lastTerm && equal(term, lastTerm)) return;
|
||
|
||
$.data(this.container, "select2-last-term", term);
|
||
|
||
// if the search is currently hidden we do not alter the results
|
||
if (initial !== true && (this.showSearchInput === false || !this.opened())) {
|
||
return;
|
||
}
|
||
|
||
function postRender() {
|
||
search.removeClass("select2-active");
|
||
self.positionDropdown();
|
||
if (results.find('.select2-no-results,.select2-selection-limit,.select2-searching').length) {
|
||
self.liveRegion.text(results.text());
|
||
}
|
||
else {
|
||
self.liveRegion.text(self.opts.formatMatches(results.find('.select2-result-selectable').length));
|
||
}
|
||
}
|
||
|
||
function render(html) {
|
||
results.html(html);
|
||
postRender();
|
||
}
|
||
|
||
queryNumber = ++this.queryCount;
|
||
|
||
var maxSelSize = this.getMaximumSelectionSize();
|
||
if (maxSelSize >=1) {
|
||
data = this.data();
|
||
if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, "formatSelectionTooBig")) {
|
||
render("<li class='select2-selection-limit'>" + evaluate(opts.formatSelectionTooBig, maxSelSize) + "</li>");
|
||
return;
|
||
}
|
||
}
|
||
|
||
if (search.val().length < opts.minimumInputLength) {
|
||
if (checkFormatter(opts.formatInputTooShort, "formatInputTooShort")) {
|
||
render("<li class='select2-no-results'>" + evaluate(opts.formatInputTooShort, search.val(), opts.minimumInputLength) + "</li>");
|
||
} else {
|
||
render("");
|
||
}
|
||
if (initial && this.showSearch) this.showSearch(true);
|
||
return;
|
||
}
|
||
|
||
if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {
|
||
if (checkFormatter(opts.formatInputTooLong, "formatInputTooLong")) {
|
||
render("<li class='select2-no-results'>" + evaluate(opts.formatInputTooLong, search.val(), opts.maximumInputLength) + "</li>");
|
||
} else {
|
||
render("");
|
||
}
|
||
return;
|
||
}
|
||
|
||
if (opts.formatSearching && this.findHighlightableChoices().length === 0) {
|
||
render("<li class='select2-searching'>" + evaluate(opts.formatSearching) + "</li>");
|
||
}
|
||
|
||
search.addClass("select2-active");
|
||
|
||
this.removeHighlight();
|
||
|
||
// give the tokenizer a chance to pre-process the input
|
||
input = this.tokenize();
|
||
if (input != undefined && input != null) {
|
||
search.val(input);
|
||
}
|
||
|
||
this.resultsPage = 1;
|
||
|
||
opts.query({
|
||
element: opts.element,
|
||
term: search.val(),
|
||
page: this.resultsPage,
|
||
context: null,
|
||
matcher: opts.matcher,
|
||
callback: this.bind(function (data) {
|
||
var def; // default choice
|
||
|
||
// ignore old responses
|
||
if (queryNumber != this.queryCount) {
|
||
return;
|
||
}
|
||
|
||
// ignore a response if the select2 has been closed before it was received
|
||
if (!this.opened()) {
|
||
this.search.removeClass("select2-active");
|
||
return;
|
||
}
|
||
|
||
// save context, if any
|
||
this.context = (data.context===undefined) ? null : data.context;
|
||
// create a default choice and prepend it to the list
|
||
if (this.opts.createSearchChoice && search.val() !== "") {
|
||
def = this.opts.createSearchChoice.call(self, search.val(), data.results);
|
||
if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {
|
||
if ($(data.results).filter(
|
||
function () {
|
||
return equal(self.id(this), self.id(def));
|
||
}).length === 0) {
|
||
this.opts.createSearchChoicePosition(data.results, def);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, "formatNoMatches")) {
|
||
render("<li class='select2-no-results'>" + evaluate(opts.formatNoMatches, search.val()) + "</li>");
|
||
return;
|
||
}
|
||
|
||
results.empty();
|
||
self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});
|
||
|
||
if (data.more === true && checkFormatter(opts.formatLoadMore, "formatLoadMore")) {
|
||
results.append("<li class='select2-more-results'>" + self.opts.escapeMarkup(evaluate(opts.formatLoadMore, this.resultsPage)) + "</li>");
|
||
window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
|
||
}
|
||
|
||
this.postprocessResults(data, initial);
|
||
|
||
postRender();
|
||
|
||
this.opts.element.trigger({ type: "select2-loaded", items: data });
|
||
})});
|
||
},
|
||
|
||
// abstract
|
||
cancel: function () {
|
||
this.close();
|
||
},
|
||
|
||
// abstract
|
||
blur: function () {
|
||
// if selectOnBlur == true, select the currently highlighted option
|
||
if (this.opts.selectOnBlur)
|
||
this.selectHighlighted({noFocus: true});
|
||
|
||
this.close();
|
||
this.container.removeClass("select2-container-active");
|
||
// synonymous to .is(':focus'), which is available in jquery >= 1.6
|
||
if (this.search[0] === document.activeElement) { this.search.blur(); }
|
||
this.clearSearch();
|
||
this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
|
||
},
|
||
|
||
// abstract
|
||
focusSearch: function () {
|
||
focus(this.search);
|
||
},
|
||
|
||
// abstract
|
||
selectHighlighted: function (options) {
|
||
if (this._touchMoved) {
|
||
this.clearTouchMoved();
|
||
return;
|
||
}
|
||
var index=this.highlight(),
|
||
highlighted=this.results.find(".select2-highlighted"),
|
||
data = highlighted.closest('.select2-result').data("select2-data");
|
||
|
||
if (data) {
|
||
this.highlight(index);
|
||
this.onSelect(data, options);
|
||
} else if (options && options.noFocus) {
|
||
this.close();
|
||
}
|
||
},
|
||
|
||
// abstract
|
||
getPlaceholder: function () {
|
||
var placeholderOption;
|
||
return this.opts.element.attr("placeholder") ||
|
||
this.opts.element.attr("data-placeholder") || // jquery 1.4 compat
|
||
this.opts.element.data("placeholder") ||
|
||
this.opts.placeholder ||
|
||
((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);
|
||
},
|
||
|
||
// abstract
|
||
getPlaceholderOption: function() {
|
||
if (this.select) {
|
||
var firstOption = this.select.children('option').first();
|
||
if (this.opts.placeholderOption !== undefined ) {
|
||
//Determine the placeholder option based on the specified placeholderOption setting
|
||
return (this.opts.placeholderOption === "first" && firstOption) ||
|
||
(typeof this.opts.placeholderOption === "function" && this.opts.placeholderOption(this.select));
|
||
} else if ($.trim(firstOption.text()) === "" && firstOption.val() === "") {
|
||
//No explicit placeholder option specified, use the first if it's blank
|
||
return firstOption;
|
||
}
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Get the desired width for the container element. This is
|
||
* derived first from option `width` passed to select2, then
|
||
* the inline 'style' on the original element, and finally
|
||
* falls back to the jQuery calculated element width.
|
||
*/
|
||
// abstract
|
||
initContainerWidth: function () {
|
||
function resolveContainerWidth() {
|
||
var style, attrs, matches, i, l, attr;
|
||
|
||
if (this.opts.width === "off") {
|
||
return null;
|
||
} else if (this.opts.width === "element"){
|
||
return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';
|
||
} else if (this.opts.width === "copy" || this.opts.width === "resolve") {
|
||
// check if there is inline style on the element that contains width
|
||
style = this.opts.element.attr('style');
|
||
if (style !== undefined) {
|
||
attrs = style.split(';');
|
||
for (i = 0, l = attrs.length; i < l; i = i + 1) {
|
||
attr = attrs[i].replace(/\s/g, '');
|
||
matches = attr.match(/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);
|
||
if (matches !== null && matches.length >= 1)
|
||
return matches[1];
|
||
}
|
||
}
|
||
|
||
if (this.opts.width === "resolve") {
|
||
// next check if css('width') can resolve a width that is percent based, this is sometimes possible
|
||
// when attached to input type=hidden or elements hidden via css
|
||
style = this.opts.element.css('width');
|
||
if (style.indexOf("%") > 0) return style;
|
||
|
||
// finally, fallback on the calculated width of the element
|
||
return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');
|
||
}
|
||
|
||
return null;
|
||
} else if ($.isFunction(this.opts.width)) {
|
||
return this.opts.width();
|
||
} else {
|
||
return this.opts.width;
|
||
}
|
||
};
|
||
|
||
var width = resolveContainerWidth.call(this);
|
||
if (width !== null) {
|
||
this.container.css("width", width);
|
||
}
|
||
}
|
||
});
|
||
|
||
SingleSelect2 = clazz(AbstractSelect2, {
|
||
|
||
// single
|
||
|
||
createContainer: function () {
|
||
var container = $(document.createElement("div")).attr({
|
||
"class": "select2-container"
|
||
}).html([
|
||
"<a href='javascript:void(0)' class='select2-choice' tabindex='-1'>",
|
||
" <span class='select2-chosen'> </span><abbr class='select2-search-choice-close'></abbr>",
|
||
" <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>",
|
||
"</a>",
|
||
"<label for='' class='select2-offscreen'></label>",
|
||
"<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />",
|
||
"<div class='select2-drop select2-display-none'>",
|
||
" <div class='select2-search'>",
|
||
" <label for='' class='select2-offscreen'></label>",
|
||
" <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'",
|
||
" aria-autocomplete='list' />",
|
||
" </div>",
|
||
" <ul class='select2-results' role='listbox'>",
|
||
" </ul>",
|
||
"</div>"].join(""));
|
||
return container;
|
||
},
|
||
|
||
// single
|
||
enableInterface: function() {
|
||
if (this.parent.enableInterface.apply(this, arguments)) {
|
||
this.focusser.prop("disabled", !this.isInterfaceEnabled());
|
||
}
|
||
},
|
||
|
||
// single
|
||
opening: function () {
|
||
var el, range, len;
|
||
|
||
if (this.opts.minimumResultsForSearch >= 0) {
|
||
this.showSearch(true);
|
||
}
|
||
|
||
this.parent.opening.apply(this, arguments);
|
||
|
||
if (this.showSearchInput !== false) {
|
||
// IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range
|
||
// all other browsers handle this just fine
|
||
|
||
this.search.val(this.focusser.val());
|
||
}
|
||
if (this.opts.shouldFocusInput(this)) {
|
||
this.search.focus();
|
||
// move the cursor to the end after focussing, otherwise it will be at the beginning and
|
||
// new text will appear *before* focusser.val()
|
||
el = this.search.get(0);
|
||
if (el.createTextRange) {
|
||
range = el.createTextRange();
|
||
range.collapse(false);
|
||
range.select();
|
||
} else if (el.setSelectionRange) {
|
||
len = this.search.val().length;
|
||
el.setSelectionRange(len, len);
|
||
}
|
||
}
|
||
|
||
// initializes search's value with nextSearchTerm (if defined by user)
|
||
// ignore nextSearchTerm if the dropdown is opened by the user pressing a letter
|
||
if(this.search.val() === "") {
|
||
if(this.nextSearchTerm != undefined){
|
||
this.search.val(this.nextSearchTerm);
|
||
this.search.select();
|
||
}
|
||
}
|
||
|
||
this.focusser.prop("disabled", true).val("");
|
||
this.updateResults(true);
|
||
this.opts.element.trigger($.Event("select2-open"));
|
||
},
|
||
|
||
// single
|
||
close: function () {
|
||
if (!this.opened()) return;
|
||
this.parent.close.apply(this, arguments);
|
||
|
||
this.focusser.prop("disabled", false);
|
||
|
||
if (this.opts.shouldFocusInput(this)) {
|
||
this.focusser.focus();
|
||
}
|
||
},
|
||
|
||
// single
|
||
focus: function () {
|
||
if (this.opened()) {
|
||
this.close();
|
||
} else {
|
||
this.focusser.prop("disabled", false);
|
||
if (this.opts.shouldFocusInput(this)) {
|
||
this.focusser.focus();
|
||
}
|
||
}
|
||
},
|
||
|
||
// single
|
||
isFocused: function () {
|
||
return this.container.hasClass("select2-container-active");
|
||
},
|
||
|
||
// single
|
||
cancel: function () {
|
||
this.parent.cancel.apply(this, arguments);
|
||
this.focusser.prop("disabled", false);
|
||
|
||
if (this.opts.shouldFocusInput(this)) {
|
||
this.focusser.focus();
|
||
}
|
||
},
|
||
|
||
// single
|
||
destroy: function() {
|
||
$("label[for='" + this.focusser.attr('id') + "']")
|
||
.attr('for', this.opts.element.attr("id"));
|
||
this.parent.destroy.apply(this, arguments);
|
||
|
||
cleanupJQueryElements.call(this,
|
||
"selection",
|
||
"focusser"
|
||
);
|
||
},
|
||
|
||
// single
|
||
initContainer: function () {
|
||
|
||
var selection,
|
||
container = this.container,
|
||
dropdown = this.dropdown,
|
||
idSuffix = nextUid(),
|
||
elementLabel;
|
||
|
||
if (this.opts.minimumResultsForSearch < 0) {
|
||
this.showSearch(false);
|
||
} else {
|
||
this.showSearch(true);
|
||
}
|
||
|
||
this.selection = selection = container.find(".select2-choice");
|
||
|
||
this.focusser = container.find(".select2-focusser");
|
||
|
||
// add aria associations
|
||
selection.find(".select2-chosen").attr("id", "select2-chosen-"+idSuffix);
|
||
this.focusser.attr("aria-labelledby", "select2-chosen-"+idSuffix);
|
||
this.results.attr("id", "select2-results-"+idSuffix);
|
||
this.search.attr("aria-owns", "select2-results-"+idSuffix);
|
||
|
||
// rewrite labels from original element to focusser
|
||
this.focusser.attr("id", "s2id_autogen"+idSuffix);
|
||
|
||
elementLabel = $("label[for='" + this.opts.element.attr("id") + "']");
|
||
|
||
this.focusser.prev()
|
||
.text(elementLabel.text())
|
||
.attr('for', this.focusser.attr('id'));
|
||
|
||
// Ensure the original element retains an accessible name
|
||
var originalTitle = this.opts.element.attr("title");
|
||
this.opts.element.attr("title", (originalTitle || elementLabel.text()));
|
||
|
||
this.focusser.attr("tabindex", this.elementTabIndex);
|
||
|
||
// write label for search field using the label from the focusser element
|
||
this.search.attr("id", this.focusser.attr('id') + '_search');
|
||
|
||
this.search.prev()
|
||
.text($("label[for='" + this.focusser.attr('id') + "']").text())
|
||
.attr('for', this.search.attr('id'));
|
||
|
||
this.search.on("keydown", this.bind(function (e) {
|
||
if (!this.isInterfaceEnabled()) return;
|
||
|
||
if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
|
||
// prevent the page from scrolling
|
||
killEvent(e);
|
||
return;
|
||
}
|
||
|
||
switch (e.which) {
|
||
case KEY.UP:
|
||
case KEY.DOWN:
|
||
this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
|
||
killEvent(e);
|
||
return;
|
||
case KEY.ENTER:
|
||
this.selectHighlighted();
|
||
killEvent(e);
|
||
return;
|
||
case KEY.TAB:
|
||
this.selectHighlighted({noFocus: true});
|
||
return;
|
||
case KEY.ESC:
|
||
this.cancel(e);
|
||
killEvent(e);
|
||
return;
|
||
}
|
||
}));
|
||
|
||
this.search.on("blur", this.bind(function(e) {
|
||
// a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.
|
||
// without this the search field loses focus which is annoying
|
||
if (document.activeElement === this.body.get(0)) {
|
||
window.setTimeout(this.bind(function() {
|
||
if (this.opened()) {
|
||
this.search.focus();
|
||
}
|
||
}), 0);
|
||
}
|
||
}));
|
||
|
||
this.focusser.on("keydown", this.bind(function (e) {
|
||
if (!this.isInterfaceEnabled()) return;
|
||
|
||
if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {
|
||
return;
|
||
}
|
||
|
||
if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {
|
||
killEvent(e);
|
||
return;
|
||
}
|
||
|
||
if (e.which == KEY.DOWN || e.which == KEY.UP
|
||
|| (e.which == KEY.ENTER && this.opts.openOnEnter)) {
|
||
|
||
if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;
|
||
|
||
this.open();
|
||
killEvent(e);
|
||
return;
|
||
}
|
||
|
||
if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {
|
||
if (this.opts.allowClear) {
|
||
this.clear();
|
||
}
|
||
killEvent(e);
|
||
return;
|
||
}
|
||
}));
|
||
|
||
|
||
installKeyUpChangeEvent(this.focusser);
|
||
this.focusser.on("keyup-change input", this.bind(function(e) {
|
||
if (this.opts.minimumResultsForSearch >= 0) {
|
||
e.stopPropagation();
|
||
if (this.opened()) return;
|
||
this.open();
|
||
}
|
||
}));
|
||
|
||
selection.on("mousedown touchstart", "abbr", this.bind(function (e) {
|
||
if (!this.isInterfaceEnabled()) return;
|
||
this.clear();
|
||
killEventImmediately(e);
|
||
this.close();
|
||
this.selection.focus();
|
||
}));
|
||
|
||
selection.on("mousedown touchstart", this.bind(function (e) {
|
||
// Prevent IE from generating a click event on the body
|
||
reinsertElement(selection);
|
||
|
||
if (!this.container.hasClass("select2-container-active")) {
|
||
this.opts.element.trigger($.Event("select2-focus"));
|
||
}
|
||
|
||
if (this.opened()) {
|
||
this.close();
|
||
} else if (this.isInterfaceEnabled()) {
|
||
this.open();
|
||
}
|
||
|
||
killEvent(e);
|
||
}));
|
||
|
||
dropdown.on("mousedown touchstart", this.bind(function() {
|
||
if (this.opts.shouldFocusInput(this)) {
|
||
this.search.focus();
|
||
}
|
||
}));
|
||
|
||
selection.on("focus", this.bind(function(e) {
|
||
killEvent(e);
|
||
}));
|
||
|
||
this.focusser.on("focus", this.bind(function(){
|
||
if (!this.container.hasClass("select2-container-active")) {
|
||
this.opts.element.trigger($.Event("select2-focus"));
|
||
}
|
||
this.container.addClass("select2-container-active");
|
||
})).on("blur", this.bind(function() {
|
||
if (!this.opened()) {
|
||
this.container.removeClass("select2-container-active");
|
||
this.opts.element.trigger($.Event("select2-blur"));
|
||
}
|
||
}));
|
||
this.search.on("focus", this.bind(function(){
|
||
if (!this.container.hasClass("select2-container-active")) {
|
||
this.opts.element.trigger($.Event("select2-focus"));
|
||
}
|
||
this.container.addClass("select2-container-active");
|
||
}));
|
||
|
||
this.initContainerWidth();
|
||
this.opts.element.addClass("select2-offscreen");
|
||
this.setPlaceholder();
|
||
|
||
},
|
||
|
||
// single
|
||
clear: function(triggerChange) {
|
||
var data=this.selection.data("select2-data");
|
||
if (data) { // guard against queued quick consecutive clicks
|
||
var evt = $.Event("select2-clearing");
|
||
this.opts.element.trigger(evt);
|
||
if (evt.isDefaultPrevented()) {
|
||
return;
|
||
}
|
||
var placeholderOption = this.getPlaceholderOption();
|
||
this.opts.element.val(placeholderOption ? placeholderOption.val() : "");
|
||
this.selection.find(".select2-chosen").empty();
|
||
this.selection.removeData("select2-data");
|
||
this.setPlaceholder();
|
||
|
||
if (triggerChange !== false){
|
||
this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data });
|
||
this.triggerChange({removed:data});
|
||
}
|
||
}
|
||
},
|
||
|
||
/**
|
||
* Sets selection based on source element's value
|
||
*/
|
||
// single
|
||
initSelection: function () {
|
||
var selected;
|
||
if (this.isPlaceholderOptionSelected()) {
|
||
this.updateSelection(null);
|
||
this.close();
|
||
this.setPlaceholder();
|
||
} else {
|
||
var self = this;
|
||
this.opts.initSelection.call(null, this.opts.element, function(selected){
|
||
if (selected !== undefined && selected !== null) {
|
||
self.updateSelection(selected);
|
||
self.close();
|
||
self.setPlaceholder();
|
||
self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val());
|
||
}
|
||
});
|
||
}
|
||
},
|
||
|
||
isPlaceholderOptionSelected: function() {
|
||
var placeholderOption;
|
||
if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered
|
||
return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop("selected"))
|
||
|| (this.opts.element.val() === "")
|
||
|| (this.opts.element.val() === undefined)
|
||
|| (this.opts.element.val() === null);
|
||
},
|
||
|
||
// single
|
||
prepareOpts: function () {
|
||
var opts = this.parent.prepareOpts.apply(this, arguments),
|
||
self=this;
|
||
|
||
if (opts.element.get(0).tagName.toLowerCase() === "select") {
|
||
// install the selection initializer
|
||
opts.initSelection = function (element, callback) {
|
||
var selected = element.find("option").filter(function() { return this.selected && !this.disabled });
|
||
// a single select box always has a value, no need to null check 'selected'
|
||
callback(self.optionToData(selected));
|
||
};
|
||
} else if ("data" in opts) {
|
||
// install default initSelection when applied to hidden input and data is local
|
||
opts.initSelection = opts.initSelection || function (element, callback) {
|
||
var id = element.val();
|
||
//search in data by id, storing the actual matching item
|
||
var match = null;
|
||
opts.query({
|
||
matcher: function(term, text, el){
|
||
var is_match = equal(id, opts.id(el));
|
||
if (is_match) {
|
||
match = el;
|
||
}
|
||
return is_match;
|
||
},
|
||
callback: !$.isFunction(callback) ? $.noop : function() {
|
||
callback(match);
|
||
}
|
||
});
|
||
};
|
||
}
|
||
|
||
return opts;
|
||
},
|
||
|
||
// single
|
||
getPlaceholder: function() {
|
||
// if a placeholder is specified on a single select without a valid placeholder option ignore it
|
||
if (this.select) {
|
||
if (this.getPlaceholderOption() === undefined) {
|
||
return undefined;
|
||
}
|
||
}
|
||
|
||
return this.parent.getPlaceholder.apply(this, arguments);
|
||
},
|
||
|
||
// single
|
||
setPlaceholder: function () {
|
||
var placeholder = this.getPlaceholder();
|
||
|
||
if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {
|
||
|
||
// check for a placeholder option if attached to a select
|
||
if (this.select && this.getPlaceholderOption() === undefined) return;
|
||
|
||
this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder));
|
||
|
||
this.selection.addClass("select2-default");
|
||
|
||
this.container.removeClass("select2-allowclear");
|
||
}
|
||
},
|
||
|
||
// single
|
||
postprocessResults: function (data, initial, noHighlightUpdate) {
|
||
var selected = 0, self = this, showSearchInput = true;
|
||
|
||
// find the selected element in the result list
|
||
|
||
this.findHighlightableChoices().each2(function (i, elm) {
|
||
if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) {
|
||
selected = i;
|
||
return false;
|
||
}
|
||
});
|
||
|
||
// and highlight it
|
||
if (noHighlightUpdate !== false) {
|
||
if (initial === true && selected >= 0) {
|
||
this.highlight(selected);
|
||
} else {
|
||
this.highlight(0);
|
||
}
|
||
}
|
||
|
||
// hide the search box if this is the first we got the results and there are enough of them for search
|
||
|
||
if (initial === true) {
|
||
var min = this.opts.minimumResultsForSearch;
|
||
if (min >= 0) {
|
||
this.showSearch(countResults(data.results) >= min);
|
||
}
|
||
}
|
||
},
|
||
|
||
// single
|
||
showSearch: function(showSearchInput) {
|
||
if (this.showSearchInput === showSearchInput) return;
|
||
|
||
this.showSearchInput = showSearchInput;
|
||
|
||
this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput);
|
||
this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput);
|
||
//add "select2-with-searchbox" to the container if search box is shown
|
||
$(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput);
|
||
},
|
||
|
||
// single
|
||
onSelect: function (data, options) {
|
||
|
||
if (!this.triggerSelect(data)) { return; }
|
||
|
||
var old = this.opts.element.val(),
|
||
oldData = this.data();
|
||
|
||
this.opts.element.val(this.id(data));
|
||
this.updateSelection(data);
|
||
|
||
this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data });
|
||
|
||
this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());
|
||
this.close();
|
||
|
||
if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) {
|
||
this.focusser.focus();
|
||
}
|
||
|
||
if (!equal(old, this.id(data))) {
|
||
this.triggerChange({ added: data, removed: oldData });
|
||
}
|
||
},
|
||
|
||
// single
|
||
updateSelection: function (data) {
|
||
|
||
var container=this.selection.find(".select2-chosen"), formatted, cssClass;
|
||
|
||
this.selection.data("select2-data", data);
|
||
|
||
container.empty();
|
||
if (data !== null) {
|
||
formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);
|
||
}
|
||
if (formatted !== undefined) {
|
||
container.append(formatted);
|
||
}
|
||
cssClass=this.opts.formatSelectionCssClass(data, container);
|
||
if (cssClass !== undefined) {
|
||
container.addClass(cssClass);
|
||
}
|
||
|
||
this.selection.removeClass("select2-default");
|
||
|
||
if (this.opts.allowClear && this.getPlaceholder() !== undefined) {
|
||
this.container.addClass("select2-allowclear");
|
||
}
|
||
},
|
||
|
||
// single
|
||
val: function () {
|
||
var val,
|
||
triggerChange = false,
|
||
data = null,
|
||
self = this,
|
||
oldData = this.data();
|
||
|
||
if (arguments.length === 0) {
|
||
return this.opts.element.val();
|
||
}
|
||
|
||
val = arguments[0];
|
||
|
||
if (arguments.length > 1) {
|
||
triggerChange = arguments[1];
|
||
}
|
||
|
||
if (this.select) {
|
||
this.select
|
||
.val(val)
|
||
.find("option").filter(function() { return this.selected }).each2(function (i, elm) {
|
||
data = self.optionToData(elm);
|
||
return false;
|
||
});
|
||
this.updateSelection(data);
|
||
this.setPlaceholder();
|
||
if (triggerChange) {
|
||
this.triggerChange({added: data, removed:oldData});
|
||
}
|
||
} else {
|
||
// val is an id. !val is true for [undefined,null,'',0] - 0 is legal
|
||
if (!val && val !== 0) {
|
||
this.clear(triggerChange);
|
||
return;
|
||
}
|
||
if (this.opts.initSelection === undefined) {
|
||
throw new Error("cannot call val() if initSelection() is not defined");
|
||
}
|
||
this.opts.element.val(val);
|
||
this.opts.initSelection(this.opts.element, function(data){
|
||
self.opts.element.val(!data ? "" : self.id(data));
|
||
self.updateSelection(data);
|
||
self.setPlaceholder();
|
||
if (triggerChange) {
|
||
self.triggerChange({added: data, removed:oldData});
|
||
}
|
||
});
|
||
}
|
||
},
|
||
|
||
// single
|
||
clearSearch: function () {
|
||
this.search.val("");
|
||
this.focusser.val("");
|
||
},
|
||
|
||
// single
|
||
data: function(value) {
|
||
var data,
|
||
triggerChange = false;
|
||
|
||
if (arguments.length === 0) {
|
||
data = this.selection.data("select2-data");
|
||
if (data == undefined) data = null;
|
||
return data;
|
||
} else {
|
||
if (arguments.length > 1) {
|
||
triggerChange = arguments[1];
|
||
}
|
||
if (!value) {
|
||
this.clear(triggerChange);
|
||
} else {
|
||
data = this.data();
|
||
this.opts.element.val(!value ? "" : this.id(value));
|
||
this.updateSelection(value);
|
||
if (triggerChange) {
|
||
this.triggerChange({added: value, removed:data});
|
||
}
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
MultiSelect2 = clazz(AbstractSelect2, {
|
||
|
||
// multi
|
||
createContainer: function () {
|
||
var container = $(document.createElement("div")).attr({
|
||
"class": "select2-container select2-container-multi"
|
||
}).html([
|
||
"<ul class='select2-choices'>",
|
||
" <li class='select2-search-field'>",
|
||
" <label for='' class='select2-offscreen'></label>",
|
||
" <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>",
|
||
" </li>",
|
||
"</ul>",
|
||
"<div class='select2-drop select2-drop-multi select2-display-none'>",
|
||
" <ul class='select2-results'>",
|
||
" </ul>",
|
||
"</div>"].join(""));
|
||
return container;
|
||
},
|
||
|
||
// multi
|
||
prepareOpts: function () {
|
||
var opts = this.parent.prepareOpts.apply(this, arguments),
|
||
self=this;
|
||
|
||
// TODO validate placeholder is a string if specified
|
||
|
||
if (opts.element.get(0).tagName.toLowerCase() === "select") {
|
||
// install the selection initializer
|
||
opts.initSelection = function (element, callback) {
|
||
|
||
var data = [];
|
||
|
||
element.find("option").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) {
|
||
data.push(self.optionToData(elm));
|
||
});
|
||
callback(data);
|
||
};
|
||
} else if ("data" in opts) {
|
||
// install default initSelection when applied to hidden input and data is local
|
||
opts.initSelection = opts.initSelection || function (element, callback) {
|
||
var ids = splitVal(element.val(), opts.separator);
|
||
//search in data by array of ids, storing matching items in a list
|
||
var matches = [];
|
||
opts.query({
|
||
matcher: function(term, text, el){
|
||
var is_match = $.grep(ids, function(id) {
|
||
return equal(id, opts.id(el));
|
||
}).length;
|
||
if (is_match) {
|
||
matches.push(el);
|
||
}
|
||
return is_match;
|
||
},
|
||
callback: !$.isFunction(callback) ? $.noop : function() {
|
||
// reorder matches based on the order they appear in the ids array because right now
|
||
// they are in the order in which they appear in data array
|
||
var ordered = [];
|
||
for (var i = 0; i < ids.length; i++) {
|
||
var id = ids[i];
|
||
for (var j = 0; j < matches.length; j++) {
|
||
var match = matches[j];
|
||
if (equal(id, opts.id(match))) {
|
||
ordered.push(match);
|
||
matches.splice(j, 1);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
callback(ordered);
|
||
}
|
||
});
|
||
};
|
||
}
|
||
|
||
return opts;
|
||
},
|
||
|
||
// multi
|
||
selectChoice: function (choice) {
|
||
|
||
var selected = this.container.find(".select2-search-choice-focus");
|
||
if (selected.length && choice && choice[0] == selected[0]) {
|
||
|
||
} else {
|
||
if (selected.length) {
|
||
this.opts.element.trigger("choice-deselected", selected);
|
||
}
|
||
selected.removeClass("select2-search-choice-focus");
|
||
if (choice && choice.length) {
|
||
this.close();
|
||
choice.addClass("select2-search-choice-focus");
|
||
this.opts.element.trigger("choice-selected", choice);
|
||
}
|
||
}
|
||
},
|
||
|
||
// multi
|
||
destroy: function() {
|
||
$("label[for='" + this.search.attr('id') + "']")
|
||
.attr('for', this.opts.element.attr("id"));
|
||
this.parent.destroy.apply(this, arguments);
|
||
|
||
cleanupJQueryElements.call(this,
|
||
"searchContainer",
|
||
"selection"
|
||
);
|
||
},
|
||
|
||
// multi
|
||
initContainer: function () {
|
||
|
||
var selector = ".select2-choices", selection;
|
||
|
||
this.searchContainer = this.container.find(".select2-search-field");
|
||
this.selection = selection = this.container.find(selector);
|
||
|
||
var _this = this;
|
||
this.selection.on("click", ".select2-search-choice:not(.select2-locked)", function (e) {
|
||
//killEvent(e);
|
||
_this.search[0].focus();
|
||
_this.selectChoice($(this));
|
||
});
|
||
|
||
// rewrite labels from original element to focusser
|
||
this.search.attr("id", "s2id_autogen"+nextUid());
|
||
|
||
this.search.prev()
|
||
.text($("label[for='" + this.opts.element.attr("id") + "']").text())
|
||
.attr('for', this.search.attr('id'));
|
||
|
||
this.search.on("input paste", this.bind(function() {
|
||
if (!this.isInterfaceEnabled()) return;
|
||
if (!this.opened()) {
|
||
this.open();
|
||
}
|
||
}));
|
||
|
||
this.search.attr("tabindex", this.elementTabIndex);
|
||
|
||
this.keydowns = 0;
|
||
this.search.on("keydown", this.bind(function (e) {
|
||
if (!this.isInterfaceEnabled()) return;
|
||
|
||
++this.keydowns;
|
||
var selected = selection.find(".select2-search-choice-focus");
|
||
var prev = selected.prev(".select2-search-choice:not(.select2-locked)");
|
||
var next = selected.next(".select2-search-choice:not(.select2-locked)");
|
||
var pos = getCursorInfo(this.search);
|
||
|
||
if (selected.length &&
|
||
(e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {
|
||
var selectedChoice = selected;
|
||
if (e.which == KEY.LEFT && prev.length) {
|
||
selectedChoice = prev;
|
||
}
|
||
else if (e.which == KEY.RIGHT) {
|
||
selectedChoice = next.length ? next : null;
|
||
}
|
||
else if (e.which === KEY.BACKSPACE) {
|
||
if (this.unselect(selected.first())) {
|
||
this.search.width(10);
|
||
selectedChoice = prev.length ? prev : next;
|
||
}
|
||
} else if (e.which == KEY.DELETE) {
|
||
if (this.unselect(selected.first())) {
|
||
this.search.width(10);
|
||
selectedChoice = next.length ? next : null;
|
||
}
|
||
} else if (e.which == KEY.ENTER) {
|
||
selectedChoice = null;
|
||
}
|
||
|
||
this.selectChoice(selectedChoice);
|
||
killEvent(e);
|
||
if (!selectedChoice || !selectedChoice.length) {
|
||
this.open();
|
||
}
|
||
return;
|
||
} else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)
|
||
|| e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {
|
||
|
||
this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last());
|
||
killEvent(e);
|
||
return;
|
||
} else {
|
||
this.selectChoice(null);
|
||
}
|
||
|
||
if (this.opened()) {
|
||
switch (e.which) {
|
||
case KEY.UP:
|
||
case KEY.DOWN:
|
||
this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
|
||
killEvent(e);
|
||
return;
|
||
case KEY.ENTER:
|
||
this.selectHighlighted();
|
||
killEvent(e);
|
||
return;
|
||
case KEY.TAB:
|
||
this.selectHighlighted({noFocus:true});
|
||
this.close();
|
||
return;
|
||
case KEY.ESC:
|
||
this.cancel(e);
|
||
killEvent(e);
|
||
return;
|
||
}
|
||
}
|
||
|
||
if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)
|
||
|| e.which === KEY.BACKSPACE || e.which === KEY.ESC) {
|
||
return;
|
||
}
|
||
|
||
if (e.which === KEY.ENTER) {
|
||
if (this.opts.openOnEnter === false) {
|
||
return;
|
||
} else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {
|
||
return;
|
||
}
|
||
}
|
||
|
||
this.open();
|
||
|
||
if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
|
||
// prevent the page from scrolling
|
||
killEvent(e);
|
||
}
|
||
|
||
if (e.which === KEY.ENTER) {
|
||
// prevent form from being submitted
|
||
killEvent(e);
|
||
}
|
||
|
||
}));
|
||
|
||
this.search.on("keyup", this.bind(function (e) {
|
||
this.keydowns = 0;
|
||
this.resizeSearch();
|
||
})
|
||
);
|
||
|
||
this.search.on("blur", this.bind(function(e) {
|
||
this.container.removeClass("select2-container-active");
|
||
this.search.removeClass("select2-focused");
|
||
this.selectChoice(null);
|
||
if (!this.opened()) this.clearSearch();
|
||
e.stopImmediatePropagation();
|
||
this.opts.element.trigger($.Event("select2-blur"));
|
||
}));
|
||
|
||
this.container.on("click", selector, this.bind(function (e) {
|
||
if (!this.isInterfaceEnabled()) return;
|
||
if ($(e.target).closest(".select2-search-choice").length > 0) {
|
||
// clicked inside a select2 search choice, do not open
|
||
return;
|
||
}
|
||
this.selectChoice(null);
|
||
this.clearPlaceholder();
|
||
if (!this.container.hasClass("select2-container-active")) {
|
||
this.opts.element.trigger($.Event("select2-focus"));
|
||
}
|
||
this.open();
|
||
this.focusSearch();
|
||
e.preventDefault();
|
||
}));
|
||
|
||
this.container.on("focus", selector, this.bind(function () {
|
||
if (!this.isInterfaceEnabled()) return;
|
||
if (!this.container.hasClass("select2-container-active")) {
|
||
this.opts.element.trigger($.Event("select2-focus"));
|
||
}
|
||
this.container.addClass("select2-container-active");
|
||
this.dropdown.addClass("select2-drop-active");
|
||
this.clearPlaceholder();
|
||
}));
|
||
|
||
this.initContainerWidth();
|
||
this.opts.element.addClass("select2-offscreen");
|
||
|
||
// set the placeholder if necessary
|
||
this.clearSearch();
|
||
},
|
||
|
||
// multi
|
||
enableInterface: function() {
|
||
if (this.parent.enableInterface.apply(this, arguments)) {
|
||
this.search.prop("disabled", !this.isInterfaceEnabled());
|
||
}
|
||
},
|
||
|
||
// multi
|
||
initSelection: function () {
|
||
var data;
|
||
if (this.opts.element.val() === "" && this.opts.element.text() === "") {
|
||
this.updateSelection([]);
|
||
this.close();
|
||
// set the placeholder if necessary
|
||
this.clearSearch();
|
||
}
|
||
if (this.select || this.opts.element.val() !== "") {
|
||
var self = this;
|
||
this.opts.initSelection.call(null, this.opts.element, function(data){
|
||
if (data !== undefined && data !== null) {
|
||
self.updateSelection(data);
|
||
self.close();
|
||
// set the placeholder if necessary
|
||
self.clearSearch();
|
||
}
|
||
});
|
||
}
|
||
},
|
||
|
||
// multi
|
||
clearSearch: function () {
|
||
var placeholder = this.getPlaceholder(),
|
||
maxWidth = this.getMaxSearchWidth();
|
||
|
||
if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) {
|
||
this.search.val(placeholder).addClass("select2-default");
|
||
// stretch the search box to full width of the container so as much of the placeholder is visible as possible
|
||
// we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944
|
||
this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width"));
|
||
} else {
|
||
this.search.val("").width(10);
|
||
}
|
||
},
|
||
|
||
// multi
|
||
clearPlaceholder: function () {
|
||
if (this.search.hasClass("select2-default")) {
|
||
this.search.val("").removeClass("select2-default");
|
||
}
|
||
},
|
||
|
||
// multi
|
||
opening: function () {
|
||
this.clearPlaceholder(); // should be done before super so placeholder is not used to search
|
||
this.resizeSearch();
|
||
|
||
this.parent.opening.apply(this, arguments);
|
||
|
||
this.focusSearch();
|
||
|
||
// initializes search's value with nextSearchTerm (if defined by user)
|
||
// ignore nextSearchTerm if the dropdown is opened by the user pressing a letter
|
||
if(this.search.val() === "") {
|
||
if(this.nextSearchTerm != undefined){
|
||
this.search.val(this.nextSearchTerm);
|
||
this.search.select();
|
||
}
|
||
}
|
||
|
||
this.updateResults(true);
|
||
if (this.opts.shouldFocusInput(this)) {
|
||
this.search.focus();
|
||
}
|
||
this.opts.element.trigger($.Event("select2-open"));
|
||
},
|
||
|
||
// multi
|
||
close: function () {
|
||
if (!this.opened()) return;
|
||
this.parent.close.apply(this, arguments);
|
||
},
|
||
|
||
// multi
|
||
focus: function () {
|
||
this.close();
|
||
this.search.focus();
|
||
},
|
||
|
||
// multi
|
||
isFocused: function () {
|
||
return this.search.hasClass("select2-focused");
|
||
},
|
||
|
||
// multi
|
||
updateSelection: function (data) {
|
||
var ids = [], filtered = [], self = this;
|
||
|
||
// filter out duplicates
|
||
$(data).each(function () {
|
||
if (indexOf(self.id(this), ids) < 0) {
|
||
ids.push(self.id(this));
|
||
filtered.push(this);
|
||
}
|
||
});
|
||
data = filtered;
|
||
|
||
this.selection.find(".select2-search-choice").remove();
|
||
$(data).each(function () {
|
||
self.addSelectedChoice(this);
|
||
});
|
||
self.postprocessResults();
|
||
},
|
||
|
||
// multi
|
||
tokenize: function() {
|
||
var input = this.search.val();
|
||
input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);
|
||
if (input != null && input != undefined) {
|
||
this.search.val(input);
|
||
if (input.length > 0) {
|
||
this.open();
|
||
}
|
||
}
|
||
|
||
},
|
||
|
||
// multi
|
||
onSelect: function (data, options) {
|
||
|
||
if (!this.triggerSelect(data)) { return; }
|
||
|
||
this.addSelectedChoice(data);
|
||
|
||
this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data });
|
||
|
||
// keep track of the search's value before it gets cleared
|
||
this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());
|
||
|
||
this.clearSearch();
|
||
this.updateResults();
|
||
|
||
if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);
|
||
|
||
if (this.opts.closeOnSelect) {
|
||
this.close();
|
||
this.search.width(10);
|
||
} else {
|
||
if (this.countSelectableResults()>0) {
|
||
this.search.width(10);
|
||
this.resizeSearch();
|
||
if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {
|
||
// if we reached max selection size repaint the results so choices
|
||
// are replaced with the max selection reached message
|
||
this.updateResults(true);
|
||
} else {
|
||
// initializes search's value with nextSearchTerm and update search result
|
||
if(this.nextSearchTerm != undefined){
|
||
this.search.val(this.nextSearchTerm);
|
||
this.updateResults();
|
||
this.search.select();
|
||
}
|
||
}
|
||
this.positionDropdown();
|
||
} else {
|
||
// if nothing left to select close
|
||
this.close();
|
||
this.search.width(10);
|
||
}
|
||
}
|
||
|
||
// since its not possible to select an element that has already been
|
||
// added we do not need to check if this is a new element before firing change
|
||
this.triggerChange({ added: data });
|
||
|
||
if (!options || !options.noFocus)
|
||
this.focusSearch();
|
||
},
|
||
|
||
// multi
|
||
cancel: function () {
|
||
this.close();
|
||
this.focusSearch();
|
||
},
|
||
|
||
addSelectedChoice: function (data) {
|
||
var enableChoice = !data.locked,
|
||
enabledItem = $(
|
||
"<li class='select2-search-choice'>" +
|
||
" <div></div>" +
|
||
" <a href='#' class='select2-search-choice-close' tabindex='-1'></a>" +
|
||
"</li>"),
|
||
disabledItem = $(
|
||
"<li class='select2-search-choice select2-locked'>" +
|
||
"<div></div>" +
|
||
"</li>");
|
||
var choice = enableChoice ? enabledItem : disabledItem,
|
||
id = this.id(data),
|
||
val = this.getVal(),
|
||
formatted,
|
||
cssClass;
|
||
|
||
formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup);
|
||
if (formatted != undefined) {
|
||
choice.find("div").replaceWith("<div>"+formatted+"</div>");
|
||
}
|
||
cssClass=this.opts.formatSelectionCssClass(data, choice.find("div"));
|
||
if (cssClass != undefined) {
|
||
choice.addClass(cssClass);
|
||
}
|
||
|
||
if(enableChoice){
|
||
choice.find(".select2-search-choice-close")
|
||
.on("mousedown", killEvent)
|
||
.on("click dblclick", this.bind(function (e) {
|
||
if (!this.isInterfaceEnabled()) return;
|
||
|
||
this.unselect($(e.target));
|
||
this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
|
||
killEvent(e);
|
||
this.close();
|
||
this.focusSearch();
|
||
})).on("focus", this.bind(function () {
|
||
if (!this.isInterfaceEnabled()) return;
|
||
this.container.addClass("select2-container-active");
|
||
this.dropdown.addClass("select2-drop-active");
|
||
}));
|
||
}
|
||
|
||
choice.data("select2-data", data);
|
||
choice.insertBefore(this.searchContainer);
|
||
|
||
val.push(id);
|
||
this.setVal(val);
|
||
},
|
||
|
||
// multi
|
||
unselect: function (selected) {
|
||
var val = this.getVal(),
|
||
data,
|
||
index;
|
||
selected = selected.closest(".select2-search-choice");
|
||
|
||
if (selected.length === 0) {
|
||
throw "Invalid argument: " + selected + ". Must be .select2-search-choice";
|
||
}
|
||
|
||
data = selected.data("select2-data");
|
||
|
||
if (!data) {
|
||
// prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued
|
||
// and invoked on an element already removed
|
||
return;
|
||
}
|
||
|
||
var evt = $.Event("select2-removing");
|
||
evt.val = this.id(data);
|
||
evt.choice = data;
|
||
this.opts.element.trigger(evt);
|
||
|
||
if (evt.isDefaultPrevented()) {
|
||
return false;
|
||
}
|
||
|
||
while((index = indexOf(this.id(data), val)) >= 0) {
|
||
val.splice(index, 1);
|
||
this.setVal(val);
|
||
if (this.select) this.postprocessResults();
|
||
}
|
||
|
||
selected.remove();
|
||
|
||
this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data });
|
||
this.triggerChange({ removed: data });
|
||
|
||
return true;
|
||
},
|
||
|
||
// multi
|
||
postprocessResults: function (data, initial, noHighlightUpdate) {
|
||
var val = this.getVal(),
|
||
choices = this.results.find(".select2-result"),
|
||
compound = this.results.find(".select2-result-with-children"),
|
||
self = this;
|
||
|
||
choices.each2(function (i, choice) {
|
||
var id = self.id(choice.data("select2-data"));
|
||
if (indexOf(id, val) >= 0) {
|
||
choice.addClass("select2-selected");
|
||
// mark all children of the selected parent as selected
|
||
choice.find(".select2-result-selectable").addClass("select2-selected");
|
||
}
|
||
});
|
||
|
||
compound.each2(function(i, choice) {
|
||
// hide an optgroup if it doesn't have any selectable children
|
||
if (!choice.is('.select2-result-selectable')
|
||
&& choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) {
|
||
choice.addClass("select2-selected");
|
||
}
|
||
});
|
||
|
||
if (this.highlight() == -1 && noHighlightUpdate !== false){
|
||
self.highlight(0);
|
||
}
|
||
|
||
//If all results are chosen render formatNoMatches
|
||
if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){
|
||
if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) {
|
||
if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) {
|
||
this.results.append("<li class='select2-no-results'>" + evaluate(self.opts.formatNoMatches, self.search.val()) + "</li>");
|
||
}
|
||
}
|
||
}
|
||
|
||
},
|
||
|
||
// multi
|
||
getMaxSearchWidth: function() {
|
||
return this.selection.width() - getSideBorderPadding(this.search);
|
||
},
|
||
|
||
// multi
|
||
resizeSearch: function () {
|
||
var minimumWidth, left, maxWidth, containerLeft, searchWidth,
|
||
sideBorderPadding = getSideBorderPadding(this.search);
|
||
|
||
minimumWidth = measureTextWidth(this.search) + 10;
|
||
|
||
left = this.search.offset().left;
|
||
|
||
maxWidth = this.selection.width();
|
||
containerLeft = this.selection.offset().left;
|
||
|
||
searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;
|
||
|
||
if (searchWidth < minimumWidth) {
|
||
searchWidth = maxWidth - sideBorderPadding;
|
||
}
|
||
|
||
if (searchWidth < 40) {
|
||
searchWidth = maxWidth - sideBorderPadding;
|
||
}
|
||
|
||
if (searchWidth <= 0) {
|
||
searchWidth = minimumWidth;
|
||
}
|
||
|
||
this.search.width(Math.floor(searchWidth));
|
||
},
|
||
|
||
// multi
|
||
getVal: function () {
|
||
var val;
|
||
if (this.select) {
|
||
val = this.select.val();
|
||
return val === null ? [] : val;
|
||
} else {
|
||
val = this.opts.element.val();
|
||
return splitVal(val, this.opts.separator);
|
||
}
|
||
},
|
||
|
||
// multi
|
||
setVal: function (val) {
|
||
var unique;
|
||
if (this.select) {
|
||
this.select.val(val);
|
||
} else {
|
||
unique = [];
|
||
// filter out duplicates
|
||
$(val).each(function () {
|
||
if (indexOf(this, unique) < 0) unique.push(this);
|
||
});
|
||
this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator));
|
||
}
|
||
},
|
||
|
||
// multi
|
||
buildChangeDetails: function (old, current) {
|
||
var current = current.slice(0),
|
||
old = old.slice(0);
|
||
|
||
// remove intersection from each array
|
||
for (var i = 0; i < current.length; i++) {
|
||
for (var j = 0; j < old.length; j++) {
|
||
if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {
|
||
current.splice(i, 1);
|
||
if(i>0){
|
||
i--;
|
||
}
|
||
old.splice(j, 1);
|
||
j--;
|
||
}
|
||
}
|
||
}
|
||
|
||
return {added: current, removed: old};
|
||
},
|
||
|
||
|
||
// multi
|
||
val: function (val, triggerChange) {
|
||
var oldData, self=this;
|
||
|
||
if (arguments.length === 0) {
|
||
return this.getVal();
|
||
}
|
||
|
||
oldData=this.data();
|
||
if (!oldData.length) oldData=[];
|
||
|
||
// val is an id. !val is true for [undefined,null,'',0] - 0 is legal
|
||
if (!val && val !== 0) {
|
||
this.opts.element.val("");
|
||
this.updateSelection([]);
|
||
this.clearSearch();
|
||
if (triggerChange) {
|
||
this.triggerChange({added: this.data(), removed: oldData});
|
||
}
|
||
return;
|
||
}
|
||
|
||
// val is a list of ids
|
||
this.setVal(val);
|
||
|
||
if (this.select) {
|
||
this.opts.initSelection(this.select, this.bind(this.updateSelection));
|
||
if (triggerChange) {
|
||
this.triggerChange(this.buildChangeDetails(oldData, this.data()));
|
||
}
|
||
} else {
|
||
if (this.opts.initSelection === undefined) {
|
||
throw new Error("val() cannot be called if initSelection() is not defined");
|
||
}
|
||
|
||
this.opts.initSelection(this.opts.element, function(data){
|
||
var ids=$.map(data, self.id);
|
||
self.setVal(ids);
|
||
self.updateSelection(data);
|
||
self.clearSearch();
|
||
if (triggerChange) {
|
||
self.triggerChange(self.buildChangeDetails(oldData, self.data()));
|
||
}
|
||
});
|
||
}
|
||
this.clearSearch();
|
||
},
|
||
|
||
// multi
|
||
onSortStart: function() {
|
||
if (this.select) {
|
||
throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");
|
||
}
|
||
|
||
// collapse search field into 0 width so its container can be collapsed as well
|
||
this.search.width(0);
|
||
// hide the container
|
||
this.searchContainer.hide();
|
||
},
|
||
|
||
// multi
|
||
onSortEnd:function() {
|
||
|
||
var val=[], self=this;
|
||
|
||
// show search and move it to the end of the list
|
||
this.searchContainer.show();
|
||
// make sure the search container is the last item in the list
|
||
this.searchContainer.appendTo(this.searchContainer.parent());
|
||
// since we collapsed the width in dragStarted, we resize it here
|
||
this.resizeSearch();
|
||
|
||
// update selection
|
||
this.selection.find(".select2-search-choice").each(function() {
|
||
val.push(self.opts.id($(this).data("select2-data")));
|
||
});
|
||
this.setVal(val);
|
||
this.triggerChange();
|
||
},
|
||
|
||
// multi
|
||
data: function(values, triggerChange) {
|
||
var self=this, ids, old;
|
||
if (arguments.length === 0) {
|
||
return this.selection
|
||
.children(".select2-search-choice")
|
||
.map(function() { return $(this).data("select2-data"); })
|
||
.get();
|
||
} else {
|
||
old = this.data();
|
||
if (!values) { values = []; }
|
||
ids = $.map(values, function(e) { return self.opts.id(e); });
|
||
this.setVal(ids);
|
||
this.updateSelection(values);
|
||
this.clearSearch();
|
||
if (triggerChange) {
|
||
this.triggerChange(this.buildChangeDetails(old, this.data()));
|
||
}
|
||
}
|
||
}
|
||
});
|
||
|
||
$.fn.select2 = function () {
|
||
|
||
var args = Array.prototype.slice.call(arguments, 0),
|
||
opts,
|
||
select2,
|
||
method, value, multiple,
|
||
allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"],
|
||
valueMethods = ["opened", "isFocused", "container", "dropdown"],
|
||
propertyMethods = ["val", "data"],
|
||
methodsMap = { search: "externalSearch" };
|
||
|
||
this.each(function () {
|
||
if (args.length === 0 || typeof(args[0]) === "object") {
|
||
opts = args.length === 0 ? {} : $.extend({}, args[0]);
|
||
opts.element = $(this);
|
||
|
||
if (opts.element.get(0).tagName.toLowerCase() === "select") {
|
||
multiple = opts.element.prop("multiple");
|
||
} else {
|
||
multiple = opts.multiple || false;
|
||
if ("tags" in opts) {opts.multiple = multiple = true;}
|
||
}
|
||
|
||
select2 = multiple ? new window.Select2["class"].multi() : new window.Select2["class"].single();
|
||
select2.init(opts);
|
||
} else if (typeof(args[0]) === "string") {
|
||
|
||
if (indexOf(args[0], allowedMethods) < 0) {
|
||
throw "Unknown method: " + args[0];
|
||
}
|
||
|
||
value = undefined;
|
||
select2 = $(this).data("select2");
|
||
if (select2 === undefined) return;
|
||
|
||
method=args[0];
|
||
|
||
if (method === "container") {
|
||
value = select2.container;
|
||
} else if (method === "dropdown") {
|
||
value = select2.dropdown;
|
||
} else {
|
||
if (methodsMap[method]) method = methodsMap[method];
|
||
|
||
value = select2[method].apply(select2, args.slice(1));
|
||
}
|
||
if (indexOf(args[0], valueMethods) >= 0
|
||
|| (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) {
|
||
return false; // abort the iteration, ready to return first matched value
|
||
}
|
||
} else {
|
||
throw "Invalid arguments to select2 plugin: " + args;
|
||
}
|
||
});
|
||
return (value === undefined) ? this : value;
|
||
};
|
||
|
||
// plugin defaults, accessible to users
|
||
$.fn.select2.defaults = {
|
||
width: "copy",
|
||
loadMorePadding: 0,
|
||
closeOnSelect: true,
|
||
openOnEnter: true,
|
||
containerCss: {},
|
||
dropdownCss: {},
|
||
containerCssClass: "",
|
||
dropdownCssClass: "",
|
||
formatResult: function(result, container, query, escapeMarkup) {
|
||
var markup=[];
|
||
markMatch(result.text, query.term, markup, escapeMarkup);
|
||
return markup.join("");
|
||
},
|
||
formatSelection: function (data, container, escapeMarkup) {
|
||
return data ? escapeMarkup(data.text) : undefined;
|
||
},
|
||
sortResults: function (results, container, query) {
|
||
return results;
|
||
},
|
||
formatResultCssClass: function(data) {return data.css;},
|
||
formatSelectionCssClass: function(data, container) {return undefined;},
|
||
formatMatches: function (matches) { return matches + " results are available, use up and down arrow keys to navigate."; },
|
||
formatNoMatches: function () { return "No matches found"; },
|
||
formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1? "" : "s"); },
|
||
formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1? "" : "s"); },
|
||
formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); },
|
||
formatLoadMore: function (pageNumber) { return "Loading more results…"; },
|
||
formatSearching: function () { return "Searching…"; },
|
||
minimumResultsForSearch: 0,
|
||
minimumInputLength: 0,
|
||
maximumInputLength: null,
|
||
maximumSelectionSize: 0,
|
||
id: function (e) { return e == undefined ? null : e.id; },
|
||
matcher: function(term, text) {
|
||
return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;
|
||
},
|
||
separator: ",",
|
||
tokenSeparators: [],
|
||
tokenizer: defaultTokenizer,
|
||
escapeMarkup: defaultEscapeMarkup,
|
||
blurOnChange: false,
|
||
selectOnBlur: false,
|
||
adaptContainerCssClass: function(c) { return c; },
|
||
adaptDropdownCssClass: function(c) { return null; },
|
||
nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; },
|
||
searchInputPlaceholder: '',
|
||
createSearchChoicePosition: 'top',
|
||
shouldFocusInput: function (instance) {
|
||
// Attempt to detect touch devices
|
||
var supportsTouchEvents = (('ontouchstart' in window) ||
|
||
(navigator.msMaxTouchPoints > 0));
|
||
|
||
// Only devices which support touch events should be special cased
|
||
if (!supportsTouchEvents) {
|
||
return true;
|
||
}
|
||
|
||
// Never focus the input if search is disabled
|
||
if (instance.opts.minimumResultsForSearch < 0) {
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
};
|
||
|
||
$.fn.select2.ajaxDefaults = {
|
||
transport: $.ajax,
|
||
params: {
|
||
type: "GET",
|
||
cache: false,
|
||
dataType: "json"
|
||
}
|
||
};
|
||
|
||
// exports
|
||
window.Select2 = {
|
||
query: {
|
||
ajax: ajax,
|
||
local: local,
|
||
tags: tags
|
||
}, util: {
|
||
debounce: debounce,
|
||
markMatch: markMatch,
|
||
escapeMarkup: defaultEscapeMarkup,
|
||
stripDiacritics: stripDiacritics
|
||
}, "class": {
|
||
"abstract": AbstractSelect2,
|
||
"single": SingleSelect2,
|
||
"multi": MultiSelect2
|
||
}
|
||
};
|
||
|
||
}(jQuery));
|
||
|