grape_swagger_ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +24 -0
  4. data/app/assets/images/grape_swagger_ui/explorer_icons.png +0 -0
  5. data/app/assets/images/grape_swagger_ui/throbber.gif +0 -0
  6. data/app/assets/javascripts/grape_swagger_ui/application.js +24 -0
  7. data/app/assets/javascripts/grape_swagger_ui/backbone-min.js +38 -0
  8. data/app/assets/javascripts/grape_swagger_ui/handlebars-1.0.0.js +2278 -0
  9. data/app/assets/javascripts/grape_swagger_ui/highlight.7.3.pack.js +1 -0
  10. data/app/assets/javascripts/grape_swagger_ui/jquery-1.8.0.min.js +2 -0
  11. data/app/assets/javascripts/grape_swagger_ui/jquery.ba-bbq.min.js +18 -0
  12. data/app/assets/javascripts/grape_swagger_ui/jquery.slideto.min.js +1 -0
  13. data/app/assets/javascripts/grape_swagger_ui/jquery.wiggle.min.js +8 -0
  14. data/app/assets/javascripts/grape_swagger_ui/shred.bundle.js +2765 -0
  15. data/app/assets/javascripts/grape_swagger_ui/shred/content.js +193 -0
  16. data/app/assets/javascripts/grape_swagger_ui/swagger-oauth.js +211 -0
  17. data/app/assets/javascripts/grape_swagger_ui/swagger-ui.js +2324 -0
  18. data/app/assets/javascripts/grape_swagger_ui/swagger.js +1653 -0
  19. data/app/assets/javascripts/grape_swagger_ui/underscore-min.js +32 -0
  20. data/app/assets/stylesheets/grape_swagger_ui/application.css +15 -0
  21. data/app/assets/stylesheets/grape_swagger_ui/reset.css +125 -0
  22. data/app/assets/stylesheets/grape_swagger_ui/screen.css.scss +1224 -0
  23. data/app/controllers/grape_swagger_ui/api_doc_controller.rb +8 -0
  24. data/app/controllers/grape_swagger_ui/application_controller.rb +10 -0
  25. data/app/helpers/grape_swagger_ui/application_helper.rb +4 -0
  26. data/app/views/grape_swagger_ui/api_doc/index.html.erb +2 -0
  27. data/app/views/layouts/grape_swagger_ui/application.html.erb +55 -0
  28. data/config/routes.rb +3 -0
  29. data/lib/grape_swagger_ui.rb +11 -0
  30. data/lib/grape_swagger_ui/engine.rb +5 -0
  31. data/lib/grape_swagger_ui/version.rb +3 -0
  32. data/lib/tasks/grape_swagger_ui_tasks.rake +4 -0
  33. metadata +91 -0
