PageSourceSearch

https://www.nosh.ca/fend/js/functions_js.asp?article_id=4&cache=aa46061d-91d6-4242-b5e6-3ef3549b14ab

js nosh.ca collected 2026-10-06 01:09:11 UTC 603,971 bytes, 10,410 lines download raw bytes

1
2(function(n,t){function s(){var n=r.elements;return"string"==typeof n?n.split(" "):n}function u(n){var t=a[n[l]];return t||(t={},o++,n[l]=o,a[o]=t),t}function h(n,r,f){return(r||(r=t),i)?r.createElement(n):(f||(f=u(r)),r=f.cache[n]?f.cache[n].cloneNode():p.test(n)?(f.cache[n]=f.createElem(n)).cloneNode():f.createElem(n),r.canHaveChildren&&!y.test(n)?f.frag.appendChild(r):r)}function v(n,t){t.cache||(t.cache={},t.createElem=n.createElement,t.createFrag=n.createDocumentFragment,t.frag=t.createFrag());n.createElement=function(i){return r.shivMethods?h(i,n,t):t.createElem(i)};n.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+s().join().replace(/[\w\-]+/g,function(n){return t.createElem(n),t.frag.createElement(n),'c("'+n+'")'})+");return n}")(r,t.frag)}function c(n){var s,o,f;return n||(n=t),s=u(n),!r.shivCSS||e||s.hasCSS||(f=n,o=f.createElement("p"),f=f.getElementsByTagName("head")[0]||f.documentElement,o.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}<\/style>",o=f.insertBefore(o.lastChild,f.firstChild),s.hasCSS=!!o),i||v(n,s),n}var f=n.html5||{},y=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,e,l="_html5shiv",o=0,a={},i,r;(function(){var n,u,r;try{n=t.createElement("a");n.innerHTML="<xyz><\/xyz>";e="hidden"in n;(u=1===n.childNodes.length)||(t.createElement("a"),r=t.createDocumentFragment(),u="undefined"==typeof r.cloneNode||"undefined"==typeof r.createDocumentFragment||"undefined"==typeof r.createElement);i=u}catch(f){i=e=!0}})();r={elements:f.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==f.shivCSS,supportsUnknownElements:i,shivMethods:!1!==f.shivMethods,type:"default",shivDocument:c,createElement:h,createDocumentFragment:function(n,r){if(n||(n=t),i)return n.createDocumentFragment();for(var r=r||u(n),e=r.frag.cloneNode(),f=0,o=s(),h=o.length;f<h;f++)e.createElement(o[f]);return e}};n.html5=r;c(t)})(this,document);/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
3/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
4window.matchMedia=window.matchMedia||(function(e,f){var c,a=e.documentElement,b=a.firstElementChild||a.firstChild,d=e.createElement("body"),g=e.createElement("div");g.id="mq-test-1";g.style.cssText="position:absolute;top:-100em";d.style.background="none";d.appendChild(g);return function(h){g.innerHTML='&shy;<style media="'+h+'"> #mq-test-1 { width: 42px; }</style>';a.insertBefore(d,b);c=g.offsetWidth==42;a.removeChild(d);return{matches:c,media:h}}})(document);
5
6/*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs  */
7(function(e){e.respond={};respond.update=function(){};respond.mediaQueriesSupported=e.matchMedia&&e.matchMedia("only all").matches;if(respond.mediaQueriesSupported){return}var w=e.document,s=w.documentElement,i=[],k=[],q=[],o={},h=30,f=w.getElementsByTagName("head")[0]||s,g=w.getElementsByTagName("base")[0],b=f.getElementsByTagName("link"),d=[],a=function(){var D=b,y=D.length,B=0,A,z,C,x;for(;B<y;B++){A=D[B],z=A.href,C=A.media,x=A.rel&&A.rel.toLowerCase()==="stylesheet";if(!!z&&x&&!o[z]){if(A.styleSheet&&A.styleSheet.rawCssText){m(A.styleSheet.rawCssText,z,C);o[z]=true}else{if((!/^([a-zA-Z:]*\/\/)/.test(z)&&!g)||z.replace(RegExp.$1,"").split("/")[0]===e.location.host){d.push({href:z,media:C})}}}}u()},u=function(){if(d.length){var x=d.shift();n(x.href,function(y){m(y,x.href,x.media);o[x.href]=true;u()})}},m=function(I,x,z){var G=I.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),J=G&&G.length||0,x=x.substring(0,x.lastIndexOf("/")),y=function(K){return K.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+x+"$2$3")},A=!J&&z,D=0,C,E,F,B,H;if(x.length){x+="/"}if(A){J=1}for(;D<J;D++){C=0;if(A){E=z;k.push(y(I))}else{E=G[D].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1;k.push(RegExp.$2&&y(RegExp.$2))}B=E.split(",");H=B.length;for(;C<H;C++){F=B[C];i.push({media:F.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:k.length-1,hasquery:F.indexOf("(")>-1,minw:F.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:F.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}}j()},l,r,v=function(){var z,A=w.createElement("div"),x=w.body,y=false;A.style.cssText="position:absolute;font-size:1em;width:1em";if(!x){x=y=w.createElement("body");x.style.background="none"}x.appendChild(A);
7s.insertBefore(x,s.firstChild);z=A.offsetWidth;if(y){s.removeChild(x)}else{x.removeChild(A)}z=p=parseFloat(z);return z},p,j=function(I){var x="clientWidth",B=s[x],H=w.compatMode==="CSS1Compat"&&B||w.body[x]||B,D={},G=b[b.length-1],z=(new Date()).getTime();if(I&&l&&z-l<h){clearTimeout(r);r=setTimeout(j,h);return}else{l=z}for(var E in i){var K=i[E],C=K.minw,J=K.maxw,A=C===null,L=J===null,y="em";if(!!C){C=parseFloat(C)*(C.indexOf(y)>-1?(p||v()):1)}if(!!J){J=parseFloat(J)*(J.indexOf(y)>-1?(p||v()):1)}if(!K.hasquery||(!A||!L)&&(A||H>=C)&&(L||H<=J)){if(!D[K.media]){D[K.media]=[]}D[K.media].push(k[K.rules])}}for(var E in q){if(q[E]&&q[E].parentNode===f){f.removeChild(q[E])}}for(var E in D){var M=w.createElement("style"),F=D[E].join("\n");M.type="text/css";M.media=E;f.insertBefore(M,G.nextSibling);if(M.styleSheet){M.styleSheet.cssText=F}else{M.appendChild(w.createTextNode(F))}q.push(M)}},n=function(x,z){var y=c();if(!y){return}y.open("GET",x,true);y.onreadystatechange=function(){if(y.readyState!=4||y.status!=200&&y.status!=304){return}z(y.responseText)};if(y.readyState==4){return}y.send(null)},c=(function(){var x=false;try{x=new XMLHttpRequest()}catch(y){x=new ActiveXObject("Microsoft.XMLHTTP")}return function(){return x}})();a();respond.update=a;function t(){j(true)}if(e.addEventListener){e.addEventListener("resize",t,false)}else{if(e.attachEvent){e.attachEvent("onresize",t)}}})(this);/*SWFObject v2.2 <http://code.google.com/p/swfobject/> 
8is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
9*/
10var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}
10else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();/*!
11 * jQuery JavaScript Library v2.2.4
12 * http://jquery.com/
13 *
14 * Includes Sizzle.js
15 * http://sizzlejs.com/
16 *
17 * Copyright jQuery Foundation and other contributors
18 * Released under the MIT license
19 * http://jquery.org/license
20 *
21 * Date: 2016-05-20T17:23Z
22 */
23
24(function (global, factory) {
25
26if (typeof module === "object" && typeof module.exports === "object") {
27// For CommonJS and CommonJS-like environments where a proper `window`
28// is present, execute the factory and get jQuery.
29// For environments that do not have a `window` with a `document`
30// (such as Node.js), expose a factory as module.exports.
31// This accentuates the need for the creation of a real `window`.
vendor: 8,086 bytes, lines 32-386
32// e.g. var jQuery = require("jquery")(window);
33// See ticket #14549 for more info.
34module.exports = global.document ?
35factory(global, true) :
36function (w) {
37if (!w.document) {
38throw new Error("jQuery requires a window with a document");
39}
40return factory(w);
41};
42} else {
43factory(global);
44}
45
46// Pass this if window is not defined yet
47}(typeof window !== "undefined" ? window : this, function (window, noGlobal) {
48
49// Support: Firefox 18+
50// Can't be in strict mode, several libs including ASP.NET trace
51// the stack via arguments.caller.callee and Firefox dies if
52// you try to trace through "use strict" call chains. (#13335)
53//"use strict";
54var arr = [];
55
56var document = window.document;
57
58var slice = arr.slice;
59
60var concat = arr.concat;
61
62var push = arr.push;
63
64var indexOf = arr.indexOf;
65
66var class2type = {};
67
68var toString = class2type.toString;
69
70var hasOwn = class2type.hasOwnProperty;
71
72var support = {};
73
74
75
76var
77version = "2.2.4",
78
79// Define a local copy of jQuery
80jQuery = function (selector, context) {
81
82// The jQuery object is actually just the init constructor 'enhanced'
83// Need init if jQuery is called (just allow error to be thrown if not included)
84return new jQuery.fn.init(selector, context);
85},
86
87// Support: Android<4.1
88// Make sure we trim BOM and NBSP
89rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
90
91// Matches dashed string for camelizing
92rmsPrefix = /^-ms-/,
93rdashAlpha = /-([\da-z])/gi,
94
95// Used by jQuery.camelCase as callback to replace()
96fcamelCase = function (all, letter) {
97return letter.toUpperCase();
98};
99
100jQuery.fn = jQuery.prototype = {
101
102// The current version of jQuery being used
103jquery: version,
104
105constructor: jQuery,
106
107// Start with an empty selector
108selector: "",
109
110// The default length of a jQuery object is 0
111length: 0,
112
113toArray: function () {
114return slice.call(this);
115},
116
117// Get the Nth element in the matched element set OR
118// Get the whole matched element set as a clean array
119get: function (num) {
120return num != null ?
121
122// Return just the one element from the set
123(num < 0 ? this[num + this.length] : this[num]) :
124
125// Return all the elements in a clean array
126slice.call(this);
127},
128
129// Take an array of elements and push it onto the stack
130// (returning the new matched element set)
131pushStack: function (elems) {
132
133// Build a new jQuery matched element set
134var ret = jQuery.merge(this.constructor(), elems);
135
136// Add the old object onto the stack (as a reference)
137ret.prevObject = this;
138ret.context = this.context;
139
140// Return the newly-formed element set
141return ret;
142},
143
144// Execute a callback for every element in the matched set.
145each: function (callback) {
146return jQuery.each(this, callback);
147},
148
149map: function (callback) {
150return this.pushStack(jQuery.map(this, function (elem, i) {
151return callback.call(elem, i, elem);
152}));
153},
154
155slice: function () {
156return this.pushStack(slice.apply(this, arguments));
157},
158
159first: function () {
160return this.eq(0);
161},
162
163last: function () {
164return this.eq(-1);
165},
166
167eq: function (i) {
168var len = this.length,
169j = +i + (i < 0 ? len : 0);
170return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
171},
172
173end: function () {
174return this.prevObject || this.constructor();
175},
176
177// For internal use only.
178// Behaves like an Array's method, not like a jQuery method.
179push: push,
180sort: arr.sort,
181splice: arr.splice
182};
183
184jQuery.extend = jQuery.fn.extend = function () {
185var options, name, src, copy, copyIsArray, clone,
186target = arguments[0] || {},
187i = 1,
188length = arguments.length,
189deep = false;
190
191// Handle a deep copy situation
192if (typeof target === "boolean") {
193deep = target;
194
195// Skip the boolean and the target
196target = arguments[i] || {};
197i++;
198}
199
200// Handle case when target is a string or something (possible in deep copy)
201if (typeof target !== "object" && !jQuery.isFunction(target)) {
202target = {};
203}
204
205// Extend jQuery itself if only one argument is passed
206if (i === length) {
207target = this;
208i--;
209}
210
211for (; i < length; i++) {
212
213// Only deal with non-null/undefined values
214if ((options = arguments[i]) != null) {
215
216// Extend the base object
217for (name in options) {
218src = target[name];
219copy = options[name];
220
221// Prevent never-ending loop
222if (target === copy) {
223continue;
224}
225
226// Recurse if we're merging plain objects or arrays
227if (deep && copy && (jQuery.isPlainObject(copy) ||
228(copyIsArray = jQuery.isArray(copy)))) {
229
230if (copyIsArray) {
231copyIsArray = false;
232clone = src && jQuery.isArray(src) ? src : [];
233
234} else {
235clone = src && jQuery.isPlainObject(src) ? src : {};
236}
237
238// Never move original objects, clone them
239target[name] = jQuery.extend(deep, clone, copy);
240
241// Don't bring in undefined values
242} else if (copy !== undefined) {
243target[name] = copy;
244}
245}
246}
247}
248
249// Return the modified object
250return target;
251};
252
253jQuery.extend({
254
255// Unique for each copy of jQuery on the page
256expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
257
258// Assume jQuery is ready without the ready module
259isReady: true,
260
261error: function (msg) {
262throw new Error(msg);
263},
264
265noop: function () { },
266
267isFunction: function (obj) {
268return jQuery.type(obj) === "function";
269},
270
271isArray: Array.isArray,
272
273isWindow: function (obj) {
274return obj != null && obj === obj.window;
275},
276
277isNumeric: function (obj) {
278
279// parseFloat NaNs numeric-cast false positives (null|true|false|"")
280// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
281// subtraction forces infinities to NaN
282// adding 1 corrects loss of precision from parseFloat (#15100)
283var realStringObj = obj && obj.toString();
284return !jQuery.isArray(obj) && (realStringObj - parseFloat(realStringObj) + 1) >= 0;
285},
286
287isPlainObject: function (obj) {
288var key;
289
290// Not plain objects:
291// - Any object or value whose internal [[Class]] property is not "[object Object]"
292// - DOM nodes
293// - window
294if (jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow(obj)) {
295return false;
296}
297
298// Not own constructor property must be Object
299if (obj.constructor &&
300!hasOwn.call(obj, "constructor") &&
301!hasOwn.call(obj.constructor.prototype || {}, "isPrototypeOf")) {
302return false;
303}
304
305// Own properties are enumerated firstly, so to speed up,
306// if last one is own, then all properties are own
307for (key in obj) { }
308
309return key === undefined || hasOwn.call(obj, key);
310},
311
312isEmptyObject: function (obj) {
313var name;
314for (name in obj) {
315return false;
316}
317return true;
318},
319
320type: function (obj) {
321if (obj == null) {
322return obj + "";
323}
324
325// Support: Android<4.0, iOS<6 (functionish RegExp)
326return typeof obj === "object" || typeof obj === "function" ?
327class2type[toString.call(obj)] || "object" :
328typeof obj;
329},
330
331// Evaluates a script in a global context
332globalEval: function (code) {
333var script,
334indirect = eval;
335
336code = jQuery.trim(code);
337
338if (code) {
339
340// If the code includes a valid, prologue position
341// strict mode pragma, execute code by injecting a
342// script tag into the document.
343if (code.indexOf("use strict") === 1) {
344script = document.createElement("script");
345script.text = code;
346document.head.appendChild(script).parentNode.removeChild(script);
347} else {
348
349// Otherwise, avoid the DOM node creation, insertion
350// and removal by using an indirect global eval
351
352indirect(code);
353}
354}
355},
356
357// Convert dashed to camelCase; used by the css and data modules
358// Support: IE9-11+
359// Microsoft forgot to hump their vendor prefix (#9572)
360camelCase: function (string) {
361return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
362},
363
364nodeName: function (elem, name) {
365return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
366},
367
368each: function (obj, callback) {
369var length, i = 0;
370
371if (isArrayLike(obj)) {
372length = obj.length;
373for (; i < length; i++) {
374if (callback.call(obj[i], i, obj[i]) === false) {
375break;
376}
377}
378} else {
379for (i in obj) {
380if (callback.call(obj[i], i, obj[i]) === false) {
381break;
382}
383}
384}
385
386return obj;
vendor: 4,478 bytes, lines 387-598
387},
388
389// Support: Android<4.1
390trim: function (text) {
391return text == null ?
392"" :
393(text + "").replace(rtrim, "");
394},
395
396// results is for internal usage only
397makeArray: function (arr, results) {
398var ret = results || [];
399
400if (arr != null) {
401if (isArrayLike(Object(arr))) {
402jQuery.merge(ret,
403typeof arr === "string" ?
404[arr] : arr
405);
406} else {
407push.call(ret, arr);
408}
409}
410
411return ret;
412},
413
414inArray: function (elem, arr, i) {
415return arr == null ? -1 : indexOf.call(arr, elem, i);
416},
417
418merge: function (first, second) {
419var len = +second.length,
420j = 0,
421i = first.length;
422
423for (; j < len; j++) {
424first[i++] = second[j];
425}
426
427first.length = i;
428
429return first;
430},
431
432grep: function (elems, callback, invert) {
433var callbackInverse,
434matches = [],
435i = 0,
436length = elems.length,
437callbackExpect = !invert;
438
439// Go through the array, only saving the items
440// that pass the validator function
441for (; i < length; i++) {
442callbackInverse = !callback(elems[i], i);
443if (callbackInverse !== callbackExpect) {
444matches.push(elems[i]);
445}
446}
447
448return matches;
449},
450
451// arg is for internal usage only
452map: function (elems, callback, arg) {
453var length, value,
454i = 0,
455ret = [];
456
457// Go through the array, translating each of the items to their new values
458if (isArrayLike(elems)) {
459length = elems.length;
460for (; i < length; i++) {
461value = callback(elems[i], i, arg);
462
463if (value != null) {
464ret.push(value);
465}
466}
467
468// Go through every key on the object,
469} else {
470for (i in elems) {
471value = callback(elems[i], i, arg);
472
473if (value != null) {
474ret.push(value);
475}
476}
477}
478
479// Flatten any nested arrays
480return concat.apply([], ret);
481},
482
483// A global GUID counter for objects
484guid: 1,
485
486// Bind a function to a context, optionally partially applying any
487// arguments.
488proxy: function (fn, context) {
489var tmp, args, proxy;
490
491if (typeof context === "string") {
492tmp = fn[context];
493context = fn;
494fn = tmp;
495}
496
497// Quick check to determine if target is callable, in the spec
498// this throws a TypeError, but we will just return undefined.
499if (!jQuery.isFunction(fn)) {
500return undefined;
501}
502
503// Simulated bind
504args = slice.call(arguments, 2);
505proxy = function () {
506return fn.apply(context || this, args.concat(slice.call(arguments)));
507};
508
509// Set the guid of unique handler to the same of original handler, so it can be removed
510proxy.guid = fn.guid = fn.guid || jQuery.guid++;
511
512return proxy;
513},
514
515now: Date.now,
516
517// jQuery.support is not used in Core but other projects attach their
518// properties to it so it needs to exist.
519support: support
520});
521
522// JSHint would error on this code due to the Symbol not being defined in ES5.
523// Defining this global in .jshintrc would create a danger of using the global
524// unguarded in another place, it seems safer to just disable JSHint for these
525// three lines.
526/* jshint ignore: start */
527if (typeof Symbol === "function") {
528jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];
529}
530/* jshint ignore: end */
531
532// Populate the class2type map
533jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),
534function (i, name) {
535class2type["[object " + name + "]"] = name.toLowerCase();
536});
537
538function isArrayLike(obj) {
539
540// Support: iOS 8.2 (not reproducible in simulator)
541// `in` check used to prevent JIT error (gh-2145)
542// hasOwn isn't used here due to false negatives
543// regarding Nodelist length in IE
544var length = !!obj && "length" in obj && obj.length,
545type = jQuery.type(obj);
546
547if (type === "function" || jQuery.isWindow(obj)) {
548return false;
549}
550
551return type === "array" || length === 0 ||
552typeof length === "number" && length > 0 && (length - 1) in obj;
553}
554var Sizzle =
555/*!
556 * Sizzle CSS Selector Engine v2.2.1
557 * http://sizzlejs.com/
558 *
559 * Copyright jQuery Foundation and other contributors
560 * Released under the MIT license
561 * http://jquery.org/license
562 *
563 * Date: 2015-10-17
564 */
565(function (window) {
566
567var i,
568support,
569Expr,
570getText,
571isXML,
572tokenize,
573compile,
574select,
575outermostContext,
576sortInput,
577hasDuplicate,
578
579// Local document vars
580setDocument,
581document,
582docElem,
583documentIsHTML,
584rbuggyQSA,
585rbuggyMatches,
586matches,
587contains,
588
589// Instance-specific data
590expando = "sizzle" + 1 * new Date(),
591preferredDoc = window.document,
592dirruns = 0,
593done = 0,
594classCache = createCache(),
595tokenCache = createCache(),
596compilerCache = createCache(),
597sortOrder = function (a, b) {
598if (a === b) {
vendor: 17,080 bytes, lines 599-1205
599hasDuplicate = true;
600}
601return 0;
602},
603
604// General-purpose constants
605MAX_NEGATIVE = 1 << 31,
606
607// Instance methods
608hasOwn = ({}).hasOwnProperty,
609arr = [],
610pop = arr.pop,
611push_native = arr.push,
612push = arr.push,
613slice = arr.slice,
614// Use a stripped-down indexOf as it's faster than native
615// http://jsperf.com/thor-indexof-vs-for/5
616indexOf = function (list, elem) {
617var i = 0,
618len = list.length;
619for (; i < len; i++) {
620if (list[i] === elem) {
621return i;
622}
623}
624return -1;
625},
626
627booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
628
629// Regular expressions
630
631// http://www.w3.org/TR/css3-selectors/#whitespace
632whitespace = "[\\x20\\t\\r\\n\\f]",
633
634// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
635identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
636
637// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
638attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
639// Operator (capture 2)
640"*([*^$|!~]?=)" + whitespace +
641// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
642"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
643"*\\]",
644
645pseudos = ":(" + identifier + ")(?:\\((" +
646// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
647// 1. quoted (capture 3; capture 4 or capture 5)
648"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
649// 2. simple (capture 6)
650"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
651// 3. anything else (capture 2)
652".*" +
653")\\)|)",
654
655// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
656rwhitespace = new RegExp(whitespace + "+", "g"),
657rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"),
658
659rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"),
660rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),
661
662rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g"),
663
664rpseudo = new RegExp(pseudos),
665ridentifier = new RegExp("^" + identifier + "$"),
666
667matchExpr = {
668"ID": new RegExp("^#(" + identifier + ")"),
669"CLASS": new RegExp("^\\.(" + identifier + ")"),
670"TAG": new RegExp("^(" + identifier + "|[*])"),
671"ATTR": new RegExp("^" + attributes),
672"PSEUDO": new RegExp("^" + pseudos),
673"CHILD": new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
674"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
675"*(\\d+)|))" + whitespace + "*\\)|)", "i"),
676"bool": new RegExp("^(?:" + booleans + ")$", "i"),
677// For use in libraries implementing .is()
678// We use this for POS matching in `select`
679"needsContext": new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
680whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
681},
682
683rinputs = /^(?:input|select|textarea|button)$/i,
684rheader = /^h\d$/i,
685
686rnative = /^[^{]+\{\s*\[native \w/,
687
688// Easily-parseable/retrievable ID or TAG or CLASS selectors
689rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
690
691rsibling = /[+~]/,
692rescape = /'|\\/g,
693
694// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
695runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig"),
696funescape = function (_, escaped, escapedWhitespace) {
697var high = "0x" + escaped - 0x10000;
698// NaN means non-codepoint
699// Support: Firefox<24
700// Workaround erroneous numeric interpretation of +"0x"
701return high !== high || escapedWhitespace ?
702escaped :
703high < 0 ?
704// BMP codepoint
705String.fromCharCode(high + 0x10000) :
706// Supplemental Plane codepoint (surrogate pair)
707String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);
708},
709
710// Used for iframes
711// See setDocument()
712// Removing the function wrapper causes a "Permission Denied"
713// error in IE
714unloadHandler = function () {
715setDocument();
716};
717
718// Optimize for push.apply( _, NodeList )
719try {
720push.apply(
721(arr = slice.call(preferredDoc.childNodes)),
722preferredDoc.childNodes
723);
724// Support: Android<4.0
725// Detect silently failing push.apply
726arr[preferredDoc.childNodes.length].nodeType;
727} catch (e) {
728push = {
729apply: arr.length ?
730
731// Leverage slice if possible
732function (target, els) {
733push_native.apply(target, slice.call(els));
734} :
735
736// Support: IE<9
737// Otherwise append directly
738function (target, els) {
739var j = target.length,
740i = 0;
741// Can't trust NodeList.length
742while ((target[j++] = els[i++])) { }
743target.length = j - 1;
744}
745};
746}
747
748function Sizzle(selector, context, results, seed) {
749var m, i, elem, nid, nidselect, match, groups, newSelector,
750newContext = context && context.ownerDocument,
751
752// nodeType defaults to 9, since context defaults to document
753nodeType = context ? context.nodeType : 9;
754
755results = results || [];
756
757// Return early from calls with invalid selector or context
758if (typeof selector !== "string" || !selector ||
759nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
760
761return results;
762}
763
764// Try to shortcut find operations (as opposed to filters) in HTML documents
765if (!seed) {
766
767if ((context ? context.ownerDocument || context : preferredDoc) !== document) {
768setDocument(context);
769}
770context = context || document;
771
772if (documentIsHTML) {
773
774// If the selector is sufficiently simple, try using a "get*By*" DOM method
775// (excepting DocumentFragment context, where the methods don't exist)
776if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {
777
778// ID selector
779if ((m = match[1])) {
780
781// Document context
782if (nodeType === 9) {
783if ((elem = context.getElementById(m))) {
784
785// Support: IE, Opera, Webkit
786// TODO: identify versions
787// getElementById can match elements by name instead of ID
788if (elem.id === m) {
789results.push(elem);
790return results;
791}
792} else {
793return results;
794}
795
796// Element context
797} else {
798
799// Support: IE, Opera, Webkit
800// TODO: identify versions
801// getElementById can match elements by name instead of ID
802if (newContext && (elem = newContext.getElementById(m)) &&
803contains(context, elem) &&
804elem.id === m) {
805
806results.push(elem);
807return results;
808}
809}
810
811// Type selector
812} else if (match[2]) {
813push.apply(results, context.getElementsByTagName(selector));
814return results;
815
816// Class selector
817} else if ((m = match[3]) && support.getElementsByClassName &&
818context.getElementsByClassName) {
819
820push.apply(results, context.getElementsByClassName(m));
821return results;
822}
823}
824
825// Take advantage of querySelectorAll
826if (support.qsa &&
827!compilerCache[selector + " "] &&
828(!rbuggyQSA || !rbuggyQSA.test(selector))) {
829
830if (nodeType !== 1) {
831newContext = context;
832newSelector = selector;
833
834// qSA looks outside Element context, which is not what we want
835// Thanks to Andrew Dupont for this workaround technique
836// Support: IE <=8
837// Exclude object elements
838} else if (context.nodeName.toLowerCase() !== "object") {
839
840// Capture the context ID, setting it first if necessary
841if ((nid = context.getAttribute("id"))) {
842nid = nid.replace(rescape, "\\$&");
843} else {
844context.setAttribute("id", (nid = expando));
845}
846
847// Prefix every selector in the list
848groups = tokenize(selector);
849i = groups.length;
850nidselect = ridentifier.test(nid) ? "#" + nid : "[id='" + nid + "']";
851while (i--) {
852groups[i] = nidselect + " " + toSelector(groups[i]);
853}
854newSelector = groups.join(",");
855
856// Expand context for sibling selectors
857newContext = rsibling.test(selector) && testContext(context.parentNode) ||
858context;
859}
860
861if (newSelector) {
862try {
863push.apply(results,
864newContext.querySelectorAll(newSelector)
865);
866return results;
867} catch (qsaError) {
868} finally {
869if (nid === expando) {
870context.removeAttribute("id");
871}
872}
873}
874}
875}
876}
877
878// All others
879return select(selector.replace(rtrim, "$1"), context, results, seed);
880}
881
882/**
883 * Create key-value caches of limited size
884 * @returns {function(string, object)} Returns the Object data after storing it on itself with
885 *property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
886 *deleting the oldest entry
887 */
888function createCache() {
889var keys = [];
890
891function cache(key, value) {
892// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
893if (keys.push(key + " ") > Expr.cacheLength) {
894// Only keep the most recent entries
895delete cache[keys.shift()];
896}
897return (cache[key + " "] = value);
898}
899return cache;
900}
901
902/**
903 * Mark a function for special use by Sizzle
904 * @param {Function} fn The function to mark
905 */
906function markFunction(fn) {
907fn[expando] = true;
908return fn;
909}
910
911/**
912 * Support testing using an element
913 * @param {Function} fn Passed the created div and expects a boolean result
914 */
915function assert(fn) {
916var div = document.createElement("div");
917
918try {
919return !!fn(div);
920} catch (e) {
921return false;
922} finally {
923// Remove from its parent by default
924if (div.parentNode) {
925div.parentNode.removeChild(div);
926}
927// release memory in IE
928div = null;
929}
930}
931
932/**
933 * Adds the same handler for all of the specified attrs
934 * @param {String} attrs Pipe-separated list of attributes
935 * @param {Function} handler The method that will be applied
936 */
937function addHandle(attrs, handler) {
938var arr = attrs.split("|"),
939i = arr.length;
940
941while (i--) {
942Expr.attrHandle[arr[i]] = handler;
943}
944}
945
946/**
947 * Checks document order of two siblings
948 * @param {Element} a
949 * @param {Element} b
950 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
951 */
952function siblingCheck(a, b) {
953var cur = b && a,
954diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
955(~b.sourceIndex || MAX_NEGATIVE) -
956(~a.sourceIndex || MAX_NEGATIVE);
957
958// Use IE sourceIndex if available on both nodes
959if (diff) {
960return diff;
961}
962
963// Check if b follows a
964if (cur) {
965while ((cur = cur.nextSibling)) {
966if (cur === b) {
967return -1;
968}
969}
970}
971
972return a ? 1 : -1;
973}
974
975/**
976 * Returns a function to use in pseudos for input types
977 * @param {String} type
978 */
979function createInputPseudo(type) {
980return function (elem) {
981var name = elem.nodeName.toLowerCase();
982return name === "input" && elem.type === type;
983};
984}
985
986/**
987 * Returns a function to use in pseudos for buttons
988 * @param {String} type
989 */
990function createButtonPseudo(type) {
991return function (elem) {
992var name = elem.nodeName.toLowerCase();
993return (name === "input" || name === "button") && elem.type === type;
994};
995}
996
997/**
998 * Returns a function to use in pseudos for positionals
999 * @param {Function} fn
1000 */
1001function createPositionalPseudo(fn) {
1002return markFunction(function (argument) {
1003argument = +argument;
1004return markFunction(function (seed, matches) {
1005var j,
1006matchIndexes = fn([], seed.length, argument),
1007i = matchIndexes.length;
1008
1009// Match elements found at the specified indexes
1010while (i--) {
1011if (seed[(j = matchIndexes[i])]) {
1012seed[j] = !(matches[j] = seed[j]);
1013}
1014}
1015});
1016});
1017}
1018
1019/**
1020 * Checks a node for validity as a Sizzle context
1021 * @param {Element|Object=} context
1022 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1023 */
1024function testContext(context) {
1025return context && typeof context.getElementsByTagName !== "undefined" && context;
1026}
1027
1028// Expose support vars for convenience
1029support = Sizzle.support = {};
1030
1031/**
1032 * Detects XML nodes
1033 * @param {Element|Object} elem An element or a document
1034 * @returns {Boolean} True iff elem is a non-HTML XML node
1035 */
1036isXML = Sizzle.isXML = function (elem) {
1037// documentElement is verified for cases where it doesn't yet exist
1038// (such as loading iframes in IE - #4833)
1039var documentElement = elem && (elem.ownerDocument || elem).documentElement;
1040return documentElement ? documentElement.nodeName !== "HTML" : false;
1041};
1042
1043/**
1044 * Sets document-related variables once based on the current document
1045 * @param {Element|Object} [doc] An element or document object to use to set the document
1046 * @returns {Object} Returns the current document
1047 */
1048setDocument = Sizzle.setDocument = function (node) {
1049var hasCompare, parent,
1050doc = node ? node.ownerDocument || node : preferredDoc;
1051
1052// Return early if doc is invalid or already selected
1053if (doc === document || doc.nodeType !== 9 || !doc.documentElement) {
1054return document;
1055}
1056
1057// Update global variables
1058document = doc;
1059docElem = document.documentElement;
1060documentIsHTML = !isXML(document);
1061
1062// Support: IE 9-11, Edge
1063// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
1064if ((parent = document.defaultView) && parent.top !== parent) {
1065// Support: IE 11
1066if (parent.addEventListener) {
1067parent.addEventListener("unload", unloadHandler, false);
1068
1069// Support: IE 9 - 10 only
1070} else if (parent.attachEvent) {
1071parent.attachEvent("onunload", unloadHandler);
1072}
1073}
1074
1075/* Attributes
1076---------------------------------------------------------------------- */
1077
1078// Support: IE<8
1079// Verify that getAttribute really returns attributes and not properties
1080// (excepting IE8 booleans)
1081support.attributes = assert(function (div) {
1082div.className = "i";
1083return !div.getAttribute("className");
1084});
1085
1086/* getElement(s)By*
1087---------------------------------------------------------------------- */
1088
1089// Check if getElementsByTagName("*") returns only elements
1090support.getElementsByTagName = assert(function (div) {
1091div.appendChild(document.createComment(""));
1092return !div.getElementsByTagName("*").length;
1093});
1094
1095// Support: IE<9
1096support.getElementsByClassName = rnative.test(document.getElementsByClassName);
1097
1098// Support: IE<10
1099// Check if getElementById returns elements by name
1100// The broken getElementById methods don't pick up programatically-set names,
1101// so use a roundabout getElementsByName test
1102support.getById = assert(function (div) {
1103docElem.appendChild(div).id = expando;
1104return !document.getElementsByName || !document.getElementsByName(expando).length;
1105});
1106
1107// ID find and filter
1108if (support.getById) {
1109Expr.find["ID"] = function (id, context) {
1110if (typeof context.getElementById !== "undefined" && documentIsHTML) {
1111var m = context.getElementById(id);
1112return m ? [m] : [];
1113}
1114};
1115Expr.filter["ID"] = function (id) {
1116var attrId = id.replace(runescape, funescape);
1117return function (elem) {
1118return elem.getAttribute("id") === attrId;
1119};
1120};
1121} else {
1122// Support: IE6/7
1123// getElementById is not reliable as a find shortcut
1124delete Expr.find["ID"];
1125
1126Expr.filter["ID"] = function (id) {
1127var attrId = id.replace(runescape, funescape);
1128return function (elem) {
1129var node = typeof elem.getAttributeNode !== "undefined" &&
1130elem.getAttributeNode("id");
1131return node && node.value === attrId;
1132};
1133};
1134}
1135
1136// Tag
1137Expr.find["TAG"] = support.getElementsByTagName ?
1138function (tag, context) {
1139if (typeof context.getElementsByTagName !== "undefined") {
1140return context.getElementsByTagName(tag);
1141
1142// DocumentFragment nodes don't have gEBTN
1143} else if (support.qsa) {
1144return context.querySelectorAll(tag);
1145}
1146} :
1147
1148function (tag, context) {
1149var elem,
1150tmp = [],
1151i = 0,
1152// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
1153results = context.getElementsByTagName(tag);
1154
1155// Filter out possible comments
1156if (tag === "*") {
1157while ((elem = results[i++])) {
1158if (elem.nodeType === 1) {
1159tmp.push(elem);
1160}
1161}
1162
1163return tmp;
1164}
1165return results;
1166};
1167
1168// Class
1169Expr.find["CLASS"] = support.getElementsByClassName && function (className, context) {
1170if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
1171return context.getElementsByClassName(className);
1172}
1173};
1174
1175/* QSA/matchesSelector
1176---------------------------------------------------------------------- */
1177
1178// QSA and matchesSelector support
1179
1180// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1181rbuggyMatches = [];
1182
1183// qSa(:focus) reports false when true (Chrome 21)
1184// We allow this because of a bug in IE8/9 that throws an error
1185// whenever `document.activeElement` is accessed on an iframe
1186// So, we allow :focus to pass through QSA all the time to avoid the IE error
1187// See http://bugs.jquery.com/ticket/13378
1188rbuggyQSA = [];
1189
1190if ((support.qsa = rnative.test(document.querySelectorAll))) {
1191// Build QSA regex
1192// Regex strategy adopted from Diego Perini
1193assert(function (div) {
1194// Select is set to empty string on purpose
1195// This is to test IE's treatment of not explicitly
1196// setting a boolean content attribute,
1197// since its presence should be enough
1198// http://bugs.jquery.com/ticket/12359
1199docElem.appendChild(div).innerHTML = "<a id='" + expando + "'></a>" +
1200"<select id='" + expando + "-\r\\' msallowcapture=''>" +
1201"<option selected=''></option></select>";
1202
1203// Support: IE8, Opera 11-12.16
1204// Nothing should be selected when empty strings follow ^= or $= or *=
1205// The test attribute must be unknown in Opera but "safe" for WinRT
vendor: 4,553 bytes, lines 1206-1359
1206// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
1207if (div.querySelectorAll("[msallowcapture^='']").length) {
1208rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")");
1209}
1210
1211// Support: IE8
1212// Boolean attributes and "value" are not treated correctly
1213if (!div.querySelectorAll("[selected]").length) {
1214rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
1215}
1216
1217// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
1218if (!div.querySelectorAll("[id~=" + expando + "-]").length) {
1219rbuggyQSA.push("~=");
1220}
1221
1222// Webkit/Opera - :checked should return selected option elements
1223// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1224// IE8 throws error here and will not see later tests
1225if (!div.querySelectorAll(":checked").length) {
1226rbuggyQSA.push(":checked");
1227}
1228
1229// Support: Safari 8+, iOS 8+
1230// https://bugs.webkit.org/show_bug.cgi?id=136851
1231// In-page `selector#id sibing-combinator selector` fails
1232if (!div.querySelectorAll("a#" + expando + "+*").length) {
1233rbuggyQSA.push(".#.+[+~]");
1234}
1235});
1236
1237assert(function (div) {
1238// Support: Windows 8 Native Apps
1239// The type and name attributes are restricted during .innerHTML assignment
1240var input = document.createElement("input");
1241input.setAttribute("type", "hidden");
1242div.appendChild(input).setAttribute("name", "D");
1243
1244// Support: IE8
1245// Enforce case-sensitivity of name attribute
1246if (div.querySelectorAll("[name=d]").length) {
1247rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?=");
1248}
1249
1250// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1251// IE8 throws error here and will not see later tests
1252if (!div.querySelectorAll(":enabled").length) {
1253rbuggyQSA.push(":enabled", ":disabled");
1254}
1255
1256// Opera 10-11 does not throw on post-comma invalid pseudos
1257div.querySelectorAll("*,:x");
1258rbuggyQSA.push(",.*:");
1259});
1260}
1261
1262if ((support.matchesSelector = rnative.test((matches = docElem.matches ||
1263docElem.webkitMatchesSelector ||
1264docElem.mozMatchesSelector ||
1265docElem.oMatchesSelector ||
1266docElem.msMatchesSelector)))) {
1267
1268assert(function (div) {
1269// Check to see if it's possible to do matchesSelector
1270// on a disconnected node (IE 9)
1271support.disconnectedMatch = matches.call(div, "div");
1272
1273// This should fail with an exception
1274// Gecko does not error, returns false instead
1275matches.call(div, "[s!='']:x");
1276rbuggyMatches.push("!=", pseudos);
1277});
1278}
1279
1280rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
1281rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|"));
1282
1283/* Contains
1284---------------------------------------------------------------------- */
1285hasCompare = rnative.test(docElem.compareDocumentPosition);
1286
1287// Element contains another
1288// Purposefully self-exclusive
1289// As in, an element does not contain itself
1290contains = hasCompare || rnative.test(docElem.contains) ?
1291function (a, b) {
1292var adown = a.nodeType === 9 ? a.documentElement : a,
1293bup = b && b.parentNode;
1294return a === bup || !!(bup && bup.nodeType === 1 && (
1295adown.contains ?
1296adown.contains(bup) :
1297a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16
1298));
1299} :
1300function (a, b) {
1301if (b) {
1302while ((b = b.parentNode)) {
1303if (b === a) {
1304return true;
1305}
1306}
1307}
1308return false;
1309};
1310
1311/* Sorting
1312---------------------------------------------------------------------- */
1313
1314// Document order sorting
1315sortOrder = hasCompare ?
1316function (a, b) {
1317
1318// Flag for duplicate removal
1319if (a === b) {
1320hasDuplicate = true;
1321return 0;
1322}
1323
1324// Sort on method existence if only one input has compareDocumentPosition
1325var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1326if (compare) {
1327return compare;
1328}
1329
1330// Calculate position if both inputs belong to the same document
1331compare = (a.ownerDocument || a) === (b.ownerDocument || b) ?
1332a.compareDocumentPosition(b) :
1333
1334// Otherwise we know they are disconnected
13351;
1336
1337// Disconnected nodes
1338if (compare & 1 ||
1339(!support.sortDetached && b.compareDocumentPosition(a) === compare)) {
1340
1341// Choose the first element that is related to our preferred document
1342if (a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a)) {
1343return -1;
1344}
1345if (b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b)) {
1346return 1;
1347}
1348
1349// Maintain original order
1350return sortInput ?
1351(indexOf(sortInput, a) - indexOf(sortInput, b)) :
13520;
1353}
1354
1355return compare & 4 ? -1 : 1;
1356} :
1357function (a, b) {
1358// Exit early if the nodes are identical
1359if (a === b) {
vendor: 9,468 bytes, lines 1360-1745
1360hasDuplicate = true;
1361return 0;
1362}
1363
1364var cur,
1365i = 0,
1366aup = a.parentNode,
1367bup = b.parentNode,
1368ap = [a],
1369bp = [b];
1370
1371// Parentless nodes are either documents or disconnected
1372if (!aup || !bup) {
1373return a === document ? -1 :
1374b === document ? 1 :
1375aup ? -1 :
1376bup ? 1 :
1377sortInput ?
1378(indexOf(sortInput, a) - indexOf(sortInput, b)) :
13790;
1380
1381// If the nodes are siblings, we can do a quick check
1382} else if (aup === bup) {
1383return siblingCheck(a, b);
1384}
1385
1386// Otherwise we need full lists of their ancestors for comparison
1387cur = a;
1388while ((cur = cur.parentNode)) {
1389ap.unshift(cur);
1390}
1391cur = b;
1392while ((cur = cur.parentNode)) {
1393bp.unshift(cur);
1394}
1395
1396// Walk down the tree looking for a discrepancy
1397while (ap[i] === bp[i]) {
1398i++;
1399}
1400
1401return i ?
1402// Do a sibling check if the nodes have a common ancestor
1403siblingCheck(ap[i], bp[i]) :
1404
1405// Otherwise nodes in our document sort first
1406ap[i] === preferredDoc ? -1 :
1407bp[i] === preferredDoc ? 1 :
14080;
1409};
1410
1411return document;
1412};
1413
1414Sizzle.matches = function (expr, elements) {
1415return Sizzle(expr, null, null, elements);
1416};
1417
1418Sizzle.matchesSelector = function (elem, expr) {
1419// Set document vars if needed
1420if ((elem.ownerDocument || elem) !== document) {
1421setDocument(elem);
1422}
1423
1424// Make sure that attribute selectors are quoted
1425expr = expr.replace(rattributeQuotes, "='$1']");
1426
1427if (support.matchesSelector && documentIsHTML &&
1428!compilerCache[expr + " "] &&
1429(!rbuggyMatches || !rbuggyMatches.test(expr)) &&
1430(!rbuggyQSA || !rbuggyQSA.test(expr))) {
1431
1432try {
1433var ret = matches.call(elem, expr);
1434
1435// IE 9's matchesSelector returns false on disconnected nodes
1436if (ret || support.disconnectedMatch ||
1437// As well, disconnected nodes are said to be in a document
1438// fragment in IE 9
1439elem.document && elem.document.nodeType !== 11) {
1440return ret;
1441}
1442} catch (e) { }
1443}
1444
1445return Sizzle(expr, document, null, [elem]).length > 0;
1446};
1447
1448Sizzle.contains = function (context, elem) {
1449// Set document vars if needed
1450if ((context.ownerDocument || context) !== document) {
1451setDocument(context);
1452}
1453return contains(context, elem);
1454};
1455
1456Sizzle.attr = function (elem, name) {
1457// Set document vars if needed
1458if ((elem.ownerDocument || elem) !== document) {
1459setDocument(elem);
1460}
1461
1462var fn = Expr.attrHandle[name.toLowerCase()],
1463// Don't get fooled by Object.prototype properties (jQuery #13807)
1464val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ?
1465fn(elem, name, !documentIsHTML) :
1466undefined;
1467
1468return val !== undefined ?
1469val :
1470support.attributes || !documentIsHTML ?
1471elem.getAttribute(name) :
1472(val = elem.getAttributeNode(name)) && val.specified ?
1473val.value :
1474null;
1475};
1476
1477Sizzle.error = function (msg) {
1478throw new Error("Syntax error, unrecognized expression: " + msg);
1479};
1480
1481/**
1482 * Document sorting and removing duplicates
1483 * @param {ArrayLike} results
1484 */
1485Sizzle.uniqueSort = function (results) {
1486var elem,
1487duplicates = [],
1488j = 0,
1489i = 0;
1490
1491// Unless we *know* we can detect duplicates, assume their presence
1492hasDuplicate = !support.detectDuplicates;
1493sortInput = !support.sortStable && results.slice(0);
1494results.sort(sortOrder);
1495
1496if (hasDuplicate) {
1497while ((elem = results[i++])) {
1498if (elem === results[i]) {
1499j = duplicates.push(i);
1500}
1501}
1502while (j--) {
1503results.splice(duplicates[j], 1);
1504}
1505}
1506
1507// Clear input after sorting to release objects
1508// See https://github.com/jquery/sizzle/pull/225
1509sortInput = null;
1510
1511return results;
1512};
1513
1514/**
1515 * Utility function for retrieving the text value of an array of DOM nodes
1516 * @param {Array|Element} elem
1517 */
1518getText = Sizzle.getText = function (elem) {
1519var node,
1520ret = "",
1521i = 0,
1522nodeType = elem.nodeType;
1523
1524if (!nodeType) {
1525// If no nodeType, this is expected to be an array
1526while ((node = elem[i++])) {
1527// Do not traverse comment nodes
1528ret += getText(node);
1529}
1530} else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
1531// Use textContent for elements
1532// innerText usage removed for consistency of new lines (jQuery #11153)
1533if (typeof elem.textContent === "string") {
1534return elem.textContent;
1535} else {
1536// Traverse its children
1537for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
1538ret += getText(elem);
1539}
1540}
1541} else if (nodeType === 3 || nodeType === 4) {
1542return elem.nodeValue;
1543}
1544// Do not include comment or processing instruction nodes
1545
1546return ret;
1547};
1548
1549Expr = Sizzle.selectors = {
1550
1551// Can be adjusted by the user
1552cacheLength: 50,
1553
1554createPseudo: markFunction,
1555
1556match: matchExpr,
1557
1558attrHandle: {},
1559
1560find: {},
1561
1562relative: {
1563">": { dir: "parentNode", first: true },
1564" ": { dir: "parentNode" },
1565"+": { dir: "previousSibling", first: true },
1566"~": { dir: "previousSibling" }
1567},
1568
1569preFilter: {
1570"ATTR": function (match) {
1571match[1] = match[1].replace(runescape, funescape);
1572
1573// Move the given value to match[3] whether quoted or unquoted
1574match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);
1575
1576if (match[2] === "~=") {
1577match[3] = " " + match[3] + " ";
1578}
1579
1580return match.slice(0, 4);
1581},
1582
1583"CHILD": function (match) {
1584/* matches from matchExpr["CHILD"]
15851 type (only|nth|...)
15862 what (child|of-type)
15873 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
15884 xn-component of xn+y argument ([+-]?\d*n|)
15895 sign of xn-component
15906 x of xn-component
15917 sign of y-component
15928 y of y-component
1593*/
1594match[1] = match[1].toLowerCase();
1595
1596if (match[1].slice(0, 3) === "nth") {
1597// nth-* requires argument
1598if (!match[3]) {
1599Sizzle.error(match[0]);
1600}
1601
1602// numeric x and y parameters for Expr.filter.CHILD
1603// remember that false/true cast respectively to 0/1
1604match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
1605match[5] = +((match[7] + match[8]) || match[3] === "odd");
1606
1607// other types prohibit arguments
1608} else if (match[3]) {
1609Sizzle.error(match[0]);
1610}
1611
1612return match;
1613},
1614
1615"PSEUDO": function (match) {
1616var excess,
1617unquoted = !match[6] && match[2];
1618
1619if (matchExpr["CHILD"].test(match[0])) {
1620return null;
1621}
1622
1623// Accept quoted arguments as-is
1624if (match[3]) {
1625match[2] = match[4] || match[5] || "";
1626
1627// Strip excess characters from unquoted arguments
1628} else if (unquoted && rpseudo.test(unquoted) &&
1629// Get excess from tokenize (recursively)
1630(excess = tokenize(unquoted, true)) &&
1631// advance to the next closing parenthesis
1632(excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {
1633
1634// excess is a negative index
1635match[0] = match[0].slice(0, excess);
1636match[2] = unquoted.slice(0, excess);
1637}
1638
1639// Return only captures needed by the pseudo filter method (type and argument)
1640return match.slice(0, 3);
1641}
1642},
1643
1644filter: {
1645
1646"TAG": function (nodeNameSelector) {
1647var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
1648return nodeNameSelector === "*" ?
1649function () { return true; } :
1650function (elem) {
1651return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1652};
1653},
1654
1655"CLASS": function (className) {
1656var pattern = classCache[className + " "];
1657
1658return pattern ||
1659(pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) &&
1660classCache(className, function (elem) {
1661return pattern.test(typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "");
1662});
1663},
1664
1665"ATTR": function (name, operator, check) {
1666return function (elem) {
1667var result = Sizzle.attr(elem, name);
1668
1669if (result == null) {
1670return operator === "!=";
1671}
1672if (!operator) {
1673return true;
1674}
1675
1676result += "";
1677
1678return operator === "=" ? result === check :
1679operator === "!=" ? result !== check :
1680operator === "^=" ? check && result.indexOf(check) === 0 :
1681operator === "*=" ? check && result.indexOf(check) > -1 :
1682operator === "$=" ? check && result.slice(-check.length) === check :
1683operator === "~=" ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 :
1684operator === "|=" ? result === check || result.slice(0, check.length + 1) === check + "-" :
1685false;
1686};
1687},
1688
1689"CHILD": function (type, what, argument, first, last) {
1690var simple = type.slice(0, 3) !== "nth",
1691forward = type.slice(-4) !== "last",
1692ofType = what === "of-type";
1693
1694return first === 1 && last === 0 ?
1695
1696// Shortcut for :nth-*(n)
1697function (elem) {
1698return !!elem.parentNode;
1699} :
1700
1701function (elem, context, xml) {
1702var cache, uniqueCache, outerCache, node, nodeIndex, start,
1703dir = simple !== forward ? "nextSibling" : "previousSibling",
1704parent = elem.parentNode,
1705name = ofType && elem.nodeName.toLowerCase(),
1706useCache = !xml && !ofType,
1707diff = false;
1708
1709if (parent) {
1710
1711// :(first|last|only)-(child|of-type)
1712if (simple) {
1713while (dir) {
1714node = elem;
1715while ((node = node[dir])) {
1716if (ofType ?
1717node.nodeName.toLowerCase() === name :
1718node.nodeType === 1) {
1719
1720return false;
1721}
1722}
1723// Reverse direction for :only-* (if we haven't yet done so)
1724start = dir = type === "only" && !start && "nextSibling";
1725}
1726return true;
1727}
1728
1729start = [forward ? parent.firstChild : parent.lastChild];
1730
1731// non-xml :nth-child(...) stores cache data on `parent`
1732if (forward && useCache) {
1733
1734// Seek `elem` from a previously-cached index
1735
1736// ...in a gzip-friendly way
1737node = parent;
1738outerCache = node[expando] || (node[expando] = {});
1739
1740// Support: IE <9 only
1741// Defend against cloned attroperties (jQuery gh-1709)
1742uniqueCache = outerCache[node.uniqueID] ||
1743(outerCache[node.uniqueID] = {});
1744
1745cache = uniqueCache[type] || [];
vendor: 19,752 bytes, lines 1746-2507
1746nodeIndex = cache[0] === dirruns && cache[1];
1747diff = nodeIndex && cache[2];
1748node = nodeIndex && parent.childNodes[nodeIndex];
1749
1750while ((node = ++nodeIndex && node && node[dir] ||
1751
1752// Fallback to seeking `elem` from the start
1753(diff = nodeIndex = 0) || start.pop())) {
1754
1755// When found, cache indexes on `parent` and break
1756if (node.nodeType === 1 && ++diff && node === elem) {
1757uniqueCache[type] = [dirruns, nodeIndex, diff];
1758break;
1759}
1760}
1761
1762} else {
1763// Use previously-cached element index if available
1764if (useCache) {
1765// ...in a gzip-friendly way
1766node = elem;
1767outerCache = node[expando] || (node[expando] = {});
1768
1769// Support: IE <9 only
1770// Defend against cloned attroperties (jQuery gh-1709)
1771uniqueCache = outerCache[node.uniqueID] ||
1772(outerCache[node.uniqueID] = {});
1773
1774cache = uniqueCache[type] || [];
1775nodeIndex = cache[0] === dirruns && cache[1];
1776diff = nodeIndex;
1777}
1778
1779// xml :nth-child(...)
1780// or :nth-last-child(...) or :nth(-last)?-of-type(...)
1781if (diff === false) {
1782// Use the same loop as above to seek `elem` from the start
1783while ((node = ++nodeIndex && node && node[dir] ||
1784(diff = nodeIndex = 0) || start.pop())) {
1785
1786if ((ofType ?
1787node.nodeName.toLowerCase() === name :
1788node.nodeType === 1) &&
1789++diff) {
1790
1791// Cache the index of each encountered element
1792if (useCache) {
1793outerCache = node[expando] || (node[expando] = {});
1794
1795// Support: IE <9 only
1796// Defend against cloned attroperties (jQuery gh-1709)
1797uniqueCache = outerCache[node.uniqueID] ||
1798(outerCache[node.uniqueID] = {});
1799
1800uniqueCache[type] = [dirruns, diff];
1801}
1802
1803if (node === elem) {
1804break;
1805}
1806}
1807}
1808}
1809}
1810
1811// Incorporate the offset, then check against cycle size
1812diff -= last;
1813return diff === first || (diff % first === 0 && diff / first >= 0);
1814}
1815};
1816},
1817
1818"PSEUDO": function (pseudo, argument) {
1819// pseudo-class names are case-insensitive
1820// http://www.w3.org/TR/selectors/#pseudo-classes
1821// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1822// Remember that setFilters inherits from pseudos
1823var args,
1824fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] ||
1825Sizzle.error("unsupported pseudo: " + pseudo);
1826
1827// The user may use createPseudo to indicate that
1828// arguments are needed to create the filter function
1829// just as Sizzle does
1830if (fn[expando]) {
1831return fn(argument);
1832}
1833
1834// But maintain support for old signatures
1835if (fn.length > 1) {
1836args = [pseudo, pseudo, "", argument];
1837return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ?
1838markFunction(function (seed, matches) {
1839var idx,
1840matched = fn(seed, argument),
1841i = matched.length;
1842while (i--) {
1843idx = indexOf(seed, matched[i]);
1844seed[idx] = !(matches[idx] = matched[i]);
1845}
1846}) :
1847function (elem) {
1848return fn(elem, 0, args);
1849};
1850}
1851
1852return fn;
1853}
1854},
1855
1856pseudos: {
1857// Potentially complex pseudos
1858"not": markFunction(function (selector) {
1859// Trim the selector passed to compile
1860// to avoid treating leading and trailing
1861// spaces as combinators
1862var input = [],
1863results = [],
1864matcher = compile(selector.replace(rtrim, "$1"));
1865
1866return matcher[expando] ?
1867markFunction(function (seed, matches, context, xml) {
1868var elem,
1869unmatched = matcher(seed, null, xml, []),
1870i = seed.length;
1871
1872// Match elements unmatched by `matcher`
1873while (i--) {
1874if ((elem = unmatched[i])) {
1875seed[i] = !(matches[i] = elem);
1876}
1877}
1878}) :
1879function (elem, context, xml) {
1880input[0] = elem;
1881matcher(input, null, xml, results);
1882// Don't keep the element (issue #299)
1883input[0] = null;
1884return !results.pop();
1885};
1886}),
1887
1888"has": markFunction(function (selector) {
1889return function (elem) {
1890return Sizzle(selector, elem).length > 0;
1891};
1892}),
1893
1894"contains": markFunction(function (text) {
1895text = text.replace(runescape, funescape);
1896return function (elem) {
1897return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;
1898};
1899}),
1900
1901// "Whether an element is represented by a :lang() selector
1902// is based solely on the element's language value
1903// being equal to the identifier C,
1904// or beginning with the identifier C immediately followed by "-".
1905// The matching of C against the element's language value is performed case-insensitively.
1906// The identifier C does not have to be a valid language name."
1907// http://www.w3.org/TR/selectors/#lang-pseudo
1908"lang": markFunction(function (lang) {
1909// lang value must be a valid identifier
1910if (!ridentifier.test(lang || "")) {
1911Sizzle.error("unsupported lang: " + lang);
1912}
1913lang = lang.replace(runescape, funescape).toLowerCase();
1914return function (elem) {
1915var elemLang;
1916do {
1917if ((elemLang = documentIsHTML ?
1918elem.lang :
1919elem.getAttribute("xml:lang") || elem.getAttribute("lang"))) {
1920
1921elemLang = elemLang.toLowerCase();
1922return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
1923}
1924} while ((elem = elem.parentNode) && elem.nodeType === 1);
1925return false;
1926};
1927}),
1928
1929// Miscellaneous
1930"target": function (elem) {
1931var hash = window.location && window.location.hash;
1932return hash && hash.slice(1) === elem.id;
1933},
1934
1935"root": function (elem) {
1936return elem === docElem;
1937},
1938
1939"focus": function (elem) {
1940return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
1941},
1942
1943// Boolean properties
1944"enabled": function (elem) {
1945return elem.disabled === false;
1946},
1947
1948"disabled": function (elem) {
1949return elem.disabled === true;
1950},
1951
1952"checked": function (elem) {
1953// In CSS3, :checked should return both checked and selected elements
1954// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1955var nodeName = elem.nodeName.toLowerCase();
1956return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
1957},
1958
1959"selected": function (elem) {
1960// Accessing this property makes selected-by-default
1961// options in Safari work properly
1962if (elem.parentNode) {
1963elem.parentNode.selectedIndex;
1964}
1965
1966return elem.selected === true;
1967},
1968
1969// Contents
1970"empty": function (elem) {
1971// http://www.w3.org/TR/selectors/#empty-pseudo
1972// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
1973//   but not by others (comment: 8; processing instruction: 7; etc.)
1974// nodeType < 6 works because attributes (2) do not appear as children
1975for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
1976if (elem.nodeType < 6) {
1977return false;
1978}
1979}
1980return true;
1981},
1982
1983"parent": function (elem) {
1984return !Expr.pseudos["empty"](elem);
1985},
1986
1987// Element/input types
1988"header": function (elem) {
1989return rheader.test(elem.nodeName);
1990},
1991
1992"input": function (elem) {
1993return rinputs.test(elem.nodeName);
1994},
1995
1996"button": function (elem) {
1997var name = elem.nodeName.toLowerCase();
1998return name === "input" && elem.type === "button" || name === "button";
1999},
2000
2001"text": function (elem) {
2002var attr;
2003return elem.nodeName.toLowerCase() === "input" &&
2004elem.type === "text" &&
2005
2006// Support: IE<8
2007// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
2008((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
2009},
2010
2011// Position-in-collection
2012"first": createPositionalPseudo(function () {
2013return [0];
2014}),
2015
2016"last": createPositionalPseudo(function (matchIndexes, length) {
2017return [length - 1];
2018}),
2019
2020"eq": createPositionalPseudo(function (matchIndexes, length, argument) {
2021return [argument < 0 ? argument + length : argument];
2022}),
2023
2024"even": createPositionalPseudo(function (matchIndexes, length) {
2025var i = 0;
2026for (; i < length; i += 2) {
2027matchIndexes.push(i);
2028}
2029return matchIndexes;
2030}),
2031
2032"odd": createPositionalPseudo(function (matchIndexes, length) {
2033var i = 1;
2034for (; i < length; i += 2) {
2035matchIndexes.push(i);
2036}
2037return matchIndexes;
2038}),
2039
2040"lt": createPositionalPseudo(function (matchIndexes, length, argument) {
2041var i = argument < 0 ? argument + length : argument;
2042for (; --i >= 0;) {
2043matchIndexes.push(i);
2044}
2045return matchIndexes;
2046}),
2047
2048"gt": createPositionalPseudo(function (matchIndexes, length, argument) {
2049var i = argument < 0 ? argument + length : argument;
2050for (; ++i < length;) {
2051matchIndexes.push(i);
2052}
2053return matchIndexes;
2054})
2055}
2056};
2057
2058Expr.pseudos["nth"] = Expr.pseudos["eq"];
2059
2060// Add button/input type pseudos
2061for (i in { radio: true, checkbox: true, file: true, password: true, image: true }) {
2062Expr.pseudos[i] = createInputPseudo(i);
2063}
2064for (i in { submit: true, reset: true }) {
2065Expr.pseudos[i] = createButtonPseudo(i);
2066}
2067
2068// Easy API for creating new setFilters
2069function setFilters() { }
2070setFilters.prototype = Expr.filters = Expr.pseudos;
2071Expr.setFilters = new setFilters();
2072
2073tokenize = Sizzle.tokenize = function (selector, parseOnly) {
2074var matched, match, tokens, type,
2075soFar, groups, preFilters,
2076cached = tokenCache[selector + " "];
2077
2078if (cached) {
2079return parseOnly ? 0 : cached.slice(0);
2080}
2081
2082soFar = selector;
2083groups = [];
2084preFilters = Expr.preFilter;
2085
2086while (soFar) {
2087
2088// Comma and first run
2089if (!matched || (match = rcomma.exec(soFar))) {
2090if (match) {
2091// Don't consume trailing commas as valid
2092soFar = soFar.slice(match[0].length) || soFar;
2093}
2094groups.push((tokens = []));
2095}
2096
2097matched = false;
2098
2099// Combinators
2100if ((match = rcombinators.exec(soFar))) {
2101matched = match.shift();
2102tokens.push({
2103value: matched,
2104// Cast descendant combinators to space
2105type: match[0].replace(rtrim, " ")
2106});
2107soFar = soFar.slice(matched.length);
2108}
2109
2110// Filters
2111for (type in Expr.filter) {
2112if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] ||
2113(match = preFilters[type](match)))) {
2114matched = match.shift();
2115tokens.push({
2116value: matched,
2117type: type,
2118matches: match
2119});
2120soFar = soFar.slice(matched.length);
2121}
2122}
2123
2124if (!matched) {
2125break;
2126}
2127}
2128
2129// Return the length of the invalid excess
2130// if we're just parsing
2131// Otherwise, throw an error or return tokens
2132return parseOnly ?
2133soFar.length :
2134soFar ?
2135Sizzle.error(selector) :
2136// Cache the tokens
2137tokenCache(selector, groups).slice(0);
2138};
2139
2140function toSelector(tokens) {
2141var i = 0,
2142len = tokens.length,
2143selector = "";
2144for (; i < len; i++) {
2145selector += tokens[i].value;
2146}
2147return selector;
2148}
2149
2150function addCombinator(matcher, combinator, base) {
2151var dir = combinator.dir,
2152checkNonElements = base && dir === "parentNode",
2153doneName = done++;
2154
2155return combinator.first ?
2156// Check against closest ancestor/preceding element
2157function (elem, context, xml) {
2158while ((elem = elem[dir])) {
2159if (elem.nodeType === 1 || checkNonElements) {
2160return matcher(elem, context, xml);
2161}
2162}
2163} :
2164
2165// Check against all ancestor/preceding elements
2166function (elem, context, xml) {
2167var oldCache, uniqueCache, outerCache,
2168newCache = [dirruns, doneName];
2169
2170// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2171if (xml) {
2172while ((elem = elem[dir])) {
2173if (elem.nodeType === 1 || checkNonElements) {
2174if (matcher(elem, context, xml)) {
2175return true;
2176}
2177}
2178}
2179} else {
2180while ((elem = elem[dir])) {
2181if (elem.nodeType === 1 || checkNonElements) {
2182outerCache = elem[expando] || (elem[expando] = {});
2183
2184// Support: IE <9 only
2185// Defend against cloned attroperties (jQuery gh-1709)
2186uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});
2187
2188if ((oldCache = uniqueCache[dir]) &&
2189oldCache[0] === dirruns && oldCache[1] === doneName) {
2190
2191// Assign to newCache so results back-propagate to previous elements
2192return (newCache[2] = oldCache[2]);
2193} else {
2194// Reuse newcache so results back-propagate to previous elements
2195uniqueCache[dir] = newCache;
2196
2197// A match means we're done; a fail means we have to keep checking
2198if ((newCache[2] = matcher(elem, context, xml))) {
2199return true;
2200}
2201}
2202}
2203}
2204}
2205};
2206}
2207
2208function elementMatcher(matchers) {
2209return matchers.length > 1 ?
2210function (elem, context, xml) {
2211var i = matchers.length;
2212while (i--) {
2213if (!matchers[i](elem, context, xml)) {
2214return false;
2215}
2216}
2217return true;
2218} :
2219matchers[0];
2220}
2221
2222function multipleContexts(selector, contexts, results) {
2223var i = 0,
2224len = contexts.length;
2225for (; i < len; i++) {
2226Sizzle(selector, contexts[i], results);
2227}
2228return results;
2229}
2230
2231function condense(unmatched, map, filter, context, xml) {
2232var elem,
2233newUnmatched = [],
2234i = 0,
2235len = unmatched.length,
2236mapped = map != null;
2237
2238for (; i < len; i++) {
2239if ((elem = unmatched[i])) {
2240if (!filter || filter(elem, context, xml)) {
2241newUnmatched.push(elem);
2242if (mapped) {
2243map.push(i);
2244}
2245}
2246}
2247}
2248
2249return newUnmatched;
2250}
2251
2252function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
2253if (postFilter && !postFilter[expando]) {
2254postFilter = setMatcher(postFilter);
2255}
2256if (postFinder && !postFinder[expando]) {
2257postFinder = setMatcher(postFinder, postSelector);
2258}
2259return markFunction(function (seed, results, context, xml) {
2260var temp, i, elem,
2261preMap = [],
2262postMap = [],
2263preexisting = results.length,
2264
2265// Get initial elements from seed or context
2266elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []),
2267
2268// Prefilter to get matcher input, preserving a map for seed-results synchronization
2269matcherIn = preFilter && (seed || !selector) ?
2270condense(elems, preMap, preFilter, context, xml) :
2271elems,
2272
2273matcherOut = matcher ?
2274// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2275postFinder || (seed ? preFilter : preexisting || postFilter) ?
2276
2277// ...intermediate processing is necessary
2278[] :
2279
2280// ...otherwise use results directly
2281results :
2282matcherIn;
2283
2284// Find primary matches
2285if (matcher) {
2286matcher(matcherIn, matcherOut, context, xml);
2287}
2288
2289// Apply postFilter
2290if (postFilter) {
2291temp = condense(matcherOut, postMap);
2292postFilter(temp, [], context, xml);
2293
2294// Un-match failing elements by moving them back to matcherIn
2295i = temp.length;
2296while (i--) {
2297if ((elem = temp[i])) {
2298matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
2299}
2300}
2301}
2302
2303if (seed) {
2304if (postFinder || preFilter) {
2305if (postFinder) {
2306// Get the final matcherOut by condensing this intermediate into postFinder contexts
2307temp = [];
2308i = matcherOut.length;
2309while (i--) {
2310if ((elem = matcherOut[i])) {
2311// Restore matcherIn since elem is not yet a final match
2312temp.push((matcherIn[i] = elem));
2313}
2314}
2315postFinder(null, (matcherOut = []), temp, xml);
2316}
2317
2318// Move matched elements from seed to results to keep them synchronized
2319i = matcherOut.length;
2320while (i--) {
2321if ((elem = matcherOut[i]) &&
2322(temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {
2323
2324seed[temp] = !(results[temp] = elem);
2325}
2326}
2327}
2328
2329// Add elements to results, through postFinder if defined
2330} else {
2331matcherOut = condense(
2332matcherOut === results ?
2333matcherOut.splice(preexisting, matcherOut.length) :
2334matcherOut
2335);
2336if (postFinder) {
2337postFinder(null, results, matcherOut, xml);
2338} else {
2339push.apply(results, matcherOut);
2340}
2341}
2342});
2343}
2344
2345function matcherFromTokens(tokens) {
2346var checkContext, matcher, j,
2347len = tokens.length,
2348leadingRelative = Expr.relative[tokens[0].type],
2349implicitRelative = leadingRelative || Expr.relative[" "],
2350i = leadingRelative ? 1 : 0,
2351
2352// The foundational matcher ensures that elements are reachable from top-level context(s)
2353matchContext = addCombinator(function (elem) {
2354return elem === checkContext;
2355}, implicitRelative, true),
2356matchAnyContext = addCombinator(function (elem) {
2357return indexOf(checkContext, elem) > -1;
2358}, implicitRelative, true),
2359matchers = [function (elem, context, xml) {
2360var ret = (!leadingRelative && (xml || context !== outermostContext)) || (
2361(checkContext = context).nodeType ?
2362matchContext(elem, context, xml) :
2363matchAnyContext(elem, context, xml));
2364// Avoid hanging onto element (issue #299)
2365checkContext = null;
2366return ret;
2367}];
2368
2369for (; i < len; i++) {
2370if ((matcher = Expr.relative[tokens[i].type])) {
2371matchers = [addCombinator(elementMatcher(matchers), matcher)];
2372} else {
2373matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);
2374
2375// Return special upon seeing a positional matcher
2376if (matcher[expando]) {
2377// Find the next relative operator (if any) for proper handling
2378j = ++i;
2379for (; j < len; j++) {
2380if (Expr.relative[tokens[j].type]) {
2381break;
2382}
2383}
2384return setMatcher(
2385i > 1 && elementMatcher(matchers),
2386i > 1 && toSelector(
2387// If the preceding token was a descendant combinator, insert an implicit any-element `*`
2388tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === " " ? "*" : "" })
2389).replace(rtrim, "$1"),
2390matcher,
2391i < j && matcherFromTokens(tokens.slice(i, j)),
2392j < len && matcherFromTokens((tokens = tokens.slice(j))),
2393j < len && toSelector(tokens)
2394);
2395}
2396matchers.push(matcher);
2397}
2398}
2399
2400return elementMatcher(matchers);
2401}
2402
2403function matcherFromGroupMatchers(elementMatchers, setMatchers) {
2404var bySet = setMatchers.length > 0,
2405byElement = elementMatchers.length > 0,
2406superMatcher = function (seed, context, xml, results, outermost) {
2407var elem, j, matcher,
2408matchedCount = 0,
2409i = "0",
2410unmatched = seed && [],
2411setMatched = [],
2412contextBackup = outermostContext,
2413// We must always have either seed elements or outermost context
2414elems = seed || byElement && Expr.find["TAG"]("*", outermost),
2415// Use integer dirruns iff this is the outermost matcher
2416dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
2417len = elems.length;
2418
2419if (outermost) {
2420outermostContext = context === document || context || outermost;
2421}
2422
2423// Add elements passing elementMatchers directly to results
2424// Support: IE<9, Safari
2425// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2426for (; i !== len && (elem = elems[i]) != null; i++) {
2427if (byElement && elem) {
2428j = 0;
2429if (!context && elem.ownerDocument !== document) {
2430setDocument(elem);
2431xml = !documentIsHTML;
2432}
2433while ((matcher = elementMatchers[j++])) {
2434if (matcher(elem, context || document, xml)) {
2435results.push(elem);
2436break;
2437}
2438}
2439if (outermost) {
2440dirruns = dirrunsUnique;
2441}
2442}
2443
2444// Track unmatched elements for set filters
2445if (bySet) {
2446// They will have gone through all possible matchers
2447if ((elem = !matcher && elem)) {
2448matchedCount--;
2449}
2450
2451// Lengthen the array for every element, matched or not
2452if (seed) {
2453unmatched.push(elem);
2454}
2455}
2456}
2457
2458// `i` is now the count of elements visited above, and adding it to `matchedCount`
2459// makes the latter nonnegative.
2460matchedCount += i;
2461
2462// Apply set filters to unmatched elements
2463// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2464// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2465// no element matchers and no seed.
2466// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2467// case, which will result in a "00" `matchedCount` that differs from `i` but is also
2468// numerically zero.
2469if (bySet && i !== matchedCount) {
2470j = 0;
2471while ((matcher = setMatchers[j++])) {
2472matcher(unmatched, setMatched, context, xml);
2473}
2474
2475if (seed) {
2476// Reintegrate element matches to eliminate the need for sorting
2477if (matchedCount > 0) {
2478while (i--) {
2479if (!(unmatched[i] || setMatched[i])) {
2480setMatched[i] = pop.call(results);
2481}
2482}
2483}
2484
2485// Discard index placeholder values to get only actual matches
2486setMatched = condense(setMatched);
2487}
2488
2489// Add matches to results
2490push.apply(results, setMatched);
2491
2492// Seedless set matches succeeding multiple successful matchers stipulate sorting
2493if (outermost && !seed && setMatched.length > 0 &&
2494(matchedCount + setMatchers.length) > 1) {
2495
2496Sizzle.uniqueSort(results);
2497}
2498}
2499
2500// Override manipulation of globals by nested matchers
2501if (outermost) {
2502dirruns = dirrunsUnique;
2503outermostContext = contextBackup;
2504}
2505
2506return unmatched;
2507};
vendor: 4,272 bytes, lines 2508-2657
2508
2509return bySet ?
2510markFunction(superMatcher) :
2511superMatcher;
2512}
2513
2514compile = Sizzle.compile = function (selector, match /* Internal Use Only */) {
2515var i,
2516setMatchers = [],
2517elementMatchers = [],
2518cached = compilerCache[selector + " "];
2519
2520if (!cached) {
2521// Generate a function of recursive functions that can be used to check each element
2522if (!match) {
2523match = tokenize(selector);
2524}
2525i = match.length;
2526while (i--) {
2527cached = matcherFromTokens(match[i]);
2528if (cached[expando]) {
2529setMatchers.push(cached);
2530} else {
2531elementMatchers.push(cached);
2532}
2533}
2534
2535// Cache the compiled function
2536cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));
2537
2538// Save selector and tokenization
2539cached.selector = selector;
2540}
2541return cached;
2542};
2543
2544/**
2545 * A low-level selection function that works with Sizzle's compiled
2546 *  selector functions
2547 * @param {String|Function} selector A selector or a pre-compiled
2548 *  selector function built with Sizzle.compile
2549 * @param {Element} context
2550 * @param {Array} [results]
2551 * @param {Array} [seed] A set of elements to match against
2552 */
2553select = Sizzle.select = function (selector, context, results, seed) {
2554var i, tokens, token, type, find,
2555compiled = typeof selector === "function" && selector,
2556match = !seed && tokenize((selector = compiled.selector || selector));
2557
2558results = results || [];
2559
2560// Try to minimize operations if there is only one selector in the list and no seed
2561// (the latter of which guarantees us context)
2562if (match.length === 1) {
2563
2564// Reduce context if the leading compound selector is an ID
2565tokens = match[0] = match[0].slice(0);
2566if (tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2567support.getById && context.nodeType === 9 && documentIsHTML &&
2568Expr.relative[tokens[1].type]) {
2569
2570context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0];
2571if (!context) {
2572return results;
2573
2574// Precompiled matchers will still verify ancestry, so step up a level
2575} else if (compiled) {
2576context = context.parentNode;
2577}
2578
2579selector = selector.slice(tokens.shift().value.length);
2580}
2581
2582// Fetch a seed set for right-to-left matching
2583i = matchExpr["needsContext"].test(selector) ? 0 : tokens.length;
2584while (i--) {
2585token = tokens[i];
2586
2587// Abort if we hit a combinator
2588if (Expr.relative[(type = token.type)]) {
2589break;
2590}
2591if ((find = Expr.find[type])) {
2592// Search, expanding context for leading sibling combinators
2593if ((seed = find(
2594token.matches[0].replace(runescape, funescape),
2595rsibling.test(tokens[0].type) && testContext(context.parentNode) || context
2596))) {
2597
2598// If seed is empty or no tokens remain, we can return early
2599tokens.splice(i, 1);
2600selector = seed.length && toSelector(tokens);
2601if (!selector) {
2602push.apply(results, seed);
2603return results;
2604}
2605
2606break;
2607}
2608}
2609}
2610}
2611
2612// Compile and execute a filtering function if one is not provided
2613// Provide `match` to avoid retokenization if we modified the selector above
2614(compiled || compile(selector, match))(
2615seed,
2616context,
2617!documentIsHTML,
2618results,
2619!context || rsibling.test(selector) && testContext(context.parentNode) || context
2620);
2621return results;
2622};
2623
2624// One-time assignments
2625
2626// Sort stability
2627support.sortStable = expando.split("").sort(sortOrder).join("") === expando;
2628
2629// Support: Chrome 14-35+
2630// Always assume duplicates if they aren't passed to the comparison function
2631support.detectDuplicates = !!hasDuplicate;
2632
2633// Initialize against the default document
2634setDocument();
2635
2636// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2637// Detached nodes confoundingly follow *each other*
2638support.sortDetached = assert(function (div1) {
2639// Should return 1, but returns 4 (following)
2640return div1.compareDocumentPosition(document.createElement("div")) & 1;
2641});
2642
2643// Support: IE<8
2644// Prevent attribute/property "interpolation"
2645// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2646if (!assert(function (div) {
2647div.innerHTML = "<a href='#'></a>";
2648return div.firstChild.getAttribute("href") === "#";
2649})) {
2650addHandle("type|href|height|width", function (elem, name, isXML) {
2651if (!isXML) {
2652return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2);
2653}
2654});
2655}
2656
2657// Support: IE<9
vendor: 8,719 bytes, lines 2658-3040
2658// Use defaultValue in place of getAttribute("value")
2659if (!support.attributes || !assert(function (div) {
2660div.innerHTML = "<input/>";
2661div.firstChild.setAttribute("value", "");
2662return div.firstChild.getAttribute("value") === "";
2663})) {
2664addHandle("value", function (elem, name, isXML) {
2665if (!isXML && elem.nodeName.toLowerCase() === "input") {
2666return elem.defaultValue;
2667}
2668});
2669}
2670
2671// Support: IE<9
2672// Use getAttributeNode to fetch booleans when getAttribute lies
2673if (!assert(function (div) {
2674return div.getAttribute("disabled") == null;
2675})) {
2676addHandle(booleans, function (elem, name, isXML) {
2677var val;
2678if (!isXML) {
2679return elem[name] === true ? name.toLowerCase() :
2680(val = elem.getAttributeNode(name)) && val.specified ?
2681val.value :
2682null;
2683}
2684});
2685}
2686
2687return Sizzle;
2688
2689})(window);
2690
2691
2692
2693jQuery.find = Sizzle;
2694jQuery.expr = Sizzle.selectors;
2695jQuery.expr[":"] = jQuery.expr.pseudos;
2696jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2697jQuery.text = Sizzle.getText;
2698jQuery.isXMLDoc = Sizzle.isXML;
2699jQuery.contains = Sizzle.contains;
2700
2701
2702
2703var dir = function (elem, dir, until) {
2704var matched = [],
2705truncate = until !== undefined;
2706
2707while ((elem = elem[dir]) && elem.nodeType !== 9) {
2708if (elem.nodeType === 1) {
2709if (truncate && jQuery(elem).is(until)) {
2710break;
2711}
2712matched.push(elem);
2713}
2714}
2715return matched;
2716};
2717
2718
2719var siblings = function (n, elem) {
2720var matched = [];
2721
2722for (; n; n = n.nextSibling) {
2723if (n.nodeType === 1 && n !== elem) {
2724matched.push(n);
2725}
2726}
2727
2728return matched;
2729};
2730
2731
2732var rneedsContext = jQuery.expr.match.needsContext;
2733
2734var rsingleTag = (/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/);
2735
2736
2737
2738var risSimple = /^.[^:#\[\.,]*$/;
2739
2740// Implement the identical functionality for filter and not
2741function winnow(elements, qualifier, not) {
2742if (jQuery.isFunction(qualifier)) {
2743return jQuery.grep(elements, function (elem, i) {
2744/* jshint -W018 */
2745return !!qualifier.call(elem, i, elem) !== not;
2746});
2747
2748}
2749
2750if (qualifier.nodeType) {
2751return jQuery.grep(elements, function (elem) {
2752return (elem === qualifier) !== not;
2753});
2754
2755}
2756
2757if (typeof qualifier === "string") {
2758if (risSimple.test(qualifier)) {
2759return jQuery.filter(qualifier, elements, not);
2760}
2761
2762qualifier = jQuery.filter(qualifier, elements);
2763}
2764
2765return jQuery.grep(elements, function (elem) {
2766return (indexOf.call(qualifier, elem) > -1) !== not;
2767});
2768}
2769
2770jQuery.filter = function (expr, elems, not) {
2771var elem = elems[0];
2772
2773if (not) {
2774expr = ":not(" + expr + ")";
2775}
2776
2777return elems.length === 1 && elem.nodeType === 1 ?
2778jQuery.find.matchesSelector(elem, expr) ? [elem] : [] :
2779jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {
2780return elem.nodeType === 1;
2781}));
2782};
2783
2784jQuery.fn.extend({
2785find: function (selector) {
2786var i,
2787len = this.length,
2788ret = [],
2789self = this;
2790
2791if (typeof selector !== "string") {
2792return this.pushStack(jQuery(selector).filter(function () {
2793for (i = 0; i < len; i++) {
2794if (jQuery.contains(self[i], this)) {
2795return true;
2796}
2797}
2798}));
2799}
2800
2801for (i = 0; i < len; i++) {
2802jQuery.find(selector, self[i], ret);
2803}
2804
2805// Needed because $( selector, context ) becomes $( context ).find( selector )
2806ret = this.pushStack(len > 1 ? jQuery.unique(ret) : ret);
2807ret.selector = this.selector ? this.selector + " " + selector : selector;
2808return ret;
2809},
2810filter: function (selector) {
2811return this.pushStack(winnow(this, selector || [], false));
2812},
2813not: function (selector) {
2814return this.pushStack(winnow(this, selector || [], true));
2815},
2816is: function (selector) {
2817return !!winnow(
2818this,
2819
2820// If this is a positional/relative selector, check membership in the returned set
2821// so $("p:first").is("p:last") won't return true for a doc with two "p".
2822typeof selector === "string" && rneedsContext.test(selector) ?
2823jQuery(selector) :
2824selector || [],
2825false
2826).length;
2827}
2828});
2829
2830
2831// Initialize a jQuery object
2832
2833
2834// A central reference to the root jQuery(document)
2835var rootjQuery,
2836
2837// A simple way to check for HTML strings
2838// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
2839// Strict HTML recognition (#11290: must start with <)
2840rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
2841
2842init = jQuery.fn.init = function (selector, context, root) {
2843var match, elem;
2844
2845// HANDLE: $(""), $(null), $(undefined), $(false)
2846if (!selector) {
2847return this;
2848}
2849
2850// Method init() accepts an alternate rootjQuery
2851// so migrate can support jQuery.sub (gh-2101)
2852root = root || rootjQuery;
2853
2854// Handle HTML strings
2855if (typeof selector === "string") {
2856if (selector[0] === "<" &&
2857selector[selector.length - 1] === ">" &&
2858selector.length >= 3) {
2859
2860// Assume that strings that start and end with <> are HTML and skip the regex check
2861match = [null, selector, null];
2862
2863} else {
2864match = rquickExpr.exec(selector);
2865}
2866
2867// Match html or make sure no context is specified for #id
2868if (match && (match[1] || !context)) {
2869
2870// HANDLE: $(html) -> $(array)
2871if (match[1]) {
2872context = context instanceof jQuery ? context[0] : context;
2873
2874// Option to run scripts is true for back-compat
2875// Intentionally let the error be thrown if parseHTML is not present
2876jQuery.merge(this, jQuery.parseHTML(
2877match[1],
2878context && context.nodeType ? context.ownerDocument || context : document,
2879true
2880));
2881
2882// HANDLE: $(html, props)
2883if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
2884for (match in context) {
2885
2886// Properties of context are called as methods if possible
2887if (jQuery.isFunction(this[match])) {
2888this[match](context[match]);
2889
2890// ...and otherwise set as attributes
2891} else {
2892this.attr(match, context[match]);
2893}
2894}
2895}
2896
2897return this;
2898
2899// HANDLE: $(#id)
2900} else {
2901elem = document.getElementById(match[2]);
2902
2903// Support: Blackberry 4.6
2904// gEBID returns nodes no longer in the document (#6963)
2905if (elem && elem.parentNode) {
2906
2907// Inject the element directly into the jQuery object
2908this.length = 1;
2909this[0] = elem;
2910}
2911
2912this.context = document;
2913this.selector = selector;
2914return this;
2915}
2916
2917// HANDLE: $(expr, $(...))
2918} else if (!context || context.jquery) {
2919return (context || root).find(selector);
2920
2921// HANDLE: $(expr, context)
2922// (which is just equivalent to: $(context).find(expr)
2923} else {
2924return this.constructor(context).find(selector);
2925}
2926
2927// HANDLE: $(DOMElement)
2928} else if (selector.nodeType) {
2929this.context = this[0] = selector;
2930this.length = 1;
2931return this;
2932
2933// HANDLE: $(function)
2934// Shortcut for document ready
2935} else if (jQuery.isFunction(selector)) {
2936return root.ready !== undefined ?
2937root.ready(selector) :
2938
2939// Execute immediately if ready is not present
2940selector(jQuery);
2941}
2942
2943if (selector.selector !== undefined) {
2944this.selector = selector.selector;
2945this.context = selector.context;
2946}
2947
2948return jQuery.makeArray(selector, this);
2949};
2950
2951// Give the init function the jQuery prototype for later instantiation
2952init.prototype = jQuery.fn;
2953
2954// Initialize central reference
2955rootjQuery = jQuery(document);
2956
2957
2958var rparentsprev = /^(?:parents|prev(?:Until|All))/,
2959
2960// Methods guaranteed to produce a unique set when starting from a unique set
2961guaranteedUnique = {
2962children: true,
2963contents: true,
2964next: true,
2965prev: true
2966};
2967
2968jQuery.fn.extend({
2969has: function (target) {
2970var targets = jQuery(target, this),
2971l = targets.length;
2972
2973return this.filter(function () {
2974var i = 0;
2975for (; i < l; i++) {
2976if (jQuery.contains(this, targets[i])) {
2977return true;
2978}
2979}
2980});
2981},
2982
2983closest: function (selectors, context) {
2984var cur,
2985i = 0,
2986l = this.length,
2987matched = [],
2988pos = rneedsContext.test(selectors) || typeof selectors !== "string" ?
2989jQuery(selectors, context || this.context) :
29900;
2991
2992for (; i < l; i++) {
2993for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {
2994
2995// Always skip document fragments
2996if (cur.nodeType < 11 && (pos ?
2997pos.index(cur) > -1 :
2998
2999// Don't pass non-elements to Sizzle
3000cur.nodeType === 1 &&
3001jQuery.find.matchesSelector(cur, selectors))) {
3002
3003matched.push(cur);
3004break;
3005}
3006}
3007}
3008
3009return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);
3010},
3011
3012// Determine the position of an element within the set
3013index: function (elem) {
3014
3015// No argument, return index in parent
3016if (!elem) {
3017return (this[0] && this[0].parentNode) ? this.first().prevAll().length : -1;
3018}
3019
3020// Index in selector
3021if (typeof elem === "string") {
3022return indexOf.call(jQuery(elem), this[0]);
3023}
3024
3025// Locate the position of the desired element
3026return indexOf.call(this,
3027
3028// If it receives a jQuery object, the first element is used
3029elem.jquery ? elem[0] : elem
3030);
3031},
3032
3033add: function (selector, context) {
3034return this.pushStack(
3035jQuery.uniqueSort(
3036jQuery.merge(this.get(), jQuery(selector, context))
3037)
3038);
3039},
3040
vendor: 5,523 bytes, lines 3041-3283
3041addBack: function (selector) {
3042return this.add(selector == null ?
3043this.prevObject : this.prevObject.filter(selector)
3044);
3045}
3046});
3047
3048function sibling(cur, dir) {
3049while ((cur = cur[dir]) && cur.nodeType !== 1) { }
3050return cur;
3051}
3052
3053jQuery.each({
3054parent: function (elem) {
3055var parent = elem.parentNode;
3056return parent && parent.nodeType !== 11 ? parent : null;
3057},
3058parents: function (elem) {
3059return dir(elem, "parentNode");
3060},
3061parentsUntil: function (elem, i, until) {
3062return dir(elem, "parentNode", until);
3063},
3064next: function (elem) {
3065return sibling(elem, "nextSibling");
3066},
3067prev: function (elem) {
3068return sibling(elem, "previousSibling");
3069},
3070nextAll: function (elem) {
3071return dir(elem, "nextSibling");
3072},
3073prevAll: function (elem) {
3074return dir(elem, "previousSibling");
3075},
3076nextUntil: function (elem, i, until) {
3077return dir(elem, "nextSibling", until);
3078},
3079prevUntil: function (elem, i, until) {
3080return dir(elem, "previousSibling", until);
3081},
3082siblings: function (elem) {
3083return siblings((elem.parentNode || {}).firstChild, elem);
3084},
3085children: function (elem) {
3086return siblings(elem.firstChild);
3087},
3088contents: function (elem) {
3089return elem.contentDocument || jQuery.merge([], elem.childNodes);
3090}
3091}, function (name, fn) {
3092jQuery.fn[name] = function (until, selector) {
3093var matched = jQuery.map(this, fn, until);
3094
3095if (name.slice(-5) !== "Until") {
3096selector = until;
3097}
3098
3099if (selector && typeof selector === "string") {
3100matched = jQuery.filter(selector, matched);
3101}
3102
3103if (this.length > 1) {
3104
3105// Remove duplicates
3106if (!guaranteedUnique[name]) {
3107jQuery.uniqueSort(matched);
3108}
3109
3110// Reverse order for parents* and prev-derivatives
3111if (rparentsprev.test(name)) {
3112matched.reverse();
3113}
3114}
3115
3116return this.pushStack(matched);
3117};
3118});
3119var rnotwhite = (/\S+/g);
3120
3121
3122
3123// Convert String-formatted options into Object-formatted ones
3124function createOptions(options) {
3125var object = {};
3126jQuery.each(options.match(rnotwhite) || [], function (_, flag) {
3127object[flag] = true;
3128});
3129return object;
3130}
3131
3132/*
3133 * Create a callback list using the following parameters:
3134 *
3135 *options: an optional list of space-separated options that will change how
3136 *the callback list behaves or a more traditional option object
3137 *
3138 * By default a callback list will act like an event callback list and can be
3139 * "fired" multiple times.
3140 *
3141 * Possible options:
3142 *
3143 *once:will ensure the callback list can only be fired once (like a Deferred)
3144 *
3145 *memory:will keep track of previous values and will call any callback added
3146 *after the list has been fired right away with the latest "memorized"
3147 *values (like a Deferred)
3148 *
3149 *unique:will ensure a callback can only be added once (no duplicate in the list)
3150 *
3151 *stopOnFalse:interrupt callings when a callback returns false
3152 *
3153 */
3154jQuery.Callbacks = function (options) {
3155
3156// Convert options from String-formatted to Object-formatted if needed
3157// (we check in cache first)
3158options = typeof options === "string" ?
3159createOptions(options) :
3160jQuery.extend({}, options);
3161
3162var // Flag to know if list is currently firing
3163firing,
3164
3165// Last fire value for non-forgettable lists
3166memory,
3167
3168// Flag to know if list was already fired
3169fired,
3170
3171// Flag to prevent firing
3172locked,
3173
3174// Actual callback list
3175list = [],
3176
3177// Queue of execution data for repeatable lists
3178queue = [],
3179
3180// Index of currently firing callback (modified by add/remove as needed)
3181firingIndex = -1,
3182
3183// Fire callbacks
3184fire = function () {
3185
3186// Enforce single-firing
3187locked = options.once;
3188
3189// Execute callbacks for all pending executions,
3190// respecting firingIndex overrides and runtime changes
3191fired = firing = true;
3192for (; queue.length; firingIndex = -1) {
3193memory = queue.shift();
3194while (++firingIndex < list.length) {
3195
3196// Run callback and check for early termination
3197if (list[firingIndex].apply(memory[0], memory[1]) === false &&
3198options.stopOnFalse) {
3199
3200// Jump to end and forget the data so .add doesn't re-fire
3201firingIndex = list.length;
3202memory = false;
3203}
3204}
3205}
3206
3207// Forget the data if we're done with it
3208if (!options.memory) {
3209memory = false;
3210}
3211
3212firing = false;
3213
3214// Clean up if we're done firing for good
3215if (locked) {
3216
3217// Keep an empty list if we have data for future add calls
3218if (memory) {
3219list = [];
3220
3221// Otherwise, this object is spent
3222} else {
3223list = "";
3224}
3225}
3226},
3227
3228// Actual Callbacks object
3229self = {
3230
3231// Add a callback or a collection of callbacks to the list
3232add: function () {
3233if (list) {
3234
3235// If we have memory from a past run, we should fire after adding
3236if (memory && !firing) {
3237firingIndex = list.length - 1;
3238queue.push(memory);
3239}
3240
3241(function add(args) {
3242jQuery.each(args, function (_, arg) {
3243if (jQuery.isFunction(arg)) {
3244if (!options.unique || !self.has(arg)) {
3245list.push(arg);
3246}
3247} else if (arg && arg.length && jQuery.type(arg) !== "string") {
3248
3249// Inspect recursively
3250add(arg);
3251}
3252});
3253})(arguments);
3254
3255if (memory && !firing) {
3256fire();
3257}
3258}
3259return this;
3260},
3261
3262// Remove a callback from the list
3263remove: function () {
3264jQuery.each(arguments, function (_, arg) {
3265var index;
3266while ((index = jQuery.inArray(arg, list, index)) > -1) {
3267list.splice(index, 1);
3268
3269// Handle firing indexes
3270if (index <= firingIndex) {
3271firingIndex--;
3272}
3273}
3274});
3275return this;
3276},
3277
3278// Check if a given callback is in the list.
3279// If no argument is given, return whether or not list has callbacks attached.
3280has: function (fn) {
3281return fn ?
3282jQuery.inArray(fn, list) > -1 :
3283list.length > 0;
vendor: 49,745 bytes, lines 3284-5319
3284},
3285
3286// Remove all callbacks from the list
3287empty: function () {
3288if (list) {
3289list = [];
3290}
3291return this;
3292},
3293
3294// Disable .fire and .add
3295// Abort any current/pending executions
3296// Clear all callbacks and values
3297disable: function () {
3298locked = queue = [];
3299list = memory = "";
3300return this;
3301},
3302disabled: function () {
3303return !list;
3304},
3305
3306// Disable .fire
3307// Also disable .add unless we have memory (since it would have no effect)
3308// Abort any pending executions
3309lock: function () {
3310locked = queue = [];
3311if (!memory) {
3312list = memory = "";
3313}
3314return this;
3315},
3316locked: function () {
3317return !!locked;
3318},
3319
3320// Call all callbacks with the given context and arguments
3321fireWith: function (context, args) {
3322if (!locked) {
3323args = args || [];
3324args = [context, args.slice ? args.slice() : args];
3325queue.push(args);
3326if (!firing) {
3327fire();
3328}
3329}
3330return this;
3331},
3332
3333// Call all the callbacks with the given arguments
3334fire: function () {
3335self.fireWith(this, arguments);
3336return this;
3337},
3338
3339// To know if the callbacks have already been called at least once
3340fired: function () {
3341return !!fired;
3342}
3343};
3344
3345return self;
3346};
3347
3348
3349jQuery.extend({
3350
3351Deferred: function (func) {
3352var tuples = [
3353
3354// action, add listener, listener list, final state
3355["resolve", "done", jQuery.Callbacks("once memory"), "resolved"],
3356["reject", "fail", jQuery.Callbacks("once memory"), "rejected"],
3357["notify", "progress", jQuery.Callbacks("memory")]
3358],
3359state = "pending",
3360promise = {
3361state: function () {
3362return state;
3363},
3364always: function () {
3365deferred.done(arguments).fail(arguments);
3366return this;
3367},
3368then: function ( /* fnDone, fnFail, fnProgress */) {
3369var fns = arguments;
3370return jQuery.Deferred(function (newDefer) {
3371jQuery.each(tuples, function (i, tuple) {
3372var fn = jQuery.isFunction(fns[i]) && fns[i];
3373
3374// deferred[ done | fail | progress ] for forwarding actions to newDefer
3375deferred[tuple[1]](function () {
3376var returned = fn && fn.apply(this, arguments);
3377if (returned && jQuery.isFunction(returned.promise)) {
3378returned.promise()
3379.progress(newDefer.notify)
3380.done(newDefer.resolve)
3381.fail(newDefer.reject);
3382} else {
3383newDefer[tuple[0] + "With"](
3384this === promise ? newDefer.promise() : this,
3385fn ? [returned] : arguments
3386);
3387}
3388});
3389});
3390fns = null;
3391}).promise();
3392},
3393
3394// Get a promise for this deferred
3395// If obj is provided, the promise aspect is added to the object
3396promise: function (obj) {
3397return obj != null ? jQuery.extend(obj, promise) : promise;
3398}
3399},
3400deferred = {};
3401
3402// Keep pipe for back-compat
3403promise.pipe = promise.then;
3404
3405// Add list-specific methods
3406jQuery.each(tuples, function (i, tuple) {
3407var list = tuple[2],
3408stateString = tuple[3];
3409
3410// promise[ done | fail | progress ] = list.add
3411promise[tuple[1]] = list.add;
3412
3413// Handle state
3414if (stateString) {
3415list.add(function () {
3416
3417// state = [ resolved | rejected ]
3418state = stateString;
3419
3420// [ reject_list | resolve_list ].disable; progress_list.lock
3421}, tuples[i ^ 1][2].disable, tuples[2][2].lock);
3422}
3423
3424// deferred[ resolve | reject | notify ]
3425deferred[tuple[0]] = function () {
3426deferred[tuple[0] + "With"](this === deferred ? promise : this, arguments);
3427return this;
3428};
3429deferred[tuple[0] + "With"] = list.fireWith;
3430});
3431
3432// Make the deferred a promise
3433promise.promise(deferred);
3434
3435// Call given func if any
3436if (func) {
3437func.call(deferred, deferred);
3438}
3439
3440// All done!
3441return deferred;
3442},
3443
3444// Deferred helper
3445when: function (subordinate /* , ..., subordinateN */) {
3446var i = 0,
3447resolveValues = slice.call(arguments),
3448length = resolveValues.length,
3449
3450// the count of uncompleted subordinates
3451remaining = length !== 1 ||
3452(subordinate && jQuery.isFunction(subordinate.promise)) ? length : 0,
3453
3454// the master Deferred.
3455// If resolveValues consist of only a single Deferred, just use that.
3456deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
3457
3458// Update function for both resolve and progress values
3459updateFunc = function (i, contexts, values) {
3460return function (value) {
3461contexts[i] = this;
3462values[i] = arguments.length > 1 ? slice.call(arguments) : value;
3463if (values === progressValues) {
3464deferred.notifyWith(contexts, values);
3465} else if (!(--remaining)) {
3466deferred.resolveWith(contexts, values);
3467}
3468};
3469},
3470
3471progressValues, progressContexts, resolveContexts;
3472
3473// Add listeners to Deferred subordinates; treat others as resolved
3474if (length > 1) {
3475progressValues = new Array(length);
3476progressContexts = new Array(length);
3477resolveContexts = new Array(length);
3478for (; i < length; i++) {
3479if (resolveValues[i] && jQuery.isFunction(resolveValues[i].promise)) {
3480resolveValues[i].promise()
3481.progress(updateFunc(i, progressContexts, progressValues))
3482.done(updateFunc(i, resolveContexts, resolveValues))
3483.fail(deferred.reject);
3484} else {
3485--remaining;
3486}
3487}
3488}
3489
3490// If we're not waiting on anything, resolve the master
3491if (!remaining) {
3492deferred.resolveWith(resolveContexts, resolveValues);
3493}
3494
3495return deferred.promise();
3496}
3497});
3498
3499
3500// The deferred used on DOM ready
3501var readyList;
3502
3503jQuery.fn.ready = function (fn) {
3504
3505// Add the callback
3506jQuery.ready.promise().done(fn);
3507
3508return this;
3509};
3510
3511jQuery.extend({
3512
3513// Is the DOM ready to be used? Set to true once it occurs.
3514isReady: false,
3515
3516// A counter to track how many items to wait for before
3517// the ready event fires. See #6781
3518readyWait: 1,
3519
3520// Hold (or release) the ready event
3521holdReady: function (hold) {
3522if (hold) {
3523jQuery.readyWait++;
3524} else {
3525jQuery.ready(true);
3526}
3527},
3528
3529// Handle when the DOM is ready
3530ready: function (wait) {
3531
3532// Abort if there are pending holds or we're already ready
3533if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
3534return;
3535}
3536
3537// Remember that the DOM is ready
3538jQuery.isReady = true;
3539
3540// If a normal DOM Ready event fired, decrement, and wait if need be
3541if (wait !== true && --jQuery.readyWait > 0) {
3542return;
3543}
3544
3545// If there are functions bound, to execute
3546readyList.resolveWith(document, [jQuery]);
3547
3548// Trigger any bound ready events
3549if (jQuery.fn.triggerHandler) {
3550jQuery(document).triggerHandler("ready");
3551jQuery(document).off("ready");
3552}
3553}
3554});
3555
3556/**
3557 * The ready event handler and self cleanup method
3558 */
3559function completed() {
3560document.removeEventListener("DOMContentLoaded", completed);
3561window.removeEventListener("load", completed);
3562jQuery.ready();
3563}
3564
3565jQuery.ready.promise = function (obj) {
3566if (!readyList) {
3567
3568readyList = jQuery.Deferred();
3569
3570// Catch cases where $(document).ready() is called
3571// after the browser event has already occurred.
3572// Support: IE9-10 only
3573// Older IE sometimes signals "interactive" too soon
3574if (document.readyState === "complete" ||
3575(document.readyState !== "loading" && !document.documentElement.doScroll)) {
3576
3577// Handle it asynchronously to allow scripts the opportunity to delay ready
3578window.setTimeout(jQuery.ready);
3579
3580} else {
3581
3582// Use the handy event callback
3583document.addEventListener("DOMContentLoaded", completed);
3584
3585// A fallback to window.onload, that will always work
3586window.addEventListener("load", completed);
3587}
3588}
3589return readyList.promise(obj);
3590};
3591
3592// Kick off the DOM ready check even if the user does not
3593jQuery.ready.promise();
3594
3595
3596
3597
3598// Multifunctional method to get and set values of a collection
3599// The value/s can optionally be executed if it's a function
3600var access = function (elems, fn, key, value, chainable, emptyGet, raw) {
3601var i = 0,
3602len = elems.length,
3603bulk = key == null;
3604
3605// Sets many values
3606if (jQuery.type(key) === "object") {
3607chainable = true;
3608for (i in key) {
3609access(elems, fn, i, key[i], true, emptyGet, raw);
3610}
3611
3612// Sets one value
3613} else if (value !== undefined) {
3614chainable = true;
3615
3616if (!jQuery.isFunction(value)) {
3617raw = true;
3618}
3619
3620if (bulk) {
3621
3622// Bulk operations run against the entire set
3623if (raw) {
3624fn.call(elems, value);
3625fn = null;
3626
3627// ...except when executing function values
3628} else {
3629bulk = fn;
3630fn = function (elem, key, value) {
3631return bulk.call(jQuery(elem), value);
3632};
3633}
3634}
3635
3636if (fn) {
3637for (; i < len; i++) {
3638fn(
3639elems[i], key, raw ?
3640value :
3641value.call(elems[i], i, fn(elems[i], key))
3642);
3643}
3644}
3645}
3646
3647return chainable ?
3648elems :
3649
3650// Gets
3651bulk ?
3652fn.call(elems) :
3653len ? fn(elems[0], key) : emptyGet;
3654};
3655var acceptData = function (owner) {
3656
3657// Accepts only:
3658//  - Node
3659//    - Node.ELEMENT_NODE
3660//    - Node.DOCUMENT_NODE
3661//  - Object
3662//    - Any
3663/* jshint -W018 */
3664return owner.nodeType === 1 || owner.nodeType === 9 || !(+owner.nodeType);
3665};
3666
3667
3668
3669
3670function Data() {
3671this.expando = jQuery.expando + Data.uid++;
3672}
3673
3674Data.uid = 1;
3675
3676Data.prototype = {
3677
3678register: function (owner, initial) {
3679var value = initial || {};
3680
3681// If it is a node unlikely to be stringify-ed or looped over
3682// use plain assignment
3683if (owner.nodeType) {
3684owner[this.expando] = value;
3685
3686// Otherwise secure it in a non-enumerable, non-writable property
3687// configurability must be true to allow the property to be
3688// deleted with the delete operator
3689} else {
3690Object.defineProperty(owner, this.expando, {
3691value: value,
3692writable: true,
3693configurable: true
3694});
3695}
3696return owner[this.expando];
3697},
3698cache: function (owner) {
3699
3700// We can accept data for non-element nodes in modern browsers,
3701// but we should not, see #8335.
3702// Always return an empty object.
3703if (!acceptData(owner)) {
3704return {};
3705}
3706
3707// Check if the owner object already has a cache
3708var value = owner[this.expando];
3709
3710// If not, create one
3711if (!value) {
3712value = {};
3713
3714// We can accept data for non-element nodes in modern browsers,
3715// but we should not, see #8335.
3716// Always return an empty object.
3717if (acceptData(owner)) {
3718
3719// If it is a node unlikely to be stringify-ed or looped over
3720// use plain assignment
3721if (owner.nodeType) {
3722owner[this.expando] = value;
3723
3724// Otherwise secure it in a non-enumerable property
3725// configurable must be true to allow the property to be
3726// deleted when data is removed
3727} else {
3728Object.defineProperty(owner, this.expando, {
3729value: value,
3730configurable: true
3731});
3732}
3733}
3734}
3735
3736return value;
3737},
3738set: function (owner, data, value) {
3739var prop,
3740cache = this.cache(owner);
3741
3742// Handle: [ owner, key, value ] args
3743if (typeof data === "string") {
3744cache[data] = value;
3745
3746// Handle: [ owner, { properties } ] args
3747} else {
3748
3749// Copy the properties one-by-one to the cache object
3750for (prop in data) {
3751cache[prop] = data[prop];
3752}
3753}
3754return cache;
3755},
3756get: function (owner, key) {
3757return key === undefined ?
3758this.cache(owner) :
3759owner[this.expando] && owner[this.expando][key];
3760},
3761access: function (owner, key, value) {
3762var stored;
3763
3764// In cases where either:
3765//
3766//   1. No key was specified
3767//   2. A string key was specified, but no value provided
3768//
3769// Take the "read" path and allow the get method to determine
3770// which value to return, respectively either:
3771//
3772//   1. The entire cache object
3773//   2. The data stored at the key
3774//
3775if (key === undefined ||
3776((key && typeof key === "string") && value === undefined)) {
3777
3778stored = this.get(owner, key);
3779
3780return stored !== undefined ?
3781stored : this.get(owner, jQuery.camelCase(key));
3782}
3783
3784// When the key is not a string, or both a key and value
3785// are specified, set or extend (existing objects) with either:
3786//
3787//   1. An object of properties
3788//   2. A key and value
3789//
3790this.set(owner, key, value);
3791
3792// Since the "set" path can have two possible entry points
3793// return the expected data based on which path was taken[*]
3794return value !== undefined ? value : key;
3795},
3796remove: function (owner, key) {
3797var i, name, camel,
3798cache = owner[this.expando];
3799
3800if (cache === undefined) {
3801return;
3802}
3803
3804if (key === undefined) {
3805this.register(owner);
3806
3807} else {
3808
3809// Support array or space separated string of keys
3810if (jQuery.isArray(key)) {
3811
3812// If "name" is an array of keys...
3813// When data is initially created, via ("key", "val") signature,
3814// keys will be converted to camelCase.
3815// Since there is no way to tell _how_ a key was added, remove
3816// both plain key and camelCase key. #12786
3817// This will only penalize the array argument path.
3818name = key.concat(key.map(jQuery.camelCase));
3819} else {
3820camel = jQuery.camelCase(key);
3821
3822// Try the string as a key before any manipulation
3823if (key in cache) {
3824name = [key, camel];
3825} else {
3826
3827// If a key with the spaces exists, use it.
3828// Otherwise, create an array by matching non-whitespace
3829name = camel;
3830name = name in cache ?
3831[name] : (name.match(rnotwhite) || []);
3832}
3833}
3834
3835i = name.length;
3836
3837while (i--) {
3838delete cache[name[i]];
3839}
3840}
3841
3842// Remove the expando if there's no more data
3843if (key === undefined || jQuery.isEmptyObject(cache)) {
3844
3845// Support: Chrome <= 35-45+
3846// Webkit & Blink performance suffers when deleting properties
3847// from DOM nodes, so set to undefined instead
3848// https://code.google.com/p/chromium/issues/detail?id=378607
3849if (owner.nodeType) {
3850owner[this.expando] = undefined;
3851} else {
3852delete owner[this.expando];
3853}
3854}
3855},
3856hasData: function (owner) {
3857var cache = owner[this.expando];
3858return cache !== undefined && !jQuery.isEmptyObject(cache);
3859}
3860};
3861var dataPriv = new Data();
3862
3863var dataUser = new Data();
3864
3865
3866
3867//Implementation Summary
3868//
3869//1. Enforce API surface and semantic compatibility with 1.9.x branch
3870//2. Improve the module's maintainability by reducing the storage
3871//paths to a single mechanism.
3872//3. Use the same single mechanism to support "private" and "user" data.
3873//4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
3874//5. Avoid exposing implementation details on user objects (eg. expando properties)
3875//6. Provide a clear path for implementation upgrade to WeakMap in 2014
3876
3877var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
3878rmultiDash = /[A-Z]/g;
3879
3880function dataAttr(elem, key, data) {
3881var name;
3882
3883// If nothing was found internally, try to fetch any
3884// data from the HTML5 data-* attribute
3885if (data === undefined && elem.nodeType === 1) {
3886name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
3887data = elem.getAttribute(name);
3888
3889if (typeof data === "string") {
3890try {
3891data = data === "true" ? true :
3892data === "false" ? false :
3893data === "null" ? null :
3894
3895// Only convert to a number if it doesn't change the string
3896+data + "" === data ? +data :
3897rbrace.test(data) ? jQuery.parseJSON(data) :
3898data;
3899} catch (e) { }
3900
3901// Make sure we set the data so it isn't changed later
3902dataUser.set(elem, key, data);
3903} else {
3904data = undefined;
3905}
3906}
3907return data;
3908}
3909
3910jQuery.extend({
3911hasData: function (elem) {
3912return dataUser.hasData(elem) || dataPriv.hasData(elem);
3913},
3914
3915data: function (elem, name, data) {
3916return dataUser.access(elem, name, data);
3917},
3918
3919removeData: function (elem, name) {
3920dataUser.remove(elem, name);
3921},
3922
3923// TODO: Now that all calls to _data and _removeData have been replaced
3924// with direct calls to dataPriv methods, these can be deprecated.
3925_data: function (elem, name, data) {
3926return dataPriv.access(elem, name, data);
3927},
3928
3929_removeData: function (elem, name) {
3930dataPriv.remove(elem, name);
3931}
3932});
3933
3934jQuery.fn.extend({
3935data: function (key, value) {
3936var i, name, data,
3937elem = this[0],
3938attrs = elem && elem.attributes;
3939
3940// Gets all values
3941if (key === undefined) {
3942if (this.length) {
3943data = dataUser.get(elem);
3944
3945if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
3946i = attrs.length;
3947while (i--) {
3948
3949// Support: IE11+
3950// The attrs elements can be null (#14894)
3951if (attrs[i]) {
3952name = attrs[i].name;
3953if (name.indexOf("data-") === 0) {
3954name = jQuery.camelCase(name.slice(5));
3955dataAttr(elem, name, data[name]);
3956}
3957}
3958}
3959dataPriv.set(elem, "hasDataAttrs", true);
3960}
3961}
3962
3963return data;
3964}
3965
3966// Sets multiple values
3967if (typeof key === "object") {
3968return this.each(function () {
3969dataUser.set(this, key);
3970});
3971}
3972
3973return access(this, function (value) {
3974var data, camelKey;
3975
3976// The calling jQuery object (element matches) is not empty
3977// (and therefore has an element appears at this[ 0 ]) and the
3978// `value` parameter was not undefined. An empty jQuery object
3979// will result in `undefined` for elem = this[ 0 ] which will
3980// throw an exception if an attempt to read a data cache is made.
3981if (elem && value === undefined) {
3982
3983// Attempt to get data from the cache
3984// with the key as-is
3985data = dataUser.get(elem, key) ||
3986
3987// Try to find dashed key if it exists (gh-2779)
3988// This is for 2.2.x only
3989dataUser.get(elem, key.replace(rmultiDash, "-$&").toLowerCase());
3990
3991if (data !== undefined) {
3992return data;
3993}
3994
3995camelKey = jQuery.camelCase(key);
3996
3997// Attempt to get data from the cache
3998// with the key camelized
3999data = dataUser.get(elem, camelKey);
4000if (data !== undefined) {
4001return data;
4002}
4003
4004// Attempt to "discover" the data in
4005// HTML5 custom data-* attrs
4006data = dataAttr(elem, camelKey, undefined);
4007if (data !== undefined) {
4008return data;
4009}
4010
4011// We tried really hard, but the data doesn't exist.
4012return;
4013}
4014
4015// Set the data...
4016camelKey = jQuery.camelCase(key);
4017this.each(function () {
4018
4019// First, attempt to store a copy or reference of any
4020// data that might've been store with a camelCased key.
4021var data = dataUser.get(this, camelKey);
4022
4023// For HTML5 data-* attribute interop, we have to
4024// store property names with dashes in a camelCase form.
4025// This might not apply to all properties...*
4026dataUser.set(this, camelKey, value);
4027
4028// *... In the case of properties that might _actually_
4029// have dashes, we need to also store a copy of that
4030// unchanged property.
4031if (key.indexOf("-") > -1 && data !== undefined) {
4032dataUser.set(this, key, value);
4033}
4034});
4035}, null, value, arguments.length > 1, null, true);
4036},
4037
4038removeData: function (key) {
4039return this.each(function () {
4040dataUser.remove(this, key);
4041});
4042}
4043});
4044
4045
4046jQuery.extend({
4047queue: function (elem, type, data) {
4048var queue;
4049
4050if (elem) {
4051type = (type || "fx") + "queue";
4052queue = dataPriv.get(elem, type);
4053
4054// Speed up dequeue by getting out quickly if this is just a lookup
4055if (data) {
4056if (!queue || jQuery.isArray(data)) {
4057queue = dataPriv.access(elem, type, jQuery.makeArray(data));
4058} else {
4059queue.push(data);
4060}
4061}
4062return queue || [];
4063}
4064},
4065
4066dequeue: function (elem, type) {
4067type = type || "fx";
4068
4069var queue = jQuery.queue(elem, type),
4070startLength = queue.length,
4071fn = queue.shift(),
4072hooks = jQuery._queueHooks(elem, type),
4073next = function () {
4074jQuery.dequeue(elem, type);
4075};
4076
4077// If the fx queue is dequeued, always remove the progress sentinel
4078if (fn === "inprogress") {
4079fn = queue.shift();
4080startLength--;
4081}
4082
4083if (fn) {
4084
4085// Add a progress sentinel to prevent the fx queue from being
4086// automatically dequeued
4087if (type === "fx") {
4088queue.unshift("inprogress");
4089}
4090
4091// Clear up the last queue stop function
4092delete hooks.stop;
4093fn.call(elem, next, hooks);
4094}
4095
4096if (!startLength && hooks) {
4097hooks.empty.fire();
4098}
4099},
4100
4101// Not public - generate a queueHooks object, or return the current one
4102_queueHooks: function (elem, type) {
4103var key = type + "queueHooks";
4104return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
4105empty: jQuery.Callbacks("once memory").add(function () {
4106dataPriv.remove(elem, [type + "queue", key]);
4107})
4108});
4109}
4110});
4111
4112jQuery.fn.extend({
4113queue: function (type, data) {
4114var setter = 2;
4115
4116if (typeof type !== "string") {
4117data = type;
4118type = "fx";
4119setter--;
4120}
4121
4122if (arguments.length < setter) {
4123return jQuery.queue(this[0], type);
4124}
4125
4126return data === undefined ?
4127this :
4128this.each(function () {
4129var queue = jQuery.queue(this, type, data);
4130
4131// Ensure a hooks for this queue
4132jQuery._queueHooks(this, type);
4133
4134if (type === "fx" && queue[0] !== "inprogress") {
4135jQuery.dequeue(this, type);
4136}
4137});
4138},
4139dequeue: function (type) {
4140return this.each(function () {
4141jQuery.dequeue(this, type);
4142});
4143},
4144clearQueue: function (type) {
4145return this.queue(type || "fx", []);
4146},
4147
4148// Get a promise resolved when queues of a certain type
4149// are emptied (fx is the type by default)
4150promise: function (type, obj) {
4151var tmp,
4152count = 1,
4153defer = jQuery.Deferred(),
4154elements = this,
4155i = this.length,
4156resolve = function () {
4157if (!(--count)) {
4158defer.resolveWith(elements, [elements]);
4159}
4160};
4161
4162if (typeof type !== "string") {
4163obj = type;
4164type = undefined;
4165}
4166type = type || "fx";
4167
4168while (i--) {
4169tmp = dataPriv.get(elements[i], type + "queueHooks");
4170if (tmp && tmp.empty) {
4171count++;
4172tmp.empty.add(resolve);
4173}
4174}
4175resolve();
4176return defer.promise(obj);
4177}
4178});
4179var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
4180
4181var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
4182
4183
4184var cssExpand = ["Top", "Right", "Bottom", "Left"];
4185
4186var isHidden = function (elem, el) {
4187
4188// isHidden might be called from jQuery#filter function;
4189// in that case, element will be second argument
4190elem = el || elem;
4191return jQuery.css(elem, "display") === "none" ||
4192!jQuery.contains(elem.ownerDocument, elem);
4193};
4194
4195
4196
4197function adjustCSS(elem, prop, valueParts, tween) {
4198var adjusted,
4199scale = 1,
4200maxIterations = 20,
4201currentValue = tween ?
4202function () { return tween.cur(); } :
4203function () { return jQuery.css(elem, prop, ""); },
4204initial = currentValue(),
4205unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"),
4206
4207// Starting value computation is required for potential unit mismatches
4208initialInUnit = (jQuery.cssNumber[prop] || unit !== "px" && +initial) &&
4209rcssNum.exec(jQuery.css(elem, prop));
4210
4211if (initialInUnit && initialInUnit[3] !== unit) {
4212
4213// Trust units reported by jQuery.css
4214unit = unit || initialInUnit[3];
4215
4216// Make sure we update the tween properties later on
4217valueParts = valueParts || [];
4218
4219// Iteratively approximate from a nonzero starting point
4220initialInUnit = +initial || 1;
4221
4222do {
4223
4224// If previous iteration zeroed out, double until we get *something*.
4225// Use string for doubling so we don't accidentally see scale as unchanged below
4226scale = scale || ".5";
4227
4228// Adjust and apply
4229initialInUnit = initialInUnit / scale;
4230jQuery.style(elem, prop, initialInUnit + unit);
4231
4232// Update scale, tolerating zero or NaN from tween.cur()
4233// Break the loop if scale is unchanged or perfect, or if we've just had enough.
4234} while (
4235scale !== (scale = currentValue() / initial) && scale !== 1 && --maxIterations
4236);
4237}
4238
4239if (valueParts) {
4240initialInUnit = +initialInUnit || +initial || 0;
4241
4242// Apply relative offset (+=/-=) if specified
4243adjusted = valueParts[1] ?
4244initialInUnit + (valueParts[1] + 1) * valueParts[2] :
4245+valueParts[2];
4246if (tween) {
4247tween.unit = unit;
4248tween.start = initialInUnit;
4249tween.end = adjusted;
4250}
4251}
4252return adjusted;
4253}
4254var rcheckableType = (/^(?:checkbox|radio)$/i);
4255
4256var rtagName = (/<([\w:-]+)/);
4257
4258var rscriptType = (/^$|\/(?:java|ecma)script/i);
4259
4260
4261
4262// We have to close these tags to support XHTML (#13200)
4263var wrapMap = {
4264
4265// Support: IE9
4266option: [1, "<select multiple='multiple'>", "</select>"],
4267
4268// XHTML parsers do not magically insert elements in the
4269// same way that tag soup parsers do. So we cannot shorten
4270// this by omitting <tbody> or other required elements.
4271thead: [1, "<table>", "</table>"],
4272col: [2, "<table><colgroup>", "</colgroup></table>"],
4273tr: [2, "<table><tbody>", "</tbody></table>"],
4274td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
4275
4276_default: [0, "", ""]
4277};
4278
4279// Support: IE9
4280wrapMap.optgroup = wrapMap.option;
4281
4282wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4283wrapMap.th = wrapMap.td;
4284
4285
4286function getAll(context, tag) {
4287
4288// Support: IE9-11+
4289// Use typeof to avoid zero-argument method invocation on host objects (#15151)
4290var ret = typeof context.getElementsByTagName !== "undefined" ?
4291context.getElementsByTagName(tag || "*") :
4292typeof context.querySelectorAll !== "undefined" ?
4293context.querySelectorAll(tag || "*") :
4294[];
4295
4296return tag === undefined || tag && jQuery.nodeName(context, tag) ?
4297jQuery.merge([context], ret) :
4298ret;
4299}
4300
4301
4302// Mark scripts as having already been evaluated
4303function setGlobalEval(elems, refElements) {
4304var i = 0,
4305l = elems.length;
4306
4307for (; i < l; i++) {
4308dataPriv.set(
4309elems[i],
4310"globalEval",
4311!refElements || dataPriv.get(refElements[i], "globalEval")
4312);
4313}
4314}
4315
4316
4317var rhtml = /<|&#?\w+;/;
4318
4319function buildFragment(elems, context, scripts, selection, ignored) {
4320var elem, tmp, tag, wrap, contains, j,
4321fragment = context.createDocumentFragment(),
4322nodes = [],
4323i = 0,
4324l = elems.length;
4325
4326for (; i < l; i++) {
4327elem = elems[i];
4328
4329if (elem || elem === 0) {
4330
4331// Add nodes directly
4332if (jQuery.type(elem) === "object") {
4333
4334// Support: Android<4.1, PhantomJS<2
4335// push.apply(_, arraylike) throws on ancient WebKit
4336jQuery.merge(nodes, elem.nodeType ? [elem] : elem);
4337
4338// Convert non-html into a text node
4339} else if (!rhtml.test(elem)) {
4340nodes.push(context.createTextNode(elem));
4341
4342// Convert html into DOM nodes
4343} else {
4344tmp = tmp || fragment.appendChild(context.createElement("div"));
4345
4346// Deserialize a standard representation
4347tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
4348wrap = wrapMap[tag] || wrapMap._default;
4349tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];
4350
4351// Descend through wrappers to the right content
4352j = wrap[0];
4353while (j--) {
4354tmp = tmp.lastChild;
4355}
4356
4357// Support: Android<4.1, PhantomJS<2
4358// push.apply(_, arraylike) throws on ancient WebKit
4359jQuery.merge(nodes, tmp.childNodes);
4360
4361// Remember the top-level container
4362tmp = fragment.firstChild;
4363
4364// Ensure the created nodes are orphaned (#12392)
4365tmp.textContent = "";
4366}
4367}
4368}
4369
4370// Remove wrapper from fragment
4371fragment.textContent = "";
4372
4373i = 0;
4374while ((elem = nodes[i++])) {
4375
4376// Skip elements already in the context collection (trac-4087)
4377if (selection && jQuery.inArray(elem, selection) > -1) {
4378if (ignored) {
4379ignored.push(elem);
4380}
4381continue;
4382}
4383
4384contains = jQuery.contains(elem.ownerDocument, elem);
4385
4386// Append to fragment
4387tmp = getAll(fragment.appendChild(elem), "script");
4388
4389// Preserve script evaluation history
4390if (contains) {
4391setGlobalEval(tmp);
4392}
4393
4394// Capture executables
4395if (scripts) {
4396j = 0;
4397while ((elem = tmp[j++])) {
4398if (rscriptType.test(elem.type || "")) {
4399scripts.push(elem);
4400}
4401}
4402}
4403}
4404
4405return fragment;
4406}
4407
4408
4409(function () {
4410var fragment = document.createDocumentFragment(),
4411div = fragment.appendChild(document.createElement("div")),
4412input = document.createElement("input");
4413
4414// Support: Android 4.0-4.3, Safari<=5.1
4415// Check state lost if the name is set (#11217)
4416// Support: Windows Web Apps (WWA)
4417// `name` and `type` must use .setAttribute for WWA (#14901)
4418input.setAttribute("type", "radio");
4419input.setAttribute("checked", "checked");
4420input.setAttribute("name", "t");
4421
4422div.appendChild(input);
4423
4424// Support: Safari<=5.1, Android<4.2
4425// Older WebKit doesn't clone checked state correctly in fragments
4426support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
4427
4428// Support: IE<=11+
4429// Make sure textarea (and checkbox) defaultValue is properly cloned
4430div.innerHTML = "<textarea>x</textarea>";
4431support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
4432})();
4433
4434
4435var
4436rkeyEvent = /^key/,
4437rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
4438rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
4439
4440function returnTrue() {
4441return true;
4442}
4443
4444function returnFalse() {
4445return false;
4446}
4447
4448// Support: IE9
4449// See #13393 for more info
4450function safeActiveElement() {
4451try {
4452return document.activeElement;
4453} catch (err) { }
4454}
4455
4456function on(elem, types, selector, data, fn, one) {
4457var origFn, type;
4458
4459// Types can be a map of types/handlers
4460if (typeof types === "object") {
4461
4462// ( types-Object, selector, data )
4463if (typeof selector !== "string") {
4464
4465// ( types-Object, data )
4466data = data || selector;
4467selector = undefined;
4468}
4469for (type in types) {
4470on(elem, type, selector, data, types[type], one);
4471}
4472return elem;
4473}
4474
4475if (data == null && fn == null) {
4476
4477// ( types, fn )
4478fn = selector;
4479data = selector = undefined;
4480} else if (fn == null) {
4481if (typeof selector === "string") {
4482
4483// ( types, selector, fn )
4484fn = data;
4485data = undefined;
4486} else {
4487
4488// ( types, data, fn )
4489fn = data;
4490data = selector;
4491selector = undefined;
4492}
4493}
4494if (fn === false) {
4495fn = returnFalse;
4496} else if (!fn) {
4497return elem;
4498}
4499
4500if (one === 1) {
4501origFn = fn;
4502fn = function (event) {
4503
4504// Can use an empty set, since event contains the info
4505jQuery().off(event);
4506return origFn.apply(this, arguments);
4507};
4508
4509// Use same guid so caller can remove using origFn
4510fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);
4511}
4512return elem.each(function () {
4513jQuery.event.add(this, types, fn, data, selector);
4514});
4515}
4516
4517/*
4518 * Helper functions for managing events -- not part of the public interface.
4519 * Props to Dean Edwards' addEvent library for many of the ideas.
4520 */
4521jQuery.event = {
4522
4523global: {},
4524
4525add: function (elem, types, handler, data, selector) {
4526
4527var handleObjIn, eventHandle, tmp,
4528events, t, handleObj,
4529special, handlers, type, namespaces, origType,
4530elemData = dataPriv.get(elem);
4531
4532// Don't attach events to noData or text/comment nodes (but allow plain objects)
4533if (!elemData) {
4534return;
4535}
4536
4537// Caller can pass in an object of custom data in lieu of the handler
4538if (handler.handler) {
4539handleObjIn = handler;
4540handler = handleObjIn.handler;
4541selector = handleObjIn.selector;
4542}
4543
4544// Make sure that the handler has a unique ID, used to find/remove it later
4545if (!handler.guid) {
4546handler.guid = jQuery.guid++;
4547}
4548
4549// Init the element's event structure and main handler, if this is the first
4550if (!(events = elemData.events)) {
4551events = elemData.events = {};
4552}
4553if (!(eventHandle = elemData.handle)) {
4554eventHandle = elemData.handle = function (e) {
4555
4556// Discard the second event of a jQuery.event.trigger() and
4557// when an event is called after a page has unloaded
4558return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
4559jQuery.event.dispatch.apply(elem, arguments) : undefined;
4560};
4561}
4562
4563// Handle multiple events separated by a space
4564types = (types || "").match(rnotwhite) || [""];
4565t = types.length;
4566while (t--) {
4567tmp = rtypenamespace.exec(types[t]) || [];
4568type = origType = tmp[1];
4569namespaces = (tmp[2] || "").split(".").sort();
4570
4571// There *must* be a type, no attaching namespace-only handlers
4572if (!type) {
4573continue;
4574}
4575
4576// If event changes its type, use the special event handlers for the changed type
4577special = jQuery.event.special[type] || {};
4578
4579// If selector defined, determine special event api type, otherwise given type
4580type = (selector ? special.delegateType : special.bindType) || type;
4581
4582// Update special based on newly reset type
4583special = jQuery.event.special[type] || {};
4584
4585// handleObj is passed to all event handlers
4586handleObj = jQuery.extend({
4587type: type,
4588origType: origType,
4589data: data,
4590handler: handler,
4591guid: handler.guid,
4592selector: selector,
4593needsContext: selector && jQuery.expr.match.needsContext.test(selector),
4594namespace: namespaces.join(".")
4595}, handleObjIn);
4596
4597// Init the event handler queue if we're the first
4598if (!(handlers = events[type])) {
4599handlers = events[type] = [];
4600handlers.delegateCount = 0;
4601
4602// Only use addEventListener if the special events handler returns false
4603if (!special.setup ||
4604special.setup.call(elem, data, namespaces, eventHandle) === false) {
4605
4606if (elem.addEventListener) {
4607elem.addEventListener(type, eventHandle);
4608}
4609}
4610}
4611
4612if (special.add) {
4613special.add.call(elem, handleObj);
4614
4615if (!handleObj.handler.guid) {
4616handleObj.handler.guid = handler.guid;
4617}
4618}
4619
4620// Add to the element's handler list, delegates in front
4621if (selector) {
4622handlers.splice(handlers.delegateCount++, 0, handleObj);
4623} else {
4624handlers.push(handleObj);
4625}
4626
4627// Keep track of which events have ever been used, for event optimization
4628jQuery.event.global[type] = true;
4629}
4630
4631},
4632
4633// Detach an event or set of events from an element
4634remove: function (elem, types, handler, selector, mappedTypes) {
4635
4636var j, origCount, tmp,
4637events, t, handleObj,
4638special, handlers, type, namespaces, origType,
4639elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
4640
4641if (!elemData || !(events = elemData.events)) {
4642return;
4643}
4644
4645// Once for each type.namespace in types; type may be omitted
4646types = (types || "").match(rnotwhite) || [""];
4647t = types.length;
4648while (t--) {
4649tmp = rtypenamespace.exec(types[t]) || [];
4650type = origType = tmp[1];
4651namespaces = (tmp[2] || "").split(".").sort();
4652
4653// Unbind all events (on this namespace, if provided) for the element
4654if (!type) {
4655for (type in events) {
4656jQuery.event.remove(elem, type + types[t], handler, selector, true);
4657}
4658continue;
4659}
4660
4661special = jQuery.event.special[type] || {};
4662type = (selector ? special.delegateType : special.bindType) || type;
4663handlers = events[type] || [];
4664tmp = tmp[2] &&
4665new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
4666
4667// Remove matching events
4668origCount = j = handlers.length;
4669while (j--) {
4670handleObj = handlers[j];
4671
4672if ((mappedTypes || origType === handleObj.origType) &&
4673(!handler || handler.guid === handleObj.guid) &&
4674(!tmp || tmp.test(handleObj.namespace)) &&
4675(!selector || selector === handleObj.selector ||
4676selector === "**" && handleObj.selector)) {
4677handlers.splice(j, 1);
4678
4679if (handleObj.selector) {
4680handlers.delegateCount--;
4681}
4682if (special.remove) {
4683special.remove.call(elem, handleObj);
4684}
4685}
4686}
4687
4688// Remove generic event handler if we removed something and no more handlers exist
4689// (avoids potential for endless recursion during removal of special event handlers)
4690if (origCount && !handlers.length) {
4691if (!special.teardown ||
4692special.teardown.call(elem, namespaces, elemData.handle) === false) {
4693
4694jQuery.removeEvent(elem, type, elemData.handle);
4695}
4696
4697delete events[type];
4698}
4699}
4700
4701// Remove data and the expando if it's no longer used
4702if (jQuery.isEmptyObject(events)) {
4703dataPriv.remove(elem, "handle events");
4704}
4705},
4706
4707dispatch: function (event) {
4708
4709// Make a writable jQuery.Event from the native event object
4710event = jQuery.event.fix(event);
4711
4712var i, j, ret, matched, handleObj,
4713handlerQueue = [],
4714args = slice.call(arguments),
4715handlers = (dataPriv.get(this, "events") || {})[event.type] || [],
4716special = jQuery.event.special[event.type] || {};
4717
4718// Use the fix-ed jQuery.Event rather than the (read-only) native event
4719args[0] = event;
4720event.delegateTarget = this;
4721
4722// Call the preDispatch hook for the mapped type, and let it bail if desired
4723if (special.preDispatch && special.preDispatch.call(this, event) === false) {
4724return;
4725}
4726
4727// Determine handlers
4728handlerQueue = jQuery.event.handlers.call(this, event, handlers);
4729
4730// Run delegates first; they may want to stop propagation beneath us
4731i = 0;
4732while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
4733event.currentTarget = matched.elem;
4734
4735j = 0;
4736while ((handleObj = matched.handlers[j++]) &&
4737!event.isImmediatePropagationStopped()) {
4738
4739// Triggered event must either 1) have no namespace, or 2) have namespace(s)
4740// a subset or equal to those in the bound event (both can have no namespace).
4741if (!event.rnamespace || event.rnamespace.test(handleObj.namespace)) {
4742
4743event.handleObj = handleObj;
4744event.data = handleObj.data;
4745
4746ret = ((jQuery.event.special[handleObj.origType] || {}).handle ||
4747handleObj.handler).apply(matched.elem, args);
4748
4749if (ret !== undefined) {
4750if ((event.result = ret) === false) {
4751event.preventDefault();
4752event.stopPropagation();
4753}
4754}
4755}
4756}
4757}
4758
4759// Call the postDispatch hook for the mapped type
4760if (special.postDispatch) {
4761special.postDispatch.call(this, event);
4762}
4763
4764return event.result;
4765},
4766
4767handlers: function (event, handlers) {
4768var i, matches, sel, handleObj,
4769handlerQueue = [],
4770delegateCount = handlers.delegateCount,
4771cur = event.target;
4772
4773// Support (at least): Chrome, IE9
4774// Find delegate handlers
4775// Black-hole SVG <use> instance trees (#13180)
4776//
4777// Support: Firefox<=42+
4778// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)
4779if (delegateCount && cur.nodeType &&
4780(event.type !== "click" || isNaN(event.button) || event.button < 1)) {
4781
4782for (; cur !== this; cur = cur.parentNode || this) {
4783
4784// Don't check non-elements (#13208)
4785// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
4786if (cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click")) {
4787matches = [];
4788for (i = 0; i < delegateCount; i++) {
4789handleObj = handlers[i];
4790
4791// Don't conflict with Object.prototype properties (#13203)
4792sel = handleObj.selector + " ";
4793
4794if (matches[sel] === undefined) {
4795matches[sel] = handleObj.needsContext ?
4796jQuery(sel, this).index(cur) > -1 :
4797jQuery.find(sel, this, null, [cur]).length;
4798}
4799if (matches[sel]) {
4800matches.push(handleObj);
4801}
4802}
4803if (matches.length) {
4804handlerQueue.push({ elem: cur, handlers: matches });
4805}
4806}
4807}
4808}
4809
4810// Add the remaining (directly-bound) handlers
4811if (delegateCount < handlers.length) {
4812handlerQueue.push({ elem: this, handlers: handlers.slice(delegateCount) });
4813}
4814
4815return handlerQueue;
4816},
4817
4818// Includes some event props shared by KeyEvent and MouseEvent
4819props: ("altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " +
4820"metaKey relatedTarget shiftKey target timeStamp view which").split(" "),
4821
4822fixHooks: {},
4823
4824keyHooks: {
4825props: "char charCode key keyCode".split(" "),
4826filter: function (event, original) {
4827
4828// Add which for key events
4829if (event.which == null) {
4830event.which = original.charCode != null ? original.charCode : original.keyCode;
4831}
4832
4833return event;
4834}
4835},
4836
4837mouseHooks: {
4838props: ("button buttons clientX clientY offsetX offsetY pageX pageY " +
4839"screenX screenY toElement").split(" "),
4840filter: function (event, original) {
4841var eventDoc, doc, body,
4842button = original.button;
4843
4844// Calculate pageX/Y if missing and clientX/Y available
4845if (event.pageX == null && original.clientX != null) {
4846eventDoc = event.target.ownerDocument || document;
4847doc = eventDoc.documentElement;
4848body = eventDoc.body;
4849
4850event.pageX = original.clientX +
4851(doc && doc.scrollLeft || body && body.scrollLeft || 0) -
4852(doc && doc.clientLeft || body && body.clientLeft || 0);
4853event.pageY = original.clientY +
4854(doc && doc.scrollTop || body && body.scrollTop || 0) -
4855(doc && doc.clientTop || body && body.clientTop || 0);
4856}
4857
4858// Add which for click: 1 === left; 2 === middle; 3 === right
4859// Note: button is not normalized, so don't use it
4860if (!event.which && button !== undefined) {
4861event.which = (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));
4862}
4863
4864return event;
4865}
4866},
4867
4868fix: function (event) {
4869if (event[jQuery.expando]) {
4870return event;
4871}
4872
4873// Create a writable copy of the event object and normalize some properties
4874var i, prop, copy,
4875type = event.type,
4876originalEvent = event,
4877fixHook = this.fixHooks[type];
4878
4879if (!fixHook) {
4880this.fixHooks[type] = fixHook =
4881rmouseEvent.test(type) ? this.mouseHooks :
4882rkeyEvent.test(type) ? this.keyHooks :
4883{};
4884}
4885copy = fixHook.props ? this.props.concat(fixHook.props) : this.props;
4886
4887event = new jQuery.Event(originalEvent);
4888
4889i = copy.length;
4890while (i--) {
4891prop = copy[i];
4892event[prop] = originalEvent[prop];
4893}
4894
4895// Support: Cordova 2.5 (WebKit) (#13255)
4896// All events should have a target; Cordova deviceready doesn't
4897if (!event.target) {
4898event.target = document;
4899}
4900
4901// Support: Safari 6.0+, Chrome<28
4902// Target should not be a text node (#504, #13143)
4903if (event.target.nodeType === 3) {
4904event.target = event.target.parentNode;
4905}
4906
4907return fixHook.filter ? fixHook.filter(event, originalEvent) : event;
4908},
4909
4910special: {
4911load: {
4912
4913// Prevent triggered image.load events from bubbling to window.load
4914noBubble: true
4915},
4916focus: {
4917
4918// Fire native event if possible so blur/focus sequence is correct
4919trigger: function () {
4920if (this !== safeActiveElement() && this.focus) {
4921this.focus();
4922return false;
4923}
4924},
4925delegateType: "focusin"
4926},
4927blur: {
4928trigger: function () {
4929if (this === safeActiveElement() && this.blur) {
4930this.blur();
4931return false;
4932}
4933},
4934delegateType: "focusout"
4935},
4936click: {
4937
4938// For checkbox, fire native event so checked state will be right
4939trigger: function () {
4940if (this.type === "checkbox" && this.click && jQuery.nodeName(this, "input")) {
4941this.click();
4942return false;
4943}
4944},
4945
4946// For cross-browser consistency, don't fire native .click() on links
4947_default: function (event) {
4948return jQuery.nodeName(event.target, "a");
4949}
4950},
4951
4952beforeunload: {
4953postDispatch: function (event) {
4954
4955// Support: Firefox 20+
4956// Firefox doesn't alert if the returnValue field is not set.
4957if (event.result !== undefined && event.originalEvent) {
4958event.originalEvent.returnValue = event.result;
4959}
4960}
4961}
4962}
4963};
4964
4965jQuery.removeEvent = function (elem, type, handle) {
4966
4967// This "if" is needed for plain objects
4968if (elem.removeEventListener) {
4969elem.removeEventListener(type, handle);
4970}
4971};
4972
4973jQuery.Event = function (src, props) {
4974
4975// Allow instantiation without the 'new' keyword
4976if (!(this instanceof jQuery.Event)) {
4977return new jQuery.Event(src, props);
4978}
4979
4980// Event object
4981if (src && src.type) {
4982this.originalEvent = src;
4983this.type = src.type;
4984
4985// Events bubbling up the document may have been marked as prevented
4986// by a handler lower down the tree; reflect the correct value.
4987this.isDefaultPrevented = src.defaultPrevented ||
4988src.defaultPrevented === undefined &&
4989
4990// Support: Android<4.0
4991src.returnValue === false ?
4992returnTrue :
4993returnFalse;
4994
4995// Event type
4996} else {
4997this.type = src;
4998}
4999
5000// Put explicitly provided properties onto the event object
5001if (props) {
5002jQuery.extend(this, props);
5003}
5004
5005// Create a timestamp if incoming event doesn't have one
5006this.timeStamp = src && src.timeStamp || jQuery.now();
5007
5008// Mark it as fixed
5009this[jQuery.expando] = true;
5010};
5011
5012// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
5013// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
5014jQuery.Event.prototype = {
5015constructor: jQuery.Event,
5016isDefaultPrevented: returnFalse,
5017isPropagationStopped: returnFalse,
5018isImmediatePropagationStopped: returnFalse,
5019isSimulated: false,
5020
5021preventDefault: function () {
5022var e = this.originalEvent;
5023
5024this.isDefaultPrevented = returnTrue;
5025
5026if (e && !this.isSimulated) {
5027e.preventDefault();
5028}
5029},
5030stopPropagation: function () {
5031var e = this.originalEvent;
5032
5033this.isPropagationStopped = returnTrue;
5034
5035if (e && !this.isSimulated) {
5036e.stopPropagation();
5037}
5038},
5039stopImmediatePropagation: function () {
5040var e = this.originalEvent;
5041
5042this.isImmediatePropagationStopped = returnTrue;
5043
5044if (e && !this.isSimulated) {
5045e.stopImmediatePropagation();
5046}
5047
5048this.stopPropagation();
5049}
5050};
5051
5052// Create mouseenter/leave events using mouseover/out and event-time checks
5053// so that event delegation works in jQuery.
5054// Do the same for pointerenter/pointerleave and pointerover/pointerout
5055//
5056// Support: Safari 7 only
5057// Safari sends mouseenter too often; see:
5058// https://code.google.com/p/chromium/issues/detail?id=470258
5059// for the description of the bug (it existed in older Chrome versions as well).
5060jQuery.each({
5061mouseenter: "mouseover",
5062mouseleave: "mouseout",
5063pointerenter: "pointerover",
5064pointerleave: "pointerout"
5065}, function (orig, fix) {
5066jQuery.event.special[orig] = {
5067delegateType: fix,
5068bindType: fix,
5069
5070handle: function (event) {
5071var ret,
5072target = this,
5073related = event.relatedTarget,
5074handleObj = event.handleObj;
5075
5076// For mouseenter/leave call the handler if related is outside the target.
5077// NB: No relatedTarget if the mouse left/entered the browser window
5078if (!related || (related !== target && !jQuery.contains(target, related))) {
5079event.type = handleObj.origType;
5080ret = handleObj.handler.apply(this, arguments);
5081event.type = fix;
5082}
5083return ret;
5084}
5085};
5086});
5087
5088jQuery.fn.extend({
5089on: function (types, selector, data, fn) {
5090return on(this, types, selector, data, fn);
5091},
5092one: function (types, selector, data, fn) {
5093return on(this, types, selector, data, fn, 1);
5094},
5095off: function (types, selector, fn) {
5096var handleObj, type;
5097if (types && types.preventDefault && types.handleObj) {
5098
5099// ( event )  dispatched jQuery.Event
5100handleObj = types.handleObj;
5101jQuery(types.delegateTarget).off(
5102handleObj.namespace ?
5103handleObj.origType + "." + handleObj.namespace :
5104handleObj.origType,
5105handleObj.selector,
5106handleObj.handler
5107);
5108return this;
5109}
5110if (typeof types === "object") {
5111
5112// ( types-object [, selector] )
5113for (type in types) {
5114this.off(type, selector, types[type]);
5115}
5116return this;
5117}
5118if (selector === false || typeof selector === "function") {
5119
5120// ( types [, fn] )
5121fn = selector;
5122selector = undefined;
5123}
5124if (fn === false) {
5125fn = returnFalse;
5126}
5127return this.each(function () {
5128jQuery.event.remove(this, types, fn, selector);
5129});
5130}
5131});
5132
5133
5134var
5135rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
5136
5137// Support: IE 10-11, Edge 10240+
5138// In IE/Edge using regex groups here causes severe slowdowns.
5139// See https://connect.microsoft.com/IE/feedback/details/1736512/
5140rnoInnerhtml = /<script|<style|<link/i,
5141
5142// checked="checked" or checked
5143rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5144rscriptTypeMasked = /^true\/(.*)/,
5145rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
5146
5147// Manipulating tables requires a tbody
5148function manipulationTarget(elem, content) {
5149return jQuery.nodeName(elem, "table") &&
5150jQuery.nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr") ?
5151
5152elem.getElementsByTagName("tbody")[0] ||
5153elem.appendChild(elem.ownerDocument.createElement("tbody")) :
5154elem;
5155}
5156
5157// Replace/restore the type attribute of script elements for safe DOM manipulation
5158function disableScript(elem) {
5159elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
5160return elem;
5161}
5162function restoreScript(elem) {
5163var match = rscriptTypeMasked.exec(elem.type);
5164
5165if (match) {
5166elem.type = match[1];
5167} else {
5168elem.removeAttribute("type");
5169}
5170
5171return elem;
5172}
5173
5174function cloneCopyEvent(src, dest) {
5175var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
5176
5177if (dest.nodeType !== 1) {
5178return;
5179}
5180
5181// 1. Copy private data: events, handlers, etc.
5182if (dataPriv.hasData(src)) {
5183pdataOld = dataPriv.access(src);
5184pdataCur = dataPriv.set(dest, pdataOld);
5185events = pdataOld.events;
5186
5187if (events) {
5188delete pdataCur.handle;
5189pdataCur.events = {};
5190
5191for (type in events) {
5192for (i = 0, l = events[type].length; i < l; i++) {
5193jQuery.event.add(dest, type, events[type][i]);
5194}
5195}
5196}
5197}
5198
5199// 2. Copy user data
5200if (dataUser.hasData(src)) {
5201udataOld = dataUser.access(src);
5202udataCur = jQuery.extend({}, udataOld);
5203
5204dataUser.set(dest, udataCur);
5205}
5206}
5207
5208// Fix IE bugs, see support tests
5209function fixInput(src, dest) {
5210var nodeName = dest.nodeName.toLowerCase();
5211
5212// Fails to persist the checked state of a cloned checkbox or radio button.
5213if (nodeName === "input" && rcheckableType.test(src.type)) {
5214dest.checked = src.checked;
5215
5216// Fails to return the selected option to the default selected state when cloning options
5217} else if (nodeName === "input" || nodeName === "textarea") {
5218dest.defaultValue = src.defaultValue;
5219}
5220}
5221
5222function domManip(collection, args, callback, ignored) {
5223
5224// Flatten any nested arrays
5225args = concat.apply([], args);
5226
5227var fragment, first, scripts, hasScripts, node, doc,
5228i = 0,
5229l = collection.length,
5230iNoClone = l - 1,
5231value = args[0],
5232isFunction = jQuery.isFunction(value);
5233
5234// We can't cloneNode fragments that contain checked, in WebKit
5235if (isFunction ||
5236(l > 1 && typeof value === "string" &&
5237!support.checkClone && rchecked.test(value))) {
5238return collection.each(function (index) {
5239var self = collection.eq(index);
5240if (isFunction) {
5241args[0] = value.call(this, index, self.html());
5242}
5243domManip(self, args, callback, ignored);
5244});
5245}
5246
5247if (l) {
5248fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
5249first = fragment.firstChild;
5250
5251if (fragment.childNodes.length === 1) {
5252fragment = first;
5253}
5254
5255// Require either new content or an interest in ignored elements to invoke the callback
5256if (first || ignored) {
5257scripts = jQuery.map(getAll(fragment, "script"), disableScript);
5258hasScripts = scripts.length;
5259
5260// Use the original fragment for the last item
5261// instead of the first because it can end up
5262// being emptied incorrectly in certain situations (#8070).
5263for (; i < l; i++) {
5264node = fragment;
5265
5266if (i !== iNoClone) {
5267node = jQuery.clone(node, true, true);
5268
5269// Keep references to cloned scripts for later restoration
5270if (hasScripts) {
5271
5272// Support: Android<4.1, PhantomJS<2
5273// push.apply(_, arraylike) throws on ancient WebKit
5274jQuery.merge(scripts, getAll(node, "script"));
5275}
5276}
5277
5278callback.call(collection[i], node, i);
5279}
5280
5281if (hasScripts) {
5282doc = scripts[scripts.length - 1].ownerDocument;
5283
5284// Reenable scripts
5285jQuery.map(scripts, restoreScript);
5286
5287// Evaluate executable scripts on first document insertion
5288for (i = 0; i < hasScripts; i++) {
5289node = scripts[i];
5290if (rscriptType.test(node.type || "") &&
5291!dataPriv.access(node, "globalEval") &&
5292jQuery.contains(doc, node)) {
5293
5294if (node.src) {
5295
5296// Optional AJAX dependency, but won't run scripts if not present
5297if (jQuery._evalUrl) {
5298jQuery._evalUrl(node.src);
5299}
5300} else {
5301jQuery.globalEval(node.textContent.replace(rcleanScript, ""));
5302}
5303}
5304}
5305}
5306}
5307}
5308
5309return collection;
5310}
5311
5312function remove(elem, selector, keepData) {
5313var node,
5314nodes = selector ? jQuery.filter(selector, elem) : elem,
5315i = 0;
5316
5317for (; (node = nodes[i]) != null; i++) {
5318if (!keepData && node.nodeType === 1) {
5319jQuery.cleanData(getAll(node));
vendor: 4,454 bytes, lines 5320-5512
5320}
5321
5322if (node.parentNode) {
5323if (keepData && jQuery.contains(node.ownerDocument, node)) {
5324setGlobalEval(getAll(node, "script"));
5325}
5326node.parentNode.removeChild(node);
5327}
5328}
5329
5330return elem;
5331}
5332
5333jQuery.extend({
5334htmlPrefilter: function (html) {
5335return html.replace(rxhtmlTag, "<$1></$2>");
5336},
5337
5338clone: function (elem, dataAndEvents, deepDataAndEvents) {
5339var i, l, srcElements, destElements,
5340clone = elem.cloneNode(true),
5341inPage = jQuery.contains(elem.ownerDocument, elem);
5342
5343// Fix IE cloning issues
5344if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) &&
5345!jQuery.isXMLDoc(elem)) {
5346
5347// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
5348destElements = getAll(clone);
5349srcElements = getAll(elem);
5350
5351for (i = 0, l = srcElements.length; i < l; i++) {
5352fixInput(srcElements[i], destElements[i]);
5353}
5354}
5355
5356// Copy the events from the original to the clone
5357if (dataAndEvents) {
5358if (deepDataAndEvents) {
5359srcElements = srcElements || getAll(elem);
5360destElements = destElements || getAll(clone);
5361
5362for (i = 0, l = srcElements.length; i < l; i++) {
5363cloneCopyEvent(srcElements[i], destElements[i]);
5364}
5365} else {
5366cloneCopyEvent(elem, clone);
5367}
5368}
5369
5370// Preserve script evaluation history
5371destElements = getAll(clone, "script");
5372if (destElements.length > 0) {
5373setGlobalEval(destElements, !inPage && getAll(elem, "script"));
5374}
5375
5376// Return the cloned set
5377return clone;
5378},
5379
5380cleanData: function (elems) {
5381var data, elem, type,
5382special = jQuery.event.special,
5383i = 0;
5384
5385for (; (elem = elems[i]) !== undefined; i++) {
5386if (acceptData(elem)) {
5387if ((data = elem[dataPriv.expando])) {
5388if (data.events) {
5389for (type in data.events) {
5390if (special[type]) {
5391jQuery.event.remove(elem, type);
5392
5393// This is a shortcut to avoid jQuery.event.remove's overhead
5394} else {
5395jQuery.removeEvent(elem, type, data.handle);
5396}
5397}
5398}
5399
5400// Support: Chrome <= 35-45+
5401// Assign undefined instead of using delete, see Data#remove
5402elem[dataPriv.expando] = undefined;
5403}
5404if (elem[dataUser.expando]) {
5405
5406// Support: Chrome <= 35-45+
5407// Assign undefined instead of using delete, see Data#remove
5408elem[dataUser.expando] = undefined;
5409}
5410}
5411}
5412}
5413});
5414
5415jQuery.fn.extend({
5416
5417// Keep domManip exposed until 3.0 (gh-2225)
5418domManip: domManip,
5419
5420detach: function (selector) {
5421return remove(this, selector, true);
5422},
5423
5424remove: function (selector) {
5425return remove(this, selector);
5426},
5427
5428text: function (value) {
5429return access(this, function (value) {
5430return value === undefined ?
5431jQuery.text(this) :
5432this.empty().each(function () {
5433if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
5434this.textContent = value;
5435}
5436});
5437}, null, value, arguments.length);
5438},
5439
5440append: function () {
5441return domManip(this, arguments, function (elem) {
5442if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
5443var target = manipulationTarget(this, elem);
5444target.appendChild(elem);
5445}
5446});
5447},
5448
5449prepend: function () {
5450return domManip(this, arguments, function (elem) {
5451if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
5452var target = manipulationTarget(this, elem);
5453target.insertBefore(elem, target.firstChild);
5454}
5455});
5456},
5457
5458before: function () {
5459return domManip(this, arguments, function (elem) {
5460if (this.parentNode) {
5461this.parentNode.insertBefore(elem, this);
5462}
5463});
5464},
5465
5466after: function () {
5467return domManip(this, arguments, function (elem) {
5468if (this.parentNode) {
5469this.parentNode.insertBefore(elem, this.nextSibling);
5470}
5471});
5472},
5473
5474empty: function () {
5475var elem,
5476i = 0;
5477
5478for (; (elem = this[i]) != null; i++) {
5479if (elem.nodeType === 1) {
5480
5481// Prevent memory leaks
5482jQuery.cleanData(getAll(elem, false));
5483
5484// Remove any remaining nodes
5485elem.textContent = "";
5486}
5487}
5488
5489return this;
5490},
5491
5492clone: function (dataAndEvents, deepDataAndEvents) {
5493dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
5494deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
5495
5496return this.map(function () {
5497return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
5498});
5499},
5500
5501html: function (value) {
5502return access(this, function (value) {
5503var elem = this[0] || {},
5504i = 0,
5505l = this.length;
5506
5507if (value === undefined && elem.nodeType === 1) {
5508return elem.innerHTML;
5509}
5510
5511// See if we can take a shortcut and just use innerHTML
5512if (typeof value === "string" && !rnoInnerhtml.test(value) &&
vendor: 25,568 bytes, lines 5513-6529
5513!wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {
5514
5515value = jQuery.htmlPrefilter(value);
5516
5517try {
5518for (; i < l; i++) {
5519elem = this[i] || {};
5520
5521// Remove element nodes and prevent memory leaks
5522if (elem.nodeType === 1) {
5523jQuery.cleanData(getAll(elem, false));
5524elem.innerHTML = value;
5525}
5526}
5527
5528elem = 0;
5529
5530// If using innerHTML throws an exception, use the fallback method
5531} catch (e) { }
5532}
5533
5534if (elem) {
5535this.empty().append(value);
5536}
5537}, null, value, arguments.length);
5538},
5539
5540replaceWith: function () {
5541var ignored = [];
5542
5543// Make the changes, replacing each non-ignored context element with the new content
5544return domManip(this, arguments, function (elem) {
5545var parent = this.parentNode;
5546
5547if (jQuery.inArray(this, ignored) < 0) {
5548jQuery.cleanData(getAll(this));
5549if (parent) {
5550parent.replaceChild(elem, this);
5551}
5552}
5553
5554// Force callback invocation
5555}, ignored);
5556}
5557});
5558
5559jQuery.each({
5560appendTo: "append",
5561prependTo: "prepend",
5562insertBefore: "before",
5563insertAfter: "after",
5564replaceAll: "replaceWith"
5565}, function (name, original) {
5566jQuery.fn[name] = function (selector) {
5567var elems,
5568ret = [],
5569insert = jQuery(selector),
5570last = insert.length - 1,
5571i = 0;
5572
5573for (; i <= last; i++) {
5574elems = i === last ? this : this.clone(true);
5575jQuery(insert[i])[original](elems);
5576
5577// Support: QtWebKit
5578// .get() because push.apply(_, arraylike) throws
5579push.apply(ret, elems.get());
5580}
5581
5582return this.pushStack(ret);
5583};
5584});
5585
5586
5587var iframe,
5588elemdisplay = {
5589
5590// Support: Firefox
5591// We have to pre-define these values for FF (#10227)
5592HTML: "block",
5593BODY: "block"
5594};
5595
5596/**
5597 * Retrieve the actual display of a element
5598 * @param {String} name nodeName of the element
5599 * @param {Object} doc Document object
5600 */
5601
5602// Called only from within defaultDisplay
5603function actualDisplay(name, doc) {
5604var elem = jQuery(doc.createElement(name)).appendTo(doc.body),
5605
5606display = jQuery.css(elem[0], "display");
5607
5608// We don't have any data stored on the element,
5609// so use "detach" method as fast way to get rid of the element
5610elem.detach();
5611
5612return display;
5613}
5614
5615/**
5616 * Try to determine the default display value of an element
5617 * @param {String} nodeName
5618 */
5619function defaultDisplay(nodeName) {
5620var doc = document,
5621display = elemdisplay[nodeName];
5622
5623if (!display) {
5624display = actualDisplay(nodeName, doc);
5625
5626// If the simple way fails, read from inside an iframe
5627if (display === "none" || !display) {
5628
5629// Use the already-created iframe if possible
5630iframe = (iframe || jQuery("<iframe frameborder='0' width='0' height='0'/>"))
5631.appendTo(doc.documentElement);
5632
5633// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
5634doc = iframe[0].contentDocument;
5635
5636// Support: IE
5637doc.write();
5638doc.close();
5639
5640display = actualDisplay(nodeName, doc);
5641iframe.detach();
5642}
5643
5644// Store the correct default display
5645elemdisplay[nodeName] = display;
5646}
5647
5648return display;
5649}
5650var rmargin = (/^margin/);
5651
5652var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
5653
5654var getStyles = function (elem) {
5655
5656// Support: IE<=11+, Firefox<=30+ (#15098, #14150)
5657// IE throws on elements created in popups
5658// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
5659var view = elem.ownerDocument.defaultView;
5660
5661if (!view || !view.opener) {
5662view = window;
5663}
5664
5665return view.getComputedStyle(elem);
5666};
5667
5668var swap = function (elem, options, callback, args) {
5669var ret, name,
5670old = {};
5671
5672// Remember the old values, and insert the new ones
5673for (name in options) {
5674old[name] = elem.style[name];
5675elem.style[name] = options[name];
5676}
5677
5678ret = callback.apply(elem, args || []);
5679
5680// Revert the old values
5681for (name in options) {
5682elem.style[name] = old[name];
5683}
5684
5685return ret;
5686};
5687
5688
5689var documentElement = document.documentElement;
5690
5691
5692
5693(function () {
5694var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
5695container = document.createElement("div"),
5696div = document.createElement("div");
5697
5698// Finish early in limited (non-browser) environments
5699if (!div.style) {
5700return;
5701}
5702
5703// Support: IE9-11+
5704// Style of cloned element affects source element cloned (#8908)
5705div.style.backgroundClip = "content-box";
5706div.cloneNode(true).style.backgroundClip = "";
5707support.clearCloneStyle = div.style.backgroundClip === "content-box";
5708
5709container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
5710"padding:0;margin-top:1px;position:absolute";
5711container.appendChild(div);
5712
5713// Executing both pixelPosition & boxSizingReliable tests require only one layout
5714// so they're executed at the same time to save the second computation.
5715function computeStyleTests() {
5716div.style.cssText =
5717
5718// Support: Firefox<29, Android 2.3
5719// Vendor-prefix box-sizing
5720"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" +
5721"position:relative;display:block;" +
5722"margin:auto;border:1px;padding:1px;" +
5723"top:1%;width:50%";
5724div.innerHTML = "";
5725documentElement.appendChild(container);
5726
5727var divStyle = window.getComputedStyle(div);
5728pixelPositionVal = divStyle.top !== "1%";
5729reliableMarginLeftVal = divStyle.marginLeft === "2px";
5730boxSizingReliableVal = divStyle.width === "4px";
5731
5732// Support: Android 4.0 - 4.3 only
5733// Some styles come back with percentage values, even though they shouldn't
5734div.style.marginRight = "50%";
5735pixelMarginRightVal = divStyle.marginRight === "4px";
5736
5737documentElement.removeChild(container);
5738}
5739
5740jQuery.extend(support, {
5741pixelPosition: function () {
5742
5743// This test is executed only once but we still do memoizing
5744// since we can use the boxSizingReliable pre-computing.
5745// No need to check if the test was already performed, though.
5746computeStyleTests();
5747return pixelPositionVal;
5748},
5749boxSizingReliable: function () {
5750if (boxSizingReliableVal == null) {
5751computeStyleTests();
5752}
5753return boxSizingReliableVal;
5754},
5755pixelMarginRight: function () {
5756
5757// Support: Android 4.0-4.3
5758// We're checking for boxSizingReliableVal here instead of pixelMarginRightVal
5759// since that compresses better and they're computed together anyway.
5760if (boxSizingReliableVal == null) {
5761computeStyleTests();
5762}
5763return pixelMarginRightVal;
5764},
5765reliableMarginLeft: function () {
5766
5767// Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37
5768if (boxSizingReliableVal == null) {
5769computeStyleTests();
5770}
5771return reliableMarginLeftVal;
5772},
5773reliableMarginRight: function () {
5774
5775// Support: Android 2.3
5776// Check if div with explicit width and no margin-right incorrectly
5777// gets computed margin-right based on width of container. (#3333)
5778// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
5779// This support function is only executed once so no memoizing is needed.
5780var ret,
5781marginDiv = div.appendChild(document.createElement("div"));
5782
5783// Reset CSS: box-sizing; display; margin; border; padding
5784marginDiv.style.cssText = div.style.cssText =
5785
5786// Support: Android 2.3
5787// Vendor-prefix box-sizing
5788"-webkit-box-sizing:content-box;box-sizing:content-box;" +
5789"display:block;margin:0;border:0;padding:0";
5790marginDiv.style.marginRight = marginDiv.style.width = "0";
5791div.style.width = "1px";
5792documentElement.appendChild(container);
5793
5794ret = !parseFloat(window.getComputedStyle(marginDiv).marginRight);
5795
5796documentElement.removeChild(container);
5797div.removeChild(marginDiv);
5798
5799return ret;
5800}
5801});
5802})();
5803
5804
5805function curCSS(elem, name, computed) {
5806var width, minWidth, maxWidth, ret,
5807style = elem.style;
5808
5809computed = computed || getStyles(elem);
5810ret = computed ? computed.getPropertyValue(name) || computed[name] : undefined;
5811
5812// Support: Opera 12.1x only
5813// Fall back to style even without computed
5814// computed is undefined for elems on document fragments
5815if ((ret === "" || ret === undefined) && !jQuery.contains(elem.ownerDocument, elem)) {
5816ret = jQuery.style(elem, name);
5817}
5818
5819// Support: IE9
5820// getPropertyValue is only needed for .css('filter') (#12537)
5821if (computed) {
5822
5823// A tribute to the "awesome hack by Dean Edwards"
5824// Android Browser returns percentage for some values,
5825// but width seems to be reliably pixels.
5826// This is against the CSSOM draft spec:
5827// http://dev.w3.org/csswg/cssom/#resolved-values
5828if (!support.pixelMarginRight() && rnumnonpx.test(ret) && rmargin.test(name)) {
5829
5830// Remember the original values
5831width = style.width;
5832minWidth = style.minWidth;
5833maxWidth = style.maxWidth;
5834
5835// Put in the new values to get a computed value out
5836style.minWidth = style.maxWidth = style.width = ret;
5837ret = computed.width;
5838
5839// Revert the changed values
5840style.width = width;
5841style.minWidth = minWidth;
5842style.maxWidth = maxWidth;
5843}
5844}
5845
5846return ret !== undefined ?
5847
5848// Support: IE9-11+
5849// IE returns zIndex value as an integer.
5850ret + "" :
5851ret;
5852}
5853
5854
5855function addGetHookIf(conditionFn, hookFn) {
5856
5857// Define the hook, we'll check on the first run if it's really needed.
5858return {
5859get: function () {
5860if (conditionFn()) {
5861
5862// Hook not needed (or it's not possible to use it due
5863// to missing dependency), remove it.
5864delete this.get;
5865return;
5866}
5867
5868// Hook needed; redefine it so that the support test is not executed again.
5869return (this.get = hookFn).apply(this, arguments);
5870}
5871};
5872}
5873
5874
5875var
5876
5877// Swappable if display is none or starts with table
5878// except "table", "table-cell", or "table-caption"
5879// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
5880rdisplayswap = /^(none|table(?!-c[ea]).+)/,
5881
5882cssShow = { position: "absolute", visibility: "hidden", display: "block" },
5883cssNormalTransform = {
5884letterSpacing: "0",
5885fontWeight: "400"
5886},
5887
5888cssPrefixes = ["Webkit", "O", "Moz", "ms"],
5889emptyStyle = document.createElement("div").style;
5890
5891// Return a css property mapped to a potentially vendor prefixed property
5892function vendorPropName(name) {
5893
5894// Shortcut for names that are not vendor prefixed
5895if (name in emptyStyle) {
5896return name;
5897}
5898
5899// Check for vendor prefixed names
5900var capName = name[0].toUpperCase() + name.slice(1),
5901i = cssPrefixes.length;
5902
5903while (i--) {
5904name = cssPrefixes[i] + capName;
5905if (name in emptyStyle) {
5906return name;
5907}
5908}
5909}
5910
5911function setPositiveNumber(elem, value, subtract) {
5912
5913// Any relative (+/-) values have already been
5914// normalized at this point
5915var matches = rcssNum.exec(value);
5916return matches ?
5917
5918// Guard against undefined "subtract", e.g., when used as in cssHooks
5919Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") :
5920value;
5921}
5922
5923function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles) {
5924var i = extra === (isBorderBox ? "border" : "content") ?
5925
5926// If we already have the right measurement, avoid augmentation
59274 :
5928
5929// Otherwise initialize for horizontal or vertical properties
5930name === "width" ? 1 : 0,
5931
5932val = 0;
5933
5934for (; i < 4; i += 2) {
5935
5936// Both box models exclude margin, so add it if we want it
5937if (extra === "margin") {
5938val += jQuery.css(elem, extra + cssExpand[i], true, styles);
5939}
5940
5941if (isBorderBox) {
5942
5943// border-box includes padding, so remove it if we want content
5944if (extra === "content") {
5945val -= jQuery.css(elem, "padding" + cssExpand[i], true, styles);
5946}
5947
5948// At this point, extra isn't border nor margin, so remove border
5949if (extra !== "margin") {
5950val -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
5951}
5952} else {
5953
5954// At this point, extra isn't content, so add padding
5955val += jQuery.css(elem, "padding" + cssExpand[i], true, styles);
5956
5957// At this point, extra isn't content nor padding, so add border
5958if (extra !== "padding") {
5959val += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
5960}
5961}
5962}
5963
5964return val;
5965}
5966
5967function getWidthOrHeight(elem, name, extra) {
5968
5969// Start with offset property, which is equivalent to the border-box value
5970var valueIsBorderBox = true,
5971val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
5972styles = getStyles(elem),
5973isBorderBox = jQuery.css(elem, "boxSizing", false, styles) === "border-box";
5974
5975// Some non-html elements return undefined for offsetWidth, so check for null/undefined
5976// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
5977// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
5978if (val <= 0 || val == null) {
5979
5980// Fall back to computed then uncomputed css if necessary
5981val = curCSS(elem, name, styles);
5982if (val < 0 || val == null) {
5983val = elem.style[name];
5984}
5985
5986// Computed unit is not pixels. Stop here and return.
5987if (rnumnonpx.test(val)) {
5988return val;
5989}
5990
5991// Check for style in case a browser which returns unreliable values
5992// for getComputedStyle silently falls back to the reliable elem.style
5993valueIsBorderBox = isBorderBox &&
5994(support.boxSizingReliable() || val === elem.style[name]);
5995
5996// Normalize "", auto, and prepare for extra
5997val = parseFloat(val) || 0;
5998}
5999
6000// Use the active box-sizing model to add/subtract irrelevant styles
6001return (val +
6002augmentWidthOrHeight(
6003elem,
6004name,
6005extra || (isBorderBox ? "border" : "content"),
6006valueIsBorderBox,
6007styles
6008)
6009) + "px";
6010}
6011
6012function showHide(elements, show) {
6013var display, elem, hidden,
6014values = [],
6015index = 0,
6016length = elements.length;
6017
6018for (; index < length; index++) {
6019elem = elements[index];
6020if (!elem.style) {
6021continue;
6022}
6023
6024values[index] = dataPriv.get(elem, "olddisplay");
6025display = elem.style.display;
6026if (show) {
6027
6028// Reset the inline display of this element to learn if it is
6029// being hidden by cascaded rules or not
6030if (!values[index] && display === "none") {
6031elem.style.display = "";
6032}
6033
6034// Set elements which have been overridden with display: none
6035// in a stylesheet to whatever the default browser style is
6036// for such an element
6037if (elem.style.display === "" && isHidden(elem)) {
6038values[index] = dataPriv.access(
6039elem,
6040"olddisplay",
6041defaultDisplay(elem.nodeName)
6042);
6043}
6044} else {
6045hidden = isHidden(elem);
6046
6047if (display !== "none" || !hidden) {
6048dataPriv.set(
6049elem,
6050"olddisplay",
6051hidden ? display : jQuery.css(elem, "display")
6052);
6053}
6054}
6055}
6056
6057// Set the display of most of the elements in a second loop
6058// to avoid the constant reflow
6059for (index = 0; index < length; index++) {
6060elem = elements[index];
6061if (!elem.style) {
6062continue;
6063}
6064if (!show || elem.style.display === "none" || elem.style.display === "") {
6065elem.style.display = show ? values[index] || "" : "none";
6066}
6067}
6068
6069return elements;
6070}
6071
6072jQuery.extend({
6073
6074// Add in style property hooks for overriding the default
6075// behavior of getting and setting a style property
6076cssHooks: {
6077opacity: {
6078get: function (elem, computed) {
6079if (computed) {
6080
6081// We should always get a number back from opacity
6082var ret = curCSS(elem, "opacity");
6083return ret === "" ? "1" : ret;
6084}
6085}
6086}
6087},
6088
6089// Don't automatically add "px" to these possibly-unitless properties
6090cssNumber: {
6091"animationIterationCount": true,
6092"columnCount": true,
6093"fillOpacity": true,
6094"flexGrow": true,
6095"flexShrink": true,
6096"fontWeight": true,
6097"lineHeight": true,
6098"opacity": true,
6099"order": true,
6100"orphans": true,
6101"widows": true,
6102"zIndex": true,
6103"zoom": true
6104},
6105
6106// Add in properties whose names you wish to fix before
6107// setting or getting the value
6108cssProps: {
6109"float": "cssFloat"
6110},
6111
6112// Get and set the style property on a DOM Node
6113style: function (elem, name, value, extra) {
6114
6115// Don't set styles on text and comment nodes
6116if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
6117return;
6118}
6119
6120// Make sure that we're working with the right name
6121var ret, type, hooks,
6122origName = jQuery.camelCase(name),
6123style = elem.style;
6124
6125name = jQuery.cssProps[origName] ||
6126(jQuery.cssProps[origName] = vendorPropName(origName) || origName);
6127
6128// Gets hook for the prefixed version, then unprefixed version
6129hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
6130
6131// Check if we're setting a value
6132if (value !== undefined) {
6133type = typeof value;
6134
6135// Convert "+=" or "-=" to relative numbers (#7345)
6136if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) {
6137value = adjustCSS(elem, name, ret);
6138
6139// Fixes bug #9237
6140type = "number";
6141}
6142
6143// Make sure that null and NaN values aren't set (#7116)
6144if (value == null || value !== value) {
6145return;
6146}
6147
6148// If a number was passed in, add the unit (except for certain CSS properties)
6149if (type === "number") {
6150value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px");
6151}
6152
6153// Support: IE9-11+
6154// background-* props affect original clone's values
6155if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) {
6156style[name] = "inherit";
6157}
6158
6159// If a hook was provided, use that value, otherwise just set the specified value
6160if (!hooks || !("set" in hooks) ||
6161(value = hooks.set(elem, value, extra)) !== undefined) {
6162
6163style[name] = value;
6164}
6165
6166} else {
6167
6168// If a hook was provided get the non-computed value from there
6169if (hooks && "get" in hooks &&
6170(ret = hooks.get(elem, false, extra)) !== undefined) {
6171
6172return ret;
6173}
6174
6175// Otherwise just get the value from the style object
6176return style[name];
6177}
6178},
6179
6180css: function (elem, name, extra, styles) {
6181var val, num, hooks,
6182origName = jQuery.camelCase(name);
6183
6184// Make sure that we're working with the right name
6185name = jQuery.cssProps[origName] ||
6186(jQuery.cssProps[origName] = vendorPropName(origName) || origName);
6187
6188// Try prefixed name followed by the unprefixed name
6189hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName];
6190
6191// If a hook was provided get the computed value from there
6192if (hooks && "get" in hooks) {
6193val = hooks.get(elem, true, extra);
6194}
6195
6196// Otherwise, if a way to get the computed value exists, use that
6197if (val === undefined) {
6198val = curCSS(elem, name, styles);
6199}
6200
6201// Convert "normal" to computed value
6202if (val === "normal" && name in cssNormalTransform) {
6203val = cssNormalTransform[name];
6204}
6205
6206// Make numeric if forced or a qualifier was provided and val looks numeric
6207if (extra === "" || extra) {
6208num = parseFloat(val);
6209return extra === true || isFinite(num) ? num || 0 : val;
6210}
6211return val;
6212}
6213});
6214
6215jQuery.each(["height", "width"], function (i, name) {
6216jQuery.cssHooks[name] = {
6217get: function (elem, computed, extra) {
6218if (computed) {
6219
6220// Certain elements can have dimension info if we invisibly show them
6221// but it must have a current display style that would benefit
6222return rdisplayswap.test(jQuery.css(elem, "display")) &&
6223elem.offsetWidth === 0 ?
6224swap(elem, cssShow, function () {
6225return getWidthOrHeight(elem, name, extra);
6226}) :
6227getWidthOrHeight(elem, name, extra);
6228}
6229},
6230
6231set: function (elem, value, extra) {
6232var matches,
6233styles = extra && getStyles(elem),
6234subtract = extra && augmentWidthOrHeight(
6235elem,
6236name,
6237extra,
6238jQuery.css(elem, "boxSizing", false, styles) === "border-box",
6239styles
6240);
6241
6242// Convert to pixels if value adjustment is needed
6243if (subtract && (matches = rcssNum.exec(value)) &&
6244(matches[3] || "px") !== "px") {
6245
6246elem.style[name] = value;
6247value = jQuery.css(elem, name);
6248}
6249
6250return setPositiveNumber(elem, value, subtract);
6251}
6252};
6253});
6254
6255jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft,
6256function (elem, computed) {
6257if (computed) {
6258return (parseFloat(curCSS(elem, "marginLeft")) ||
6259elem.getBoundingClientRect().left -
6260swap(elem, { marginLeft: 0 }, function () {
6261return elem.getBoundingClientRect().left;
6262})
6263) + "px";
6264}
6265}
6266);
6267
6268// Support: Android 2.3
6269jQuery.cssHooks.marginRight = addGetHookIf(support.reliableMarginRight,
6270function (elem, computed) {
6271if (computed) {
6272return swap(elem, { "display": "inline-block" },
6273curCSS, [elem, "marginRight"]);
6274}
6275}
6276);
6277
6278// These hooks are used by animate to expand properties
6279jQuery.each({
6280margin: "",
6281padding: "",
6282border: "Width"
6283}, function (prefix, suffix) {
6284jQuery.cssHooks[prefix + suffix] = {
6285expand: function (value) {
6286var i = 0,
6287expanded = {},
6288
6289// Assumes a single number if not a string
6290parts = typeof value === "string" ? value.split(" ") : [value];
6291
6292for (; i < 4; i++) {
6293expanded[prefix + cssExpand[i] + suffix] =
6294parts[i] || parts[i - 2] || parts[0];
6295}
6296
6297return expanded;
6298}
6299};
6300
6301if (!rmargin.test(prefix)) {
6302jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;
6303}
6304});
6305
6306jQuery.fn.extend({
6307css: function (name, value) {
6308return access(this, function (elem, name, value) {
6309var styles, len,
6310map = {},
6311i = 0;
6312
6313if (jQuery.isArray(name)) {
6314styles = getStyles(elem);
6315len = name.length;
6316
6317for (; i < len; i++) {
6318map[name[i]] = jQuery.css(elem, name[i], false, styles);
6319}
6320
6321return map;
6322}
6323
6324return value !== undefined ?
6325jQuery.style(elem, name, value) :
6326jQuery.css(elem, name);
6327}, name, value, arguments.length > 1);
6328},
6329show: function () {
6330return showHide(this, true);
6331},
6332hide: function () {
6333return showHide(this);
6334},
6335toggle: function (state) {
6336if (typeof state === "boolean") {
6337return state ? this.show() : this.hide();
6338}
6339
6340return this.each(function () {
6341if (isHidden(this)) {
6342jQuery(this).show();
6343} else {
6344jQuery(this).hide();
6345}
6346});
6347}
6348});
6349
6350
6351function Tween(elem, options, prop, end, easing) {
6352return new Tween.prototype.init(elem, options, prop, end, easing);
6353}
6354jQuery.Tween = Tween;
6355
6356Tween.prototype = {
6357constructor: Tween,
6358init: function (elem, options, prop, end, easing, unit) {
6359this.elem = elem;
6360this.prop = prop;
6361this.easing = easing || jQuery.easing._default;
6362this.options = options;
6363this.start = this.now = this.cur();
6364this.end = end;
6365this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
6366},
6367cur: function () {
6368var hooks = Tween.propHooks[this.prop];
6369
6370return hooks && hooks.get ?
6371hooks.get(this) :
6372Tween.propHooks._default.get(this);
6373},
6374run: function (percent) {
6375var eased,
6376hooks = Tween.propHooks[this.prop];
6377
6378if (this.options.duration) {
6379this.pos = eased = jQuery.easing[this.easing](
6380percent, this.options.duration * percent, 0, 1, this.options.duration
6381);
6382} else {
6383this.pos = eased = percent;
6384}
6385this.now = (this.end - this.start) * eased + this.start;
6386
6387if (this.options.step) {
6388this.options.step.call(this.elem, this.now, this);
6389}
6390
6391if (hooks && hooks.set) {
6392hooks.set(this);
6393} else {
6394Tween.propHooks._default.set(this);
6395}
6396return this;
6397}
6398};
6399
6400Tween.prototype.init.prototype = Tween.prototype;
6401
6402Tween.propHooks = {
6403_default: {
6404get: function (tween) {
6405var result;
6406
6407// Use a property on the element directly when it is not a DOM element,
6408// or when there is no matching style property that exists.
6409if (tween.elem.nodeType !== 1 ||
6410tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
6411return tween.elem[tween.prop];
6412}
6413
6414// Passing an empty string as a 3rd parameter to .css will automatically
6415// attempt a parseFloat and fallback to a string if the parse fails.
6416// Simple values such as "10px" are parsed to Float;
6417// complex values such as "rotate(1rad)" are returned as-is.
6418result = jQuery.css(tween.elem, tween.prop, "");
6419
6420// Empty strings, null, undefined and "auto" are converted to 0.
6421return !result || result === "auto" ? 0 : result;
6422},
6423set: function (tween) {
6424
6425// Use step hook for back compat.
6426// Use cssHook if its there.
6427// Use .style if available and use plain properties where available.
6428if (jQuery.fx.step[tween.prop]) {
6429jQuery.fx.step[tween.prop](tween);
6430} else if (tween.elem.nodeType === 1 &&
6431(tween.elem.style[jQuery.cssProps[tween.prop]] != null ||
6432jQuery.cssHooks[tween.prop])) {
6433jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
6434} else {
6435tween.elem[tween.prop] = tween.now;
6436}
6437}
6438}
6439};
6440
6441// Support: IE9
6442// Panic based approach to setting things on disconnected nodes
6443Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
6444set: function (tween) {
6445if (tween.elem.nodeType && tween.elem.parentNode) {
6446tween.elem[tween.prop] = tween.now;
6447}
6448}
6449};
6450
6451jQuery.easing = {
6452linear: function (p) {
6453return p;
6454},
6455swing: function (p) {
6456return 0.5 - Math.cos(p * Math.PI) / 2;
6457},
6458_default: "swing"
6459};
6460
6461jQuery.fx = Tween.prototype.init;
6462
6463// Back Compat <1.8 extension point
6464jQuery.fx.step = {};
6465
6466
6467
6468
6469var
6470fxNow, timerId,
6471rfxtypes = /^(?:toggle|show|hide)$/,
6472rrun = /queueHooks$/;
6473
6474// Animations created synchronously will run synchronously
6475function createFxNow() {
6476window.setTimeout(function () {
6477fxNow = undefined;
6478});
6479return (fxNow = jQuery.now());
6480}
6481
6482// Generate parameters to create a standard animation
6483function genFx(type, includeWidth) {
6484var which,
6485i = 0,
6486attrs = { height: type };
6487
6488// If we include width, step value is 1 to do all cssExpand values,
6489// otherwise step value is 2 to skip over Left and Right
6490includeWidth = includeWidth ? 1 : 0;
6491for (; i < 4 ; i += 2 - includeWidth) {
6492which = cssExpand[i];
6493attrs["margin" + which] = attrs["padding" + which] = type;
6494}
6495
6496if (includeWidth) {
6497attrs.opacity = attrs.width = type;
6498}
6499
6500return attrs;
6501}
6502
6503function createTween(value, prop, animation) {
6504var tween,
6505collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]),
6506index = 0,
6507length = collection.length;
6508for (; index < length; index++) {
6509if ((tween = collection[index].call(animation, prop, value))) {
6510
6511// We're done with this property
6512return tween;
6513}
6514}
6515}
6516
6517function defaultPrefilter(elem, props, opts) {
6518/* jshint validthis: true */
6519var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
6520anim = this,
6521orig = {},
6522style = elem.style,
6523hidden = elem.nodeType && isHidden(elem),
6524dataShow = dataPriv.get(elem, "fxshow");
6525
6526// Handle queue: false promises
6527if (!opts.queue) {
6528hooks = jQuery._queueHooks(elem, "fx");
6529if (hooks.unqueued == null) {
vendor: 3,223 bytes, lines 6530-6658
6530hooks.unqueued = 0;
6531oldfire = hooks.empty.fire;
6532hooks.empty.fire = function () {
6533if (!hooks.unqueued) {
6534oldfire();
6535}
6536};
6537}
6538hooks.unqueued++;
6539
6540anim.always(function () {
6541
6542// Ensure the complete handler is called before this completes
6543anim.always(function () {
6544hooks.unqueued--;
6545if (!jQuery.queue(elem, "fx").length) {
6546hooks.empty.fire();
6547}
6548});
6549});
6550}
6551
6552// Height/width overflow pass
6553if (elem.nodeType === 1 && ("height" in props || "width" in props)) {
6554
6555// Make sure that nothing sneaks out
6556// Record all 3 overflow attributes because IE9-10 do not
6557// change the overflow attribute when overflowX and
6558// overflowY are set to the same value
6559opts.overflow = [style.overflow, style.overflowX, style.overflowY];
6560
6561// Set display property to inline-block for height/width
6562// animations on inline elements that are having width/height animated
6563display = jQuery.css(elem, "display");
6564
6565// Test default display if display is currently "none"
6566checkDisplay = display === "none" ?
6567dataPriv.get(elem, "olddisplay") || defaultDisplay(elem.nodeName) : display;
6568
6569if (checkDisplay === "inline" && jQuery.css(elem, "float") === "none") {
6570style.display = "inline-block";
6571}
6572}
6573
6574if (opts.overflow) {
6575style.overflow = "hidden";
6576anim.always(function () {
6577style.overflow = opts.overflow[0];
6578style.overflowX = opts.overflow[1];
6579style.overflowY = opts.overflow[2];
6580});
6581}
6582
6583// show/hide pass
6584for (prop in props) {
6585value = props[prop];
6586if (rfxtypes.exec(value)) {
6587delete props[prop];
6588toggle = toggle || value === "toggle";
6589if (value === (hidden ? "hide" : "show")) {
6590
6591// If there is dataShow left over from a stopped hide or show
6592// and we are going to proceed with show, we should pretend to be hidden
6593if (value === "show" && dataShow && dataShow[prop] !== undefined) {
6594hidden = true;
6595} else {
6596continue;
6597}
6598}
6599orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
6600
6601// Any non-fx value stops us from restoring the original display value
6602} else {
6603display = undefined;
6604}
6605}
6606
6607if (!jQuery.isEmptyObject(orig)) {
6608if (dataShow) {
6609if ("hidden" in dataShow) {
6610hidden = dataShow.hidden;
6611}
6612} else {
6613dataShow = dataPriv.access(elem, "fxshow", {});
6614}
6615
6616// Store state if its toggle - enables .stop().toggle() to "reverse"
6617if (toggle) {
6618dataShow.hidden = !hidden;
6619}
6620if (hidden) {
6621jQuery(elem).show();
6622} else {
6623anim.done(function () {
6624jQuery(elem).hide();
6625});
6626}
6627anim.done(function () {
6628var prop;
6629
6630dataPriv.remove(elem, "fxshow");
6631for (prop in orig) {
6632jQuery.style(elem, prop, orig[prop]);
6633}
6634});
6635for (prop in orig) {
6636tween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
6637
6638if (!(prop in dataShow)) {
6639dataShow[prop] = tween.start;
6640if (hidden) {
6641tween.end = tween.start;
6642tween.start = prop === "width" || prop === "height" ? 1 : 0;
6643}
6644}
6645}
6646
6647// If this is a noop like .hide().hide(), restore an overwritten display value
6648} else if ((display === "none" ? defaultDisplay(elem.nodeName) : display) === "inline") {
6649style.display = display;
6650}
6651}
6652
6653function propFilter(props, specialEasing) {
6654var index, name, easing, value, hooks;
6655
6656// camelCase, specialEasing and expand cssHook pass
6657for (index in props) {
6658name = jQuery.camelCase(index);
vendor: 24,186 bytes, lines 6659-7754
6659easing = specialEasing[name];
6660value = props[index];
6661if (jQuery.isArray(value)) {
6662easing = value[1];
6663value = props[index] = value[0];
6664}
6665
6666if (index !== name) {
6667props[name] = value;
6668delete props[index];
6669}
6670
6671hooks = jQuery.cssHooks[name];
6672if (hooks && "expand" in hooks) {
6673value = hooks.expand(value);
6674delete props[name];
6675
6676// Not quite $.extend, this won't overwrite existing keys.
6677// Reusing 'index' because we have the correct "name"
6678for (index in value) {
6679if (!(index in props)) {
6680props[index] = value[index];
6681specialEasing[index] = easing;
6682}
6683}
6684} else {
6685specialEasing[name] = easing;
6686}
6687}
6688}
6689
6690function Animation(elem, properties, options) {
6691var result,
6692stopped,
6693index = 0,
6694length = Animation.prefilters.length,
6695deferred = jQuery.Deferred().always(function () {
6696
6697// Don't match elem in the :animated selector
6698delete tick.elem;
6699}),
6700tick = function () {
6701if (stopped) {
6702return false;
6703}
6704var currentTime = fxNow || createFxNow(),
6705remaining = Math.max(0, animation.startTime + animation.duration - currentTime),
6706
6707// Support: Android 2.3
6708// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
6709temp = remaining / animation.duration || 0,
6710percent = 1 - temp,
6711index = 0,
6712length = animation.tweens.length;
6713
6714for (; index < length ; index++) {
6715animation.tweens[index].run(percent);
6716}
6717
6718deferred.notifyWith(elem, [animation, percent, remaining]);
6719
6720if (percent < 1 && length) {
6721return remaining;
6722} else {
6723deferred.resolveWith(elem, [animation]);
6724return false;
6725}
6726},
6727animation = deferred.promise({
6728elem: elem,
6729props: jQuery.extend({}, properties),
6730opts: jQuery.extend(true, {
6731specialEasing: {},
6732easing: jQuery.easing._default
6733}, options),
6734originalProperties: properties,
6735originalOptions: options,
6736startTime: fxNow || createFxNow(),
6737duration: options.duration,
6738tweens: [],
6739createTween: function (prop, end) {
6740var tween = jQuery.Tween(elem, animation.opts, prop, end,
6741animation.opts.specialEasing[prop] || animation.opts.easing);
6742animation.tweens.push(tween);
6743return tween;
6744},
6745stop: function (gotoEnd) {
6746var index = 0,
6747
6748// If we are going to the end, we want to run all the tweens
6749// otherwise we skip this part
6750length = gotoEnd ? animation.tweens.length : 0;
6751if (stopped) {
6752return this;
6753}
6754stopped = true;
6755for (; index < length ; index++) {
6756animation.tweens[index].run(1);
6757}
6758
6759// Resolve when we played the last frame; otherwise, reject
6760if (gotoEnd) {
6761deferred.notifyWith(elem, [animation, 1, 0]);
6762deferred.resolveWith(elem, [animation, gotoEnd]);
6763} else {
6764deferred.rejectWith(elem, [animation, gotoEnd]);
6765}
6766return this;
6767}
6768}),
6769props = animation.props;
6770
6771propFilter(props, animation.opts.specialEasing);
6772
6773for (; index < length ; index++) {
6774result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
6775if (result) {
6776if (jQuery.isFunction(result.stop)) {
6777jQuery._queueHooks(animation.elem, animation.opts.queue).stop =
6778jQuery.proxy(result.stop, result);
6779}
6780return result;
6781}
6782}
6783
6784jQuery.map(props, createTween, animation);
6785
6786if (jQuery.isFunction(animation.opts.start)) {
6787animation.opts.start.call(elem, animation);
6788}
6789
6790jQuery.fx.timer(
6791jQuery.extend(tick, {
6792elem: elem,
6793anim: animation,
6794queue: animation.opts.queue
6795})
6796);
6797
6798// attach callbacks from options
6799return animation.progress(animation.opts.progress)
6800.done(animation.opts.done, animation.opts.complete)
6801.fail(animation.opts.fail)
6802.always(animation.opts.always);
6803}
6804
6805jQuery.Animation = jQuery.extend(Animation, {
6806tweeners: {
6807"*": [function (prop, value) {
6808var tween = this.createTween(prop, value);
6809adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
6810return tween;
6811}]
6812},
6813
6814tweener: function (props, callback) {
6815if (jQuery.isFunction(props)) {
6816callback = props;
6817props = ["*"];
6818} else {
6819props = props.match(rnotwhite);
6820}
6821
6822var prop,
6823index = 0,
6824length = props.length;
6825
6826for (; index < length ; index++) {
6827prop = props[index];
6828Animation.tweeners[prop] = Animation.tweeners[prop] || [];
6829Animation.tweeners[prop].unshift(callback);
6830}
6831},
6832
6833prefilters: [defaultPrefilter],
6834
6835prefilter: function (callback, prepend) {
6836if (prepend) {
6837Animation.prefilters.unshift(callback);
6838} else {
6839Animation.prefilters.push(callback);
6840}
6841}
6842});
6843
6844jQuery.speed = function (speed, easing, fn) {
6845var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
6846complete: fn || !fn && easing ||
6847jQuery.isFunction(speed) && speed,
6848duration: speed,
6849easing: fn && easing || easing && !jQuery.isFunction(easing) && easing
6850};
6851
6852opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ?
6853opt.duration : opt.duration in jQuery.fx.speeds ?
6854jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
6855
6856// Normalize opt.queue - true/undefined/null -> "fx"
6857if (opt.queue == null || opt.queue === true) {
6858opt.queue = "fx";
6859}
6860
6861// Queueing
6862opt.old = opt.complete;
6863
6864opt.complete = function () {
6865if (jQuery.isFunction(opt.old)) {
6866opt.old.call(this);
6867}
6868
6869if (opt.queue) {
6870jQuery.dequeue(this, opt.queue);
6871}
6872};
6873
6874return opt;
6875};
6876
6877jQuery.fn.extend({
6878fadeTo: function (speed, to, easing, callback) {
6879
6880// Show any hidden elements after setting opacity to 0
6881return this.filter(isHidden).css("opacity", 0).show()
6882
6883// Animate to the value specified
6884.end().animate({ opacity: to }, speed, easing, callback);
6885},
6886animate: function (prop, speed, easing, callback) {
6887var empty = jQuery.isEmptyObject(prop),
6888optall = jQuery.speed(speed, easing, callback),
6889doAnimation = function () {
6890
6891// Operate on a copy of prop so per-property easing won't be lost
6892var anim = Animation(this, jQuery.extend({}, prop), optall);
6893
6894// Empty animations, or finishing resolves immediately
6895if (empty || dataPriv.get(this, "finish")) {
6896anim.stop(true);
6897}
6898};
6899doAnimation.finish = doAnimation;
6900
6901return empty || optall.queue === false ?
6902this.each(doAnimation) :
6903this.queue(optall.queue, doAnimation);
6904},
6905stop: function (type, clearQueue, gotoEnd) {
6906var stopQueue = function (hooks) {
6907var stop = hooks.stop;
6908delete hooks.stop;
6909stop(gotoEnd);
6910};
6911
6912if (typeof type !== "string") {
6913gotoEnd = clearQueue;
6914clearQueue = type;
6915type = undefined;
6916}
6917if (clearQueue && type !== false) {
6918this.queue(type || "fx", []);
6919}
6920
6921return this.each(function () {
6922var dequeue = true,
6923index = type != null && type + "queueHooks",
6924timers = jQuery.timers,
6925data = dataPriv.get(this);
6926
6927if (index) {
6928if (data[index] && data[index].stop) {
6929stopQueue(data[index]);
6930}
6931} else {
6932for (index in data) {
6933if (data[index] && data[index].stop && rrun.test(index)) {
6934stopQueue(data[index]);
6935}
6936}
6937}
6938
6939for (index = timers.length; index--;) {
6940if (timers[index].elem === this &&
6941(type == null || timers[index].queue === type)) {
6942
6943timers[index].anim.stop(gotoEnd);
6944dequeue = false;
6945timers.splice(index, 1);
6946}
6947}
6948
6949// Start the next in the queue if the last step wasn't forced.
6950// Timers currently will call their complete callbacks, which
6951// will dequeue but only if they were gotoEnd.
6952if (dequeue || !gotoEnd) {
6953jQuery.dequeue(this, type);
6954}
6955});
6956},
6957finish: function (type) {
6958if (type !== false) {
6959type = type || "fx";
6960}
6961return this.each(function () {
6962var index,
6963data = dataPriv.get(this),
6964queue = data[type + "queue"],
6965hooks = data[type + "queueHooks"],
6966timers = jQuery.timers,
6967length = queue ? queue.length : 0;
6968
6969// Enable finishing flag on private data
6970data.finish = true;
6971
6972// Empty the queue first
6973jQuery.queue(this, type, []);
6974
6975if (hooks && hooks.stop) {
6976hooks.stop.call(this, true);
6977}
6978
6979// Look for any active animations, and finish them
6980for (index = timers.length; index--;) {
6981if (timers[index].elem === this && timers[index].queue === type) {
6982timers[index].anim.stop(true);
6983timers.splice(index, 1);
6984}
6985}
6986
6987// Look for any animations in the old queue and finish them
6988for (index = 0; index < length; index++) {
6989if (queue[index] && queue[index].finish) {
6990queue[index].finish.call(this);
6991}
6992}
6993
6994// Turn off finishing flag
6995delete data.finish;
6996});
6997}
6998});
6999
7000jQuery.each(["toggle", "show", "hide"], function (i, name) {
7001var cssFn = jQuery.fn[name];
7002jQuery.fn[name] = function (speed, easing, callback) {
7003return speed == null || typeof speed === "boolean" ?
7004cssFn.apply(this, arguments) :
7005this.animate(genFx(name, true), speed, easing, callback);
7006};
7007});
7008
7009// Generate shortcuts for custom animations
7010jQuery.each({
7011slideDown: genFx("show"),
7012slideUp: genFx("hide"),
7013slideToggle: genFx("toggle"),
7014fadeIn: { opacity: "show" },
7015fadeOut: { opacity: "hide" },
7016fadeToggle: { opacity: "toggle" }
7017}, function (name, props) {
7018jQuery.fn[name] = function (speed, easing, callback) {
7019return this.animate(props, speed, easing, callback);
7020};
7021});
7022
7023jQuery.timers = [];
7024jQuery.fx.tick = function () {
7025var timer,
7026i = 0,
7027timers = jQuery.timers;
7028
7029fxNow = jQuery.now();
7030
7031for (; i < timers.length; i++) {
7032timer = timers[i];
7033
7034// Checks the timer has not already been removed
7035if (!timer() && timers[i] === timer) {
7036timers.splice(i--, 1);
7037}
7038}
7039
7040if (!timers.length) {
7041jQuery.fx.stop();
7042}
7043fxNow = undefined;
7044};
7045
7046jQuery.fx.timer = function (timer) {
7047jQuery.timers.push(timer);
7048if (timer()) {
7049jQuery.fx.start();
7050} else {
7051jQuery.timers.pop();
7052}
7053};
7054
7055jQuery.fx.interval = 13;
7056jQuery.fx.start = function () {
7057if (!timerId) {
7058timerId = window.setInterval(jQuery.fx.tick, jQuery.fx.interval);
7059}
7060};
7061
7062jQuery.fx.stop = function () {
7063window.clearInterval(timerId);
7064
7065timerId = null;
7066};
7067
7068jQuery.fx.speeds = {
7069slow: 600,
7070fast: 200,
7071
7072// Default speed
7073_default: 400
7074};
7075
7076
7077// Based off of the plugin by Clint Helfers, with permission.
7078// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
7079jQuery.fn.delay = function (time, type) {
7080time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
7081type = type || "fx";
7082
7083return this.queue(type, function (next, hooks) {
7084var timeout = window.setTimeout(next, time);
7085hooks.stop = function () {
7086window.clearTimeout(timeout);
7087};
7088});
7089};
7090
7091
7092(function () {
7093var input = document.createElement("input"),
7094select = document.createElement("select"),
7095opt = select.appendChild(document.createElement("option"));
7096
7097input.type = "checkbox";
7098
7099// Support: iOS<=5.1, Android<=4.2+
7100// Default value for a checkbox should be "on"
7101support.checkOn = input.value !== "";
7102
7103// Support: IE<=11+
7104// Must access selectedIndex to make default options select
7105support.optSelected = opt.selected;
7106
7107// Support: Android<=2.3
7108// Options inside disabled selects are incorrectly marked as disabled
7109select.disabled = true;
7110support.optDisabled = !opt.disabled;
7111
7112// Support: IE<=11+
7113// An input loses its value after becoming a radio
7114input = document.createElement("input");
7115input.value = "t";
7116input.type = "radio";
7117support.radioValue = input.value === "t";
7118})();
7119
7120
7121var boolHook,
7122attrHandle = jQuery.expr.attrHandle;
7123
7124jQuery.fn.extend({
7125attr: function (name, value) {
7126return access(this, jQuery.attr, name, value, arguments.length > 1);
7127},
7128
7129removeAttr: function (name) {
7130return this.each(function () {
7131jQuery.removeAttr(this, name);
7132});
7133}
7134});
7135
7136jQuery.extend({
7137attr: function (elem, name, value) {
7138var ret, hooks,
7139nType = elem.nodeType;
7140
7141// Don't get/set attributes on text, comment and attribute nodes
7142if (nType === 3 || nType === 8 || nType === 2) {
7143return;
7144}
7145
7146// Fallback to prop when attributes are not supported
7147if (typeof elem.getAttribute === "undefined") {
7148return jQuery.prop(elem, name, value);
7149}
7150
7151// All attributes are lowercase
7152// Grab necessary hook if one is defined
7153if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
7154name = name.toLowerCase();
7155hooks = jQuery.attrHooks[name] ||
7156(jQuery.expr.match.bool.test(name) ? boolHook : undefined);
7157}
7158
7159if (value !== undefined) {
7160if (value === null) {
7161jQuery.removeAttr(elem, name);
7162return;
7163}
7164
7165if (hooks && "set" in hooks &&
7166(ret = hooks.set(elem, value, name)) !== undefined) {
7167return ret;
7168}
7169
7170elem.setAttribute(name, value + "");
7171return value;
7172}
7173
7174if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
7175return ret;
7176}
7177
7178ret = jQuery.find.attr(elem, name);
7179
7180// Non-existent attributes return null, we normalize to undefined
7181return ret == null ? undefined : ret;
7182},
7183
7184attrHooks: {
7185type: {
7186set: function (elem, value) {
7187if (!support.radioValue && value === "radio" &&
7188jQuery.nodeName(elem, "input")) {
7189var val = elem.value;
7190elem.setAttribute("type", value);
7191if (val) {
7192elem.value = val;
7193}
7194return value;
7195}
7196}
7197}
7198},
7199
7200removeAttr: function (elem, value) {
7201var name, propName,
7202i = 0,
7203attrNames = value && value.match(rnotwhite);
7204
7205if (attrNames && elem.nodeType === 1) {
7206while ((name = attrNames[i++])) {
7207propName = jQuery.propFix[name] || name;
7208
7209// Boolean attributes get special treatment (#10870)
7210if (jQuery.expr.match.bool.test(name)) {
7211
7212// Set corresponding property to false
7213elem[propName] = false;
7214}
7215
7216elem.removeAttribute(name);
7217}
7218}
7219}
7220});
7221
7222// Hooks for boolean attributes
7223boolHook = {
7224set: function (elem, value, name) {
7225if (value === false) {
7226
7227// Remove boolean attributes when set to false
7228jQuery.removeAttr(elem, name);
7229} else {
7230elem.setAttribute(name, name);
7231}
7232return name;
7233}
7234};
7235jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function (i, name) {
7236var getter = attrHandle[name] || jQuery.find.attr;
7237
7238attrHandle[name] = function (elem, name, isXML) {
7239var ret, handle;
7240if (!isXML) {
7241
7242// Avoid an infinite loop by temporarily removing this function from the getter
7243handle = attrHandle[name];
7244attrHandle[name] = ret;
7245ret = getter(elem, name, isXML) != null ?
7246name.toLowerCase() :
7247null;
7248attrHandle[name] = handle;
7249}
7250return ret;
7251};
7252});
7253
7254
7255
7256
7257var rfocusable = /^(?:input|select|textarea|button)$/i,
7258rclickable = /^(?:a|area)$/i;
7259
7260jQuery.fn.extend({
7261prop: function (name, value) {
7262return access(this, jQuery.prop, name, value, arguments.length > 1);
7263},
7264
7265removeProp: function (name) {
7266return this.each(function () {
7267delete this[jQuery.propFix[name] || name];
7268});
7269}
7270});
7271
7272jQuery.extend({
7273prop: function (elem, name, value) {
7274var ret, hooks,
7275nType = elem.nodeType;
7276
7277// Don't get/set properties on text, comment and attribute nodes
7278if (nType === 3 || nType === 8 || nType === 2) {
7279return;
7280}
7281
7282if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
7283
7284// Fix name and attach hooks
7285name = jQuery.propFix[name] || name;
7286hooks = jQuery.propHooks[name];
7287}
7288
7289if (value !== undefined) {
7290if (hooks && "set" in hooks &&
7291(ret = hooks.set(elem, value, name)) !== undefined) {
7292return ret;
7293}
7294
7295return (elem[name] = value);
7296}
7297
7298if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
7299return ret;
7300}
7301
7302return elem[name];
7303},
7304
7305propHooks: {
7306tabIndex: {
7307get: function (elem) {
7308
7309// elem.tabIndex doesn't always return the
7310// correct value when it hasn't been explicitly set
7311// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
7312// Use proper attribute retrieval(#12072)
7313var tabindex = jQuery.find.attr(elem, "tabindex");
7314
7315return tabindex ?
7316parseInt(tabindex, 10) :
7317rfocusable.test(elem.nodeName) ||
7318rclickable.test(elem.nodeName) && elem.href ?
73190 :
7320-1;
7321}
7322}
7323},
7324
7325propFix: {
7326"for": "htmlFor",
7327"class": "className"
7328}
7329});
7330
7331// Support: IE <=11 only
7332// Accessing the selectedIndex property
7333// forces the browser to respect setting selected
7334// on the option
7335// The getter ensures a default option is selected
7336// when in an optgroup
7337if (!support.optSelected) {
7338jQuery.propHooks.selected = {
7339get: function (elem) {
7340var parent = elem.parentNode;
7341if (parent && parent.parentNode) {
7342parent.parentNode.selectedIndex;
7343}
7344return null;
7345},
7346set: function (elem) {
7347var parent = elem.parentNode;
7348if (parent) {
7349parent.selectedIndex;
7350
7351if (parent.parentNode) {
7352parent.parentNode.selectedIndex;
7353}
7354}
7355}
7356};
7357}
7358
7359jQuery.each([
7360"tabIndex",
7361"readOnly",
7362"maxLength",
7363"cellSpacing",
7364"cellPadding",
7365"rowSpan",
7366"colSpan",
7367"useMap",
7368"frameBorder",
7369"contentEditable"
7370], function () {
7371jQuery.propFix[this.toLowerCase()] = this;
7372});
7373
7374
7375
7376
7377var rclass = /[\t\r\n\f]/g;
7378
7379function getClass(elem) {
7380return elem.getAttribute && elem.getAttribute("class") || "";
7381}
7382
7383jQuery.fn.extend({
7384addClass: function (value) {
7385var classes, elem, cur, curValue, clazz, j, finalValue,
7386i = 0;
7387
7388if (jQuery.isFunction(value)) {
7389return this.each(function (j) {
7390jQuery(this).addClass(value.call(this, j, getClass(this)));
7391});
7392}
7393
7394if (typeof value === "string" && value) {
7395classes = value.match(rnotwhite) || [];
7396
7397while ((elem = this[i++])) {
7398curValue = getClass(elem);
7399cur = elem.nodeType === 1 &&
7400(" " + curValue + " ").replace(rclass, " ");
7401
7402if (cur) {
7403j = 0;
7404while ((clazz = classes[j++])) {
7405if (cur.indexOf(" " + clazz + " ") < 0) {
7406cur += clazz + " ";
7407}
7408}
7409
7410// Only assign if different to avoid unneeded rendering.
7411finalValue = jQuery.trim(cur);
7412if (curValue !== finalValue) {
7413elem.setAttribute("class", finalValue);
7414}
7415}
7416}
7417}
7418
7419return this;
7420},
7421
7422removeClass: function (value) {
7423var classes, elem, cur, curValue, clazz, j, finalValue,
7424i = 0;
7425
7426if (jQuery.isFunction(value)) {
7427return this.each(function (j) {
7428jQuery(this).removeClass(value.call(this, j, getClass(this)));
7429});
7430}
7431
7432if (!arguments.length) {
7433return this.attr("class", "");
7434}
7435
7436if (typeof value === "string" && value) {
7437classes = value.match(rnotwhite) || [];
7438
7439while ((elem = this[i++])) {
7440curValue = getClass(elem);
7441
7442// This expression is here for better compressibility (see addClass)
7443cur = elem.nodeType === 1 &&
7444(" " + curValue + " ").replace(rclass, " ");
7445
7446if (cur) {
7447j = 0;
7448while ((clazz = classes[j++])) {
7449
7450// Remove *all* instances
7451while (cur.indexOf(" " + clazz + " ") > -1) {
7452cur = cur.replace(" " + clazz + " ", " ");
7453}
7454}
7455
7456// Only assign if different to avoid unneeded rendering.
7457finalValue = jQuery.trim(cur);
7458if (curValue !== finalValue) {
7459elem.setAttribute("class", finalValue);
7460}
7461}
7462}
7463}
7464
7465return this;
7466},
7467
7468toggleClass: function (value, stateVal) {
7469var type = typeof value;
7470
7471if (typeof stateVal === "boolean" && type === "string") {
7472return stateVal ? this.addClass(value) : this.removeClass(value);
7473}
7474
7475if (jQuery.isFunction(value)) {
7476return this.each(function (i) {
7477jQuery(this).toggleClass(
7478value.call(this, i, getClass(this), stateVal),
7479stateVal
7480);
7481});
7482}
7483
7484return this.each(function () {
7485var className, i, self, classNames;
7486
7487if (type === "string") {
7488
7489// Toggle individual class names
7490i = 0;
7491self = jQuery(this);
7492classNames = value.match(rnotwhite) || [];
7493
7494while ((className = classNames[i++])) {
7495
7496// Check each className given, space separated list
7497if (self.hasClass(className)) {
7498self.removeClass(className);
7499} else {
7500self.addClass(className);
7501}
7502}
7503
7504// Toggle whole class name
7505} else if (value === undefined || type === "boolean") {
7506className = getClass(this);
7507if (className) {
7508
7509// Store className if set
7510dataPriv.set(this, "__className__", className);
7511}
7512
7513// If the element has a class name or if we're passed `false`,
7514// then remove the whole classname (if there was one, the above saved it).
7515// Otherwise bring back whatever was previously saved (if anything),
7516// falling back to the empty string if nothing was stored.
7517if (this.setAttribute) {
7518this.setAttribute("class",
7519className || value === false ?
7520"" :
7521dataPriv.get(this, "__className__") || ""
7522);
7523}
7524}
7525});
7526},
7527
7528hasClass: function (selector) {
7529var className, elem,
7530i = 0;
7531
7532className = " " + selector + " ";
7533while ((elem = this[i++])) {
7534if (elem.nodeType === 1 &&
7535(" " + getClass(elem) + " ").replace(rclass, " ")
7536.indexOf(className) > -1
7537) {
7538return true;
7539}
7540}
7541
7542return false;
7543}
7544});
7545
7546
7547
7548
7549var rreturn = /\r/g,
7550rspaces = /[\x20\t\r\n\f]+/g;
7551
7552jQuery.fn.extend({
7553val: function (value) {
7554var hooks, ret, isFunction,
7555elem = this[0];
7556
7557if (!arguments.length) {
7558if (elem) {
7559hooks = jQuery.valHooks[elem.type] ||
7560jQuery.valHooks[elem.nodeName.toLowerCase()];
7561
7562if (hooks &&
7563"get" in hooks &&
7564(ret = hooks.get(elem, "value")) !== undefined
7565) {
7566return ret;
7567}
7568
7569ret = elem.value;
7570
7571return typeof ret === "string" ?
7572
7573// Handle most common string cases
7574ret.replace(rreturn, "") :
7575
7576// Handle cases where value is null/undef or number
7577ret == null ? "" : ret;
7578}
7579
7580return;
7581}
7582
7583isFunction = jQuery.isFunction(value);
7584
7585return this.each(function (i) {
7586var val;
7587
7588if (this.nodeType !== 1) {
7589return;
7590}
7591
7592if (isFunction) {
7593val = value.call(this, i, jQuery(this).val());
7594} else {
7595val = value;
7596}
7597
7598// Treat null/undefined as ""; convert numbers to string
7599if (val == null) {
7600val = "";
7601
7602} else if (typeof val === "number") {
7603val += "";
7604
7605} else if (jQuery.isArray(val)) {
7606val = jQuery.map(val, function (value) {
7607return value == null ? "" : value + "";
7608});
7609}
7610
7611hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()];
7612
7613// If set returns undefined, fall back to normal setting
7614if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === undefined) {
7615this.value = val;
7616}
7617});
7618}
7619});
7620
7621jQuery.extend({
7622valHooks: {
7623option: {
7624get: function (elem) {
7625
7626var val = jQuery.find.attr(elem, "value");
7627return val != null ?
7628val :
7629
7630// Support: IE10-11+
7631// option.text throws exceptions (#14686, #14858)
7632// Strip and collapse whitespace
7633// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
7634jQuery.trim(jQuery.text(elem)).replace(rspaces, " ");
7635}
7636},
7637select: {
7638get: function (elem) {
7639var value, option,
7640options = elem.options,
7641index = elem.selectedIndex,
7642one = elem.type === "select-one" || index < 0,
7643values = one ? null : [],
7644max = one ? index + 1 : options.length,
7645i = index < 0 ?
7646max :
7647one ? index : 0;
7648
7649// Loop through all the selected options
7650for (; i < max; i++) {
7651option = options[i];
7652
7653// IE8-9 doesn't update selected after form reset (#2551)
7654if ((option.selected || i === index) &&
7655
7656// Don't return options that are disabled or in a disabled optgroup
7657(support.optDisabled ?
7658!option.disabled : option.getAttribute("disabled") === null) &&
7659(!option.parentNode.disabled ||
7660!jQuery.nodeName(option.parentNode, "optgroup"))) {
7661
7662// Get the specific value for the option
7663value = jQuery(option).val();
7664
7665// We don't need an array for one selects
7666if (one) {
7667return value;
7668}
7669
7670// Multi-Selects return an array
7671values.push(value);
7672}
7673}
7674
7675return values;
7676},
7677
7678set: function (elem, value) {
7679var optionSet, option,
7680options = elem.options,
7681values = jQuery.makeArray(value),
7682i = options.length;
7683
7684while (i--) {
7685option = options[i];
7686if (option.selected =
7687jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1
7688) {
7689optionSet = true;
7690}
7691}
7692
7693// Force browsers to behave consistently when non-matching value is set
7694if (!optionSet) {
7695elem.selectedIndex = -1;
7696}
7697return values;
7698}
7699}
7700}
7701});
7702
7703// Radios and checkboxes getter/setter
7704jQuery.each(["radio", "checkbox"], function () {
7705jQuery.valHooks[this] = {
7706set: function (elem, value) {
7707if (jQuery.isArray(value)) {
7708return (elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1);
7709}
7710}
7711};
7712if (!support.checkOn) {
7713jQuery.valHooks[this].get = function (elem) {
7714return elem.getAttribute("value") === null ? "on" : elem.value;
7715};
7716}
7717});
7718
7719
7720
7721
7722// Return jQuery for attributes-only inclusion
7723
7724
7725var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
7726
7727jQuery.extend(jQuery.event, {
7728
7729trigger: function (event, data, elem, onlyHandlers) {
7730
7731var i, cur, tmp, bubbleType, ontype, handle, special,
7732eventPath = [elem || document],
7733type = hasOwn.call(event, "type") ? event.type : event,
7734namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
7735
7736cur = tmp = elem = elem || document;
7737
7738// Don't do events on text and comment nodes
7739if (elem.nodeType === 3 || elem.nodeType === 8) {
7740return;
7741}
7742
7743// focus/blur morphs to focusin/out; ensure we're not firing them right now
7744if (rfocusMorph.test(type + jQuery.event.triggered)) {
7745return;
7746}
7747
7748if (type.indexOf(".") > -1) {
7749
7750// Namespaced trigger; create a regexp to match event type in handle()
7751namespaces = type.split(".");
7752type = namespaces.shift();
7753namespaces.sort();
7754}
vendor: 5,366 bytes, lines 7755-7956
7755ontype = type.indexOf(":") < 0 && "on" + type;
7756
7757// Caller can pass in a jQuery.Event object, Object, or just an event type string
7758event = event[jQuery.expando] ?
7759event :
7760new jQuery.Event(type, typeof event === "object" && event);
7761
7762// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
7763event.isTrigger = onlyHandlers ? 2 : 3;
7764event.namespace = namespaces.join(".");
7765event.rnamespace = event.namespace ?
7766new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") :
7767null;
7768
7769// Clean up the event in case it is being reused
7770event.result = undefined;
7771if (!event.target) {
7772event.target = elem;
7773}
7774
7775// Clone any incoming data and prepend the event, creating the handler arg list
7776data = data == null ?
7777[event] :
7778jQuery.makeArray(data, [event]);
7779
7780// Allow special events to draw outside the lines
7781special = jQuery.event.special[type] || {};
7782if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
7783return;
7784}
7785
7786// Determine event propagation path in advance, per W3C events spec (#9951)
7787// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
7788if (!onlyHandlers && !special.noBubble && !jQuery.isWindow(elem)) {
7789
7790bubbleType = special.delegateType || type;
7791if (!rfocusMorph.test(bubbleType + type)) {
7792cur = cur.parentNode;
7793}
7794for (; cur; cur = cur.parentNode) {
7795eventPath.push(cur);
7796tmp = cur;
7797}
7798
7799// Only add window if we got to document (e.g., not plain obj or detached DOM)
7800if (tmp === (elem.ownerDocument || document)) {
7801eventPath.push(tmp.defaultView || tmp.parentWindow || window);
7802}
7803}
7804
7805// Fire handlers on the event path
7806i = 0;
7807while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {
7808
7809event.type = i > 1 ?
7810bubbleType :
7811special.bindType || type;
7812
7813// jQuery handler
7814handle = (dataPriv.get(cur, "events") || {})[event.type] &&
7815dataPriv.get(cur, "handle");
7816if (handle) {
7817handle.apply(cur, data);
7818}
7819
7820// Native handler
7821handle = ontype && cur[ontype];
7822if (handle && handle.apply && acceptData(cur)) {
7823event.result = handle.apply(cur, data);
7824if (event.result === false) {
7825event.preventDefault();
7826}
7827}
7828}
7829event.type = type;
7830
7831// If nobody prevented the default action, do it now
7832if (!onlyHandlers && !event.isDefaultPrevented()) {
7833
7834if ((!special._default ||
7835special._default.apply(eventPath.pop(), data) === false) &&
7836acceptData(elem)) {
7837
7838// Call a native DOM method on the target with the same name name as the event.
7839// Don't do default actions on window, that's where global variables be (#6170)
7840if (ontype && jQuery.isFunction(elem[type]) && !jQuery.isWindow(elem)) {
7841
7842// Don't re-trigger an onFOO event when we call its FOO() method
7843tmp = elem[ontype];
7844
7845if (tmp) {
7846elem[ontype] = null;
7847}
7848
7849// Prevent re-triggering of the same event, since we already bubbled it above
7850jQuery.event.triggered = type;
7851elem[type]();
7852jQuery.event.triggered = undefined;
7853
7854if (tmp) {
7855elem[ontype] = tmp;
7856}
7857}
7858}
7859}
7860
7861return event.result;
7862},
7863
7864// Piggyback on a donor event to simulate a different one
7865// Used only for `focus(in | out)` events
7866simulate: function (type, elem, event) {
7867var e = jQuery.extend(
7868new jQuery.Event(),
7869event,
7870{
7871type: type,
7872isSimulated: true
7873}
7874);
7875
7876jQuery.event.trigger(e, null, elem);
7877}
7878
7879});
7880
7881jQuery.fn.extend({
7882
7883trigger: function (type, data) {
7884return this.each(function () {
7885jQuery.event.trigger(type, data, this);
7886});
7887},
7888triggerHandler: function (type, data) {
7889var elem = this[0];
7890if (elem) {
7891return jQuery.event.trigger(type, data, elem, true);
7892}
7893}
7894});
7895
7896
7897jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick " +
7898"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
7899"change select submit keydown keypress keyup error contextmenu").split(" "),
7900function (i, name) {
7901
7902// Handle event binding
7903jQuery.fn[name] = function (data, fn) {
7904return arguments.length > 0 ?
7905this.on(name, null, data, fn) :
7906this.trigger(name);
7907};
7908});
7909
7910jQuery.fn.extend({
7911hover: function (fnOver, fnOut) {
7912return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
7913}
7914});
7915
7916
7917
7918
7919support.focusin = "onfocusin" in window;
7920
7921
7922// Support: Firefox
7923// Firefox doesn't have focus(in | out) events
7924// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
7925//
7926// Support: Chrome, Safari
7927// focus(in | out) events fire after focus & blur events,
7928// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
7929// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857
7930if (!support.focusin) {
7931jQuery.each({ focus: "focusin", blur: "focusout" }, function (orig, fix) {
7932
7933// Attach a single capturing handler on the document while someone wants focusin/focusout
7934var handler = function (event) {
7935jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));
7936};
7937
7938jQuery.event.special[fix] = {
7939setup: function () {
7940var doc = this.ownerDocument || this,
7941attaches = dataPriv.access(doc, fix);
7942
7943if (!attaches) {
7944doc.addEventListener(orig, handler, true);
7945}
7946dataPriv.access(doc, fix, (attaches || 0) + 1);
7947},
7948teardown: function () {
7949var doc = this.ownerDocument || this,
7950attaches = dataPriv.access(doc, fix) - 1;
7951
7952if (!attaches) {
7953doc.removeEventListener(orig, handler, true);
7954dataPriv.remove(doc, fix);
7955
7956} else {
vendor: 4,791 bytes, lines 7957-8146
7957dataPriv.access(doc, fix, attaches);
7958}
7959}
7960};
7961});
7962}
7963var location = window.location;
7964
7965var nonce = jQuery.now();
7966
7967var rquery = (/\?/);
7968
7969
7970
7971// Support: Android 2.3
7972// Workaround failure to string-cast null input
7973jQuery.parseJSON = function (data) {
7974return JSON.parse(data + "");
7975};
7976
7977
7978// Cross-browser xml parsing
7979jQuery.parseXML = function (data) {
7980var xml;
7981if (!data || typeof data !== "string") {
7982return null;
7983}
7984
7985// Support: IE9
7986try {
7987xml = (new window.DOMParser()).parseFromString(data, "text/xml");
7988} catch (e) {
7989xml = undefined;
7990}
7991
7992if (!xml || xml.getElementsByTagName("parsererror").length) {
7993jQuery.error("Invalid XML: " + data);
7994}
7995return xml;
7996};
7997
7998
7999var
8000rhash = /#.*$/,
8001rts = /([?&])_=[^&]*/,
8002rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
8003
8004// #7653, #8125, #8152: local protocol detection
8005rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
8006rnoContent = /^(?:GET|HEAD)$/,
8007rprotocol = /^\/\//,
8008
8009/* Prefilters
8010 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
8011 * 2) These are called:
8012 *    - BEFORE asking for a transport
8013 *    - AFTER param serialization (s.data is a string if s.processData is true)
8014 * 3) key is the dataType
8015 * 4) the catchall symbol "*" can be used
8016 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
8017 */
8018prefilters = {},
8019
8020/* Transports bindings
8021 * 1) key is the dataType
8022 * 2) the catchall symbol "*" can be used
8023 * 3) selection will start with transport dataType and THEN go to "*" if needed
8024 */
8025transports = {},
8026
8027// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
8028allTypes = "*/".concat("*"),
8029
8030// Anchor tag for parsing the document origin
8031originAnchor = document.createElement("a");
8032originAnchor.href = location.href;
8033
8034// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
8035function addToPrefiltersOrTransports(structure) {
8036
8037// dataTypeExpression is optional and defaults to "*"
8038return function (dataTypeExpression, func) {
8039
8040if (typeof dataTypeExpression !== "string") {
8041func = dataTypeExpression;
8042dataTypeExpression = "*";
8043}
8044
8045var dataType,
8046i = 0,
8047dataTypes = dataTypeExpression.toLowerCase().match(rnotwhite) || [];
8048
8049if (jQuery.isFunction(func)) {
8050
8051// For each dataType in the dataTypeExpression
8052while ((dataType = dataTypes[i++])) {
8053
8054// Prepend if requested
8055if (dataType[0] === "+") {
8056dataType = dataType.slice(1) || "*";
8057(structure[dataType] = structure[dataType] || []).unshift(func);
8058
8059// Otherwise append
8060} else {
8061(structure[dataType] = structure[dataType] || []).push(func);
8062}
8063}
8064}
8065};
8066}
8067
8068// Base inspection function for prefilters and transports
8069function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
8070
8071var inspected = {},
8072seekingTransport = (structure === transports);
8073
8074function inspect(dataType) {
8075var selected;
8076inspected[dataType] = true;
8077jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {
8078var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
8079if (typeof dataTypeOrTransport === "string" &&
8080!seekingTransport && !inspected[dataTypeOrTransport]) {
8081
8082options.dataTypes.unshift(dataTypeOrTransport);
8083inspect(dataTypeOrTransport);
8084return false;
8085} else if (seekingTransport) {
8086return !(selected = dataTypeOrTransport);
8087}
8088});
8089return selected;
8090}
8091
8092return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
8093}
8094
8095// A special extend for ajax options
8096// that takes "flat" options (not to be deep extended)
8097// Fixes #9887
8098function ajaxExtend(target, src) {
8099var key, deep,
8100flatOptions = jQuery.ajaxSettings.flatOptions || {};
8101
8102for (key in src) {
8103if (src[key] !== undefined) {
8104(flatOptions[key] ? target : (deep || (deep = {})))[key] = src[key];
8105}
8106}
8107if (deep) {
8108jQuery.extend(true, target, deep);
8109}
8110
8111return target;
8112}
8113
8114/* Handles responses to an ajax request:
8115 * - finds the right dataType (mediates between content-type and expected dataType)
8116 * - returns the corresponding response
8117 */
8118function ajaxHandleResponses(s, jqXHR, responses) {
8119
8120var ct, type, finalDataType, firstDataType,
8121contents = s.contents,
8122dataTypes = s.dataTypes;
8123
8124// Remove auto dataType and get content-type in the process
8125while (dataTypes[0] === "*") {
8126dataTypes.shift();
8127if (ct === undefined) {
8128ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
8129}
8130}
8131
8132// Check if we're dealing with a known content-type
8133if (ct) {
8134for (type in contents) {
8135if (contents[type] && contents[type].test(ct)) {
8136dataTypes.unshift(type);
8137break;
8138}
8139}
8140}
8141
8142// Check to see if we have a response for the expected dataType
8143if (dataTypes[0] in responses) {
8144finalDataType = dataTypes[0];
8145} else {
8146
vendor: 4,940 bytes, lines 8147-8376
8147// Try convertible dataTypes
8148for (type in responses) {
8149if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
8150finalDataType = type;
8151break;
8152}
8153if (!firstDataType) {
8154firstDataType = type;
8155}
8156}
8157
8158// Or just use first one
8159finalDataType = finalDataType || firstDataType;
8160}
8161
8162// If we found a dataType
8163// We add the dataType to the list if needed
8164// and return the corresponding response
8165if (finalDataType) {
8166if (finalDataType !== dataTypes[0]) {
8167dataTypes.unshift(finalDataType);
8168}
8169return responses[finalDataType];
8170}
8171}
8172
8173/* Chain conversions given the request and the original response
8174 * Also sets the responseXXX fields on the jqXHR instance
8175 */
8176function ajaxConvert(s, response, jqXHR, isSuccess) {
8177var conv2, current, conv, tmp, prev,
8178converters = {},
8179
8180// Work with a copy of dataTypes in case we need to modify it for conversion
8181dataTypes = s.dataTypes.slice();
8182
8183// Create converters map with lowercased keys
8184if (dataTypes[1]) {
8185for (conv in s.converters) {
8186converters[conv.toLowerCase()] = s.converters[conv];
8187}
8188}
8189
8190current = dataTypes.shift();
8191
8192// Convert to each sequential dataType
8193while (current) {
8194
8195if (s.responseFields[current]) {
8196jqXHR[s.responseFields[current]] = response;
8197}
8198
8199// Apply the dataFilter if provided
8200if (!prev && isSuccess && s.dataFilter) {
8201response = s.dataFilter(response, s.dataType);
8202}
8203
8204prev = current;
8205current = dataTypes.shift();
8206
8207if (current) {
8208
8209// There's only work to do if current dataType is non-auto
8210if (current === "*") {
8211
8212current = prev;
8213
8214// Convert response if prev dataType is non-auto and differs from current
8215} else if (prev !== "*" && prev !== current) {
8216
8217// Seek a direct converter
8218conv = converters[prev + " " + current] || converters["* " + current];
8219
8220// If none found, seek a pair
8221if (!conv) {
8222for (conv2 in converters) {
8223
8224// If conv2 outputs current
8225tmp = conv2.split(" ");
8226if (tmp[1] === current) {
8227
8228// If prev can be converted to accepted input
8229conv = converters[prev + " " + tmp[0]] ||
8230converters["* " + tmp[0]];
8231if (conv) {
8232
8233// Condense equivalence converters
8234if (conv === true) {
8235conv = converters[conv2];
8236
8237// Otherwise, insert the intermediate dataType
8238} else if (converters[conv2] !== true) {
8239current = tmp[0];
8240dataTypes.unshift(tmp[1]);
8241}
8242break;
8243}
8244}
8245}
8246}
8247
8248// Apply converter (if not an equivalence)
8249if (conv !== true) {
8250
8251// Unless errors are allowed to bubble, catch and return them
8252if (conv && s.throws) {
8253response = conv(response);
8254} else {
8255try {
8256response = conv(response);
8257} catch (e) {
8258return {
8259state: "parsererror",
8260error: conv ? e : "No conversion from " + prev + " to " + current
8261};
8262}
8263}
8264}
8265}
8266}
8267}
8268
8269return { state: "success", data: response };
8270}
8271
8272jQuery.extend({
8273
8274// Counter for holding the number of active queries
8275active: 0,
8276
8277// Last-Modified header cache for next request
8278lastModified: {},
8279etag: {},
8280
8281ajaxSettings: {
8282url: location.href,
8283type: "GET",
8284isLocal: rlocalProtocol.test(location.protocol),
8285global: true,
8286processData: true,
8287async: true,
8288contentType: "application/x-www-form-urlencoded; charset=UTF-8",
8289/*
8290timeout: 0,
8291data: null,
8292dataType: null,
8293username: null,
8294password: null,
8295cache: null,
8296throws: false,
8297traditional: false,
8298headers: {},
8299*/
8300
8301accepts: {
8302"*": allTypes,
8303text: "text/plain",
8304html: "text/html",
8305xml: "application/xml, text/xml",
8306json: "application/json, text/javascript"
8307},
8308
8309contents: {
8310xml: /\bxml\b/,
8311html: /\bhtml/,
8312json: /\bjson\b/
8313},
8314
8315responseFields: {
8316xml: "responseXML",
8317text: "responseText",
8318json: "responseJSON"
8319},
8320
8321// Data converters
8322// Keys separate source (or catchall "*") and destination types with a single space
8323converters: {
8324
8325// Convert anything to text
8326"* text": String,
8327
8328// Text to html (true = no transformation)
8329"text html": true,
8330
8331// Evaluate text as a json expression
8332"text json": jQuery.parseJSON,
8333
8334// Parse text as xml
8335"text xml": jQuery.parseXML
8336},
8337
8338// For options that shouldn't be deep extended:
8339// you can add your own custom options here if
8340// and when you create one that shouldn't be
8341// deep extended (see ajaxExtend)
8342flatOptions: {
8343url: true,
8344context: true
8345}
8346},
8347
8348// Creates a full fledged settings object into target
8349// with both ajaxSettings and settings fields.
8350// If target is omitted, writes into ajaxSettings.
8351ajaxSetup: function (target, settings) {
8352return settings ?
8353
8354// Building a settings object
8355ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) :
8356
8357// Extending ajaxSettings
8358ajaxExtend(jQuery.ajaxSettings, target);
8359},
8360
8361ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
8362ajaxTransport: addToPrefiltersOrTransports(transports),
8363
8364// Main method
8365ajax: function (url, options) {
8366
8367// If url is an object, simulate pre-1.5 signature
8368if (typeof url === "object") {
8369options = url;
8370url = undefined;
8371}
8372
8373// Force options to be an object
8374options = options || {};
8375
8376var transport,
vendor: 30,599 bytes, lines 8377-9679
8377
8378// URL without anti-cache param
8379cacheURL,
8380
8381// Response headers
8382responseHeadersString,
8383responseHeaders,
8384
8385// timeout handle
8386timeoutTimer,
8387
8388// Url cleanup var
8389urlAnchor,
8390
8391// To know if global events are to be dispatched
8392fireGlobals,
8393
8394// Loop variable
8395i,
8396
8397// Create the final options object
8398s = jQuery.ajaxSetup({}, options),
8399
8400// Callbacks context
8401callbackContext = s.context || s,
8402
8403// Context for global events is callbackContext if it is a DOM node or jQuery collection
8404globalEventContext = s.context &&
8405(callbackContext.nodeType || callbackContext.jquery) ?
8406jQuery(callbackContext) :
8407jQuery.event,
8408
8409// Deferreds
8410deferred = jQuery.Deferred(),
8411completeDeferred = jQuery.Callbacks("once memory"),
8412
8413// Status-dependent callbacks
8414statusCode = s.statusCode || {},
8415
8416// Headers (they are sent all at once)
8417requestHeaders = {},
8418requestHeadersNames = {},
8419
8420// The jqXHR state
8421state = 0,
8422
8423// Default abort message
8424strAbort = "canceled",
8425
8426// Fake xhr
8427jqXHR = {
8428readyState: 0,
8429
8430// Builds headers hashtable if needed
8431getResponseHeader: function (key) {
8432var match;
8433if (state === 2) {
8434if (!responseHeaders) {
8435responseHeaders = {};
8436while ((match = rheaders.exec(responseHeadersString))) {
8437responseHeaders[match[1].toLowerCase()] = match[2];
8438}
8439}
8440match = responseHeaders[key.toLowerCase()];
8441}
8442return match == null ? null : match;
8443},
8444
8445// Raw string
8446getAllResponseHeaders: function () {
8447return state === 2 ? responseHeadersString : null;
8448},
8449
8450// Caches the header
8451setRequestHeader: function (name, value) {
8452var lname = name.toLowerCase();
8453if (!state) {
8454name = requestHeadersNames[lname] = requestHeadersNames[lname] || name;
8455requestHeaders[name] = value;
8456}
8457return this;
8458},
8459
8460// Overrides response content-type header
8461overrideMimeType: function (type) {
8462if (!state) {
8463s.mimeType = type;
8464}
8465return this;
8466},
8467
8468// Status-dependent callbacks
8469statusCode: function (map) {
8470var code;
8471if (map) {
8472if (state < 2) {
8473for (code in map) {
8474
8475// Lazy-add the new callback in a way that preserves old ones
8476statusCode[code] = [statusCode[code], map[code]];
8477}
8478} else {
8479
8480// Execute the appropriate callbacks
8481jqXHR.always(map[jqXHR.status]);
8482}
8483}
8484return this;
8485},
8486
8487// Cancel the request
8488abort: function (statusText) {
8489var finalText = statusText || strAbort;
8490if (transport) {
8491transport.abort(finalText);
8492}
8493done(0, finalText);
8494return this;
8495}
8496};
8497
8498// Attach deferreds
8499deferred.promise(jqXHR).complete = completeDeferred.add;
8500jqXHR.success = jqXHR.done;
8501jqXHR.error = jqXHR.fail;
8502
8503// Remove hash character (#7531: and string promotion)
8504// Add protocol if not provided (prefilters might expect it)
8505// Handle falsy url in the settings object (#10093: consistency with old signature)
8506// We also use the url parameter if available
8507s.url = ((url || s.url || location.href) + "").replace(rhash, "")
8508.replace(rprotocol, location.protocol + "//");
8509
8510// Alias method option to type as per ticket #12004
8511s.type = options.method || options.type || s.method || s.type;
8512
8513// Extract dataTypes list
8514s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().match(rnotwhite) || [""];
8515
8516// A cross-domain request is in order when the origin doesn't match the current origin.
8517if (s.crossDomain == null) {
8518urlAnchor = document.createElement("a");
8519
8520// Support: IE8-11+
8521// IE throws exception if url is malformed, e.g. http://example.com:80x/
8522try {
8523urlAnchor.href = s.url;
8524
8525// Support: IE8-11+
8526// Anchor's host property isn't correctly set when s.url is relative
8527urlAnchor.href = urlAnchor.href;
8528s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
8529urlAnchor.protocol + "//" + urlAnchor.host;
8530} catch (e) {
8531
8532// If there is an error parsing the URL, assume it is crossDomain,
8533// it can be rejected by the transport if it is invalid
8534s.crossDomain = true;
8535}
8536}
8537
8538// Convert data if not already a string
8539if (s.data && s.processData && typeof s.data !== "string") {
8540s.data = jQuery.param(s.data, s.traditional);
8541}
8542
8543// Apply prefilters
8544inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
8545
8546// If request was aborted inside a prefilter, stop there
8547if (state === 2) {
8548return jqXHR;
8549}
8550
8551// We can fire global events as of now if asked to
8552// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
8553fireGlobals = jQuery.event && s.global;
8554
8555// Watch for a new set of requests
8556if (fireGlobals && jQuery.active++ === 0) {
8557jQuery.event.trigger("ajaxStart");
8558}
8559
8560// Uppercase the type
8561s.type = s.type.toUpperCase();
8562
8563// Determine if request has content
8564s.hasContent = !rnoContent.test(s.type);
8565
8566// Save the URL in case we're toying with the If-Modified-Since
8567// and/or If-None-Match header later on
8568cacheURL = s.url;
8569
8570// More options handling for requests with no content
8571if (!s.hasContent) {
8572
8573// If data is available, append data to url
8574if (s.data) {
8575cacheURL = (s.url += (rquery.test(cacheURL) ? "&" : "?") + s.data);
8576
8577// #9682: remove data so that it's not used in an eventual retry
8578delete s.data;
8579}
8580
8581// Add anti-cache in url if needed
8582if (s.cache === false) {
8583s.url = rts.test(cacheURL) ?
8584
8585// If there is already a '_' parameter, set its value
8586cacheURL.replace(rts, "$1_=" + nonce++) :
8587
8588// Otherwise add one to the end
8589cacheURL + (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce++;
8590}
8591}
8592
8593// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
8594if (s.ifModified) {
8595if (jQuery.lastModified[cacheURL]) {
8596jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]);
8597}
8598if (jQuery.etag[cacheURL]) {
8599jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]);
8600}
8601}
8602
8603// Set the correct header, if data is being sent
8604if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
8605jqXHR.setRequestHeader("Content-Type", s.contentType);
8606}
8607
8608// Set the Accepts header for the server, depending on the dataType
8609jqXHR.setRequestHeader(
8610"Accept",
8611s.dataTypes[0] && s.accepts[s.dataTypes[0]] ?
8612s.accepts[s.dataTypes[0]] +
8613(s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") :
8614s.accepts["*"]
8615);
8616
8617// Check for headers option
8618for (i in s.headers) {
8619jqXHR.setRequestHeader(i, s.headers[i]);
8620}
8621
8622// Allow custom headers/mimetypes and early abort
8623if (s.beforeSend &&
8624(s.beforeSend.call(callbackContext, jqXHR, s) === false || state === 2)) {
8625
8626// Abort if not done already and return
8627return jqXHR.abort();
8628}
8629
8630// Aborting is no longer a cancellation
8631strAbort = "abort";
8632
8633// Install callbacks on deferreds
8634for (i in { success: 1, error: 1, complete: 1 }) {
8635jqXHR[i](s[i]);
8636}
8637
8638// Get transport
8639transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR);
8640
8641// If no transport, we auto-abort
8642if (!transport) {
8643done(-1, "No Transport");
8644} else {
8645jqXHR.readyState = 1;
8646
8647// Send global event
8648if (fireGlobals) {
8649globalEventContext.trigger("ajaxSend", [jqXHR, s]);
8650}
8651
8652// If request was aborted inside ajaxSend, stop there
8653if (state === 2) {
8654return jqXHR;
8655}
8656
8657// Timeout
8658if (s.async && s.timeout > 0) {
8659timeoutTimer = window.setTimeout(function () {
8660jqXHR.abort("timeout");
8661}, s.timeout);
8662}
8663
8664try {
8665state = 1;
8666transport.send(requestHeaders, done);
8667} catch (e) {
8668
8669// Propagate exception as error if not done
8670if (state < 2) {
8671done(-1, e);
8672
8673// Simply rethrow otherwise
8674} else {
8675throw e;
8676}
8677}
8678}
8679
8680// Callback for when everything is done
8681function done(status, nativeStatusText, responses, headers) {
8682var isSuccess, success, error, response, modified,
8683statusText = nativeStatusText;
8684
8685// Called once
8686if (state === 2) {
8687return;
8688}
8689
8690// State is "done" now
8691state = 2;
8692
8693// Clear timeout if it exists
8694if (timeoutTimer) {
8695window.clearTimeout(timeoutTimer);
8696}
8697
8698// Dereference transport for early garbage collection
8699// (no matter how long the jqXHR object will be used)
8700transport = undefined;
8701
8702// Cache response headers
8703responseHeadersString = headers || "";
8704
8705// Set readyState
8706jqXHR.readyState = status > 0 ? 4 : 0;
8707
8708// Determine if successful
8709isSuccess = status >= 200 && status < 300 || status === 304;
8710
8711// Get response data
8712if (responses) {
8713response = ajaxHandleResponses(s, jqXHR, responses);
8714}
8715
8716// Convert no matter what (that way responseXXX fields are always set)
8717response = ajaxConvert(s, response, jqXHR, isSuccess);
8718
8719// If successful, handle type chaining
8720if (isSuccess) {
8721
8722// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
8723if (s.ifModified) {
8724modified = jqXHR.getResponseHeader("Last-Modified");
8725if (modified) {
8726jQuery.lastModified[cacheURL] = modified;
8727}
8728modified = jqXHR.getResponseHeader("etag");
8729if (modified) {
8730jQuery.etag[cacheURL] = modified;
8731}
8732}
8733
8734// if no content
8735if (status === 204 || s.type === "HEAD") {
8736statusText = "nocontent";
8737
8738// if not modified
8739} else if (status === 304) {
8740statusText = "notmodified";
8741
8742// If we have data, let's convert it
8743} else {
8744statusText = response.state;
8745success = response.data;
8746error = response.error;
8747isSuccess = !error;
8748}
8749} else {
8750
8751// Extract error from statusText and normalize for non-aborts
8752error = statusText;
8753if (status || !statusText) {
8754statusText = "error";
8755if (status < 0) {
8756status = 0;
8757}
8758}
8759}
8760
8761// Set data for the fake xhr object
8762jqXHR.status = status;
8763jqXHR.statusText = (nativeStatusText || statusText) + "";
8764
8765// Success/Error
8766if (isSuccess) {
8767deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
8768} else {
8769deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
8770}
8771
8772// Status-dependent callbacks
8773jqXHR.statusCode(statusCode);
8774statusCode = undefined;
8775
8776if (fireGlobals) {
8777globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError",
8778[jqXHR, s, isSuccess ? success : error]);
8779}
8780
8781// Complete
8782completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
8783
8784if (fireGlobals) {
8785globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
8786
8787// Handle the global AJAX counter
8788if (!(--jQuery.active)) {
8789jQuery.event.trigger("ajaxStop");
8790}
8791}
8792}
8793
8794return jqXHR;
8795},
8796
8797getJSON: function (url, data, callback) {
8798return jQuery.get(url, data, callback, "json");
8799},
8800
8801getScript: function (url, callback) {
8802return jQuery.get(url, undefined, callback, "script");
8803}
8804});
8805
8806jQuery.each(["get", "post"], function (i, method) {
8807jQuery[method] = function (url, data, callback, type) {
8808
8809// Shift arguments if data argument was omitted
8810if (jQuery.isFunction(data)) {
8811type = type || callback;
8812callback = data;
8813data = undefined;
8814}
8815
8816// The url can be an options object (which then must have .url)
8817return jQuery.ajax(jQuery.extend({
8818url: url,
8819type: method,
8820dataType: type,
8821data: data,
8822success: callback
8823}, jQuery.isPlainObject(url) && url));
8824};
8825});
8826
8827
8828jQuery._evalUrl = function (url) {
8829return jQuery.ajax({
8830url: url,
8831
8832// Make this explicit, since user can override this through ajaxSetup (#11264)
8833type: "GET",
8834dataType: "script",
8835async: false,
8836global: false,
8837"throws": true
8838});
8839};
8840
8841
8842jQuery.fn.extend({
8843wrapAll: function (html) {
8844var wrap;
8845
8846if (jQuery.isFunction(html)) {
8847return this.each(function (i) {
8848jQuery(this).wrapAll(html.call(this, i));
8849});
8850}
8851
8852if (this[0]) {
8853
8854// The elements to wrap the target around
8855wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);
8856
8857if (this[0].parentNode) {
8858wrap.insertBefore(this[0]);
8859}
8860
8861wrap.map(function () {
8862var elem = this;
8863
8864while (elem.firstElementChild) {
8865elem = elem.firstElementChild;
8866}
8867
8868return elem;
8869}).append(this);
8870}
8871
8872return this;
8873},
8874
8875wrapInner: function (html) {
8876if (jQuery.isFunction(html)) {
8877return this.each(function (i) {
8878jQuery(this).wrapInner(html.call(this, i));
8879});
8880}
8881
8882return this.each(function () {
8883var self = jQuery(this),
8884contents = self.contents();
8885
8886if (contents.length) {
8887contents.wrapAll(html);
8888
8889} else {
8890self.append(html);
8891}
8892});
8893},
8894
8895wrap: function (html) {
8896var isFunction = jQuery.isFunction(html);
8897
8898return this.each(function (i) {
8899jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);
8900});
8901},
8902
8903unwrap: function () {
8904return this.parent().each(function () {
8905if (!jQuery.nodeName(this, "body")) {
8906jQuery(this).replaceWith(this.childNodes);
8907}
8908}).end();
8909}
8910});
8911
8912
8913jQuery.expr.filters.hidden = function (elem) {
8914return !jQuery.expr.filters.visible(elem);
8915};
8916jQuery.expr.filters.visible = function (elem) {
8917
8918// Support: Opera <= 12.12
8919// Opera reports offsetWidths and offsetHeights less than zero on some elements
8920// Use OR instead of AND as the element is not visible if either is true
8921// See tickets #10406 and #13132
8922return elem.offsetWidth > 0 || elem.offsetHeight > 0 || elem.getClientRects().length > 0;
8923};
8924
8925
8926
8927
8928var r20 = /%20/g,
8929rbracket = /\[\]$/,
8930rCRLF = /\r?\n/g,
8931rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
8932rsubmittable = /^(?:input|select|textarea|keygen)/i;
8933
8934function buildParams(prefix, obj, traditional, add) {
8935var name;
8936
8937if (jQuery.isArray(obj)) {
8938
8939// Serialize array item.
8940jQuery.each(obj, function (i, v) {
8941if (traditional || rbracket.test(prefix)) {
8942
8943// Treat each array item as a scalar.
8944add(prefix, v);
8945
8946} else {
8947
8948// Item is non-scalar (array or object), encode its numeric index.
8949buildParams(
8950prefix + "[" + (typeof v === "object" && v != null ? i : "") + "]",
8951v,
8952traditional,
8953add
8954);
8955}
8956});
8957
8958} else if (!traditional && jQuery.type(obj) === "object") {
8959
8960// Serialize object item.
8961for (name in obj) {
8962buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
8963}
8964
8965} else {
8966
8967// Serialize scalar item.
8968add(prefix, obj);
8969}
8970}
8971
8972// Serialize an array of form elements or a set of
8973// key/values into a query string
8974jQuery.param = function (a, traditional) {
8975var prefix,
8976s = [],
8977add = function (key, value) {
8978
8979// If value is a function, invoke it and return its value
8980value = jQuery.isFunction(value) ? value() : (value == null ? "" : value);
8981s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
8982};
8983
8984// Set traditional to true for jQuery <= 1.3.2 behavior.
8985if (traditional === undefined) {
8986traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
8987}
8988
8989// If an array was passed in, assume that it is an array of form elements.
8990if (jQuery.isArray(a) || (a.jquery && !jQuery.isPlainObject(a))) {
8991
8992// Serialize the form elements
8993jQuery.each(a, function () {
8994add(this.name, this.value);
8995});
8996
8997} else {
8998
8999// If traditional, encode the "old" way (the way 1.3.2 or older
9000// did it), otherwise encode params recursively.
9001for (prefix in a) {
9002buildParams(prefix, a[prefix], traditional, add);
9003}
9004}
9005
9006// Return the resulting serialization
9007return s.join("&").replace(r20, "+");
9008};
9009
9010jQuery.fn.extend({
9011serialize: function () {
9012return jQuery.param(this.serializeArray());
9013},
9014serializeArray: function () {
9015return this.map(function () {
9016
9017// Can add propHook for "elements" to filter or add form elements
9018var elements = jQuery.prop(this, "elements");
9019return elements ? jQuery.makeArray(elements) : this;
9020})
9021.filter(function () {
9022var type = this.type;
9023
9024// Use .is( ":disabled" ) so that fieldset[disabled] works
9025return this.name && !jQuery(this).is(":disabled") &&
9026rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) &&
9027(this.checked || !rcheckableType.test(type));
9028})
9029.map(function (i, elem) {
9030var val = jQuery(this).val();
9031
9032return val == null ?
9033null :
9034jQuery.isArray(val) ?
9035jQuery.map(val, function (val) {
9036return { name: elem.name, value: val.replace(rCRLF, "\r\n") };
9037}) :
9038{ name: elem.name, value: val.replace(rCRLF, "\r\n") };
9039}).get();
9040}
9041});
9042
9043
9044jQuery.ajaxSettings.xhr = function () {
9045try {
9046return new window.XMLHttpRequest();
9047} catch (e) { }
9048};
9049
9050var xhrSuccessStatus = {
9051
9052// File protocol always yields status code 0, assume 200
90530: 200,
9054
9055// Support: IE9
9056// #1450: sometimes IE returns 1223 when it should be 204
90571223: 204
9058},
9059xhrSupported = jQuery.ajaxSettings.xhr();
9060
9061support.cors = !!xhrSupported && ("withCredentials" in xhrSupported);
9062support.ajax = xhrSupported = !!xhrSupported;
9063
9064jQuery.ajaxTransport(function (options) {
9065var callback, errorCallback;
9066
9067// Cross domain only allowed if supported through XMLHttpRequest
9068if (support.cors || xhrSupported && !options.crossDomain) {
9069return {
9070send: function (headers, complete) {
9071var i,
9072xhr = options.xhr();
9073
9074xhr.open(
9075options.type,
9076options.url,
9077options.async,
9078options.username,
9079options.password
9080);
9081
9082// Apply custom fields if provided
9083if (options.xhrFields) {
9084for (i in options.xhrFields) {
9085xhr[i] = options.xhrFields[i];
9086}
9087}
9088
9089// Override mime type if needed
9090if (options.mimeType && xhr.overrideMimeType) {
9091xhr.overrideMimeType(options.mimeType);
9092}
9093
9094// X-Requested-With header
9095// For cross-domain requests, seeing as conditions for a preflight are
9096// akin to a jigsaw puzzle, we simply never set it to be sure.
9097// (it can always be set on a per-request basis or even using ajaxSetup)
9098// For same-domain requests, won't change header if already provided.
9099if (!options.crossDomain && !headers["X-Requested-With"]) {
9100headers["X-Requested-With"] = "XMLHttpRequest";
9101}
9102
9103// Set headers
9104for (i in headers) {
9105xhr.setRequestHeader(i, headers[i]);
9106}
9107
9108// Callback
9109callback = function (type) {
9110return function () {
9111if (callback) {
9112callback = errorCallback = xhr.onload =
9113xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
9114
9115if (type === "abort") {
9116xhr.abort();
9117} else if (type === "error") {
9118
9119// Support: IE9
9120// On a manual native abort, IE9 throws
9121// errors on any property access that is not readyState
9122if (typeof xhr.status !== "number") {
9123complete(0, "error");
9124} else {
9125complete(
9126
9127// File: protocol always yields status 0; see #8605, #14207
9128xhr.status,
9129xhr.statusText
9130);
9131}
9132} else {
9133complete(
9134xhrSuccessStatus[xhr.status] || xhr.status,
9135xhr.statusText,
9136
9137// Support: IE9 only
9138// IE9 has no XHR2 but throws on binary (trac-11426)
9139// For XHR2 non-text, let the caller handle it (gh-2498)
9140(xhr.responseType || "text") !== "text" ||
9141typeof xhr.responseText !== "string" ?
9142{ binary: xhr.response } :
9143{ text: xhr.responseText },
9144xhr.getAllResponseHeaders()
9145);
9146}
9147}
9148};
9149};
9150
9151// Listen to events
9152xhr.onload = callback();
9153errorCallback = xhr.onerror = callback("error");
9154
9155// Support: IE9
9156// Use onreadystatechange to replace onabort
9157// to handle uncaught aborts
9158if (xhr.onabort !== undefined) {
9159xhr.onabort = errorCallback;
9160} else {
9161xhr.onreadystatechange = function () {
9162
9163// Check readyState before timeout as it changes
9164if (xhr.readyState === 4) {
9165
9166// Allow onerror to be called first,
9167// but that will not handle a native abort
9168// Also, save errorCallback to a variable
9169// as xhr.onerror cannot be accessed
9170window.setTimeout(function () {
9171if (callback) {
9172errorCallback();
9173}
9174});
9175}
9176};
9177}
9178
9179// Create the abort callback
9180callback = callback("abort");
9181
9182try {
9183
9184// Do send the request (this may raise an exception)
9185xhr.send(options.hasContent && options.data || null);
9186} catch (e) {
9187
9188// #14683: Only rethrow if this hasn't been notified as an error yet
9189if (callback) {
9190throw e;
9191}
9192}
9193},
9194
9195abort: function () {
9196if (callback) {
9197callback();
9198}
9199}
9200};
9201}
9202});
9203
9204
9205
9206
9207// Install script dataType
9208jQuery.ajaxSetup({
9209accepts: {
9210script: "text/javascript, application/javascript, " +
9211"application/ecmascript, application/x-ecmascript"
9212},
9213contents: {
9214script: /\b(?:java|ecma)script\b/
9215},
9216converters: {
9217"text script": function (text) {
9218jQuery.globalEval(text);
9219return text;
9220}
9221}
9222});
9223
9224// Handle cache's special case and crossDomain
9225jQuery.ajaxPrefilter("script", function (s) {
9226if (s.cache === undefined) {
9227s.cache = false;
9228}
9229if (s.crossDomain) {
9230s.type = "GET";
9231}
9232});
9233
9234// Bind script tag hack transport
9235jQuery.ajaxTransport("script", function (s) {
9236
9237// This transport only deals with cross domain requests
9238if (s.crossDomain) {
9239var script, callback;
9240return {
9241send: function (_, complete) {
9242script = jQuery("<script>").prop({
9243charset: s.scriptCharset,
9244src: s.url
9245}).on(
9246"load error",
9247callback = function (evt) {
9248script.remove();
9249callback = null;
9250if (evt) {
9251complete(evt.type === "error" ? 404 : 200, evt.type);
9252}
9253}
9254);
9255
9256// Use native DOM manipulation to avoid our domManip AJAX trickery
9257document.head.appendChild(script[0]);
9258},
9259abort: function () {
9260if (callback) {
9261callback();
9262}
9263}
9264};
9265}
9266});
9267
9268
9269
9270
9271var oldCallbacks = [],
9272rjsonp = /(=)\?(?=&|$)|\?\?/;
9273
9274// Default jsonp settings
9275jQuery.ajaxSetup({
9276jsonp: "callback",
9277jsonpCallback: function () {
9278var callback = oldCallbacks.pop() || (jQuery.expando + "_" + (nonce++));
9279this[callback] = true;
9280return callback;
9281}
9282});
9283
9284// Detect, normalize options and install callbacks for jsonp requests
9285jQuery.ajaxPrefilter("json jsonp", function (s, originalSettings, jqXHR) {
9286
9287var callbackName, overwritten, responseContainer,
9288jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ?
9289"url" :
9290typeof s.data === "string" &&
9291(s.contentType || "")
9292.indexOf("application/x-www-form-urlencoded") === 0 &&
9293rjsonp.test(s.data) && "data"
9294);
9295
9296// Handle iff the expected data type is "jsonp" or we have a parameter to set
9297if (jsonProp || s.dataTypes[0] === "jsonp") {
9298
9299// Get callback name, remembering preexisting value associated with it
9300callbackName = s.jsonpCallback = jQuery.isFunction(s.jsonpCallback) ?
9301s.jsonpCallback() :
9302s.jsonpCallback;
9303
9304// Insert callback into url or form data
9305if (jsonProp) {
9306s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
9307} else if (s.jsonp !== false) {
9308s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
9309}
9310
9311// Use data converter to retrieve json after script execution
9312s.converters["script json"] = function () {
9313if (!responseContainer) {
9314jQuery.error(callbackName + " was not called");
9315}
9316return responseContainer[0];
9317};
9318
9319// Force json dataType
9320s.dataTypes[0] = "json";
9321
9322// Install callback
9323overwritten = window[callbackName];
9324window[callbackName] = function () {
9325responseContainer = arguments;
9326};
9327
9328// Clean-up function (fires after converters)
9329jqXHR.always(function () {
9330
9331// If previous value didn't exist - remove it
9332if (overwritten === undefined) {
9333jQuery(window).removeProp(callbackName);
9334
9335// Otherwise restore preexisting value
9336} else {
9337window[callbackName] = overwritten;
9338}
9339
9340// Save back as free
9341if (s[callbackName]) {
9342
9343// Make sure that re-using the options doesn't screw things around
9344s.jsonpCallback = originalSettings.jsonpCallback;
9345
9346// Save the callback name for future use
9347oldCallbacks.push(callbackName);
9348}
9349
9350// Call if it was a function and we have a response
9351if (responseContainer && jQuery.isFunction(overwritten)) {
9352overwritten(responseContainer[0]);
9353}
9354
9355responseContainer = overwritten = undefined;
9356});
9357
9358// Delegate to script
9359return "script";
9360}
9361});
9362
9363
9364
9365
9366// Argument "data" should be string of html
9367// context (optional): If specified, the fragment will be created in this context,
9368// defaults to document
9369// keepScripts (optional): If true, will include scripts passed in the html string
9370jQuery.parseHTML = function (data, context, keepScripts) {
9371if (!data || typeof data !== "string") {
9372return null;
9373}
9374if (typeof context === "boolean") {
9375keepScripts = context;
9376context = false;
9377}
9378context = context || document;
9379
9380var parsed = rsingleTag.exec(data),
9381scripts = !keepScripts && [];
9382
9383// Single tag
9384if (parsed) {
9385return [context.createElement(parsed[1])];
9386}
9387
9388parsed = buildFragment([data], context, scripts);
9389
9390if (scripts && scripts.length) {
9391jQuery(scripts).remove();
9392}
9393
9394return jQuery.merge([], parsed.childNodes);
9395};
9396
9397
9398// Keep a copy of the old load method
9399var _load = jQuery.fn.load;
9400
9401/**
9402 * Load a url into a page
9403 */
9404jQuery.fn.load = function (url, params, callback) {
9405if (typeof url !== "string" && _load) {
9406return _load.apply(this, arguments);
9407}
9408
9409var selector, type, response,
9410self = this,
9411off = url.indexOf(" ");
9412
9413if (off > -1) {
9414selector = jQuery.trim(url.slice(off));
9415url = url.slice(0, off);
9416}
9417
9418// If it's a function
9419if (jQuery.isFunction(params)) {
9420
9421// We assume that it's the callback
9422callback = params;
9423params = undefined;
9424
9425// Otherwise, build a param string
9426} else if (params && typeof params === "object") {
9427type = "POST";
9428}
9429
9430// If we have elements to modify, make the request
9431if (self.length > 0) {
9432jQuery.ajax({
9433url: url,
9434
9435// If "type" variable is undefined, then "GET" method will be used.
9436// Make value of this field explicit since
9437// user can override it through ajaxSetup method
9438type: type || "GET",
9439dataType: "html",
9440data: params
9441}).done(function (responseText) {
9442
9443// Save response for use in complete callback
9444response = arguments;
9445
9446self.html(selector ?
9447
9448// If a selector was specified, locate the right elements in a dummy div
9449// Exclude scripts to avoid IE 'Permission Denied' errors
9450jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) :
9451
9452// Otherwise use the full result
9453responseText);
9454
9455// If the request succeeds, this function gets "data", "status", "jqXHR"
9456// but they are ignored because response was set above.
9457// If it fails, this function gets "jqXHR", "status", "error"
9458}).always(callback && function (jqXHR, status) {
9459self.each(function () {
9460callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
9461});
9462});
9463}
9464
9465return this;
9466};
9467
9468
9469
9470
9471// Attach a bunch of functions for handling common AJAX events
9472jQuery.each([
9473"ajaxStart",
9474"ajaxStop",
9475"ajaxComplete",
9476"ajaxError",
9477"ajaxSuccess",
9478"ajaxSend"
9479], function (i, type) {
9480jQuery.fn[type] = function (fn) {
9481return this.on(type, fn);
9482};
9483});
9484
9485
9486
9487
9488jQuery.expr.filters.animated = function (elem) {
9489return jQuery.grep(jQuery.timers, function (fn) {
9490return elem === fn.elem;
9491}).length;
9492};
9493
9494
9495
9496
9497/**
9498 * Gets a window from an element
9499 */
9500function getWindow(elem) {
9501return jQuery.isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;
9502}
9503
9504jQuery.offset = {
9505setOffset: function (elem, options, i) {
9506var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
9507position = jQuery.css(elem, "position"),
9508curElem = jQuery(elem),
9509props = {};
9510
9511// Set position first, in-case top/left are set even on static elem
9512if (position === "static") {
9513elem.style.position = "relative";
9514}
9515
9516curOffset = curElem.offset();
9517curCSSTop = jQuery.css(elem, "top");
9518curCSSLeft = jQuery.css(elem, "left");
9519calculatePosition = (position === "absolute" || position === "fixed") &&
9520(curCSSTop + curCSSLeft).indexOf("auto") > -1;
9521
9522// Need to be able to calculate position if either
9523// top or left is auto and position is either absolute or fixed
9524if (calculatePosition) {
9525curPosition = curElem.position();
9526curTop = curPosition.top;
9527curLeft = curPosition.left;
9528
9529} else {
9530curTop = parseFloat(curCSSTop) || 0;
9531curLeft = parseFloat(curCSSLeft) || 0;
9532}
9533
9534if (jQuery.isFunction(options)) {
9535
9536// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
9537options = options.call(elem, i, jQuery.extend({}, curOffset));
9538}
9539
9540if (options.top != null) {
9541props.top = (options.top - curOffset.top) + curTop;
9542}
9543if (options.left != null) {
9544props.left = (options.left - curOffset.left) + curLeft;
9545}
9546
9547if ("using" in options) {
9548options.using.call(elem, props);
9549
9550} else {
9551curElem.css(props);
9552}
9553}
9554};
9555
9556jQuery.fn.extend({
9557offset: function (options) {
9558if (arguments.length) {
9559return options === undefined ?
9560this :
9561this.each(function (i) {
9562jQuery.offset.setOffset(this, options, i);
9563});
9564}
9565
9566var docElem, win,
9567elem = this[0],
9568box = { top: 0, left: 0 },
9569doc = elem && elem.ownerDocument;
9570
9571if (!doc) {
9572return;
9573}
9574
9575docElem = doc.documentElement;
9576
9577// Make sure it's not a disconnected DOM node
9578if (!jQuery.contains(docElem, elem)) {
9579return box;
9580}
9581
9582box = elem.getBoundingClientRect();
9583win = getWindow(doc);
9584return {
9585top: box.top + win.pageYOffset - docElem.clientTop,
9586left: box.left + win.pageXOffset - docElem.clientLeft
9587};
9588},
9589
9590position: function () {
9591if (!this[0]) {
9592return;
9593}
9594
9595var offsetParent, offset,
9596elem = this[0],
9597parentOffset = { top: 0, left: 0 };
9598
9599// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
9600// because it is its only offset parent
9601if (jQuery.css(elem, "position") === "fixed") {
9602
9603// Assume getBoundingClientRect is there when computed position is fixed
9604offset = elem.getBoundingClientRect();
9605
9606} else {
9607
9608// Get *real* offsetParent
9609offsetParent = this.offsetParent();
9610
9611// Get correct offsets
9612offset = this.offset();
9613if (!jQuery.nodeName(offsetParent[0], "html")) {
9614parentOffset = offsetParent.offset();
9615}
9616
9617// Add offsetParent borders
9618parentOffset.top += jQuery.css(offsetParent[0], "borderTopWidth", true);
9619parentOffset.left += jQuery.css(offsetParent[0], "borderLeftWidth", true);
9620}
9621
9622// Subtract parent offsets and element margins
9623return {
9624top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true),
9625left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true)
9626};
9627},
9628
9629// This method will return documentElement in the following cases:
9630// 1) For the element inside the iframe without offsetParent, this method will return
9631//    documentElement of the parent window
9632// 2) For the hidden or detached element
9633// 3) For body or html element, i.e. in case of the html node - it will return itself
9634//
9635// but those exceptions were never presented as a real life use-cases
9636// and might be considered as more preferable results.
9637//
9638// This logic, however, is not guaranteed and can change at any point in the future
9639offsetParent: function () {
9640return this.map(function () {
9641var offsetParent = this.offsetParent;
9642
9643while (offsetParent && jQuery.css(offsetParent, "position") === "static") {
9644offsetParent = offsetParent.offsetParent;
9645}
9646
9647return offsetParent || documentElement;
9648});
9649}
9650});
9651
9652// Create scrollLeft and scrollTop methods
9653jQuery.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function (method, prop) {
9654var top = "pageYOffset" === prop;
9655
9656jQuery.fn[method] = function (val) {
9657return access(this, function (elem, method, val) {
9658var win = getWindow(elem);
9659
9660if (val === undefined) {
9661return win ? win[prop] : elem[method];
9662}
9663
9664if (win) {
9665win.scrollTo(
9666!top ? val : win.pageXOffset,
9667top ? val : win.pageYOffset
9668);
9669
9670} else {
9671elem[method] = val;
9672}
9673}, method, val, arguments.length);
9674};
9675});
9676
9677// Support: Safari<7-8+, Chrome<37-44+
9678// Add the top/left cssHooks using jQuery.fn.position
9679// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
9680// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
9681// getComputedStyle returns percent when specified for top/left/bottom/right;
9682// rather than make the css module depend on the offset module, just check for it here
9683jQuery.each(["top", "left"], function (i, prop) {
9684jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition,
9685function (elem, computed) {
9686if (computed) {
9687computed = curCSS(elem, prop);
9688
9689// If curCSS returns percentage, fallback to offset
9690return rnumnonpx.test(computed) ?
9691jQuery(elem).position()[prop] + "px" :
9692computed;
9693}
9694}
9695);
9696});
9697
9698
9699// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
9700jQuery.each({ Height: "height", Width: "width" }, function (name, type) {
9701jQuery.each({ padding: "inner" + name, content: type, "": "outer" + name },
9702function (defaultExtra, funcName) {
9703
9704// Margin is only for outerHeight, outerWidth
9705jQuery.fn[funcName] = function (margin, value) {
9706var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"),
9707extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
9708
9709return access(this, function (elem, type, value) {
9710var doc;
9711
9712if (jQuery.isWindow(elem)) {
9713
9714// As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
9715// isn't a whole lot we can do. See pull request at this URL for discussion:
9716// https://github.com/jquery/jquery/pull/764
9717return elem.document.documentElement["client" + name];
9718}
9719
9720// Get document width or height
9721if (elem.nodeType === 9) {
9722doc = elem.documentElement;
9723
9724// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
9725// whichever is greatest
9726return Math.max(
9727elem.body["scroll" + name], doc["scroll" + name],
9728elem.body["offset" + name], doc["offset" + name],
9729doc["client" + name]
9730);
9731}
9732
9733return value === undefined ?
9734
9735// Get width or height on the element, requesting but not forcing parseFloat
9736jQuery.css(elem, type, extra) :
9737
9738// Set width or height on the element
9739jQuery.style(elem, type, value, extra);
9740}, type, chainable ? margin : undefined, chainable, null);
9741};
9742});
9743});
9744
9745
9746jQuery.fn.extend({
9747
9748bind: function (types, data, fn) {
9749return this.on(types, null, data, fn);
9750},
9751unbind: function (types, fn) {
9752return this.off(types, null, fn);
9753},
9754
9755delegate: function (selector, types, data, fn) {
9756return this.on(types, selector, data, fn);
9757},
9758undelegate: function (selector, types, fn) {
9759
9760// ( namespace ) or ( selector, types [, fn] )
9761return arguments.length === 1 ?
9762this.off(selector, "**") :
9763this.off(types, selector || "**", fn);
9764},
9765size: function () {
9766return this.length;
9767}
9768});
9769
9770jQuery.fn.andSelf = jQuery.fn.addBack;
9771
9772
9773
9774
9775// Register as a named AMD module, since jQuery can be concatenated with other
9776// files that may use define, but not via a proper concatenation script that
9777// understands anonymous AMD modules. A named AMD is safest and most robust
9778// way to register. Lowercase jquery is used because AMD module names are
9779// derived from file names, and jQuery is normally delivered in a lowercase
9780// file name. Do this after creating the global so that if an AMD module wants
9781// to call noConflict to hide this version of jQuery, it will work.
9782
9783// Note that for maximum portability, libraries that are not jQuery should
9784// declare themselves as anonymous modules, and avoid setting a global if an
9785// AMD loader is present. jQuery is a special case. For more information, see
9786// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
9787
9788if (typeof define === "function" && define.amd) {
9789define("jquery", [], function () {
9790return jQuery;
9791});
9792}
9793
9794
9795
9796var
9797
9798// Map over jQuery in case of overwrite
9799_jQuery = window.jQuery,
9800
9801// Map over the $ in case of overwrite
9802_$ = window.$;
9803
9804jQuery.noConflict = function (deep) {
9805if (window.$ === jQuery) {
9806window.$ = _$;
9807}
9808
9809if (deep && window.jQuery === jQuery) {
9810window.jQuery = _jQuery;
9811}
9812
9813return jQuery;
9814};
9815
9816// Expose jQuery and $ identifiers, even in AMD
9817// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
9818// and CommonJS for browser emulators (#13566)
9819if (!noGlobal) {
9820window.jQuery = window.$ = jQuery;
9821}
9822
9823return jQuery;
9824}));
9825/*!
9826* Lightbox for Bootstrap 3 by @ashleydw
9827* https://github.com/ashleydw/lightbox
9828*
9829* License: https://github.com/ashleydw/lightbox/blob/master/LICENSE
9830*/
9831(function () { "use strict"; var a, b; a = jQuery, b = function (b, c) { var d, e, f, g = this; return this.options = a.extend({ title: null, footer: null, remote: null }, a.fn.ekkoLightbox.defaults, c || {}), this.$element = a(b), d = "", this.modal_id = this.options.modal_id ? this.options.modal_id : "ekkoLightbox-" + Math.floor(1e3 * Math.random() + 1), f = '<div class="modal-header"' + (this.options.title || this.options.always_show_close ? "" : ' style="display:none"') + '><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h4 class="modal-title">' + (this.options.title || "&nbsp;") + "</h4></div>", e = '<div class="modal-footer"' + (this.options.footer ? "" : ' style="display:none"') + ">" + this.options.footer + "</div>", a(document.body).append('<div id="' + this.modal_id + '" class="ekko-lightbox modal fade" tabindex="-1"><div class="modal-dialog"><div class="modal-content">' + f + '<div class="modal-body"><div class="ekko-lightbox-container"><div></div></div></div>' + e + "</div></div></div>"), this.modal = a("#" + this.modal_id), this.modal_dialog = this.modal.find(".modal
9831-dialog").first(), this.modal_content = this.modal.find(".modal-content").first(), this.modal_body = this.modal.find(".modal-body").first(), this.lightbox_container = this.modal_body.find(".ekko-lightbox-container").first(), this.lightbox_body = this.lightbox_container.find("> div:first-child").first(), this.showLoading(), this.modal_arrows = null, this.border = { top: parseFloat(this.modal_dialog.css("border-top-width")) + parseFloat(this.modal_content.css("border-top-width")) + parseFloat(this.modal_body.css("border-top-width")), right: parseFloat(this.modal_dialog.css("border-right-width")) + parseFloat(this.modal_content.css("border-right-width")) + parseFloat(this.modal_body.css("border-right-width")), bottom: parseFloat(this.modal_dialog.css("border-bottom-width")) + parseFloat(this.modal_content.css("border-bottom-width")) + parseFloat(this.modal_body.css("border-bottom-width")), left: parseFloat(this.modal_dialog.css("border-left-width")) + parseFloat(this.modal_content.css("border-left-width")) + parseFloat(this.modal_body.css("border-left-width")) }, this.padding = { top: parseFloat(this.modal_dialog.css("padding-top")) + parseFloat(this.modal_content.css("padding-top")) + parseFloat(this.modal_body.css("padding-top")), right: parseFloat(this.modal_dialog.css("padding-right")) + parseFloat(this.modal_content.css("padding-right")) + parseFloat(this.modal_body.css("padding-right")), bottom: parseFloat(this.modal_dialog.css("padding-bottom")) + parseFloat(this.modal_content.css("padding-bottom")) + parseFloat(this.modal_body.css("padding-bottom")), left: parseFloat(this.modal_dialog.css("padding-left")) + parseFloat(this.modal_content.css("padding-left")) + parseFloat(this.modal_body.css("padding-left")) }, this.modal.on("show.bs.modal", this.options.onShow.bind(this)).on("shown.bs.modal", function () { return g.modal_shown(), g.options.onShown.call(g) }).on("hide.bs.modal", this.options.onHide.bind(this)).on("hidden.bs.modal", function () { return g.gallery && a(document).off("keydown.ekkoLightbox"), g.modal.remove(), g.options.onHidden.call(g) }).modal("show", c), this.modal }, b.prototype = { modal_shown: function () { var b, c = this; return this.options.remote ? (this.gallery = this.$element.data("gallery"), this.gallery && (this.gallery_items = "document.body" === this.options.gallery_parent_selector || "" === this.options.gallery_parent_selector ? a(document.body).find('*[data-toggle="lightbox"][data-gallery="' + this.gallery + '"]') : this.$element.parents(this.options.gallery_parent_selector).first().find('*[data-toggle="lightbox"][data-gallery="' + this.gallery + '"]'), this.gallery_index = this.gallery_items.index(this.$element), a(document).on("keydown.ekkoLightbox", this.navigate.bind(this)), this.options.directional_arrows && this.gallery_items.length > 1 && (this.lightbox_container.prepend('<div class="ekko-lightbox-nav-overlay"><a href="#" class="' + this.strip_stops(this.options.left_arrow_class) + '"><span class="sr-only">Previous</span></a><a href="#" class="' + this.strip_stops(this.options.right_arrow_class) + '"><span class="sr-only">Next</span></a></div>'), this.modal_arrows = this.lightbox_container.find("div.ekko-lightbox-nav-overlay").first(), this.lightbox_container.find("a" + this.strip_spaces(this.options.left_arrow_class)).on("click", function (a) { return a.preventDefault(), c.navigate_left() }), this.lightbox_container.find("a" + this.strip_spaces(this.options.right_arrow_class)).on("click", function (a) { return a.preventDefault(), c.navigate_right() }))), this.options.type ? "image" === this.options.type ? this.preloadImage(this.options.remote, !0) : "youtube" === this.options.type && (b = this.getYoutubeId(this.options.remote)) ? this.showYoutubeVideo(b) : "vimeo" === this.options.type ? this.showVimeoVideo(this.options.remote) : "instagram" === this.options.type ? this.showInstagramVideo(this.options.remote) : "url" === this.options.type ? this.showInstagramVideo(this.options.remote) : this.error('Could not detect remote target type. Force the type using data-type="image|youtube|vimeo|url"') : this.detectRemoteType(this.options.remote)) : this.error("No remote target given") }, strip_stops: function (a) { return a.replace(/\./g, "") }, strip_spaces: function (a) { return a.replace(/\s/g, "") }, isImage: function (a) { return a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i) }, isSwf: function (a) { return a.match(/\.(swf)((\?|#).*)?$/i) }, getYoutubeId: function (a) { var b; return b = a.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/), b && 11 === b[2].length ? b[2] : !1 }, getVimeoId: function (a) { return a.indexOf("vimeo") > 0 ? a : !1 }, getInstagramId: function (a) { return a.indexOf("instagram") > 0 ? a : !1 }, navigate: function (a) { if (a = a || window.event, 39 === a.keyCode || 37 === a.keyCode) { if (39 === a.keyCode) return this.navigate_right(); if (37 === a.keyCode) return this.navigate_left() } }, navigateTo: function (b) { var c, d; return 0 > b || b >
vendor: 4,958 bytes, line 9831
9831 this.gallery_items.length - 1 ? this : (this.showLoading(), this.gallery_index = b, this.options.onNavigate.call(this, this.gallery_index), this.$element = a(this.gallery_items.get(this.gallery_index)), this.updateTitleAndFooter(), d = this.$element.attr("data-remote") || this.$element.attr("href"), this.detectRemoteType(d, this.$element.attr("data-type") || !1), this.gallery_index + 1 < this.gallery_items.length && (c = a(this.gallery_items.get(this.gallery_index + 1), !1), d = c.attr("data-remote") || c.attr("href"), "image" === c.attr("data-type") || this.isImage(d)) ? this.preloadImage(d, !1) : void 0) }, navigate_left: function () { return 1 !== this.gallery_items.length ? (0 === this.gallery_index ? this.gallery_index = this.gallery_items.length - 1 : this.gallery_index--, this.options.onNavigate.call(this, "left", this.gallery_index), this.navigateTo(this.gallery_index)) : void 0 }, navigate_right: function () { return 1 !== this.gallery_items.length ? (this.gallery_index === this.gallery_items.length - 1 ? this.gallery_index = 0 : this.gallery_index++, this.options.onNavigate.call(this, "right", this.gallery_index), this.navigateTo(this.gallery_index)) : void 0 }, detectRemoteType: function (a, b) { var c; return "image" === b || this.isImage(a) ? (this.options.type = "image", this.preloadImage(a, !0)) : "youtube" === b || (c = this.getYoutubeId(a)) ? (this.options.type = "youtube", this.showYoutubeVideo(c)) : "vimeo" === b || (c = this.getVimeoId(a)) ? (this.options.type = "vimeo", this.showVimeoVideo(c)) : "instagram" === b || (c = this.getInstagramId(a)) ? (this.options.type = "instagram", this.showInstagramVideo(c)) : "url" === b || (c = this.getInstagramId(a)) ? (this.options.type = "instagram", this.showInstagramVideo(c)) : (this.options.type = "url", this.loadRemoteContent(a)) }, updateTitleAndFooter: function () { var a, b, c, d; return c = this.modal_content.find(".modal-header"), b = this.modal_content.find(".modal-footer"), d = this.$element.data("title") || "", a = this.$element.data("footer") || "", d || this.options.always_show_close ? c.css("display", "").find(".modal-title").html(d || "&nbsp;") : c.css("display", "none"), a ? b.css("display", "").html(a) : b.css("display", "none"), this }, showLoading: function () { return this.lightbox_body.html('<div class="modal-loading">Loading..</div>'), this }, showYoutubeVideo: function (a) { var b, c, d; return b = 560 / 315, d = this.$element.data("width") || 560, d = this.checkDimensions(d), c = d / b, this.resize(d), this.lightbox_body.html('<iframe width="' + d + '" height="' + c + '" src="//www.youtube.com/embed/' + a + '?badge=0&autoplay=1&html5=1" frameborder="0" allowfullscreen></iframe>'), this.options.onContentLoaded.call(this), this.modal_arrows ? this.modal_arrows.css("display", "none") : void 0 }, showVimeoVideo: function (a) { var b, c, d; return b = 500 / 281, d = this.$element.data("width") || 560, d = this.checkDimensions(d), c = d / b, this.resize(d), this.lightbox_body.html('<iframe width="' + d + '" height="' + c + '" src="' + a + '?autoplay=1" frameborder="0" allowfullscreen></iframe>'), this.options.onContentLoaded.call(this), this.modal_arrows ? this.modal_arrows.css("display", "none") : void 0 }, showInstagramVideo: function (a) { var b; return b = this.$element.data("width") || 612, b = this.checkDimensions(b), this.resize(b), this.lightbox_body.html('<iframe width="' + b + '" height="' + b + '" src="' + this.addTrailingSlash(a) + 'embed/" frameborder="0" allowfullscreen></iframe>'), this.options.onContentLoaded.call(this), this.modal_arrows ? this.modal_arrows.css("display", "none") : void 0 }, loadRemoteContent: function (b) { var c, d, e = this; return d = this.$element.data("width") || 560, this.resize(d), c = this.$element.data("disableExternalCheck") || !1, c || this.isExternal(b) ? (this.lightbox_body.html('<iframe width="' + d + '" height="' + d + '" src="' + b + '" frameborder="0" allowfullscreen></iframe>'), this.options.onContentLoaded.call(this)) : this.lightbox_body.load(b, a.proxy(function () { return e.$element.trigger("loaded.bs.modal") })), this.modal_arrows ? this.modal_arrows.css("display", "block") : void 0 }, isExternal: function (a) { var b; return b = a.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/), "string" == typeof b[1] && b[1].length > 0 && b[1].toLowerCase() !== location.protocol ? !0 : "string" == typeof b[2] && b[2].length > 0 && b[2].replace(new RegExp(":(" + { "http:": 80, "https:": 443 }[location.protocol] + ")?$"), "") !== location.host ? !0 : !1 }, error: function (a) { return this.lightbox_body.html(a), this }, preloadImage: function (b, c) { var d, e = this; return d = new Image, (null == c || c === !0) && (d.onload = function () { var b; return b = a("<img />"), b.attr("src", d.src), b.addClass("img-responsive"), e.lightbox_body.html(b), e.modal_arrows && e.modal_arrows.css("display", "block"), e.resize(d.width), e.o
9831ptions.onContentLoaded.call(e) }, d.onerror = function () { return e.error("Failed to load image: " + b) }), d.src = b, d }, resize: function (b) { var c; return c = b + this.border.left + this.padding.left + this.padding.right + this.border.right, this.modal_dialog.css("width", "auto").css("max-width", c), this.lightbox_container.find("a").css("padding-top", function () { return a(this).parent().height() / 2 }), this }, checkDimensions: function (a) { var b, c; return c = a + this.border.left + this.padding.left + this.padding.right + this.border.right, b = document.body.clientWidth, c > b && (a = this.modal_body.width()), a }, close: function () { return this.modal.modal("hide") }, addTrailingSlash: function (a) { return "/" !== a.substr(-1) && (a += "/"), a } }, a.fn.ekkoLightbox = function (c) { return this.each(function () { var d; return d = a(this), c = a.extend({ remote: d.attr("data-remote") || d.attr("href"), gallery_parent_selector: d.attr("data-parent"), type: d.attr("data-type") }, c, d.data()), new b(this, c), this }) }, a.fn.ekkoLightbox.defaults = { gallery_parent_selector: "*:not(.row)", left_arrow_class: ".glyphicon .glyphicon-chevron-left", right_arrow_class: ".glyphicon .glyphicon-chevron-right", directional_arrows: !0, type: null, always_show_close: !0, onShow: function () { }, onShown: function () { }, onHide: function () { }, onHidden: function () { }, onNavigate: function () { }, onContentLoaded: function () { } } }).call(this);
9832Function.prototype.bind || (Function.prototype.bind = function (n) { if (typeof this != "function") throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); var r = Array.prototype.slice.call(arguments, 1), u = this, t = function () { }, i = function () { return u.apply(this instanceof t ? this : n, r.concat(Array.prototype.slice.call(arguments))) }; return t.prototype = this.prototype, i.prototype = new t, i });/*
9833* jquery-match-height master by @liabru
9834* http://brm.io/jquery-match-height/
9835* License MIT
9836*/
9837!function(t){"use strict";"function"===typeof define&&define.amd?define(["jquery"],t):"undefined"!==typeof module&&module.exports?module.exports=t(require("jquery")):t(jQuery)}(function(t){var e=-1,o=-1,i=function(t){return parseFloat(t)||0},n=function(e){var o=1,n=t(e),a=null,r=[];return n.each(function(){var e=t(this),n=e.offset().top-i(e.css("margin-top")),s=r.length>0?r[r.length-1]:null;null===s?r.push(e):Math.floor(Math.abs(a-n))<=o?r[r.length-1]=s.add(e):r.push(e),a=n}),r},a=function(e){var o={
9838byRow:!0,property:"height",target:null,remove:!1};return"object"===typeof e?t.extend(o,e):("boolean"===typeof e?o.byRow=e:"remove"===e&&(o.remove=!0),o)},r=t.fn.matchHeight=function(e){var o=a(e);if(o.remove){var i=this;return this.css(o.property,""),t.each(r._groups,function(t,e){e.elements=e.elements.not(i)}),this}return this.length<=1&&!o.target?this:(r._groups.push({elements:this,options:o}),r._apply(this,o),this)};r.version="master",r._groups=[],r._throttle=80,r._maintainScroll=!1,r._beforeUpdate=null,
9839r._afterUpdate=null,r._rows=n,r._parse=i,r._parseOptions=a,r._apply=function(e,o){var s=a(o),h=t(e),c=[h],l=t(window).scrollTop(),p=t("html").outerHeight(!0),d=h.parents().filter(":hidden");return d.each(function(){var e=t(this);e.data("style-cache",e.attr("style"))}),d.css("display","block"),s.byRow&&!s.target&&(h.each(function(){var e=t(this),o=e.css("display");"inline-block"!==o&&"flex"!==o&&"inline-flex"!==o&&(o="block"),e.data("style-cache",e.attr("style")),e.css({display:o,"padding-top":"0",
9840"padding-bottom":"0","margin-top":"0","margin-bottom":"0","border-top-width":"0","border-bottom-width":"0",height:"100px",overflow:"hidden"})}),c=n(h),h.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||"")})),t.each(c,function(e,o){var n=t(o),a=0;if(s.target)a=s.target.outerHeight(!1);else{if(s.byRow&&n.length<=1)return void n.css(s.property,"");n.each(function(){var e=t(this),o=e.css("display");"inline-block"!==o&&"flex"!==o&&"inline-flex"!==o&&(o="block");var i={display:o};i[s.property]="",
9841e.css(i),e.outerHeight(!1)>a&&(a=e.outerHeight(!1)),e.css("display","")})}n.each(function(){var e=t(this),o=0;s.target&&e.is(s.target)||("border-box"!==e.css("box-sizing")&&(o+=i(e.css("border-top-width"))+i(e.css("border-bottom-width")),o+=i(e.css("padding-top"))+i(e.css("padding-bottom"))),e.css(s.property,a-o+"px"))})}),d.each(function(){var e=t(this);e.attr("style",e.data("style-cache")||null)}),r._maintainScroll&&t(window).scrollTop(l/p*t("html").outerHeight(!0)),this},r._applyDataApi=function(){
9842var e={};t("[data-match-height], [data-mh]").each(function(){var o=t(this),i=o.attr("data-mh")||o.attr("data-match-height");i in e?e[i]=e[i].add(o):e[i]=o}),t.each(e,function(){this.matchHeight(!0)})};var s=function(e){r._beforeUpdate&&r._beforeUpdate(e,r._groups),t.each(r._groups,function(){r._apply(this.elements,this.options)}),r._afterUpdate&&r._afterUpdate(e,r._groups)};r._update=function(i,n){if(n&&"resize"===n.type){var a=t(window).width();if(a===e)return;e=a}i?-1===o&&(o=setTimeout(function(){
9843s(n),o=-1},r._throttle)):s(n)},t(r._applyDataApi),t(window).bind("load",function(t){r._update(!1,t)}),t(window).bind("resize orientationchange",function(t){r._update(!0,t)})});/*!
9844 * imagesLoaded PACKAGED v3.2.0
9845 * JavaScript is all like "You images are done yet or what?"
9846 * MIT License
9847 */
9848
9849(function(){"use strict";function e(){}function t(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function n(e){return function(){return this[e].apply(this,arguments)}}var i=e.prototype,r=this,s=r.EventEmitter;i.getListeners=function(e){var t,n,i=this._getEvents();if("object"==typeof e){t={};for(n in i)i.hasOwnProperty(n)&&e.test(n)&&(t[n]=i[n])}else t=i[e]||(i[e]=[]);return t},i.flattenListeners=function(e){var t,n=[];for(t=0;t<e.length;t+=1)n.push(e[t].listener);return n},i.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&(t={},t[e]=n),t||n},i.addListener=function(e,n){var i,r=this.getListenersAsObject(e),s="object"==typeof n;for(i in r)r.hasOwnProperty(i)&&-1===t(r[i],n)&&r[i].push(s?n:{listener:n,once:!1});return this},i.on=n("addListener"),i.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},i.once=n("addOnceListener"),i.defineEvent=function(e){return this.getListeners(e),this},i.defineEvents=function(e){for(var t=0;t<e.length;t+=1)this.defineEvent(e[t]);return this},i.removeListener=function(e,n){var i,r,s=this.getListenersAsObject(e);for(r in s)s.hasOwnProperty(r)&&(i=t(s[r],n),-1!==i&&s[r].splice(i,1));return this},i.off=n("removeListener"),i.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},i.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},i.manipulateListeners=function(e,t,n){var i,r,s=e?this.removeListener:this.addListener,o=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(i=n.length;i--;)s.call(this,t,n[i]);else for(i in t)t.hasOwnProperty(i)&&(r=t[i])&&("function"==typeof r?s.call(this,i,r):o.call(this,i,r));return this},i.removeEvent=function(e){var t,n=typeof e,i=this._getEvents();if("string"===n)delete i[e];else if("object"===n)for(t in i)i.hasOwnProperty(t)&&e.test(t)&&delete i[t];else delete this._events;return this},i.removeAllListeners=n("removeEvent"),i.emitEvent=function(e,t){var n,i,r,s,o=this.getListenersAsObject(e);for(r in o)if(o.hasOwnProperty(r))for(i=o[r].length;i--;)n=o[r][i],n.once===!0&&this.removeListener(e,n.listener),s=n.listener.apply(this,t||[]),s===this._getOnceReturnValue()&&this.removeListener(e,n.listener);return this},i.trigger=n("emitEvent"),i.emit=function(e){var t=Array.prototype.slice.call(arguments,1
9849);return this.emitEvent(e,t)},i.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},i._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},i._getEvents=function(){return this._events||(this._events={})},e.noConflict=function(){return r.EventEmitter=s,e},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return e}):"object"==typeof module&&module.exports?module.exports=e:this.EventEmitter=e}).call(this),function(e){function t(t){var n=e.event;return n.target=n.target||n.srcElement||t,n}var n=document.documentElement,i=function(){};n.addEventListener?i=function(e,t,n){e.addEventListener(t,n,!1)}:n.attachEvent&&(i=function(e,n,i){e[n+i]=i.handleEvent?function(){var n=t(e);i.handleEvent.call(i,n)}:function(){var n=t(e);i.call(e,n)},e.attachEvent("on"+n,e[n+i])});var r=function(){};n.removeEventListener?r=function(e,t,n){e.removeEventListener(t,n,!1)}:n.detachEvent&&(r=function(e,t,n){e.detachEvent("on"+t,e[t+n]);try{delete e[t+n]}catch(i){e[t+n]=void 0}});var s={bind:i,unbind:r};"function"==typeof define&&define.amd?define("eventie/eventie",s):e.eventie=s}(this),function(e,t){"use strict";"function"==typeof define&&define.amd?define(["eventEmitter/EventEmitter","eventie/eventie"],function(n,i){return t(e,n,i)}):"object"==typeof module&&module.exports?module.exports=t(e,require("wolfy87-eventemitter"),require("eventie")):e.imagesLoaded=t(e,e.EventEmitter,e.eventie)}(window,function(e,t,n){function i(e,t){for(var n in t)e[n]=t[n];return e}function r(e){return"[object Array]"==f.call(e)}function s(e){var t=[];if(r(e))t=e;else if("number"==typeof e.length)for(var n=0;n<e.length;n++)t.push(e[n]);else t.push(e);return t}function o(e,t,n){if(!(this instanceof o))return new o(e,t,n);"string"==typeof e&&(e=document.querySelectorAll(e)),this.elements=s(e),this.options=i({},this.options),"function"==typeof t?n=t:i(this.options,t),n&&this.on("always",n),this.getImages(),u&&(this.jqDeferred=new u.Deferred);var r=this;setTimeout(function(){r.check()})}function h(e){this.img=e}function a(e,t){this.url=e,this.element=t,this.img=new Image}var u=e.jQuery,c=e.console,f=Object.prototype.toString;o.prototype=new t,o.prototype.options={},o.prototype.getImages=function(){this.images=[];for(var e=0;e<this.elements.length;e++){var t=this.elements[e];this.addElementImages(t)}},o.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),this.options.background===!0&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&d[t]){for(var n=e.querySelectorAll("img"),i=0;i<n.length;i++){var r=n[i];this.addImage(r)}if("string"==typeof this.options.background){var s=e.querySelectorAll(this.options.background);for(i=0;i<s.length;i++){var o=s[i];this.addElementBackgroundImages(o)}}}};var d={1:!0,9:!0,11:!0};o.prototype.addElementBackgroundImages=function(e){for(var t=m(e),n=/url\(['"]*([^'"\)]+)['"]*\)/gi,i=n.exec(t.backgroundImage);null!==i;){var r=i&&i[1];r&&this.addBackground(r,e),i=n.exec(t.backgroundImage)}};var m=e.getComputedStyle||function(e){return e.currentStyle};return o.prototype.addImage=function(e){var t=new h(e);this.images.push(t)},o.prototype.addBackground=function(e,t){var n=new a(e,t);this.images.push(n)},o.prototype.check=function(){function e(e,n,i){setTimeout(function(){t.progress(e,n,i)})}var t=this;if(this.progressedCount=0,this.hasAnyBroken=!1,!this.images.length)return void this.complete();for(var n=0;n<this.images.length;n++){var i=this.images[n];i.once("progress",e),i.check()}},o.prototype.progress=function(e,t,n){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded,this.emit("progress",this,e,t),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,e),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&c&&c.log("progress: "+n,e,t)},o.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emit(e,this),this.emit("always",this),this.jqDeferred){var t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},h.prototype=new t,h.prototype.check=function(){var e=this.getIsImageComplete();
9849return e?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,n.bind(this.proxyImage,"load",this),n.bind(this.proxyImage,"error",this),n.bind(this.img,"load",this),n.bind(this.img,"error",this),void(this.proxyImage.src=this.img.src))},h.prototype.getIsImageComplete=function(){return this.img.complete&&void 0!==this.img.naturalWidth},h.prototype.confirm=function(e,t){this.isLoaded=e,this.emit("progress",this,this.img,t)},h.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){n.unbind(this.proxyImage,"load",this),n.unbind(this.proxyImage,"error",this),n.unbind(this.img,"load",this),n.unbind(this.img,"error",this)},a.prototype=new h,a.prototype.check=function(){n.bind(this.img,"load",this),n.bind(this.img,"error",this),this.img.src=this.url;var e=this.getIsImageComplete();e&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},a.prototype.unbindEvents=function(){n.unbind(this.img,"load",this),n.unbind(this.img,"error",this)},a.prototype.confirm=function(e,t){this.isLoaded=e,this.emit("progress",this,this.element,t)},o.makeJQueryPlugin=function(t){t=t||e.jQuery,t&&(u=t,u.fn.imagesLoaded=function(e,t){var n=new o(this,e,t);return n.jqDeferred.promise(u(this))})},o.makeJQueryPlugin(),o});
vendor: 24,103 bytes, lines 9849-9857
9849/*!
9850 * Masonry PACKAGED v4.2.2
9851 * Cascading grid layout library
9852 * https://masonry.desandro.com
9853 * MIT License
9854 * by David DeSandro
9855 */
9856
9857!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,a){function h(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,h){var u=a.data(h,i);if(!u)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var d=u[e];if(!d||"_"==e.charAt(0))return void s(r+" is not a valid method");var l=d.apply(u,n);o=void 0===o?l:o}),void 0!==o?o:t}function u(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),a.data(n,i,o))})}a=a||e||t.jQuery,a&&(r.prototype.option||(r.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return h(this,t,e)}return u(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(t,r),delete n[r]),r.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t}),function(t,e){"function"==typeof define&&define.amd?define("get-size/get-size",e):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=-1==t.indexOf("%")&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;u>e;e++){var i=h[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function o(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var o=n(e);s=200==Math.round(t(o.width)),r.isBoxSizeOuter=s,i.removeChild(e)}}function r(e){if(o(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var r=n(e);if("none"==r.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==r.boxSizing,l=0;u>l;l++){var c=h[l],f=r[c],m=parseFloat(f);a[c]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,g=a.paddingTop+a.paddingBottom,y=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,E=d&&s,b=t(r.width);b!==!1&&(a.width=b+(E?0:p+_));var x=t(r.height);return x!==!1&&(a.height=x+(E?0:g+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(g+z),a.outerWidth=a.width+y,a.outerHeight=a.height+v,a}}var s,a="undefined"==typeof console?e:function(t){console.error(t)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],u=h.length,d=!1;return r}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var n=e[i],o=n+"MatchesSelector";if(t[o])return o}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e};var n=Array.prototype.slice;i.makeArray=function(t){if(Array.isArray(t))return t;if(null===t||void 0===t)return[];var e="object"==typeof t&&"number"==typeof t.length;return e?n.call(t):[t]},i.removeFrom=function(t,e){var i=t.indexOf(e);-1!=i&&t.splice(i,1)},i.getParent=function(t,i){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,n){t=i.makeArray(t);var o=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!n)return void o.push(t);e(t,n)&&o.push(t);for(var i=t.querySelectorAll(n),r=0;r<i.length;r++)o.push(i[r])}}),o},i.debounceMethod=function(t,e,i){i=i||100;var n=t.prototype[e],o=e+"Timeout";t.prototype[e]=function(){var t=this[o];clearTimeout(t);var e=arguments,r=this;this[o]=setTimeout(function(){n.apply(r,e),delete r[o]},i)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var o=t.console;return i.htmlInit=function(e,n){i.docReady(function(){var r=i.toDashed(n),s="data-"+r,a=document.querySelectorAll("["+s+"]"),h=document.querySelectorAll(".js-"+r),u=i.makeArray(a).concat(i.makeArray(h)),d=s+"-options",l=t.jQuery;u.forEach(function(t){var i,r=t.getAttribute(s)||t.getAttribute(d);try{i=r&&JSON.parse(r)}catch(a){return void(o&&o.error("Error parsing "+s+" on "+t.className+": "+a))}var h=new e(t,i);l&&l.data(t,n,h)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["ev-emitter/ev-emitter","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("get-size")):(t.Outlayer={},t.Outlayer.Item=e(t.EvEmitter,t.getSize))}(window,function(t,e){"use strict";function i(t){for(var e in t)return!1;return e=null,!0}function n(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}function o(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}var r=document.documentElement.style,s="string"==typeof r.transition?"transition":"WebkitTransition",a="string"==typeof r.transform?"transform":"WebkitTransform",h={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[s],u={transform:a,transition:s,transitionDuration:s+"Duration",transitionProperty:s+"Property",transitionDelay:s+"Delay"},d=n.prototype=Object.create(t.prototype);d.constructor=n,d._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},d.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},d.getSize=function(){this.size=e(this.element)},d.css=function(t){var e=this.element.style;for(var i in t){var n=u[i]||i;e[n]=t[i]}},d.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),i=this.layout._getOption("originTop"),n=t[e?"left":"right"],o=t[i?"top":"bottom"],r=parseFloat(n),s=parseFloat(o),a=this.layout.size;-1!=n.indexOf("%")&&(r=r/100*a.width),-1!=o.indexOf("%")&&(s=s/100*a.height),r=isNaN(r)?0:r,s=isNaN(s)?0:s,r-=e?a.paddingLeft:a.paddingRight,s-=i?a.paddingTop:a.paddingBottom,this.position.x=r,this.position.y=s},d.layoutPosition=function(){var t=this.layout.size,e={},i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),o=i?"paddingLeft":"paddingRight",r=i?"left":"right",s=i?"right":"left",a=this.position.x+t[o];e[r]=this.getXValue(a),e[s]="";var h=n?"paddingTop":"paddingBottom",u=n?"top":"bottom",d=n?"bottom":"top",l=this.position.y+t[h];e[u]=this.getYValue(l),e[d]="",this.css(e),this.emitEvent("layout",[this])},d.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},d.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},d._transitionTo=function(t,e){this.getPosition();var i=this.position.x,n=this.position.y,o=t==this.position.x&&e==this.position.y;if(this.setPosition(t,e),o&&!this.isTransitioning)return void this.layoutPosition();var r=t-i,s=e-n,a={};a.transform=this.getTranslate(r,s),this.transition({to:a,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},d.getTranslate=function(t,e){var i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop");return t=i?t:-t,e=n?e:-e,"translate3d("+t+"px, "+e+"px, 0)"},d.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},d.moveTo=d._transitionTo,d.setPosition=function(t,e){this.position.x=parseFloat(t),this.position.y=parseFloat(e)},d._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},d.transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var n=this.element.offsetHeight;n=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var l="opacity,"+o(a);d.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:l,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(h,this,!1)}},d.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},d.onotransitionend=function(t){this.ontransitionend(t)};var c={"-webkit-transform":"transform"};d.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,n=c[t.propertyName]||t.propertyName;if(delete e.ingProperties[n],i(e.ingProperties)&&this.disableTransition(),n in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[n]),n in e.onEnd){var o=e.onEnd[n];o.call(this),delete e.onEnd[n]}this.emitEvent("transitionEnd",[this])}},d.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(h,this,!1),this.isTransitioning=!1},d._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var f={transitionProperty:"",transitionDuration:"",transitionDelay:""};return d.removeTransitionStyles=function(){this.css(f)},d.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},d.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},d.remove=function(){return s&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",function(){this.removeElem()}),void this.hide()):void this.removeElem()},d.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},d.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},d.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},d.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},d.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},d.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},n}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,n,o,r){return e(t,i,n,o,r)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,n,o){"use strict";function r(t,e){var i=n.getQueryElement(t);if(!i)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(i||t)));this.element=i,u&&(this.$element=u(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e);var o=++l;this.element.outlayerGUID=o,c[o]=this,this._create();var r=this._getOption("initLayout");r&&this.layout()}function s(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}function a(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),i=e&&e[1],n=e&&e[2];if(!i.length)return 0;i=parseFloat(i);var o=m[n]||1;return i*o}var h=t.console,u=t.jQuery,d=function(){},l=0,c={};r.namespace="outlayer",r.Item=o,r.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var f=r.prototype;n.extend(f,e.prototype),f.option=function(t){n.extend(this.options,t)},f._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},r.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},f._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),n.extend(this.element.style,this.options.containerStyle);var t=this._getOption("resize");t&&this.bindResize()},f.reloadItems=function(){this.items=this._itemize(this.element.children)},f._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,n=[],o=0;o<e.length;o++){var r=e[o],s=new i(r,this);n.push(s)}return n},f._filterFindItemElements=function(t){return n.filterFindElements(t,this.options.itemSelector)},f.getItemElements=function(){return this.items.map(function(t){return t.element})},f.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0},f._init=f.layout,f._resetLayout=function(){this.getSize()},f.getSize=function(){this.size=i(this.element)},f._getMeasurement=function(t,e){var n,o=this.options[t];o?("string"==typeof o?n=this.element.querySelector(o):o instanceof HTMLElement&&(n=o),this[t]=n?i(n)[e]:o):this[t]=0},f.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},f._getItemsForLayout=function(t){return t.filter(function(t){return!t.isIgnored})},f._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var i=[];t.forEach(function(t){var n=this._getItemLayoutPosition(t);n.item=t,n.isInstant=e||t.isLayoutInstant,i.push(n)},this),this._processLayoutQueue(i)}},f._getItemLayoutPosition=function(){return{x:0,y:0}},f._processLayoutQueue=function(t){this.updateStagger(),t.forEach(function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)},this)},f.updateStagger=function(){var t=this.options.stagger;return null===t||void 0===t?void(this.stagger=0):(this.stagger=a(t),this.stagger)},f._positionItem=function(t,e,i,n,o){n?t.goTo(e,i):(t.stagger(o*this.stagger),t.moveTo(e,i))},f._postLayout=function(){this.resizeContainer()},f.resizeContainer=function(){var t=this._getOption("resizeContainer");if(t){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},f._getContainerSize=d,f._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},f._emitCompleteOnItems=function(t,e){function i(){o.dispatchEvent(t+"Complete",null,[e])}function n(){s++,s==r&&i()}var o=this,r=e.length;if(!e||!r)return void i();var s=0;e.forEach(function(e){e.once(t,n)})},f.dispatchEvent=function(t,e,i){var n=e?[e].concat(i):i;if(this.emitEvent(t,n),u)if(this.$element=this.$element||u(this.element),e){var o=u.Event(e);o.type=t,this.$element.trigger(o,i)}else this.$element.trigger(t,i)},f.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},f.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},f.stamp=function(t){t=this._find(t),t&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},f.unstamp=function(t){t=this._find(t),t&&t.forEach(function(t){n.removeFrom(this.stamps,t),this.unignore(t)},this)},f._find=function(t){return t?("string"==typeof t&&(t=this.element.querySelectorAll(t)),t=n.makeArray(t)):void 0},f._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},f._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},f._manageStamp=d,f._getElementOffset=function(t){var e=t.getBoundingClientRect(),n=this._boundingRect,o=i(t),r={left:e.left-n.left-o.marginLeft,top:e.top-n.top-o.marginTop,right:n.right-e.right-o.marginRight,bottom:n.bottom-e.bottom-o.marginBottom};return r},f.handleEvent=n.handleEvent,f.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},f.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},f.onresize=function(){this.resize()},n.debounceMethod(r,"onresize",100),f.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},f.needsResizeLayout=function(){var t=i(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},f.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},f.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},f.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},f.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.reveal()})}},f.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.hide()})}},f.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},f.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},f.getItem=function(t){for(var e=0;e<this.items.length;e++){var i=this.items[e];if(i.element==t)return i}},f.getItems=function(t){t=n.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getItem(t);i&&e.push(i)},this),e},f.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach(function(t){t.remove(),n.removeFrom(this.items,t)},this)},f.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="",this.items.forEach(function(t){t.destroy()}),this.unbindResize();var e=this.element.outlayerGUID;delete c[e],delete this.element.outlayerGUID,u&&u.removeData(this.element,this.constructor.namespace)},r.data=function(t){t=n.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&c[e]},r.create=function(t,e){var i=s(r);return i.defaults=n.extend({},r.defaults),n.extend(i.defaults,e),i.compatOptions=n.extend({},r.compatOptions),i.namespace=t,i.data=r.data,i.Item=s(o),n.htmlInit(i,t),u&&u.bridget&&u.bridget(t,i),i};var m={ms:1,s:1e3};return r.Item=o,r}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer"),require("get-size")):t.Masonry=e(t.Outlayer,t.getSize)}(window,function(t,e){var i=t.create("masonry");i.compatOptions.fitWidth="isFitWidth";var n=i.prototype;return n._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},n.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var n=this.columnWidth+=this.gutter,o=this.containerWidth+this.gutter,r=o/n,s=n-o%n,a=s&&1>s?"round":"floor";r=Math[a](r),this.cols=Math.max(r,1)},n.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,n=e(i);this.containerWidth=n&&n.innerWidth},n._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&1>e?"round":"ceil",n=Math[i](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var o=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",r=this[o](n,t),s={x:this.columnWidth*r.col,y:r.y},a=r.y+t.size.outerHeight,h=n+r.col,u=r.col;h>u;u++)this.colYs[u]=a;return s},n._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},n._getTopColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,n=0;i>n;n++)e[n]=this._getColGroupY(n,t);return e},n._getColGroupY=function(t,e){if(2>e)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},n._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,n=t>1&&i+t>this.cols;i=n?0:i;var o=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=o?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},n._manageStamp=function(t){var i=e(t),n=this._getElementOffset(t),o=this._getOption("originLeft"),r=o?n.left:n.right,s=r+i.outerWidth,a=Math.floor(r/this.columnWidth);a=Math.max(0,a);var h=Math.floor(s/this.columnWidth);h-=s%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var u=this._getOption("originTop"),d=(u?n.top:n.bottom)+i.outerHeight,l=a;h>=l;l++)this.colYs[l]=Math.max(d,this.colYs[l])},n._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},n._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},n.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i});
9857var anythingSliderWidth=1e3,anythingSliderHeight=280,anythingSliderExpand=!1,anythingSliderResizeContents=!0,anythingSliderShowMultiple=!1,anythingSliderZTooltipClass="tooltip",anythingSliderTheme="default",anythingSliderStartPanel=1,anythingSliderHashTags=!0,anythingSliderInfiniteSlides=!0,anythingSliderEnableKeyboard=!0,anythingSliderBuildArrows=!0,anythingSliderToggleArrows=!1,anythingSliderBuildNavigation=!0,anythingSliderEnableNavigation=!0,anythingSliderToggleControls=!1,anythingSliderAppendControlsTo=null,anythingSliderNavigationFormatter=null,anythingSliderForwardText="&raquo;",anythingSliderBackText="&laquo;",anythingSliderEnablePlay=!0,anythingSliderAutoPlay=!0,anythingSliderAutoPlayLocked=!0,anythingSliderStartStopped=!1,anythingSliderPauseOnHover=!0,anythingSliderResumeOnVideoEnd=!0,anythingSliderStopAtEnd=!1,anythingSliderPlayRtl=!1,anythingSliderStartText="Start",anythingSliderStopText="Stop",anythingSliderDelay=4800,anythingSliderResumeDelay=3e3,anythingSliderAnimationTime=600,anythingSliderEasing="swing",anythingSliderClickArrows="click",anythingSliderClickControls="click focusin",anythingSliderClickSlideshow="click",anythingSliderAddWmodeToObject="opaque",anythingSliderMaxOverallWidth=32766;
9858/*
9859//# sourceMappingURL=jquery.anythingslider-config.min.js.map
9860*/(function(n){n.anythingSlider=function(t,i){var r=this,u;r.$el=n(t).addClass("anythingBase").wrap('<div class="anythingSlider"><div class="anythingWindow" /><\/div>');r.$el.data("AnythingSlider",r);r.init=function(){r.options=u=n.extend({},n.anythingSlider.defaults,i);r.initialized=!1;n.isFunction(u.onBeforeInitialize)&&r.$el.bind("before_initialize",u.onBeforeInitialize);r.$el.trigger("before_initialize",r);r.$wrapper=r.$el.parent().closest("div.anythingSlider").addClass("anythingSlider-"+u.theme);r.$window=r.$el.closest("div.anythingWindow");r.$controls=n('<div class="anythingControls"><\/div>').appendTo(u.appendControlsTo!==null&&n(u.appendControlsTo).length?n(u.appendControlsTo):r.$wrapper);r.win=window;r.$win=n(r.win);r.$nav=n('<ul class="thumbNav" />').appendTo(r.$controls);r.flag=!1;r.playing=!1;r.slideshow=!1;r.hovered=!1;r.panelSize=[];r.currentPage=u.startPanel=parseInt(u.startPanel,10)||1;r.adjustLimit=u.infiniteSlides?0:1;r.outerPad=[r.$wrapper.innerWidth()-r.$wrapper.width(),r.$wrapper.innerHeight()-r.$wrapper.height()];u.playRtl&&r.$wrapper.addClass("rtl");r.original=[u.autoPlay,u.buildNavigation,u.buildArrows];u.expand&&(r.$outer=r.$wrapper.parent(),r.$window.css({width:"100%",height:"100%"}),r.outerDim=[r.$outer.width(),r.$outer.height()],r.checkResize());r.updateSlider();r.$lastPage=r.$currentPage;r.runTimes=n("div.anythingSlider").index(r.$wrapper)+1;r.regex=new RegExp("panel"+r.runTimes+"-(\\d+)","i");n.isFunction(n.easing[u.easing])||(u.easing="swing");u.pauseOnHover&&r.$wrapper.hover(function(){r.playing&&(r.$el.trigger("slideshow_paused",r),r.clearTimer(!0))},function(){r.playing&&(r.$el.trigger("slideshow_unpaused",r),r.startStop(r.playing,!0))});var t,f=u.hashTags?r.gotoHash()||u.startPanel:u.startPanel;r.setCurrentPage(f,!1);r.slideControls(!1);r.$wrapper.bind("mouseenter mouseleave",function(n){r.hovered=n.type==="mouseenter"?!0:!1;r.slideControls(r.hovered,!1)});u.enableKeyboard&&n(document).keyup(function(n){if(r.$wrapper.is(".activeSlider")&&!n.target.tagName.match("TEXTAREA|INPUT|SELECT"))switch(n.which){case 39:r.goForward();break;case 37:r.goBack()}});t="slideshow_paused slideshow_unpaused slide_init slide_begin slideshow_stop slideshow_start initialized swf_completed".split(" ");n.each("onShowPause onShowUnpause onSlideInit onSlideBegin onShowStop onShowStart onInitialized onSWFComplete".split(" "),function(i,u){n.isFunction(r.options[u])&&r.$el.bind(t[i],r.options[u])});n.isFunction(u.onSlideComplete)&&r.$el.bind("slide_complete",function(){setTimeout(function(){u.onSlideComplete(r)},0)});r.initialized=!0;r.$el.trigger("initialized",r)};r.updateSlider=function(){r.$el.children(".cloned").remove();r.$nav.empty();r.$items=r.$el.children();r.pages=r.$items.length;u.showMultiple=parseInt(u.showMultiple,10)||1;u.showMultiple>1&&(u.showMultiple>r.pages&&(u.showMultiple=r.pages),r.adjustMultiple=u.infiniteSlides&&r.pages>1?0:parseInt(u.showMultiple,10)-1,r.pages=r.$items.length-r.adjustMultiple);r.pages<=1?(u.autoPlay=!1,u.buildNavigation=!1,u.buildArrows=!1,r.$controls.hide(),r.$nav.hide(),r.$forward&&r.$forward.add(r.$back).hide()):(u.autoPlay=r.original[0],u.buildNavigation=r.original[1],u.buildArrows=r.original[2],r.$controls.show(),r.$nav.show(),r.$forward&&r.$forward.add(r.$back).show(),r.buildNavigation(),u.autoPlay&&(r.playing=!u.startStopped,r.buildAutoPlay()),u.buildArrows&&r.buildNextBackButtons());u.infiniteSlides&&r.pages>1&&(r.$el.prepend(r.$items.filter(":last").clone().addClass("cloned").removeAttr("id")),u.showMultiple>1?r.$el.append(r.$items.filter(":lt("+u.showMultiple+")").clone().addClass("cloned").addClass("multiple").removeAttr("id")):r.$el.append(r.$items.filter(":first").clone().addClass("cloned").removeAttr("id")),r.$el.find(".cloned").each(function(){n(this).find("a,input,textarea,select").attr("disabled","disabled");n(this).find("[id]").removeAttr("id")}));r.$items=r.$el.children().addClass("panel");r.setDimensions();u.resizeContents?(u.width&&(r.$items.css("width",u.width),r.$wrapper.css("width",r.getDim(r.currentPage)[0])),u.height&&r.$wrapper.add(r.$items).css("height",u.height)):r.$win.load(function(){r.setDimensions()});r.currentPage>r.pages&&(r.currentPage=r.pages);r.setCurrentPage(r.currentPage,!1);r.$nav.find("a").eq(r.currentPage-1).addClass("cur");r.hasEmb=r.$items.find("embed[src*=youtube]").length;r.hasSwfo=typeof swfobject!="undefined"&&swfobject.hasOwnProperty("embedSWF")&&n.isFunction(swfobject.embedSWF)?!0:!1;r.hasEmb&&r.hasSwfo&&r.$items.find("embed[src*=youtube]").each(function(t){var i=n(this).parent()[0].tagName==="OBJECT"?n(this).parent():n(this);i.wrap('<div id="ytvideo'+t+'"><\/div>');swfobject.embedSWF(n(this).attr("src")+"&enablejsapi=1&version=3&playerapiid=ytvideo"+t,"ytvideo"+t,i.attr("width"),i.attr("height"),"10",null,null,{allowScriptAccess:"always",wmode:u.addWmodeToObject,allowfullscreen:!0},{"class":i.attr("class"),style:i.attr("style")},function(){t>=r.hasEmb-1&&r.$el.trigger("swf_completed",r)}
9860)});u.showMultiple===!1&&r.$items.find("a").unbind("focus").bind("focus",function(t){r.$items.find(".focusedLink").removeClass("focusedLink");n(this).addClass("focusedLink");var i=n(this).closest(".panel");i.is(".activePage")||(r.gotoPage(r.$items.index(i)),t.preventDefault())})};r.buildNavigation=function(){var i,f,t;u.buildNavigation&&r.pages>1&&r.$items.filter(":not(.cloned)").each(function(e){var o=e+1;f=(o===1?"first":"")+(o===r.pages?"last":"");t=n('<a href="#"><\/a>').addClass("panel"+o).wrap('<li class="'+f+'" />');r.$nav.append(t.parent());n.isFunction(u.navigationFormatter)?(i=u.navigationFormatter(o,n(this)),t.html("<span>"+i+"<\/span>"),parseInt(t.find("span").css("text-indent"),10)<0&&t.addClass(u.tooltipClass).attr("title",i)):t.html("<span>"+o+"<\/span>");t.bind(u.clickControls,function(n){!r.flag&&u.enableNavigation&&(r.flag=!0,setTimeout(function(){r.flag=!1},100),r.gotoPage(o),u.hashTags&&r.setHash(o));n.preventDefault()})})};r.buildNextBackButtons=function(){r.$forward||(r.$forward=n('<span class="arrow forward"><a href="#"><span>'+u.forwardText+"<\/span><\/a><\/span>"),r.$back=n('<span class="arrow back"><a href="#"><span>'+u.backText+"<\/span><\/a><\/span>"),r.$back.bind(u.clickArrows,function(n){r.goBack();n.preventDefault()}),r.$forward.bind(u.clickArrows,function(n){r.goForward();n.preventDefault()}),r.$back.add(r.$forward).find("a").bind("focusin focusout",function(){n(this).toggleClass("hover")}),r.$wrapper.prepend(r.$forward).prepend(r.$back),r.$arrowWidth=r.$forward.width())};r.buildAutoPlay=function(){r.$startStop||r.pages<2||(r.$startStop=n("<a href='#' class='start-stop'><\/a>").html("<span>"+(r.playing?u.stopText:u.startText)+"<\/span>"),r.$controls.prepend(r.$startStop),r.$startStop.bind(u.clickSlideshow,function(n){u.enablePlay&&(r.startStop(!r.playing),r.playing&&(u.playRtl?r.goBack(!0):r.goForward(!0)));n.preventDefault()}).bind("focusin focusout",function(){n(this).toggleClass("hover")}),r.startStop(r.playing))};r.checkResize=function(n){clearTimeout(r.resizeTimer);r.resizeTimer=setTimeout(function(){var t=r.$outer.width(),i=r.$outer[0].tagName==="BODY"?r.$win.height():r.$outer.height(),u=r.outerDim;(u[0]!==t||u[1]!==i)&&(r.outerDim=[t,i],r.setDimensions(),r.gotoPage(r.currentPage,r.playing,null,1));typeof n=="undefined"&&r.checkResize()},500)};r.setDimensions=function(){var t,f,i,e,h,o=0,s=u.showMultiple>1?u.width||r.$window.width()/u.showMultiple:r.$window.width(),c=r.$win.width();u.expand&&(t=r.$outer.width()-r.outerPad[0],f=r.$outer.height()-r.outerPad[1],r.$wrapper.add(r.$window).add(r.$items).css({width:t,height:f}),s=u.showMultiple>1?t/u.showMultiple:t);r.$items.each(function(l){i=n(this).children("*");u.resizeContents?(t=parseInt(u.width,10)||s,f=parseInt(u.height,10)||r.$window.height(),n(this).css({width:t,height:f}),i.length===1&&(i.css({width:"100%",height:"100%"}),i[0].tagName==="OBJECT"&&i.find("embed").andSelf().attr({width:"100%",height:"100%"}))):(t=n(this).width(),h=t>=c?!0:!1,i.length===1&&h&&(e=i.width()>=c?s:i.width(),n(this).css("width",e),i.css("max-width",e),t=e),t=h?u.width||s:t,n(this).css("width",t),f=n(this).outerHeight(),n(this).css("height",f));r.panelSize[l]=[t,f,o];o+=t});r.$el.css("width",o<u.maxOverallWidth?o:u.maxOverallWidth)};r.getDim=function(n){n=u.infiniteSlides&&r.pages>1?n:n-1;var t,f=r.panelSize[n][0],i=r.panelSize[n][1];if(u.showMultiple>1)for(t=1;t<u.showMultiple;t++)f+=r.panelSize[(n+t)%u.showMultiple][0],i=Math.max(i,r.panelSize[n+t][1]);return[f,i]};r.gotoPage=function(n,t,i,f){if(!(r.pages<=1)&&(r.$lastPage=r.$currentPage,typeof n!="number"&&(n=u.startPanel,r.setCurrentPage(n)),!r.hasEmb||!r.checkVideo(r.playing))){if(n>r.pages+1-r.adjustLimit&&(n=!u.infiniteSlides&&!u.stopAtEnd?1:r.pages),n<r.adjustLimit&&(n=!u.infiniteSlides&&!u.stopAtEnd?r.pages:1),r.currentPage=n>r.pages?r.pages:n<1?1:r.currentPage,r.$currentPage=r.$items.eq(r.currentPage-r.adjustLimit),r.exactPage=n,r.$targetPage=r.$items.eq(n===0?r.pages-r.adjustLimit:n>r.pages?1-r.adjustLimit:n-r.adjustLimit),r.$el.trigger("slide_init",r),r.slideControls(!0,!1),t!==!0&&(t=!1),(!t||u.stopAtEnd&&n===r.pages)&&r.startStop(!1),r.$el.trigger("slide_begin",r),!u.resizeContents){var e=r.getDim(n);r.$wrapper.filter(":not(:animated)").animate({width:e[0],height:e[1]},{queue:!1,duration:f||u.animationTime,easing:u.easing})}r.$el.filter(":not(:animated)").animate({left:-r.panelSize[u.infiniteSlides&&r.pages>1?n:n-1][2]},{queue:!1,duration:f||u.animationTime,easing:u.easing,complete:function(){r.endAnimation(n,i)}})}};r.endAnimation=function(t,i){if(t===0?(r.$el.css("left",-r.panelSize[r.pages][2]),t=r.pages):t>r.pages&&(r.$el.css("left",-r.panelSize[1][2]),t=1),r.exactPage=t,r.setCurrentPage(t,!1),r.$items.removeClass("activePage").eq(t-r.adjustLimit).addClass("activePage"),r.hovered||r.slideControls(!1),r.hasEmb){var f=r.$currentPage.find("object[id*=ytvideo], embed[id*=ytvideo]");f.length&&n.isFunction(f[0].getPlayerState)&&f[0].getPlayerState()>0&&f[0].getPlayerState()!==5&&f[0].playVideo()}r.$el.trigger("slide_complete",r);typeof i=="function"&&i(r);u.autoPlayLocked&&!r.playing&&setTimeout(function(){r.startStop(!0)},u.resumeDelay-u.delay)};r.setCurrentPage=function(t,i){if(t=parseInt(t,10),t>r.pages+1-r.adjustLimit&&(t=r.pages-r.adjustLimit),t<r.adjustLimit&&(t=1),u.buildNavigation&&(r.$nav.find(".cur").removeClass("cur"),r.$nav.find("a").eq(t-1).addClass("cur")),!u.infiniteSlides&&u.stopAtEnd&&(r.$wrapper.find("span.forward")[t===r.pages?"addClass":"removeClass"]("disabled"),r.$wrapper.find("span.back")[t===1?"addClass":"removeClass"]("disabled"),t===r.pages&&r.playing&&r.startStop()),!i){var f=r.getDim(t);r.$wrapper.css({width:f[0],height:f[1]});r.$wrapper.scrollLeft(0);r.$el.css("left",-r.panelSize[u.infiniteSlides&&r.pages>1?t:t-1][2])}r.currentPage=t;r.$currentPage=r.$items.eq(t-r.adjustLimit).addClass("activePage");r.$wrapper.is(".activeSlider")||(n(".activeSlider").removeClass("activeSlider"),r.$wrapper.addClass("activeSlider"))};r.goForward=function(n){n!==!0&&(n=!1,r.startStop(!1));r.gotoPage(r.currentPage+1,n)};r.goBack=function(n){n!==!0&&(n=!1,r.startStop(!1));r.gotoPage(r.currentPage-1,n)};r.gotoHash=function(){var n=r.win.location.hash.match(r.regex);return n===null?"":parseInt(n[1],10)};r.setHash=function(n){var i="panel"+r.runTimes+"-",t=r.win.location.hash;typeof t!="undefined"&&(r.win.location.hash=t.indexOf(i)>0?t.replace(r.regex,i+n):t+"&"+i+n)};r.slideControls=function(n){var e=n?"slideDown":"slideUp",t=n?0:u.animationTime,o=n?u.animationTime:0,i=n?1:0,f=n?0:1;u.toggleControls&&r.$controls.stop(!0,!0).delay(t)[e](u.animationTime/2).delay(o);u.buildArrows&&u.toggleArrows&&(!r.hovered&&r.playing&&(f=1,i=0),r.$forward.stop(!0,!0).delay(t).animate({right:f*r.$arrowWidth,opacity:i},u.animationTime/2),r.$back.stop(!0,!0).delay(t).animate({left:f*r.$arrowWidth,opacity:i},u.animationTime/2))};r.clearTimer=function(n){r.timer&&(r.win.clearInterval(r.timer),!n&&r.slideshow&&(r.$el.trigger("slideshow_stop",r),r.slideshow=!1))};r.startStop=function(n,t){n!==!0&&(n=!1);n&&!t&&(r.$el.trigger("slideshow_start",r),r.slideshow=!0);r.playing=n;u.autoPlay&&(r.$startStop.toggleClass("playing",n).html("<span>"+(n?u.stopText:u.startText)+"<\/span>"),parseInt(r.$startStop.find("span").css("text-indent"),10)<0&&r.$startStop.addClass(u.tooltipClass).attr("title",n?"Stop":"Start"));n?(r.clearTimer(!0),r.timer=r.win.setInterval(function(){r.hasEmb&&r.checkVideo(n)||(u.playRtl?r.goBack(!0):r.goForward(!0))},u.delay)):r.clearTimer()};r.checkVideo=function(t){var i,f,e=!1;return r.$items.find("object[id*=ytvideo], embed[id*=ytvideo]").each(function(){i=n(this);i.length&&n.isFunction(i[0].getPlayerState)&&(f=i[0].getPlayerState(),t&&(f===1||f>
98602)&&r.$items.index(i.closest(".panel"))===r.currentPage&&u.resumeOnVideoEnd?e=!0:f>0&&i[0].pauseVideo())}),e};r.init()};n.anythingSlider.defaults={width:anythingSliderWidth,height:anythingSliderHeight,expand:anythingSliderExpand,resizeContents:anythingSliderResizeContents,showMultiple:anythingSliderShowMultiple,tooltipClass:anythingSliderZTooltipClass,theme:anythingSliderTheme,startPanel:anythingSliderStartPanel,hashTags:anythingSliderHashTags,infiniteSlides:anythingSliderInfiniteSlides,enableKeyboard:anythingSliderEnableKeyboard,buildArrows:anythingSliderBuildArrows,toggleArrows:anythingSliderToggleArrows,buildNavigation:anythingSliderBuildNavigation,enableNavigation:anythingSliderEnableNavigation,toggleControls:anythingSliderToggleControls,appendControlsTo:anythingSliderAppendControlsTo,navigationFormatter:anythingSliderNavigationFormatter,forwardText:anythingSliderForwardText,backText:anythingSliderBackText,enablePlay:anythingSliderEnablePlay,autoPlay:anythingSliderAutoPlay,autoPlayLocked:anythingSliderAutoPlayLocked,startStopped:anythingSliderStartStopped,pauseOnHover:anythingSliderPauseOnHover,resumeOnVideoEnd:anythingSliderResumeOnVideoEnd,stopAtEnd:anythingSliderStopAtEnd,playRtl:anythingSliderPlayRtl,startText:anythingSliderStartText,stopText:anythingSliderStopText,delay:anythingSliderDelay,resumeDelay:anythingSliderResumeDelay,animationTime:anythingSliderAnimationTime,easing:anythingSliderEasing,clickArrows:anythingSliderClickArrows,clickControls:anythingSliderClickControls,clickSlideshow:anythingSliderClickSlideshow,addWmodeToObject:anythingSliderAddWmodeToObject,maxOverallWidth:anythingSliderMaxOverallWidth};n.fn.anythingSlider=function(t,i){return this.each(function(){var u,r=n(this).data("AnythingSlider");(typeof t).match("object|undefined")?r?r.updateSlider():new n.anythingSlider(this,t):/\d/.test(t)&&!isNaN(t)&&r&&(u=typeof t=="number"?t:parseInt(n.trim(t),10),u>=1&&u<=r.pages&&r.gotoPage(u,!1,i))})}})(jQuery);/*!
9861 * @copyright Copyright &copy; Kartik Visweswaran, Krajee.com, 2014 - 2015
9862 * @version 1.3.3
9863 *
9864 * Date formatter utility library that allows formatting date/time variables or Date objects using PHP DateTime format.
9865 * @see http://php.net/manual/en/function.date.php
9866 *
9867 * For more JQuery plugins visit http://plugins.krajee.com
9868 * For more Yii related demos visit http://demos.krajee.com
9869 */
9870var DateFormatter;(function(){"use strict";var t,n,i,f,r,u;r=864e5;u=3600;t=function(n,t){return typeof n=="string"&&typeof t=="string"&&n.toLowerCase()===t.toLowerCase()};n=function(t,i,r){var f=r||"0",u=t.toString();return u.length<i?n(f+u,i):u};i=function(n){var u,t,r;for(n=n||{},u=1;u<arguments.length;u++)if(t=arguments[u],t)for(r in t)t.hasOwnProperty(r)&&(typeof t[r]=="object"?i(n[r],t[r]):n[r]=t[r]);return n};f={dateSettings:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["AM","PM"],ordinal:function(n){var t=n%10,i={1:"st",2:"nd",3:"rd"};return Math.floor(n%100/10)===1||!i[t]?"th":i[t]}},separators:/[ \-+\/\.T:@]/g,validParts:/[dDjlNSwzWFmMntLoYyaABgGhHisueTIOPZcrU]/g,intParts:/[djwNzmnyYhHgGis]/g,tzParts:/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,tzClip:/[^-+\dA-Z]/g};DateFormatter=function(n){var t=this,r=i(f,n);t.dateSettings=r.dateSettings;t.separators=r.separators;t.validParts=r.validParts;t.intParts=r.intParts;t.tzParts=r.tzParts;t.tzClip=r.tzClip};DateFormatter.prototype={constructor:DateFormatter,parseDate:function(n,i){var v=this,f,c,e,l=!1,h=!1,o,r,a=v.dateSettings,s,y,p,w,b,u={date:null,year:null,month:null,day:null,hour:0,min:0,sec:0};if(!n)return undefined;if(n instanceof Date)return n;if(typeof n=="number")return new Date(n);if(i==="U")return e=parseInt(n),e?new Date(e*1e3):n;if(typeof n!="string")return"";if(f=i.match(v.validParts),!f||f.length===0)throw new Error("Invalid date format definition.");for(c=n.replace(v.separators,'\0').split('\0'),e=0;e<c.length;e++){o=c[e];r=parseInt(o);switch(f[e]){case"y":case"Y":w=o.length;w===2?u.year=parseInt((r<70?"20":"19")+o):w===4&&(u.year=r);l=!0;break;case"m":case"n":case"M":case"F":isNaN(o)?(s=a.monthsShort.indexOf(o),s>-1&&(u.month=s+1),s=a.months.indexOf(o),s>-1&&(u.month=s+1)):r>=1&&r<=12&&(u.month=r);l=!0;break;case"d":case"j":r>=1&&r<=31&&(u.day=r);l=!0;break;case"g":case"h":y=f.indexOf("a")>-1?f.indexOf("a"):f.indexOf("A")>-1?f.indexOf("A"):-1;b=c[y];y>-1?(p=t(b,a.meridiem[0])?0:t(b,a.meridiem[1])?12:-1,r>=1&&r<=12&&p>-1?u.hour=r+p-1:r>=0&&r<=23&&(u.hour=r)):r>=0&&r<=23&&(u.hour=r);h=!0;break;case"G":case"H":r>=0&&r<=23&&(u.hour=r);h=!0;break;case"i":r>=0&&r<=59&&(u.min=r);h=!0;break;case"s":r>=0&&r<=59&&(u.sec=r);h=!0}}if(l===!0&&u.year&&u.month&&u.day)u.date=new Date(u.year,u.month-1,u.day,u.hour,u.min,u.sec,0);else{if(h!==!0)return!1;u.date=new Date(0,0,0,u.hour,u.min,u.sec,0)}return u.date}
9870,guessDate:function(n,t){if(typeof n!="string")return n;var h=this,s=n.replace(h.separators,'\0').split('\0'),e=t.match(h.validParts),i=new Date,o=0,c,f,r,u;if(!/^[djmn]/g.test(e[0]))return n;for(f=0;f<s.length;f++){o=2;r=s[f];u=parseInt(r.substr(0,2));switch(f){case 0:e[0]==="m"||e[0]==="n"?i.setMonth(u-1):i.setDate(u);break;case 1:e[0]==="m"||e[0]==="n"?i.setDate(u):i.setMonth(u-1);break;case 2:c=i.getFullYear();r.length<4?(i.setFullYear(parseInt(c.toString().substr(0,4-r.length)+r)),o=r.length):(i.setFullYear=parseInt(r.substr(0,4)),o=4);break;case 3:i.setHours(u);break;case 4:i.setMinutes(u);break;case 5:i.setSeconds(u)}r.substr(o).length>0&&s.splice(f+1,0,r.substr(o))}return i},parseFormat:function(t,i){var o=this,e=o.dateSettings,f,h=/\\?(.?)/gi,s=function(n,t){return f[n]?f[n]():t};return f={d:function(){return n(f.j(),2)},D:function(){return e.daysShort[f.w()]},j:function(){return i.getDate()},l:function(){return e.days[f.w()]},N:function(){return f.w()||7},w:function(){return i.getDay()},z:function(){var n=new Date(f.Y(),f.n()-1,f.j()),t=new Date(f.Y(),0,1);return Math.round((n-t)/r)},W:function(){var t=new Date(f.Y(),f.n()-1,f.j()-f.N()+3),i=new Date(t.getFullYear(),0,4);return n(1+Math.round((t-i)/r/7),2)},F:function(){return e.months[i.getMonth()]},m:function(){return n(f.n(),2)},M:function(){return e.monthsShort[i.getMonth()]},n:function(){return i.getMonth()+1},t:function(){return new Date(f.Y(),f.n(),0).getDate()},L:function(){var n=f.Y();return n%4==0&&n%100!=0||n%400==0?1:0},o:function(){var n=f.n(),t=f.W(),i=f.Y();return i+(n===12&&t<9?1:n===1&&t>9?-1:0)},Y:function(){return i.getFullYear()},y:function(){return f.Y().toString().slice(-2)},a:function(){return f.A().toLowerCase()},A:function(){var n=f.G()<12?0:1;return e.meridiem[n]},B:function(){var t=i.getUTCHours()*u,r=i.getUTCMinutes()*60,f=i.getUTCSeconds();return n(Math.floor((t+r+f+u)/86.4)%1e3,3)},g:function(){return f.G()%12||12},G:function(){return i.getHours()},h:function(){return n(f.g(),2)},H:function(){return n(f.G(),2)},i:function(){return n(i.getMinutes(),2)},s:function(){return n(i.getSeconds(),2)},u:function(){return n(i.getMilliseconds()*1e3,6)},e:function(){var n=/\((.*)\)/.exec(String(i))[1];return n||"Coordinated Universal Time"},T:function(){var n=(String(i).match(o.tzParts)||[""]).pop().replace(o.tzClip,"");return n||"UTC"},I:function(){var n=new Date(f.Y(),0),t=Date.UTC(f.Y(),0),i=new Date(f.Y(),6),r=Date.UTC(f.Y(),6);return n-t!=i-r?1:0},O:function(){var t=i.getTimezoneOffset(),r=Math.abs(t);return(t>0?"-":"+")+n(Math.floor(r/60)*100+r%60,4)},P:function(){var n=f.O();return n.substr(0,3)+":"+n.substr(3,2)},Z:function(){return-i.getTimezoneOffset()*60},c:function(){return"Y-m-d\\TH:i:sP".replace(h,s)},r:function(){return"D, d M Y H:i:s O".replace(h,s)},U:function(){return i.getTime()/1e3||0}},s(t,t)},formatDate:function(n,t){var r=this,i,o,e,u,f,s="";if(typeof n=="string"&&(n=r.parseDate(n,t),n===!1))return!1;if(n instanceof Date){for(e=t.length,i=0;i<e;i++)(f=t.charAt(i),f!=="S")&&(u=r.parseFormat(f,n),i!==e-1&&r.intParts.test(f)&&t.charAt(i+1)==="S"&&(o=parseInt(u),u+=r.dateSettings.ordinal(o)),s+=u);return s}return""}}})();
9871/**
9872 * @preserve jQuery DateTimePicker plugin v2.5.4
9873 * @homepage http://xdsoft.net/jqplugins/datetimepicker/
9874 * @author Chupurnov Valeriy (<[email protected]>)
9875 */
9876(function(n){typeof define=="function"&&define.amd?define(["jquery","jquery-mousewheel"],n):typeof exports=="object"?module.exports=n:n(jQuery)})(function(n){"use strict";function f(n,t,i){this.date=n;this.desc=t;this.style=i}var r={i18n:{ar:{months:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],dayOfWeekShort:["ن","ث","ع","خ","ج","س","ح"],dayOfWeek:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"]},ro:{months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],dayOfWeekShort:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],dayOfWeek:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"]},id:{months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],dayOfWeekShort:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],dayOfWeek:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},is:{months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],dayOfWeekShort:["Sun","Mán","Þrið","Mið","Fim","Fös","Lau"],dayOfWeek:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"]},bg:{months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],dayOfWeekShort:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"]},fa:{months:["فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"],dayOfWeekShort:["یکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayOfWeek:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"]},ru:{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],dayOfWeekShort:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],dayOfWeek:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]},uk:{months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],dayOfWeekShort:["Ндл","Пнд","Втр","Срд","Чтв","Птн","Сбт"],dayOfWeek:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},en:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Frid
9876ay","Saturday"]},el:{months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],dayOfWeekShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayOfWeek:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"]},de:{months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],dayOfWeekShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayOfWeek:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},nl:{months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],dayOfWeekShort:["zo","ma","di","wo","do","vr","za"],dayOfWeek:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},tr:{months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],dayOfWeekShort:["Paz","Pts","Sal","Çar","Per","Cum","Cts"],dayOfWeek:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},fr:{months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],dayOfWeekShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],dayOfWeek:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},es:{months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dayOfWeekShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],dayOfWeek:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]},th:{months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],dayOfWeekShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayOfWeek:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"]},pl:{months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],dayOfWeekShort:["nd","pn","wt","śr","cz","pt","sb"],dayOfWeek:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"]},pt:{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},ch:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"]},se:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"]},kr:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},it:{months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayOfWeek:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"]},da:{months:["January","Februar","Marts","April","Maj","Juni","July","August","September","Oktober","November","December"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},no:{months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],dayOfWeekShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayOfWeek:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"]},ja:{months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeekShort:["日","月","火","水","木","金","土"],dayOfWeek:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"]},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"],dayOfWeekShort:["CN","T2","T3","T4","T5","T6","T7"],dayOfWeek:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},sl:{months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],dayOfWeekShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayOfWeek:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},cs:{months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],dayOfWeekShort:["Ne","Po","Út","St","Čt","Pá","So"]},hu:{months:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],dayOfWeekShort:["Va","Hé","Ke","Sze","Cs","Pé","Szo"],dayOfWeek:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"]},az:{months:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],dayOfWeekShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayOfWeek:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"]},bs:{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ca:{months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],dayOfWeekShort:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],dayOfWeek:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},"en-GB":{months:["January","February","March","April","May","June","July","August","September","October","November","December"],dayOfWeekShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Frid
9876ay","Saturday"]},et:{months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],dayOfWeekShort:["P","E","T","K","N","R","L"],dayOfWeek:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"]},eu:{months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],dayOfWeekShort:["Ig.","Al.","Ar.","Az.","Og.","Or.","La."],dayOfWeek:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"]},fi:{months:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],dayOfWeekShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayOfWeek:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},gl:{months:["Xan","Feb","Maz","Abr","Mai","Xun","Xul","Ago","Set","Out","Nov","Dec"],dayOfWeekShort:["Dom","Lun","Mar","Mer","Xov","Ven","Sab"],dayOfWeek:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"]},hr:{months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],dayOfWeekShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayOfWeek:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"]},ko:{months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayOfWeekShort:["일","월","화","수","목","금","토"],dayOfWeek:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"]},lt:{months:["Sausio","Vasario","Kovo","Balandžio","Gegužės","Birželio","Liepos","Rugpjūčio","Rugsėjo","Spalio","Lapkričio","Gruodžio"],dayOfWeekShort:["Sek","Pir","Ant","Tre","Ket","Pen","Šeš"],dayOfWeek:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"]},lv:{months:["Janvāris","Februāris","Marts","Aprīlis ","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],dayOfWeekShort:["Sv","Pr","Ot","Tr","Ct","Pk","St"],dayOfWeek:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"]},mk:{months:["јануари","февруари","март","април","мај","јуни","јули","август","септември","октомври","ноември","декември"],dayOfWeekShort:["нед","пон","вто","сре","чет","пет","саб"],dayOfWeek:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"]},mn:{months:["1-р сар","2-р сар","3-р сар","4-р сар","5-р сар","6-р сар","7-р сар","8-р сар","9-р сар","10-р сар","11-р сар","12-р сар"],dayOfWeekShort:["Дав","Мяг","Лха","Пүр","Бсн","Бям","Ням"],dayOfWeek:["Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба","Ням"]},"pt-BR":{months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],dayOfWeekShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayOfWeek:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"]},sk:{months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],dayOfWeekShort:["Ne","Po","Ut","St","Št","Pi","So"],dayOfWeek:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},sq:{months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],dayOfWeekShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],dayOfWeek:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"]},"sr-YU":{months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],dayOfWeekShort:["Ned","Pon","Uto","Sre","čet","Pet","Sub"],dayOfWeek:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},sr:{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],dayOfWeekShort:["нед","пон","уто","сре","чет","пет","суб"],dayOfWeek:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},sv:{months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],dayOfWeekShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayOfWeek:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"]},"zh-TW":{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},zh:{months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayOfWeekShort:["日","一","二","三","四","五","六"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},he:{months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],dayOfWeekShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayOfWeek:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"]},hy:{months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],dayOfWeekShort:["Կի","Երկ","Երք","Չոր","Հնգ","Ուրբ","Շբթ"],dayOfWeek:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"]}
9876,kg:{months:["Үчтүн айы","Бирдин айы","Жалган Куран","Чын Куран","Бугу","Кулжа","Теке","Баш Оона","Аяк Оона","Тогуздун айы","Жетинин айы","Бештин айы"],dayOfWeekShort:["Жек","Дүй","Шей","Шар","Бей","Жум","Ише"],dayOfWeek:["Жекшемб","Дүйшөмб","Шейшемб","Шаршемб","Бейшемби","Жума","Ишенб"]},rm:{months:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],dayOfWeekShort:["Du","Gli","Ma","Me","Gie","Ve","So"],dayOfWeek:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"]},ka:{months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],dayOfWeekShort:["კვ","ორშ","სამშ","ოთხ","ხუთ","პარ","შაბ"],dayOfWeek:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"]}},value:"",rtl:!1,format:"Y/m/d H:i",formatTime:"H:i",formatDate:"Y/m/d",startDate:!1,step:60,monthChangeSpinner:!0,closeOnDateSelect:!1,closeOnTimeSelect:!0,closeOnWithoutClick:!0,closeOnInputClick:!0,timepicker:!0,datepicker:!0,weeks:!1,defaultTime:!1,defaultDate:!1,minDate:!1,maxDate:!1,minTime:!1,maxTime:!1,disabledMinTime:!1,disabledMaxTime:!1,allowTimes:[],opened:!1,initTime:!0,inline:!1,theme:"",onSelectDate:function(){},onSelectTime:function(){},onChangeMonth:function(){},onGetWeekOfYear:function(){},onChangeYear:function(){},onChangeDateTime:function(){},onShow:function(){},onClose:function(){},onGenerate:function(){},withoutCopyright:!0,inverseButton:!1,hours12:!1,next:"xdsoft_next",prev:"xdsoft_prev",dayOfWeekStart:0,parentID:"body",timeHeightInTimePicker:25,timepickerScrollbar:!0,todayButton:!0,prevButton:!0,nextButton:!0,defaultSelect:!0,scrollMonth:!0,scrollTime:!0,scrollInput:!0,lazyInit:!1,mask:!1,validateOnBlur:!0,allowBlank:!0,yearStart:1950,yearEnd:2050,monthStart:0,monthEnd:11,style:"",id:"",fixed:!1,roundTime:"round",className:"",weekends:[],highlightedDates:[],highlightedPeriods:[],allowDates:[],allowDateRe:null,disabledDates:[],disabledWeekDays:[],yearOffset:0,beforeShowDay:null,enterLikeTab:!0,showApplyButton:!1},t=null,e="en",i="en",o={meridiem:["AM","PM"]},u=function(){var u=r.i18n[i],f={days:u.dayOfWeek,daysShort:u.dayOfWeekShort,months:u.months,monthsShort:n.map(u.months,function(n){return n.substring(0,3)})};t=new DateFormatter({dateSettings:n.extend({},o,f)})};n.datetimepicker={setLocale:function(n){var t=r.i18n[n]?n:e;i!=t&&(i=t,u())},setDateFormatter:function(n){t=n},RFC_2822:"D, d M Y H:i:s O",ATOM:"Y-m-dTH:i:sP",ISO_8601:"Y-m-dTH:i:sO",RFC_822:"D, d M y H:i:s O",RFC_850:"l, d-M-y H:i:s T",RFC_1036:"D, d M y H:i:s O",RFC_1123:"D, d M Y H:i:s O",RSS:"D, d M Y H:i:s O",W3C:"Y-m-dTH:i:sP"};u();window.getComputedStyle||(window.getComputedStyle=function(n){return this.el=n,this.getPropertyValue=function(t){var i=/(\-([a-z]){1})/g;return t==="float"&&(t="styleFloat"),i.test(t)&&(t=t.replace(i,function(n,t,i){return i.toUpperCase()})),n.currentStyle[t]||null},this});Array.prototype.indexOf||(Array.prototype.indexOf=function(n,t){for(var i=t||0,r=this.length;i<r;i+=1)if(this[i]===n)return i;return-1});Date.prototype.countDaysInMonth=function(){return new Date(this.getFullYear(),this.getMonth()+1,0).getDate()};n.fn.xdsoftScroller=function(t){return this.each(function(){var i=n(this),s=function(n){var t={x:0,y:0},i;return n.type==="touchstart"||n.type==="touchmove"||n.type==="touchend"||n.type==="touchcancel"?(i=n.originalEvent.touches[0]||n.originalEvent.changedTouches[0],t.x=i.clientX,t.y=i.clientY):(n.type==="mousedown"||n.type==="mouseup"||n.type==="mousemove"||n.type==="mouseover"||n.type==="mouseout"||n.type==="mouseenter"||n.type==="mouseleave")&&(t.x=n.clientX,t.y=n.clientY),t},f,u,e,o,r,h=100,c=!1,w=0,a=0,v=0,y=!1,p=0,l=function(){};if(t==="hide"){i.find(".xdsoft_scrollbar").hide();return}if(!n(this).hasClass("xdsoft_scroller_box")){f=i.children().eq(0);u=i[0].clientHeight;e=f[0].offsetHeight;o=n('<div class="xdsoft_scrollbar"><\/div>');r=n('<div class="xdsoft_scroller"><\/div>');o.append(r);i.addClass("xdsoft_scroller_box").append(o);l=function(n){var t=s(n).y-w+p;t<0&&(t=0);t+r[0].offsetHeight>v&&(t=v-r[0].offsetHeight);i.trigger("scroll_element.xdsoft_scroller",[h?t/h:0])};r.on("touchstart.xdsoft_scroller mousedown.xdsoft_scroller",function(f){if(u||i.trigger("resize_scroll.xdsoft_scroller",[t]),w=s(f).y,p=parseInt(r.css("margin-top"),10),v=o[0].offsetHeight,f.type==="mousedown"||f.type==="touchstart"){document&&n(document.body).addClass("xdsoft_noselect");n([document.body,window]).on("touchend mouseup.xdsoft_scroller",function e(){n([document.body,window]).off("touchend mouseup.xdsoft_scroller",e).off("mousemove.xdsoft_scroller",l).removeClass("xdsoft_noselect")});n(document.body).on("mousemove.xdsoft_scroller",l)}else y=!0,f.stopPropagation(),f.preventDefault()}).on("touchmove",function(n){y&&(n.preventDefault(),l(n))}).on("touchend touchcancel",function(){y=!1;p=0});i.on("scroll_element.xdsoft_scroller",function(n,t){u||i.trigger("resize_scroll.xdsoft_scroller",[t,!0]);t=t>1?1:t<0||isNaN(t)?0:t;r.css("margin-top",h*t);setTimeout(function(){f.css("marginTop",-parseInt((f[0].offsetHeight-u)*t,10))},10)}).on("resize_scroll.xdsoft_scroller",function(n,t,s){var c,l;u=i[0].clientHeight;e=f[0].offsetHeight;c=u/e;l=c*o[0].offsetHeight;c>1?r.hide():(r.show(),r.css("height",parseInt(l>10?l:10,10)),h=o[0].offsetHeight-r[0].offsetHeight,s!==!0&&i.trigger("scroll_element.xdsoft_scroller",[t||Math.abs(parseInt(f.css("marginTop"),10))/(e-u)]))});i.on("mousewheel",function(n){var t=Math.abs(parseInt(f.css("marginTop"),10));return t=t-n.deltaY*20,t<0&&(t=0),i.trigger("scroll_element.xdsoft_scroller",[t/(e-u)]),n.stopPropagation(),!1});i.on("touchstart",function(n){c=s(n);a=Math.abs(parseInt(f.css("marginTop"),10))});i.on("touchmove",function(n){if(c){n.preventDefault();var t=s(n);i.trigger("scroll_element.xdsoft_scroller",[(a-(t.y-c.y))/(e-u)])}});i.on("touchend touchcancel",function(){c=!1;a=0})}i.trigger("resize_scroll.xdsoft_scroller",[t])})};n.fn.datetimepicker=function(u,e){var v=this,y=48,nt=57,p=96,w=105,c=17,s=46,b=13,tt=27,h=8,it=37,rt=38,ut=39,ft=40,k=9,et=116,ot=65,st=67,ht=86,ct=90,lt=89,l=!1,o=n.isPlainObject(u)||!u?n.extend(!0,{},r,u):n.extend(!0,{},r),d=0,a,g,at=function(n){n.on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function t(){n.is(":disabled")||n.data("xdsoft_datetimepicker")||(clearTimeout(d),d=setTimeout(function(){n.data("xdsoft_datetimepicker")||a(n);n.off("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",t).trigger("open.xdsoft")},100))})};a=function(r){function ui(){var n=!1,t;return o.startDate?n=a.strToDate(o.startDate):(n=o.value||(r&&r.val&&r.val()?r.val():""),n?n=a.strToDateTime(n):o.defaultDate&&(n=a.strToDateTime(o.defaultDate),o.defaultTime&&(t=a.strtotime(o.defaultTime),n.setHours(t.getHours()),n.setMinutes(t.getMinutes())))),n&&a.isValidDate(n)?e.data("changed",!0):n="",n||0}function ei(t){var i=function(n,t){var i=n.replace(/([\[\]\/\{\}\(\)\-\.\+]{1})/g,"\\$1").replace(/_/g,"{digit+}").replace(/([0-9]{1})/g,"{digit$1}").replace(/\{digit([0-9]{1})\}/g,"[0-$1_]{1}").replace(/\{digit[\+]\}/g,"[0-9_]{1}");return new RegExp(i).test(t)},f=function(n){try{if(document.selection&&document.selection.createRange){var t=document.selection.createRange();
9876return t.getBookmark().charCodeAt(2)-2}if(n.setSelectionRange)return n.selectionStart}catch(i){return 0}},u=function(n,t){if(n=typeof n=="string"||n instanceof String?document.getElementById(n):n,!n)return!1;if(n.createTextRange){var i=n.createTextRange();return i.collapse(!0),i.moveEnd("character",t),i.moveStart("character",t),i.select(),!0}return n.setSelectionRange?(n.setSelectionRange(t,t),!0):!1};if(t.mask&&r.off("keydown.xdsoft"),t.mask===!0&&(t.mask=typeof moment!="undefined"?t.format.replace(/Y{4}/g,"9999").replace(/Y{2}/g,"99").replace(/M{2}/g,"19").replace(/D{2}/g,"39").replace(/H{2}/g,"29").replace(/m{2}/g,"59").replace(/s{2}/g,"59"):t.format.replace(/Y/g,"9999").replace(/F/g,"9999").replace(/m/g,"19").replace(/d/g,"39").replace(/H/g,"29").replace(/i/g,"59").replace(/s/g,"59")),n.type(t.mask)==="string"){i(t.mask,r.val())||(r.val(t.mask.replace(/[0-9]/g,"_")),u(r[0],0));r.on("keydown.xdsoft",function(e){var v=this.value,o=e.which,a,d;if(o>=y&&o<=nt||o>=p&&o<=w||o===h||o===s){for(a=f(this),d=o!==h&&o!==s?String.fromCharCode(p<=o&&o<=w?o-y:o):"_",(o===h||o===s)&&a&&(a-=1,d="_");/[^0-9_]/.test(t.mask.substr(a,1))&&a<t.mask.length&&a>0;)a+=o===h||o===s?-1:1;if(v=v.substr(0,a)+d+v.substr(a+1),n.trim(v)==="")v=t.mask.replace(/[0-9]/g,"_");else if(a===t.mask.length)return e.preventDefault(),!1;for(a+=o===h||o===s?0:1;/[^0-9_]/.test(t.mask.substr(a,1))&&a<t.mask.length&&a>0;)a+=o===h||o===s?-1:1;i(t.mask,v)?(this.value=v,u(this,a)):n.trim(v)===""?this.value=t.mask.replace(/[0-9]/g,"_"):r.trigger("error_input.xdsoft")}else if([ot,st,ht,ct,lt].indexOf(o)!==-1&&l||[tt,rt,ft,it,ut,et,c,k,b].indexOf(o)!==-1)return!0;return e.preventDefault(),!1})}}var e=n('<div class="xdsoft_datetimepicker xdsoft_noselect"><\/div>'),oi=n('<div class="xdsoft_copyright"><a target="_blank" href="http://xdsoft.net/jqplugins/datetimepicker/">xdsoft.net<\/a><\/div>'),at=n('<div class="xdsoft_datepicker active"><\/div>'),d=n('<div class="xdsoft_mounthpicker"><button type="button" class="xdsoft_prev"><\/button><button type="button" class="xdsoft_today_button"><\/button><div class="xdsoft_label xdsoft_month"><span><\/span><i><\/i><\/div><div class="xdsoft_label xdsoft_year"><span><\/span><i><\/i><\/div><button type="button" class="xdsoft_next"><\/button><\/div>'),kt=n('<div class="xdsoft_calendar"><\/div>'),yt=n('<div class="xdsoft_timepicker active"><button type="button" class="xdsoft_prev"><\/button><div class="xdsoft_time_box"><\/div><button type="button" class="xdsoft_next"><\/button><\/div>'),g=yt.find(".xdsoft_time_box").eq(0),v=n('<div class="xdsoft_time_variant"><\/div>'),dt=n('<button type="button" class="xdsoft_save_selected blue-gradient-button">Save Selected<\/button>'),gt=n('<div class="xdsoft_select xdsoft_monthselect"><div><\/div><\/div>'),ni=n('<div class="xdsoft_select xdsoft_yearselect"><div><\/div><\/div>'),pt=!1,fi,ti,wt,vt,bt,ii=0,a,ri;o.id&&e.attr("id",o.id);o.style&&e.attr("style",o.style);o.weeks&&e.addClass("xdsoft_showweeks");o.rtl&&e.addClass("xdsoft_rtl");e.addClass("xdsoft_"+o.theme);e.addClass(o.className);d.find(".xdsoft_month span").after(gt);d.find(".xdsoft_year span").after(ni);d.find(".xdsoft_month,.xdsoft_year").on("touchstart mousedown.xdsoft",function(t){var i=n(this).find(".xdsoft_select").eq(0),f=0,e=0,o=i.is(":visible"),r,u;for(d.find(".xdsoft_select").hide(),a.currentTime&&(f=a.currentTime[n(this).hasClass("xdsoft_month")?"getMonth":"getFullYear"]()),i[o?"hide":"show"](),r=i.find("div.xdsoft_option"),u=0;u<r.length;u+=1)if(r.eq(u).data("value")===f)break;else e+=r[0].offsetHeight;return i.xdsoftScroller(e/(i.children()[0].offsetHeight-i[0].clientHeight)),t.stopPropagation(),!1});d.find(".xdsoft_select").xdsoftScroller().on("touchstart mousedown.xdsoft",function(n){n.stopPropagation();n.preventDefault()}).on("touchstart mousedown.xdsoft",".xdsoft_option",function(){(a.currentTime===undefined||a.currentTime===null)&&(a.currentTime=a.now());var t=a.currentTime.getFullYear();a&&a.currentTime&&a.currentTime[n(this).parent().parent().hasClass("xdsoft_monthselect")?"setMonth":"setFullYear"](n(this).data("value"));n(this).parent().parent().hide();e.trigger("xchange.xdsoft");o.onChangeMonth&&n.isFunction(o.onChangeMonth)&&o.onChangeMonth.call(e,a.currentTime,e.data("input"));t!==a.currentTime.getFullYear()&&n.isFunction(o.onChangeYear)&&o.onChangeYear.call(e,a.currentTime,e.data("input"))});e.getValue=function(){return a.getCurrentTime()};e.setOptions=function(i){var u={};if(o=n.extend(!0,{},o,i),i.allowTimes&&n.isArray(i.allowTimes)&&i.allowTimes.length&&(o.allowTimes=n.extend(!0,[],i.allowTimes)),i.weekends&&n.isArray(i.weekends)&&i.weekends.length&&(o.weekends=n.extend(!0,[],i.weekends)),i.allowDates&&n.isArray(i.allowDates)&&i.allowDates.length&&(o.allowDates=n.extend(!0,[],i.allowDates)),i.allowDateRe&&Object.prototype.toString.call(i.allowDateRe)==="[object String]"&&(o.allowDateRe=new RegExp(i.allowDateRe)),i.highlightedDates&&n.isArray(i.highlightedDates)&&i.highlightedDates.length&&(n.each(i.highlightedDates,function(i,r){var c=n.map(r.split(","),n.trim),s,e=new f(t.parseDate(c[0],o.formatDate),c[1],c[2]),h=t.formatDate(e.date,o.formatDate);u[h]!==undefined?(s=u[h].desc,s&&s.length&&e.desc&&e.desc.length&&(u[h].desc=s+"\n"+e.desc)):u[h]=e}),o.highlightedDates=n.extend(!0,[],u)),i.highlightedPeriods&&n.isArray(i.highlightedPeriods)&&i.highlightedPeriods.length&&(u=n.extend(!0,[],o.highlightedDates),n.each(i.highlightedPeriods,function(i,r){var e,a,v,s,h,l,y,c;for(n.isArray(r)?(e=r[0],a=r[1],v=r[2],y=r[3]):(c=n.map(r.split(","),n.trim),e=t.parseDate(c[0],o.formatDate),a=t.parseDate(c[1],o.formatDate),v=c[2],y=c[3]);e<=a;)s=new f(e,v,y),h=t.formatDate(e,o.formatDate),e.setDate(e.getDate()+1),u[h]!==undefined?(l=u[h].desc,l&&l.length&&s.desc&&s.desc.length&&(u[h].desc=l+"\n"+s.desc)):u[h]=s}),o.highlightedDates=n.extend(!0,[],u)),i.disabledDates&&n.isArray(i.disabledDates)&&i.disabledDates.length&&(o.disabledDates=n.extend(!0,[],i.disabledDates)),i.disabledWeekDays&&n.isArray(i.disabledWeekDays)&&i.disabledWeekDays.length&&(o.disabledWeekDays=n.extend(!0,[],i.disabledWeekDays)),(o.open||o.opened)&&!o.inline&&r.trigger("open.xdsoft"),o.inline&&(pt=!0,e.addClass("xdsoft_inline"),r.after(e).hide()),o.inverseButton&&(o.next="xdsoft_prev",o.prev="xdsoft_next"),o.datepicker?at.addClass("active"):at.removeClass("active"),o.timepicker?yt.addClass("active"):yt.removeClass("active"),o.value&&(
9876a.setCurrentTime(o.value),r&&r.val&&r.val(a.str)),o.dayOfWeekStart=isNaN(o.dayOfWeekStart)?0:parseInt(o.dayOfWeekStart,10)%7,o.timepickerScrollbar||g.xdsoftScroller("hide"),o.minDate&&/^[\+\-](.*)$/.test(o.minDate)&&(o.minDate=t.formatDate(a.strToDateTime(o.minDate),o.formatDate)),o.maxDate&&/^[\+\-](.*)$/.test(o.maxDate)&&(o.maxDate=t.formatDate(a.strToDateTime(o.maxDate),o.formatDate)),dt.toggle(o.showApplyButton),d.find(".xdsoft_today_button").css("visibility",o.todayButton?"visible":"hidden"),d.find("."+o.prev).css("visibility",o.prevButton?"visible":"hidden"),d.find("."+o.next).css("visibility",o.nextButton?"visible":"hidden"),ei(o),o.validateOnBlur)r.off("blur.xdsoft").on("blur.xdsoft",function(){var u,i,r;o.allowBlank&&(!n.trim(n(this).val()).length||typeof o.mask=="string"&&n.trim(n(this).val())===o.mask.replace(/[0-9]/g,"_"))?(n(this).val(null),e.data("xdsoft_datetime").empty()):(u=t.parseDate(n(this).val(),o.format),u?n(this).val(t.formatDate(u,o.format)):(i=+[n(this).val()[0],n(this).val()[1]].join(""),r=+[n(this).val()[2],n(this).val()[3]].join(""),!o.datepicker&&o.timepicker&&i>=0&&i<24&&r>=0&&r<60?n(this).val([i,r].map(function(n){return n>9?n:"0"+n}).join(":")):n(this).val(t.formatDate(a.now(),o.format))),e.data("xdsoft_datetime").setCurrentTime(n(this).val()));e.trigger("changedatetime.xdsoft");e.trigger("close.xdsoft")});o.dayOfWeekStartPrev=o.dayOfWeekStart===0?6:o.dayOfWeekStart-1;e.trigger("xchange.xdsoft").trigger("afterOpen.xdsoft")};e.data("options",o).on("touchstart mousedown.xdsoft",function(n){return n.stopPropagation(),n.preventDefault(),ni.hide(),gt.hide(),!1});g.append(v);g.xdsoftScroller();e.on("afterOpen.xdsoft",function(){g.xdsoftScroller()});e.append(at).append(yt);o.withoutCopyright!==!0&&e.append(oi);at.append(d).append(kt).append(dt);n(o.parentID).append(e);fi=function(){var i=this;i.now=function(n){var t=new Date,r,u;return!n&&o.defaultDate&&(r=i.strToDateTime(o.defaultDate),t.setFullYear(r.getFullYear()),t.setMonth(r.getMonth()),t.setDate(r.getDate())),o.yearOffset&&t.setFullYear(t.getFullYear()+o.yearOffset),!n&&o.defaultTime&&(u=i.strtotime(o.defaultTime),t.setHours(u.getHours()),t.setMinutes(u.getMinutes())),t};i.isValidDate=function(n){return Object.prototype.toString.call(n)!=="[object Date]"?!1:!isNaN(n.getTime())};i.setCurrentTime=function(n,t){i.currentTime=typeof n=="string"?i.strToDateTime(n):i.isValidDate(n)?n:n||t||!o.allowBlank?i.now():null;e.trigger("xchange.xdsoft")};i.empty=function(){i.currentTime=null};i.getCurrentTime=function(){return i.currentTime};i.nextMonth=function(){(i.currentTime===undefined||i.currentTime===null)&&(i.currentTime=i.now());var t=i.currentTime.getMonth()+1,r;return t===12&&(i.currentTime.setFullYear(i.currentTime.getFullYear()+1),t=0),r=i.currentTime.getFullYear(),i.currentTime.setDate(Math.min(new Date(i.currentTime.getFullYear(),t+1,0).getDate(),i.currentTime.getDate())),i.currentTime.setMonth(t),o.onChangeMonth&&n.isFunction(o.onChangeMonth)&&o.onChangeMonth.call(e,a.currentTime,e.data("input")),r!==i.currentTime.getFullYear()&&n.isFunction(o.onChangeYear)&&o.onChangeYear.call(e,a.currentTime,e.data("input")),e.trigger("xchange.xdsoft"),t};i.prevMonth=function(){(i.currentTime===undefined||i.currentTime===null)&&(i.currentTime=i.now());var t=i.currentTime.getMonth()-1;return t===-1&&(i.currentTime.setFullYear(i.currentTime.getFullYear()-1),t=11),i.currentTime.setDate(Math.min(new Date(i.currentTime.getFullYear(),t+1,0).getDate(),i.currentTime.getDate())),i.currentTime.setMonth(t),o.onChangeMonth&&n.isFunction(o.onChangeMonth)&&o.onChangeMonth.call(e,a.currentTime,e.data("input")),e.trigger("xchange.xdsoft"),t};i.getWeekOfYear=function(t){var r,i;return o.onGetWeekOfYear&&n.isFunction(o.onGetWeekOfYear)&&(r=o.onGetWeekOfYear.call(e,t),typeof r!="undefined")?r:(i=new Date(t.getFullYear(),0,1),i.getDay()!=4&&i.setMonth(0,1+(11-i.getDay())%7),Math.ceil(((t-i)/864e5+i.getDay()+1)/7))};i.strToDateTime=function(n){var r=[],f,u;return n&&n instanceof Date&&i.isValidDate(n)?n:(r=/^(\+|\-)(.*)$/.exec(n),r&&(r[2]=t.parseDate(r[2],o.formatDate)),r&&r[2]?(f=r[2].getTime()-r[2].getTimezoneOffset()*6e4,u=new Date(i.now(!0).getTime()+parseInt(r[1]+"1",10)*f)):u=n?t.parseDate(n,o.format):i.now(),i.isValidDate(u)||(u=i.now()),u)};i.strToDate=function(n){if(n&&n instanceof Date&&i.isValidDate(n))return n;var r=n?t.parseDate(n,o.formatDate):i.now(!0);return i.isValidDate(r)||(r=i.now(!0)),r};i.strtotime=function(n){if(n&&n instanceof Date&&i.isValidDate(n))return n;var r=n?t.parseDate(n,o.formatTime):i.now(!0);return i.isValidDate(r)||(r=i.now(!0)),r};i.str=function(){return t.formatDate(i.currentTime,o.format)};i.currentTime=this.now()};a=new fi;dt.on("touchend click",function(n){n.preventDefault();e.data("changed",!0);a.setCurrentTime(ui());r.val(a.str());e.trigger("close.xdsoft")});d.find(".xdsoft_today_button").on("touchend mousedown.xdsoft",function(){e.data("changed",!0);a.setCurrentTime(0,!0);e.trigger("afterOpen.xdsoft")}).on("dblclick.xdsoft",function(){var n=a.getCurrentTime(),t,i;(n=new Date(n.getFullYear(),n.getMonth(),n.getDate()),t=a.strToDate(o.minDate),t=new Date(t.getFullYear(),t.getMonth(),t.getDate()),n<t)||(i=a.strToDate(o.maxDate),i=new Date(i.getFullYear(),i.getMonth(),i.getDate()),n>i)||(r.val(a.str()),r.trigger("change"),e.trigger("close.xdsoft"))});d.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var t=n(this),i=0,r=!1;(function u(n){t.hasClass(o.next)?a.nextMonth():t.hasClass(o.prev)&&a.prevMonth();o.monthChangeSpinner&&(r||(i=setTimeout(u,n||100)))})(500);n([document.body,window]).on("touchend mouseup.xdsoft",function f(){clearTimeout(i);r=!0;n([document.body,window]).off("touchend mouseup.xdsoft",f)})});yt.find(".xdsoft_prev,.xdsoft_next").on("touchend mousedown.xdsoft",function(){var i=n(this),r=0,u=!1,t=110;(function f(n){var s=g[0].clientHeight,h=v[0].offsetHeight,e=Math.abs(parseInt(v.css("marginTop"),10));i.hasClass(o.next)&&h-s-o.timeHeightInTimePicker>=e?v.css("marginTop","-"+(e+o.timeHeightInTimePicker)+"px"):i.hasClass(o.prev)&&e-o.timeHeightInTimePicker>=0&&v.css("marginTop","-"+(e-o.timeHeightInTimePicker)+"px");g.trigger("scroll_element.xdsoft_scroller",[Math.abs(parseInt(v[0].style.marginTop,10)/(h-s))]);t=t>10?10:t-10;u||(r=setTimeout(f,n||t))})(500);n([document.body,window]).on("touchend mouseup.xdsoft",function e(){clearTimeout(r);u=!0;n([document.body,window]).off("touchend mouseup.xdsoft",e)})});ti=0;e.on("xchange.xdsoft",function(f){clearTimeout(ti);ti=setTimeout(function(){if(a.currentTime===undefined||a.currentTime===null){if(o.allowBlank)return;a.currentTime=a.now()}for(var c="",f=new Date(a.currentTime.getFullYear(),a.currentTime.getMonth(),1,12,0,0),s=0,l,tt=a.now(),p=!1,w=!1,k,et,nt,ot,y,st,h=[],b,it=!0,rt="",g="",ut,ft;f.getDay()!==o.dayOfWeekStart;)f.setDate(f.getDate()-1);for(c+="<table><thead><tr>",o.weeks&&(c+="<th><\/th>"),l=0;l<7;l+=1)c+="<th>"+o.i18n[i].dayOfWeekShort[(l+o.dayOfWeekStart)%7]+"<\/th>";for(c+="<\/tr><\/thead>",c+="<tbody>",o.maxDate!==!1&&(p=a.strToDate(o.maxDate),p=new Date(p.getFullYear(),p.getMonth(),p.getDate(),23,59,59,999)),o.minDate!==!1&&(w=a.strToDate(o.minDate),w=new Date(w.getFullYear(),w.getMonth(),w.getDate()));s<a.currentTime.countDaysInMonth()||f.getDay()!==o.dayOfWeekStart||a.currentTime.getMonth()===f.getMonth();)h=[],s+=1,et=f.getDay(),nt=f.getDate(),ot=f.getFullYear(),y=f.getMonth(),st=a.getWeekOfYear(f),ft="",h.push("xdsoft_date"),b=o.beforeShowDay&&n.isFunction(o.beforeShowDay.call)?o.beforeShowDay.call(e,f):null,o.allowDateRe&&Object.prototype.toString.call(o.allowDateRe)==="[object RegExp]"?o.allowDateRe.test(t.formatDate(f,o.formatDate))||h.push("xdsoft_disabled"):o.allowDates&&o.allowDates.length>0?o.allowDates.indexOf(t.formatDate(f,o.formatDate))===-1&&h.push("xdsoft_disabled"):p!==!1&&f>p||w!==!1&&f<w||b&&b[0]===!1?h.push("xdsoft_disabled"):o.disabledDates.indexOf(t.formatDate(f,o.formatDate))!==-1?h.push("xdsoft_disabled"):o.disabledWeekDays.indexOf(et)!==-1?h.push("xdsoft_disabled"):r.is("[readonly]")&&h.push("xdsoft_disabled"),b&&b[1]!==""&&h.push(b[1]),a.currentTime.getMonth()!==y&&h.push("xdsoft_other_month"),(o.defaultSelect||e.data("changed"))&&t.formatDate(a.currentTime,o.formatDate)===t.formatDate(f,o.formatDate)&&h.push("xdsoft_current"),t.formatDate(tt,o.formatDate)===t.formatDate(f,o.formatDate)&&h.push("xdsoft_today"),(f.getDay()===0||f.getDay()===6||o.weekends.indexOf(t.formatDate(f,o.formatDate))!==-1)&&h.push("xdsoft_weekend"),o.highlightedDates[t.formatDate(f,o.formatDate)]!==undefined&&(k=o.highlightedDates[t.formatDate(f,o.formatDate)],h.push(k.style===undefined?"xdsoft_highlighted_default":k.style),ft=k.desc===undefined?"":k.desc),o.beforeShowDay&&n.isFunction(o.beforeShowDay)&&h.push(o.beforeShowDay(f)),it&&(c+="<tr>",it=!1,o.weeks&&(c+="<th>"+st+"<\/th>")),c+='<td data-date="'+nt+'" data-month="'+y+'" data-year="'+ot+'" class="xdsoft_date xdsoft_day_of_week'+f.getDay()+" "+h.join(" ")+'" title="'+ft+'"><div>'+nt+"<\/div><\/td>",f.getDay()===o.dayOfWeekStartPrev&&(c+="<\/tr>",it=!0),f.setDate(nt+1);if(c+="<\/tbody><\/table>",kt.html(c),d.find(".xdsoft_label span").eq(0).text(o.i18n[i].months[a.currentTime.getMonth()]),d.find(".xdsoft_label span").eq(1).text(a.currentTime.getFullYear()),rt="",g="",y="",ut=function(i,u){var f=a.now(),s,c,l=o.allowTimes&&n.isArray(o.allowTimes)&&o.allowTimes.length;f.setHours(i);i=parseInt(f.getHours(),10);f.setMinutes(u);u=parseInt(f.getMinutes(),10);s=new Date(a.currentTime);s.setHours(i);s.setMinutes(u);h=[];o.minDateTime!==!1&&o.minDateTime>s||o.maxTime!==!1&&a.strtotime(o.maxTime).getTime()<f.getTime()||o.minTime!==!1&&a.strtotime(o.minTime).getTime()>f.getTime()?h.push("xdsoft_disabled"):o.minDateTime!==!1&&o.minDateTime>s||o.disabledMinTime!==!1&&f.getTime()>a.strtotime(o.disabledMinTime).getTime()&&o.disabledMaxTime!==!1&&f.getTime()<a.strtotime(o.disabledMaxTime).getTime()?h.push("xdsoft_disabled"):r.is("[readonly]")&&h.push("xdsoft_disabled");c=new Date(a.currentTime);c.setHours(parseInt(a.currentTime.getHours(),10));l||c.setMinutes(Math[o.roundTime](a.currentTime.getMinutes()/o.step)*o.step);(o.initTime||o.defaultSelect||e.data("changed"))&&c.getHours()===parseInt(i,10)&&(!l&&o.step>59||c.getMinutes()===parseInt(u,10))&&(o.defaultSelect||e.data("changed")?h.push("xdsoft_current"):o.initTime&&h.push("xdsoft_init_time"));parseInt(tt.getHours(),10)===parseInt(i,10)&&parseInt(tt.getMinutes(),10)===parseInt(u,10)&&h.push("xdsoft_today");rt+='<div class="xdsoft_time '+h.join(" ")+'" data-hour="'+i+'" data-minute="'+u+'">'+t.formatDate(f,o.formatTime)+"<\/div>"},o.allowTimes&&n.isArray(o.allowTimes)&&o.allowTimes.length)for(s=0;s<o.allowTimes.length;s+=1)g=a.strtotime(o.allowTimes[s]).getHours(),y=a.strtotime(o.allowTimes[s]).getMinutes(),ut(g,y);else for(s=0,l=0;s<(o.hours12?12:24);s+=1)for(l=0;l<60;l+=o.step)g=(s<10?"0":"")+s,y=(l<10?"0":"")+l,ut(g,y);for(v.html(rt),u="",s=0,s=parseInt(o.yearStart,10)+o.yearOffset;s<=parseInt(o.yearEnd,10)+o.yearOffset;s+=1)u+='<div class="xdsoft_option '+(a.currentTime.getFullYear()===s?"xdsoft_current":"")+'" data-value="'+s+'">'+s+"<\/div>";for(ni.children().eq(0).html(u),s=parseInt(o.monthStart,10),u="";s<=parseInt(o.monthEnd,10);s+=1)u+='<div class="xdsoft_option '+(a.currentTime.getMonth()===s?"xdsoft_current":"")+'" data-value="'+s+'">'+o.i18n[i].months[s]+"<\/div>";gt.children().eq(0).html(u);n(e).trigger("generate.xdsoft")},10);f.stopPropagation()}).on("afterOpen.xdsoft",function(){if(o.timepicker){var n,t,i,r;v.find(".xdsoft_current").length?n=".xdsoft_current":v.find(".xdsoft_init_time").length&&(n=".xdsoft_init_time");n?(t=g[0].clientHeight,i=v[0].offsetHeight,r=v.find(n).index()*o.timeHeightInTimePicker+1,i-t<r&&(r=i-t),g.trigger("scroll_element.xdsoft_scroller",[parseInt(r,10)/(i-t)])):g.trigger("scroll_element.xdsoft_scroller",[0])}});wt=0;kt.on("touchend click.xdsoft","td",function(t){t.stopPropagation();wt+=1;var u=n(this),i=a.currentTime;if((i===undefined||i===null)&&(a.currentTime=a.now(),i=a.currentTime),u.hasClass("xdsoft_disabled"))return!1;i.setDate(1);i.setFullYear(u.data("year"));i.setMonth(u.data("month"));i.setDate(u.data("date"));e.trigger("select.xdsoft",[i]);r.val(a.str());o.onSelectDate&&n.isFunction(o.onSelectDate)&&o.onSelectDate.call(e,a.currentTime,e.data("input"),t);e.data("changed",!0);e.trigger("xchange.xdsoft");e.trigger("changedatetime.xdsoft");(wt>1||o.closeOnDateSelect===!0||o.closeOnDateSelect===!1&&!o.timepicker)&&!o.inline&&e.trigger("close.xdsoft");setTimeout(function(){wt=0},200)});v.on("touchend click.xdsoft","div",function(t){t.stopPropagation();var r=n(this),i=a.currentTime;if((i===undefined||i===null)&&(a.currentTime=a.now(),i=a.currentTime),r.hasClass("xdsoft_disabled"))return!1;i.setHours(r.data("hour"));i.setMinutes(r.data("minute"));e.trigger("select.xdsoft",[i]);e.data("input").val(a.str());o.onSelectTime&&n.isFunction(o.onSelectTime)&&o.onSelectTime.call(e,a.currentTime,e.data("input"),t);e.data("changed",!0);e.trigger("xchange.xdsoft");e.trigger("changedatetime.xdsoft");o.inline!==!0&&o.closeOnTimeSelect===!0&&e.trigger("close.xdsoft")});at.on("mousewheel.xdsoft",function(n){return o.scrollMonth?(n.deltaY<0?a.nextMonth():a.prevMonth(),!1):!0});r.on("mousewheel.xdsoft",function(n){return o.scrollInput?!o.datepicker&&o.timepicker?(vt=v.find(".xdsoft_current").length?v.find(".xdsoft_current").eq(0).index():0,vt+n.deltaY>=0&&vt+n.deltaY<v.children().length&&(vt+=n.deltaY),v.children().eq(vt).length&&v.children().eq(vt).trigger("mousedown"),!1):o.datepicker&&!o.timepicker?(at.trigger(n,[n.deltaY,n.deltaX,n.deltaY]),r.val&&r.val(a.str()),e.trigger("changedatetime.xdsoft"),!1):void 0:!0});e.on("changedatetime.xdsoft",function(t){if(o.onChangeDateTime&&n.isFunction(o.onChangeDateTime)){var i=e.data("input");o.onChangeDateTime.call(e,a.currentTime,i,t);delete o.value;i.trigger("change")}}).on("generate.xdsoft",function(){o.onGenerate&&n.isFunction(o.onGenerate)&&o.onGenerate.call(e,a.currentTime,e.data("input"));pt&&(e.trigger("afterOpen.xdsoft"),pt=!1)}).on("click.xdsoft",function(n){n.stopPropagation()});vt=0;ri=function(n,t){do if(n=n.parentNode,t(n)===!1)break;while(n.nodeName!=="HTML")};bt=function(){var u,r,t,i,c,p,a,s,h,v,y,l,f,w;s=e.data("input");u=s.offset();r=s[0];v="top";t=u.top+r.offsetHeight-1;i=u.left;c="absolute";h=n(window).width();l=n(window).height();f=n(window).scrollTop();document.documentElement.clientWidth-u.left<at.parent().outerWidth(!0)&&(w=at.parent().outerWidth(!0)-r.offsetWidth,i=i-w);s.parent().css("direction")==="rtl"&&(i-=e.outerWidth()-s.outerWidth());o.fixed?(t-=f,i-=n(window).scrollLeft(),c="fixed"):(a=!1,ri(r,function(n){if(window.getComputedStyle(n).getPropertyValue("position")==="fixed")return a=!0,!1}),a?(c="fixed",t+e.outerHeight()>l+f?(v="bottom",t=l+f-u.top):t-=f):t+r.offsetHeight>l+f&&(t=u.top-r.offsetHeight+1),t<0&&(t=0),i+r.offsetWidth>h&&(i=h-r.offsetWidth));p=e[0];ri(p,function(n){var t;return t=window.getComputedStyle(n).getPropertyValue("position"),t==="relative"&&h>=n.offsetWidth?(i=i-(h-n.offsetWidth)/2,!1):void 0});y={position:c,left:i,top:"",bottom:""};y[v]=t;e.css(y)};e.on("open.xdsoft",function(t){var i=!0;if(o.onShow&&n.isFunction(o.onShow)&&(i=o.onShow.call(e,a.currentTime,e.data("input"),t)),i!==!1){e.show();bt();n(window).off("resize.xdsoft",bt).on("resize.xdsoft",bt);if(o.closeOnWithoutClick)n([document.body,window]).on("touchstart mousedown.xdsoft",function r(){e.trigger("close.xdsoft");n([document.body,window]).off("touchstart mousedown.xdsoft",r)})}}).on("close.xdsoft",function(t){var i=!0;d.find(".xdsoft_month,.xdsoft_year").find(".xdsoft_select").hide();o.onClose&&n.isFunction(o.onClose)&&(i=o.onClose.call(e,a.currentTime,e.data("input"),t));i===!1||o.opened||o.inline||e.hide();t.stopPropagation()}).on("toggle.xdsoft",function(){e.is(":visible")?e.trigger("close.xdsoft"):e.trigger("open.xdsoft")}).data("input",r);ii=0;e.data("xdsoft_datetime",a);e.setOptions(o);a.setCurrentTime(ui());r.data("xdsoft_datetimepicker",e).on("open.xdsoft focusin.xdsoft mousedown.xdsoft touchstart",function(){r.is(":disabled")||r.data("xdsoft_datetimepicker").is(":visible")&&o.closeOnInputClick||(clearTimeout(ii),ii=setTimeout(function(){r.is(":disabled")||(pt=!0,a.setCurrentTime(ui(),!0),o.mask&&ei(o),e.trigger("open.xdsoft"))},100))}).on("keydown.xdsoft",function(t){var i,r=t.which;return[b].ind
9876exOf(r)!==-1&&o.enterLikeTab?(i=n("input:visible,textarea:visible,button:visible,a:visible"),e.trigger("close.xdsoft"),i.eq(i.index(this)+1).focus(),!1):[k].indexOf(r)!==-1?(e.trigger("close.xdsoft"),!0):void 0}).on("blur.xdsoft",function(){e.trigger("close.xdsoft")})};g=function(t){var i=t.data("xdsoft_datetimepicker");i&&(i.data("xdsoft_datetime",null),i.remove(),t.data("xdsoft_datetimepicker",null).off(".xdsoft"),n(window).off("resize.xdsoft"),n([window,document.body]).off("mousedown.xdsoft touchstart"),t.unmousewheel&&t.unmousewheel())};n(document).off("keydown.xdsoftctrl keyup.xdsoftctrl").on("keydown.xdsoftctrl",function(n){n.keyCode===c&&(l=!0)}).on("keyup.xdsoftctrl",function(n){n.keyCode===c&&(l=!1)});return this.each(function(){var i=n(this).data("xdsoft_datetimepicker"),r;if(i){if(n.type(u)==="string")switch(u){case"show":n(this).select().focus();i.trigger("open.xdsoft");break;case"hide":i.trigger("close.xdsoft");break;case"toggle":i.trigger("toggle.xdsoft");break;case"destroy":g(n(this));break;case"reset":this.value=this.defaultValue;this.value&&i.data("xdsoft_datetime").isValidDate(t.parseDate(this.value,o.format))||i.data("changed",!1);i.data("xdsoft_datetime").setCurrentTime(this.value);break;case"validate":r=i.data("input");r.trigger("blur.xdsoft");break;default:i[u]&&n.isFunction(i[u])&&(v=i[u](e))}else i.setOptions(u);return 0}n.type(u)!=="string"&&(!o.lazyInit||o.open||o.inline?a(n(this)):at(n(this)))}),v};n.fn.datetimepicker.defaults=r});
9877/*!
9878 * jQuery Mousewheel 3.1.13
9879 *
9880 * Copyright jQuery Foundation and other contributors
9881 * Released under the MIT license
9882 * http://jquery.org/license
9883 */
9884(function(n){typeof define=="function"&&define.amd?define(["jquery"],n):typeof exports=="object"?module.exports=n:n(jQuery)})(function(n){function e(r){var f=r||window.event,w=h.call(arguments,1),l=0,o=0,e=0,a=0,b=0,k=0,v,y,p;if(r=n.event.fix(f),r.type="mousewheel","detail"in f&&(e=f.detail*-1),"wheelDelta"in f&&(e=f.wheelDelta),"wheelDeltaY"in f&&(e=f.wheelDeltaY),"wheelDeltaX"in f&&(o=f.wheelDeltaX*-1),"axis"in f&&f.axis===f.HORIZONTAL_AXIS&&(o=e*-1,e=0),l=e===0?o:e,"deltaY"in f&&(e=f.deltaY*-1,l=e),"deltaX"in f&&(o=f.deltaX,e===0&&(l=o*-1)),e!==0||o!==0)return f.deltaMode===1?(v=n.data(this,"mousewheel-line-height"),l*=v,e*=v,o*=v):f.deltaMode===2&&(y=n.data(this,"mousewheel-page-height"),l*=y,e*=y,o*=y),a=Math.max(Math.abs(e),Math.abs(o)),(!t||a<t)&&(t=a,s(f,a)&&(t/=40)),s(f,a)&&(l/=40,o/=40,e/=40),l=Math[l>=1?"floor":"ceil"](l/t),o=Math[o>=1?"floor":"ceil"](o/t),e=Math[e>=1?"floor":"ceil"](e/t),i.settings.normalizeOffset&&this.getBoundingClientRect&&(p=this.getBoundingClientRect(),b=r.clientX-p.left,k=r.clientY-p.top),r.deltaX=o,r.deltaY=e,r.deltaFactor=t,r.offsetX=b,r.offsetY=k,r.deltaMode=0,w.unshift(r,l,o,e),u&&clearTimeout(u),u=setTimeout(c,200),(n.event.dispatch||n.event.handle).apply(this,w)}function c(){t=null}function s(n,t){return i.settings.adjustOldDeltas&&n.type==="mousewheel"&&t%120==0}var o=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],r="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],h=Array.prototype.slice,u,t,f,i;if(n.event.fixHooks)for(f=o.length;f;)n.event.fixHooks[o[--f]]=n.event.mouseHooks;i=n.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var t=r.length;t;)this.addEventListener(r[--t],e,!1);else this.onmousewheel=e;n.data(this,"mousewheel-line-height",i.getLineHeight(this));n.data(this,"mousewheel-page-height",i.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var t=r.length;t;)this.removeEventListener(r[--t],e,!1);else this.onmousewheel=null;n.removeData(this,"mousewheel-line-height");n.removeData(this,"mousewheel-page-height")},getLineHeight:function(t){var r=n(t),i=r["offsetParent"in n.fn?"offsetParent":"parent"]();return i.length||(i=n("body")),parseInt(i.css("fontSize"),10)||parseInt(r.css("fontSize"),10)||16},getPageHeight:function(t){return n(t).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};n.fn.extend({mousewheel:function(n){return n?this.bind("mousewheel",n):this.trigger("mousewheel")},unmousewheel:function(n){return this.unbind("mousewheel",n)}})});function unscrambleEmailLinks(){$('a[onmouseover^="javascript:this.href=unscrambleMailto"]').each(function(){$(this).html()!==""&&$(this).html().indexOf("|")>0&&(emailArr=$.trim($(this).html()).split("|"),domain=emailArr[0].replace(/<span class=\"?scrambledEmail\"?>/gi,""),user=emailArr[1].replace(/<\/span>/gi,""),$(this).html(unscrambleEmail(domain,user)))});$(".scrambledEmail").each(function(){$(this).html().indexOf("|")>0&&(emailArr=$(this).html().split("|"),domain=emailArr[0],user=emailArr[1],$(this).html(unscrambleEmail(domain,user)))})}function unscrambleMailto(n,t){return"mailto:"+unscrambleEmail(n,t)}function unscrambleEmail(n,t){return t.replace(/%23/g,".")+"@"+n.replace(/%23/g,".")}function displayWindow2(n,t,i){var r=window.open(n,"displayWindow","width="+t+",height="+i+",resizable=1,scrollbars=yes,menubar=no")}function checkSearchForm(n){return!n.search_string.value||n.search_string.value==="Enter Keyword"||n.search_string.value==="Enter Search"||n.search_string.value==="Search Here"?(alertMessage(0,!1,"Please enter search criteria.","danger"),n.search_string.focus(),!1):!0}function checkSearchFormFrench(n){return!n.search_string.value||n.search_string.value==="Recherche ici"||n.search_string.value==="Enter Search"?(alertMessage(0,!1,"Veuillez insérer un mot pour votre recherche!","danger"),n.search_string.focus(),!1):!0}function openPopup(n,t,i,r){var f=location.hostname,u=window.open(n,t,i);u&&u.opener&&(r&&(u.opener.location=r),u.opener.top.name="opener");u.focus()}function insert_desc(n){document.getElementById("desc_div").innerHTML=n;document.location="#desc_div"}function checkSubscribeForm(n){return!n.subscribe_email.value||n.subscribe_email.value==="Enter Email Here"?($(n).prepend('<div class="alert alert-danger">Please enter an email address!<\/div>'),n.subscribe_email.focus(),!1):n.subscribe_email.value.indexOf("@",0)===-1||n.subscribe_email.value.indexOf(".",0)===-1||n.subscribe_email.value.length<8||n.subscribe_email.value.length===n.subscribe_email.value.indexOf(".",0)+1?($(n).prepend('<div class="alert alert-danger">Please enter a valid email address!<\/div>'),n.subscribe_email.focus(),!1):!0}function printit(){window.print()}function Go(){return}function submitPollCheck(n){var t="";for(i=0;i<n.poll_vote.length;i++)if(n.poll_vote[i].checked)return t=!0,!0;return t||alertMessage(0,!1,"Please click the radio button of choice before voting!","danger"),
9884!1}function submitForm(n){document.getElementById(n).submit()}function iGallery(n){larger_image=new Image;larger_image.src=n.src.replace("_thumb","");document.getElementById("main_image").src=larger_image.src;document.getElementById("main_image").width=larger_image.width;document.getElementById("main_image").height=larger_image.height}function swapTabs(n,t,i){$("#"+n).html($("#"+t).html());$("#"+activeTab).removeClass("active");$("#"+i).addClass("active");activeTab=i}function playFLV(n,t,i,r,u){var f={file:i,autostart:"true",image:r};swfobject.embedSWF("/fend/images/mediaplayer.swf",u,n,t,"9.0.0","",f,{},{})}function appendFunction(n,t){return function(){n&&n();t&&t()}}function changeFontSize(n,t){typeof t=="undefined"&&(t="include");$("#fontSizeCss").length>0?$("#fontSizeCss").attr("href","/fend/"+t+"/font_"+n+".css"):$("head").append('<link rel="stylesheet" href="/fend/'+t+"/font_"+n+'.css" type="text/css" id="fontSizeCss" />');$.ajax({url:"/fend/request/set-font-size.asp?fontSize="+n+"&rndNum="+Math.floor(Math.random()*1e5)})}function checkRequiredFields(n,t,i=0){var r,o,u,h,c,f,s;if(t.find(".form-error").remove(),$("*").removeClass("field-error").removeClass("has-error"),r="",o=n.split(","),n.indexOf("|")==-1&&n.indexOf(":")==-1&&n.indexOf("@")==-1)for(field in o)fieldName=$.trim(o[field]),$fieldObj=t.find('[name="'+fieldName+'"]'),fieldContents=$fieldObj.val(),$fieldObj.is(":enabled")&&(fieldName.toLowerCase()!=="email"||$("#"+fieldName).hasClass("simplevalidation")?fieldName.toLowerCase()!=="confirm_email"||$("#"+fieldName).hasClass("simplevalidation")?fieldName.toLowerCase()!=="confirm_password"||$("#"+fieldName).hasClass("simplevalidation")?$('[name="'+fieldName+'"]').attr("type")==="radio"||$('[name="'+fieldName+'"]').attr("type")==="checkbox"?$('[name="'+fieldName+'"]:checked').length===0&&($fieldObj.closest(".form-group").data("error")?(u=$fieldObj.closest(".form-group").data("error"),r+="<li>"+u+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error")):(u=$("label[for="+fieldName+"]").text().toLowerCase().replace(":",""),u===""&&(u=fieldName.toLowerCase().replace("_"," ")),r+="<li> Please enter a valid "+u+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error"))):fieldContents===""&&($fieldObj.closest(".form-group").data("error")?(u=$fieldObj.closest(".form-group").data("error"),r+="<li>"+u+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error")):(u=$("label[for="+fieldName+"]").text().toLowerCase().replace(":",""),u===""&&(u=fieldName.toLowerCase().replace("_"," ")),r+="<li> Please enter a valid "+u+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error"))):fieldContents!==$("#Password").val()&&(r+="<li>Passwords do not match.<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error")):fieldContents!==$("#Email").val()&&(r+="<li>Email Addresses do not match.<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error")):(h=new RegExp("^[A-Za-z0-9]((([_]*[-]?[.]?)[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([.-]?[a-zA-Z0-9]+)*).([A-Za-z]{2,})$"),c=h.exec(fieldContents),(c===null||fieldContents==="")&&(r+="<li>Please enter a valid email address.<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error"))));else $(o).each(function(n,t){var o,u,f,i;if(t=$.trim(t),t.indexOf("|")!=-1||t.indexOf(":")!=-1||t.indexOf("@")!=-1||$(`[name="${t}"]`).prop("disabled")||(o=$(`[name="${t}"]`).val(),t.toLowerCase()!=="confirm_email"||$(`[name="${t}"]`).hasClass("simplevalidation")?t.toLowerCase()!=="confirm_password"||$(`[name="${t}"]`).hasClass("simplevalidation")?checkRequiredFields_validateField(`[name="${t}"]`)||($(document).find(`[name="${t}"]`).closest(".form-group").addClass("has-error"),r+=`<li>Need value for ${checkRequiredFields_getError($(document).find(`[name="${t}"]`))}</li>`):o!==$("#Password").val()&&($(document).find(`[name="${t}"]`).closest(".form-group").addClass("has-error"),r+="<li><strong><u>Passwords<\/u><\/strong> do not match<\/li>"):o!==$("#Email").val()&&($(document).find(`[name="${t}"]`).closest(".form-group").addClass("has-error"),r+="<li><strong><u>Email Addresses<\/u><\/strong> do not match<\/li>")),~t.indexOf("|")){var c=0,l=0,s=t.split("|");$(s).each(function(n,t){checkRequiredFields_validateField(`[name="${t}"]`)&&c++;$(`[name="${t}"]`).prop("disabled")&&l++});l!==s.length&&c==0&&(u="",f="",$(s).each(function(n,t){$(document).find(`[name="${t}"]`).parent().addClass("has-error");u+=f+checkRequiredFields_getError(`[name="${t}"]`);f=" / "}),r+=`<li>Need at least one value between ${u}</li>`)}if(~t.indexOf("@")){var h=0,a=0,e=t.split("@");$(e).each(function(n,t){checkRequiredFields_validateField(`[name="${t}"]`)&&h++;$(`[name="${t}"]`).prop("disabled")&&a++});a!==e.length&&h>0&&h!==e.length&&(u="",f="",$(e).each(function(n,t){$(document).find(`[name="${t}"]`).parent().addClass("has-error");u+=f+checkRequiredFields_getError(`[name="${t}"]`);f=" / "}),r+=`<li>Need all values for ${u}</li>`)}
9884~t.indexOf(":")&&!$(`[name="${t}"]`).prop("disabled")&&(i=t.split(":"),checkRequiredFields_validateField(`[name="${i[0]}"]`)?$.post({url:i[1],async:!1,data:{formInput:$(document).find(`[name="${i[0]}"]`).val()},success:function(n){n=="#BAD#"&&($(document).find(`[name="${i[0]}"]`).parent().addClass("has-error"),r+=`<li>Value for ${checkRequiredFields_getError(`[name="${i[0]}"]`)} already used; please enter a different value</li>`)}}):($(document).find(`[name="${i[0]}"]`).parent().addClass("has-error"),r+=`<li>Need value for ${checkRequiredFields_getError(`[name="${i[0]}"]`)}</li>`))});if(r==="")return!0;f=document.createElement("div");f=$(f);f.addClass("form-error alert alert-danger");f.html("<ul>"+r+"<\/ul>");t.prepend(f);var e=0,l=$("#header").height(),a=$("#header .navbar").height();return e=l>0?l:a,e>0&&(e+=25),i>0&&(e=i),$(t).find('[id="customErrorOffset"]').length&&(s=$(t).find('[id="customErrorOffset"]').val(),/^\d+$/.test(s)&&(e=s)),$(this).scrollTop($(f).offset().top-e),$(t).find('[name="conf-recaptchaComplete"]').val(""),!1}function checkRequiredFieldsCustom(n,t){var r,u,i,f,e;if(t.find(".form-error").remove(),$("*").removeClass("field-error").removeClass("has-error"),r="",u=n.split(","),n.indexOf("|")==-1&&n.indexOf(":")==-1&&n.indexOf("@")==-1)for(field in u)fieldName=$.trim(u[field]),$fieldObj=t.find('[name="'+fieldName+'"]'),fieldContents=$fieldObj.val(),$fieldObj.is(":enabled")&&($fieldObj.attr("type")==="email"?(f=new RegExp(/^[A-Za-z0-9]((([_]*[-]?[.]?)[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/g),e=f.exec(fieldContents),(e===null||fieldContents==="")&&($fieldObj.closest(".form-group").data("error")?(i=$fieldObj.closest(".form-group").data("error"),r+="<li>"+i+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error")):(i=$("label[for="+fieldName+"]").text().toLowerCase().replace(":",""),i===""&&(i=fieldName.toLowerCase().replace("_"," ")),r+="<li>Please enter a valid "+i+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error")))):$('[name="'+fieldName+'"]').attr("type")==="radio"||$('[name="'+fieldName+'"]').attr("type")==="checkbox"?$('[name="'+fieldName+'"]:checked').length===0&&($fieldObj.closest(".form-group").data("error")?(i=$fieldObj.closest(".form-group").data("error"),r+="<li>"+i+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error")):(i=$("label[for="+fieldName+"]").text().toLowerCase().replace(":",""),i===""&&(i=fieldName.toLowerCase().replace("_"," ")),r+="<li>Please enter a valid "+i+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error"))):fieldContents===""&&($fieldObj.closest(".form-group").data("error")?(i=$fieldObj.closest(".form-group").data("error"),r+="<li>"+i+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error")):(i=$("label[for="+fieldName+"]").text().toLowerCase().replace(":",""),i===""&&(i=fieldName.toLowerCase().replace("_"," ")),r+="<li>Please enter a valid "+i+"<\/li>",$fieldObj.addClass("field-error").closest(".form-group").addClass("has-error"))));else $(u).each(function(n,t){var r,u,i;if(t=$.trim(t),t.indexOf("|")==-1&&t.indexOf(":")==-1&&t.indexOf("@")==-1&&$(`[name="${t}"]`).is(":enabled")&&(checkRequiredFields_validateField(`[name="${t}"]`)||($(document).find(`[name="${t}"]`).closest(".form-group").addClass("has-error"),errorHtml+=`<li>Need value for ${checkRequiredFields_getError($(document).find(`[name="${t}"]`))}</li>`)),~t.indexOf("|")){var s=0,h=0,e=t.split("|");$(e).each(function(n,t){checkRequiredFields_validateField(`[name="${t}"]`)&&s++;$(`[name="${t}"]`).is(":disabled")&&h++});h!==e.length&&s==0&&(r="",u="",$(e).each(function(n,t){$(document).find(`[name="${t}"]`).parent().addClass("has-error");r+=u+checkRequiredFields_getError(`[name="${t}"]`);u=" / "}),errorHtml+=`<li>Need at least one value between ${r}</li>`)}if(~t.indexOf("@")){var o=0,c=0,f=t.split("@");$(f).each(function(n,t){checkRequiredFields_validateField(`[name="${t}"]`)&&o++;$(`[name="${t}"]`).is(":disabled")&&c++});c!==f.length&&o>0&&o!==f.length&&(r="",u="",$(f).each(function(n,t){$(document).find(`[name="${t}"]`).parent().addClass("has-error");r+=u+checkRequiredFields_getError(`[name="${t}"]`);u=" / "}),errorHtml+=`<li>Need all values for ${r}</li>`)}~t.indexOf(":")&&(i=t.split(":"),$(`[name="${i[0]}"]`).is(":enabled")&&(checkRequiredFields_validateField(`[name="${i[0]}"]`)?$.post({url:i[1],async:!1,data:{formInput:$(document).find(`[name="${i[0]}"]`).val()},success:function(n){n=="#BAD#"&&($(document).find(`[name="${i[0]}"]`).parent().addClass("has-error"),errorHtml+=`<li>The value for ${checkRequiredFields_getError(`[name="${i[0]}"]`)} is already used; please use another value</li>`)}}):($(document).find(`[name="${i[0]}"]`).parent().addClass("has-error"),errorHtml+=`<li>Need value for ${checkRequiredFields_getError(`[name="${i[0]}"]`)}</li>`)))});return r}function invCaptchaSubmit(){invCaptchaPassed=!0}function randomQueryString(){return returnString="&UID="+(new Date).getTime()+Math.random()}function highlightText(n,t,i){$(n).each(function(){var n=new RegExp("\\b"+t+"\\b","gi");this.innerHTML=this.innerHTML.replace(n,function(n){return'<span class="'+i+'">'+n+"<\/span>"})})}function checkRequiredFields_validateField(n){var i=!1,t,r,u;return $(document).find(n).length&&(t=$(n),t.is("input")&&t.attr("type")=="email"?(r=new RegExp(/^[A-Za-z0-9]((([_]*[-]?[.]?)[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$/g),u=r.exec(t.val()),u!==null&&t.val()!==""&&(i=!0)):t.is("input")&&(t.attr("type")=="text"||t.attr("type")=="number")&&t.val().length?i=!0:(t.is("select")||t.is("textarea"))&&t.val().length?i=!0:t.is("input")&&(t.attr("type")=="radio"||t.attr("type")=="checkbox")&&$(document).find(`${n}:checked`).length&&(i=!0)),i}function checkRequiredFields_getError(n){var i="",t;return $(document).find(n).length&&(t=$(n).attr("data-error-label"),i=typeof t!="undefined"&&t!==!1?`<strong><u>${t}</u></strong>`:`<strong><u>${$(n).closest(".form-group").find("label.control-label").text()}</u></strong>`),i}$(document).ready(function(){var n,t;if($("iframe").each(function(){var n=$(this).attr("src");n!==undefined&&($(this).attr("src").indexOf("?")>0?$(this).attr({src:n+"&wmode=transparent",wmode:"Opaque"}):$(this).attr({src:n+"?wmode=transparent",wmode:"Opaque"}))}),$("#slider").length>0&&$("#slider").anythingSlider(),$(".igallery-masonry").length>0&&(n=$(".igallery-masonry").masonry({itemSelector:".igallery-masonry-item",columnWidth:".grid-sizer",percentPosition:!0}),n.imagesLoaded().progress(function(){n.masonry("layout");n.on("layoutComplete",function(){$(".igallery-masonry").addClass("active")})})),$(".igallery-grid").length>0&&$(".igallery-grid .lightbox").matchHeight({byRow:!0,property:"height",target:null,remove:!1}),typeof $.fn.ekkoLightbox!="undefined"&&$.isFunction($.fn.ekkoLightbox))$(document).on("click",'*[data-toggle="lightbox"], a.lightbox',function(n){n.preventDefault();
9884$(this).ekkoLightbox({title:$(this).attr("title"),gallery:$(this).data("gallery")})});else typeof $.fn.lightBox!="undefined"&&$.isFunction($.fn.lightBox)&&$("a.lightbox").lightBox({overlayBgColor:"#000",overlayOpacity:.75,imageLoading:"/fend/images/loading.gif",imageBtnClose:"/fend/images/close.gif",imageBtnPrev:"/fend/images/prev.gif",imageBtnNext:"/fend/images/next.gif",containerResizeSpeed:350,txtImage:"Image",txtOf:"of"});if($("body a[rel~=external]").attr("target","blank"),$("body a[rel~=nofollow]").attr("rel","nofollow"),$("#fontsmall").bind("click",function(n){changeFontSize("small",window.cssPath);n.preventDefault()}),$("#fontmedium").bind("click",function(n){changeFontSize("medium",window.cssPath);n.preventDefault()}),$("#fontbig").bind("click",function(n){changeFontSize("big",window.cssPath);n.preventDefault()}),$(document).find(".sims_form_session_token").length&&$.ajax({url:"/vfend/include/req_session_token.asp",async:!1,success:function(n){$(document).find(".sims_form_session_token").each(function(){$(this).append(`<input type="hidden" name="sims_form_token" value="${n}" />`)})}}),t="/modules/recaptcha/request/recaptchaCheck.asp",$('[name="conf-requiredFields"],#blogcomment').closest("form").submit(function(n){var r,i,u,f;return n.stopImmediatePropagation(),r=n,i=$(this),checkRequiredFields(i.find('[name="conf-requiredFields"]').val(),$(this))&&(i.find("#g-recaptcha-container").length?i.find("#g-recaptcha-response").length?grecaptcha.getResponse().length>0&&$.post({url:`${t}?type=v2`,data:{token:grecaptcha.getResponse()},success:function(){i.unbind(r).submit()}}):(u=new Date,f=""+(u.getMonth()+1)+u.getDate()+"_"+parseInt(Math.random()*1e5+1),grecaptcha.execute("6LcTOHsaAAAAAMZytv7D0QhJkxy2wNBSLMLdu2yM",{action:f}).then(function(n){$.post({url:`${t}?type=v3`,data:{token:n},success:function(){i.unbind(r).submit()}}).fail(function(){grecaptcha.render("g-recaptcha-container",{sitekey:"6LdWeUsUAAAAAOr4ZSrJEzxaEJYC7UwrX1Eogk9M"})})})):i.unbind(r).submit()),!1}),$('[name="_requiredFields"]').closest("form").submit(function(){return checkRequiredFields($(this).find('[name="_requiredFields"]').val(),$(this))}),highlightText(".search-results-list a",$(".search-string").text(),"highlight"),$("#advPageIndex").length)$("[data-pagination-index]").on("click",function(n){n.preventDefault();$("#advPageIndex").val($(this).attr("data-pagination-index"));$("#adv-search-form").submit()});$("#recaptcha-modal-bs").length&&$("#recaptcha-modal-bs").modal("show");$("#recaptcha-modal").on("click",function(){$("#recaptcha-modal").remove()});$("#recaptcha-modal-body").on("click",function(n){n.stopPropagation()})});$(".dropdown").hover(function(){$(this).closest(".navbar-deep").length||(dropdownMenu=$(this).find(".dropdown-menu"),dropdownMenuLeft=dropdownMenu.offset().left,dropdownMenuRight=dropdownMenuLeft+dropdownMenu.width(),dropdownMenuLeft<0?dropdownMenu.css({right:"auto",left:"0"}):dropdownMenuRight>$(window).width()&&dropdownMenu.css({right:"0",left:"auto"}))});function showModal(n){showModal(n,null)}function showModal(n,t){var r=$("body"),u=r.height(),f=document.createElement("div"),i,e,o;f.setAttribute("id","modaloverlay");f.style.display="none";r.append(f);$("#modaloverlay").bind("click",function(){return closeModal(),!1});i=document.createElement("div");i.setAttribute("id","modalwindow");i.style.display="none";r.append(i);i=$(i);e=document.createElement("div");e.setAttribute("id","modalinner");i.append(e);i.bind("click",function(){closeModal()});$("#modalinner").click(function(n){n.stopPropagation()});isNaN(n)?($("#modalinner").html(n+'<div id="modalclose"><a href="#" onclick="javascript:closeModal();return false;"><span>close<\/span><\/div>'),t&&t()):(o="/fend/request/reqArticle.asp?article_id="+n+"&doNotRedirect=true"+randomQueryString(),$.ajax({url:o,success:function(n){$("#modalinner").html(n);centerModal(i);t&&t()}}));centerModal(i);$("select").css("visibility","hidden");$("#modaloverlay").fadeTo("slow",.7);$("#modalwindow").fadeIn("slow");$("#modalinner").height()<$(window).height()?setOverlaySize($("#modaloverlay"),u):setOverlaySize($("#modaloverlay"),$(document).height());$(window).resize(function(){$("#modalinner").height()<$(window).height()?(setOverlaySize($("#modaloverlay"),u),centerModal(i)):setOverlaySize($("#modaloverlay"),$(document).height())});$(window).scroll(function(){$("#modalinner").height()<$(window).height()?(setOverlaySize($("#modaloverlay"),u),centerModal(i)):setOverlaySize($("#modaloverlay"),$(document).height())})}function closeModal(){$("select").css("visibility","visible");$("#modalwindow").hide();$("#modaloverlay").hide();$("#modaloverlay").remove();$("#modalwindow").remove()}function centerModal(n){var t=($(window).height()-n.outerHeight())/2+$(window).scrollTop();t<10&&(t=10);n.css("top",t)}function setOverlaySize(n,t){var i=$(window).height();overlayHeight=t>i?t:i;n.height(overlayHeight)}(function(n){n.fn.extend({tabContent:function(t){return t=n.extend({transition:"standard",speed:400},t),this.each(function(){var i=t,f=n(this),u=n(f.children("ul")),r=n(f.children("div"));r.children().hide();u.children("li:first").addClass("active");r.children("div:first").addClass("active").show();u.find("a").click(function(t){var s,f,e,o,h,c;if(t.preventDefault(),s=n(this).attr("class"),f=n("#"+s),u.find(".active").removeClass("active"),n(this).parent().addClass("active"),!f.hasClass("active")){e=r.find(".active");e.removeClass("active");f.addClass("active");n(":animated").stop(!0,!0);switch(i.transition){case"slideUpDown":e.slideUp(i.speed,function(){f.slideDown(i.speed)});break;case"fade":e.fadeOut(function(){f.fadeIn()});break;case"slideLeft":e.parent().css("position","relative");o=e.position().left;e.css({width:e.parent().width(),position:"absolute",left:o});f.css({width:f.parent().width(),position:"absolute",left:f.parent().width()*2});e.animate({left:e.width()*-1},i.speed);f.show();f.animate({left:o},i.speed);break;case"slideRight":e.parent().css("position","relative");o=e.position().left;e.css({width:e.parent().width(),position:"absolute",left:o});f.css({width:f.parent().width(),position:"absolute",left:f.parent().width()*-1});e.animate({left:e.width()*2},i.speed);f.show();f.animate({left:o},i.speed);break;case"slideHoriz":e.parent().css("position","relative");o=e.position().left;h=n(".tabContent").index(e);c=n(".tabContent").index(f);e.css({width:e.parent().width(),position:"absolute",left:o});c>h?(f.css({width:f.parent().width(),position:"absolute",left:f.parent().width()*2}),e.animate({left:e.width()*-1},i.speed),f.show(),f.animate({left:o},i.speed)):(f.css({width:f.parent().width(),position:"absolute",left:f.parent().width()*-1}),e.animate({left:e.width()*2},i.speed),f.show(),f.animate({left:o},i.speed));break;default:r.children().hide();f.show()}}})})}})})(jQuery);(function(n){n.fn.extend({listScroll:function(t){return t=n.extend({autoScroll:!0,showScrollButtons:!0,scrollTimeout:3e3,speed:800,visibleItems:3},t),this.each(function(){var r=t,i=n(this),f=i.attr("id"),u,e,o;i.find("li").length>r.visibleItems&&(i.find("li:gt("+(r.visibleItems-1)+")").hide(),r.showScrollButtons&&(e=n("<a><\/a>",{"class":"scrollUp",href:"#",html:"<span>Up<\/span>"}),o=n("<a><\/a>",{"class":"scrollDown",href:"#",html:"<span>Down<\/span>"}),i.before(e),i.after(o)),i.prev().click(function(n){n.preventDefault();i.find("li:animated").length===0&&(clearTimeout(u),i.find("li:nth-child("+(r.visibleItems+1)+")").addClass("last"),i.find("li:first").animate({height:"hide"},r.speed),i.find("li:nth-child("+(r.visibleItems+1)+")").animate({height:"show"},r.speed,function(){i.find("li.last").removeClass("last");i.append(i.find("li:first"));r.autoScroll&&(u=setTimeout("$('#"+f+"').prev().click();",r.scrollTimeout))}))}),i.next().click(function(n){n.preventDefault();i.find("li:animated").length===0&&(clearTimeout(u),i.prepend(i.find("li:last")),i.find("li:nth-child("+(r.visibleItems+1)+")").addClass("last"),i.find("li:first").animate({height:"show"},r.speed,"linear"),i.find("li:nth-child("+(r.visibleItems+1)+")").animate({height:"hide"},r.speed,"linear",function(){i.find("li.last").removeClass("last");r.autoScroll&&(u=setTimeout("$('#"+f+"').prev().click();",r.scrollTimeout))}))}),r.autoScroll&&(i.is(":visible")&&(u=setTimeout("$('#"+f+"').prev().click();",r.scrollTimeout)),i.mouseover(function(){clearTimeout(u)}),i.mouseout(function(){u=setTimeout("$('#"+f+"').prev().click();",r.scrollTimeout)})))})}})})(jQuery);
vendor: 37,045 bytes, lines 9884-9890
9884/*!
9885 * Bootstrap v3.3.7 (http://getbootstrap.com)
9886 * Copyright 2011-2016 Twitter, Inc.
9887 * Licensed under the MIT license
9888 */
9889if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},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!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){
9890this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e<c&&"top";if("bottom"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&"bottom":!(e+g<=a-d)&&"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?"top":null!=d&&i+j>=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
vendor: 2,016 bytes, lines 9890-9908
9890/*
9891 * This combined file was created by the DataTables downloader builder:
9892 *   https://datatables.net/download
9893 *
9894 * To rebuild or modify this file with the latest versions of the included
9895 * software please visit:
9896 *   https://datatables.net/download/#bs/dt-1.10.13/b-1.2.4/b-colvis-1.2.4/b-print-1.2.4/cr-1.3.2/fc-3.2.2/fh-3.1.2/r-2.1.0
9897 *
9898 * Included libraries:
9899 *   DataTables 1.10.13, Buttons 1.2.4, Column visibility 1.2.4, Print view 1.2.4, ColReorder 1.3.2, FixedColumns 3.2.2, FixedHeader 3.1.2, Responsive 2.1.0
9900 */
9901
9902/*!
9903 DataTables 1.10.13
9904 ©2008-2016 SpryMedia Ltd - datatables.net/license
9905*/
9906(function(h){"function"===typeof define&&define.amd?define(["jquery"],function(E){return h(E,window,document)}):"object"===typeof exports?module.exports=function(E,H){E||(E=window);H||(H="undefined"!==typeof window?require("jquery"):require("jquery")(E));return h(H,E,E.document)}:h(jQuery,window,document)})(function(h,E,H,k){function Y(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),
9907d[c]=e,"o"===b[1]&&Y(a[e])});a._hungarianMap=d}function J(a,b,c){a._hungarianMap||Y(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),J(a[d],b[d],c)):b[d]=b[e]})}function Fa(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords");
9908a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&fb(a)}function gb(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");
vendor: 6,642 bytes, lines 9908-9921
9908"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX=
9909a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&J(m.models.oSearch,a[b])}function hb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;b&&!h.isArray(b)&&(a.aDataSort=[b])}function ib(a){if(!m.__browser){var b={};m.__browser=b;var c=h("<div/>").css({position:"fixed",top:0,left:-1*h(E).scrollLeft(),height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",
9910top:1,left:1,width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function jb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==
9911e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Ga(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:H.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);la(a,d,h(b).data())}function la(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=
9912e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(hb(c),J(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=R(g),i=b.mRender?R(b.mRender):null,c=function(a){return"string"===typeof a&&-1!==a.indexOf("@")};
9913b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return S(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=
9914d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Z(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ha(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&ma(a);s(a,null,"column-sizing",[a])}function $(a,b){var c=na(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function aa(a,b){var c=na(a,"bVisible"),c=h.inArray(b,
9915c);return-1!==c?c:null}function ba(a){var b=0;h.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==h(d.nTh).css("display")&&b++});return b}function na(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Ia(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,j,i,h,l,q,r;e=0;for(f=b.length;e<f;e++)if(l=b[e],r=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=d.length;g<j;g++){i=0;for(h=c.length;i<h;i++){r[i]===k&&(r[i]=B(a,i,e,"type"));
9916q=d[g](r[i],a);if(!q&&g!==d.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function kb(a,b,c,d){var e,f,g,j,i,n,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var q=n.targets!==k?n.targets:n.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Ga(a);d(q[f],n)}else if("number"===typeof q[f]&&0>q[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;j<i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&
9917d(j,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function N(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,j=0,i=g.length;j<i;j++)g[j].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ja(a,e,c,d);return e}function oa(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=Ka(a,e);return N(a,c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,
9918f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,i=f.fnGetData(g,d,{settings:a,row:b,col:c});if(i===k)return a.iDrawError!=e&&null===j&&(K(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),j;if((i===g||null===i)&&null!==j&&d!==k)i=j;else if("function"===typeof i)return i.call(g);return null===i&&"display"==d?"":i}function lb(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}
9919function La(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function R(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=R(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,b,f){var g,j;if(""!==f){j=La(f);
9920for(var i=0,n=j.length;i<n;i++){f=j[i].match(ca);g=j[i].match(V);if(f){j[i]=j[i].replace(ca,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");if(h.isArray(a)){i=0;for(n=a.length;i<n;i++)g.push(c(a[i],b,j))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(V,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===k)return k;a=a[j[i]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function S(a){if(h.isPlainObject(a))return S(a._);
9921if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=La(e),f;f=e[e.length-1];for(var g,j,i=0,n=e.length-1;i<n;i++){g=e[i].match(ca);j=e[i].match(V);if(g){e[i]=e[i].replace(ca,"");a[e[i]]=[];f=e.slice();f.splice(0,i+1);g=f.join(".");if(h.isArray(d)){j=0;for(n=d.length;j<n;
vendor: 10,682 bytes, lines 9921-9942
9921j++)f={},b(f,d[j],g),a[e[i]].push(f)}else a[e[i]]=d;return}j&&(e[i]=e[i].replace(V,
9922""),a=a[e[i]](d));if(null===a[e[i]]||a[e[i]]===k)a[e[i]]={};a=a[e[i]]}if(f.match(V))a[f.replace(V,"")](d);else a[f.replace(ca,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ma(a){return D(a.aoData,"_aData")}function pa(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function qa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function da(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);
9923c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ka(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;Na(a,e)}}function Ka(a,b,c,d){var e=[],f=b.firstChild,g,j,i=0,n,l=a.aoColumns,q=a._rowReadObject,d=d!==k?d:q?{}:[],r=function(a,b){if("string"===typeof a){var c=a.indexOf("@");
9924-1!==c&&(c=a.substring(c+1),S(a)(d,b.getAttribute(c)))}},m=function(a){if(c===k||c===i)j=l[i],n=h.trim(a.innerHTML),j&&j._bAttrSrc?(S(j.mData._)(d,n),r(j.mData.sort,a),r(j.mData.type,a),r(j.mData.filter,a)):q?(j._setter||(j._setter=S(j.mData)),j._setter(d,n)):d[i]=n;i++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)m(f),e.push(f);f=f.nextSibling}else{e=b.anCells;f=0;for(g=e.length;f<g;f++)m(e[f])}if(b=b.firstChild?b:b.nTr)(b=b.getAttribute("id"))&&S(a.rowId)(d,b);return{data:d,cells:e}}
9925function Ja(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],j,i,n,l,q;if(null===e.nTr){j=c||H.createElement("tr");e.nTr=j;e.anCells=g;j._DT_RowIndex=b;Na(a,e);l=0;for(q=a.aoColumns.length;l<q;l++){n=a.aoColumns[l];i=c?d[l]:H.createElement(n.sCellType);i._DT_CellIndex={row:b,column:l};g.push(i);if((!c||n.mRender||n.mData!==l)&&(!h.isPlainObject(n.mData)||n.mData._!==l+".display"))i.innerHTML=B(a,b,l,"display");n.sClass&&(i.className+=" "+n.sClass);n.bVisible&&!c?j.appendChild(i):!n.bVisible&&c&&i.parentNode.removeChild(i);
9926n.fnCreatedCell&&n.fnCreatedCell.call(a.oInstance,i,B(a,b,l),f,b,l)}s(a,"aoRowCreatedCallback",null,[j,f,b])}e.nTr.setAttribute("role","row")}function Na(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?sa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function mb(a){var b,c,d,e,f,g=a.nTHead,j=a.nTFoot,i=0===
9927h("th, td",g).length,n=a.oClasses,l=a.aoColumns;i&&(e=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),i&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),Oa(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Pa(a,"header")(a,d,f,n);i&&ea(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH);
9928if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function fa(a,b,c){var d,e,f,g=[],j=[],i=a.aoColumns.length,n;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);j.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(n=i=1,j[d][f]===k){a.appendChild(g[d][f].cell);
9929for(j[d][f]=1;g[d+i]!==k&&g[d][f].cell==g[d+i][f].cell;)j[d+i][f]=1,i++;for(;g[d][f+n]!==k&&g[d][f].cell==g[d][f+n].cell;){for(c=0;c<i;c++)j[d+c][f+n]=1;n++}h(g[d][f].cell).attr("rowspan",i).attr("colspan",n)}}}}function O(a){var b=s(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==y(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=
9930-1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!nb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ja(a,l);l=q.nTr;if(0!==e){var r=d[c%e];q._sRowStripe!=r&&(h(l).removeClass(q._sRowStripe).addClass(r),q._sRowStripe=r)}s(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords:
9931f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:ba(a),"class":a.oClasses.sRowEmpty}).html(c))[0];s(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ma(a),g,n,i]);s(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ma(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));s(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function T(a,b){var c=a.oFeatures,d=c.bFilter;
9932c.bSort&&ob(a);d?ga(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;O(a);a._drawHold=!1}function pb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,k=0;k<f.length;k++){g=null;j=f[k];if("<"==j){i=h("<div/>")[0];
9933n=f[k+1];if("'"==n||'"'==n){l="";for(q=2;f[k+q]!=n;)l+=f[k+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;k+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=qb(a);else if("f"==j&&d.bFilter)g=rb(a);else if("r"==j&&d.bProcessing)g=sb(a);else if("t"==j)g=tb(a);else if("i"==j&&d.bInfo)g=ub(a);else if("p"==
9934j&&d.bPaginate)g=vb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q<n;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function ea(a,b){var c=h(b).children("tr"),d,e,f,g,j,i,n,l,q,k;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan");
9935q=1*e.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;n=g;k=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][n+j]={cell:e,unique:k},a[f+g].nTr=d}e=e.nextSibling}}}function ta(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],ea(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function ua(a,b,c){s(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={},
9936e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,j=a.oInstance,i=function(b){s(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var n=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&n?n:h.extend(!0,b,n);delete g.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&K(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=s(a,null,"xhr",
9937[a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==c?K(a,0,"Invalid JSON response",1):4===b.readyState&&K(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;s(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(n,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(n,g)),g.data=f)}function nb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,
9938!0),ua(a,wb(a),function(b){xb(a,b)}),!1):!0}function wb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,n,l,k=W(a);g=a._iDisplayStart;i=!1!==d.bPaginate?a._iDisplayLength:-1;var r=function(a,b){j.push({name:a,value:b})};r("sEcho",a.iDraw);r("iColumns",c);r("sColumns",D(b,"sName").join(","));r("iDisplayStart",g);r("iDisplayLength",i);var ra={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)n=b[g],
9939l=f[g],i="function"==typeof n.mData?"function":n.mData,ra.columns.push({data:i,name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),r("mDataProp_"+g,i),d.bFilter&&(r("sSearch_"+g,l.sSearch),r("bRegex_"+g,l.bRegex),r("bSearchable_"+g,n.bSearchable)),d.bSort&&r("bSortable_"+g,n.bSortable);d.bFilter&&(r("sSearch",e.sSearch),r("bRegex",e.bRegex));d.bSort&&(h.each(k,function(a,b){ra.order.push({column:b.col,dir:b.dir});r("iSortCol_"+a,b.col);r("sSortDir_"+
9940a,b.dir)}),r("iSortingCols",k.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:ra:b?j:ra}function xb(a,b){var c=va(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}pa(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)N(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;O(a);a._bInitComplete||
9941wa(a,b);a.bAjaxDataGet=!0;C(a,!1)}function va(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?R(c)(b):b}function rb(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value?
9942"":this.value;b!=e.sSearch&&(ga(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,O(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,i=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",g?Qa(f,g):f).on("keypress.DT",function(a){if
vendor: 4,796 bytes, lines 9942-9952
9942(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==H.activeElement&&i.val(e.sSearch)}catch(d){}});
9943return b[0]}function ga(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Ia(a);if("ssp"!=y(a)){yb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)zb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);Ab(a)}else f(b);a.bFiltered=!0;s(a,null,"search",[a])}function Ab(a){for(var b=
9944m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var j=[],i=0,n=c.length;i<n;i++)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,i)&&j.push(e);c.length=0;h.merge(c,j)}}function zb(a,b,c,d,e,f){if(""!==b){for(var g=[],j=a.aiDisplay,d=Ra(b,d,e,f),e=0;e<j.length;e++)b=a.aoData[j[e]]._aFilterData[c],d.test(b)&&g.push(j[e]);a.aiDisplay=g}}function yb(a,b,c,d,e,f){var d=Ra(b,d,e,f),f=a.oPreviousSearch.sSearch,g=a.aiDisplayMaster,j,e=[];0!==m.ext.search.length&&(c=!0);j=Bb(a);if(0>=b.length)a.aiDisplay=
9945g.slice();else{if(j||c||f.length>b.length||0!==b.indexOf(f)||a.bSorted)a.aiDisplay=g.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)d.test(a.aoData[b[c]]._sFilterRow)&&e.push(b[c]);a.aiDisplay=e}}function Ra(a,b,c,d){a=b?a:Sa(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function Bb(a){var b=a.aoColumns,c,d,e,f,g,j,i,h,l=m.ext.type.search;c=!1;
9946d=0;for(f=a.aoData.length;d<f;d++)if(h=a.aoData[d],!h._aFilterData){j=[];e=0;for(g=b.length;e<g;e++)c=b[e],c.bSearchable?(i=B(a,d,e,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(xa.innerHTML=i,i=$b?xa.textContent:xa.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join("  ");c=!0}return c}function Cb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,
9947caseInsensitive:a.bCaseInsensitive}}function Db(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function ub(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Eb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Eb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+
99481,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Fb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,d,e,f,g,j));h(b).html(j)}}function Fb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,
9949f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ha(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){pb(a);mb(a);fa(a,a.aoHeader);fa(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ha(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=v(f.sWidth));s(a,null,"preInit",[a]);T(a);e=y(a);if("ssp"!=e||g)"ajax"==e?ua(a,[],function(c){var f=va(a,c);for(b=0;b<f.length;b++)N(a,f[b]);a.iInitDisplayStart=
9950d;T(a);C(a,!1);wa(a,c)},a):(C(a,!1),wa(a))}else setTimeout(function(){ha(a)},200)}function wa(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Z(a);s(a,null,"plugin-init",[a,b]);s(a,"aoInitComplete","init",[a,b])}function Ta(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Ua(a);s(a,null,"length",[a,c])}function qb(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)e[0][g]=
9951new Option(d[g],f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).on("change.DT",function(){Ta(a,h(this).val());O(a)});h(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function vb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){O(a)},b=h("<div/>").addClass(a.oClasses.sPaging+
9952b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);
vendor: 5,021 bytes, lines 9952-9961
9952f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;l<k;l++)Pa(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Va(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&
9953(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:K(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(s(a,null,"page",[a]),c&&O(a));return b}function sb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",b?"block":"none");
9954s(a,null,"processing",[a,b])}function tb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",
9955{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:v(d)}).append(b));l&&i.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",
99560).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],r=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(r.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=r;a.aoDrawCallback.push({fn:ma,sName:"scrolling"});return i[0]}function ma(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"),
9957j=a.nScrollBody,l=h(j),q=j.style,r=h(a.nScrollFoot).children("div"),m=r.children("table"),p=h(a.nTHead),o=h(a.nTable),u=o[0],s=u.style,t=a.nTFoot?h(a.nTFoot):null,x=a.oBrowser,U=x.bScrollOversize,ac=D(a.aoColumns,"nTh"),P,L,Q,w,Wa=[],y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};L=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==L&&a.scrollBarVis!==k)a.scrollBarVis=L,Z(a);else{a.scrollBarVis=L;o.children("thead, tfoot").remove();
9958t&&(Q=t.clone().prependTo(o),P=t.find("tr"),Q=Q.find("tr"));w=p.clone().prependTo(o);p=p.find("tr");L=w.find("tr");w.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(ta(a,w),function(b,c){B=$(a,b);c.style.width=a.aoColumns[B].sWidth});t&&I(function(a){a.style.width=""},Q);f=o.outerWidth();if(""===c){s.width="100%";if(U&&(o.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))s.width=v(o.outerWidth()-b);f=o.outerWidth()}else""!==d&&(s.width=
9959v(d),f=o.outerWidth());I(C,L);I(function(a){z.push(a.innerHTML);Wa.push(v(h(a).css("width")))},L);I(function(a,b){if(h.inArray(a,ac)!==-1)a.style.width=Wa[b]},p);h(L).height(0);t&&(I(C,Q),I(function(a){A.push(a.innerHTML);y.push(v(h(a).css("width")))},Q),I(function(a,b){a.style.width=y[b]},P),h(Q).height(0));I(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+z[b]+"</div>";a.style.width=Wa[b]},L);t&&I(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+
9960A[b]+"</div>";a.style.width=y[b]},Q);if(o.outerWidth()<f){P=j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(U&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))s.width=v(P-b);(""===c||""!==d)&&K(a,1,"Possible column misalignment",6)}else P="100%";q.width=v(P);g.width=v(P);t&&(a.nScrollFoot.style.width=v(P));!e&&U&&(q.height=v(u.offsetHeight+b));c=o.outerWidth();n[0].style.width=v(c);i.width=v(c);d=o.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+
9961(x.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";t&&(m[0].style.width=v(c),r[0].style.width=v(c),r[0].style[e]=d?b+"px":"0px");o.children("colgroup").insertBefore(o.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function I(a,b,c){for(var d=0,e=0,f=b.length,g,j;e<f;){g=b[e].firstChild;for(j=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,d):a(g,d),d++),g=g.nextSibling,j=c?j.nextSibling:null;
vendor: 8,024 bytes, lines 9961-9977
9961e++}}function Ha(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,
9962e=d.sY,f=d.sX,g=d.sXInner,j=c.length,i=na(a,"bVisible"),n=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,r=!1,m,p,o=a.oBrowser,d=o.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<i.length;m++)p=c[i[m]],null!==p.sWidth&&(p.sWidth=Gb(p.sWidthOrig,k),r=!0);if(d||!r&&!f&&!e&&j==ba(a)&&j==n.length)for(m=0;m<j;m++)i=$(a,m),null!==i&&(c[i].sWidth=v(n.eq(m).width()));else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var u=h("<tr/>").appendTo(j.find("tbody"));
9963j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=ta(a,j.find("thead")[0]);for(m=0;m<i.length;m++)p=c[i[m]],n[m].style.width=null!==p.sWidthOrig&&""!==p.sWidthOrig?v(p.sWidthOrig):"",p.sWidthOrig&&f&&h(n[m]).append(h("<div/>").css({width:p.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m<i.length;m++)r=i[m],p=c[r],h(Hb(a,r)).clone(!1).append(p.sContentPadding).appendTo(u);h("[name]",
9964j).removeAttr("name");p=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()<k.clientWidth&&l&&j.width(k.clientWidth)):e?j.width(k.clientWidth):l&&j.width(l);for(m=e=0;m<i.length;m++)k=h(n[m]),g=k.outerWidth()-k.width(),k=o.bBounding?Math.ceil(n[m].getBoundingClientRect().width):k.outerWidth(),e+=k,c[i[m]].sWidth=v(k-g);b.style.width=v(e);p.remove()}l&&(b.style.width=
9965v(l));if((l||f)&&!a._reszEvt)b=function(){h(E).on("resize.DT-"+a.sInstance,Qa(function(){Z(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function Gb(a,b){if(!a)return 0;var c=h("<div/>").css("width",v(a)).appendTo(b||H.body),d=c[0].offsetWidth;c.remove();return d}function Hb(a,b){var c=Ib(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Ib(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace(bc,
9966""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=f);return e}function v(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function W(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){i=n[a][0];f=e[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=e[g].sType||
9967"string",n[a]._idx===k&&(n[a]._idx=h.inArray(n[a][1],e[g].asSorting)),d.push({src:i,col:g,dir:n[a][1],index:n[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return d}function ob(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;Ia(a);h=W(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Jb(a,j.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)d[i[b]]=b;g===h.length?i.sort(function(a,b){var c,e,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=
99680;g<i;g++)if(j=h[g],c=k[j.col],e=m[j.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,p=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=p[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Kb(a){for(var b,c,d=a.aoColumns,e=W(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,
9969"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(i.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=j[e[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Xa(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,
9970D(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);T(a);"function"==typeof d&&d(a)}function Oa(a,b,c,d){var e=a.aoColumns[c];Ya(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Xa(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Xa(a,c,b.shiftKey,d))})}
9971function ya(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=W(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)g=d[e].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Jb(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,aa(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],
9972c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[j]:B(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function za(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:Cb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:Cb(a.aoPreSearchCols[d])}})};s(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,
9973b)}}function Lb(a,b,c){var d,e,f=a.aoColumns,b=function(b){if(b&&b.time){var i=s(a,"aoStateLoadParams","stateLoadParams",[a,g]);if(-1===h.inArray(!1,i)&&(i=a.iStateDuration,!(0<i&&b.time<+new Date-1E3*i)&&!(b.columns&&f.length!==b.columns.length))){a.oLoadedState=h.extend(!0,{},g);b.start!==k&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==k&&(a._iDisplayLength=b.length);b.order!==k&&(a.aaSorting=[],h.each(b.order,function(b,c){a.aaSorting.push(c[0]>=f.length?[0,c[1]]:c)}));b.search!==
9974k&&h.extend(a.oPreviousSearch,Db(b.search));if(b.columns){d=0;for(e=b.columns.length;d<e;d++)i=b.columns[d],i.visible!==k&&(f[d].bVisible=i.visible),i.search!==k&&h.extend(a.aoPreSearchCols[d],Db(i.search))}s(a,"aoStateLoaded","stateLoaded",[a,g])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==k&&b(g)}else c()}function Aa(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function K(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+
9975" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)E.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&s(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function F(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?F(a,b,d[0],d[1]):F(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Mb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],
9976h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Ya(a,b,c){h(a).on("click.DT",b,function(b){a.blur();c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function s(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+
9977".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Ua(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Pa(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}
vendor: 4,490 bytes, lines 9977-9986
9977function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ia(a,b){var c=[],c=Nb.numbers_length,d=Math.floor(c/2);b<=c?c=X(0,b):a<=d?(c=X(0,
9978c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=X(b-(c-2),b):(c=X(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function fb(a){h.each({num:function(b){return Ba(b,a)},"num-fmt":function(b){return Ba(b,a,Za)},"html-num":function(b){return Ba(b,a,Ca)},"html-num-fmt":function(b){return Ba(b,a,Ca,Za)}},function(b,c){x.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(x.type.search[b+a]=x.type.search.html)})}function Ob(a){return function(){var b=
9979[Aa(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new u(Aa(this[x.iApiIndex])):new u(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=
9980function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ma(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};
9981this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();
9982return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return Aa(this[x.iApiIndex])};
9983this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=x.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=x.internal;for(var e in m.ext.internal)e&&(this[e]=Ob(e));this.each(function(){var e={},g=1<d?Mb(e,a,!0):
9984a,j=0,i,e=this.getAttribute("id"),n=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())K(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{gb(l);hb(l.column);J(l,l,!0);J(l.column,l.column,!0);J(l,h.extend(g,q.data()));var r=m.settings,j=0;for(i=r.length;j<i;j++){var p=r[j];if(p.nTable==this||p.nTHead.parentNode==this||p.nTFoot&&p.nTFoot.parentNode==this){var u=g.bRetrieve!==k?g.bRetrieve:l.bRetrieve;if(c||u)return p.oInstance;if(g.bDestroy!==k?g.bDestroy:l.bDestroy){p.oInstance.fnDestroy();
9985break}else{K(p,0,"Cannot reinitialise DataTable",3);return}}if(p.sTableId==this.id){r.splice(j,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+m.ext._unique++;var o=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:e,sTableId:e});o.nTable=this;o.oApi=b.internal;o.oInit=g;r.push(o);o.oInstance=1===b.length?b:q.dataTable();gb(g);g.oLanguage&&Fa(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=h.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);
9986g=Mb(h.extend(!0,{},l),g);F(o.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));
vendor: 6,469 bytes, lines 9986-9999
9986F(o,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],
9987["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"],["bJQueryUI","bJUI"]]);F(o.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(o.oLanguage,g,"fnInfoCallback");z(o,"aoDrawCallback",g.fnDrawCallback,"user");z(o,"aoServerParams",g.fnServerParams,"user");z(o,"aoStateSaveParams",g.fnStateSaveParams,"user");z(o,"aoStateLoadParams",g.fnStateLoadParams,"user");z(o,"aoStateLoaded",g.fnStateLoaded,
9988"user");z(o,"aoRowCallback",g.fnRowCallback,"user");z(o,"aoRowCreatedCallback",g.fnCreatedRow,"user");z(o,"aoHeaderCallback",g.fnHeaderCallback,"user");z(o,"aoFooterCallback",g.fnFooterCallback,"user");z(o,"aoInitComplete",g.fnInitComplete,"user");z(o,"aoPreDrawCallback",g.fnPreDrawCallback,"user");o.rowIdFn=R(g.rowId);ib(o);var t=o.oClasses;g.bJQueryUI?(h.extend(t,m.ext.oJUIClasses,g.oClasses),g.sDom===l.sDom&&"lfrtip"===l.sDom&&(o.sDom='<"H"lfr>t<"F"ip>'),o.renderer)?h.isPlainObject(o.renderer)&&
9989!o.renderer.header&&(o.renderer.header="jqueryui"):o.renderer="jqueryui":h.extend(t,m.ext.classes,g.oClasses);q.addClass(t.sTable);o.iInitDisplayStart===k&&(o.iInitDisplayStart=g.iDisplayStart,o._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(o.bDeferLoading=!0,e=h.isArray(g.iDeferLoading),o._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,o._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var v=o.oLanguage;h.extend(!0,v,g.oLanguage);v.sUrl&&(h.ajax({dataType:"json",url:v.sUrl,success:function(a){Fa(a);
9990J(l.oLanguage,a);h.extend(true,v,a);ha(o)},error:function(){ha(o)}}),n=!0);null===g.asStripeClasses&&(o.asStripeClasses=[t.sStripeOdd,t.sStripeEven]);var e=o.asStripeClasses,x=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(e,function(a){return x.hasClass(a)}))&&(h("tbody tr",this).removeClass(e.join(" ")),o.asDestroyStripes=e.slice());e=[];r=this.getElementsByTagName("thead");0!==r.length&&(ea(o.aoHeader,r[0]),e=ta(o));if(null===g.aoColumns){r=[];j=0;for(i=e.length;j<i;j++)r.push(null)}else r=
9991g.aoColumns;j=0;for(i=r.length;j<i;j++)Ga(o,e?e[j]:null);kb(o,g.aoColumnDefs,r,function(a,b){la(o,a,b)});if(x.length){var w=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(x[0]).children("th, td").each(function(a,b){var c=o.aoColumns[a];if(c.mData===a){var d=w(b,"sort")||w(b,"order"),e=w(b,"filter")||w(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};la(o,a)}}})}var U=o.oFeatures,
9992e=function(){if(g.aaSorting===k){var a=o.aaSorting;j=0;for(i=a.length;j<i;j++)a[j][1]=o.aoColumns[j].asSorting[0]}ya(o);U.bSort&&z(o,"aoDrawCallback",function(){if(o.bSorted){var a=W(o),b={};h.each(a,function(a,c){b[c.src]=c.dir});s(o,null,"order",[o,a,b]);Kb(o)}});z(o,"aoDrawCallback",function(){(o.bSorted||y(o)==="ssp"||U.bDeferRender)&&ya(o)},"sc");var a=q.children("caption").each(function(){this._captionSide=h(this).css("caption-side")}),b=q.children("thead");b.length===0&&(b=h("<thead/>").appendTo(q));
9993o.nTHead=b[0];b=q.children("tbody");b.length===0&&(b=h("<tbody/>").appendTo(q));o.nTBody=b[0];b=q.children("tfoot");if(b.length===0&&a.length>0&&(o.oScroll.sX!==""||o.oScroll.sY!==""))b=h("<tfoot/>").appendTo(q);if(b.length===0||b.children().length===0)q.addClass(t.sNoFooter);else if(b.length>0){o.nTFoot=b[0];ea(o.aoFooter,o.nTFoot)}if(g.aaData)for(j=0;j<g.aaData.length;j++)N(o,g.aaData[j]);else(o.bDeferLoading||y(o)=="dom")&&oa(o,h(o.nTBody).children("tr"));o.aiDisplay=o.aiDisplayMaster.slice();
9994o.bInitialised=true;n===false&&ha(o)};g.bStateSave?(U.bStateSave=!0,z(o,"aoDrawCallback",za,"state_save"),Lb(o,g,e)):e()}});b=null;return this},x,u,p,t,$a={},Pb=/[\r\n]/g,Ca=/<.*?>/g,cc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,dc=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)","g"),Za=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,M=function(a){return!a||!0===a||"-"===a?!0:!1},Qb=function(a){var b=parseInt(a,10);return!isNaN(b)&&
9995isFinite(a)?b:null},Rb=function(a,b){$a[b]||($a[b]=RegExp(Sa(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace($a[b],"."):a},ab=function(a,b,c){var d="string"===typeof a;if(M(a))return!0;b&&d&&(a=Rb(a,b));c&&d&&(a=a.replace(Za,""));return!isNaN(parseFloat(a))&&isFinite(a)},Sb=function(a,b,c){return M(a)?!0:!(M(a)||"string"===typeof a)?null:ab(a.replace(Ca,""),b,c)?!0:null},D=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<
9996f;e++)a[e]&&d.push(a[e][b]);return d},ja=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},X=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Tb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},sa=function(a){var b=[],c,d,e=a.length,f,g=0;d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b};m.util=
9997{throttle:function(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,h=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=k;a.apply(b,h)},c)):(d=g,a.apply(b,h))}},escapeRegex:function(a){return a.replace(dc,"\\$1")}};var A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ca=/\[.*?\]$/,V=/\(\)$/,Sa=m.util.escapeRegex,xa=h("<div>")[0],$b=xa.textContent!==k,bc=/<.*?>/g,Qa=m.util.throttle,Ub=[],w=Array.prototype,ec=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});
9998if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};u=function(a,b){if(!(this instanceof u))return new u(a,b);var c=[],d=function(a){(a=ec(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);
9999else d(a);this.context=sa(c);
vendor: 14,622 bytes, lines 9999-10027
9999b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};u.extend(this,this,Ub)};m.Api=u;h.extend(u.prototype,{any:function(){return 0!==this.count()},concat:w.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new u(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);
10000else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new u(this.context,b)},flatten:function(){var a=[];return new u(this.context,a.concat.apply(a,this.toArray()))},join:w.join,indexOf:w.indexOf||function(a,b){for(var c=b||0,d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,h,i,n,l=this.context,m,p,t=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(h=l.length;g<h;g++){var s=new u(l[g]);if("table"===b)f=
10001c.call(s,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(s,l[g],this[g],g),f!==k&&e.push(f);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){p=this[g];"column-rows"===b&&(m=Da(l[g],t.opts));i=0;for(n=p.length;i<n;i++)f=p[i],f="cell"===b?c.call(s,l[g],f.row,f.column,g,i):c.call(s,l[g],f,g,i,m),f!==k&&e.push(f)}}return e.length||d?(a=new u(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=t.rows,b.cols=t.cols,b.opts=t.opts,a):this},lastIndexOf:w.lastIndexOf||function(a,
10002b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(w.map)b=w.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new u(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:w.pop,push:w.push,reduce:w.reduce||function(a,b){return jb(this,a,b,0,this.length,1)},reduceRight:w.reduceRight||function(a,b){return jb(this,a,b,this.length-1,-1,-1)},reverse:w.reverse,selector:null,shift:w.shift,
10003sort:w.sort,splice:w.splice,toArray:function(){return w.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},unique:function(){return new u(this.context,sa(this))},unshift:w.unshift});u.extend=function(a,b,c){if(c.length&&b&&(b instanceof u||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);u.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?
10004{}:f.val,b[f.name].__dt_wrapper=!0,u.extend(a,b[f.name],f.propExt)}};u.register=p=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<d;c++)u.register(a[c],b);else for(var e=a.split("."),f=Ub,g,j,c=0,d=e.length;c<d;c++){g=(j=-1!==e[c].indexOf("()"))?e[c].replace("()",""):e[c];var i;a:{i=0;for(var n=f.length;i<n;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===d-1?i.val=b:f=j?i.methodExt:i.propExt}};u.registerPlural=t=function(a,b,c){u.register(a,
10005c);u.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof u?a.length?h.isArray(a[0])?new u(a.context,a[0]):a[0]:k:a})};p("tables()",function(a){var b;if(a){b=u;var c=this.context;if("number"===typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});p("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new u(b[0]):a});t("tables().nodes()",
10006"table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});t("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});t("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});t("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});t("tables().containers()","table().container()",function(){return this.iterator("table",
10007function(a){return a.nTableWrapper},1)});p("draw()",function(a){return this.iterator("table",function(b){"page"===a?O(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),T(b,!1===a))})});p("page()",function(a){return a===k?this.page.info().page:this.iterator("table",function(b){Va(b,a)})});p("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),
10008pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===y(a)}});p("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:k:this.iterator("table",function(b){Ta(b,a)})});var Vb=function(a,b,c){if(c){var d=new u(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))T(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();ua(a,[],function(c){pa(a);for(var c=va(a,c),d=0,e=c.length;d<
10009e;d++)N(a,c[d]);T(a,b);C(a,!1)})}};p("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});p("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});p("ajax.reload()",function(a,b){return this.iterator("table",function(c){Vb(c,!1===b,a)})});p("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?
10010b.ajax.url=a:b.ajax=a})});p("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Vb(c,!1===b,a)})});var bb=function(a,b,c,d,e){var f=[],g,j,i,n,l,m;i=typeof b;if(!b||"string"===i||"function"===i||b.length===k)b=[b];i=0;for(n=b.length;i<n;i++){j=b[i]&&b[i].split&&!b[i].match(/[\[\(:]/)?b[i].split(","):[b[i]];l=0;for(m=j.length;l<m;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&(f=f.concat(g))}a=x.selector[a];if(a.length){i=0;for(n=a.length;i<n;i++)f=a[i](d,e,f)}return sa(f)},
10011cb=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},db=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Da=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===j?[]:X(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==
10012d||"applied"==d)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<d;c++)"none"==j?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==j||0<=e&&"applied"==j)&&f.push(c))}return f};p("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=cb(b),c=this.iterator("table",function(c){var e=b,f;return bb("row",a,function(a){var b=Qb(a);if(b!==null&&!e)return[b];f||(f=Da(c,e));if(b!==
10013null&&h.inArray(b,f)!==-1)return[b];if(a===null||a===k||a==="")return f;if(typeof a==="function")return h.map(f,function(b){var e=c.aoData[b];return a(b,e._aData,e.nTr)?b:null});b=Tb(ja(c.aoData,f,"nTr"));if(a.nodeName){if(a._DT_RowIndex!==k)return[a._DT_RowIndex];if(a._DT_CellIndex)return[a._DT_CellIndex.row];b=h(a).closest("*[data-dt-row]");return b.length?[b.data("dt-row")]:[]}if(typeof a==="string"&&a.charAt(0)==="#"){var i=c.aIds[a.replace(/^#/,"")];if(i!==k)return[i.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},
10014c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});p("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||k},1)});p("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ja(a.aoData,b,"_aData")},1)});t("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});t("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",
10015function(b,c){da(b,c,a)})});t("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});t("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new u(c,b)});t("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,h,i,n,l;e.splice(c,1);
10016g=0;for(h=e.length;g<h;g++)if(i=e[g],l=i.anCells,null!==i.nTr&&(i.nTr._DT_RowIndex=g),null!==l){i=0;for(n=l.length;i<n;i++)l[i]._DT_CellIndex.row=g}qa(b.aiDisplayMaster,c);qa(b.aiDisplay,c);qa(a[d],c,!1);Ua(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});p("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?
10017h.push(oa(b,c)[0]):h.push(N(b,c));return h},1),c=this.rows(-1);c.pop();h.merge(c,b);return c});p("row()",function(a,b){return db(this.rows(a,b))});p("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;da(b[0],this[0],"data");return this});p("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});p("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);
10018var b=this.iterator("table",function(b){return a.nodeName&&"TR"===a.nodeName.toUpperCase()?oa(b,a)[0]:N(b,a)});return this.row(b[0])});var eb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Wb=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new u(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");
100190<D(g,"_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=ba(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&eb(f,c)}))}}};p("row().child()",function(a,b){var c=
10020this.context;if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)eb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=ba(d),e.push(c[0]))};f(a,b);c._details&&c._details.detach();c._details=h(e);
10021c._detailsShow&&c._details.insertAfter(c.nTr)}return this});p(["row().child.show()","row().child().show()"],function(){Wb(this,!0);return this});p(["row().child.hide()","row().child().hide()"],function(){Wb(this,!1);return this});p(["row().child.remove()","row().child().remove()"],function(){eb(this);return this});p("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var fc=/^([^:]+):(name|visIdx|visible)$/,Xb=function(a,b,
10022c,d,e){for(var c=[],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));return c};p("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=cb(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return bb("column",e,function(a){var b=Qb(a);if(a==="")return X(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Da(c,f);return h.map(g,function(b,f){return a(f,Xb(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(fc):
10023"";if(k)switch(k[2]){case "visIdx":case "visible":b=parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[$(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},
100241);c.selector.cols=a;c.selector.opts=b;return c});t("columns().header()","column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});t("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});t("columns().data()","column().data()",function(){return this.iterator("column-rows",Xb,1)});t("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},
100251)});t("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ja(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});t("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ja(a.aoData,e,"anCells",b)},1)});t("columns().visible()","column().visible()",function(a,b){var c=this.iterator("column",function(b,c){if(a===k)return b.aoColumns[c].bVisible;var f=b.aoColumns,g=f[c],j=b.aoData,
10026i,n,l;if(a!==k&&g.bVisible!==a){if(a){var m=h.inArray(!0,D(f,"bVisible"),c+1);i=0;for(n=j.length;i<n;i++)l=j[i].nTr,f=j[i].anCells,l&&l.insertBefore(f[c],f[m]||null)}else h(D(b.aoData,"anCells",c)).detach();g.bVisible=a;fa(b,b.aoHeader);fa(b,b.aoFooter);za(b)}});a!==k&&(this.iterator("column",function(c,e){s(c,null,"column-visibility",[c,e,a,b])}),(b===k||b)&&this.columns.adjust());return c});t("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===
10027a?aa(b,c):c},1)});p("columns.adjust()",function(){return this.iterator("table",function(a){Z(a)},1)});p("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return $(c,b);
vendor: 5,487 bytes, lines 10027-10038
10027if("fromData"===a||"toVisible"===a)return aa(c,b)}});p("column()",function(a,b){return db(this.columns(a,b))});p("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",
10028function(b){var d=a,e=cb(c),f=b.aoData,g=Da(b,e),i=Tb(ja(f,g,"anCells")),j=h([].concat.apply([],i)),l,n=b.aoColumns.length,m,p,t,u,s,v;return bb("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){m=[];p=0;for(t=g.length;p<t;p++){l=g[p];for(u=0;u<n;u++){s={row:l,column:u};if(c){v=f[l];a(s,B(b,l,u),v.anCells?v.anCells[u]:null)&&m.push(s)}else m.push(s)}}return m}if(h.isPlainObject(a))return[a];c=j.filter(a).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();
10029if(c.length||!a.nodeName)return c;v=h(a).closest("*[data-dt-row]");return v.length?[{row:v.data("dt-row"),column:v.data("dt-column")}]:[]},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,j,i,n,l=this.iterator("table",function(a,b){f=[];g=0;for(j=e[b].length;g<j;g++){i=0;for(n=d[b].length;i<n;i++)f.push({row:e[b][g],column:d[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});t("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=
10030a.aoData[b])&&a.anCells?a.anCells[c]:k},1)});p("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});t("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});t("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});t("cells().indexes()","cell().index()",function(){return this.iterator("cell",
10031function(a,b,c){return{row:b,column:c,columnVisible:aa(a,c)}},1)});t("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){da(b,c,a,d)})});p("cell()",function(a,b,c){return db(this.cells(a,b,c))});p("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;lb(b[0],c[0].row,c[0].column,a);da(b[0],c[0].row,"data",c[0].column);return this});p("order()",function(a,b){var c=this.context;if(a===
10032k)return 0!==c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:a.length&&!h.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});p("order.listener()",function(a,b,c){return this.iterator("table",function(d){Oa(d,a,b,c)})});p("order.fixed()",function(a){if(!a){var b=this.context,b=b.length?b[0].aaSortingFixed:k;return h.isArray(b)?{pre:b}:b}return this.iterator("table",function(b){b.aaSortingFixed=h.extend(!0,{},a)})});p(["columns().order()",
10033"column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});p("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&ga(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});t("columns().search()","column().search()",function(a,
10034b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ga(e,e.oPreviousSearch,1))})});p("state()",function(){return this.context.length?this.context[0].oSavedState:null});p("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});p("state.loaded()",function(){return this.context.length?
10035this.context[0].oLoadedState:null});p("state.save()",function(){return this.iterator("table",function(a){za(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;if(a instanceof m.Api)return!0;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?
10036h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new u(c):c};m.camelToHungarian=J;p("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){p(b+"()",function(){var a=Array.prototype.slice.call(arguments);
10037a[0]=h.map(a[0].split(/\s/),function(a){return!a.match(/\.dt\b/)?a+".dt":a}).join(" ");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});p("clear()",function(){return this.iterator("table",function(a){pa(a)})});p("settings()",function(){return new u(this.context,this.context)});p("init()",function(){var a=this.context;return a.length?a[0].oInit:null});p("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});p("destroy()",function(a){a=a||
10038!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasse
vendor: 10,050 bytes, lines 10038-10057
10038s,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),p;b.bDestroying=!0;s(b,"aoDestroyCallback","destroy",[b]);a||(new u(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");h(E).off(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));
10039b.aaSorting=[];b.aaSortingFixed=[];ya(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);b.bJUI&&(h("th span."+d.sSortIcon+", td span."+d.sSortIcon,g).detach(),h("th, td",g).each(function(){var a=h("div."+d.sSortJUIWrapper,this);h(this).append(a.contents());a.detach()}));f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",
10040b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%p])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,1)})});h.each(["column","row","cell"],function(a,b){p(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,m){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,m)})})});p("i18n()",function(a,b,c){var d=this.context[0],a=R(a)(d.oLanguage);a===k&&(a=b);c!==
10041k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.13";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,
10042mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bJQueryUI:!1,bLengthChange:!0,bPaginate:!0,bProcessing:!1,
10043bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?
10044sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",
10045sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},
10046oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};Y(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,
10047sType:null,sWidth:null};Y(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],
10048aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,
10049searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,bJUI:null,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],
10050fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,
10051aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=x={buttons:{},classes:{},build:"bs/dt-1.10.13/b-1.2.4/b-colvis-1.2.4/b-print-1.2.4/cr-1.3.2/fc-3.2.2/fh-3.1.2/r-2.1.0",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(x,{afnFiltering:x.search,aTypes:x.type.detect,ofnSearch:x.type.search,oSort:x.type.order,afnSortData:x.order,aoFeatures:x.feature,
10052oApi:x.internal,oStdClasses:x.classes,oPagination:x.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",
10053sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",
10054sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Ea="",Ea="",G=Ea+"ui-state-default",ka=Ea+"css_right ui-icon ui-icon-",Yb=Ea+"fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix";h.extend(m.ext.oJUIClasses,m.ext.classes,{sPageButton:"fg-button ui-button "+G,sPageButtonActive:"ui-state-disabled",sPageButtonDisabled:"ui-state-disabled",sPaging:"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi ui-buttonset-multi paging_",sSortAsc:G+" sorting_asc",
10055sSortDesc:G+" sorting_desc",sSortable:G+" sorting",sSortableAsc:G+" sorting_asc_disabled",sSortableDesc:G+" sorting_desc_disabled",sSortableNone:G+" sorting_disabled",sSortJUIAsc:ka+"triangle-1-n",sSortJUIDesc:ka+"triangle-1-s",sSortJUI:ka+"carat-2-n-s",sSortJUIAscAllowed:ka+"carat-1-n",sSortJUIDescAllowed:ka+"carat-1-s",sSortJUIWrapper:"DataTables_sort_wrapper",sSortIcon:"DataTables_sort_icon",sScrollHead:"dataTables_scrollHead "+G,sScrollFoot:"dataTables_scrollFoot "+G,sHeaderTH:G,sFooterTH:G,sJUIHeader:Yb+
10056" ui-corner-tl ui-corner-tr",sJUIFooter:Yb+" ui-corner-bl ui-corner-br"});var Nb=m.ext.pager;h.extend(Nb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ia(a,b)]},simple_numbers:function(a,b){return["previous",ia(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ia(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ia(a,b),"last"]},_numbers:ia,numbers_length:7});h.extend(!0,m.ext.renderer,
10057{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},m,l,p=0,r=function(b,d){var k,t,u,s,v=function(b){Va(a,b.data.action,true)};k=0;for(t=d.length;k<t;k++){s=d[k];if(h.isArray(s)){u=h("<"+(s.DT_el||"div")+"/>").appendTo(b);r(u,s)}else{m=null;l="";switch(s){case "ellipsis":b.append('<span class="ellipsis">&#x2026;
vendor: 6,635 bytes, lines 10057-10077
10057</span>');break;case "first":m=j.sFirst;l=s+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":m=j.sPrevious;l=s+(e>0?"":" "+
10058g.sPageButtonDisabled);break;case "next":m=j.sNext;l=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":m=j.sLast;l=s+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:m=s+1;l=e===s?g.sPageButtonActive:""}if(m!==null){u=h("<a>",{"class":g.sPageButton+" "+l,"aria-controls":a.sTableId,"aria-label":i[s],"data-dt-idx":p,tabindex:a.iTabIndex,id:c===0&&typeof s==="string"?a.sTableId+"_"+s:null}).html(m).appendTo(b);Ya(u,{action:s},v);p++}}}},t;try{t=h(b).find(H.activeElement).data("dt-idx")}catch(u){}r(h(b).empty(),
10059d);t!==k&&h(b).find("[data-dt-idx="+t+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return ab(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&!cc.test(a))return null;var b=Date.parse(a);return null!==b&&!isNaN(b)||M(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return ab(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Sb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Sb(a,c,!0)?"html-num-fmt"+
10060c:null},function(a){return M(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return M(a)?a:"string"===typeof a?a.replace(Pb," ").replace(Ca,""):""},string:function(a){return M(a)?a:"string"===typeof a?a.replace(Pb," "):a}});var Ba=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Rb(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(x.type.order,{"date-pre":function(a){return Date.parse(a)||-Infinity},
10061"html-pre":function(a){return M(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return M(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});fb("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]==
10062"asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+
10063d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Zb=function(a){return"string"===typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;"):a};m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Zb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):
10064"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Zb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Ob,_fnBuildAjax:ua,_fnAjaxUpdate:nb,_fnAjaxParameters:wb,_fnAjaxUpdateDraw:xb,_fnAjaxDataSrc:va,_fnAddColumn:Ga,_fnColumnOptions:la,_fnAdjustColumnSizing:Z,_fnVisibleToColumnIndex:$,_fnColumnIndexToVisible:aa,_fnVisbleColumns:ba,_fnGetColumns:na,_fnColumnTypes:Ia,_fnApplyColumnDefs:kb,_fnHungarianMap:Y,_fnCamelToHungarian:J,_fnLanguageCompat:Fa,
10065_fnBrowserDetect:ib,_fnAddData:N,_fnAddTr:oa,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:lb,_fnSplitObjNotation:La,_fnGetObjectDataFn:R,_fnSetObjectDataFn:S,_fnGetDataMaster:Ma,_fnClearTable:pa,_fnDeleteIndex:qa,_fnInvalidate:da,_fnGetRowElements:Ka,_fnCreateTr:Ja,_fnBuildHead:mb,_fnDrawHead:fa,_fnDraw:O,_fnReDraw:T,_fnAddOptionsHtml:pb,_fnDetectHeader:ea,
10066_fnGetUniqueThs:ta,_fnFeatureHtmlFilter:rb,_fnFilterComplete:ga,_fnFilterCustom:Ab,_fnFilterColumn:zb,_fnFilter:yb,_fnFilterCreateSearch:Ra,_fnEscapeRegex:Sa,_fnFilterData:Bb,_fnFeatureHtmlInfo:ub,_fnUpdateInfo:Eb,_fnInfoMacros:Fb,_fnInitialise:ha,_fnInitComplete:wa,_fnLengthChange:Ta,_fnFeatureHtmlLength:qb,_fnFeatureHtmlPaginate:vb,_fnPageChange:Va,_fnFeatureHtmlProcessing:sb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:tb,_fnScrollDraw:ma,_fnApplyToChildren:I,_fnCalculateColumnWidths:Ha,_fnThrottle:Qa,
10067_fnConvertToWidth:Gb,_fnGetWidestNode:Hb,_fnGetMaxLenString:Ib,_fnStringToCss:v,_fnSortFlatten:W,_fnSort:ob,_fnSortAria:Kb,_fnSortListener:Xa,_fnSortAttachListener:Oa,_fnSortingClasses:ya,_fnSortData:Jb,_fnSaveState:za,_fnLoadState:Lb,_fnSettingsFromNode:Aa,_fnLog:K,_fnMap:F,_fnBindAction:Ya,_fnCallbackReg:z,_fnCallbackFire:s,_fnLengthOverflow:Ua,_fnRenderer:Pa,_fnDataSource:y,_fnRowAttributes:Na,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=
10068m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable});
10069
10070
10071/*!
10072 DataTables Bootstrap 3 integration
10073 ©2011-2015 SpryMedia Ltd - datatables.net/license
10074*/
10075(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-6'l><'col-sm-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-5'i><'col-sm-7'p>>",renderer:"bootstrap"});b.extend(f.ext.classes,
10076{sWrapper:"dataTables_wrapper form-inline dt-bootstrap",sFilterInput:"form-control input-sm",sLengthSelect:"form-control input-sm",sProcessing:"dataTables_processing panel panel-default"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&o.page()!=a.data.action&&o.page(a.data.action).draw("page")};
10077l=0;for(h=f.length;l<h;l++)if(c=f[l],b.isArray(c))q(d,c);else{g=e="";switch(c){case "ellipsis":e="&#x2026;";g="disabled";break;case "first":e=k.sFirst;
10077g=c+(0<j?"":" disabled");break;case "previous":e=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":e=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":e=k.sLast;g=c+(j<n-1?"":" disabled");break;default:e=c+1,g=j===c?"active":""}e&&(i=b("<li>",{"class":t.sPageButton+" "+g,id:0===r&&"string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#",
10078"aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f});
10079
10080
10081/*!
10082 Buttons for DataTables 1.2.4
10083 ©2016 SpryMedia Ltd - datatables.net/license
10084*/
10085(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(n){return d(n,window,document)}):"object"===typeof exports?module.exports=function(n,o){n||(n=window);if(!o||!o.fn.dataTable)o=require("datatables.net")(n,o).$;return d(o,n,n.document)}:d(jQuery,window,document)})(function(d,n,o,m){var i=d.fn.dataTable,u=0,v=0,j=i.ext.buttons,l=function(a,b){!0===b&&(b={});d.isArray(b)&&(b={buttons:b});this.c=d.extend(!0,{},l.defaults,b);b.buttons&&(this.c.buttons=b.buttons);
10086this.s={dt:new i.Api(a),buttons:[],listenKeys:"",namespace:"dtb"+u++};this.dom={container:d("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)};this._constructor()};d.extend(l.prototype,{action:function(a,b){var c=this._nodeToButton(a);if(b===m)return c.conf.action;c.conf.action=b;return this},active:function(a,b){var c=this._nodeToButton(a),e=this.c.dom.button.active,c=d(c.node);if(b===m)return c.hasClass(e);c.toggleClass(e,b===m?!0:b);return this},add:function(a,b){var c=
10087this.s.buttons;if("string"===typeof b){for(var e=b.split("-"),c=this.s,d=0,h=e.length-1;d<h;d++)c=c.buttons[1*e[d]];c=c.buttons;b=1*e[e.length-1]}this._expandButton(c,a,!1,b);this._draw();return this},container:function(){return this.dom.container},disable:function(a){a=this._nodeToButton(a);d(a.node).addClass(this.c.dom.button.disabled);return this},destroy:function(){d("body").off("keyup."+this.s.namespace);var a=this.s.buttons.slice(),b,c;b=0;for(c=a.length;b<c;b++)this.remove(a[b].node);this.dom.container.remove();
10088a=this.s.dt.settings()[0];b=0;for(c=a.length;b<c;b++)if(a.inst===this){a.splice(b,1);break}return this},enable:function(a,b){if(!1===b)return this.disable(a);var c=this._nodeToButton(a);d(c.node).removeClass(this.c.dom.button.disabled);return this},name:function(){return this.c.name},node:function(a){a=this._nodeToButton(a);return d(a.node)},remove:function(a){var b=this._nodeToButton(a),c=this._nodeToHost(a),e=this.s.dt;if(b.buttons.length)for(var g=b.buttons.length-1;0<=g;g--)this.remove(b.buttons[g].node);
10089b.conf.destroy&&b.conf.destroy.call(e.button(a),e,d(a),b.conf);this._removeKey(b.conf);d(b.node).remove();a=d.inArray(b,c);c.splice(a,1);return this},text:function(a,b){var c=this._nodeToButton(a),e=this.c.dom.collection.buttonLiner,e=c.inCollection&&e&&e.tag?e.tag:this.c.dom.buttonLiner.tag,g=this.s.dt,h=d(c.node),f=function(a){return"function"===typeof a?a(g,h,c.conf):a};if(b===m)return f(c.conf.text);c.conf.text=b;e?h.children(e).html(f(b)):h.html(f(b));return this},_constructor:function(){var a=
10090this,b=this.s.dt,c=b.settings()[0],e=this.c.buttons;c._buttons||(c._buttons=[]);c._buttons.push({inst:this,name:this.c.name});for(var c=0,g=e.length;c<g;c++)this.add(e[c]);b.on("destroy",function(){a.destroy()});d("body").on("keyup."+this.s.namespace,function(b){if(!o.activeElement||o.activeElement===o.body){var c=String.fromCharCode(b.keyCode).toLowerCase();a.s.listenKeys.toLowerCase().indexOf(c)!==-1&&a._keypress(c,b)}})},_addKey:function(a){a.key&&(this.s.listenKeys+=d.isPlainObject(a.key)?a.key.key:
10091a.key)},_draw:function(a,b){a||(a=this.dom.container,b=this.s.buttons);a.children().detach();for(var c=0,e=b.length;c<e;c++)a.append(b[c].inserter),b[c].buttons&&b[c].buttons.length&&this._draw(b[c].collection,b[c].buttons)},_expandButton:function(a,b,c,e){for(var g=this.s.dt,h=0,b=!d.isArray(b)?[b]:b,f=0,r=b.length;f<r;f++){var k=this._resolveExtends(b[f]);if(k)if(d.isArray(k))this._expandButton(a,k,c,e);else{var p=this._buildButton(k,c);if(p){e!==m?(a.splice(e,0,p),e++):a.push(p);if(p.conf.buttons){var s=
10092this.c.dom.collection;p.collection=d("<"+s.tag+"/>").addClass(s.className);p.conf._collection=p.collection;this._expandButton(p.buttons,p.conf.buttons,!0,e)}k.init&&k.init.call(g.button(p.node),g,d(p.node),k);h++}}}},_buildButton:function(a,b){var c=this.c.dom.button,e=this.c.dom.buttonLiner,g=this.c.dom.collection,h=this.s.dt,f=function(b){return"function"===typeof b?b(h,k,a):b};b&&g.button&&(c=g.button);b&&g.buttonLiner&&(e=g.buttonLiner);if(a.available&&!a.available(h,a))return!1;var r=function(a,
10093b,c,e){e.action.call(b.button(c),a,b,c,e);d(b.table().node()).triggerHandler("buttons-action.dt",[b.button(c),b,c,e])},k=d("<"+c.tag+"/>").addClass(c.className).attr("tabindex",this.s.dt.settings()[0].iTabIndex).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(b){b.preventDefault();!k.hasClass(c.disabled)&&a.action&&r(b,h,k,a);k.blur()}).on("keyup.dtb",function(b){b.keyCode===13&&!k.hasClass(c.disabled)&&a.action&&r(b,h,k,a)});"a"===c.tag.toLowerCase()&&k.attr("href","#");
10094e.tag?(g=d("<"+e.tag+"/>").html(f(a.text)).addClass(e.className),"a"===e.tag.toLowerCase()&&g.attr("href","#"),k.append(g)):k.html(f(a.text));!1===a.enabled&&k.addClass(c.disabled);a.className&&k.addClass(a.className);
10094a.titleAttr&&k.attr("title",a.titleAttr);a.namespace||(a.namespace=".dt-button-"+v++);e=(e=this.c.dom.buttonContainer)&&e.tag?d("<"+e.tag+"/>").addClass(e.className).append(k):k;this._addKey(a);return{conf:a,node:k.get(0),inserter:e,buttons:[],inCollection:b,collection:null}},_nodeToButton:function(a,
10095b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b[c];if(b[c].buttons.length){var d=this._nodeToButton(a,b[c].buttons);if(d)return d}}},_nodeToHost:function(a,b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b;if(b[c].buttons.length){var d=this._nodeToHost(a,b[c].buttons);if(d)return d}}},_keypress:function(a,b){var c=function(e){for(var g=0,h=e.length;g<h;g++){var f=e[g].conf,r=e[g].node;if(f.key)if(f.key===a)d(r).click();else if(d.isPlainObject(f.key)&&
10096f.key.key===a&&(!f.key.shiftKey||b.shiftKey))if(!f.key.altKey||b.altKey)if(!f.key.ctrlKey||b.ctrlKey)(!f.key.metaKey||b.metaKey)&&d(r).click();e[g].buttons.length&&c(e[g].buttons)}};c(this.s.buttons)},_removeKey:function(a){if(a.key){var b=d.isPlainObject(a.key)?a.key.key:a.key,a=this.s.listenKeys.split(""),b=d.inArray(b,a);a.splice(b,1);this.s.listenKeys=a.join("")}},_resolveExtends:function(a){for(var b=this.s.dt,c,e,g=function(c){for(var e=0;!d.isPlainObject(c)&&!d.isArray(c);){if(c===m)return;
10097if("function"===typeof c){if(c=c(b,a),!c)return!1}else if("string"===typeof c){if(!j[c])throw"Unknown button type: "+c;c=j[c]}e++;if(30<e)throw"Buttons: Too many iterations";}return d.isArray(c)?c:d.extend({},c)},a=g(a);a&&a.extend;){if(!j[a.extend])throw"Cannot extend unknown button type: "+a.extend;var h=g(j[a.extend]);if(d.isArray(h))return h;if(!h)return!1;c=h.className;a=d.extend({},h,a);c&&a.className!==c&&(a.className=c+" "+a.className);var f=a.postfixButtons;if(f){a.buttons||(a.buttons=[]);
10098c=0;for(e=f.length;c<e;c++)a.buttons.push(f[c]);a.postfixButtons=null}if(f=a.prefixButtons){a.buttons||(a.buttons=[]);c=0;for(e=f.length;c<e;c++)a.buttons.splice(c,0,f[c]);a.prefixButtons=null}a.extend=h.extend}return a}});l.background=function(a,b,c){c===m&&(c=400);a?d("<div/>").addClass(b).css("display","none").appendTo("body").fadeIn(c):d("body > div."+b).fadeOut(c,function(){d(this).removeClass(b).remove()})};l.instanceSelector=function(a,b){if(!a)return d.map(b,function(a){return a.inst});var c=
10099[],e=d.map(b,function(a){return a.name}),g=function(a){if(d.isArray(a))for(var f=0,r=a.length;f<r;f++)g(a[f]);else"string"===typeof a?-1!==a.indexOf(",")?g(a.split(",")):(a=d.inArray(d.trim(a),e),-1!==a&&c.push(b[a].inst)):"number"===typeof a&&c.push(b[a].inst)};g(a);return c};l.buttonSelector=function(a,b){for(var c=[],e=function(a,b,c){for(var d,g,f=0,h=b.length;f<h;f++)if(d=b[f])g=c!==m?c+f:f+"",a.push({node:d.node,name:d.conf.name,idx:g}),d.buttons&&e(a,d.buttons,g+"-")},g=function(a,b){var f,
10100h,i=[];e(i,b.s.buttons);f=d.map(i,function(a){return a.node});if(d.isArray(a)||a instanceof d){f=0;for(h=a.length;f<h;f++)g(a[f],b)}else if(null===a||a===m||"*"===a){f=0;for(h=i.length;f<h;f++)c.push({inst:b,node:i[f].node})}else if("number"===typeof a)c.push({inst:b,node:b.s.buttons[a].node});else if("string"===typeof a)if(-1!==a.indexOf(",")){i=a.split(",");f=0;for(h=i.length;f<h;f++)g(d.trim(i[f]),b)}else if(a.match(/^\d+(\-\d+)*$/))f=d.map(i,function(a){return a.idx}),c.push({inst:b,node:i[d.inArray(a,
10101f)].node});else if(-1!==a.indexOf(":name")){var j=a.replace(":name","");f=0;for(h=i.length;f<h;f++)i[f].name===j&&c.push({inst:b,node:i[f].node})}else d(f).filter(a).each(function(){c.push({inst:b,node:this})});else"object"===typeof a&&a.nodeName&&(i=d.inArray(a,f),-1!==i&&c.push({inst:b,node:f[i]}))},h=0,f=a.length;h<f;h++)g(b,a[h]);return c};l.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{tag:"div",className:"dt-button-collection"},
10102button:{tag:"a",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"span",className:""}}};l.version="1.2.4";d.extend(j,{collection:{text:function(a){return a.i18n("buttons.collection","Collection")},className:"buttons-collection",action:function(a,b,c,e){var a=c.offset(),g=d(b.table().container()),h=!1;d("div.dt-button-background").length&&(h=d(".dt-button-collection").offset(),d("body").trigger("click.dtb-collection"));e._collection.addClass(e.collectionLayout).css("display",
10103"none").appendTo("body").fadeIn(e.fade);var f=e._collection.css("position");
10103h&&"absolute"===f?e._collection.css({top:h.top,left:h.left}):"absolute"===f?(e._collection.css({top:a.top+c.outerHeight(),left:a.left}),c=a.left+e._collection.outerWidth(),g=g.offset().left+g.width(),c>g&&e._collection.css("left",a.left-(c-g))):(a=e._collection.height()/2,a>d(n).height()/2&&(a=d(n).height()/2),e._collection.css("marginTop",-1*a));e.background&&l.background(!0,e.backgroundClassName,e.fade);setTimeout(function(){d("div.dt-button-background").on("click.dtb-collection",
10104function(){});d("body").on("click.dtb-collection",function(a){var c=d.fn.addBack?"addBack":"andSelf";if(!d(a.target).parents()[c]().filter(e._collection).length){e._collection.fadeOut(e.fade,function(){e._collection.detach()});d("div.dt-button-background").off("click.dtb-collection");l.background(false,e.backgroundClassName,e.fade);d("body").off("click.dtb-collection");b.off("buttons-action.b-internal")}})},10);if(e.autoClose)b.on("buttons-action.b-internal",function(){d("div.dt-button-background").click()})},
10105background:!0,collectionLayout:"",backgroundClassName:"dt-button-background",autoClose:!1,fade:400},copy:function(a,b){if(j.copyHtml5)return"copyHtml5";if(j.copyFlash&&j.copyFlash.available(a,b))return"copyFlash"},csv:function(a,b){if(j.csvHtml5&&j.csvHtml5.available(a,b))return"csvHtml5";if(j.csvFlash&&j.csvFlash.available(a,b))return"csvFlash"},excel:function(a,b){if(j.excelHtml5&&j.excelHtml5.available(a,b))return"excelHtml5";if(j.excelFlash&&j.excelFlash.available(a,b))return"excelFlash"},pdf:function(a,
10106b){if(j.pdfHtml5&&j.pdfHtml5.available(a,b))return"pdfHtml5";if(j.pdfFlash&&j.pdfFlash.available(a,b))return"pdfFlash"},pageLength:function(a){var a=a.settings()[0].aLengthMenu,b=d.isArray(a[0])?a[0]:a,c=d.isArray(a[0])?a[1]:a,e=function(a){return a.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},a.page.len())};return{extend:"collection",text:e,className:"buttons-page-length",autoClose:!0,buttons:d.map(b,function(a,b){return{text:c[b],className:"button-page-length",action:function(b,
10107c){c.page.len(a).draw()},init:function(b,c,e){var d=this,c=function(){d.active(b.page.len()===a)};b.on("length.dt"+e.namespace,c);c()},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}),init:function(a,b,c){var d=this;a.on("length.dt"+c.namespace,function(){d.text(e(a))})},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}});i.Api.register("buttons()",function(a,b){b===m&&(b=a,a=m);this.selector.buttonGroup=a;var c=this.iterator(!0,"table",function(c){if(c._buttons)return l.buttonSelector(l.instanceSelector(a,
10108c._buttons),b)},!0);c._groupSelector=a;return c});i.Api.register("button()",function(a,b){var c=this.buttons(a,b);1<c.length&&c.splice(1,c.length);return c});i.Api.registerPlural("buttons().active()","button().active()",function(a){return a===m?this.map(function(a){return a.inst.active(a.node)}):this.each(function(b){b.inst.active(b.node,a)})});i.Api.registerPlural("buttons().action()","button().action()",function(a){return a===m?this.map(function(a){return a.inst.action(a.node)}):this.each(function(b){b.inst.action(b.node,
10109a)})});i.Api.register(["buttons().enable()","button().enable()"],function(a){return this.each(function(b){b.inst.enable(b.node,a)})});i.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(a){a.inst.disable(a.node)})});i.Api.registerPlural("buttons().nodes()","button().node()",function(){var a=d();d(this.each(function(b){a=a.add(b.inst.node(b.node))}));return a});i.Api.registerPlural("buttons().text()","button().text()",function(a){return a===m?this.map(function(a){return a.inst.text(a.node)}):
10110this.each(function(b){b.inst.text(b.node,a)})});i.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(a){a.inst.node(a.node).trigger("click")})});i.Api.registerPlural("buttons().containers()","buttons().container()",function(){var a=d(),b=this._groupSelector;this.iterator(!0,"table",function(c){if(c._buttons)for(var c=l.instanceSelector(b,c._buttons),d=0,g=c.length;d<g;d++)a=a.add(c[d].container())});return a});i.Api.register("button().add()",function(a,
10111b){var c=this.context;c.length&&(c=l.instanceSelector(this._groupSelector,c[0]._buttons),c.length&&c[0].add(b,a));return this.button(this._groupSelector,a)});i.Api.register("buttons().destroy()",function(){this.pluck("inst").unique().each(function(a){a.destroy()});return this});i.Api.registerPlural("buttons().remove()","buttons().remove()",function(){this.each(function(a){a.inst.remove(a.node)});return this});var q;i.Api.register("buttons.info()",function(a,b,c){var e=this;if(!1===a)return d("#datatables_buttons_info").fadeOut(function(){d(this).remove()}),
10112clearTimeout(q),q=null,this;q&&clearTimeout(q);d("#datatables_buttons_info").length&&d("#datatables_buttons_info").remove();d('<div id="datatables_buttons_info" class="dt-button-info"/>').html(a?"<h2>"+a+"</h2>":"").append(d("<div/>")["string"===typeof b?"html":"append"](b)).css("display","none").appendTo("body").fadeIn();c!==m&&0!==c&&(q=setTimeout(function(){e.buttons.info(!1)},c));return this});
10112i.Api.register("buttons.exportData()",function(a){if(this.context.length){for(var b=new i.Api(this.context[0]),
10113c=d.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,trim:!0,format:{header:function(a){return e(a)},footer:function(a){return e(a)},body:function(a){return e(a)}}},a),e=function(a){if("string"!==typeof a)return a;c.stripHtml&&(a=a.replace(/<[^>]*>/g,""));c.trim&&(a=a.replace(/^\s+|\s+$/g,""));c.stripNewlines&&(a=a.replace(/\n/g," "));c.decodeEntities&&(t.innerHTML=a,a=t.value);return a},a=b.columns(c.columns).indexes().map(function(a){var d=
10114b.column(a).header();return c.format.header(d.innerHTML,a,d)}).toArray(),g=b.table().footer()?b.columns(c.columns).indexes().map(function(a){var d=b.column(a).footer();return c.format.footer(d?d.innerHTML:"",a,d)}).toArray():null,h=b.rows(c.rows,c.modifier).indexes().toArray(),f=b.cells(h,c.columns),h=f.render(c.orthogonal).toArray(),f=f.nodes().toArray(),j=a.length,k=0<j?h.length/j:0,l=Array(k),m=0,n=0;n<k;n++){for(var o=Array(j),q=0;q<j;q++)o[q]=c.format.body(h[m],n,q,f[m]),m++;l[n]=o}return{header:a,
10115footer:g,body:l}}});var t=d("<textarea/>")[0];d.fn.dataTable.Buttons=l;d.fn.DataTable.Buttons=l;d(o).on("init.dt plugin-init.dt",function(a,b){if("dt"===a.namespace){var c=b.oInit.buttons||i.defaults.buttons;c&&!b._buttons&&(new l(b,c)).container()}});i.ext.feature.push({fnInit:function(a){var a=new i.Api(a),b=a.init().buttons||i.defaults.buttons;return(new l(a,b)).container()},cFeature:"B"});return l});
10116
10117
10118/*!
10119 Bootstrap integration for DataTables' Buttons
10120 ©2016 SpryMedia Ltd - datatables.net/license
10121*/
10122(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs")(a,b).$;b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group"},
10123button:{className:"btn btn-default"},collection:{tag:"ul",className:"dt-button-collection dropdown-menu",button:{tag:"li",className:"dt-button"},buttonLiner:{tag:"a",className:""}}}});a.ext.buttons.collection.text=function(a){return a.i18n("buttons.collection",'Collection <span class="caret"/>')};return a.Buttons});
10124
10125
10126(function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(d){return g(d,window,document)}):"object"===typeof exports?module.exports=function(d,e){d||(d=window);if(!e||!e.fn.dataTable)e=require("datatables.net")(d,e).$;e.fn.dataTable.Buttons||require("datatables.net-buttons")(d,e);return g(e,d,d.document)}:g(jQuery,window,document)})(function(g,d,e,h){d=g.fn.dataTable;g.extend(d.ext.buttons,{colvis:function(a,b){return{extend:"collection",
10127text:function(a){return a.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",buttons:[{extend:"columnsToggle",columns:b.columns}]}},columnsToggle:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnToggle",columns:a}}).toArray()},columnToggle:function(a,b){return{extend:"columnVisibility",columns:b.columns}},columnsVisibility:function(a,b){return a.columns(b.columns).indexes().map(function(a){return{extend:"columnVisibility",columns:a,visibility:b.visibility}}).toArray()},
10128columnVisibility:{columns:h,text:function(a,b,c){return c._columnText(a,c.columns)},className:"buttons-columnVisibility",action:function(a,b,c,f){a=b.columns(f.columns);b=a.visible();a.visible(f.visibility!==h?f.visibility:!(b.length&&b[0]))},init:function(a,b,c){var f=this;a.on("column-visibility.dt"+c.namespace,function(b,d){d.bDestroying||f.active(a.column(c.columns).visible())}).on("column-reorder.dt"+c.namespace,function(b,d,e){1===a.columns(c.columns).count()&&("number"===typeof c.columns&&
10129(c.columns=e.mapping[c.columns]),b=a.column(c.columns),f.text(c._columnText(a,c.columns)),f.active(b.visible()))});this.active(a.column(c.columns).visible())},destroy:function(a,b,c){a.off("column-visibility.dt"+c.namespace).off("column-reorder.dt"+c.namespace)},_columnText:function(a,b){var c=a.column(b).index();return a.settings()[0].aoColumns[c].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,"")}},colvisRestore:{className:"buttons-colvisRestore",text:function(a){return a.i18n("buttons.colvisRestore",
10130"Restore visibility")},init:function(a,b,c){c._visOriginal=a.columns().indexes().map(function(b){return a.column(b).visible()}).toArray()},action:function(a,b,c,d){b.columns().every(function(a){a=b.colReorder&&b.colReorder.transpose?b.colReorder.transpose(a,"toOriginal"):a;this.visible(d._visOriginal[a])})}},colvisGroup:{className:"buttons-colvisGroup",action:function(a,b,c,d){b.columns(d.show).visible(!0,!1);b.columns(d.hide).visible(!1,!1);b.columns.adjust()},show:[],hide:[]}});return d.Buttons});
10131
10132
10133(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(f){return e(f,window,document)}):"object"===typeof exports?module.exports=function(f,c){f||(f=window);if(!c||!c.fn.dataTable)c=require("datatables.net")(f,c).$;c.fn.dataTable.Buttons||require("datatables.net-buttons")(f,c);return e(c,f,f.document)}:e(jQuery,window,document)})(function(e,f,c){var i=e.fn.dataTable,h=c.createElement("a");i.ext.buttons.print={className:"buttons-print",
10134text:function(b){return b.i18n("buttons.print","Print")},action:function(b,c,i,d){var a=c.buttons.exportData(d.exportOptions),k=function(b,a){for(var c="<tr>",d=0,e=b.length;d<e;d++)c+="<"+a+">"+b[d]+"</"+a+">";return c+"</tr>"},b='<table class="'+c.table().node().className+'">';d.header&&(b+="<thead>"+k(a.header,"th")+"</thead>");for(var b=b+"<tbody>",l=0,m=a.body.length;l<m;l++)b+=k(a.body[l],"td");b+="</tbody>";d.footer&&a.footer&&(b+="<tfoot>"+k(a.footer,"th")+"</tfoot>");var g=f.open("",""),
10135a=d.title;"function"===typeof a&&(a=a());
10135-1!==a.indexOf("*")&&(a=a.replace("*",e("title").text()));g.document.close();var j="<title>"+a+"</title>";e("style, link").each(function(){var c=j,b=e(this).clone()[0],a;"link"===b.nodeName.toLowerCase()&&(h.href=b.href,a=h.host,-1===a.indexOf("/")&&0!==h.pathname.indexOf("/")&&(a+="/"),b.href=h.protocol+"//"+a+h.pathname+h.search);j=c+b.outerHTML});try{g.document.head.innerHTML=j}catch(n){e(g.document.head).html(j)}g.document.body.innerHTML="<h1>"+a+"</h1><div>"+
10136("function"===typeof d.message?d.message(c,i,d):d.message)+"</div>"+b;e(g.document.body).addClass("dt-print-view");d.customize&&d.customize(g);setTimeout(function(){d.autoPrint&&(g.print(),g.close())},250)},title:"*",message:"",exportOptions:{},header:!0,footer:!1,autoPrint:!0,customize:null};return i.Buttons});
10137
10138
10139/*!
10140 ColReorder 1.3.2
10141 ©2010-2015 SpryMedia Ltd - datatables.net/license
10142*/
10143(function(f){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(o){return f(o,window,document)}):"object"===typeof exports?module.exports=function(o,l){o||(o=window);if(!l||!l.fn.dataTable)l=require("datatables.net")(o,l).$;return f(l,o,o.document)}:f(jQuery,window,document)})(function(f,o,l,r){function q(a){for(var b=[],d=0,e=a.length;d<e;d++)b[a[d]]=d;return b}function p(a,b,d){b=a.splice(b,1)[0];a.splice(d,0,b)}function s(a,b,d){for(var e=[],f=0,c=a.childNodes.length;f<
10144c;f++)1==a.childNodes[f].nodeType&&e.push(a.childNodes[f]);b=e[b];null!==d?a.insertBefore(b,e[d]):a.appendChild(b)}var t=f.fn.dataTable;f.fn.dataTableExt.oApi.fnColReorder=function(a,b,d,e,g){var c,h,j,m,i,l=a.aoColumns.length,k;i=function(a,b,c){if(a[b]&&"function"!==typeof a[b]){var d=a[b].split("."),e=d.shift();isNaN(1*e)||(a[b]=c[1*e]+"."+d.join("."))}};if(b!=d)if(0>b||b>=l)this.oApi._fnLog(a,1,"ColReorder 'from' index is out of bounds: "+b);else if(0>d||d>=l)this.oApi._fnLog(a,1,"ColReorder 'to' index is out of bounds: "+
10145d);else{j=[];c=0;for(h=l;c<h;c++)j[c]=c;p(j,b,d);var n=q(j);c=0;for(h=a.aaSorting.length;c<h;c++)a.aaSorting[c][0]=n[a.aaSorting[c][0]];if(null!==a.aaSortingFixed){c=0;for(h=a.aaSortingFixed.length;c<h;c++)a.aaSortingFixed[c][0]=n[a.aaSortingFixed[c][0]]}c=0;for(h=l;c<h;c++){k=a.aoColumns[c];j=0;for(m=k.aDataSort.length;j<m;j++)k.aDataSort[j]=n[k.aDataSort[j]];k.idx=n[k.idx]}f.each(a.aLastSort,function(b,c){a.aLastSort[b].src=n[c.src]});c=0;for(h=l;c<h;c++)k=a.aoColumns[c],"number"==typeof k.mData?
10146k.mData=n[k.mData]:f.isPlainObject(k.mData)&&(i(k.mData,"_",n),i(k.mData,"filter",n),i(k.mData,"sort",n),i(k.mData,"type",n));if(a.aoColumns[b].bVisible){i=this.oApi._fnColumnIndexToVisible(a,b);m=null;for(c=d<b?d:d+1;null===m&&c<l;)m=this.oApi._fnColumnIndexToVisible(a,c),c++;j=a.nTHead.getElementsByTagName("tr");c=0;for(h=j.length;c<h;c++)s(j[c],i,m);if(null!==a.nTFoot){j=a.nTFoot.getElementsByTagName("tr");c=0;for(h=j.length;c<h;c++)s(j[c],i,m)}c=0;for(h=a.aoData.length;c<h;c++)null!==a.aoData[c].nTr&&
10147s(a.aoData[c].nTr,i,m)}p(a.aoColumns,b,d);c=0;for(h=l;c<h;c++)a.oApi._fnColumnOptions(a,c,{});p(a.aoPreSearchCols,b,d);c=0;for(h=a.aoData.length;c<h;c++){m=a.aoData[c];if(k=m.anCells){p(k,b,d);j=0;for(i=k.length;j<i;j++)k[j]&&k[j]._DT_CellIndex&&(k[j]._DT_CellIndex.column=j)}"dom"!==m.src&&f.isArray(m._aData)&&p(m._aData,b,d)}c=0;for(h=a.aoHeader.length;c<h;c++)p(a.aoHeader[c],b,d);if(null!==a.aoFooter){c=0;for(h=a.aoFooter.length;c<h;c++)p(a.aoFooter[c],b,d)}(g||g===r)&&f.fn.dataTable.Api(a).rows().invalidate();
10148c=0;for(h=l;c<h;c++)f(a.aoColumns[c].nTh).off("click.DT"),this.oApi._fnSortAttachListener(a,a.aoColumns[c].nTh,c);f(a.oInstance).trigger("column-reorder.dt",[a,{from:b,to:d,mapping:n,drop:e,iFrom:b,iTo:d,aiInvertMapping:n}])}};var i=function(a,b){var d=(new f.fn.dataTable.Api(a)).settings()[0];if(d._colReorder)return d._colReorder;!0===b&&(b={});var e=f.fn.dataTable.camelToHungarian;e&&(e(i.defaults,i.defaults,!0),e(i.defaults,b||{}));this.s={dt:null,init:f.extend(!0,{},i.defaults,b),fixed:0,fixedRight:0,
10149reorderCallback:null,mouse:{startX:-1,startY:-1,offsetX:-1,offsetY:-1,target:-1,targetIndex:-1,fromIndex:-1},aoTargets:[]};this.dom={drag:null,pointer:null};this.s.dt=d;this.s.dt._colReorder=this;this._fnConstruct();return this};f.extend(i.prototype,{fnReset:function(){this._fnOrderColumns(this.fnOrder());return this},fnGetCurrentOrder:function(){return this.fnOrder()},fnOrder:function(a,b){var d=[],e,g,c=this.s.dt.aoColumns;if(a===r){e=0;for(g=c.length;e<g;e++)d.push(c[e]._ColReorder_iOrigCol);return d}if(b){c=
10150this.fnOrder();e=0;for(g=a.length;e<g;e++)d.push(f.inArray(a[e],c));a=d}this._fnOrderColumns(q(a));return this},fnTranspose:function(a,b){b||(b="toCurrent");var d=this.fnOrder(),e=this.s.dt.aoColumns;return"toCurrent"===b?!f.isArray(a)?f.inArray(a,d):f.map(a,function(a){return f.inArray(a,d)}):!f.isArray(a)?e[a]._ColReorder_iOrigCol:f.map(a,function(a){return e[a]._ColReorder_iOrigCol})},_fnConstruct:function(){var a=this,b=this.s.dt.aoColumns.length,d=this.s.dt.nTable,e;this.s.init.iFixedColumns&&
10151(this.s.fixed=this.s.init.iFixedColumns);this.s.init.iFixedColumnsLeft&&(this.s.fixed=this.s.init.iFixedColumnsLeft);this.s.fixedRight=this.s.init.iFixedColumnsRight?this.s.init.iFixedColumnsRight:0;this.s.init.fnReorderCallback&&(this.s.reorderCallback=this.s.init.fnReorderCallback);for(e=0;e<b;e++)e>this.s.fixed-1&&e<b-this.s.fixedRight&&this._fnMouseListener(e,this.s.dt.aoColumns[e].nTh),this.s.dt.aoColumns[e]._ColReorder_iOrigCol=e;this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(b,
10152c){a._fnStateSave.call(a,c)},"ColReorder_State");var g=null;this.s.init.aiOrder&&(g=this.s.init.aiOrder.slice());this.s.dt.oLoadedState&&("undefined"!=typeof this.s.dt.oLoadedState.ColReorder&&this.s.dt.oLoadedState.ColReorder.length==this.s.dt.aoColumns.length)&&(g=this.s.dt.oLoadedState.ColReorder);
10152if(g)if(a.s.dt._bInitComplete)b=q(g),a._fnOrderColumns.call(a,b);else{var c=!1;f(d).on("draw.dt.colReorder",function(){if(!a.s.dt._bInitComplete&&!c){c=true;var b=q(g);a._fnOrderColumns.call(a,b)}})}else this._fnSetColumnIndexes();
10153f(d).on("destroy.dt.colReorder",function(){f(d).off("destroy.dt.colReorder draw.dt.colReorder");f(a.s.dt.nTHead).find("*").off(".ColReorder");f.each(a.s.dt.aoColumns,function(a,b){f(b.nTh).removeAttr("data-column-index")});a.s.dt._colReorder=null;a.s=null})},_fnOrderColumns:function(a){var b=!1;if(a.length!=this.s.dt.aoColumns.length)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"ColReorder - array reorder does not match known number of columns. Skipping.");else{for(var d=0,e=a.length;d<e;d++){var g=
10154f.inArray(d,a);d!=g&&(p(a,g,d),this.s.dt.oInstance.fnColReorder(g,d,!0,!1),b=!0)}f.fn.dataTable.Api(this.s.dt).rows().invalidate();this._fnSetColumnIndexes();b&&((""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))}},_fnStateSave:function(a){var b,d,e,g=this.s.dt.aoColumns;a.ColReorder=[];if(a.aaSorting){for(b=0;b<a.aaSorting.length;b++)a.aaSorting[b][0]=
10155g[a.aaSorting[b][0]]._ColReorder_iOrigCol;var c=f.extend(!0,[],a.aoSearchCols);b=0;for(d=g.length;b<d;b++)e=g[b]._ColReorder_iOrigCol,a.aoSearchCols[e]=c[b],a.abVisCols[e]=g[b].bVisible,a.ColReorder.push(e)}else if(a.order){for(b=0;b<a.order.length;b++)a.order[b][0]=g[a.order[b][0]]._ColReorder_iOrigCol;c=f.extend(!0,[],a.columns);b=0;for(d=g.length;b<d;b++)e=g[b]._ColReorder_iOrigCol,a.columns[e]=c[b],a.ColReorder.push(e)}},_fnMouseListener:function(a,b){var d=this;f(b).on("mousedown.ColReorder",
10156function(a){a.preventDefault();d._fnMouseDown.call(d,a,b)})},_fnMouseDown:function(a,b){var d=this,e=f(a.target).closest("th, td").offset(),g=parseInt(f(b).attr("data-column-index"),10);g!==r&&(this.s.mouse.startX=a.pageX,this.s.mouse.startY=a.pageY,this.s.mouse.offsetX=a.pageX-e.left,this.s.mouse.offsetY=a.pageY-e.top,this.s.mouse.target=this.s.dt.aoColumns[g].nTh,this.s.mouse.targetIndex=g,this.s.mouse.fromIndex=g,this._fnRegions(),f(l).on("mousemove.ColReorder",function(a){d._fnMouseMove.call(d,
10157a)}).on("mouseup.ColReorder",function(a){d._fnMouseUp.call(d,a)}))},_fnMouseMove:function(a){if(null===this.dom.drag){if(5>Math.pow(Math.pow(a.pageX-this.s.mouse.startX,2)+Math.pow(a.pageY-this.s.mouse.startY,2),0.5))return;this._fnCreateDragNode()}this.dom.drag.css({left:a.pageX-this.s.mouse.offsetX,top:a.pageY-this.s.mouse.offsetY});for(var b=!1,d=this.s.mouse.toIndex,e=1,f=this.s.aoTargets.length;e<f;e++)if(a.pageX<this.s.aoTargets[e-1].x+(this.s.aoTargets[e].x-this.s.aoTargets[e-1].x)/2){this.dom.pointer.css("left",
10158this.s.aoTargets[e-1].x);this.s.mouse.toIndex=this.s.aoTargets[e-1].to;b=!0;break}b||(this.dom.pointer.css("left",this.s.aoTargets[this.s.aoTargets.length-1].x),this.s.mouse.toIndex=this.s.aoTargets[this.s.aoTargets.length-1].to);this.s.init.bRealtime&&d!==this.s.mouse.toIndex&&(this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex,!1),this.s.mouse.fromIndex=this.s.mouse.toIndex,this._fnRegions())},_fnMouseUp:function(){f(l).off("mousemove.ColReorder mouseup.ColReorder");null!==
10159this.dom.drag&&(this.dom.drag.remove(),this.dom.pointer.remove(),this.dom.drag=null,this.dom.pointer=null,this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex,!0),this._fnSetColumnIndexes(),(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))},_fnRegions:function(){var a=this.s.dt.aoColumns;this.s.aoTargets.splice(0,
10160this.s.aoTargets.length);this.s.aoTargets.push({x:f(this.s.dt.nTable).offset().left,to:0});for(var b=0,d=this.s.aoTargets[0].x,e=0,g=a.length;e<g;e++)e!=this.s.mouse.fromIndex&&b++,a[e].bVisible&&"none"!==a[e].nTh.style.display&&(d+=f(a[e].nTh).outerWidth(),this.s.aoTargets.push({x:d,to:b}));0!==this.s.fixedRight&&this.s.aoTargets.splice(this.s.aoTargets.length-this.s.fixedRight);0!==this.s.fixed&&this.s.aoTargets.splice(0,this.s.fixed)},_fnCreateDragNode:function(){var a=""!==this.s.dt.oScroll.sX||
10161""!==this.s.dt.oScroll.sY,b=this.s.dt.aoColumns[this.s.mouse.targetIndex].nTh,d=b.parentNode,e=d.parentNode,g=e.parentNode,c=f(b).clone();this.dom.drag=f(g.cloneNode(!1)).addClass("DTCR_clonedTable").append(f(e.cloneNode(!1)).append(f(d.cloneNode(!1)).append(c[0]))).css({position:"absolute",top:0,left:0,width:f(b).outerWidth(),height:f(b).outerHeight()}).appendTo("body");this.dom.pointer=f("<div></div>").addClass("DTCR_pointer").css({position:"absolute",top:a?f("div.dataTables_scroll",this.s.dt.nTableWrapper).offset().top:
10162f(this.s.dt.nTable).offset().top,height:a?f("div.dataTables_scroll",this.s.dt.nTableWrapper).height():f(this.s.dt.nTable).height()}).appendTo("body")},_fnSetColumnIndexes:function(){f.each(this.s.dt.aoColumns,function(a,b){f(b.nTh).attr("data-column-index",a)})}});i.defaults={aiOrder:null,bRealtime:!0,iFixedColumnsLeft:0,iFixedColumnsRight:0,fnReorderCallback:null};i.version="1.3.2";f.fn.dataTable.ColReorder=i;f.fn.DataTable.ColReorder=i;"function"==typeof f.fn.dataTable&&"function"==typeof f.fn.dataTableExt.fnVersionCheck&&
10163f.fn.dataTableExt.fnVersionCheck("1.10.8")?f.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInstance;
10163a._colReorder?b.oApi._fnLog(a,1,"ColReorder attempted to initialise twice. Ignoring second"):(b=a.oInit,new i(a,b.colReorder||b.oColReorder||{}));return null},cFeature:"R",sFeature:"ColReorder"}):alert("Warning: ColReorder requires DataTables 1.10.8 or greater - www.datatables.net/download");f(l).on("preInit.dt.colReorder",function(a,b){if("dt"===a.namespace){var d=b.oInit.colReorder,
10164e=t.defaults.colReorder;if(d||e)e=f.extend({},d,e),!1!==d&&new i(b,e)}});f.fn.dataTable.Api.register("colReorder.reset()",function(){return this.iterator("table",function(a){a._colReorder.fnReset()})});f.fn.dataTable.Api.register("colReorder.order()",function(a,b){return a?this.iterator("table",function(d){d._colReorder.fnOrder(a,b)}):this.context.length?this.context[0]._colReorder.fnOrder():null});f.fn.dataTable.Api.register("colReorder.transpose()",function(a,b){return this.context.length&&this.context[0]._colReorder?
10165this.context[0]._colReorder.fnTranspose(a,b):a});return i});
10166
10167
10168/*!
10169 FixedColumns 3.2.2
10170 ©2010-2016 SpryMedia Ltd - datatables.net/license
10171*/
10172(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(q){return d(q,window,document)}):"object"===typeof exports?module.exports=function(q,r){q||(q=window);if(!r||!r.fn.dataTable)r=require("datatables.net")(q,r).$;return d(r,q,q.document)}:d(jQuery,window,document)})(function(d,q,r,t){var s=d.fn.dataTable,u,m=function(a,b){var c=this;if(this instanceof m){if(b===t||!0===b)b={};var e=d.fn.dataTable.camelToHungarian;e&&(e(m.defaults,m.defaults,!0),e(m.defaults,
10173b));e=(new d.fn.dataTable.Api(a)).settings()[0];this.s={dt:e,iTableColumns:e.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[],rtl:"rtl"===d(e.nTable).css("direction")};this.dom={scroller:null,header:null,body:null,footer:null,grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null,head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};if(e._oFixedColumns)throw"FixedColumns already initialised on this table";
10174e._oFixedColumns=this;e._bInitComplete?this._fnConstruct(b):e.oApi._fnCallbackReg(e,"aoInitComplete",function(){c._fnConstruct(b)},"FixedColumns")}else alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.")};d.extend(m.prototype,{fnUpdate:function(){this._fnDraw(!0)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},fnRecalculateHeight:function(a){delete a._DTTC_iHeight;a.style.height="auto"},fnSetRowHeight:function(a,b){a.style.height=
10175b+"px"},fnGetPosition:function(a){var b=this.s.dt.oInstance;if(d(a).parents(".DTFC_Cloned").length){if("tr"===a.nodeName.toLowerCase())return a=d(a).index(),b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]);var c=d(a).index(),a=d(a.parentNode).index();return[b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]),c,b.oApi._fnVisibleToColumnIndex(this.s.dt,c)]}return b.fnGetPosition(a)},_fnConstruct:function(a){var b=this;if("function"!=typeof this.s.dt.oInstance.fnVersionCheck||!0!==this.s.dt.oInstance.fnVersionCheck("1.8.0"))alert("FixedColumns "+
10176m.VERSION+" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");else if(""===this.s.dt.oScroll.sX)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");else{this.s=d.extend(!0,this.s,m.defaults,a);a=this.s.dt.oClasses;this.dom.grid.dt=d(this.s.dt.nTable).parents("div."+a.sScrollWrapper)[0];this.dom.scroller=d("div."+
10177a.sScrollBody,this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var c,e=!1;d(this.s.dt.nTableWrapper).on("mousedown.DTFC",function(){e=!0;d(r).one("mouseup",function(){e=!1})});d(this.dom.scroller).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="main")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="main");if("main"===c&&(0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.scroller.scrollTop),0<b.s.iRightColumns))b.dom.grid.right.liner.scrollTop=b.dom.scroller.scrollTop});
10178var f="onwheel"in r.createElement("div")?"wheel.DTFC":"mousewheel.DTFC";if(0<b.s.iLeftColumns)d(b.dom.grid.left.liner).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="left")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="left");"left"===c&&(b.dom.scroller.scrollTop=b.dom.grid.left.liner.scrollTop,0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.grid.left.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});
10179if(0<b.s.iRightColumns)d(b.dom.grid.right.liner).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="right")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="right");"right"===c&&(b.dom.scroller.scrollTop=b.dom.grid.right.liner.scrollTop,0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.grid.right.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});d(q).on("resize.DTFC",function(){b._fnGridLayout.call(b)});
10180var g=!0,h=d(this.s.dt.nTable);h.on("draw.dt.DTFC",function(){b._fnColCalc();b._fnDraw.call(b,g);g=!1}).on("column-sizing.dt.DTFC",function(){b._fnColCalc();b._fnGridLayout(b)}).on("column-visibility.dt.DTFC",function(a,c,d,e,f){if(f===t||f)b._fnColCalc(),b._fnGridLayout(b),b._fnDraw(!0)}).on("select.dt.DTFC deselect.dt.DTFC",function(a){"dt"===a.namespace&&b._fnDraw(!1)}).on("destroy.dt.DTFC",function(){h.off(".DTFC");d(b.dom.scroller).off(".DTFC");d(q).off(".DTFC");d(b.s.dt.nTableWrapper).off(".DTFC");
10181d(b.dom.grid.left.liner).off(".DTFC "+f);d(b.dom.grid.left.wrapper).remove();d(b.dom.grid.right.liner).off(".DTFC "+f);d(b.dom.grid.right.wrapper).remove()});this._fnGridLayout();this.s.dt.oInstance.fnDraw(!1)}},_fnColCalc:function(){var a=this,b=0,c=0;this.s.aiInnerWidths=[];this.s.aiOuterWidths=[];d.each(this.s.dt.aoColumns,function(e,f){var g=d(f.nTh),h;if(g.filter(":visible").length){var i=g.outerWidth();0===a.s.aiOuterWidths.length&&(h=d(a.s.dt.nTable).css("border-left-width"),i+="string"===
10182typeof h?1:parseInt(h,10));a.s.aiOuterWidths.length===a.s.dt.aoColumns.length-1&&(h=d(a.s.dt.nTable).css("border-right-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.push(i);a.s.aiInnerWidths.push(g.width());e<a.s.iLeftColumns&&(b+=i);a.s.iTableColumns-a.s.iRightColumns<=e&&(c+=i)}else a.s.aiInnerWidths.push(0),a.s.aiOuterWidths.push(0)});this.s.iLeftWidth=b;this.s.iRightWidth=c},_fnGridSetup:function(){var a=this._fnDTOverflow(),b;this.dom.body=this.s.dt.nTable;this.dom.header=
10183this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position="relative";var c=d('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; right:0;"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0],
10184e=c.childNodes[0],f=c.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(c,this.dom.grid.dt);c.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=c;0<this.s.iLeftColumns&&(this.dom.grid.left.wrapper=e,this.dom.grid.left.head=e.childNodes[0],this.dom.grid.left.body=e.childNodes[1],this.dom.grid.left.liner=d("div.DTFC_LeftBodyLiner",c)[0],c.appendChild(e));0<this.s.iRightColumns&&(this.dom.grid.right.wrapper=f,this.dom.grid.right.head=f.childNodes[0],this.dom.grid.right.body=f.childNodes[1],this.dom.grid.right.liner=
10185d("div.DTFC_RightBodyLiner",c)[0],f.style.right=a.bar+"px",b=d("div.DTFC_RightHeadBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.headBlock=b,b=d("div.DTFC_RightFootBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.footBlock=b,c.appendChild(f));if(this.s.dt.nTFoot&&(this.dom.footer=this.s.dt.nTFoot.parentNode,0<this.s.iLeftColumns&&(this.dom.grid.left.foot=e.childNodes[2]),0<this.s.iRightColumns))this.dom.grid.right.foot=f.childNodes[2];
10186this.s.rtl&&d("div.DTFC_RightHeadBlocker",c).css({left:-a.bar+"px",right:""})},_fnGridLayout:function(){var a=this,b=this.dom.grid;d(b.wrapper).width();var c=d(this.s.dt.nTable.parentNode).outerHeight(),e=d(this.s.dt.nTable.parentNode.parentNode).outerHeight(),f=this._fnDTOverflow(),g=this.s.iLeftWidth,h=this.s.iRightWidth,i="rtl"===d(this.dom.body).css("direction"),j=function(b,c){f.bar?a._firefoxScrollError()?34<d(b).height()&&(b.style.width=c+f.bar+"px"):b.style.width=c+f.bar+"px":(b.style.width=
10187c+20+"px",b.style.paddingRight="20px",b.style.boxSizing="border-box")};f.x&&(c-=f.bar);b.wrapper.style.height=e+"px";0<this.s.iLeftColumns&&(e=b.left.wrapper,e.style.width=g+"px",e.style.height="1px",
10187i?(e.style.left="",e.style.right=0):(e.style.left=0,e.style.right=""),b.left.body.style.height=c+"px",b.left.foot&&(b.left.foot.style.top=(f.x?f.bar:0)+"px"),j(b.left.liner,g),b.left.liner.style.height=c+"px");0<this.s.iRightColumns&&(e=b.right.wrapper,e.style.width=h+"px",e.style.height="1px",this.s.rtl?
10188(e.style.left=f.y?f.bar+"px":0,e.style.right=""):(e.style.left="",e.style.right=f.y?f.bar+"px":0),b.right.body.style.height=c+"px",b.right.foot&&(b.right.foot.style.top=(f.x?f.bar:0)+"px"),j(b.right.liner,h),b.right.liner.style.height=c+"px",b.right.headBlock.style.display=f.y?"block":"none",b.right.footBlock.style.display=f.y?"block":"none")},_fnDTOverflow:function(){var a=this.s.dt.nTable,b=a.parentNode,c={x:!1,y:!1,bar:this.s.dt.oScroll.iBarWidth};a.offsetWidth>b.clientWidth&&(c.x=!0);a.offsetHeight>
10189b.clientHeight&&(c.y=!0);return c},_fnDraw:function(a){this._fnGridLayout();this._fnCloneLeft(a);this._fnCloneRight(a);null!==this.s.fnDrawCallback&&this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right);d(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(a){if(!(0>=this.s.iRightColumns)){var b,c=[];for(b=this.s.iTableColumns-this.s.iRightColumns;b<this.s.iTableColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);
10190this._fnClone(this.dom.clone.right,this.dom.grid.right,c,a)}},_fnCloneLeft:function(a){if(!(0>=this.s.iLeftColumns)){var b,c=[];for(b=0;b<this.s.iLeftColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.left,this.dom.grid.left,c,a)}},_fnCopyLayout:function(a,b,c){for(var e=[],f=[],g=[],h=0,i=a.length;h<i;h++){var j=[];j.nTr=d(a[h].nTr).clone(c,!1)[0];for(var l=0,o=this.s.iTableColumns;l<o;l++)if(-1!==d.inArray(l,b)){var p=d.inArray(a[h][l].cell,g);-1===p?(p=d(a[h][l].cell).clone(c,
10191!1)[0],f.push(p),g.push(a[h][l].cell),j.push({cell:p,unique:a[h][l].unique})):j.push({cell:f[p],unique:a[h][l].unique})}e.push(j)}return e},_fnClone:function(a,b,c,e){var f=this,g,h,i,j,l,o,p,n,m,k=this.s.dt;if(e){d(a.header).remove();a.header=d(this.dom.header).clone(!0,!1)[0];a.header.className+=" DTFC_Cloned";a.header.style.width="100%";b.head.appendChild(a.header);n=this._fnCopyLayout(k.aoHeader,c,!0);j=d(">thead",a.header);j.empty();g=0;for(h=n.length;g<h;g++)j[0].appendChild(n[g].nTr);k.oApi._fnDrawHead(k,
10192n,!0)}else{n=this._fnCopyLayout(k.aoHeader,c,!1);m=[];k.oApi._fnDetectHeader(m,d(">thead",a.header)[0]);g=0;for(h=n.length;g<h;g++){i=0;for(j=n[g].length;i<j;i++)m[g][i].cell.className=n[g][i].cell.className,d("span.DataTables_sort_icon",m[g][i].cell).each(function(){this.className=d("span.DataTables_sort_icon",n[g][i].cell)[0].className})}}this._fnEqualiseHeights("thead",this.dom.header,a.header);"auto"==this.s.sHeightMatch&&d(">tbody>tr",f.dom.body).css("height","auto");null!==a.body&&(d(a.body).remove(),
10193a.body=null);a.body=d(this.dom.body).clone(!0)[0];a.body.className+=" DTFC_Cloned";a.body.style.paddingBottom=k.oScroll.iBarWidth+"px";a.body.style.marginBottom=2*k.oScroll.iBarWidth+"px";null!==a.body.getAttribute("id")&&a.body.removeAttribute("id");d(">thead>tr",a.body).empty();d(">tfoot",a.body).remove();var q=d("tbody",a.body)[0];d(q).empty();if(0<k.aiDisplay.length){h=d(">thead>tr",a.body)[0];for(p=0;p<c.length;p++)l=c[p],o=d(k.aoColumns[l].nTh).clone(!0)[0],o.innerHTML="",j=o.style,j.paddingTop=
10194"0",j.paddingBottom="0",j.borderTopWidth="0",j.borderBottomWidth="0",j.height=0,j.width=f.s.aiInnerWidths[l]+"px",h.appendChild(o);d(">tbody>tr",f.dom.body).each(function(a){var a=f.s.dt.oFeatures.bServerSide===false?f.s.dt.aiDisplay[f.s.dt._iDisplayStart+a]:a,b=f.s.dt.aoData[a].anCells||d(this).children("td, th"),e=this.cloneNode(false);e.removeAttribute("id");e.setAttribute("data-dt-row",a);for(p=0;p<c.length;p++){l=c[p];if(b.length>0){o=d(b[l]).clone(true,true)[0];o.setAttribute("data-dt-row",
10195a);o.setAttribute("data-dt-column",p);e.appendChild(o)}}q.appendChild(e)})}else d(">tbody>tr",f.dom.body).each(function(){o=this.cloneNode(true);o.className=o.className+" DTFC_NoData";d("td",o).html("");q.appendChild(o)});a.body.style.width="100%";a.body.style.margin="0";a.body.style.padding="0";k.oScroller!==t&&(h=k.oScroller.dom.force,b.forcer?b.forcer.style.height=h.style.height:(b.forcer=h.cloneNode(!0),b.liner.appendChild(b.forcer)));b.liner.appendChild(a.body);this._fnEqualiseHeights("tbody",
10196f.dom.body,a.body);if(null!==k.nTFoot){if(e){null!==a.footer&&a.footer.parentNode.removeChild(a.footer);a.footer=d(this.dom.footer).clone(!0,!0)[0];a.footer.className+=" DTFC_Cloned";a.footer.style.width="100%";b.foot.appendChild(a.footer);n=this._fnCopyLayout(k.aoFooter,c,!0);b=d(">tfoot",a.footer);b.empty();g=0;for(h=n.length;g<h;g++)b[0].appendChild(n[g].nTr);k.oApi._fnDrawHead(k,n,!0)}else{n=this._fnCopyLayout(k.aoFooter,c,!1);b=[];k.oApi._fnDetectHeader(b,d(">tfoot",a.footer)[0]);g=0;for(h=n.length;g<
10197h;g++){i=0;for(j=n[g].length;i<j;i++)b[g][i].cell.className=n[g][i].cell.className}}this._fnEqualiseHeights("tfoot",this.dom.footer,a.footer)}b=k.oApi._fnGetUniqueThs(k,d(">thead",a.header)[0]);d(b).each(function(a){l=c[a];this.style.width=f.s.aiInnerWidths[l]+"px"});null!==f.s.dt.nTFoot&&(b=k.oApi._fnGetUniqueThs(k,d(">tfoot",a.footer)[0]),d(b).each(function(a){l=c[a];this.style.width=f.s.aiInnerWidths[l]+"px"}))},_fnGetTrNodes:function(a){for(var b=[],c=0,d=a.childNodes.length;c<d;c++)"TR"==a.childNodes[c].nodeName.toUpperCase()&&
10198b.push(a.childNodes[c]);return b},_fnEqualiseHeights:function(a,b,c){if(!("none"==this.s.sHeightMatch&&"thead"!==a&&"tfoot"!==a)
10198){var e,f,g=b.getElementsByTagName(a)[0],c=c.getElementsByTagName(a)[0],a=d(">"+a+">tr:eq(0)",b).children(":first");a.outerHeight();a.height();for(var g=this._fnGetTrNodes(g),b=this._fnGetTrNodes(c),h=[],c=0,a=b.length;c<a;c++)e=g[c].offsetHeight,f=b[c].offsetHeight,e=f>e?f:e,"semiauto"==this.s.sHeightMatch&&(g[c]._DTTC_iHeight=e),h.push(e);c=0;for(a=b.length;c<a;c++)b[c].style.height=
10199h[c]+"px",g[c].style.height=h[c]+"px"}},_firefoxScrollError:function(){if(u===t){var a=d("<div/>").css({position:"absolute",top:0,left:0,height:10,width:50,overflow:"scroll"}).appendTo("body");u=a[0].clientWidth===a[0].offsetWidth&&0!==this._fnDTOverflow().bar;a.remove()}return u}});m.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};m.version="3.2.2";s.Api.register("fixedColumns()",function(){return this});s.Api.register("fixedColumns().update()",function(){return this.iterator("table",
10200function(a){a._oFixedColumns&&a._oFixedColumns.fnUpdate()})});s.Api.register("fixedColumns().relayout()",function(){return this.iterator("table",function(a){a._oFixedColumns&&a._oFixedColumns.fnRedrawLayout()})});s.Api.register("rows().recalcHeight()",function(){return this.iterator("row",function(a,b){a._oFixedColumns&&a._oFixedColumns.fnRecalculateHeight(this.row(b).node())})});s.Api.register("fixedColumns().rowIndex()",function(a){a=d(a);return a.parents(".DTFC_Cloned").length?this.rows({page:"current"}).indexes()[a.index()]:
10201this.row(a).index()});s.Api.register("fixedColumns().cellIndex()",function(a){a=d(a);if(a.parents(".DTFC_Cloned").length){var b=a.parent().index(),b=this.rows({page:"current"}).indexes()[b],a=a.parents(".DTFC_LeftWrapper").length?a.index():this.columns().flatten().length-this.context[0]._oFixedColumns.s.iRightColumns+a.index();return{row:b,column:this.column.index("toData",a),columnVisible:a}}return this.cell(a).index()});d(r).on("init.dt.fixedColumns",function(a,b){if("dt"===a.namespace){var c=b.oInit.fixedColumns,
10202e=s.defaults.fixedColumns;if(c||e)e=d.extend({},c,e),!1!==c&&new m(b,e)}});d.fn.dataTable.FixedColumns=m;return d.fn.DataTable.FixedColumns=m});
10203
10204
10205/*!
10206 FixedHeader 3.1.2
10207 ©2009-2016 SpryMedia Ltd - datatables.net/license
10208*/
10209(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(g){return d(g,window,document)}):"object"===typeof exports?module.exports=function(g,h){g||(g=window);if(!h||!h.fn.dataTable)h=require("datatables.net")(g,h).$;return d(h,g,g.document)}:d(jQuery,window,document)})(function(d,g,h,k){var j=d.fn.dataTable,l=0,i=function(b,a){if(!(this instanceof i))throw"FixedHeader must be initialised with the 'new' keyword.";!0===a&&(a={});b=new j.Api(b);this.c=d.extend(!0,
10210{},i.defaults,a);this.s={dt:b,position:{theadTop:0,tbodyTop:0,tfootTop:0,tfootBottom:0,width:0,left:0,tfootHeight:0,theadHeight:0,windowHeight:d(g).height(),visible:!0},headerMode:null,footerMode:null,autoWidth:b.settings()[0].oFeatures.bAutoWidth,namespace:".dtfc"+l++,scrollLeft:{header:-1,footer:-1},enable:!0};this.dom={floatingHeader:null,thead:d(b.table().header()),tbody:d(b.table().body()),tfoot:d(b.table().footer()),header:{host:null,floating:null,placeholder:null},footer:{host:null,floating:null,
10211placeholder:null}};this.dom.header.host=this.dom.thead.parent();this.dom.footer.host=this.dom.tfoot.parent();var e=b.settings()[0];if(e._fixedHeader)throw"FixedHeader already initialised on table "+e.nTable.id;e._fixedHeader=this;this._constructor()};d.extend(i.prototype,{enable:function(b){this.s.enable=b;this.c.header&&this._modeChange("in-place","header",!0);this.c.footer&&this.dom.tfoot.length&&this._modeChange("in-place","footer",!0);this.update()},headerOffset:function(b){b!==k&&(this.c.headerOffset=
10212b,this.update());return this.c.headerOffset},footerOffset:function(b){b!==k&&(this.c.footerOffset=b,this.update());return this.c.footerOffset},update:function(){this._positions();this._scroll(!0)},_constructor:function(){var b=this,a=this.s.dt;d(g).on("scroll"+this.s.namespace,function(){b._scroll()}).on("resize"+this.s.namespace,function(){b.s.position.windowHeight=d(g).height();
10212b.update()});var e=d(".fh-fixedHeader");!this.c.headerOffset&&e.length&&(this.c.headerOffset=e.outerHeight());e=d(".fh-fixedFooter");
10213!this.c.footerOffset&&e.length&&(this.c.footerOffset=e.outerHeight());a.on("column-reorder.dt.dtfc column-visibility.dt.dtfc draw.dt.dtfc column-sizing.dt.dtfc",function(){b.update()});a.on("destroy.dtfc",function(){a.off(".dtfc");d(g).off(b.s.namespace)});this._positions();this._scroll()},_clone:function(b,a){var e=this.s.dt,c=this.dom[b],f="header"===b?this.dom.thead:this.dom.tfoot;!a&&c.floating?c.floating.removeClass("fixedHeader-floating fixedHeader-locked"):(c.floating&&(c.placeholder.remove(),
10214this._unsize(b),c.floating.children().detach(),c.floating.remove()),c.floating=d(e.table().node().cloneNode(!1)).css("table-layout","fixed").removeAttr("id").append(f).appendTo("body"),c.placeholder=f.clone(!1),c.host.prepend(c.placeholder),this._matchWidths(c.placeholder,c.floating))},_matchWidths:function(b,a){var e=function(a){return d(a,b).map(function(){return d(this).width()}).toArray()},c=function(b,c){d(b,a).each(function(a){d(this).css({width:c[a],minWidth:c[a]})})},f=e("th"),e=e("td");c("th",
10215f);c("td",e)},_unsize:function(b){var a=this.dom[b].floating;a&&("footer"===b||"header"===b&&!this.s.autoWidth)?d("th, td",a).css({width:"",minWidth:""}):a&&"header"===b&&d("th, td",a).css("min-width","")},_horizontal:function(b,a){var e=this.dom[b],c=this.s.position,d=this.s.scrollLeft;e.floating&&d[b]!==a&&(e.floating.css("left",c.left-a),d[b]=a)},_modeChange:function(b,a,e){var c=this.dom[a],f=this.s.position,g=d.contains(this.dom["footer"===a?"tfoot":"thead"][0],h.activeElement)?h.activeElement:
10216null;if("in-place"===b){if(c.placeholder&&(c.placeholder.remove(),c.placeholder=null),this._unsize(a),"header"===a?c.host.prepend(this.dom.thead):c.host.append(this.dom.tfoot),c.floating)c.floating.remove(),c.floating=null}else"in"===b?(this._clone(a,e),c.floating.addClass("fixedHeader-floating").css("header"===a?"top":"bottom",this.c[a+"Offset"]).css("left",f.left+"px").css("width",f.width+"px"),"footer"===a&&c.floating.css("top","")):"below"===b?(this._clone(a,e),c.floating.addClass("fixedHeader-locked").css("top",
10217f.tfootTop-f.theadHeight).css("left",f.left+"px").css("width",f.width+"px")):"above"===b&&(this._clone(a,e),c.floating.addClass("fixedHeader-locked").css("top",f.tbodyTop).css("left",f.left+"px").css("width",f.width+"px"));g&&g!==h.activeElement&&g.focus();this.s.scrollLeft.header=-1;this.s.scrollLeft.footer=-1;this.s[a+"Mode"]=b},_positions:function(){var b=this.s.dt.table(),a=this.s.position,e=this.dom,b=d(b.node()),c=b.children("thead"),f=b.children("tfoot"),e=e.tbody;a.visible=b.is(":visible");
10218a.width=b.outerWidth();a.left=b.offset().left;a.theadTop=c.offset().top;a.tbodyTop=e.offset().top;a.theadHeight=a.tbodyTop-a.theadTop;f.length?(a.tfootTop=f.offset().top,a.tfootBottom=a.tfootTop+f.outerHeight(),a.tfootHeight=a.tfootBottom-a.tfootTop):(a.tfootTop=a.tbodyTop+e.outerHeight(),a.tfootBottom=a.tfootTop,a.tfootHeight=a.tfootTop)},_scroll:function(b){var a=d(h).scrollTop(),e=d(h).scrollLeft(),c=this.s.position,f;if(this.s.enable&&(this.c.header&&(f=!c.visible||a<=c.theadTop-this.c.headerOffset?
10219"in-place":a<=c.tfootTop-c.theadHeight-this.c.headerOffset?"in":"below",(b||f!==this.s.headerMode)&&this._modeChange(f,"header",b),this._horizontal("header",e)),this.c.footer&&this.dom.tfoot.length))a=!c.visible||a+c.windowHeight>=c.tfootBottom+this.c.footerOffset?"in-place":c.windowHeight+a>c.tbodyTop+c.tfootHeight+this.c.footerOffset?"in":"above",(b||a!==this.s.footerMode)&&this._modeChange(a,"footer",b),this._horizontal("footer",e)}});i.version="3.1.2";i.defaults={header:!0,footer:!1,headerOffset:0,
10220footerOffset:0};d.fn.dataTable.FixedHeader=i;d.fn.DataTable.FixedHeader=i;d(h).on("init.dt.dtfh",function(b,a){if("dt"===b.namespace){var e=a.oInit.fixedHeader,c=j.defaults.fixedHeader;if((e||c)&&!a._fixedHeader)c=d.extend({},c,e),!1!==e&&new i(a,c)}});j.Api.register("fixedHeader()",function(){});j.Api.register("fixedHeader.adjust()",function(){return this.iterator("table",function(b){(b=b._fixedHeader)&&b.update(
10220)})});j.Api.register("fixedHeader.enable()",function(b){return this.iterator("table",
10221function(a){(a=a._fixedHeader)&&a.enable(b!==k?b:!0)})});j.Api.register("fixedHeader.disable()",function(){return this.iterator("table",function(b){(b=b._fixedHeader)&&b.enable(!1)})});d.each(["header","footer"],function(b,a){j.Api.register("fixedHeader."+a+"Offset()",function(b){var c=this.context;return b===k?c.length&&c[0]._fixedHeader?c[0]._fixedHeader[a+"Offset"]():k:this.iterator("table",function(c){if(c=c._fixedHeader)c[a+"Offset"](b)})})});return i});
10222
10223
10224/*!
10225 Responsive 2.1.0
10226 2014-2016 SpryMedia Ltd - datatables.net/license
10227*/
10228(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return c(l,window,document)}):"object"===typeof exports?module.exports=function(l,k){l||(l=window);if(!k||!k.fn.dataTable)k=require("datatables.net")(l,k).$;return c(k,l,l.document)}:c(jQuery,window,document)})(function(c,l,k,p){var m=c.fn.dataTable,j=function(a,b){if(!m.versionCheck||!m.versionCheck("1.10.3"))throw"DataTables Responsive requires DataTables 1.10.3 or newer";this.s={dt:new m.Api(a),columns:[],
10229current:[]};this.s.dt.settings()[0].responsive||(b&&"string"===typeof b.details?b.details={type:b.details}:b&&!1===b.details?b.details={type:!1}:b&&!0===b.details&&(b.details={type:"inline"}),this.c=c.extend(!0,{},j.defaults,m.defaults.responsive,b),a.responsive=this,this._constructor())};c.extend(j.prototype,{_constructor:function(){var a=this,b=this.s.dt,d=b.settings()[0],e=c(l).width();b.settings()[0]._responsive=this;c(l).on("resize.dtr orientationchange.dtr",m.util.throttle(function(){var b=
10230c(l).width();b!==e&&(a._resize(),e=b)}));d.oApi._fnCallbackReg(d,"aoRowCreatedCallback",function(e){-1!==c.inArray(!1,a.s.current)&&c("td, th",e).each(function(e){e=b.column.index("toData",e);!1===a.s.current[e]&&c(this).css("display","none")})});b.on("destroy.dtr",function(){b.off(".dtr");c(b.table().body()).off(".dtr");c(l).off("resize.dtr orientationchange.dtr");c.each(a.s.current,function(b,e){!1===e&&a._setColumnVis(b,!0)})});this.c.breakpoints.sort(function(a,b){return a.width<b.width?1:a.width>
10231b.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!==d.type&&(a._detailsInit(),b.on("column-visibility.dtr",function(){a._classLogic();a._resizeAuto();a._resize()}),b.on("draw.dtr",function(){a._redrawChildren()}),c(b.table().node()).addClass("dtr-"+d.type));b.on("column-reorder.dtr",function(){a._classLogic();a._resizeAuto();a._resize()});b.on("column-sizing.dtr",function(){a._resizeAuto();a._resize()});b.on("init.dtr",function(){a._resizeAuto();a._resize();c.inArray(false,
10232a.s.current)&&b.columns.adjust()});this._resize()},_columnsVisiblity:function(a){var b=this.s.dt,d=this.s.columns,e,f,g=d.map(function(a,b){return{columnIdx:b,priority:a.priority}}).sort(function(a,b){return a.priority!==b.priority?a.priority-b.priority:a.columnIdx-b.columnIdx}),h=c.map(d,function(b){return b.auto&&null===b.minWidth?!1:!0===b.auto?"-":-1!==c.inArray(a,b.includeIn)}),n=0;e=0;for(f=h.length;e<f;e++)!0===h[e]&&(n+=d[e].minWidth);e=b.settings()[0].oScroll;e=e.sY||e.sX?e.iBarWidth:0;b=
10233b.table().container().offsetWidth-e-n;e=0;for(f=h.length;e<f;e++)d[e].control&&(b-=d[e].minWidth);n=!1;e=0;for(f=g.length;e<f;e++){var i=g[e].columnIdx;"-"===h[i]&&(!d[i].control&&d[i].minWidth)&&(n||0>b-d[i].minWidth?(n=!0,h[i]=!1):h[i]=!0,b-=d[i].minWidth)}g=!1;e=0;for(f=d.length;e<f;e++)if(!d[e].control&&!d[e].never&&!h[e]){g=!0;break}e=0;for(f=d.length;e<f;e++)d[e].control&&(h[e]=g);-1===c.inArray(!0,h)&&(h[0]=!0);return h},_classLogic:function(){var a=this,b=this.c.breakpoints,d=this.s.dt,e=
10234d.columns().eq(0).map(function(a){var b=this.column(a),e=b.header().className,a=d.settings()[0].aoColumns[a].responsivePriority;a===p&&(b=c(b.header()).data("priority"),a=b!==p?1*b:1E4);return{className:e,includeIn:[],auto:!1,control:!1,never:e.match(/\bnever\b/)?!0:!1,priority:a}}),f=function(a,b){var d=e[a].includeIn;-1===c.inArray(b,d)&&d.push(b)},g=function(c,d,i,g){if(i)if("max-"===i){g=a._find(d).width;d=0;for(i=b.length;d<i;d++)b[d].width<=g&&f(c,b[d].name)}else if("min-"===i){g=a._find(d).width;
10235d=0;for(i=b.length;d<i;d++)b[d].width>=g&&f(c,b[d].name)}else{if("not-"===i){d=0;for(i=b.length;d<i;d++)-1===b[d].name.indexOf(g)&&f(c,b[d].name)}}else e[c].includeIn.push(d)};e.each(function(a,e){for(var d=a.className.split(" "),f=!1,j=0,l=d.length;j<l;j++){var k=c.trim(d[j]);if("all"===k){f=!0;a.includeIn=c.map(b,function(a){return a.name});return}if("none"===k||a.never){f=!0;return}
10235if("control"===k){f=!0;a.control=!0;return}c.each(b,function(a,b){var d=b.name.split("-"),c=k.match(RegExp("(min\\-|max\\-|not\\-)?("+
10236d[0]+")(\\-[_a-zA-Z0-9])?"));c&&(f=!0,c[2]===d[0]&&c[3]==="-"+d[1]?g(e,b.name,c[1],c[2]+c[3]):c[2]===d[0]&&!c[3]&&g(e,b.name,c[1],c[2]))})}f||(a.auto=!0)});this.s.columns=e},_detailsDisplay:function(a,b){var d=this,e=this.s.dt,f=this.c.details;if(f&&!1!==f.type){var g=f.display(a,b,function(){return f.renderer(e,a[0],d._detailsObj(a[0]))});(!0===g||!1===g)&&c(e.table().node()).triggerHandler("responsive-display.dt",[e,a,g,b])}},_detailsInit:function(){var a=this,b=this.s.dt,d=this.c.details;"inline"===
10237d.type&&(d.target="td:first-child, th:first-child");b.on("draw.dtr",function(){a._tabIndexes()});a._tabIndexes();c(b.table().body()).on("keyup.dtr","td, th",function(a){a.keyCode===13&&c(this).data("dtr-keyboard")&&c(this).click()});var e=d.target;c(b.table().body()).on("click.dtr mousedown.dtr mouseup.dtr","string"===typeof e?e:"td, th",function(d){if(c(b.table().node()).hasClass("collapsed")&&b.row(c(this).closest("tr")).length){if(typeof e==="number"){var g=e<0?b.columns().eq(0).length+e:e;if(b.cell(this).index().column!==
10238g)return}g=b.row(c(this).closest("tr"));d.type==="click"?a._detailsDisplay(g,false):d.type==="mousedown"?c(this).css("outline","none"):d.type==="mouseup"&&c(this).blur().css("outline","")}})},_detailsObj:function(a){var b=this,d=this.s.dt;return c.map(this.s.columns,function(e,c){if(!e.never&&!e.control)return{title:d.settings()[0].aoColumns[c].sTitle,data:d.cell(a,c).render(b.c.orthogonal),hidden:d.column(c).visible()&&!b.s.current[c],columnIndex:c,rowIndex:a}})},_find:function(a){for(var b=this.c.breakpoints,
10239d=0,c=b.length;d<c;d++)if(b[d].name===a)return b[d]},_redrawChildren:function(){var a=this,b=this.s.dt;b.rows({page:"current"}).iterator("row",function(c,e){b.row(e);a._detailsDisplay(b.row(e),!0)})},_resize:function(){var a=this,b=this.s.dt,d=c(l).width(),e=this.c.breakpoints,f=e[0].name,g=this.s.columns,h,j=this.s.current.slice();for(h=e.length-1;0<=h;h--)if(d<=e[h].width){f=e[h].name;break}var i=this._columnsVisiblity(f);this.s.current=i;e=!1;h=0;for(d=g.length;h<d;h++)if(!1===i[h]&&!g[h].never&&
10240!g[h].control){e=!0;break}c(b.table().node()).toggleClass("collapsed",e);var k=!1;b.columns().eq(0).each(function(b,c){i[c]!==j[c]&&(k=!0,a._setColumnVis(b,i[c]))});k&&(this._redrawChildren(),c(b.table().node()).trigger("responsive-resize.dt",[b,this.s.current]))},_resizeAuto:function(){var a=this.s.dt,b=this.s.columns;if(this.c.auto&&-1!==c.inArray(!0,c.map(b,function(a){return a.auto}))){a.table().node();var d=a.table().node().cloneNode(!1),e=c(a.table().header().cloneNode(!1)).appendTo(d),f=c(a.table().body()).clone(!1,
10241!1).empty().appendTo(d),g=a.columns().header().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");c(f).append(c(a.rows({page:"current"}).nodes()).clone(!1)).find("th, td").css("display","");if(f=a.table().footer()){var f=c(f.cloneNode(!1)).appendTo(d),h=a.columns().footer().filter(function(b){return a.column(b).visible()}).to$().clone(!1).css("display","table-cell");c("<tr/>").append(h).appendTo(f)}c("<tr/>").append(g).appendTo(e);"inline"===this.c.details.type&&
10242c(d).addClass("dtr-inline collapsed");c(d).find("[name]").removeAttr("name");d=c("<div/>").css({width:1,height:1,overflow:"hidden"}).append(d);d.insertBefore(a.table().node());g.each(function(c){c=a.column.index("fromVisible",c);b[c].minWidth=this.offsetWidth||0});d.remove()}},_setColumnVis:function(a,b){var d=this.s.dt,e=b?"":"none";c(d.column(a).header()).css("display",e);c(d.column(a).footer()).css("display",e);d.column(a).nodes().to$().css("display",e)},_tabIndexes:function(){var a=this.s.dt,
10243b=a.cells({page:"current"}).nodes().to$(),d=a.settings()[0],e=this.c.details.target;b.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]");c("number"===typeof e?":eq("+e+")":e,a.rows({page:"current"}).nodes()).attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1)}});j.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];j.display={childRow:function(a,b,d){if(b){if(c(a.node()).hasClass("parent"))return a.child(d(),
10244"child").show(),!0}else{if(a.child.isShown())return a.child(!1),c(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();c(a.node()).addClass("parent");return!0}},childRowImmediate:function(a,b,d){if(!b&&a.child.isShown()||!a.responsive.hasHidden())return a.child(!1),c(a.node()).removeClass("parent"),!1;a.child(d(),"child").show();c(a.node()).addClass("parent");return!0},modal:function(a){return function(b,d,e){if(d)c("div.dtr-modal-content").empty().append(e());else{var f=function(){g.remove();
10245c(k).off("keypress.dtr")},g=c('<div class="dtr-modal"/>').append(c('<div class="dtr-modal-display"/>').append(c('<div class="dtr-modal-content"/>').append(e())).append(c('<div class="dtr-modal-close">&times;</div>').click(function(){f()}))).append(c('<div class="dtr-modal-background"/>').click(function(){f()})).appendTo("body");c(k).on("keyup.dtr",function(a){27===a.keyCode&&(a.stopPropagation(),f())})}a&&a.header&&c("div.dtr-modal-content").prepend("<h2>"+a.header(b)+"</h2>")}}};j.renderer={listHidden:function(){return function(a,
10246b,d){return(a=c.map(d,function(a){return a.hidden?'<li data-dtr-index="'+a.columnIndex+'" data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><span class="dtr-title">'+a.title+'</span> <span class="dtr-data">'+a.data+"</span></li>":""}).join(""))?c('<ul data-dtr-index="'+b+'"/>').append(a):!1}},tableAll:function(a){a=c.extend({tableClass:""},a);return function(b,d,e){b=c.map(e,function(a){return'<tr data-dt-row="'+a.rowIndex+'" data-dt-column="'+a.columnIndex+'"><td>'+a.title+":</td> <td>"+
10247a.data+"</td></tr>"}).join("");return c('<table class="'+a.tableClass+'" width="100%"/>').append(b)}}};j.defaults={breakpoints:j.breakpoints,auto:!0,details:{display:j.display.childRow,renderer:j.renderer.listHidden(),target:0,type:"inline"},orthogonal:"display"};var o=c.fn.dataTable.Api;o.register("responsive()",function(){return this});o.register("responsive.index()",function(a){a=c(a);return{column:a.data("dtr-index"),row:a.parent().data("dtr-index")}});o.register("responsive.rebuild()",function(){return this.iterator("table",
10248function(a){a._responsive&&a._responsive._classLogic()})});o.register("responsive.recalc()",function(){return this.iterator("table",function(a){a._responsive&&(a._responsive._resizeAuto(),a._responsive._resize())})});o.register("responsive.hasHidden()",function(){var a=this.context[0];return a._responsive?-1!==c.inArray(!1,a._responsive.s.current):!1});j.version="2.1.0";c.fn.dataTable.Responsive=j;c.fn.DataTable.Responsive=j;c(k).on("preInit.dt.dtr",function(a,b){if("dt"===a.namespace&&(c(b.nTable).hasClass("responsive")||
10249c(b.nTable).hasClass("dt-responsive")||b.oInit.responsive||m.defaults.responsive)){var d=b.oInit.responsive;!1!==d&&new j(b,c.isPlainObject(d)?d:{})}});return j});
10250
10251
10252/*!
10253 Bootstrap integration for DataTables' Responsive
10254 ©2015-2016 SpryMedia Ltd - datatables.net/license
10255*/
10256(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,g=b.modal,d=c('<div class="modal fade dtr-bs-modal" role="dialog"><div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body"/></div></div></div>');
10257b.modal=function(a){return function(b,e,f){c.fn.modal?e||(a&&a.header&&d.find("div.modal-header").empty().append('<h4 class="modal-title">'+a.header(b)+"</h4>"),d.find("div.modal-body").empty().append(f()),d.appendTo("body").modal()):g(b,e,f)}};return a.Responsive});
10258
10259
10260function isUrl(n){if(n.substring(0,1)==="/")return!0;return/^(ftp|http|https|):{0,1}\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/.test(n)}var bootstrapModal={};bootstrapModal.showModal=function(n,t,i,r,u,f,e){var c='<div id="'+e+'" class="modal '+u+'" tabindex="-1" role="dialog"><div class="modal-dialog modal-'+r+'"><div class="modal-content"><\/div><\/div><\/div>',o,s,h;$("body").append(c);o='<div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;<\/span><\/button>
10260'+n+"<\/div>";$("#"+e+" .modal-content").append(o);s='<div class="modal-body">'+t+"<\/div>";$("#"+e+" .modal-content").append(s);i!==""&&(h='<div class="modal-footer">'+i+"<\/div>",$("#"+e+" .modal-content").append(h));$.isNumeric(t)?$.ajax({url:`/fend/request/reqArticle.asp?article_id=${t}&doNotRedirect=true`,success:function(n){$(`#${e} .modal-body`).html(n)}}):isUrl(t)?($(`#${e} .modal-body`).html('<p><em class="fa fa-2x fa-cog fa-spin"><\/em>&nbsp;&nbsp;Loading...<\/p>'),$.ajax({url:t,success:function(n){$(`#${e} .modal-body`).html(n)}})):$(`#${e} .modal-body`).html(t);f?(backdrop=!0,keyboard=!0):(backdrop="static",keyboard=!1);$(`#${e}`).on("show.bs.modal",function(){var t=$(".modal:visible").length,n;t>0&&(n=parseInt($(this).css("z-index"))+10*t,$(this).css("z-index",n),setTimeout(function(){$(".modal-backdrop").last().css("z-index",n-1)},0))});$("#"+e+"").on("hidden.bs.modal",function(){$(".modal .select-actions").removeClass("active");$("#"+e+"").remove()}).modal({backdrop:backdrop,keyboard:keyboard,show:!0})};   navHover = function() {
10261try
10262{ 
10263var lis = document.getElementById("body").getElementsByTagName("LI");
10264for (var i=0; i<lis.length; i++) {
10265lis[i].onmouseover=function() {
10266this.className+=" iehover";
10267}
10268lis[i].onmouseout=function() {
10269this.className=this.className.replace(new RegExp(" iehover\\b"), "");
10270}
10271}
10272} 
10273catch(err)
10274{
10275} 
10276}
10277  if (window.attachEvent) window.attachEvent("onload", navHover);function fontSize(n="normal"){$.ajax({url:"/fend/request/set-font-size.asp?s="+n,success:function(){$("#fontsizeshell").find("a").removeClass("active");$('a[data-id="'+n+'"]').addClass("active");$("body").removeClass("size-small size-normal size-large").addClass("size-"+n)}})}$(document).ready(function(){$(".event-modal").on("click",function(n){n.preventDefault();var i=$(this).data("name"),t=$(this).data("content");bootstrapModal.showModal("Event Details",t,'<button type="button" class="btn btn-default" data-dismiss="modal">Close<\/button>',"md","",!0,"event-modal")});$(document).on("touchstart",function(){documentClick=!0});$(document).on("touchmove",function(){documentClick=!1});$(document).on("click touchend",function(n){n.type=="click"&&(documentClick=!0);documentClick&&($("#navbar").removeClass("active"),$(".nav-icon").removeClass("open"),$("#navbar .has-subs .active").removeClass("active"))});$("#navbar").on("click touchend",function(n){n.stopPropagation()});$("#nav-toggle").on("click touchend",function(n){n.preventDefault();n.stopPropagation();$("#navbar").toggleClass("active");$(".nav-icon").toggleClass("open");$("#navbar .has-subs .active").removeClass("active")});$("#navbar").on("click",".has-subs > a",function(n){n.preventDefault();$(this).next().hasClass("active")?$(this).next().removeClass("active"):($("#navbar .has-subs > ul").removeClass("active"),$(this).next().addClass("active"))});if($(".home-box").matchHeight({byRow:!0}),$("#icon-row .col-xs-6").matchHeight({byRow:!0}),$("#banner-carousel").length&&$("#banner-carousel").slick({adaptiveHeight:!0,dots:!0,arrows:!1,infinite:!0,autoplay:!0,fade:!0,cssEase:"linear",autoplaySpeed:1e4}),$("body.articleid145").length&&$(".datatable").DataTable({paging:!0,order:[],dom:'<"panel-heading"<"row"<"col-sm-6"><"col-sm-6"f>>>tr',language:{search:"Filter"},buttons:[{extend:"colvis",columns:":not(.perm)",postfixButtons:[{extend:"colvisRestore",text:"Show All"}]}],responsive:{details:{type:"column",target:-1,renderer:$.fn.dataTable.Responsive.renderer.listHidden()}},columnDefs:[{className:"control",orderable:!1,targets:-1},{visible:!1,targets:"col-hidden"}]}),$("body.articleid5412").length&&$(".datatable").DataTable({paging:!0,order:[],dom:'<"panel-heading"<"row"<"col-sm-6"><"col-sm-6"f>>>tr',language:{search:"Filtrer"},buttons:[{extend:"colvis",columns:":not(.perm)",postfixButtons:[{extend:"colvisRestore",text:"Show All"}]}],responsive:{details:{type:"column",target:-1,renderer:$.fn.dataTable.Responsive.renderer.listHidden()}},columnDefs:[{className:"control",orderable:!1,targets:-1},{visible:!1,targets:"col-hidden"}]}),$("body.articleid12.en").length&&($('#citem_type_id option[value="
102770"]').remove(),$('#citem_type_id option[value="2"]').remove(),$('#citem_type_id option[value="3"]').remove()),$("body.articleid12.fr").length&&($('#citem_type_id option[value="0"]').remove(),$('#citem_type_id option[value="1"]').remove(),$('#citem_type_id option[value="3"]').remove()),$("body.articleid5530").length)$(".event-modal-board").on("click",function(n){n.preventDefault();var t=$(this).data("name"),i=$(this).data("content"),r=`
10278<a href="/fend/board/invite.asp?i=${i}" class="btn btn-success pull-left">Download Calendar Invite</a>
10279<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
10280`;bootstrapModal.showModal(t==""?"Event Details":t,i,r,"md","",!0,"event-modal")})});$(document).ready(function () {
10281
10282    openNav = function () {
10283        document.getElementById("mySidepanel").style.width = "275px";
10284    }
10285
10286    closeNav = function () {
10287        document.getElementById("mySidepanel").style.width = "0";
10288    }
10289
10290    var listContrastClasses = 'asb-grayscale asb-high-contrast asb-negative-contrast asb-light-bg',
10291        checkmarkHtml = '<span class="material-symbols-outlined">check</span>';
10292
10293
10294    if ($('#accessibility-options').length) {
10295
10296        //hides menu when clicking outside of the menu while it's open
10297        $(document).on('click', function (event) {
10298            if (!$(event.target).closest('#accessibility-options').length) {
10299                document.getElementById("mySidepanel").style.width = "0";
10300            }
10301        });
10302
10303        //checking if body already has accessibility classes due to existing sesssion variable
10304        if ($('body[class*="asb-"]').length) {
10305            $.each($('body').attr("class").split(/\s+/), function (key, value) {
10306                if (~value.indexOf('asb-')) {
10307                    var thisButton = $('.tools-menu button[data-name="' + (~value.indexOf('asb-inc-font-') ? 'inc-font' : value.replace('asb-', '')) + '"]');
10308                    thisButton.addClass('active').find('.checkmark').html(checkmarkHtml);
10309                }
10310            });
10311        }
10312
10313
10314        var accessibilityFontSizeLevel = $(document).find('#fontSizeLevel');
10315        var thisFontLevel = parseInt(accessibilityFontSizeLevel.val());
10316        $(document).find('#fontSizeLevel').remove();
10317        var maxFontLevel = 5;
10318
10319
10320        //event triggered when clicking on buttons in accessibility tool menu
10321        $(document).on('click', '.tools-menu button', function () {
10322            var thisButton = $(this);
10323            var thisButtonName = thisButton.data('name');
10324            var thisAccessibilityClass = 'asb-' + thisButtonName;
10325
10326            switch (thisButtonName) {
10327                case 'inc-font':
10328                    if (thisFontLevel < maxFontLevel) {
10329                        thisFontLevel++;
10330                        if (~$('body').attr('class').indexOf('asb-inc-font-')) {
10331                            $('body').removeClass(function (index, className) {
10332                                return (className.match(/(^|\s)(asb-inc-font-)\S+/g) || []).join(' ');
10333                            });
10334                        }
10335                        $('body').addClass(thisAccessibilityClass + '-' + thisFontLevel);
10336                        thisButton.addClass('active').find('.checkmark').html(checkmarkHtml);
10337                    }
10338                    break;
10339                case 'dec-font':
10340                    $('body').removeClass(function (index, className) {
10341                        return (className.match(/(^|\s)(asb-inc-font-)\S+/g) || []).join(' ');
10342                    });
10343                    if (thisFontLevel == 1 || thisFontLevel <= 0) {
10344                        thisFontLevel = 0;
10345                        $('.tools-menu button[data-name="inc-font"]').removeClass('active').find('.checkmark').html(null);
10346                    } else {
10347                        thisFontLevel--;
10348                        $('body').addClass('asb-inc-font-' + thisFontLevel);
10349                    }
10350                    break;
10351
10352                //disable all active options
10353                case 'reset-all':
10354                    $('body').removeClass(function (index, className) {
10355                        return (className.match(/(^|\s)(asb-)\S+/g) || []).join(' ');
10356                    });
10357                    $('.tools-menu button').removeClass('active').find('.checkmark').html(null);
10358                    thisFontLevel = 0;
10359                    break;
10360
10361                //only allow one of the following "contrast" options to be active
10362                case 'grayscale':
10363                case 'high-contrast':
10364                case 'negative-contrast':
10365                case 'light-bg':
10366                    if ($('body').hasClass(thisAccessibilityClass)) {
10367                        $('body').removeClass(thisAccessibilityClass);
10368                        thisButton.removeClass('active').find('.checkmark').html(null);
10369                    } else {
10370                        $('body').removeClass(listContrastClasses).addClass(thisAccessibilityClass);
10371                        $('.tools-menu button[data-type="contrast"]').removeClass('active').find('.checkmark').html(null);
10372                        thisButton.addClass('active').find('.checkmark').html(checkmarkHtml);
10373                    }
10374                    break;
10375
10376                //normal options can be toggled individually
10377                default:
10378                    if ($('body').hasClass(thisAccessibilityClass)) {
10379                        $('body').removeClass(thisAccessibilityClass);
10380                        thisButton.removeClass('active').find('.checkmark').html(null);
10381                    } else {
10382                        $('body').addClass(thisAccessibilityClass);
10383                        thisButton.addClass('active').find('.checkmark').html(checkmarkHtml);
10384                    }
10385                    break;
10386            }
10387
10388
10389            //building list of active options; to be saved in session variable
10390            var activeAccessibilityOps = '';
10391            var activeAccessibilityOpsSeparator = '';
10392            $('.tools-menu button.active').each(function () {
10393                var thisButton = $(this);
10394                var thisButtonName = thisButton.data('name');
10395                var thisAccessibilityClass = 'asb-' + thisButtonName;
10396                if (thisButtonName == 'inc-font') thisAccessibilityClass += '-' + thisFontLevel;
10397                activeAccessibilityOps += activeAccessibilityOpsSeparator + thisAccessibilityClass;
10398                activeAccessibilityOpsSeparator = ' ';
10399            });
10400            $.ajax({
10401                url: '/fend/request/accessibility-tools.asp',
10402                type: 'POST',
10403                data: {
10404                    a: activeAccessibilityOps
10405                }
10406            });
10407
10408        });
10409    }
10410});

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