@@ -0,0 +1 @@
1
+ var hljs=new function(){function l(o){return o.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;")}function b(p){for(var o=p.firstChild;o;o=o.nextSibling){if(o.nodeName=="CODE"){return o}if(!(o.nodeType==3&&o.nodeValue.match(/\s+/))){break}}}function h(p,o){return Array.prototype.map.call(p.childNodes,function(q){if(q.nodeType==3){return o?q.nodeValue.replace(/\n/g,""):q.nodeValue}if(q.nodeName=="BR"){return"\n"}return h(q,o)}).join("")}function a(q){var p=(q.className+" "+q.parentNode.className).split(/\s+/);p=p.map(function(r){return r.replace(/^language-/,"")});for(var o=0;o<p.length;o++){if(e[p[o]]||p[o]=="no-highlight"){return p[o]}}}function c(q){var o=[];(function p(r,s){for(var t=r.firstChild;t;t=t.nextSibling){if(t.nodeType==3){s+=t.nodeValue.length}else{if(t.nodeName=="BR"){s+=1}else{if(t.nodeType==1){o.push({event:"start",offset:s,node:t});s=p(t,s);o.push({event:"stop",offset:s,node:t})}}}}return s})(q,0);return o}function j(x,v,w){var p=0;var y="";var r=[];function t(){if(x.length&&v.length){if(x[0].offset!=v[0].offset){return(x[0].offset<v[0].offset)?x:v}else{return v[0].event=="start"?x:v}}else{return x.length?x:v}}function s(A){function z(B){return" "+B.nodeName+'="'+l(B.value)+'"'}return"<"+A.nodeName+Array.prototype.map.call(A.attributes,z).join("")+">"}while(x.length||v.length){var u=t().splice(0,1)[0];y+=l(w.substr(p,u.offset-p));p=u.offset;if(u.event=="start"){y+=s(u.node);r.push(u.node)}else{if(u.event=="stop"){var o,q=r.length;do{q--;o=r[q];y+=("</"+o.nodeName.toLowerCase()+">")}while(o!=u.node);r.splice(q,1);while(q<r.length){y+=s(r[q]);q++}}}}return y+l(w.substr(p))}function f(q){function o(s,r){return RegExp(s,"m"+(q.cI?"i":"")+(r?"g":""))}function p(y,w){if(y.compiled){return}y.compiled=true;var s=[];if(y.k){var r={};function z(A,t){t.split(" ").forEach(function(B){var C=B.split("|");r[C[0]]=[A,C[1]?Number(C[1]):1];s.push(C[0])})}y.lR=o(y.l||hljs.IR,true);if(typeof y.k=="string"){z("keyword",y.k)}else{for(var x in y.k){if(!y.k.hasOwnProperty(x)){continue}z(x,y.k[x])}}y.k=r}if(w){if(y.bWK){y.b="\\b("+s.join("|")+")\\s"}y.bR=o(y.b?y.b:"\\B|\\b");if(!y.e&&!y.eW){y.e="\\B|\\b"}if(y.e){y.eR=o(y.e)}y.tE=y.e||"";if(y.eW&&w.tE){y.tE+=(y.e?"|":"")+w.tE}}if(y.i){y.iR=o(y.i)}if(y.r===undefined){y.r=1}if(!y.c){y.c=[]}for(var v=0;v<y.c.length;v++){if(y.c[v]=="self"){y.c[v]=y}p(y.c[v],y)}if(y.starts){p(y.starts,w)}var u=[];for(var v=0;v<y.c.length;v++){u.push(y.c[v].b)}if(y.tE){u.push(y.tE)}if(y.i){u.push(y.i)}y.t=u.length?o(u.join("|"),true):{exec:function(t){return null}}}p(q)}function d(D,E){function o(r,M){for(var L=0;L<M.c.length;L++){var K=M.c[L].bR.exec(r);if(K&&K.index==0){return M.c[L]}}}function s(K,r){if(K.e&&K.eR.test(r)){return K}if(K.eW){return s(K.parent,r)}}function t(r,K){return K.i&&K.iR.test(r)}function y(L,r){var K=F.cI?r[0].toLowerCase():r[0];return L.k.hasOwnProperty(K)&&L.k[K]}function G(){var K=l(w);if(!A.k){return K}var r="";var N=0;A.lR.lastIndex=0;var L=A.lR.exec(K);while(L){r+=K.substr(N,L.index-N);var M=y(A,L);if(M){v+=M[1];r+='<span class="'+M[0]+'">'+L[0]+"</span>"}else{r+=L[0]}N=A.lR.lastIndex;L=A.lR.exec(K)}return r+K.substr(N)}function z(){if(A.sL&&!e[A.sL]){return l(w)}var r=A.sL?d(A.sL,w):g(w);if(A.r>0){v+=r.keyword_count;B+=r.r}return'<span class="'+r.language+'">'+r.value+"</span>"}function J(){return A.sL!==undefined?z():G()}function I(L,r){var K=L.cN?'<span class="'+L.cN+'">':"";if(L.rB){x+=K;w=""}else{if(L.eB){x+=l(r)+K;w=""}else{x+=K;w=r}}A=Object.create(L,{parent:{value:A}});B+=L.r}function C(K,r){w+=K;if(r===undefined){x+=J();return 0}var L=o(r,A);if(L){x+=J();I(L,r);return L.rB?0:r.length}var M=s(A,r);if(M){if(!(M.rE||M.eE)){w+=r}x+=J();do{if(A.cN){x+="</span>"}A=A.parent}while(A!=M.parent);if(M.eE){x+=l(r)}w="";if(M.starts){I(M.starts,"")}return M.rE?0:r.length}if(t(r,A)){throw"Illegal"}w+=r;return r.length||1}var F=e[D];f(F);var A=F;var w="";var B=0;var v=0;var x="";try{var u,q,p=0;while(true){A.t.lastIndex=p;u=A.t.exec(E);if(!u){break}q=C(E.substr(p,u.index-p),u[0]);p=u.index+q}C(E.substr(p));return{r:B,keyword_count:v,value:x,language:D}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:l(E)}}else{throw H}}}function g(s){var o={keyword_count:0,r:0,value:l(s)};var q=o;for(var p in e){if(!e.hasOwnProperty(p)){continue}var r=d(p,s);r.language=p;if(r.keyword_count+r.r>q.keyword_count+q.r){q=r}if(r.keyword_count+r.r>o.keyword_count+o.r){q=o;o=r}}if(q.language){o.second_best=q}return o}function i(q,p,o){if(p){q=q.replace(/^((<[^>]+>|\t)+)/gm,function(r,v,u,t){return v.replace(/\t/g,p)})}if(o){q=q.replace(/\n/g,"<br>")}return q}function m(r,u,p){var v=h(r,p);var t=a(r);if(t=="no-highlight"){return}var w=t?d(t,v):g(v);t=w.language;var o=c(r);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=j(o,c(q),v)}w.value=i(w.value,u,p);var s=r.className;if(!s.match("(\\s|^)(language-)?"+t+"(\\s|$)")){s=s?(s+" "+t):t}r.innerHTML=w.value;r.className=s;r.result={language:t,kw:w.keyword_count,re:w.r};if(w.second_best){r.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function n(){if(n.called){return}n.called=true;Array.prototype.map.call(document.getElementsByTagName("pre"),b).filter(Boolean).forEach(function(o){m(o,hljs.tabReplace)})}function k(){window.addEventListener("DOMContentLoaded",n,false);window.addEventListener("load",n,false)}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=m;this.initHighlighting=n;this.initHighlightingOnLoad=k;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(q,r){var o={};for(var p in q){o[p]=q[p]}if(r){for(var p in r){o[p]=r[p]}}return o}}();hljs.LANGUAGES.xml=function(a){var c="[A-Za-z0-9\\._:-]+";var b={eW:true,c:[{cN:"attribute",b:c,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"<!--",e:"-->",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{title:"style"},c:[b],starts:{e:"</style>",rE:true,sL:"css"}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"title",b:"[^ />]+"},b]}]}}(hljs);hljs.LANGUAGES.json=function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}}(hljs);
@@ -0,0 +1,2 @@
1
+ /*! jQuery v@1.8.0 jquery.com | jquery.org/license */
2
+ (function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d<e;d++)p.event.add(b,c,h[c][d])}g.data&&(g.data=p.extend({},g.data))}function bE(a,b){var c;if(b.nodeType!==1)return;b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase(),c==="object"?(b.parentNode&&(b.outerHTML=a.outerHTML),p.support.html5Clone&&a.innerHTML&&!p.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):c==="input"&&bv.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):c==="option"?b.selected=a.defaultSelected:c==="input"||c==="textarea"?b.defaultValue=a.defaultValue:c==="script"&&b.text!==a.text&&(b.text=a.text),b.removeAttribute(p.expando)}function bF(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bG(a){bv.test(a.type)&&(a.defaultChecked=a.checked)}function bX(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=bV.length;while(e--){b=bV[e]+c;if(b in a)return b}return d}function bY(a,b){return a=b||a,p.css(a,"display")==="none"||!p.contains(a.ownerDocument,a)}function bZ(a,b){var c,d,e=[],f=0,g=a.length;for(;f<g;f++){c=a[f];if(!c.style)continue;e[f]=p._data(c,"olddisplay"),b?(!e[f]&&c.style.display==="none"&&(c.style.display=""),c.style.display===""&&bY(c)&&(e[f]=p._data(c,"olddisplay",cb(c.nodeName)))):(d=bH(c,"display"),!e[f]&&d!=="none"&&p._data(c,"olddisplay",d))}for(f=0;f<g;f++){c=a[f];if(!c.style)continue;if(!b||c.style.display==="none"||c.style.display==="")c.style.display=b?e[f]||"":"none"}return a}function b$(a,b,c){var d=bO.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function b_(a,b,c,d){var e=c===(d?"border":"content")?4:b==="width"?1:0,f=0;for(;e<4;e+=2)c==="margin"&&(f+=p.css(a,c+bU[e],!0)),d?(c==="content"&&(f-=parseFloat(bH(a,"padding"+bU[e]))||0),c!=="margin"&&(f-=parseFloat(bH(a,"border"+bU[e]+"Width"))||0)):(f+=parseFloat(bH(a,"padding"+bU[e]))||0,c!=="padding"&&(f+=parseFloat(bH(a,"border"+bU[e]+"Width"))||0));return f}function ca(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=!0,f=p.support.boxSizing&&p.css(a,"boxSizing")==="border-box";if(d<=0){d=bH(a,b);if(d<0||d==null)d=a.style[b];if(bP.test(d))return d;e=f&&(p.support.boxSizingReliable||d===a.style[b]),d=parseFloat(d)||0}return d+b_(a,b,c||(f?"border":"content"),e)+"px"}function cb(a){if(bR[a])return bR[a];var b=p("<"+a+">").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write("<!doctype html><html><body>"),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h<i;h++)d=g[h],f=/^\+/.test(d),f&&(d=d.substr(1)||"*"),e=a[d]=a[d]||[],e[f?"unshift":"push"](c)}}function cz(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h,i=a[f],j=0,k=i?i.length:0,l=a===cu;for(;j<k&&(l||!h);j++)h=i[j](c,d,e),typeof h=="string"&&(!l||g[h]?h=b:(c.dataTypes.unshift(h),h=cz(a,c,d,e,h,g)));return(l||!h)&&!g["*"]&&(h=cz(a,c,d,e,"*",g)),h}function cA(a,c){var d,e,f=p.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((f[d]?a:e||(e={}))[d]=c[d]);e&&p.extend(!0,a,e)}function cB(a,c,d){var e,f,g,h,i=a.contents,j=a.dataTypes,k=a.responseFields;for(f in k)f in d&&(c[k[f]]=d[f]);while(j[0]==="*")j.shift(),e===b&&(e=a.mimeType||c.getResponseHeader("content-type"));if(e)for(f in i)if(i[f]&&i[f].test(e)){j.unshift(f);break}if(j[0]in d)g=j[0];else{for(f in d){if(!j[0]||a.converters[f+" "+j[0]]){g=f;break}h||(h=f)}g=g||h}if(g)return g!==j[0]&&j.unshift(g),d[g]}function cC(a,b){var c,d,e,f,g=a.dataTypes.slice(),h=g[0],i={},j=0;a.dataFilter&&(b=a.dataFilter(b,a.dataType));if(g[1])for(c in a.converters)i[c.toLowerCase()]=a.converters[c];for(;e=g[++j];)if(e!=="*"){if(h!=="*"&&h!==e){c=i[h+" "+e]||i["* "+e];if(!c)for(d in i){f=d.split(" ");if(f[1]===e){c=i[h+" "+f[0]]||i["* "+f[0]];if(c){c===!0?c=i[d]:i[d]!==!0&&(e=f[0],g.splice(j--,0,e));break}}}if(c!==!0)if(c&&a["throws"])b=c(b);else try{b=c(b)}catch(k){return{state:"parsererror",error:c?k:"No conversion from "+h+" to "+e}}}h=e}return{state:"success",data:b}}function cK(){try{return new a.XMLHttpRequest}catch(b){}}function cL(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cT(){return setTimeout(function(){cM=b},0),cM=p.now()}function cU(a,b){p.each(b,function(b,c){var d=(cS[b]||[]).concat(cS["*"]),e=0,f=d.length;for(;e<f;e++)if(d[e].call(a,b,c))return})}function cV(a,b,c){var d,e=0,f=0,g=cR.length,h=p.Deferred().always(function(){delete i.elem}),i=function(){var b=cM||cT(),c=Math.max(0,j.startTime+j.duration-b),d=1-(c/j.duration||0),e=0,f=j.tweens.length;for(;e<f;e++)j.tweens[e].run(d);return h.notifyWith(a,[j,d,c]),d<1&&f?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:p.extend({},b),opts:p.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:cM||cT(),duration:c.duration,tweens:[],createTween:function(b,c,d){var e=p.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(e),e},stop:function(b){var c=0,d=b?j.tweens.length:0;for(;c<d;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;cW(k,j.opts.specialEasing);for(;e<g;e++){d=cR[e].call(j,a,k,j.opts);if(d)return d}return cU(j,k),p.isFunction(j.opts.start)&&j.opts.start.call(a,j),p.fx.timer(p.extend(i,{anim:j,queue:j.opts.queue,elem:a})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}function cW(a,b){var c,d,e,f,g;for(c in a){d=p.camelCase(c),e=b[d],f=a[c],p.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=p.cssHooks[d];if(g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}}function cX(a,b,c){var d,e,f,g,h,i,j,k,l=this,m=a.style,n={},o=[],q=a.nodeType&&bY(a);c.queue||(j=p._queueHooks(a,"fx"),j.unqueued==null&&(j.unqueued=0,k=j.empty.fire,j.empty.fire=function(){j.unqueued||k()}),j.unqueued++,l.always(function(){l.always(function(){j.unqueued--,p.queue(a,"fx").length||j.empty.fire()})})),a.nodeType===1&&("height"in b||"width"in b)&&(c.overflow=[m.overflow,m.overflowX,m.overflowY],p.css(a,"display")==="inline"&&p.css(a,"float")==="none"&&(!p.support.inlineBlockNeedsLayout||cb(a.nodeName)==="inline"?m.display="inline-block":m.zoom=1)),c.overflow&&(m.overflow="hidden",p.support.shrinkWrapBlocks||l.done(function(){m.overflow=c.overflow[0],m.overflowX=c.overflow[1],m.overflowY=c.overflow[2]}));for(d in b){f=b[d];if(cO.exec(f)){delete b[d];if(f===(q?"hide":"show"))continue;o.push(d)}}g=o.length;if(g){h=p._data(a,"fxshow")||p._data(a,"fxshow",{}),q?p(a).show():l.done(function(){p(a).hide()}),l.done(function(){var b;p.removeData(a,"fxshow",!0);for(b in n)p.style(a,b,n[b])});for(d=0;d<g;d++)e=o[d],i=l.createTween(e,q?h[e]:0),n[e]=h[e]||p.style(a,e),e in h||(h[e]=i.start,q&&(i.end=i.start,i.start=e==="width"||e==="height"?1:0))}}function cY(a,b,c,d,e){return new cY.prototype.init(a,b,c,d,e)}function cZ(a,b){var c,d={height:a},e=0;for(;e<4;e+=2-b)c=bU[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function c_(a){return p.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}var c,d,e=a.document,f=a.location,g=a.navigator,h=a.jQuery,i=a.$,j=Array.prototype.push,k=Array.prototype.slice,l=Array.prototype.indexOf,m=Object.prototype.toString,n=Object.prototype.hasOwnProperty,o=String.prototype.trim,p=function(a,b){return new p.fn.init(a,b,c)},q=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,r=/\S/,s=/\s+/,t=r.test(" ")?/^[\s\xA0]+|[\s\xA0]+$/g:/^\s+|\s+$/g,u=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i<j;i++)if((a=arguments[i])!=null)for(c in a){d=h[c],e=a[c];if(h===e)continue;k&&e&&(p.isPlainObject(e)||(f=p.isArray(e)))?(f?(f=!1,g=d&&p.isArray(d)?d:[]):g=d&&p.isPlainObject(d)?d:{},h[c]=p.extend(k,g,e)):e!==b&&(h[c]=e)}return h},p.extend({noConflict:function(b){return a.$===p&&(a.$=i),b&&a.jQuery===p&&(a.jQuery=h),p},isReady:!1,readyWait:1,holdReady:function(a){a?p.readyWait++:p.ready(!0)},ready:function(a){if(a===!0?--p.readyWait:p.isReady)return;if(!e.body)return setTimeout(p.ready,1);p.isReady=!0;if(a!==!0&&--p.readyWait>0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f<g;)if(c.apply(a[f++],d)===!1)break}else if(h){for(e in a)if(c.call(a[e],e,a[e])===!1)break}else for(;f<g;)if(c.call(a[f],f,a[f++])===!1)break;return a},trim:o?function(a){return a==null?"":o.call(a)}:function(a){return a==null?"":a.toString().replace(t,"")},makeArray:function(a,b){var c,d=b||[];return a!=null&&(c=p.type(a),a.length==null||c==="string"||c==="function"||c==="regexp"||p.isWindow(a)?j.call(d,a):p.merge(d,a)),d},inArray:function(a,b,c){var d;if(b){if(l)return l.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=c.length,e=a.length,f=0;if(typeof d=="number")for(;f<d;f++)a[e++]=c[f];else while(c[f]!==b)a[e++]=c[f++];return a.length=e,a},grep:function(a,b,c){var d,e=[],f=0,g=a.length;c=!!c;for(;f<g;f++)d=!!b(a[f],f),c!==d&&e.push(a[f]);return e},map:function(a,c,d){var e,f,g=[],h=0,i=a.length,j=a instanceof p||i!==b&&typeof i=="number"&&(i>0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h<i;h++)e=c(a[h],h,d),e!=null&&(g[g.length]=e);else for(f in a)e=c(a[f],f,d),e!=null&&(g[g.length]=e);return g.concat.apply([],g)},guid:1,proxy:function(a,c){var d,e,f;return typeof c=="string"&&(d=a[c],c=a,a=d),p.isFunction(a)?(e=k.call(arguments,2),f=function(){return a.apply(c,e.concat(k.call(arguments)))},f.guid=a.guid=a.guid||f.guid||p.guid++,f):b},access:function(a,c,d,e,f,g,h){var i,j=d==null,k=0,l=a.length;if(d&&typeof d=="object"){for(k in d)p.access(a,c,k,d[k],1,g,e);f=1}else if(e!==b){i=h===b&&p.isFunction(e),j&&(i?(i=c,c=function(a,b,c){return i.call(p(a),c)}):(c.call(a,e),c=null));if(c)for(;k<l;k++)c(a[k],d,i?e.call(a[k],k,c(a[k],d)):e,h);f=1}return f?a:j?c.call(a):l?c(a[0],d):g},now:function(){return(new Date).getTime()}}),p.ready.promise=function(b){if(!d){d=p.Deferred();if(e.readyState==="complete"||e.readyState!=="loading"&&e.addEventListener)setTimeout(p.ready,1);else if(e.addEventListener)e.addEventListener("DOMContentLoaded",D,!1),a.addEventListener("load",p.ready,!1);else{e.attachEvent("onreadystatechange",D),a.attachEvent("onload",p.ready);var c=!1;try{c=a.frameElement==null&&e.documentElement}catch(f){}c&&c.doScroll&&function g(){if(!p.isReady){try{c.doScroll("left")}catch(a){return setTimeout(g,50)}p.ready()}}()}}return d.promise(b)},p.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){E["[object "+b+"]"]=b.toLowerCase()}),c=p(e);var F={};p.Callbacks=function(a){a=typeof a=="string"?F[a]||G(a):p.extend({},a);var c,d,e,f,g,h,i=[],j=!a.once&&[],k=function(b){c=a.memory&&b,d=!0,h=f||0,f=0,g=i.length,e=!0;for(;i&&h<g;h++)if(i[h].apply(b[0],b[1])===!1&&a.stopOnFalse){c=!1;break}e=!1,i&&(j?j.length&&k(j.shift()):c?i=[]:l.disable())},l={add:function(){if(i){var b=i.length;(function d(b){p.each(b,function(b,c){p.isFunction(c)&&(!a.unique||!l.has(c))?i.push(c):c&&c.length&&d(c)})})(arguments),e?g=i.length:c&&(f=b,k(c))}return this},remove:function(){return i&&p.each(arguments,function(a,b){var c;while((c=p.inArray(b,i,c))>-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b<d;b++)c[b]&&p.isFunction(c[b].promise)?c[b].promise().done(g(b,j,c)).fail(f.reject).progress(g(b,i,h)):--e}return e||f.resolveWith(j,c),f.promise()}}),p.support=function(){var b,c,d,f,g,h,i,j,k,l,m,n=e.createElement("div");n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="<div></div>",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e<f;e++)delete d[b[e]];if(!(c?K:p.isEmptyObject)(d))return}}if(!c){delete h[i].data;if(!K(h[i]))return}g?p.cleanData([a],!0):p.support.deleteExpando||h!=h.window?delete h[i]:h[i]=null},_data:function(a,b,c){return p.data(a,b,c,!0)},acceptData:function(a){var b=a.nodeName&&p.noData[a.nodeName.toLowerCase()];return!b||b!==!0&&a.getAttribute("classid")===b}}),p.fn.extend({data:function(a,c){var d,e,f,g,h,i=this[0],j=0,k=null;if(a===b){if(this.length){k=p.data(i);if(i.nodeType===1&&!p._data(i,"parsedAttrs")){f=i.attributes;for(h=f.length;j<h;j++)g=f[j].name,g.indexOf("data-")===0&&(g=p.camelCase(g.substring(5)),J(i,g,k[g]));p._data(i,"parsedAttrs",!0)}}return k}return typeof a=="object"?this.each(function(){p.data(this,a)}):(d=a.split(".",2),d[1]=d[1]?"."+d[1]:"",e=d[1]+"!",p.access(this,function(c){if(c===b)return k=this.triggerHandler("getData"+e,[d[0]]),k===b&&i&&(k=p.data(i,a),k=J(i,a,k)),k===b&&d[1]?this.data(d[0]):k;d[1]=c,this.each(function(){var b=p(this);b.triggerHandler("setData"+e,d),p.data(this,a,c),b.triggerHandler("changeData"+e,d)})},null,c,arguments.length>1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length<d?p.queue(this[0],a):c===b?this:this.each(function(){var b=p.queue(this,a,c);p._queueHooks(this,a),a==="fx"&&b[0]!=="inprogress"&&p.dequeue(this,a)})},dequeue:function(a){return this.each(function(){p.dequeue(this,a)})},delay:function(a,b){return a=p.fx?p.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){var d,e=1,f=p.Deferred(),g=this,h=this.length,i=function(){--e||f.resolveWith(g,[g])};typeof a!="string"&&(c=a,a=b),a=a||"fx";while(h--)(d=p._data(g[h],a+"queueHooks"))&&d.empty&&(e++,d.empty.add(i));return i(),f.promise(c)}});var L,M,N,O=/[\t\r\n]/g,P=/\r/g,Q=/^(?:button|input)$/i,R=/^(?:button|input|object|select|textarea)$/i,S=/^a(?:rea|)$/i,T=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,U=p.support.getSetAttribute;p.fn.extend({attr:function(a,b){return p.access(this,p.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{f=" "+e.className+" ";for(g=0,h=b.length;g<h;g++)~f.indexOf(" "+b[g]+" ")||(f+=b[g]+" ");e.className=p.trim(f)}}}return this},removeClass:function(a){var c,d,e,f,g,h,i;if(p.isFunction(a))return this.each(function(b){p(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(s);for(h=0,i=this.length;h<i;h++){e=this[h];if(e.nodeType===1&&e.className){d=(" "+e.className+" ").replace(O," ");for(f=0,g=c.length;f<g;f++)while(d.indexOf(" "+c[f]+" ")>-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(O," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c<d;c++){e=h[c];if(e.selected&&(p.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!p.nodeName(e.parentNode,"optgroup"))){b=p(e).val();if(i)return b;g.push(b)}}return i&&!g.length&&h.length?p(h[f]).val():g},set:function(a,b){var c=p.makeArray(b);return p(a).find("option").each(function(){this.selected=p.inArray(p(this).val(),c)>=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g<d.length;g++)e=d[g],e&&(c=p.propFix[e]||e,f=T.test(e),f||p.attr(a,e,""),a.removeAttribute(U?e:c),f&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(Q.test(a.nodeName)&&a.parentNode)p.error("type property can't be changed");else if(!p.support.radioValue&&b==="radio"&&p.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}},value:{get:function(a,b){return L&&p.nodeName(a,"button")?L.get(a,b):b in a?a.value:null},set:function(a,b,c){if(L&&p.nodeName(a,"button"))return L.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,f,g,h=a.nodeType;if(!a||h===3||h===8||h===2)return;return g=h!==1||!p.isXMLDoc(a),g&&(c=p.propFix[c]||c,f=p.propHooks[c]),d!==b?f&&"set"in f&&(e=f.set(a,d,c))!==b?e:a[c]=d:f&&"get"in f&&(e=f.get(a,c))!==null?e:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):R.test(a.nodeName)||S.test(a.nodeName)&&a.href?0:b}}}}),M={get:function(a,c){var d,e=p.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;return b===!1?p.removeAttr(a,c):(d=p.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase())),c}},U||(N={name:!0,id:!0,coords:!0},L=p.valHooks.button={get:function(a,c){var d;return d=a.getAttributeNode(c),d&&(N[c]?d.value!=="":d.specified)?d.value:b},set:function(a,b,c){var d=a.getAttributeNode(c);return d||(d=e.createAttribute(c),a.setAttributeNode(d)),d.value=b+""}},p.each(["width","height"],function(a,b){p.attrHooks[b]=p.extend(p.attrHooks[b],{set:function(a,c){if(c==="")return a.setAttribute(b,"auto"),c}})}),p.attrHooks.contenteditable={get:L.get,set:function(a,b,c){b===""&&(b="false"),L.set(a,b,c)}}),p.support.hrefNormalized||p.each(["href","src","width","height"],function(a,c){p.attrHooks[c]=p.extend(p.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),p.support.style||(p.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),p.support.optSelected||(p.propHooks.selected=p.extend(p.propHooks.selected,{get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}})),p.support.enctype||(p.propFix.enctype="encoding"),p.support.checkOn||p.each(["radio","checkbox"],function(){p.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),p.each(["radio","checkbox"],function(){p.valHooks[this]=p.extend(p.valHooks[this],{set:function(a,b){if(p.isArray(b))return a.checked=p.inArray(p(a).val(),b)>=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j<c.length;j++){k=W.exec(c[j])||[],l=k[1],m=(k[2]||"").split(".").sort(),r=p.event.special[l]||{},l=(f?r.delegateType:r.bindType)||l,r=p.event.special[l]||{},n=p.extend({type:l,origType:k[1],data:e,handler:d,guid:d.guid,selector:f,namespace:m.join(".")},o),q=i[l];if(!q){q=i[l]=[],q.delegateCount=0;if(!r.setup||r.setup.call(a,e,m,h)===!1)a.addEventListener?a.addEventListener(l,h,!1):a.attachEvent&&a.attachEvent("on"+l,h)}r.add&&(r.add.call(a,n),n.handler.guid||(n.handler.guid=d.guid)),f?q.splice(q.delegateCount++,0,n):q.push(n),p.event.global[l]=!0}a=null},global:{},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,q,r=p.hasData(a)&&p._data(a);if(!r||!(m=r.events))return;b=p.trim(_(b||"")).split(" ");for(f=0;f<b.length;f++){g=W.exec(b[f])||[],h=i=g[1],j=g[2];if(!h){for(h in m)p.event.remove(a,h+b[f],c,d,!0);continue}n=p.event.special[h]||{},h=(d?n.delegateType:n.bindType)||h,o=m[h]||[],k=o.length,j=j?new RegExp("(^|\\.)"+j.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(l=0;l<o.length;l++)q=o[l],(e||i===q.origType)&&(!c||c.guid===q.guid)&&(!j||j.test(q.namespace))&&(!d||d===q.selector||d==="**"&&q.selector)&&(o.splice(l--,1),q.selector&&o.delegateCount--,n.remove&&n.remove.call(a,q));o.length===0&&k!==o.length&&((!n.teardown||n.teardown.call(a,j,r.handle)===!1)&&p.removeEvent(a,h,r.handle),delete m[h])}p.isEmptyObject(m)&&(delete r.handle,p.removeData(a,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,f,g){if(!f||f.nodeType!==3&&f.nodeType!==8){var h,i,j,k,l,m,n,o,q,r,s=c.type||c,t=[];if($.test(s+p.event.triggered))return;s.indexOf("!")>=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j<q.length&&!c.isPropagationStopped();j++)k=q[j][0],c.type=q[j][1],o=(p._data(k,"events")||{})[c.type]&&p._data(k,"handle"),o&&o.apply(k,d),o=m&&k[m],o&&p.acceptData(k)&&o.apply(k,d)===!1&&c.preventDefault();return c.type=s,!g&&!c.isDefaultPrevented()&&(!n._default||n._default.apply(f.ownerDocument,d)===!1)&&(s!=="click"||!p.nodeName(f,"a"))&&p.acceptData(f)&&m&&f[s]&&(s!=="focus"&&s!=="blur"||c.target.offsetWidth!==0)&&!p.isWindow(f)&&(l=f[m],l&&(f[m]=null),p.event.triggered=s,f[s](),p.event.triggered=b,l&&(f[m]=l)),c.result}return},dispatch:function(c){c=p.event.fix(c||a.event);var d,e,f,g,h,i,j,k,l,m,n,o=(p._data(this,"events")||{})[c.type]||[],q=o.delegateCount,r=[].slice.call(arguments),s=!c.exclusive&&!c.namespace,t=p.event.special[c.type]||{},u=[];r[0]=c,c.delegateTarget=this;if(t.preDispatch&&t.preDispatch.call(this,c)===!1)return;if(q&&(!c.button||c.type!=="click")){g=p(this),g.context=this;for(f=c.target;f!=this;f=f.parentNode||this)if(f.disabled!==!0||c.type!=="click"){i={},k=[],g[0]=f;for(d=0;d<q;d++)l=o[d],m=l.selector,i[m]===b&&(i[m]=g.is(m)),i[m]&&k.push(l);k.length&&u.push({elem:f,matches:k})}}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d<u.length&&!c.isPropagationStopped();d++){j=u[d],c.currentTarget=j.elem;for(e=0;e<j.matches.length&&!c.isImmediatePropagationStopped();e++){l=j.matches[e];if(s||!c.namespace&&!l.namespace||c.namespace_re&&c.namespace_re.test(l.namespace))c.data=l.data,c.handleObj=l,h=((p.event.special[l.origType]||{}).handle||l.handler).apply(j.elem,r),h!==b&&(c.result=h,h===!1&&(c.preventDefault(),c.stopPropagation()))}}return t.postDispatch&&t.postDispatch.call(this,c),c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,c){var d,f,g,h=c.button,i=c.fromElement;return a.pageX==null&&c.clientX!=null&&(d=a.target.ownerDocument||e,f=d.documentElement,g=d.body,a.pageX=c.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=c.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?c.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0),a}},fix:function(a){if(a[p.expando])return a;var b,c,d=a,f=p.event.fixHooks[a.type]||{},g=f.props?this.props.concat(f.props):this.props;a=p.Event(d);for(b=g.length;b;)c=g[--b],a[c]=d[c];return a.target||(a.target=d.srcElement||e),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,f.filter?f.filter(a,d):a},special:{ready:{setup:p.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){p.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=p.extend(new p.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?p.event.trigger(e,null,b):p.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},p.event.handle=p.event.dispatch,p.removeEvent=e.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]=="undefined"&&(a[d]=null),a.detachEvent(d,c))},p.Event=function(a,b){if(this instanceof p.Event)a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?bb:ba):this.type=a,b&&p.extend(this,b),this.timeStamp=a&&a.timeStamp||p.now(),this[p.expando]=!0;else return new p.Event(a,b)},p.Event.prototype={preventDefault:function(){this.isDefaultPrevented=bb;var a=this.originalEvent;if(!a)return;a.preventDefault?a.preventDefault():a.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=bb;var a=this.originalEvent;if(!a)return;a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()},isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba},p.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){p.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj,g=f.selector;if(!e||e!==d&&!p.contains(d,e))a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b;return c}}}),p.support.submitBubbles||(p.event.special.submit={setup:function(){if(p.nodeName(this,"form"))return!1;p.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=p.nodeName(c,"input")||p.nodeName(c,"button")?c.form:b;d&&!p._data(d,"_submit_attached")&&(p.event.add(d,"submit._submit",function(a){a._submit_bubble=!0}),p._data(d,"_submit_attached",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&p.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){if(p.nodeName(this,"form"))return!1;p.event.remove(this,"._submit")}}),p.support.changeBubbles||(p.event.special.change={setup:function(){if(V.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")p.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),p.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),p.event.simulate("change",this,a,!0)});return!1}p.event.add(this,"beforeactivate._change",function(a){var b=a.target;V.test(b.nodeName)&&!p._data(b,"_change_attached")&&(p.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&p.event.simulate("change",this.parentNode,a,!0)}),p._data(b,"_change_attached",!0))})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){return p.event.remove(this,"._change"),V.test(this.nodeName)}}),p.support.focusinBubbles||p.each({focus:"focusin",blur:"focusout"},function(a,b){var c=0,d=function(a){p.event.simulate(b,a.target,p.event.fix(a),!0)};p.event.special[b]={setup:function(){c++===0&&e.addEventListener(a,d,!0)},teardown:function(){--c===0&&e.removeEventListener(a,d,!0)}}}),p.fn.extend({on:function(a,c,d,e,f){var g,h;if(typeof a=="object"){typeof c!="string"&&(d=d||c,c=b);for(h in a)this.on(h,c,d,a[h],f);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=ba;else if(!e)return this;return f===1&&(g=e,e=function(a){return p().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=p.guid++)),this.each(function(){p.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,c,d){var e,f;if(a&&a.preventDefault&&a.handleObj)return e=a.handleObj,p(a.delegateTarget).off(e.namespace?e.origType+"."+e.namespace:e.origType,e.selector,e.handler),this;if(typeof a=="object"){for(f in a)this.off(f,c,a[f]);return this}if(c===!1||typeof c=="function")d=c,c=b;return d===!1&&(d=ba),this.each(function(){p.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){return p(this.context).on(a,this.selector,b,c),this},die:function(a,b){return p(this.context).off(a,this.selector||"**",b),this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a||"**",c)},trigger:function(a,b){return this.each(function(){p.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return p.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||p.guid++,d=0,e=function(c){var e=(p._data(this,"lastToggle"+a.guid)||0)%d;return p._data(this,"lastToggle"+a.guid,e+1),c.preventDefault(),b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),p.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){p.fn[b]=function(a,c){return c==null&&(c=a,a=null),arguments.length>0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e<f;e++)Z(a,b[e],c,d)}function be(a,b,c,d,e,f){var g,h=$.setFilters[b.toLowerCase()];return h||Z.error(b),(a||!(g=e))&&bd(a||"*",d,g=[],e),g.length>0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;a<c;a++)arguments[a]===b&&(g[a]=b)};for(;p<q;p++){s.exec(""),a=f[p],j=[],i=0,k=e;while(g=s.exec(a)){n=s.lastIndex=g.index+g[0].length;if(n>i){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="<select></select>";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="<a name='"+q+"'></a><div name='"+q+"'></div>",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},odd:function(a,b,c){var d=[],e=c?0:1,f=a.length;for(;e<f;e=e+2)d.push(a[e]);return d},lt:function(a,b,c){return c?a.slice(+b):a.slice(0,+b)},gt:function(a,b,c){return c?a.slice(0,+b+1):a.slice(+b+1)},eq:function(a,b,c){var d=a.splice(+b,1);return c?a:d}}};$.setFilters.nth=$.setFilters.eq,$.filters=$.pseudos,X||($.attrHandle={href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}}),V&&($.order.push("NAME"),$.find.NAME=function(a,b){if(typeof b.getElementsByName!==j)return b.getElementsByName(a)}),Y&&($.order.splice(1,0,"CLASS"),$.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!==j&&!c)return b.getElementsByClassName(a)});try{n.call(i.childNodes,0)[0].nodeType}catch(_){n=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}var ba=Z.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},bb=Z.contains=i.compareDocumentPosition?function(a,b){return!!(a.compareDocumentPosition(b)&16)}:i.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc=Z.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=bc(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=bc(b);return c};Z.attr=function(a,b){var c,d=ba(a);return d||(b=b.toLowerCase()),$.attrHandle[b]?$.attrHandle[b](a):U||d?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},Z.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},[0,0].sort(function(){return l=0}),i.compareDocumentPosition?e=function(a,b){return a===b?(k=!0,0):(!a.compareDocumentPosition||!b.compareDocumentPosition?a.compareDocumentPosition:a.compareDocumentPosition(b)&4)?-1:1}:(e=function(a,b){if(a===b)return k=!0,0;if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],g=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return f(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)g.unshift(j),j=j.parentNode;c=e.length,d=g.length;for(var l=0;l<c&&l<d;l++)if(e[l]!==g[l])return f(e[l],g[l]);return l===c?f(a,g[l],-1):f(e[l],b,1)},f=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),Z.uniqueSort=function(a){var b,c=1;if(e){k=l,a.sort(e);if(k)for(;b=a[c];c++)b===a[c-1]&&a.splice(c--,1)}return a};var bl=Z.compile=function(a,b,c){var d,e,f,g=O[a];if(g&&g.context===b)return g;e=bg(a,b,c);for(f=0;d=e[f];f++)e[f]=bj(d,b,c);return g=O[a]=bk(e),g.context=b,g.runs=g.dirruns=0,P.push(a),P.length>$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j<k;j++){p=$.order[j];if(s=L[p].exec(m)){h=$.find[p]((s[1]||"").replace(K,""),q,g);if(h==null)continue;m===r&&(a=a.slice(0,a.length-r.length)+m.replace(L[p],""),a||o.apply(e,n.call(h,0)));break}}}if(a){i=bl(a,b,g),d=i.dirruns++,h==null&&(h=$.find.TAG("*",G.test(a)&&b.parentNode||b));for(j=0;l=h[j];j++)c=i.runs++,i(l,b)&&e.push(l)}return e};h.querySelectorAll&&function(){var a,b=bm,c=/'|\\/g,d=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,e=[],f=[":active"],g=i.matchesSelector||i.mozMatchesSelector||i.webkitMatchesSelector||i.oMatchesSelector||i.msMatchesSelector;T(function(a){a.innerHTML="<select><option selected></option></select>",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="<p test=''></p>",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="<input type='hidden'>",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b<c;b++)if(p.contains(h[b],this))return!0});g=this.pushStack("","find",a);for(b=0,c=this.length;b<c;b++){d=g.length,p.find(a,this[b],g);if(b>0)for(e=d;e<g.length;e++)for(f=0;f<d;f++)if(g[f]===g[e]){g.splice(e--,1);break}}return g},has:function(a){var b,c=p(a,this),d=c.length;return this.filter(function(){for(b=0;b<d;b++)if(p.contains(this,c[b]))return!0})},not:function(a){return this.pushStack(bj(this,a,!1),"not",a)},filter:function(a){return this.pushStack(bj(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?bf.test(a)?p(a,this.context).index(this[0])>=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d<e;d++){c=this[d];while(c&&c.ownerDocument&&c!==b&&c.nodeType!==11){if(g?g.index(c)>-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/<tbody/i,br=/<|&#?\w+;/,bs=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,bu=new RegExp("<(?:"+bl+")[\\s/>]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,bz={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X<div>","</div>"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1></$2>");try{for(;d<e;d++)c=this[d]||{},c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),c.innerHTML=a);c=0}catch(f){}}c&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(a){return bh(this[0])?this.length?this.pushStack(p(p.isFunction(a)?a():a),"replaceWith",a):this:p.isFunction(a)?this.each(function(b){var c=p(this),d=c.html();c.replaceWith(a.call(this,b,d))}):(typeof a!="string"&&(a=p(a).detach()),this.each(function(){var b=this.nextSibling,c=this.parentNode;p(this).remove(),b?p(b).before(a):p(c).append(a)}))},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){a=[].concat.apply([],a);var e,f,g,h,i=0,j=a[0],k=[],l=this.length;if(!p.support.checkClone&&l>1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i<l;i++)d.call(c&&p.nodeName(this[i],"table")?bC(this[i],"tbody"):this[i],i===h?g:p.clone(g,!0,!0))}g=f=null,k.length&&p.each(k,function(a,b){b.src?p.ajax?p.ajax({url:b.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):p.error("no ajax"):p.globalEval((b.text||b.textContent||b.innerHTML||"").replace(by,"")),b.parentNode&&b.parentNode.removeChild(b)})}return this}}),p.buildFragment=function(a,c,d){var f,g,h,i=a[0];return c=c||e,c=(c[0]||c).ownerDocument||c[0]||c,typeof c.createDocumentFragment=="undefined"&&(c=e),a.length===1&&typeof i=="string"&&i.length<512&&c===e&&i.charAt(0)==="<"&&!bt.test(i)&&(p.support.checkClone||!bw.test(i))&&(p.support.html5Clone||!bu.test(i))&&(g=!0,f=p.fragments[i],h=f!==b),f||(f=c.createDocumentFragment(),p.clean(a,c,f,d),g&&(p.fragments[i]=h&&f)),{fragment:f,cacheable:g}},p.fragments={},p.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){p.fn[a]=function(c){var d,e=0,f=[],g=p(c),h=g.length,i=this.length===1&&this[0].parentNode;if((i==null||i&&i.nodeType===11&&i.childNodes.length===1)&&h===1)return g[b](this[0]),this;for(;e<h;e++)d=(e>0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1></$2>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]==="<table>"&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("<div>").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d<e;d++)c=a[d],cS[c]=cS[c]||[],cS[c].unshift(b)},prefilter:function(a,b){b?cR.unshift(a):cR.push(a)}}),p.Tween=cY,cY.prototype={constructor:cY,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(p.cssNumber[c]?"":"px")},cur:function(){var a=cY.propHooks[this.prop];return a&&a.get?a.get(this):cY.propHooks._default.get(this)},run:function(a){var b,c=cY.propHooks[this.prop];return this.pos=b=p.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration),this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):cY.propHooks._default.set(this),this}},cY.prototype.init.prototype=cY.prototype,cY.propHooks={_default:{get:function(a){var b;return a.elem[a.prop]==null||!!a.elem.style&&a.elem.style[a.prop]!=null?(b=p.css(a.elem,a.prop,!1,""),!b||b==="auto"?0:b):a.elem[a.prop]},set:function(a){p.fx.step[a.prop]?p.fx.step[a.prop](a):a.elem.style&&(a.elem.style[p.cssProps[a.prop]]!=null||p.cssHooks[a.prop])?p.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},cY.propHooks.scrollTop=cY.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},p.each(["toggle","show","hide"],function(a,b){var c=p.fn[b];p.fn[b]=function(d,e,f){return d==null||typeof d=="boolean"||!a&&p.isFunction(d)&&p.isFunction(e)?c.apply(this,arguments):this.animate(cZ(b,!0),d,e,f)}}),p.fn.extend({fadeTo:function(a,b,c,d){return this.filter(bY).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=p.isEmptyObject(a),f=p.speed(b,c,d),g=function(){var b=cV(this,p.extend({},a),f);e&&b.stop(!0)};return e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,c,d){var e=function(a){var b=a.stop;delete a.stop,b(d)};return typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,c=a!=null&&a+"queueHooks",f=p.timers,g=p._data(this);if(c)g[c]&&g[c].stop&&e(g[c]);else for(c in g)g[c]&&g[c].stop&&cQ.test(c)&&e(g[c]);for(c=f.length;c--;)f[c].elem===this&&(a==null||f[c].queue===a)&&(f[c].anim.stop(d),b=!1,f.splice(c,1));(b||!d)&&p.dequeue(this,a)})}}),p.each({slideDown:cZ("show"),slideUp:cZ("hide"),slideToggle:cZ("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){p.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),p.speed=function(a,b,c){var d=a&&typeof a=="object"?p.extend({},a):{complete:c||!c&&b||p.isFunction(a)&&a,duration:a,easing:c&&b||b&&!p.isFunction(b)&&b};d.duration=p.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in p.fx.speeds?p.fx.speeds[d.duration]:p.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";return d.old=d.complete,d.complete=function(){p.isFunction(d.old)&&d.old.call(this),d.queue&&p.dequeue(this,d.queue)},d},p.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},p.timers=[],p.fx=cY.prototype.init,p.fx.tick=function(){var a,b=p.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||p.fx.stop()},p.fx.timer=function(a){a()&&p.timers.push(a)&&!cN&&(cN=setInterval(p.fx.tick,p.fx.interval))},p.fx.interval=13,p.fx.stop=function(){clearInterval(cN),cN=null},p.fx.speeds={slow:600,fast:200,_default:400},p.fx.step={},p.expr&&p.expr.filters&&(p.expr.filters.animated=function(a){return p.grep(p.timers,function(b){return a===b.elem}).length});var c$=/^(?:body|html)$/i;p.fn.offset=function(a){if(arguments.length)return a===b?this:this.each(function(b){p.offset.setOffset(this,a,b)});var c,d,e,f,g,h,i,j,k,l,m=this[0],n=m&&m.ownerDocument;if(!n)return;return(e=n.body)===m?p.offset.bodyOffset(m):(d=n.documentElement,p.contains(d,m)?(c=m.getBoundingClientRect(),f=c_(n),g=d.clientTop||e.clientTop||0,h=d.clientLeft||e.clientLeft||0,i=f.pageYOffset||d.scrollTop,j=f.pageXOffset||d.scrollLeft,k=c.top+i-g,l=c.left+j-h,{top:k,left:l}):{top:0,left:0})},p.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;return p.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(p.css(a,"marginTop"))||0,c+=parseFloat(p.css(a,"marginLeft"))||0),{top:b,left:c}},setOffset:function(a,b,c){var d=p.css(a,"position");d==="static"&&(a.style.position="relative");var e=p(a),f=e.offset(),g=p.css(a,"top"),h=p.css(a,"left"),i=(d==="absolute"||d==="fixed")&&p.inArray("auto",[g,h])>-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window);
@@ -0,0 +1,18 @@
1
+ /*
2
+ * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
3
+ * http://benalman.com/projects/jquery-bbq-plugin/
4
+ *
5
+ * Copyright (c) 2010 "Cowboy" Ben Alman
6
+ * Dual licensed under the MIT and GPL licenses.
7
+ * http://benalman.com/about/license/
8
+ */
9
+ (function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
10
+ /*
11
+ * jQuery hashchange event - v1.2 - 2/11/2010
12
+ * http://benalman.com/projects/jquery-hashchange-plugin/
13
+ *
14
+ * Copyright (c) 2010 "Cowboy" Ben Alman
15
+ * Dual licensed under the MIT and GPL licenses.
16
+ * http://benalman.com/about/license/
17
+ */
18
+ (function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
@@ -0,0 +1 @@
1
+ (function(b){b.fn.slideto=function(a){a=b.extend({slide_duration:"slow",highlight_duration:3E3,highlight:true,highlight_color:"#FFFF99"},a);return this.each(function(){obj=b(this);b("body").animate({scrollTop:obj.offset().top},a.slide_duration,function(){a.highlight&&b.ui.version&&obj.effect("highlight",{color:a.highlight_color},a.highlight_duration)})})}})(jQuery);
@@ -0,0 +1,8 @@
1
+ /*
2
+ jQuery Wiggle
3
+ Author: WonderGroup, Jordan Thomas
4
+ URL: http://labs.wondergroup.com/demos/mini-ui/index.html
5
+ License: MIT (http://en.wikipedia.org/wiki/MIT_License)
6
+ */
7
+ jQuery.fn.wiggle=function(o){var d={speed:50,wiggles:3,travel:5,callback:null};var o=jQuery.extend(d,o);return this.each(function(){var cache=this;var wrap=jQuery(this).wrap('<div class="wiggle-wrap"></div>').css("position","relative");var calls=0;for(i=1;i<=o.wiggles;i++){jQuery(this).animate({left:"-="+o.travel},o.speed).animate({left:"+="+o.travel*2},o.speed*2).animate({left:"-="+o.travel},o.speed,function(){calls++;if(jQuery(cache).parent().hasClass('wiggle-wrap')){jQuery(cache).parent().replaceWith(cache);}
8
+ if(calls==o.wiggles&&jQuery.isFunction(o.callback)){o.callback();}});}});};
@@ -0,0 +1,2765 @@
1
+ var require = function (file, cwd) {
2
+ var resolved = require.resolve(file, cwd || '/');
3
+ var mod = require.modules[resolved];
4
+ if (!mod) throw new Error(
5
+ 'Failed to resolve module ' + file + ', tried ' + resolved
6
+ );
7
+ var res = mod._cached ? mod._cached : mod();
8
+ return res;
9
+ }
10
+
11
+ require.paths = [];
12
+ require.modules = {};
13
+ require.extensions = [".js",".coffee"];
14
+
15
+ require._core = {
16
+ 'assert': true,
17
+ 'events': true,
18
+ 'fs': true,
19
+ 'path': true,
20
+ 'vm': true
21
+ };
22
+
23
+ require.resolve = (function () {
24
+ return function (x, cwd) {
25
+ if (!cwd) cwd = '/';
26
+
27
+ if (require._core[x]) return x;
28
+ var path = require.modules.path();
29
+ var y = cwd || '.';
30
+
31
+ if (x.match(/^(?:\.\.?\/|\/)/)) {
32
+ var m = loadAsFileSync(path.resolve(y, x))
33
+ || loadAsDirectorySync(path.resolve(y, x));
34
+ if (m) return m;
35
+ }
36
+
37
+ var n = loadNodeModulesSync(x, y);
38
+ if (n) return n;
39
+
40
+ throw new Error("Cannot find module '" + x + "'");
41
+
42
+ function loadAsFileSync (x) {
43
+ if (require.modules[x]) {
44
+ return x;
45
+ }
46
+
47
+ for (var i = 0; i < require.extensions.length; i++) {
48
+ var ext = require.extensions[i];
49
+ if (require.modules[x + ext]) return x + ext;
50
+ }
51
+ }
52
+
53
+ function loadAsDirectorySync (x) {
54
+ x = x.replace(/\/+$/, '');
55
+ var pkgfile = x + '/package.json';
56
+ if (require.modules[pkgfile]) {
57
+ var pkg = require.modules[pkgfile]();
58
+ var b = pkg.browserify;
59
+ if (typeof b === 'object' && b.main) {
60
+ var m = loadAsFileSync(path.resolve(x, b.main));
61
+ if (m) return m;
62
+ }
63
+ else if (typeof b === 'string') {
64
+ var m = loadAsFileSync(path.resolve(x, b));
65
+ if (m) return m;
66
+ }
67
+ else if (pkg.main) {
68
+ var m = loadAsFileSync(path.resolve(x, pkg.main));
69
+ if (m) return m;
70
+ }
71
+ }
72
+
73
+ return loadAsFileSync(x + '/index');
74
+ }
75
+
76
+ function loadNodeModulesSync (x, start) {
77
+ var dirs = nodeModulesPathsSync(start);
78
+ for (var i = 0; i < dirs.length; i++) {
79
+ var dir = dirs[i];
80
+ var m = loadAsFileSync(dir + '/' + x);
81
+ if (m) return m;
82
+ var n = loadAsDirectorySync(dir + '/' + x);
83
+ if (n) return n;
84
+ }
85
+
86
+ var m = loadAsFileSync(x);
87
+ if (m) return m;
88
+ }
89
+
90
+ function nodeModulesPathsSync (start) {
91
+ var parts;
92
+ if (start === '/') parts = [ '' ];
93
+ else parts = path.normalize(start).split('/');
94
+
95
+ var dirs = [];
96
+ for (var i = parts.length - 1; i >= 0; i--) {
97
+ if (parts[i] === 'node_modules') continue;
98
+ var dir = parts.slice(0, i + 1).join('/') + '/node_modules';
99
+ dirs.push(dir);
100
+ }
101
+
102
+ return dirs;
103
+ }
104
+ };
105
+ })();
106
+
107
+ require.alias = function (from, to) {
108
+ var path = require.modules.path();
109
+ var res = null;
110
+ try {
111
+ res = require.resolve(from + '/package.json', '/');
112
+ }
113
+ catch (err) {
114
+ res = require.resolve(from, '/');
115
+ }
116
+ var basedir = path.dirname(res);
117
+
118
+ var keys = (Object.keys || function (obj) {
119
+ var res = [];
120
+ for (var key in obj) res.push(key)
121
+ return res;
122
+ })(require.modules);
123
+
124
+ for (var i = 0; i < keys.length; i++) {
125
+ var key = keys[i];
126
+ if (key.slice(0, basedir.length + 1) === basedir + '/') {
127
+ var f = key.slice(basedir.length);
128
+ require.modules[to + f] = require.modules[basedir + f];
129
+ }
130
+ else if (key === basedir) {
131
+ require.modules[to] = require.modules[basedir];
132
+ }
133
+ }
134
+ };
135
+
136
+ require.define = function (filename, fn) {
137
+ var dirname = require._core[filename]
138
+ ? ''
139
+ : require.modules.path().dirname(filename)
140
+ ;
141
+
142
+ var require_ = function (file) {
143
+ return require(file, dirname)
144
+ };
145
+ require_.resolve = function (name) {
146
+ return require.resolve(name, dirname);
147
+ };
148
+ require_.modules = require.modules;
149
+ require_.define = require.define;
150
+ var module_ = { exports : {} };
151
+
152
+ require.modules[filename] = function () {
153
+ require.modules[filename]._cached = module_.exports;
154
+ fn.call(
155
+ module_.exports,
156
+ require_,
157
+ module_,
158
+ module_.exports,
159
+ dirname,
160
+ filename
161
+ );
162
+ require.modules[filename]._cached = module_.exports;
163
+ return module_.exports;
164
+ };
165
+ };
166
+
167
+ if (typeof process === 'undefined') process = {};
168
+
169
+ if (!process.nextTick) process.nextTick = (function () {
170
+ var queue = [];
171
+ var canPost = typeof window !== 'undefined'
172
+ && window.postMessage && window.addEventListener
173
+ ;
174
+
175
+ if (canPost) {
176
+ window.addEventListener('message', function (ev) {
177
+ if (ev.source === window && ev.data === 'browserify-tick') {
178
+ ev.stopPropagation();
179
+ if (queue.length > 0) {
180
+ var fn = queue.shift();
181
+ fn();
182
+ }
183
+ }
184
+ }, true);
185
+ }
186
+
187
+ return function (fn) {
188
+ if (canPost) {
189
+ queue.push(fn);
190
+ window.postMessage('browserify-tick', '*');
191
+ }
192
+ else setTimeout(fn, 0);
193
+ };
194
+ })();
195
+
196
+ if (!process.title) process.title = 'browser';
197
+
198
+ if (!process.binding) process.binding = function (name) {
199
+ if (name === 'evals') return require('vm')
200
+ else throw new Error('No such module')
201
+ };
202
+
203
+ if (!process.cwd) process.cwd = function () { return '.' };
204
+
205
+ require.define("path", function (require, module, exports, __dirname, __filename) {
206
+ function filter (xs, fn) {
207
+ var res = [];
208
+ for (var i = 0; i < xs.length; i++) {
209
+ if (fn(xs[i], i, xs)) res.push(xs[i]);
210
+ }
211
+ return res;
212
+ }
213
+
214
+ // resolves . and .. elements in a path array with directory names there
215
+ // must be no slashes, empty elements, or device names (c:\) in the array
216
+ // (so also no leading and trailing slashes - it does not distinguish
217
+ // relative and absolute paths)
218
+ function normalizeArray(parts, allowAboveRoot) {
219
+ // if the path tries to go above the root, `up` ends up > 0
220
+ var up = 0;
221
+ for (var i = parts.length; i >= 0; i--) {
222
+ var last = parts[i];
223
+ if (last == '.') {
224
+ parts.splice(i, 1);
225
+ } else if (last === '..') {
226
+ parts.splice(i, 1);
227
+ up++;
228
+ } else if (up) {
229
+ parts.splice(i, 1);
230
+ up--;
231
+ }
232
+ }
233
+
234
+ // if the path is allowed to go above the root, restore leading ..s
235
+ if (allowAboveRoot) {
236
+ for (; up--; up) {
237
+ parts.unshift('..');
238
+ }
239
+ }
240
+
241
+ return parts;
242
+ }
243
+
244
+ // Regex to split a filename into [*, dir, basename, ext]
245
+ // posix version
246
+ var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/;
247
+
248
+ // path.resolve([from ...], to)
249
+ // posix version
250
+ exports.resolve = function() {
251
+ var resolvedPath = '',
252
+ resolvedAbsolute = false;
253
+
254
+ for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) {
255
+ var path = (i >= 0)
256
+ ? arguments[i]
257
+ : process.cwd();
258
+
259
+ // Skip empty and invalid entries
260
+ if (typeof path !== 'string' || !path) {
261
+ continue;
262
+ }
263
+
264
+ resolvedPath = path + '/' + resolvedPath;
265
+ resolvedAbsolute = path.charAt(0) === '/';
266
+ }
267
+
268
+ // At this point the path should be resolved to a full absolute path, but
269
+ // handle relative paths to be safe (might happen when process.cwd() fails)
270
+
271
+ // Normalize the path
272
+ resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
273
+ return !!p;
274
+ }), !resolvedAbsolute).join('/');
275
+
276
+ return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
277
+ };
278
+
279
+ // path.normalize(path)
280
+ // posix version
281
+ exports.normalize = function(path) {
282
+ var isAbsolute = path.charAt(0) === '/',
283
+ trailingSlash = path.slice(-1) === '/';
284
+
285
+ // Normalize the path
286
+ path = normalizeArray(filter(path.split('/'), function(p) {
287
+ return !!p;
288
+ }), !isAbsolute).join('/');
289
+
290
+ if (!path && !isAbsolute) {
291
+ path = '.';
292
+ }
293
+ if (path && trailingSlash) {
294
+ path += '/';
295
+ }
296
+
297
+ return (isAbsolute ? '/' : '') + path;
298
+ };
299
+
300
+
301
+ // posix version
302
+ exports.join = function() {
303
+ var paths = Array.prototype.slice.call(arguments, 0);
304
+ return exports.normalize(filter(paths, function(p, index) {
305
+ return p && typeof p === 'string';
306
+ }).join('/'));
307
+ };
308
+
309
+
310
+ exports.dirname = function(path) {
311
+ var dir = splitPathRe.exec(path)[1] || '';
312
+ var isWindows = false;
313
+ if (!dir) {
314
+ // No dirname
315
+ return '.';
316
+ } else if (dir.length === 1 ||
317
+ (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) {
318
+ // It is just a slash or a drive letter with a slash
319
+ return dir;
320
+ } else {
321
+ // It is a full dirname, strip trailing slash
322
+ return dir.substring(0, dir.length - 1);
323
+ }
324
+ };
325
+
326
+
327
+ exports.basename = function(path, ext) {
328
+ var f = splitPathRe.exec(path)[2] || '';
329
+ // TODO: make this comparison case-insensitive on windows?
330
+ if (ext && f.substr(-1 * ext.length) === ext) {
331
+ f = f.substr(0, f.length - ext.length);
332
+ }
333
+ return f;
334
+ };
335
+
336
+
337
+ exports.extname = function(path) {
338
+ return splitPathRe.exec(path)[3] || '';
339
+ };
340
+
341
+ });
342
+
343
+ require.define("/shred.js", function (require, module, exports, __dirname, __filename) {
344
+ // Shred is an HTTP client library intended to simplify the use of Node's
345
+ // built-in HTTP library. In particular, we wanted to make it easier to interact
346
+ // with HTTP-based APIs.
347
+ //
348
+ // See the [examples](./examples.html) for more details.
349
+
350
+ // Ax is a nice logging library we wrote. You can use any logger, providing it
351
+ // has `info`, `warn`, `debug`, and `error` methods that take a string.
352
+ var Ax = require("ax")
353
+ , CookieJarLib = require( "cookiejar" )
354
+ , CookieJar = CookieJarLib.CookieJar
355
+ ;
356
+
357
+ // Shred takes some options, including a logger and request defaults.
358
+
359
+ var Shred = function(options) {
360
+ options = (options||{});
361
+ this.agent = options.agent;
362
+ this.defaults = options.defaults||{};
363
+ this.log = options.logger||(new Ax({ level: "info" }));
364
+ this._sharedCookieJar = new CookieJar();
365
+ this.logCurl = options.logCurl || false;
366
+ };
367
+
368
+ // Most of the real work is done in the request and reponse classes.
369
+
370
+ Shred.Request = require("./shred/request");
371
+ Shred.Response = require("./shred/response");
372
+
373
+ // The `request` method kicks off a new request, instantiating a new `Request`
374
+ // object and passing along whatever default options we were given.
375
+
376
+ Shred.prototype = {
377
+ request: function(options) {
378
+ options.logger = this.log;
379
+ options.logCurl = options.logCurl || this.logCurl;
380
+ options.cookieJar = ( 'cookieJar' in options ) ? options.cookieJar : this._sharedCookieJar; // let them set cookieJar = null
381
+ options.agent = options.agent || this.agent;
382
+ // fill in default options
383
+ for (var key in this.defaults) {
384
+ if (this.defaults.hasOwnProperty(key) && !options[key]) {
385
+ options[key] = this.defaults[key]
386
+ }
387
+ }
388
+ return new Shred.Request(options);
389
+ }
390
+ };
391
+
392
+ // Define a bunch of convenience methods so that you don't have to include
393
+ // a `method` property in your request options.
394
+
395
+ "get put post delete".split(" ").forEach(function(method) {
396
+ Shred.prototype[method] = function(options) {
397
+ options.method = method;
398
+ return this.request(options);
399
+ };
400
+ });
401
+
402
+
403
+ module.exports = Shred;
404
+
405
+ });
406
+
407
+ require.define("/node_modules/ax/package.json", function (require, module, exports, __dirname, __filename) {
408
+ module.exports = {"main":"./lib/ax.js"}
409
+ });
410
+
411
+ require.define("/node_modules/ax/lib/ax.js", function (require, module, exports, __dirname, __filename) {
412
+ var inspect = require("util").inspect
413
+ , fs = require("fs")
414
+ ;
415
+
416
+
417
+ // this is a quick-and-dirty logger. there are other nicer loggers out there
418
+ // but the ones i found were also somewhat involved. this one has a Ruby
419
+ // logger type interface
420
+ //
421
+ // we can easily replace this, provide the info, debug, etc. methods are the
422
+ // same. or, we can change Haiku to use a more standard node.js interface
423
+
424
+ var format = function(level,message) {
425
+ var debug = (level=="debug"||level=="error");
426
+ if (!message) { return message.toString(); }
427
+ if (typeof(message) == "object") {
428
+ if (message instanceof Error && debug) {
429
+ return message.stack;
430
+ } else {
431
+ return inspect(message);
432
+ }
433
+ } else {
434
+ return message.toString();
435
+ }
436
+ };
437
+
438
+ var noOp = function(message) { return this; }
439
+ var makeLogger = function(level,fn) {
440
+ return function(message) {
441
+ this.stream.write(this.format(level, message)+"\n");
442
+ return this;
443
+ }
444
+ };
445
+
446
+ var Logger = function(options) {
447
+ var logger = this;
448
+ var options = options||{};
449
+
450
+ // Default options
451
+ options.level = options.level || "info";
452
+ options.timestamp = options.timestamp || true;
453
+ options.prefix = options.prefix || "";
454
+ logger.options = options;
455
+
456
+ // Allows a prefix to be added to the message.
457
+ //
458
+ // var logger = new Ax({ module: 'Haiku' })
459
+ // logger.warn('this is going to be awesome!');
460
+ // //=> Haiku: this is going to be awesome!
461
+ //
462
+ if (logger.options.module){
463
+ logger.options.prefix = logger.options.module;
464
+ }
465
+
466
+ // Write to stderr or a file
467
+ if (logger.options.file){
468
+ logger.stream = fs.createWriteStream(logger.options.file, {"flags": "a"});
469
+ } else {
470
+ if(process.title === "node")
471
+ logger.stream = process.stderr;
472
+ else if(process.title === "browser")
473
+ logger.stream = function () {
474
+ // Work around weird console context issue: http://code.google.com/p/chromium/issues/detail?id=48662
475
+ return console[logger.options.level].apply(console, arguments);
476
+ };
477
+ }
478
+
479
+ switch(logger.options.level){
480
+ case 'debug':
481
+ ['debug', 'info', 'warn'].forEach(function (level) {
482
+ logger[level] = Logger.writer(level);
483
+ });
484
+ case 'info':
485
+ ['info', 'warn'].forEach(function (level) {
486
+ logger[level] = Logger.writer(level);
487
+ });
488
+ case 'warn':
489
+ logger.warn = Logger.writer('warn');
490
+ }
491
+ }
492
+
493
+ // Used to define logger methods
494
+ Logger.writer = function(level){
495
+ return function(message){
496
+ var logger = this;
497
+
498
+ if(process.title === "node")
499
+ logger.stream.write(logger.format(level, message) + '\n');
500
+ else if(process.title === "browser")
501
+ logger.stream(logger.format(level, message) + '\n');
502
+
503
+ };
504
+ }
505
+
506
+
507
+ Logger.prototype = {
508
+ info: function(){},
509
+ debug: function(){},
510
+ warn: function(){},
511
+ error: Logger.writer('error'),
512
+ format: function(level, message){
513
+ if (! message) return '';
514
+
515
+ var logger = this
516
+ , prefix = logger.options.prefix
517
+ , timestamp = logger.options.timestamp ? " " + (new Date().toISOString()) : ""
518
+ ;
519
+
520
+ return (prefix + timestamp + ": " + message);
521
+ }
522
+ };
523
+
524
+ module.exports = Logger;
525
+
526
+ });
527
+
528
+ require.define("util", function (require, module, exports, __dirname, __filename) {
529
+ // todo
530
+
531
+ });
532
+
533
+ require.define("fs", function (require, module, exports, __dirname, __filename) {
534
+ // nothing to see here... no file methods for the browser
535
+
536
+ });
537
+
538
+ require.define("/node_modules/cookiejar/package.json", function (require, module, exports, __dirname, __filename) {
539
+ module.exports = {"main":"cookiejar.js"}
540
+ });
541
+
542
+ require.define("/node_modules/cookiejar/cookiejar.js", function (require, module, exports, __dirname, __filename) {
543
+ exports.CookieAccessInfo=CookieAccessInfo=function CookieAccessInfo(domain,path,secure,script) {
544
+ if(this instanceof CookieAccessInfo) {
545
+ this.domain=domain||undefined;
546
+ this.path=path||"/";
547
+ this.secure=!!secure;
548
+ this.script=!!script;
549
+ return this;
550
+ }
551
+ else {
552
+ return new CookieAccessInfo(domain,path,secure,script)
553
+ }
554
+ }
555
+
556
+ exports.Cookie=Cookie=function Cookie(cookiestr) {
557
+ if(cookiestr instanceof Cookie) {
558
+ return cookiestr;
559
+ }
560
+ else {
561
+ if(this instanceof Cookie) {
562
+ this.name = null;
563
+ this.value = null;
564
+ this.expiration_date = Infinity;
565
+ this.path = "/";
566
+ this.domain = null;
567
+ this.secure = false; //how to define?
568
+ this.noscript = false; //httponly
569
+ if(cookiestr) {
570
+ this.parse(cookiestr)
571
+ }
572
+ return this;
573
+ }
574
+ return new Cookie(cookiestr)
575
+ }
576
+ }
577
+
578
+ Cookie.prototype.toString = function toString() {
579
+ var str=[this.name+"="+this.value];
580
+ if(this.expiration_date !== Infinity) {
581
+ str.push("expires="+(new Date(this.expiration_date)).toGMTString());
582
+ }
583
+ if(this.domain) {
584
+ str.push("domain="+this.domain);
585
+ }
586
+ if(this.path) {
587
+ str.push("path="+this.path);
588
+ }
589
+ if(this.secure) {
590
+ str.push("secure");
591
+ }
592
+ if(this.noscript) {
593
+ str.push("httponly");
594
+ }
595
+ return str.join("; ");
596
+ }
597
+
598
+ Cookie.prototype.toValueString = function toValueString() {
599
+ return this.name+"="+this.value;
600
+ }
601
+
602
+ var cookie_str_splitter=/[:](?=\s*[a-zA-Z0-9_\-]+\s*[=])/g
603
+ Cookie.prototype.parse = function parse(str) {
604
+ if(this instanceof Cookie) {
605
+ var parts=str.split(";")
606
+ , pair=parts[0].match(/([^=]+)=((?:.|\n)*)/)
607
+ , key=pair[1]
608
+ , value=pair[2];
609
+ this.name = key;
610
+ this.value = value;
611
+
612
+ for(var i=1;i<parts.length;i++) {
613
+ pair=parts[i].match(/([^=]+)(?:=((?:.|\n)*))?/)
614
+ , key=pair[1].trim().toLowerCase()
615
+ , value=pair[2];
616
+ switch(key) {
617
+ case "httponly":
618
+ this.noscript = true;
619
+ break;
620
+ case "expires":
621
+ this.expiration_date = value
622
+ ? Number(Date.parse(value))
623
+ : Infinity;
624
+ break;
625
+ case "path":
626
+ this.path = value
627
+ ? value.trim()
628
+ : "";
629
+ break;
630
+ case "domain":
631
+ this.domain = value
632
+ ? value.trim()
633
+ : "";
634
+ break;
635
+ case "secure":
636
+ this.secure = true;
637
+ break
638
+ }
639
+ }
640
+
641
+ return this;
642
+ }
643
+ return new Cookie().parse(str)
644
+ }
645
+
646
+ Cookie.prototype.matches = function matches(access_info) {
647
+ if(this.noscript && access_info.script
648
+ || this.secure && !access_info.secure
649
+ || !this.collidesWith(access_info)) {
650
+ return false
651
+ }
652
+ return true;
653
+ }
654
+
655
+ Cookie.prototype.collidesWith = function collidesWith(access_info) {
656
+ if((this.path && !access_info.path) || (this.domain && !access_info.domain)) {
657
+ return false
658
+ }
659
+ if(this.path && access_info.path.indexOf(this.path) !== 0) {
660
+ return false;
661
+ }
662
+ if (this.domain===access_info.domain) {
663
+ return true;
664
+ }
665
+ else if(this.domain && this.domain.charAt(0)===".")
666
+ {
667
+ var wildcard=access_info.domain.indexOf(this.domain.slice(1))
668
+ if(wildcard===-1 || wildcard!==access_info.domain.length-this.domain.length+1) {
669
+ return false;
670
+ }
671
+ }
672
+ else if(this.domain){
673
+ return false
674
+ }
675
+ return true;
676
+ }
677
+
678
+ exports.CookieJar=CookieJar=function CookieJar() {
679
+ if(this instanceof CookieJar) {
680
+ var cookies = {} //name: [Cookie]
681
+
682
+ this.setCookie = function setCookie(cookie) {
683
+ cookie = Cookie(cookie);
684
+ //Delete the cookie if the set is past the current time
685
+ var remove = cookie.expiration_date <= Date.now();
686
+ if(cookie.name in cookies) {
687
+ var cookies_list = cookies[cookie.name];
688
+ for(var i=0;i<cookies_list.length;i++) {
689
+ var collidable_cookie = cookies_list[i];
690
+ if(collidable_cookie.collidesWith(cookie)) {
691
+ if(remove) {
692
+ cookies_list.splice(i,1);
693
+ if(cookies_list.length===0) {
694
+ delete cookies[cookie.name]
695
+ }
696
+ return false;
697
+ }
698
+ else {
699
+ return cookies_list[i]=cookie;
700
+ }
701
+ }
702
+ }
703
+ if(remove) {
704
+ return false;
705
+ }
706
+ cookies_list.push(cookie);
707
+ return cookie;
708
+ }
709
+ else if(remove){
710
+ return false;
711
+ }
712
+ else {
713
+ return cookies[cookie.name]=[cookie];
714
+ }
715
+ }
716
+ //returns a cookie
717
+ this.getCookie = function getCookie(cookie_name,access_info) {
718
+ var cookies_list = cookies[cookie_name];
719
+ for(var i=0;i<cookies_list.length;i++) {
720
+ var cookie = cookies_list[i];
721
+ if(cookie.expiration_date <= Date.now()) {
722
+ if(cookies_list.length===0) {
723
+ delete cookies[cookie.name]
724
+ }
725
+ continue;
726
+ }
727
+ if(cookie.matches(access_info)) {
728
+ return cookie;
729
+ }
730
+ }
731
+ }
732
+ //returns a list of cookies
733
+ this.getCookies = function getCookies(access_info) {
734
+ var matches=[];
735
+ for(var cookie_name in cookies) {
736
+ var cookie=this.getCookie(cookie_name,access_info);
737
+ if (cookie) {
738
+ matches.push(cookie);
739
+ }
740
+ }
741
+ matches.toString=function toString(){return matches.join(":");}
742
+ matches.toValueString=function() {return matches.map(function(c){return c.toValueString();}).join(';');}
743
+ return matches;
744
+ }
745
+
746
+ return this;
747
+ }
748
+ return new CookieJar()
749
+ }
750
+
751
+
752
+ //returns list of cookies that were set correctly
753
+ CookieJar.prototype.setCookies = function setCookies(cookies) {
754
+ cookies=Array.isArray(cookies)
755
+ ?cookies
756
+ :cookies.split(cookie_str_splitter);
757
+ var successful=[]
758
+ for(var i=0;i<cookies.length;i++) {
759
+ var cookie = Cookie(cookies[i]);
760
+ if(this.setCookie(cookie)) {
761
+ successful.push(cookie);
762
+ }
763
+ }
764
+ return successful;
765
+ }
766
+
767
+ });
768
+
769
+ require.define("/shred/request.js", function (require, module, exports, __dirname, __filename) {
770
+ // The request object encapsulates a request, creating a Node.js HTTP request and
771
+ // then handling the response.
772
+
773
+ var HTTP = require("http")
774
+ , HTTPS = require("https")
775
+ , parseUri = require("./parseUri")
776
+ , Emitter = require('events').EventEmitter
777
+ , sprintf = require("sprintf").sprintf
778
+ , Response = require("./response")
779
+ , HeaderMixins = require("./mixins/headers")
780
+ , Content = require("./content")
781
+ ;
782
+
783
+ var STATUS_CODES = HTTP.STATUS_CODES || {
784
+ 100 : 'Continue',
785
+ 101 : 'Switching Protocols',
786
+ 102 : 'Processing', // RFC 2518, obsoleted by RFC 4918
787
+ 200 : 'OK',
788
+ 201 : 'Created',
789
+ 202 : 'Accepted',
790
+ 203 : 'Non-Authoritative Information',
791
+ 204 : 'No Content',
792
+ 205 : 'Reset Content',
793
+ 206 : 'Partial Content',
794
+ 207 : 'Multi-Status', // RFC 4918
795
+ 300 : 'Multiple Choices',
796
+ 301 : 'Moved Permanently',
797
+ 302 : 'Moved Temporarily',
798
+ 303 : 'See Other',
799
+ 304 : 'Not Modified',
800
+ 305 : 'Use Proxy',
801
+ 307 : 'Temporary Redirect',
802
+ 400 : 'Bad Request',
803
+ 401 : 'Unauthorized',
804
+ 402 : 'Payment Required',
805
+ 403 : 'Forbidden',
806
+ 404 : 'Not Found',
807
+ 405 : 'Method Not Allowed',
808
+ 406 : 'Not Acceptable',
809
+ 407 : 'Proxy Authentication Required',
810
+ 408 : 'Request Time-out',
811
+ 409 : 'Conflict',
812
+ 410 : 'Gone',
813
+ 411 : 'Length Required',
814
+ 412 : 'Precondition Failed',
815
+ 413 : 'Request Entity Too Large',
816
+ 414 : 'Request-URI Too Large',
817
+ 415 : 'Unsupported Media Type',
818
+ 416 : 'Requested Range Not Satisfiable',
819
+ 417 : 'Expectation Failed',
820
+ 418 : 'I\'m a teapot', // RFC 2324
821
+ 422 : 'Unprocessable Entity', // RFC 4918
822
+ 423 : 'Locked', // RFC 4918
823
+ 424 : 'Failed Dependency', // RFC 4918
824
+ 425 : 'Unordered Collection', // RFC 4918
825
+ 426 : 'Upgrade Required', // RFC 2817
826
+ 500 : 'Internal Server Error',
827
+ 501 : 'Not Implemented',
828
+ 502 : 'Bad Gateway',
829
+ 503 : 'Service Unavailable',
830
+ 504 : 'Gateway Time-out',
831
+ 505 : 'HTTP Version not supported',
832
+ 506 : 'Variant Also Negotiates', // RFC 2295
833
+ 507 : 'Insufficient Storage', // RFC 4918
834
+ 509 : 'Bandwidth Limit Exceeded',
835
+ 510 : 'Not Extended' // RFC 2774
836
+ };
837
+
838
+ // The Shred object itself constructs the `Request` object. You should rarely
839
+ // need to do this directly.
840
+
841
+ var Request = function(options) {
842
+ this.log = options.logger;
843
+ this.cookieJar = options.cookieJar;
844
+ this.encoding = options.encoding;
845
+ this.logCurl = options.logCurl;
846
+ processOptions(this,options||{});
847
+ createRequest(this);
848
+ };
849
+
850
+ // A `Request` has a number of properties, many of which help with details like
851
+ // URL parsing or defaulting the port for the request.
852
+
853
+ Object.defineProperties(Request.prototype, {
854
+
855
+ // - **url**. You can set the `url` property with a valid URL string and all the
856
+ // URL-related properties (host, port, etc.) will be automatically set on the
857
+ // request object.
858
+
859
+ url: {
860
+ get: function() {
861
+ if (!this.scheme) { return null; }
862
+ return sprintf("%s://%s:%s%s",
863
+ this.scheme, this.host, this.port,
864
+ (this.proxy ? "/" : this.path) +
865
+ (this.query ? ("?" + this.query) : ""));
866
+ },
867
+ set: function(_url) {
868
+ _url = parseUri(_url);
869
+ this.scheme = _url.protocol;
870
+ this.host = _url.host;
871
+ this.port = _url.port;
872
+ this.path = _url.path;
873
+ this.query = _url.query;
874
+ return this;
875
+ },
876
+ enumerable: true
877
+ },
878
+
879
+ // - **headers**. Returns a hash representing the request headers. You can't set
880
+ // this directly, only get it. You can add or modify headers by using the
881
+ // `setHeader` or `setHeaders` method. This ensures that the headers are
882
+ // normalized - that is, you don't accidentally send `Content-Type` and
883
+ // `content-type` headers. Keep in mind that if you modify the returned hash,
884
+ // it will *not* modify the request headers.
885
+
886
+ headers: {
887
+ get: function() {
888
+ return this.getHeaders();
889
+ },
890
+ enumerable: true
891
+ },
892
+
893
+ // - **port**. Unless you set the `port` explicitly or include it in the URL, it
894
+ // will default based on the scheme.
895
+
896
+ port: {
897
+ get: function() {
898
+ if (!this._port) {
899
+ switch(this.scheme) {
900
+ case "https": return this._port = 443;
901
+ case "http":
902
+ default: return this._port = 80;
903
+ }
904
+ }
905
+ return this._port;
906
+ },
907
+ set: function(value) { this._port = value; return this; },
908
+ enumerable: true
909
+ },
910
+
911
+ // - **method**. The request method - `get`, `put`, `post`, etc. that will be
912
+ // used to make the request. Defaults to `get`.
913
+
914
+ method: {
915
+ get: function() {
916
+ return this._method = (this._method||"GET");
917
+ },
918
+ set: function(value) {
919
+ this._method = value; return this;
920
+ },
921
+ enumerable: true
922
+ },
923
+
924
+ // - **query**. Can be set either with a query string or a hash (object). Get
925
+ // will always return a properly escaped query string or null if there is no
926
+ // query component for the request.
927
+
928
+ query: {
929
+ get: function() {return this._query;},
930
+ set: function(value) {
931
+ var stringify = function (hash) {
932
+ var query = "";
933
+ for (var key in hash) {
934
+ query += encodeURIComponent(key) + '=' + encodeURIComponent(hash[key]) + '&';
935
+ }
936
+ // Remove the last '&'
937
+ query = query.slice(0, -1);
938
+ return query;
939
+ }
940
+
941
+ if (value) {
942
+ if (typeof value === 'object') {
943
+ value = stringify(value);
944
+ }
945
+ this._query = value;
946
+ } else {
947
+ this._query = "";
948
+ }
949
+ return this;
950
+ },
951
+ enumerable: true
952
+ },
953
+
954
+ // - **parameters**. This will return the query parameters in the form of a hash
955
+ // (object).
956
+
957
+ parameters: {
958
+ get: function() { return QueryString.parse(this._query||""); },
959
+ enumerable: true
960
+ },
961
+
962
+ // - **content**. (Aliased as `body`.) Set this to add a content entity to the
963
+ // request. Attempts to use the `content-type` header to determine what to do
964
+ // with the content value. Get this to get back a [`Content`
965
+ // object](./content.html).
966
+
967
+ body: {
968
+ get: function() { return this._body; },
969
+ set: function(value) {
970
+ this._body = new Content({
971
+ data: value,
972
+ type: this.getHeader("Content-Type")
973
+ });
974
+ this.setHeader("Content-Type",this.content.type);
975
+ this.setHeader("Content-Length",this.content.length);
976
+ return this;
977
+ },
978
+ enumerable: true
979
+ },
980
+
981
+ // - **timeout**. Used to determine how long to wait for a response. Does not
982
+ // distinguish between connect timeouts versus request timeouts. Set either in
983
+ // milliseconds or with an object with temporal attributes (hours, minutes,
984
+ // seconds) and convert it into milliseconds. Get will always return
985
+ // milliseconds.
986
+
987
+ timeout: {
988
+ get: function() { return this._timeout; }, // in milliseconds
989
+ set: function(timeout) {
990
+ var request = this
991
+ , milliseconds = 0;
992
+ ;
993
+ if (!timeout) return this;
994
+ if (typeof timeout==="number") { milliseconds = timeout; }
995
+ else {
996
+ milliseconds = (timeout.milliseconds||0) +
997
+ (1000 * ((timeout.seconds||0) +
998
+ (60 * ((timeout.minutes||0) +
999
+ (60 * (timeout.hours||0))))));
1000
+ }
1001
+ this._timeout = milliseconds;
1002
+ return this;
1003
+ },
1004
+ enumerable: true
1005
+ }
1006
+ });
1007
+
1008
+ // Alias `body` property to `content`. Since the [content object](./content.html)
1009
+ // has a `body` attribute, it's preferable to use `content` since you can then
1010
+ // access the raw content data using `content.body`.
1011
+
1012
+ Object.defineProperty(Request.prototype,"content",
1013
+ Object.getOwnPropertyDescriptor(Request.prototype, "body"));
1014
+
1015
+ // The `Request` object can be pretty overwhelming to view using the built-in
1016
+ // Node.js inspect method. We want to make it a bit more manageable. This
1017
+ // probably goes [too far in the other
1018
+ // direction](https://github.com/spire-io/shred/issues/2).
1019
+
1020
+ Request.prototype.inspect = function () {
1021
+ var request = this;
1022
+ var headers = this.format_headers();
1023
+ var summary = ["<Shred Request> ", request.method.toUpperCase(),
1024
+ request.url].join(" ")
1025
+ return [ summary, "- Headers:", headers].join("\n");
1026
+ };
1027
+
1028
+ Request.prototype.format_headers = function () {
1029
+ var array = []
1030
+ var headers = this._headers
1031
+ for (var key in headers) {
1032
+ if (headers.hasOwnProperty(key)) {
1033
+ var value = headers[key]
1034
+ array.push("\t" + key + ": " + value);
1035
+ }
1036
+ }
1037
+ return array.join("\n");
1038
+ };
1039
+
1040
+ // Allow chainable 'on's: shred.get({ ... }).on( ... ). You can pass in a
1041
+ // single function, a pair (event, function), or a hash:
1042
+ // { event: function, event: function }
1043
+ Request.prototype.on = function (eventOrHash, listener) {
1044
+ var emitter = this.emitter;
1045
+ // Pass in a single argument as a function then make it the default response handler
1046
+ if (arguments.length === 1 && typeof(eventOrHash) === 'function') {
1047
+ emitter.on('response', eventOrHash);
1048
+ } else if (arguments.length === 1 && typeof(eventOrHash) === 'object') {
1049
+ for (var key in eventOrHash) {
1050
+ if (eventOrHash.hasOwnProperty(key)) {
1051
+ emitter.on(key, eventOrHash[key]);
1052
+ }
1053
+ }
1054
+ } else {
1055
+ emitter.on(eventOrHash, listener);
1056
+ }
1057
+ return this;
1058
+ };
1059
+
1060
+ // Add in the header methods. Again, these ensure we don't get the same header
1061
+ // multiple times with different case conventions.
1062
+ HeaderMixins.gettersAndSetters(Request);
1063
+
1064
+ // `processOptions` is called from the constructor to handle all the work
1065
+ // associated with making sure we do our best to ensure we have a valid request.
1066
+
1067
+ var processOptions = function(request,options) {
1068
+
1069
+ request.log.debug("Processing request options ..");
1070
+
1071
+ // We'll use `request.emitter` to manage the `on` event handlers.
1072
+ request.emitter = (new Emitter);
1073
+
1074
+ request.agent = options.agent;
1075
+
1076
+ // Set up the handlers ...
1077
+ if (options.on) {
1078
+ for (var key in options.on) {
1079
+ if (options.on.hasOwnProperty(key)) {
1080
+ request.emitter.on(key, options.on[key]);
1081
+ }
1082
+ }
1083
+ }
1084
+
1085
+ // Make sure we were give a URL or a host
1086
+ if (!options.url && !options.host) {
1087
+ request.emitter.emit("request_error",
1088
+ new Error("No url or url options (host, port, etc.)"));
1089
+ return;
1090
+ }
1091
+
1092
+ // Allow for the [use of a proxy](http://www.jmarshall.com/easy/http/#proxies).
1093
+
1094
+ if (options.url) {
1095
+ if (options.proxy) {
1096
+ request.url = options.proxy;
1097
+ request.path = options.url;
1098
+ } else {
1099
+ request.url = options.url;
1100
+ }
1101
+ }
1102
+
1103
+ // Set the remaining options.
1104
+ request.query = options.query||options.parameters||request.query ;
1105
+ request.method = options.method;
1106
+ request.setHeader("user-agent",options.agent||"Shred");
1107
+ request.setHeaders(options.headers);
1108
+
1109
+ if (request.cookieJar) {
1110
+ var cookies = request.cookieJar.getCookies( CookieAccessInfo( request.host, request.path ) );
1111
+ if (cookies.length) {
1112
+ var cookieString = request.getHeader('cookie')||'';
1113
+ for (var cookieIndex = 0; cookieIndex < cookies.length; ++cookieIndex) {
1114
+ if ( cookieString.length && cookieString[ cookieString.length - 1 ] != ';' )
1115
+ {
1116
+ cookieString += ';';
1117
+ }
1118
+ cookieString += cookies[ cookieIndex ].name + '=' + cookies[ cookieIndex ].value + ';';
1119
+ }
1120
+ request.setHeader("cookie", cookieString);
1121
+ }
1122
+ }
1123
+
1124
+ // The content entity can be set either using the `body` or `content` attributes.
1125
+ if (options.body||options.content) {
1126
+ request.content = options.body||options.content;
1127
+ }
1128
+ request.timeout = options.timeout;
1129
+
1130
+ };
1131
+
1132
+ // `createRequest` is also called by the constructor, after `processOptions`.
1133
+ // This actually makes the request and processes the response, so `createRequest`
1134
+ // is a bit of a misnomer.
1135
+
1136
+ var createRequest = function(request) {
1137
+ var timeout ;
1138
+
1139
+ request.log.debug("Creating request ..");
1140
+ request.log.debug(request);
1141
+
1142
+ var reqParams = {
1143
+ host: request.host,
1144
+ port: request.port,
1145
+ method: request.method,
1146
+ path: request.path + (request.query ? '?'+request.query : ""),
1147
+ headers: request.getHeaders(),
1148
+ // Node's HTTP/S modules will ignore this, but we are using the
1149
+ // browserify-http module in the browser for both HTTP and HTTPS, and this
1150
+ // is how you differentiate the two.
1151
+ scheme: request.scheme,
1152
+ // Use a provided agent. 'Undefined' is the default, which uses a global
1153
+ // agent.
1154
+ agent: request.agent
1155
+ };
1156
+
1157
+ if (request.logCurl) {
1158
+ logCurl(request);
1159
+ }
1160
+
1161
+ var http = request.scheme == "http" ? HTTP : HTTPS;
1162
+
1163
+ // Set up the real request using the selected library. The request won't be
1164
+ // sent until we call `.end()`.
1165
+ request._raw = http.request(reqParams, function(response) {
1166
+ request.log.debug("Received response ..");
1167
+
1168
+ // We haven't timed out and we have a response, so make sure we clear the
1169
+ // timeout so it doesn't fire while we're processing the response.
1170
+ clearTimeout(timeout);
1171
+
1172
+ // Construct a Shred `Response` object from the response. This will stream
1173
+ // the response, thus the need for the callback. We can access the response
1174
+ // entity safely once we're in the callback.
1175
+ response = new Response(response, request, function(response) {
1176
+
1177
+ // Set up some event magic. The precedence is given first to
1178
+ // status-specific handlers, then to responses for a given event, and then
1179
+ // finally to the more general `response` handler. In the last case, we
1180
+ // need to first make sure we're not dealing with a a redirect.
1181
+ var emit = function(event) {
1182
+ var emitter = request.emitter;
1183
+ var textStatus = STATUS_CODES[response.status] ? STATUS_CODES[response.status].toLowerCase() : null;
1184
+ if (emitter.listeners(response.status).length > 0 || emitter.listeners(textStatus).length > 0) {
1185
+ emitter.emit(response.status, response);
1186
+ emitter.emit(textStatus, response);
1187
+ } else {
1188
+ if (emitter.listeners(event).length>0) {
1189
+ emitter.emit(event, response);
1190
+ } else if (!response.isRedirect) {
1191
+ emitter.emit("response", response);
1192
+ //console.warn("Request has no event listener for status code " + response.status);
1193
+ }
1194
+ }
1195
+ };
1196
+
1197
+ // Next, check for a redirect. We simply repeat the request with the URL
1198
+ // given in the `Location` header. We fire a `redirect` event.
1199
+ if (response.isRedirect) {
1200
+ request.log.debug("Redirecting to "
1201
+ + response.getHeader("Location"));
1202
+ request.url = response.getHeader("Location");
1203
+ emit("redirect");
1204
+ createRequest(request);
1205
+
1206
+ // Okay, it's not a redirect. Is it an error of some kind?
1207
+ } else if (response.isError) {
1208
+ emit("error");
1209
+ } else {
1210
+ // It looks like we're good shape. Trigger the `success` event.
1211
+ emit("success");
1212
+ }
1213
+ });
1214
+ });
1215
+
1216
+ // We're still setting up the request. Next, we're going to handle error cases
1217
+ // where we have no response. We don't emit an error event because that event
1218
+ // takes a response. We don't response handlers to have to check for a null
1219
+ // value. However, we [should introduce a different event
1220
+ // type](https://github.com/spire-io/shred/issues/3) for this type of error.
1221
+ request._raw.on("error", function(error) {
1222
+ request.emitter.emit("request_error", error);
1223
+ });
1224
+
1225
+ request._raw.on("socket", function(socket) {
1226
+ request.emitter.emit("socket", socket);
1227
+ });
1228
+
1229
+ // TCP timeouts should also trigger the "response_error" event.
1230
+ request._raw.on('socket', function () {
1231
+ request._raw.socket.on('timeout', function () {
1232
+ // This should trigger the "error" event on the raw request, which will
1233
+ // trigger the "response_error" on the shred request.
1234
+ request._raw.abort();
1235
+ });
1236
+ });
1237
+
1238
+
1239
+ // We're almost there. Next, we need to write the request entity to the
1240
+ // underlying request object.
1241
+ if (request.content) {
1242
+ request.log.debug("Streaming body: '" +
1243
+ request.content.data.slice(0,59) + "' ... ");
1244
+ request._raw.write(request.content.data);
1245
+ }
1246
+
1247
+ // Finally, we need to set up the timeout. We do this last so that we don't
1248
+ // start the clock ticking until the last possible moment.
1249
+ if (request.timeout) {
1250
+ timeout = setTimeout(function() {
1251
+ request.log.debug("Timeout fired, aborting request ...");
1252
+ request._raw.abort();
1253
+ request.emitter.emit("timeout", request);
1254
+ },request.timeout);
1255
+ }
1256
+
1257
+ // The `.end()` method will cause the request to fire. Technically, it might
1258
+ // have already sent the headers and body.
1259
+ request.log.debug("Sending request ...");
1260
+ request._raw.end();
1261
+ };
1262
+
1263
+ // Logs the curl command for the request.
1264
+ var logCurl = function (req) {
1265
+ var headers = req.getHeaders();
1266
+ var headerString = "";
1267
+
1268
+ for (var key in headers) {
1269
+ headerString += '-H "' + key + ": " + headers[key] + '" ';
1270
+ }
1271
+
1272
+ var bodyString = ""
1273
+
1274
+ if (req.content) {
1275
+ bodyString += "-d '" + req.content.body + "' ";
1276
+ }
1277
+
1278
+ var query = req.query ? '?' + req.query : "";
1279
+
1280
+ console.log("curl " +
1281
+ "-X " + req.method.toUpperCase() + " " +
1282
+ req.scheme + "://" + req.host + ":" + req.port + req.path + query + " " +
1283
+ headerString +
1284
+ bodyString
1285
+ );
1286
+ };
1287
+
1288
+
1289
+ module.exports = Request;
1290
+
1291
+ });
1292
+
1293
+ require.define("http", function (require, module, exports, __dirname, __filename) {
1294
+ // todo
1295
+
1296
+ });
1297
+
1298
+ require.define("https", function (require, module, exports, __dirname, __filename) {
1299
+ // todo
1300
+
1301
+ });
1302
+
1303
+ require.define("/shred/parseUri.js", function (require, module, exports, __dirname, __filename) {
1304
+ // parseUri 1.2.2
1305
+ // (c) Steven Levithan <stevenlevithan.com>
1306
+ // MIT License
1307
+
1308
+ function parseUri (str) {
1309
+ var o = parseUri.options,
1310
+ m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
1311
+ uri = {},
1312
+ i = 14;
1313
+
1314
+ while (i--) uri[o.key[i]] = m[i] || "";
1315
+
1316
+ uri[o.q.name] = {};
1317
+ uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
1318
+ if ($1) uri[o.q.name][$1] = $2;
1319
+ });
1320
+
1321
+ return uri;
1322
+ };
1323
+
1324
+ parseUri.options = {
1325
+ strictMode: false,
1326
+ key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
1327
+ q: {
1328
+ name: "queryKey",
1329
+ parser: /(?:^|&)([^&=]*)=?([^&]*)/g
1330
+ },
1331
+ parser: {
1332
+ strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
1333
+ loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
1334
+ }
1335
+ };
1336
+
1337
+ module.exports = parseUri;
1338
+
1339
+ });
1340
+
1341
+ require.define("events", function (require, module, exports, __dirname, __filename) {
1342
+ if (!process.EventEmitter) process.EventEmitter = function () {};
1343
+
1344
+ var EventEmitter = exports.EventEmitter = process.EventEmitter;
1345
+ var isArray = typeof Array.isArray === 'function'
1346
+ ? Array.isArray
1347
+ : function (xs) {
1348
+ return Object.toString.call(xs) === '[object Array]'
1349
+ }
1350
+ ;
1351
+
1352
+ // By default EventEmitters will print a warning if more than
1353
+ // 10 listeners are added to it. This is a useful default which
1354
+ // helps finding memory leaks.
1355
+ //
1356
+ // Obviously not all Emitters should be limited to 10. This function allows
1357
+ // that to be increased. Set to zero for unlimited.
1358
+ var defaultMaxListeners = 10;
1359
+ EventEmitter.prototype.setMaxListeners = function(n) {
1360
+ if (!this._events) this._events = {};
1361
+ this._events.maxListeners = n;
1362
+ };
1363
+
1364
+
1365
+ EventEmitter.prototype.emit = function(type) {
1366
+ // If there is no 'error' event listener then throw.
1367
+ if (type === 'error') {
1368
+ if (!this._events || !this._events.error ||
1369
+ (isArray(this._events.error) && !this._events.error.length))
1370
+ {
1371
+ if (arguments[1] instanceof Error) {
1372
+ throw arguments[1]; // Unhandled 'error' event
1373
+ } else {
1374
+ throw new Error("Uncaught, unspecified 'error' event.");
1375
+ }
1376
+ return false;
1377
+ }
1378
+ }
1379
+
1380
+ if (!this._events) return false;
1381
+ var handler = this._events[type];
1382
+ if (!handler) return false;
1383
+
1384
+ if (typeof handler == 'function') {
1385
+ switch (arguments.length) {
1386
+ // fast cases
1387
+ case 1:
1388
+ handler.call(this);
1389
+ break;
1390
+ case 2:
1391
+ handler.call(this, arguments[1]);
1392
+ break;
1393
+ case 3:
1394
+ handler.call(this, arguments[1], arguments[2]);
1395
+ break;
1396
+ // slower
1397
+ default:
1398
+ var args = Array.prototype.slice.call(arguments, 1);
1399
+ handler.apply(this, args);
1400
+ }
1401
+ return true;
1402
+
1403
+ } else if (isArray(handler)) {
1404
+ var args = Array.prototype.slice.call(arguments, 1);
1405
+
1406
+ var listeners = handler.slice();
1407
+ for (var i = 0, l = listeners.length; i < l; i++) {
1408
+ listeners[i].apply(this, args);
1409
+ }
1410
+ return true;
1411
+
1412
+ } else {
1413
+ return false;
1414
+ }
1415
+ };
1416
+
1417
+ // EventEmitter is defined in src/node_events.cc
1418
+ // EventEmitter.prototype.emit() is also defined there.
1419
+ EventEmitter.prototype.addListener = function(type, listener) {
1420
+ if ('function' !== typeof listener) {
1421
+ throw new Error('addListener only takes instances of Function');
1422
+ }
1423
+
1424
+ if (!this._events) this._events = {};
1425
+
1426
+ // To avoid recursion in the case that type == "newListeners"! Before
1427
+ // adding it to the listeners, first emit "newListeners".
1428
+ this.emit('newListener', type, listener);
1429
+
1430
+ if (!this._events[type]) {
1431
+ // Optimize the case of one listener. Don't need the extra array object.
1432
+ this._events[type] = listener;
1433
+ } else if (isArray(this._events[type])) {
1434
+
1435
+ // Check for listener leak
1436
+ if (!this._events[type].warned) {
1437
+ var m;
1438
+ if (this._events.maxListeners !== undefined) {
1439
+ m = this._events.maxListeners;
1440
+ } else {
1441
+ m = defaultMaxListeners;
1442
+ }
1443
+
1444
+ if (m && m > 0 && this._events[type].length > m) {
1445
+ this._events[type].warned = true;
1446
+ console.error('(node) warning: possible EventEmitter memory ' +
1447
+ 'leak detected. %d listeners added. ' +
1448
+ 'Use emitter.setMaxListeners() to increase limit.',
1449
+ this._events[type].length);
1450
+ console.trace();
1451
+ }
1452
+ }
1453
+
1454
+ // If we've already got an array, just append.
1455
+ this._events[type].push(listener);
1456
+ } else {
1457
+ // Adding the second element, need to change to array.
1458
+ this._events[type] = [this._events[type], listener];
1459
+ }
1460
+
1461
+ return this;
1462
+ };
1463
+
1464
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener;
1465
+
1466
+ EventEmitter.prototype.once = function(type, listener) {
1467
+ var self = this;
1468
+ self.on(type, function g() {
1469
+ self.removeListener(type, g);
1470
+ listener.apply(this, arguments);
1471
+ });
1472
+
1473
+ return this;
1474
+ };
1475
+
1476
+ EventEmitter.prototype.removeListener = function(type, listener) {
1477
+ if ('function' !== typeof listener) {
1478
+ throw new Error('removeListener only takes instances of Function');
1479
+ }
1480
+
1481
+ // does not use listeners(), so no side effect of creating _events[type]
1482
+ if (!this._events || !this._events[type]) return this;
1483
+
1484
+ var list = this._events[type];
1485
+
1486
+ if (isArray(list)) {
1487
+ var i = list.indexOf(listener);
1488
+ if (i < 0) return this;
1489
+ list.splice(i, 1);
1490
+ if (list.length == 0)
1491
+ delete this._events[type];
1492
+ } else if (this._events[type] === listener) {
1493
+ delete this._events[type];
1494
+ }
1495
+
1496
+ return this;
1497
+ };
1498
+
1499
+ EventEmitter.prototype.removeAllListeners = function(type) {
1500
+ // does not use listeners(), so no side effect of creating _events[type]
1501
+ if (type && this._events && this._events[type]) this._events[type] = null;
1502
+ return this;
1503
+ };
1504
+
1505
+ EventEmitter.prototype.listeners = function(type) {
1506
+ if (!this._events) this._events = {};
1507
+ if (!this._events[type]) this._events[type] = [];
1508
+ if (!isArray(this._events[type])) {
1509
+ this._events[type] = [this._events[type]];
1510
+ }
1511
+ return this._events[type];
1512
+ };
1513
+
1514
+ });
1515
+
1516
+ require.define("/node_modules/sprintf/package.json", function (require, module, exports, __dirname, __filename) {
1517
+ module.exports = {"main":"./lib/sprintf"}
1518
+ });
1519
+
1520
+ require.define("/node_modules/sprintf/lib/sprintf.js", function (require, module, exports, __dirname, __filename) {
1521
+ /**
1522
+ sprintf() for JavaScript 0.7-beta1
1523
+ http://www.diveintojavascript.com/projects/javascript-sprintf
1524
+
1525
+ Copyright (c) Alexandru Marasteanu <alexaholic [at) gmail (dot] com>
1526
+ All rights reserved.
1527
+
1528
+ Redistribution and use in source and binary forms, with or without
1529
+ modification, are permitted provided that the following conditions are met:
1530
+ * Redistributions of source code must retain the above copyright
1531
+ notice, this list of conditions and the following disclaimer.
1532
+ * Redistributions in binary form must reproduce the above copyright
1533
+ notice, this list of conditions and the following disclaimer in the
1534
+ documentation and/or other materials provided with the distribution.
1535
+ * Neither the name of sprintf() for JavaScript nor the
1536
+ names of its contributors may be used to endorse or promote products
1537
+ derived from this software without specific prior written permission.
1538
+
1539
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
1540
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1541
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1542
+ DISCLAIMED. IN NO EVENT SHALL Alexandru Marasteanu BE LIABLE FOR ANY
1543
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1544
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
1545
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
1546
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
1547
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1548
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1549
+
1550
+
1551
+ Changelog:
1552
+ 2010.11.07 - 0.7-beta1-node
1553
+ - converted it to a node.js compatible module
1554
+
1555
+ 2010.09.06 - 0.7-beta1
1556
+ - features: vsprintf, support for named placeholders
1557
+ - enhancements: format cache, reduced global namespace pollution
1558
+
1559
+ 2010.05.22 - 0.6:
1560
+ - reverted to 0.4 and fixed the bug regarding the sign of the number 0
1561
+ Note:
1562
+ Thanks to Raphael Pigulla <raph (at] n3rd [dot) org> (http://www.n3rd.org/)
1563
+ who warned me about a bug in 0.5, I discovered that the last update was
1564
+ a regress. I appologize for that.
1565
+
1566
+ 2010.05.09 - 0.5:
1567
+ - bug fix: 0 is now preceeded with a + sign
1568
+ - bug fix: the sign was not at the right position on padded results (Kamal Abdali)
1569
+ - switched from GPL to BSD license
1570
+
1571
+ 2007.10.21 - 0.4:
1572
+ - unit test and patch (David Baird)
1573
+
1574
+ 2007.09.17 - 0.3:
1575
+ - bug fix: no longer throws exception on empty paramenters (Hans Pufal)
1576
+
1577
+ 2007.09.11 - 0.2:
1578
+ - feature: added argument swapping
1579
+
1580
+ 2007.04.03 - 0.1:
1581
+ - initial release
1582
+ **/
1583
+
1584
+ var sprintf = (function() {
1585
+ function get_type(variable) {
1586
+ return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
1587
+ }
1588
+ function str_repeat(input, multiplier) {
1589
+ for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}
1590
+ return output.join('');
1591
+ }
1592
+
1593
+ var str_format = function() {
1594
+ if (!str_format.cache.hasOwnProperty(arguments[0])) {
1595
+ str_format.cache[arguments[0]] = str_format.parse(arguments[0]);
1596
+ }
1597
+ return str_format.format.call(null, str_format.cache[arguments[0]], arguments);
1598
+ };
1599
+
1600
+ str_format.format = function(parse_tree, argv) {
1601
+ var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;
1602
+ for (i = 0; i < tree_length; i++) {
1603
+ node_type = get_type(parse_tree[i]);
1604
+ if (node_type === 'string') {
1605
+ output.push(parse_tree[i]);
1606
+ }
1607
+ else if (node_type === 'array') {
1608
+ match = parse_tree[i]; // convenience purposes only
1609
+ if (match[2]) { // keyword argument
1610
+ arg = argv[cursor];
1611
+ for (k = 0; k < match[2].length; k++) {
1612
+ if (!arg.hasOwnProperty(match[2][k])) {
1613
+ throw(sprintf('[sprintf] property "%s" does not exist', match[2][k]));
1614
+ }
1615
+ arg = arg[match[2][k]];
1616
+ }
1617
+ }
1618
+ else if (match[1]) { // positional argument (explicit)
1619
+ arg = argv[match[1]];
1620
+ }
1621
+ else { // positional argument (implicit)
1622
+ arg = argv[cursor++];
1623
+ }
1624
+
1625
+ if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {
1626
+ throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));
1627
+ }
1628
+ switch (match[8]) {
1629
+ case 'b': arg = arg.toString(2); break;
1630
+ case 'c': arg = String.fromCharCode(arg); break;
1631
+ case 'd': arg = parseInt(arg, 10); break;
1632
+ case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;
1633
+ case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;
1634
+ case 'o': arg = arg.toString(8); break;
1635
+ case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break;
1636
+ case 'u': arg = Math.abs(arg); break;
1637
+ case 'x': arg = arg.toString(16); break;
1638
+ case 'X': arg = arg.toString(16).toUpperCase(); break;
1639
+ }
1640
+ arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg);
1641
+ pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' ';
1642
+ pad_length = match[6] - String(arg).length;
1643
+ pad = match[6] ? str_repeat(pad_character, pad_length) : '';
1644
+ output.push(match[5] ? arg + pad : pad + arg);
1645
+ }
1646
+ }
1647
+ return output.join('');
1648
+ };
1649
+
1650
+ str_format.cache = {};
1651
+
1652
+ str_format.parse = function(fmt) {
1653
+ var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;
1654
+ while (_fmt) {
1655
+ if ((match = /^[^\x25]+/.exec(_fmt)) !== null) {
1656
+ parse_tree.push(match[0]);
1657
+ }
1658
+ else if ((match = /^\x25{2}/.exec(_fmt)) !== null) {
1659
+ parse_tree.push('%');
1660
+ }
1661
+ else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {
1662
+ if (match[2]) {
1663
+ arg_names |= 1;
1664
+ var field_list = [], replacement_field = match[2], field_match = [];
1665
+ if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
1666
+ field_list.push(field_match[1]);
1667
+ while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
1668
+ if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
1669
+ field_list.push(field_match[1]);
1670
+ }
1671
+ else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {
1672
+ field_list.push(field_match[1]);
1673
+ }
1674
+ else {
1675
+ throw('[sprintf] huh?');
1676
+ }
1677
+ }
1678
+ }
1679
+ else {
1680
+ throw('[sprintf] huh?');
1681
+ }
1682
+ match[2] = field_list;
1683
+ }
1684
+ else {
1685
+ arg_names |= 2;
1686
+ }
1687
+ if (arg_names === 3) {
1688
+ throw('[sprintf] mixing positional and named placeholders is not (yet) supported');
1689
+ }
1690
+ parse_tree.push(match);
1691
+ }
1692
+ else {
1693
+ throw('[sprintf] huh?');
1694
+ }
1695
+ _fmt = _fmt.substring(match[0].length);
1696
+ }
1697
+ return parse_tree;
1698
+ };
1699
+
1700
+ return str_format;
1701
+ })();
1702
+
1703
+ var vsprintf = function(fmt, argv) {
1704
+ argv.unshift(fmt);
1705
+ return sprintf.apply(null, argv);
1706
+ };
1707
+
1708
+ exports.sprintf = sprintf;
1709
+ exports.vsprintf = vsprintf;
1710
+ });
1711
+
1712
+ require.define("/shred/response.js", function (require, module, exports, __dirname, __filename) {
1713
+ // The `Response object` encapsulates a Node.js HTTP response.
1714
+
1715
+ var Content = require("./content")
1716
+ , HeaderMixins = require("./mixins/headers")
1717
+ , CookieJarLib = require( "cookiejar" )
1718
+ , Cookie = CookieJarLib.Cookie
1719
+ ;
1720
+
1721
+ // Browser doesn't have zlib.
1722
+ var zlib = null;
1723
+ try {
1724
+ zlib = require('zlib');
1725
+ } catch (e) {
1726
+ console.warn("no zlib library");
1727
+ }
1728
+
1729
+ // Iconv doesn't work in browser
1730
+ var Iconv = null;
1731
+ try {
1732
+ Iconv = require('iconv-lite');
1733
+ } catch (e) {
1734
+ console.warn("no iconv library");
1735
+ }
1736
+
1737
+ // Construct a `Response` object. You should never have to do this directly. The
1738
+ // `Request` object handles this, getting the raw response object and passing it
1739
+ // in here, along with the request. The callback allows us to stream the response
1740
+ // and then use the callback to let the request know when it's ready.
1741
+ var Response = function(raw, request, callback) {
1742
+ var response = this;
1743
+ this._raw = raw;
1744
+
1745
+ // The `._setHeaders` method is "private"; you can't otherwise set headers on
1746
+ // the response.
1747
+ this._setHeaders.call(this,raw.headers);
1748
+
1749
+ // store any cookies
1750
+ if (request.cookieJar && this.getHeader('set-cookie')) {
1751
+ var cookieStrings = this.getHeader('set-cookie');
1752
+ var cookieObjs = []
1753
+ , cookie;
1754
+
1755
+ for (var i = 0; i < cookieStrings.length; i++) {
1756
+ var cookieString = cookieStrings[i];
1757
+ if (!cookieString) {
1758
+ continue;
1759
+ }
1760
+
1761
+ if (!cookieString.match(/domain\=/i)) {
1762
+ cookieString += '; domain=' + request.host;
1763
+ }
1764
+
1765
+ if (!cookieString.match(/path\=/i)) {
1766
+ cookieString += '; path=' + request.path;
1767
+ }
1768
+
1769
+ try {
1770
+ cookie = new Cookie(cookieString);
1771
+ if (cookie) {
1772
+ cookieObjs.push(cookie);
1773
+ }
1774
+ } catch (e) {
1775
+ console.warn("Tried to set bad cookie: " + cookieString);
1776
+ }
1777
+ }
1778
+
1779
+ request.cookieJar.setCookies(cookieObjs);
1780
+ }
1781
+
1782
+ this.request = request;
1783
+ this.client = request.client;
1784
+ this.log = this.request.log;
1785
+
1786
+ // Stream the response content entity and fire the callback when we're done.
1787
+ // Store the incoming data in a array of Buffers which we concatinate into one
1788
+ // buffer at the end. We need to use buffers instead of strings here in order
1789
+ // to preserve binary data.
1790
+ var chunkBuffers = [];
1791
+ var dataLength = 0;
1792
+ raw.on("data", function(chunk) {
1793
+ chunkBuffers.push(chunk);
1794
+ dataLength += chunk.length;
1795
+ });
1796
+ raw.on("end", function() {
1797
+ var body;
1798
+ if (typeof Buffer === 'undefined') {
1799
+ // Just concatinate into a string
1800
+ body = chunkBuffers.join('');
1801
+ } else {
1802
+ // Initialize new buffer and add the chunks one-at-a-time.
1803
+ body = new Buffer(dataLength);
1804
+ for (var i = 0, pos = 0; i < chunkBuffers.length; i++) {
1805
+ chunkBuffers[i].copy(body, pos);
1806
+ pos += chunkBuffers[i].length;
1807
+ }
1808
+ }
1809
+
1810
+ var setBodyAndFinish = function (body) {
1811
+ response._body = new Content({
1812
+ body: body,
1813
+ type: response.getHeader("Content-Type")
1814
+ });
1815
+ callback(response);
1816
+ }
1817
+
1818
+ if (zlib && response.getHeader("Content-Encoding") === 'gzip'){
1819
+ zlib.gunzip(body, function (err, gunzippedBody) {
1820
+ if (Iconv && response.request.encoding){
1821
+ body = Iconv.fromEncoding(gunzippedBody,response.request.encoding);
1822
+ } else {
1823
+ body = gunzippedBody.toString();
1824
+ }
1825
+ setBodyAndFinish(body);
1826
+ })
1827
+ }
1828
+ else{
1829
+ if (response.request.encoding){
1830
+ body = Iconv.fromEncoding(body,response.request.encoding);
1831
+ }
1832
+ setBodyAndFinish(body);
1833
+ }
1834
+ });
1835
+ };
1836
+
1837
+ // The `Response` object can be pretty overwhelming to view using the built-in
1838
+ // Node.js inspect method. We want to make it a bit more manageable. This
1839
+ // probably goes [too far in the other
1840
+ // direction](https://github.com/spire-io/shred/issues/2).
1841
+
1842
+ Response.prototype = {
1843
+ inspect: function() {
1844
+ var response = this;
1845
+ var headers = this.format_headers();
1846
+ var summary = ["<Shred Response> ", response.status].join(" ")
1847
+ return [ summary, "- Headers:", headers].join("\n");
1848
+ },
1849
+ format_headers: function () {
1850
+ var array = []
1851
+ var headers = this._headers
1852
+ for (var key in headers) {
1853
+ if (headers.hasOwnProperty(key)) {
1854
+ var value = headers[key]
1855
+ array.push("\t" + key + ": " + value);
1856
+ }
1857
+ }
1858
+ return array.join("\n");
1859
+ }
1860
+ };
1861
+
1862
+ // `Response` object properties, all of which are read-only:
1863
+ Object.defineProperties(Response.prototype, {
1864
+
1865
+ // - **status**. The HTTP status code for the response.
1866
+ status: {
1867
+ get: function() { return this._raw.statusCode; },
1868
+ enumerable: true
1869
+ },
1870
+
1871
+ // - **content**. The HTTP content entity, if any. Provided as a [content
1872
+ // object](./content.html), which will attempt to convert the entity based upon
1873
+ // the `content-type` header. The converted value is available as
1874
+ // `content.data`. The original raw content entity is available as
1875
+ // `content.body`.
1876
+ body: {
1877
+ get: function() { return this._body; }
1878
+ },
1879
+ content: {
1880
+ get: function() { return this.body; },
1881
+ enumerable: true
1882
+ },
1883
+
1884
+ // - **isRedirect**. Is the response a redirect? These are responses with 3xx
1885
+ // status and a `Location` header.
1886
+ isRedirect: {
1887
+ get: function() {
1888
+ return (this.status>299
1889
+ &&this.status<400
1890
+ &&this.getHeader("Location"));
1891
+ },
1892
+ enumerable: true
1893
+ },
1894
+
1895
+ // - **isError**. Is the response an error? These are responses with status of
1896
+ // 400 or greater.
1897
+ isError: {
1898
+ get: function() {
1899
+ return (this.status === 0 || this.status > 399)
1900
+ },
1901
+ enumerable: true
1902
+ }
1903
+ });
1904
+
1905
+ // Add in the [getters for accessing the normalized headers](./headers.js).
1906
+ HeaderMixins.getters(Response);
1907
+ HeaderMixins.privateSetters(Response);
1908
+
1909
+ // Work around Mozilla bug #608735 [https://bugzil.la/608735], which causes
1910
+ // getAllResponseHeaders() to return {} if the response is a CORS request.
1911
+ // xhr.getHeader still works correctly.
1912
+ var getHeader = Response.prototype.getHeader;
1913
+ Response.prototype.getHeader = function (name) {
1914
+ return (getHeader.call(this,name) ||
1915
+ (typeof this._raw.getHeader === 'function' && this._raw.getHeader(name)));
1916
+ };
1917
+
1918
+ module.exports = Response;
1919
+
1920
+ });
1921
+
1922
+ require.define("/shred/content.js", function (require, module, exports, __dirname, __filename) {
1923
+
1924
+ // The purpose of the `Content` object is to abstract away the data conversions
1925
+ // to and from raw content entities as strings. For example, you want to be able
1926
+ // to pass in a Javascript object and have it be automatically converted into a
1927
+ // JSON string if the `content-type` is set to a JSON-based media type.
1928
+ // Conversely, you want to be able to transparently get back a Javascript object
1929
+ // in the response if the `content-type` is a JSON-based media-type.
1930
+
1931
+ // One limitation of the current implementation is that it [assumes the `charset` is UTF-8](https://github.com/spire-io/shred/issues/5).
1932
+
1933
+ // The `Content` constructor takes an options object, which *must* have either a
1934
+ // `body` or `data` property and *may* have a `type` property indicating the
1935
+ // media type. If there is no `type` attribute, a default will be inferred.
1936
+ var Content = function(options) {
1937
+ this.body = options.body;
1938
+ this.data = options.data;
1939
+ this.type = options.type;
1940
+ };
1941
+
1942
+ Content.prototype = {
1943
+ // Treat `toString()` as asking for the `content.body`. That is, the raw content entity.
1944
+ //
1945
+ // toString: function() { return this.body; }
1946
+ //
1947
+ // Commented out, but I've forgotten why. :/
1948
+ };
1949
+
1950
+
1951
+ // `Content` objects have the following attributes:
1952
+ Object.defineProperties(Content.prototype,{
1953
+
1954
+ // - **type**. Typically accessed as `content.type`, reflects the `content-type`
1955
+ // header associated with the request or response. If not passed as an options
1956
+ // to the constructor or set explicitly, it will infer the type the `data`
1957
+ // attribute, if possible, and, failing that, will default to `text/plain`.
1958
+ type: {
1959
+ get: function() {
1960
+ if (this._type) {
1961
+ return this._type;
1962
+ } else {
1963
+ if (this._data) {
1964
+ switch(typeof this._data) {
1965
+ case "string": return "text/plain";
1966
+ case "object": return "application/json";
1967
+ }
1968
+ }
1969
+ }
1970
+ return "text/plain";
1971
+ },
1972
+ set: function(value) {
1973
+ this._type = value;
1974
+ return this;
1975
+ },
1976
+ enumerable: true
1977
+ },
1978
+
1979
+ // - **data**. Typically accessed as `content.data`, reflects the content entity
1980
+ // converted into Javascript data. This can be a string, if the `type` is, say,
1981
+ // `text/plain`, but can also be a Javascript object. The conversion applied is
1982
+ // based on the `processor` attribute. The `data` attribute can also be set
1983
+ // directly, in which case the conversion will be done the other way, to infer
1984
+ // the `body` attribute.
1985
+ data: {
1986
+ get: function() {
1987
+ if (this._body) {
1988
+ return this.processor.parser(this._body);
1989
+ } else {
1990
+ return this._data;
1991
+ }
1992
+ },
1993
+ set: function(data) {
1994
+ if (this._body&&data) Errors.setDataWithBody(this);
1995
+ this._data = data;
1996
+ return this;
1997
+ },
1998
+ enumerable: true
1999
+ },
2000
+
2001
+ // - **body**. Typically accessed as `content.body`, reflects the content entity
2002
+ // as a UTF-8 string. It is the mirror of the `data` attribute. If you set the
2003
+ // `data` attribute, the `body` attribute will be inferred and vice-versa. If
2004
+ // you attempt to set both, an exception is raised.
2005
+ body: {
2006
+ get: function() {
2007
+ if (this._data) {
2008
+ return this.processor.stringify(this._data);
2009
+ } else {
2010
+ return this.processor.stringify(this._body);
2011
+ }
2012
+ },
2013
+ set: function(body) {
2014
+ if (this._data&&body) Errors.setBodyWithData(this);
2015
+ this._body = body;
2016
+ return this;
2017
+ },
2018
+ enumerable: true
2019
+ },
2020
+
2021
+ // - **processor**. The functions that will be used to convert to/from `data` and
2022
+ // `body` attributes. You can add processors. The two that are built-in are for
2023
+ // `text/plain`, which is basically an identity transformation and
2024
+ // `application/json` and other JSON-based media types (including custom media
2025
+ // types with `+json`). You can add your own processors. See below.
2026
+ processor: {
2027
+ get: function() {
2028
+ var processor = Content.processors[this.type];
2029
+ if (processor) {
2030
+ return processor;
2031
+ } else {
2032
+ // Return the first processor that matches any part of the
2033
+ // content type. ex: application/vnd.foobar.baz+json will match json.
2034
+ var main = this.type.split(";")[0];
2035
+ var parts = main.split(/\+|\//);
2036
+ for (var i=0, l=parts.length; i < l; i++) {
2037
+ processor = Content.processors[parts[i]]
2038
+ }
2039
+ return processor || {parser:identity,stringify:toString};
2040
+ }
2041
+ },
2042
+ enumerable: true
2043
+ },
2044
+
2045
+ // - **length**. Typically accessed as `content.length`, returns the length in
2046
+ // bytes of the raw content entity.
2047
+ length: {
2048
+ get: function() {
2049
+ if (typeof Buffer !== 'undefined') {
2050
+ return Buffer.byteLength(this.body);
2051
+ }
2052
+ return this.body.length;
2053
+ }
2054
+ }
2055
+ });
2056
+
2057
+ Content.processors = {};
2058
+
2059
+ // The `registerProcessor` function allows you to add your own processors to
2060
+ // convert content entities. Each processor consists of a Javascript object with
2061
+ // two properties:
2062
+ // - **parser**. The function used to parse a raw content entity and convert it
2063
+ // into a Javascript data type.
2064
+ // - **stringify**. The function used to convert a Javascript data type into a
2065
+ // raw content entity.
2066
+ Content.registerProcessor = function(types,processor) {
2067
+
2068
+ // You can pass an array of types that will trigger this processor, or just one.
2069
+ // We determine the array via duck-typing here.
2070
+ if (types.forEach) {
2071
+ types.forEach(function(type) {
2072
+ Content.processors[type] = processor;
2073
+ });
2074
+ } else {
2075
+ // If you didn't pass an array, we just use what you pass in.
2076
+ Content.processors[types] = processor;
2077
+ }
2078
+ };
2079
+
2080
+ // Register the identity processor, which is used for text-based media types.
2081
+ var identity = function(x) { return x; }
2082
+ , toString = function(x) { return x.toString(); }
2083
+ Content.registerProcessor(
2084
+ ["text/html","text/plain","text"],
2085
+ { parser: identity, stringify: toString });
2086
+
2087
+ // Register the JSON processor, which is used for JSON-based media types.
2088
+ Content.registerProcessor(
2089
+ ["application/json; charset=utf-8","application/json","json"],
2090
+ {
2091
+ parser: function(string) {
2092
+ return JSON.parse(string);
2093
+ },
2094
+ stringify: function(data) {
2095
+ return JSON.stringify(data); }});
2096
+
2097
+ // Error functions are defined separately here in an attempt to make the code
2098
+ // easier to read.
2099
+ var Errors = {
2100
+ setDataWithBody: function(object) {
2101
+ throw new Error("Attempt to set data attribute of a content object " +
2102
+ "when the body attributes was already set.");
2103
+ },
2104
+ setBodyWithData: function(object) {
2105
+ throw new Error("Attempt to set body attribute of a content object " +
2106
+ "when the data attributes was already set.");
2107
+ }
2108
+ }
2109
+ module.exports = Content;
2110
+
2111
+ });
2112
+
2113
+ require.define("/shred/mixins/headers.js", function (require, module, exports, __dirname, __filename) {
2114
+ // The header mixins allow you to add HTTP header support to any object. This
2115
+ // might seem pointless: why not simply use a hash? The main reason is that, per
2116
+ // the [HTTP spec](http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2),
2117
+ // headers are case-insensitive. So, for example, `content-type` is the same as
2118
+ // `CONTENT-TYPE` which is the same as `Content-Type`. Since there is no way to
2119
+ // overload the index operator in Javascript, using a hash to represent the
2120
+ // headers means it's possible to have two conflicting values for a single
2121
+ // header.
2122
+ //
2123
+ // The solution to this is to provide explicit methods to set or get headers.
2124
+ // This also has the benefit of allowing us to introduce additional variations,
2125
+ // including snake case, which we automatically convert to what Matthew King has
2126
+ // dubbed "corset case" - the hyphen-separated names with initial caps:
2127
+ // `Content-Type`. We use corset-case just in case we're dealing with servers
2128
+ // that haven't properly implemented the spec.
2129
+
2130
+ // Convert headers to corset-case. **Example:** `CONTENT-TYPE` will be converted
2131
+ // to `Content-Type`.
2132
+
2133
+ var corsetCase = function(string) {
2134
+ return string.toLowerCase()
2135
+ //.replace("_","-")
2136
+ .replace(/(^|-)(\w)/g,
2137
+ function(s) { return s.toUpperCase(); });
2138
+ };
2139
+
2140
+ // We suspect that `initializeHeaders` was once more complicated ...
2141
+ var initializeHeaders = function(object) {
2142
+ return {};
2143
+ };
2144
+
2145
+ // Access the `_headers` property using lazy initialization. **Warning:** If you
2146
+ // mix this into an object that is using the `_headers` property already, you're
2147
+ // going to have trouble.
2148
+ var $H = function(object) {
2149
+ return object._headers||(object._headers=initializeHeaders(object));
2150
+ };
2151
+
2152
+ // Hide the implementations as private functions, separate from how we expose them.
2153
+
2154
+ // The "real" `getHeader` function: get the header after normalizing the name.
2155
+ var getHeader = function(object,name) {
2156
+ return $H(object)[corsetCase(name)];
2157
+ };
2158
+
2159
+ // The "real" `getHeader` function: get one or more headers, or all of them
2160
+ // if you don't ask for any specifics.
2161
+ var getHeaders = function(object,names) {
2162
+ var keys = (names && names.length>0) ? names : Object.keys($H(object));
2163
+ var hash = keys.reduce(function(hash,key) {
2164
+ hash[key] = getHeader(object,key);
2165
+ return hash;
2166
+ },{});
2167
+ // Freeze the resulting hash so you don't mistakenly think you're modifying
2168
+ // the real headers.
2169
+ Object.freeze(hash);
2170
+ return hash;
2171
+ };
2172
+
2173
+ // The "real" `setHeader` function: set a header, after normalizing the name.
2174
+ var setHeader = function(object,name,value) {
2175
+ $H(object)[corsetCase(name)] = value;
2176
+ return object;
2177
+ };
2178
+
2179
+ // The "real" `setHeaders` function: set multiple headers based on a hash.
2180
+ var setHeaders = function(object,hash) {
2181
+ for( var key in hash ) { setHeader(object,key,hash[key]); };
2182
+ return this;
2183
+ };
2184
+
2185
+ // Here's where we actually bind the functionality to an object. These mixins work by
2186
+ // exposing mixin functions. Each function mixes in a specific batch of features.
2187
+ module.exports = {
2188
+
2189
+ // Add getters.
2190
+ getters: function(constructor) {
2191
+ constructor.prototype.getHeader = function(name) { return getHeader(this,name); };
2192
+ constructor.prototype.getHeaders = function() { return getHeaders(this,arguments); };
2193
+ },
2194
+ // Add setters but as "private" methods.
2195
+ privateSetters: function(constructor) {
2196
+ constructor.prototype._setHeader = function(key,value) { return setHeader(this,key,value); };
2197
+ constructor.prototype._setHeaders = function(hash) { return setHeaders(this,hash); };
2198
+ },
2199
+ // Add setters.
2200
+ setters: function(constructor) {
2201
+ constructor.prototype.setHeader = function(key,value) { return setHeader(this,key,value); };
2202
+ constructor.prototype.setHeaders = function(hash) { return setHeaders(this,hash); };
2203
+ },
2204
+ // Add both getters and setters.
2205
+ gettersAndSetters: function(constructor) {
2206
+ constructor.prototype.getHeader = function(name) { return getHeader(this,name); };
2207
+ constructor.prototype.getHeaders = function() { return getHeaders(this,arguments); };
2208
+ constructor.prototype.setHeader = function(key,value) { return setHeader(this,key,value); };
2209
+ constructor.prototype.setHeaders = function(hash) { return setHeaders(this,hash); };
2210
+ },
2211
+ };
2212
+
2213
+ });
2214
+
2215
+ require.define("/node_modules/iconv-lite/package.json", function (require, module, exports, __dirname, __filename) {
2216
+ module.exports = {}
2217
+ });
2218
+
2219
+ require.define("/node_modules/iconv-lite/index.js", function (require, module, exports, __dirname, __filename) {
2220
+ // Module exports
2221
+ var iconv = module.exports = {
2222
+ toEncoding: function(str, encoding) {
2223
+ return iconv.getCodec(encoding).toEncoding(str);
2224
+ },
2225
+ fromEncoding: function(buf, encoding) {
2226
+ return iconv.getCodec(encoding).fromEncoding(buf);
2227
+ },
2228
+
2229
+ defaultCharUnicode: '�',
2230
+ defaultCharSingleByte: '?',
2231
+
2232
+ // Get correct codec for given encoding.
2233
+ getCodec: function(encoding) {
2234
+ var enc = encoding || "utf8";
2235
+ var codecOptions = undefined;
2236
+ while (1) {
2237
+ if (getType(enc) === "String")
2238
+ enc = enc.replace(/[- ]/g, "").toLowerCase();
2239
+ var codec = iconv.encodings[enc];
2240
+ var type = getType(codec);
2241
+ if (type === "String") {
2242
+ // Link to other encoding.
2243
+ codecOptions = {originalEncoding: enc};
2244
+ enc = codec;
2245
+ }
2246
+ else if (type === "Object" && codec.type != undefined) {
2247
+ // Options for other encoding.
2248
+ codecOptions = codec;
2249
+ enc = codec.type;
2250
+ }
2251
+ else if (type === "Function")
2252
+ // Codec itself.
2253
+ return codec(codecOptions);
2254
+ else
2255
+ throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
2256
+ }
2257
+ },
2258
+
2259
+ // Define basic encodings
2260
+ encodings: {
2261
+ internal: function(options) {
2262
+ return {
2263
+ toEncoding: function(str) {
2264
+ return new Buffer(ensureString(str), options.originalEncoding);
2265
+ },
2266
+ fromEncoding: function(buf) {
2267
+ return ensureBuffer(buf).toString(options.originalEncoding);
2268
+ }
2269
+ };
2270
+ },
2271
+ utf8: "internal",
2272
+ ucs2: "internal",
2273
+ binary: "internal",
2274
+ ascii: "internal",
2275
+ base64: "internal",
2276
+
2277
+ // Codepage single-byte encodings.
2278
+ singlebyte: function(options) {
2279
+ // Prepare chars if needed
2280
+ if (!options.chars || (options.chars.length !== 128 && options.chars.length !== 256))
2281
+ throw new Error("Encoding '"+options.type+"' has incorrect 'chars' (must be of len 128 or 256)");
2282
+
2283
+ if (options.chars.length === 128)
2284
+ options.chars = asciiString + options.chars;
2285
+
2286
+ if (!options.charsBuf) {
2287
+ options.charsBuf = new Buffer(options.chars, 'ucs2');
2288
+ }
2289
+
2290
+ if (!options.revCharsBuf) {
2291
+ options.revCharsBuf = new Buffer(65536);
2292
+ var defChar = iconv.defaultCharSingleByte.charCodeAt(0);
2293
+ for (var i = 0; i < options.revCharsBuf.length; i++)
2294
+ options.revCharsBuf[i] = defChar;
2295
+ for (var i = 0; i < options.chars.length; i++)
2296
+ options.revCharsBuf[options.chars.charCodeAt(i)] = i;
2297
+ }
2298
+
2299
+ return {
2300
+ toEncoding: function(str) {
2301
+ str = ensureString(str);
2302
+
2303
+ var buf = new Buffer(str.length);
2304
+ var revCharsBuf = options.revCharsBuf;
2305
+ for (var i = 0; i < str.length; i++)
2306
+ buf[i] = revCharsBuf[str.charCodeAt(i)];
2307
+
2308
+ return buf;
2309
+ },
2310
+ fromEncoding: function(buf) {
2311
+ buf = ensureBuffer(buf);
2312
+
2313
+ // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
2314
+ var charsBuf = options.charsBuf;
2315
+ var newBuf = new Buffer(buf.length*2);
2316
+ var idx1 = 0, idx2 = 0;
2317
+ for (var i = 0, _len = buf.length; i < _len; i++) {
2318
+ idx1 = buf[i]*2; idx2 = i*2;
2319
+ newBuf[idx2] = charsBuf[idx1];
2320
+ newBuf[idx2+1] = charsBuf[idx1+1];
2321
+ }
2322
+ return newBuf.toString('ucs2');
2323
+ }
2324
+ };
2325
+ },
2326
+
2327
+ // Codepage double-byte encodings.
2328
+ table: function(options) {
2329
+ var table = options.table, key, revCharsTable = options.revCharsTable;
2330
+ if (!table) {
2331
+ throw new Error("Encoding '" + options.type +"' has incorect 'table' option");
2332
+ }
2333
+ if(!revCharsTable) {
2334
+ revCharsTable = options.revCharsTable = {};
2335
+ for (key in table) {
2336
+ revCharsTable[table[key]] = parseInt(key);
2337
+ }
2338
+ }
2339
+
2340
+ return {
2341
+ toEncoding: function(str) {
2342
+ str = ensureString(str);
2343
+ var strLen = str.length;
2344
+ var bufLen = strLen;
2345
+ for (var i = 0; i < strLen; i++)
2346
+ if (str.charCodeAt(i) >> 7)
2347
+ bufLen++;
2348
+
2349
+ var newBuf = new Buffer(bufLen), gbkcode, unicode,
2350
+ defaultChar = revCharsTable[iconv.defaultCharUnicode.charCodeAt(0)];
2351
+
2352
+ for (var i = 0, j = 0; i < strLen; i++) {
2353
+ unicode = str.charCodeAt(i);
2354
+ if (unicode >> 7) {
2355
+ gbkcode = revCharsTable[unicode] || defaultChar;
2356
+ newBuf[j++] = gbkcode >> 8; //high byte;
2357
+ newBuf[j++] = gbkcode & 0xFF; //low byte
2358
+ } else {//ascii
2359
+ newBuf[j++] = unicode;
2360
+ }
2361
+ }
2362
+ return newBuf;
2363
+ },
2364
+ fromEncoding: function(buf) {
2365
+ buf = ensureBuffer(buf);
2366
+ var bufLen = buf.length, strLen = 0;
2367
+ for (var i = 0; i < bufLen; i++) {
2368
+ strLen++;
2369
+ if (buf[i] & 0x80) //the high bit is 1, so this byte is gbkcode's high byte.skip next byte
2370
+ i++;
2371
+ }
2372
+ var newBuf = new Buffer(strLen*2), unicode, gbkcode,
2373
+ defaultChar = iconv.defaultCharUnicode.charCodeAt(0);
2374
+
2375
+ for (var i = 0, j = 0; i < bufLen; i++, j+=2) {
2376
+ gbkcode = buf[i];
2377
+ if (gbkcode & 0x80) {
2378
+ gbkcode = (gbkcode << 8) + buf[++i];
2379
+ unicode = table[gbkcode] || defaultChar;
2380
+ } else {
2381
+ unicode = gbkcode;
2382
+ }
2383
+ newBuf[j] = unicode & 0xFF; //low byte
2384
+ newBuf[j+1] = unicode >> 8; //high byte
2385
+ }
2386
+ return newBuf.toString('ucs2');
2387
+ }
2388
+ }
2389
+ }
2390
+ }
2391
+ };
2392
+
2393
+ // Add aliases to convert functions
2394
+ iconv.encode = iconv.toEncoding;
2395
+ iconv.decode = iconv.fromEncoding;
2396
+
2397
+ // Load other encodings from files in /encodings dir.
2398
+ var encodingsDir = __dirname+"/encodings/",
2399
+ fs = require('fs');
2400
+ fs.readdirSync(encodingsDir).forEach(function(file) {
2401
+ if(fs.statSync(encodingsDir + file).isDirectory()) return;
2402
+ var encodings = require(encodingsDir + file)
2403
+ for (var key in encodings)
2404
+ iconv.encodings[key] = encodings[key]
2405
+ });
2406
+
2407
+ // Utilities
2408
+ var asciiString = '\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'+
2409
+ ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f';
2410
+
2411
+ var ensureBuffer = function(buf) {
2412
+ buf = buf || new Buffer(0);
2413
+ return (buf instanceof Buffer) ? buf : new Buffer(buf.toString(), "utf8");
2414
+ }
2415
+
2416
+ var ensureString = function(str) {
2417
+ str = str || "";
2418
+ return (str instanceof String) ? str : str.toString((str instanceof Buffer) ? 'utf8' : undefined);
2419
+ }
2420
+
2421
+ var getType = function(obj) {
2422
+ return Object.prototype.toString.call(obj).slice(8, -1);
2423
+ }
2424
+
2425
+
2426
+ });
2427
+
2428
+ require.define("/node_modules/http-browserify/package.json", function (require, module, exports, __dirname, __filename) {
2429
+ module.exports = {"main":"index.js","browserify":"browser.js"}
2430
+ });
2431
+
2432
+ require.define("/node_modules/http-browserify/browser.js", function (require, module, exports, __dirname, __filename) {
2433
+ var http = module.exports;
2434
+ var EventEmitter = require('events').EventEmitter;
2435
+ var Request = require('./lib/request');
2436
+
2437
+ http.request = function (params, cb) {
2438
+ if (!params) params = {};
2439
+ if (!params.host) params.host = window.location.host.split(':')[0];
2440
+ if (!params.port) params.port = window.location.port;
2441
+
2442
+ var req = new Request(new xhrHttp, params);
2443
+ if (cb) req.on('response', cb);
2444
+ return req;
2445
+ };
2446
+
2447
+ http.get = function (params, cb) {
2448
+ params.method = 'GET';
2449
+ var req = http.request(params, cb);
2450
+ req.end();
2451
+ return req;
2452
+ };
2453
+
2454
+ var xhrHttp = (function () {
2455
+ if (typeof window === 'undefined') {
2456
+ throw new Error('no window object present');
2457
+ }
2458
+ else if (window.XMLHttpRequest) {
2459
+ return window.XMLHttpRequest;
2460
+ }
2461
+ else if (window.ActiveXObject) {
2462
+ var axs = [
2463
+ 'Msxml2.XMLHTTP.6.0',
2464
+ 'Msxml2.XMLHTTP.3.0',
2465
+ 'Microsoft.XMLHTTP'
2466
+ ];
2467
+ for (var i = 0; i < axs.length; i++) {
2468
+ try {
2469
+ var ax = new(window.ActiveXObject)(axs[i]);
2470
+ return function () {
2471
+ if (ax) {
2472
+ var ax_ = ax;
2473
+ ax = null;
2474
+ return ax_;
2475
+ }
2476
+ else {
2477
+ return new(window.ActiveXObject)(axs[i]);
2478
+ }
2479
+ };
2480
+ }
2481
+ catch (e) {}
2482
+ }
2483
+ throw new Error('ajax not supported in this browser')
2484
+ }
2485
+ else {
2486
+ throw new Error('ajax not supported in this browser');
2487
+ }
2488
+ })();
2489
+
2490
+ http.STATUS_CODES = {
2491
+ 100 : 'Continue',
2492
+ 101 : 'Switching Protocols',
2493
+ 102 : 'Processing', // RFC 2518, obsoleted by RFC 4918
2494
+ 200 : 'OK',
2495
+ 201 : 'Created',
2496
+ 202 : 'Accepted',
2497
+ 203 : 'Non-Authoritative Information',
2498
+ 204 : 'No Content',
2499
+ 205 : 'Reset Content',
2500
+ 206 : 'Partial Content',
2501
+ 207 : 'Multi-Status', // RFC 4918
2502
+ 300 : 'Multiple Choices',
2503
+ 301 : 'Moved Permanently',
2504
+ 302 : 'Moved Temporarily',
2505
+ 303 : 'See Other',
2506
+ 304 : 'Not Modified',
2507
+ 305 : 'Use Proxy',
2508
+ 307 : 'Temporary Redirect',
2509
+ 400 : 'Bad Request',
2510
+ 401 : 'Unauthorized',
2511
+ 402 : 'Payment Required',
2512
+ 403 : 'Forbidden',
2513
+ 404 : 'Not Found',
2514
+ 405 : 'Method Not Allowed',
2515
+ 406 : 'Not Acceptable',
2516
+ 407 : 'Proxy Authentication Required',
2517
+ 408 : 'Request Time-out',
2518
+ 409 : 'Conflict',
2519
+ 410 : 'Gone',
2520
+ 411 : 'Length Required',
2521
+ 412 : 'Precondition Failed',
2522
+ 413 : 'Request Entity Too Large',
2523
+ 414 : 'Request-URI Too Large',
2524
+ 415 : 'Unsupported Media Type',
2525
+ 416 : 'Requested Range Not Satisfiable',
2526
+ 417 : 'Expectation Failed',
2527
+ 418 : 'I\'m a teapot', // RFC 2324
2528
+ 422 : 'Unprocessable Entity', // RFC 4918
2529
+ 423 : 'Locked', // RFC 4918
2530
+ 424 : 'Failed Dependency', // RFC 4918
2531
+ 425 : 'Unordered Collection', // RFC 4918
2532
+ 426 : 'Upgrade Required', // RFC 2817
2533
+ 500 : 'Internal Server Error',
2534
+ 501 : 'Not Implemented',
2535
+ 502 : 'Bad Gateway',
2536
+ 503 : 'Service Unavailable',
2537
+ 504 : 'Gateway Time-out',
2538
+ 505 : 'HTTP Version not supported',
2539
+ 506 : 'Variant Also Negotiates', // RFC 2295
2540
+ 507 : 'Insufficient Storage', // RFC 4918
2541
+ 509 : 'Bandwidth Limit Exceeded',
2542
+ 510 : 'Not Extended' // RFC 2774
2543
+ };
2544
+
2545
+ });
2546
+
2547
+ require.define("/node_modules/http-browserify/lib/request.js", function (require, module, exports, __dirname, __filename) {
2548
+ var EventEmitter = require('events').EventEmitter;
2549
+ var Response = require('./response');
2550
+ var isSafeHeader = require('./isSafeHeader');
2551
+
2552
+ var Request = module.exports = function (xhr, params) {
2553
+ var self = this;
2554
+ self.xhr = xhr;
2555
+ self.body = '';
2556
+
2557
+ var uri = params.host + ':' + params.port + (params.path || '/');
2558
+
2559
+ xhr.open(
2560
+ params.method || 'GET',
2561
+ (params.scheme || 'http') + '://' + uri,
2562
+ true
2563
+ );
2564
+
2565
+ if (params.headers) {
2566
+ Object.keys(params.headers).forEach(function (key) {
2567
+ if (!isSafeHeader(key)) return;
2568
+ var value = params.headers[key];
2569
+ if (Array.isArray(value)) {
2570
+ value.forEach(function (v) {
2571
+ xhr.setRequestHeader(key, v);
2572
+ });
2573
+ }
2574
+ else xhr.setRequestHeader(key, value)
2575
+ });
2576
+ }
2577
+
2578
+ var res = new Response(xhr);
2579
+ res.on('ready', function () {
2580
+ self.emit('response', res);
2581
+ });
2582
+
2583
+ xhr.onreadystatechange = function () {
2584
+ res.handle(xhr);
2585
+ };
2586
+ };
2587
+
2588
+ Request.prototype = new EventEmitter;
2589
+
2590
+ Request.prototype.setHeader = function (key, value) {
2591
+ if ((Array.isArray && Array.isArray(value))
2592
+ || value instanceof Array) {
2593
+ for (var i = 0; i < value.length; i++) {
2594
+ this.xhr.setRequestHeader(key, value[i]);
2595
+ }
2596
+ }
2597
+ else {
2598
+ this.xhr.setRequestHeader(key, value);
2599
+ }
2600
+ };
2601
+
2602
+ Request.prototype.write = function (s) {
2603
+ this.body += s;
2604
+ };
2605
+
2606
+ Request.prototype.end = function (s) {
2607
+ if (s !== undefined) this.write(s);
2608
+ this.xhr.send(this.body);
2609
+ };
2610
+
2611
+ });
2612
+
2613
+ require.define("/node_modules/http-browserify/lib/response.js", function (require, module, exports, __dirname, __filename) {
2614
+ var EventEmitter = require('events').EventEmitter;
2615
+ var isSafeHeader = require('./isSafeHeader');
2616
+
2617
+ var Response = module.exports = function (xhr) {
2618
+ this.xhr = xhr;
2619
+ this.offset = 0;
2620
+ };
2621
+
2622
+ Response.prototype = new EventEmitter;
2623
+
2624
+ var capable = {
2625
+ streaming : true,
2626
+ status2 : true
2627
+ };
2628
+
2629
+ function parseHeaders (xhr) {
2630
+ var lines = xhr.getAllResponseHeaders().split(/\r?\n/);
2631
+ var headers = {};
2632
+ for (var i = 0; i < lines.length; i++) {
2633
+ var line = lines[i];
2634
+ if (line === '') continue;
2635
+
2636
+ var m = line.match(/^([^:]+):\s*(.*)/);
2637
+ if (m) {
2638
+ var key = m[1].toLowerCase(), value = m[2];
2639
+
2640
+ if (headers[key] !== undefined) {
2641
+ if ((Array.isArray && Array.isArray(headers[key]))
2642
+ || headers[key] instanceof Array) {
2643
+ headers[key].push(value);
2644
+ }
2645
+ else {
2646
+ headers[key] = [ headers[key], value ];
2647
+ }
2648
+ }
2649
+ else {
2650
+ headers[key] = value;
2651
+ }
2652
+ }
2653
+ else {
2654
+ headers[line] = true;
2655
+ }
2656
+ }
2657
+ return headers;
2658
+ }
2659
+
2660
+ Response.prototype.getHeader = function (key) {
2661
+ var header = this.headers ? this.headers[key.toLowerCase()] : null;
2662
+ if (header) return header;
2663
+
2664
+ // Work around Mozilla bug #608735 [https://bugzil.la/608735], which causes
2665
+ // getAllResponseHeaders() to return {} if the response is a CORS request.
2666
+ // xhr.getHeader still works correctly.
2667
+ if (isSafeHeader(key)) {
2668
+ return this.xhr.getResponseHeader(key);
2669
+ }
2670
+ return null;
2671
+ };
2672
+
2673
+ Response.prototype.handle = function () {
2674
+ var xhr = this.xhr;
2675
+ if (xhr.readyState === 2 && capable.status2) {
2676
+ try {
2677
+ this.statusCode = xhr.status;
2678
+ this.headers = parseHeaders(xhr);
2679
+ }
2680
+ catch (err) {
2681
+ capable.status2 = false;
2682
+ }
2683
+
2684
+ if (capable.status2) {
2685
+ this.emit('ready');
2686
+ }
2687
+ }
2688
+ else if (capable.streaming && xhr.readyState === 3) {
2689
+ try {
2690
+ if (!this.statusCode) {
2691
+ this.statusCode = xhr.status;
2692
+ this.headers = parseHeaders(xhr);
2693
+ this.emit('ready');
2694
+ }
2695
+ }
2696
+ catch (err) {}
2697
+
2698
+ try {
2699
+ this.write();
2700
+ }
2701
+ catch (err) {
2702
+ capable.streaming = false;
2703
+ }
2704
+ }
2705
+ else if (xhr.readyState === 4) {
2706
+ if (!this.statusCode) {
2707
+ this.statusCode = xhr.status;
2708
+ this.emit('ready');
2709
+ }
2710
+ this.write();
2711
+
2712
+ if (xhr.error) {
2713
+ this.emit('error', xhr.responseText);
2714
+ }
2715
+ else this.emit('end');
2716
+ }
2717
+ };
2718
+
2719
+ Response.prototype.write = function () {
2720
+ var xhr = this.xhr;
2721
+ if (xhr.responseText.length > this.offset) {
2722
+ this.emit('data', xhr.responseText.slice(this.offset));
2723
+ this.offset = xhr.responseText.length;
2724
+ }
2725
+ };
2726
+
2727
+ });
2728
+
2729
+ require.define("/node_modules/http-browserify/lib/isSafeHeader.js", function (require, module, exports, __dirname, __filename) {
2730
+ // Taken from http://dxr.mozilla.org/mozilla/mozilla-central/content/base/src/nsXMLHttpRequest.cpp.html
2731
+ var unsafeHeaders = [
2732
+ "accept-charset",
2733
+ "accept-encoding",
2734
+ "access-control-request-headers",
2735
+ "access-control-request-method",
2736
+ "connection",
2737
+ "content-length",
2738
+ "cookie",
2739
+ "cookie2",
2740
+ "content-transfer-encoding",
2741
+ "date",
2742
+ "expect",
2743
+ "host",
2744
+ "keep-alive",
2745
+ "origin",
2746
+ "referer",
2747
+ "set-cookie",
2748
+ "te",
2749
+ "trailer",
2750
+ "transfer-encoding",
2751
+ "upgrade",
2752
+ "user-agent",
2753
+ "via"
2754
+ ];
2755
+
2756
+ module.exports = function (headerName) {
2757
+ if (!headerName) return false;
2758
+ return (unsafeHeaders.indexOf(headerName.toLowerCase()) === -1)
2759
+ };
2760
+
2761
+ });
2762
+
2763
+ require.alias("http-browserify", "/node_modules/http");
2764
+
2765
+ require.alias("http-browserify", "/node_modules/https");