(function(){var v=this,lt=v._,e={},r=Array.prototype,nt=Object.prototype,at=Function.prototype,y=r.push,t=r.slice,o=r.concat,f=nt.toString,vt=nt.hasOwnProperty,tt=r.forEach,it=r.map,rt=r.reduce,ut=r.reduceRight,ft=r.filter,et=r.every,ot=r.some,s=r.indexOf,st=r.lastIndexOf,yt=Array.isArray,pt=Object.keys,p=at.bind,n=function(t){if(t instanceof n)return t;if(!(this instanceof n))return new n(t);this._wrapped=t},i,w,b,h,k,d,c,l,u,ht,ct,a;typeof exports!="undefined"?(typeof module!="undefined"&&module.exports&&(exports=module.exports=n),exports._=n):v._=n;n.VERSION="1.5.1";i=n.each=n.forEach=function(t,i,r){var u,o,f;if(t!=null)if(tt&&t.forEach===tt)t.forEach(i,r);else if(t.length===+t.length){for(u=0,o=t.length;u<o;u++)if(i.call(r,t[u],u,t)===e)return}else for(f in t)if(n.has(t,f)&&i.call(r,t[f],f,t)===e)return};n.map=n.collect=function(n,t,r){var u=[];return n==null?u:it&&n.map===it?n.map(t,r):(i(n,function(n,i,f){u.push(t.call(r,n,i,f))}),u)};w="Reduce of empty array with no initial value";n.reduce=n.foldl=n.inject=function(t,r,u,f){var e=arguments.length>2;if(t==null&&(t=[]),rt&&t.reduce===rt)return f&&(r=n.bind(r,f)),e?t.reduce(r,u):t.reduce(r);if(i(t,function(n,t,i){e?u=r.call(f,u,n,t,i):(u=n,e=!0)}),!e)throw new TypeError(w);return u};n.reduceRight=n.foldr=function(t,r,u,f){var o=arguments.length>2,e,s;if(t==null&&(t=[]),ut&&t.reduceRight===ut)return f&&(r=n.bind(r,f)),o?t.reduceRight(r,u):t.reduceRight(r);if(e=t.length,e!==+e&&(s=n.keys(t),e=s.length),i(t,function(n,i,h){i=s?s[--e]:--e;o?u=r.call(f,u,t[i],i,h):(u=t[i],o=!0)}),!o)throw new TypeError(w);return u};n.find=n.detect=function(n,t,i){var r;return b(n,function(n,u,f){if(t.call(i,n,u,f))return r=n,!0}),r};n.filter=n.select=function(n,t,r){var u=[];return n==null?u:ft&&n.filter===ft?n.filter(t,r):(i(n,function(n,i,f){t.call(r,n,i,f)&&u.push(n)}),u)};n.reject=function(t,i,r){return n.filter(t,function(n,t,u){return!i.call(r,n,t,u)},r)};n.every=n.all=function(t,r,u){r||(r=n.identity);var f=!0;return t==null?f:et&&t.every===et?t.every(r,u):(i(t,function(n,t,i){if(!(f=f&&r.call(u,n,t,i)))return e}),!!f)};b=n.some=n.any=function(t,r,u){r||(r=n.identity);var f=!1;return t==null?f:ot&&t.some===ot?t.some(r,u):(i(t,function(n,t,i){if(f||(f=r.call(u,n,t,i)))return e}),!!f)};n.contains=n.include=function(n,t){return n==null?!1:s&&n.indexOf===s?n.indexOf(t)!=-1:b(n,function(n){return n===t})};n.invoke=function(i,r){var u=t.call(arguments,2),f=n.isFunction(r);return n.map(i,function(n){return(f?r:n[r]).apply(n,u)})};n.pluck=function(t,i){return n.map(t,function(n){return n[i]})};n.where=function(t,i,r){return n.isEmpty(i)?r?void 0:[]:n[r?"find":"filter"](t,function(n){for(var t in i)if(i[t]!==n[t])return!1;return!0})};n.findWhere=function(t,i){return n.where(t,i,!0)};n.max=function(t,r,u){if(!r&&n.isArray(t)&&t[0]===+t[0]&&t.length<65535)return Math.max.apply(Math,t);if(!r&&n.isEmpty(t))return-Infinity;var f={computed:-Infinity,value:-Infinity};return i(t,function(n,t,i){var e=r?r.call(u,n,t,i):n;e>f.computed&&(f={value:n,computed:e})}),f.value};n.min=function(t,r,u){if(!r&&n.isArray(t)&&t[0]===+t[0]&&t.length<65535)return Math.min.apply(Math,t);if(!r&&n.isEmpty(t))return Infinity;var f={computed:Infinity,value:Infinity};return i(t,function(n,t,i){var e=r?r.call(u,n,t,i):n;e<f.computed&&(f={value:n,computed:e})}),f.value};n.shuffle=function(t){var u,f=0,r=[];return i(t,function(t){u=n.random(f++);r[f-1]=r[u];r[u]=t}),r};h=function(t){return n.isFunction(t)?t:function(n){return n[t]}};n.sortBy=function(t,i,r){var u=h(i);return n.pluck(n.map(t,function(n,t,i){return{value:n,index:t,criteria:u.call(r,n,t,i)}}).sort(function(n,t){var i=n.criteria,r=t.criteria;if(i!==r){if(i>r||i===void 0)return 1;if(i<r||r===void 0)return-1}return n.index<t.index?-1:1}),"value")};k=function(t,r,u,f){var e={},o=h(r==null?n.identity:r);return i(t,function(n,i){var r=o.call(u,n,i,t);f(e,r,n)}),e};n.groupBy=function(t,i,r){return k(t,i,r,function(t,i,r){(n.has(t,i)?t[i]:t[i]=[]).push(r)})};n.countBy=function(t,i,r){return k(t,i,r,function(t,i){n.has(t,i)||(t[i]=0);t[i]++})};n.sortedIndex=function(t,i,r,u){var e;r=r==null?n.identity:h(r);for(var s=r.call(u,i),f=0,o=t.length;f<o;)e=f+o>>>1,r.call(u,t[e])<s?f=e+1:o=e;return f};n.toArray=function(i){return i?n.isArray(i)?t.call(i):i.length===+i.length?n.map(i,n.identity):n.values(i):[]};n.size=function(t){return t==null?0:t.length===+t.length?t.length:n.keys(t).length};n.first=n.head=n.take=function(n,i,r){if(n!=null)return i!=null&&!r?t.call(n,0,i):n[0]};n.initial=function(n,i,r){return t.call(n,0,n.length-(i==null||r?1:i))};n.last=function(n,i,r){if(n!=null)return i==null||r?n[n.length-1]:t.call(n,Math.max(n.length-i,0))};n.rest=n.tail=n.drop=function(n,i,r){return t.call(n,i==null||r?1:i)};n.compact=function(t){return n.filter(t,n.identity)};d=function(t,r,u){return r&&n.every(t,n.isArray)?o.apply(u,t):(i(t,function(t){n.isArray(t)||n.isArguments(t)?r?y.apply(u,t):d(t,r,u):u.push(t)}),u)};n.flatten=function(n,t){return d(n,t,[])};n.without=function(i){return n.difference(i,t.call(arguments,1))};n.uniq=n.unique=function(t,r,u,f){n.isFunction(r)&&(f=u,u=r,r=!1);var s=u?n.map(t,u,f):t,o=[],e=[];return i(s,function(i,u){(r?u&&e[e.length-1]===i:n.contains(e,i))||(e.push(i),o.push(t[u]))}),o};n.union=function(){return n.uniq(n.flatten(arguments,!0))};n.intersection=function(i){var r=t.call(arguments,1);return n.filter(n.uniq(i),function(t){return n.every(r,function(i){return n.indexOf(i,t)>=0})})};n.difference=function(i){var u=o.apply(r,t.call(arguments,1));return n.filter(i,function(t){return!n.contains(u,t)})};n.zip=function(){for(var i=n.max(n.pluck(arguments,"length").concat(0)),r=new Array(i),t=0;t<i;t++)r[t]=n.pluck(arguments,""+t);return r};n.object=function(n,t){var r,i,u;if(n==null)return{};for(r={},i=0,u=n.length;i<u;i++)t?r[n[i]]=t[i]:r[n[i][0]]=n[i][1];return r};n.indexOf=function(t,i,r){if(t==null)return-1;var u=0,f=t.length;if(r)if(typeof r=="number")u=r<0?Math.max(0,f+r):r;else return u=n.sortedIndex(t,i),t[u]===i?u:-1;if(s&&t.indexOf===s)return t.indexOf(i,r);for(;u<f;u++)if(t[u]===i)return u;return-1};n.lastIndexOf=function(n,t,i){var u,r;if(n==null)return-1;if(u=i!=null,st&&n.lastIndexOf===st)return u?n.lastIndexOf(t,i):n.lastIndexOf(t);for(r=u?i:n.length;r--;)if(n[r]===t)return r;return-1};n.range=function(n,t,i){arguments.length<=1&&(t=n||0,n=0);i=arguments[2]||1;for(var r=Math.max(Math.ceil((t-n)/i),0),u=0,f=new Array(r);u<r;)f[u++]=n,n+=i;return f};c=function(){};n.bind=function(i,r){var u,f;if(p&&i.bind===p)return p.apply(i,t.call(arguments,1));if(!n.isFunction(i))throw new TypeError;return u=t.call(arguments,2),f=function(){var e,n;return(this instanceof f)?(c.prototype=i.prototype,e=new c,c.prototype=null,n=i.apply(e,u.concat(t.call(arguments))),Object(n)===n)?n:e:i.apply(r,u.concat(t.call(arguments)))}};n.partial=function(n){var i=t.call(arguments,1);return function(){return n.apply(this,i.concat(t.call(arguments)))}};n.bindAll=function(r){var u=t.call(arguments,1);if(u.length===0)throw new Error("bindAll must be passed function names");return i(u,function(t){r[t]=n.bind(r[t],r)}),r};n.memoize=function(t,i){var r={};return i||(i=n.identity),function(){var u=i.apply(this,arguments);return n.has(r,u)?r[u]:r[u]=t.apply(this,arguments)}};n.delay=function(n,i){var r=t.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},i)};n.defer=function(i){return n.delay.apply(n,[i,1].concat(t.call(arguments,1)))};n.throttle=function(n,t,i){var f,e,o,r=null,u=0,s;return i||(i={}),s=function(){u=i.leading===!1?0:new Date;r=null;o=n.apply(f,e)},function(){var h=new Date,c;return u||i.leading!==!1||(u=h),c=t-(h-u),f=this,e=arguments,c<=0?(clearTimeout(r),r=null,u=h,o=n.apply(f,e)):r||i.trailing===!1||(r=setTimeout(s,c)),o}};n.debounce=function(n,t,i){var u,r=null;return function(){var f=this,e=arguments,o=function(){r=null;i||(u=n.apply(f,e))},s=i&&!r;return clearTimeout(r),r=setTimeout(o,t),s&&(u=n.apply(f,e)),u}};n.once=function(n){var i=!1,t;return function(){return i?t:(i=!0,t=n.apply(this,arguments),n=null,t)}};n.wrap=function(n,t){return function(){var i=[n];return y.apply(i,arguments),t.apply(this,i)}};n.compose=function(){var n=arguments;return function(){for(var t=arguments,i=n.length-1;i>=0;i--)t=[n[i].apply(this,t)];return t[0]}};n.after=function(n,t){return function(){if(--n<1)return t.apply(this,arguments)}};n.keys=pt||function(t){var i,r;if(t!==Object(t))throw new TypeError("Invalid object");i=[];for(r in t)n.has(t,r)&&i.push(r);return i};n.values=function(t){var i=[];for(var r in t)n.has(t,r)&&i.push(t[r]);return i};n.pairs=function(t){var r=[];for(var i in t)n.has(t,i)&&r.push([i,t[i]]);return r};n.invert=function(t){var r={};for(var i in t)n.has(t,i)&&(r[t[i]]=i);return r};n.functions=n.methods=function(t){var i=[];for(var r in t)n.isFunction(t[r])&&i.push(r);return i.sort()};n.extend=function(n){return i(t.call(arguments,1),function(t){if(t)for(var i in t)n[i]=t[i]}),n};n.pick=function(n){var u={},f=o.apply(r,t.call(arguments,1));return i(f,function(t){t in n&&(u[t]=n[t])}),u};n.omit=function(i){var f={},e=o.apply(r,t.call(arguments,1));for(var u in i)n.contains(e,u)||(f[u]=i[u]);return f};n.defaults=function(n){return i(t.call(arguments,1),function(t){if(t)for(var i in t)n[i]===void 0&&(n[i]=t[i])}),n};n.clone=function(t){return n.isObject(t)?n.isArray(t)?t.slice():n.extend({},t):t};n.tap=function(n,t){return t(n),n};l=function(t,i,r,u){var a,v,h,c,e,o,s;if(t===i)return t!==0||1/t==1/i;if(t==null||i==null)return t===i;if(t instanceof n&&(t=t._wrapped),i instanceof n&&(i=i._wrapped),a=f.call(t),a!=f.call(i))return!1;switch(a){case"[object String]":return t==String(i);case"[object Number]":return t!=+t?i!=+i:t==0?1/t==1/i:t==+i;case"[object Date]":case"[object Boolean]":return+t==+i;case"[object RegExp]":return t.source==i.source&&t.global==i.global&&t.multiline==i.multiline&&t.ignoreCase==i.ignoreCase}if(typeof t!="object"||typeof i!="object")return!1;for(v=r.length;v--;)if(r[v]==t)return u[v]==i;if(h=t.constructor,c=i.constructor,h!==c&&!(n.isFunction(h)&&h instanceof h&&n.isFunction(c)&&c instanceof c))return!1;if(r.push(t),u.push(i),e=0,o=!0,a=="[object Array]"){if(e=t.length,o=e==i.length,o)while(e--)if(!(o=l(t[e],i[e],r,u)))break}else{for(s in t)if(n.has(t,s)&&(e++,!(o=n.has(i,s)&&l(t[s],i[s],r,u))))break;if(o){for(s in i)if(n.has(i,s)&&!e--)break;o=!e}}return r.pop(),u.pop(),o};n.isEqual=function(n,t){return l(n,t,[],[])};n.isEmpty=function(t){if(t==null)return!0;if(n.isArray(t)||n.isString(t))return t.length===0;for(var i in t)if(n.has(t,i))return!1;return!0};n.isElement=function(n){return!!(n&&n.nodeType===1)};n.isArray=yt||function(n){return f.call(n)=="[object Array]"};n.isObject=function(n){return n===Object(n)};i(["Arguments","Function","String","Number","Date","RegExp"],function(t){n["is"+t]=function(n){return f.call(n)=="[object "+t+"]"}});n.isArguments(arguments)||(n.isArguments=function(t){return!!(t&&n.has(t,"callee"))});typeof/./!="function"&&(n.isFunction=function(n){return typeof n=="function"});n.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))};n.isNaN=function(t){return n.isNumber(t)&&t!=+t};n.isBoolean=function(n){return n===!0||n===!1||f.call(n)=="[object Boolean]"};n.isNull=function(n){return n===null};n.isUndefined=function(n){return n===void 0};n.has=function(n,t){return vt.call(n,t)};n.noConflict=function(){return v._=lt,this};n.identity=function(n){return n};n.times=function(n,t,i){for(var u=Array(Math.max(0,n)),r=0;r<n;r++)u[r]=t.call(i,r);return u};n.random=function(n,t){return t==null&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};u={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","/":"&#x2F;"}};u.unescape=n.invert(u.escape);ht={escape:new RegExp("["+n.keys(u.escape).join("")+"]","g"),unescape:new RegExp("("+n.keys(u.unescape).join("|")+")","g")};n.each(["escape","unescape"],function(t){n[t]=function(n){return n==null?"":(""+n).replace(ht[t],function(n){return u[t][n]})}});n.result=function(t,i){if(t==null)return void 0;var r=t[i];return n.isFunction(r)?r.call(t):r};n.mixin=function(t){i(n.functions(t),function(i){var r=n[i]=t[i];n.prototype[i]=function(){var t=[this._wrapped];return y.apply(t,arguments),a.call(this,r.apply(n,t))}})};ct=0;n.uniqueId=function(n){var t=++ct+"";return n?n+t:t};n.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var g=/(.)^/,wt={"'":"'","\\":"\\","\r":"r","\n":"n","\t":"t","\u2028":"u2028","\u2029":"u2029"},bt=/\\|'|\r|\n|\t|\u2028|\u2029/g;n.template=function(t,i,r){var f,e;r=n.defaults({},r,n.templateSettings);var h=new RegExp([(r.escape||g).source,(r.interpolate||g).source,(r.evaluate||g).source].join("|")+"|$","g"),o=0,u="__p+='";t.replace(h,function(n,i,r,f,e){return u+=t.slice(o,e).replace(bt,function(n){return"\\"+wt[n]}),i&&(u+="'+\n((__t=("+i+"))==null?'':_.escape(__t))+\n'"),r&&(u+="'+\n((__t=("+r+"))==null?'':__t)+\n'"),f&&(u+="';\n"+f+"\n__p+='"),o=e+n.length,n});u+="';\n";r.variable||(u="with(obj||{}){\n"+u+"}\n");u="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+u+"return __p;\n";try{f=new Function(r.variable||"obj","_",u)}catch(s){s.source=u;throw s;}return i?f(i,n):(e=function(t){return f.call(this,t,n)},e.source="function("+(r.variable||"obj")+"){\n"+u+"}",e)};n.chain=function(t){return n(t).chain()};a=function(t){return this._chain?n(t).chain():t};n.mixin(n);i(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var i=r[t];n.prototype[t]=function(){var n=this._wrapped;return i.apply(n,arguments),(t=="shift"||t=="splice")&&n.length===0&&delete n[0],a.call(this,n)}});i(["concat","join","slice"],function(t){var i=r[t];n.prototype[t]=function(){return a.call(this,i.apply(this._wrapped,arguments))}});n.extend(n.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}).call(this),function(){var r=this,it=r.Backbone,h=[],rt=h.push,c=h.slice,ut=h.splice,t,n,f,y,p,w,b,d,tt,l,e;t=typeof exports!="undefined"?exports:r.Backbone={};t.VERSION="1.0.0";n=r._;n||typeof require=="undefined"||(n=require("underscore"));t.$=r.jQuery||r.Zepto||r.ender||r.$;t.noConflict=function(){return r.Backbone=it,this};t.emulateHTTP=!1;t.emulateJSON=!1;var i=t.Events={on:function(n,t,i){if(!o(this,"on",n,[t,i])||!t)return this;this._events||(this._events={});var r=this._events[n]||(this._events[n]=[]);return r.push({callback:t,context:i,ctx:i||this}),this},once:function(t,i,r){if(!o(this,"once",t,[i,r])||!i)return this;var f=this,u=n.once(function(){f.off(t,u);i.apply(this,arguments)});u._callback=i;return this.on(t,u,r)},off:function(t,i,r){var s,u,h,c,f,l,e,a;if(!this._events||!o(this,"off",t,[i,r]))return this;if(!t&&!i&&!r)return this._events={},this;for(c=t?[t]:n.keys(this._events),f=0,l=c.length;f<l;f++)if(t=c[f],h=this._events[t]){if(this._events[t]=s=[],i||r)for(e=0,a=h.length;e<a;e++)u=h[e],(i&&i!==u.callback&&i!==u.callback._callback||r&&r!==u.context)&&s.push(u);s.length||delete this._events[t]}return this},trigger:function(n){var t,i,r;return this._events?(t=c.call(arguments,1),!o(this,"trigger",n,t))?this:(i=this._events[n],r=this._events.all,i&&v(i,t),r&&v(r,arguments),this):this},stopListening:function(n,t,i){var r=this._listeners,f,u;if(!r)return this;f=!t&&!i;typeof t=="object"&&(i=this);n&&((r={})[n._listenerId]=n);for(u in r)r[u].off(t,i,this),f&&delete this._listeners[u];return this}},a=/\s+/,o=function(n,t,i,r){var f,e,u,o;if(!i)return!0;if(typeof i=="object"){for(f in i)n[t].apply(n,[f,i[f]].concat(r));return!1}if(a.test(i)){for(e=i.split(a),u=0,o=e.length;u<o;u++)n[t].apply(n,[e[u]].concat(r));return!1}return!0},v=function(n,t){var i,r=-1,u=n.length,f=t[0],e=t[1],o=t[2];switch(t.length){case 0:while(++r<u)(i=n[r]).callback.call(i.ctx);return;case 1:while(++r<u)(i=n[r]).callback.call(i.ctx,f);return;case 2:while(++r<u)(i=n[r]).callback.call(i.ctx,f,e);return;case 3:while(++r<u)(i=n[r]).callback.call(i.ctx,f,e,o);return;default:while(++r<u)(i=n[r]).callback.apply(i.ctx,t)}};n.each({listenTo:"on",listenToOnce:"once"},function(t,r){i[r]=function(i,r,u){var f=this._listeners||(this._listeners={}),e=i._listenerId||(i._listenerId=n.uniqueId("l"));return f[e]=i,typeof r=="object"&&(u=this),i[t](r,u,this),this}});i.bind=i.on;i.unbind=i.off;n.extend(t,i);f=t.Model=function(t,i){var u,r=t||{};i||(i={});this.cid=n.uniqueId("c");this.attributes={};n.extend(this,n.pick(i,y));i.parse&&(r=this.parse(r,i)||{});(u=n.result(this,"defaults"))&&(r=n.defaults({},r,u));this.set(r,i);this.changed={};this.initialize.apply(this,arguments)};y=["url","urlRoot","collection"];n.extend(f.prototype,i,{changed:null,validationError:null,idAttribute:"id",initialize:function(){},toJSON:function(){return n.clone(this.attributes)},sync:function(){return t.sync.apply(this,arguments)},get:function(n){return this.attributes[n]},escape:function(t){return n.escape(this.get(t))},has:function(n){return this.get(n)!=null},set:function(t,i,r){var u,f,l,e,h,c,a,o,s,v;if(t==null)return this;if(typeof t=="object"?(f=t,r=i):(f={})[t]=i,r||(r={}),!this._validate(f,r))return!1;l=r.unset;h=r.silent;e=[];c=this._changing;this._changing=!0;c||(this._previousAttributes=n.clone(this.attributes),this.changed={});o=this.attributes;a=this._previousAttributes;this.idAttribute in f&&(this.id=f[this.idAttribute]);for(u in f)i=f[u],n.isEqual(o[u],i)||e.push(u),n.isEqual(a[u],i)?delete this.changed[u]:this.changed[u]=i,l?delete o[u]:o[u]=i;if(!h)for(e.length&&(this._pending=!0),s=0,v=e.length;s<v;s++)this.trigger("change:"+e[s],this,o[e[s]],r);if(c)return this;if(!h)while(this._pending)this._pending=!1,this.trigger("change",this,r);return this._pending=!1,this._changing=!1,this},unset:function(t,i){return this.set(t,void 0,n.extend({},i,{unset:!0}))},clear:function(t){var i={};for(var r in this.attributes)i[r]=void 0;return this.set(i,n.extend({},t,{unset:!0}))},hasChanged:function(t){return t==null?!n.isEmpty(this.changed):n.has(this.changed,t)},changedAttributes:function(t){var u,i,f,r;if(!t)return this.hasChanged()?n.clone(this.changed):!1;i=!1;f=this._changing?this._previousAttributes:this.attributes;for(r in t)n.isEqual(f[r],u=t[r])||((i||(i={}))[r]=u);return i},previous:function(n){return n==null||!this._previousAttributes?null:this._previousAttributes[n]},previousAttributes:function(){return n.clone(this._previousAttributes)},fetch:function(t){t=t?n.clone(t):{};t.parse===void 0&&(t.parse=!0);var i=this,r=t.success;return t.success=function(n){if(!i.set(i.parse(n,t),t))return!1;r&&r(i,n,t);i.trigger("sync",i,n,t)},e(this,t),this.sync("read",this,t)},save:function(t,i,r){var u,o,c,s=this.attributes,f,h;return(t==null||typeof t=="object"?(u=t,r=i):(u={})[t]=i,u&&(!r||!r.wait)&&!this.set(u,r))?!1:(r=n.extend({validate:!0},r),!this._validate(u,r))?!1:(u&&r.wait&&(this.attributes=n.extend({},s,u)),r.parse===void 0&&(r.parse=!0),f=this,h=r.success,r.success=function(t){f.attributes=s;var i=f.parse(t,r);if(r.wait&&(i=n.extend(u||{},i)),n.isObject(i)&&!f.set(i,r))return!1;h&&h(f,t,r);f.trigger("sync",f,t,r)},e(this,r),o=this.isNew()?"create":r.patch?"patch":"update",o==="patch"&&(r.attrs=u),c=this.sync(o,this,r),u&&r.wait&&(this.attributes=s),c)},destroy:function(t){var f;t=t?n.clone(t):{};var i=this,r=t.success,u=function(){i.trigger("destroy",i,i.collection,t)};return(t.success=function(n){(t.wait||i.isNew())&&u();r&&r(i,n,t);i.isNew()||i.trigger("sync",i,n,t)},this.isNew())?(t.success(),!1):(e(this,t),f=this.sync("delete",this,t),t.wait||u(),f)},url:function(){var t=n.result(this,"urlRoot")||n.result(this.collection,"url")||l();return this.isNew()?t:t+(t.charAt(t.length-1)==="/"?"":"/")+encodeURIComponent(this.id)},parse:function(n){return n},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return this.id==null},isValid:function(t){return this._validate({},n.extend(t||{},{validate:!0}))},_validate:function(t,i){if(!i.validate||!this.validate)return!0;t=n.extend({},this.attributes,t);var r=this.validationError=this.validate(t,i)||null;return r?(this.trigger("invalid",this,r,n.extend(i||{},{validationError:r})),!1):!0}});p=["keys","values","pairs","invert","pick","omit"];n.each(p,function(t){f.prototype[t]=function(){var i=c.call(arguments);return i.unshift(this.attributes),n[t].apply(n,i)}});var s=t.Collection=function(t,i){i||(i={});i.url&&(this.url=i.url);i.model&&(this.model=i.model);i.comparator!==void 0&&(this.comparator=i.comparator);this._reset();this.initialize.apply(this,arguments);t&&this.reset(t,n.extend({silent:!0},i))},ft={add:!0,remove:!0,merge:!0},et={add:!0,merge:!1,remove:!1};n.extend(s.prototype,i,{model:f,initialize:function(){},toJSON:function(n){return this.map(function(t){return t.toJSON(n)})},sync:function(){return t.sync.apply(this,arguments)},add:function(t,i){return this.set(t,n.defaults(i||{},et))},remove:function(t,i){t=n.isArray(t)?t.slice():[t];i||(i={});for(var f,r,u=0,e=t.length;u<e;u++)(r=this.get(t[u]),r)&&(delete this._byId[r.id],delete this._byId[r.cid],f=this.indexOf(r),this.models.splice(f,1),this.length--,i.silent||(i.index=f,r.trigger("remove",r,this,i)),this._removeReference(r));return this},set:function(t,i){i=n.defaults(i||{},ft);i.parse&&(t=this.parse(t,i));n.isArray(t)||(t=t?[t]:[]);for(var r,s,o,h=i.at,l=this.comparator&&h==null&&i.sort!==!1,v=n.isString(this.comparator)?this.comparator:null,f=[],c=[],a={},u=0,e=t.length;u<e;u++)if(r=this._prepareModel(t[u],i))if(s=this.get(r))i.remove&&(a[s.cid]=!0),i.merge&&(s.set(r.attributes,i),l&&!o&&s.hasChanged(v)&&(o=!0));else if(i.add){f.push(r);r.on("all",this._onModelEvent,this);this._byId[r.cid]=r;r.id!=null&&(this._byId[r.id]=r)}if(i.remove){for(u=0,e=this.length;u<e;++u)a[(r=this.models[u]).cid]||c.push(r);c.length&&this.remove(c,i)}if(f.length&&(l&&(o=!0),this.length+=f.length,h!=null?ut.apply(this.models,[h,0].concat(f)):rt.apply(this.models,f)),o&&this.sort({silent:!0}),i.silent)return this;for(u=0,e=f.length;u<e;u++)(r=f[u]).trigger("add",r,this,i);return o&&this.trigger("sort",this,i),this},reset:function(t,i){i||(i={});for(var r=0,u=this.models.length;r<u;r++)this._removeReference(this.models[r]);return i.previousModels=this.models,this._reset(),this.add(t,n.extend({silent:!0},i)),i.silent||this.trigger("reset",this,i),this},push:function(t,i){return t=this._prepareModel(t,i),this.add(t,n.extend({at:this.length},i)),t},pop:function(n){var t=this.at(this.length-1);return this.remove(t,n),t},unshift:function(t,i){return t=this._prepareModel(t,i),this.add(t,n.extend({at:0},i)),t},shift:function(n){var t=this.at(0);return this.remove(t,n),t},slice:function(n,t){return this.models.slice(n,t)},get:function(n){if(n!=null)return this._byId[n.id!=null?n.id:n.cid||n]},at:function(n){return this.models[n]},where:function(t,i){return n.isEmpty(t)?i?void 0:[]:this[i?"find":"filter"](function(n){for(var i in t)if(t[i]!==n.get(i))return!1;return!0})},findWhere:function(n){return this.where(n,!0)},sort:function(t){if(!this.comparator)throw new Error("Cannot sort a set without a comparator");return t||(t={}),n.isString(this.comparator)||this.comparator.length===1?this.models=this.sortBy(this.comparator,this):this.models.sort(n.bind(this.comparator,this)),t.silent||this.trigger("sort",this,t),this},sortedIndex:function(t,i,r){i||(i=this.comparator);var u=n.isFunction(i)?i:function(n){return n.get(i)};return n.sortedIndex(this.models,t,u,r)},pluck:function(t){return n.invoke(this.models,"get",t)},fetch:function(t){t=t?n.clone(t):{};t.parse===void 0&&(t.parse=!0);var r=t.success,i=this;return t.success=function(n){var u=t.reset?"reset":"set";i[u](n,t);r&&r(i,n,t);i.trigger("sync",i,n,t)},e(this,t),this.sync("read",this,t)},create:function(t,i){if(i=i?n.clone(i):{},!(t=this._prepareModel(t,i)))return!1;i.wait||this.add(t,i);var u=this,r=i.success;return i.success=function(n){i.wait&&u.add(t,i);r&&r(t,n,i)},t.save(null,i),t},parse:function(n){return n},clone:function(){return new this.constructor(this.models)},_reset:function(){this.length=0;this.models=[];this._byId={}},_prepareModel:function(n,t){if(n instanceof f)return n.collection||(n.collection=this),n;t||(t={});t.collection=this;var i=new this.model(n,t);return i._validate(n,t)?i:(this.trigger("invalid",this,n,t),!1)},_removeReference:function(n){this===n.collection&&delete n.collection;n.off("all",this._onModelEvent,this)},_onModelEvent:function(n,t,i,r){(n!=="add"&&n!=="remove"||i===this)&&(n==="destroy"&&this.remove(t,r),t&&n==="change:"+t.idAttribute&&(delete this._byId[t.previous(t.idAttribute)],t.id!=null&&(this._byId[t.id]=t)),this.trigger.apply(this,arguments))}});w=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","indexOf","shuffle","lastIndexOf","isEmpty","chain"];n.each(w,function(t){s.prototype[t]=function(){var i=c.call(arguments);return i.unshift(this.models),n[t].apply(n,i)}});b=["groupBy","countBy","sortBy"];n.each(b,function(t){s.prototype[t]=function(i,r){var u=n.isFunction(i)?i:function(n){return n.get(i)};return n[t](this.models,u,r)}});var k=t.View=function(t){this.cid=n.uniqueId("view");this._configure(t||{});this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()},ot=/^(\S+)\s*(.*)$/,st=["model","collection","el","id","attributes","className","tagName","events"];n.extend(k.prototype,i,{tagName:"div",$:function(n){return this.$el.find(n)},initialize:function(){},render:function(){return this},remove:function(){return this.$el.remove(),this.stopListening(),this},setElement:function(n,i){return this.$el&&this.undelegateEvents(),this.$el=n instanceof t.$?n:t.$(n),this.el=this.$el[0],i!==!1&&this.delegateEvents(),this},delegateEvents:function(t){var r,i;if(!(t||(t=n.result(this,"events"))))return this;this.undelegateEvents();for(r in t)if(i=t[r],n.isFunction(i)||(i=this[t[r]]),i){var f=r.match(ot),u=f[1],e=f[2];if(i=n.bind(i,this),u+=".delegateEvents"+this.cid,e==="")this.$el.on(u,i);else this.$el.on(u,e,i)}return this},undelegateEvents:function(){return this.$el.off(".delegateEvents"+this.cid),this},_configure:function(t){this.options&&(t=n.extend({},n.result(this,"options"),t));n.extend(this,n.pick(t,st));this.options=t},_ensureElement:function(){var i,r;this.el?this.setElement(n.result(this,"el"),!1):(i=n.extend({},n.result(this,"attributes")),this.id&&(i.id=n.result(this,"id")),this.className&&(i["class"]=n.result(this,"className")),r=t.$("<"+n.result(this,"tagName")+">").attr(i),this.setElement(r,!1))}});t.sync=function(i,r,u){var e=d[i],f,o,s;return n.defaults(u||(u={}),{emulateHTTP:t.emulateHTTP,emulateJSON:t.emulateJSON}),f={type:e,dataType:"json"},u.url||(f.url=n.result(r,"url")||l()),u.data==null&&r&&(i==="create"||i==="update"||i==="patch")&&(f.contentType="application/json",f.data=JSON.stringify(u.attrs||r.toJSON(u))),u.emulateJSON&&(f.contentType="application/x-www-form-urlencoded",f.data=f.data?{model:f.data}:{}),u.emulateHTTP&&(e==="PUT"||e==="DELETE"||e==="PATCH")&&(f.type="POST",u.emulateJSON&&(f.data._method=e),o=u.beforeSend,u.beforeSend=function(n){return n.setRequestHeader("X-HTTP-Method-Override",e),o?o.apply(this,arguments):void 0}),f.type==="GET"||u.emulateJSON||(f.processData=!1),f.type!=="PATCH"||!window.ActiveXObject||window.external&&window.external.msActiveXFilteringEnabled||(f.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}),s=u.xhr=t.ajax(n.extend(f,u)),r.trigger("request",r,s,u),s};d={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};t.ajax=function(){return t.$.ajax.apply(t.$,arguments)};var g=t.Router=function(n){n||(n={});n.routes&&(this.routes=n.routes);this._bindRoutes();this.initialize.apply(this,arguments)},ht=/\((.*?)\)/g,ct=/(\(\?)?:\w+/g,lt=/\*\w+/g,at=/[\-{}\[\]+?.,\\\^$|#\s]/g;n.extend(g.prototype,i,{initialize:function(){},route:function(i,r,u){n.isRegExp(i)||(i=this._routeToRegExp(i));n.isFunction(r)&&(u=r,r="");u||(u=this[r]);var f=this;return t.history.route(i,function(n){var e=f._extractParameters(i,n);u&&u.apply(f,e);f.trigger.apply(f,["route:"+r].concat(e));f.trigger("route",r,e);t.history.trigger("route",f,r,e)}),this},navigate:function(n,i){return t.history.navigate(n,i),this},_bindRoutes:function(){if(this.routes){this.routes=n.result(this,"routes");for(var t,i=n.keys(this.routes);(t=i.pop())!=null;)this.route(t,this.routes[t])}},_routeToRegExp:function(n){return n=n.replace(at,"\\$&").replace(ht,"(?:$1)?").replace(ct,function(n,t){return t?n:"([^/]+)"}).replace(lt,"(.*?)"),new RegExp("^"+n+"$")},_extractParameters:function(t,i){var r=t.exec(i).slice(1);return n.map(r,function(n){return n?decodeURIComponent(n):null})}});var u=t.History=function(){this.handlers=[];n.bindAll(this,"checkUrl");typeof window!="undefined"&&(this.location=window.location,this.history=window.history)},nt=/^[#\/]|\s+$/g,vt=/^\/+|\/+$/g,yt=/msie [\w.]+/,pt=/\/$/;u.started=!1;n.extend(u.prototype,i,{interval:50,getHash:function(n){var t=(n||this).location.href.match(/#(.*)$/);return t?t[1]:""},getFragment:function(n,t){if(n==null)if(this._hasPushState||!this._wantsHashChange||t){n=this.location.pathname;var i=this.root.replace(pt,"");n.indexOf(i)||(n=n.substr(i.length))}else n=this.getHash();return n.replace(nt,"")},start:function(i){var r,f;if(u.started)throw new Error("Backbone.history has already been started");u.started=!0;this.options=n.extend({},{root:"/"},this.options,i);this.root=this.options.root;this._wantsHashChange=this.options.hashChange!==!1;this._wantsPushState=!!this.options.pushState;this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var e=this.getFragment(),o=document.documentMode,s=yt.exec(navigator.userAgent.toLowerCase())&&(!o||o<=7);if(this.root=("/"+this.root+"/").replace(vt,"/"),s&&this._wantsHashChange&&(this.iframe=t.$('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow,this.navigate(e)),this._hasPushState)t.$(window).on("popstate",this.checkUrl);else if(this._wantsHashChange&&"onhashchange"in window&&!s)t.$(window).on("hashchange",this.checkUrl);else this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval));return(this.fragment=e,r=this.location,f=r.pathname.replace(/[^\/]$/,"$&/")===this.root,this._wantsHashChange&&this._wantsPushState&&!this._hasPushState&&!f)?(this.fragment=this.getFragment(null,!0),this.location.replace(this.root+this.location.search+"#"+this.fragment),!0):(this._wantsPushState&&this._hasPushState&&f&&r.hash&&(this.fragment=this.getHash().replace(nt,""),this.history.replaceState({},document.title,this.root+this.fragment+r.search)),this.options.silent?void 0:this.loadUrl())},stop:function(){t.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl);clearInterval(this._checkUrlInterval);u.started=!1},route:function(n,t){this.handlers.unshift({route:n,callback:t})},checkUrl:function(){var n=this.getFragment();if(n===this.fragment&&this.iframe&&(n=this.getFragment(this.getHash(this.iframe))),n===this.fragment)return!1;this.iframe&&this.navigate(n);this.loadUrl()||this.loadUrl(this.getHash())},loadUrl:function(t){var i=this.fragment=this.getFragment(t);return n.any(this.handlers,function(n){if(n.route.test(i))return n.callback(i),!0})},navigate:function(n,t){if(!u.started)return!1;if(t&&t!==!0||(t={trigger:t}),n=this.getFragment(n||""),this.fragment!==n){this.fragment=n;var i=this.root+n;if(this._hasPushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,i);else if(this._wantsHashChange)this._updateHash(this.location,n,t.replace),this.iframe&&n!==this.getFragment(this.getHash(this.iframe))&&(t.replace||this.iframe.document.open().close(),this._updateHash(this.iframe.location,n,t.replace));else return this.location.assign(i);t.trigger&&this.loadUrl(n)}},_updateHash:function(n,t,i){if(i){var r=n.href.replace(/(javascript:|#).*$/,"");n.replace(r+"#"+t)}else n.hash="#"+t}});t.history=new u;tt=function(t,i){var u=this,r,f;return r=t&&n.has(t,"constructor")?t.constructor:function(){return u.apply(this,arguments)},n.extend(r,u,i),f=function(){this.constructor=r},f.prototype=u.prototype,r.prototype=new f,t&&n.extend(r.prototype,t),r.__super__=u.prototype,r};f.extend=s.extend=g.extend=k.extend=u.extend=tt;l=function(){throw new Error('A "url" property or function must be specified');};e=function(n,t){var i=t.error;t.error=function(r){i&&i(n,r,t);n.trigger("error",n,r,t)}}}.call(this),function(){var t,i,n,f,r,u,e=[].slice;n=function(t){var r,i;return!_.isObject(t)||_.isFunction(t)?t:t instanceof Backbone.Collection||t instanceof Backbone.Model?t:_.isDate(t)?new Date(t.getTime()):_.isRegExp(t)?new RegExp(t.source,t.toString().replace(/.*\//,"")):(i=_.isArray(t||_.isArguments(t)),r=function(t,r,u){return i?t.push(n(r)):t[u]=n(r),t},_.reduce(t,r,i?[]:{}))};u=function(n){return n==null?!1:(n.prototype==={}.prototype||n.prototype===Object.prototype)&&_.isObject(n)&&!_.isArray(n)&&!_.isFunction(n)&&!_.isDate(n)&&!_.isRegExp(n)&&!_.isArguments(n)};i=function(n){return _.filter(_.keys(n),function(t){return u(n[t])})};t=function(n){return _.filter(_.keys(n),function(t){return _.isArray(n[t])})};r=function(n,u,f){var c,l,a,s,v,h,e,o,y,p;if(f==null&&(f=20),f<=0)return console.warn("_.deepExtend(): Maximum depth of recursion hit."),_.extend(n,u);for(h=_.intersection(i(n),i(u)),l=function(t){return u[t]=r(n[t],u[t],f-1)},e=0,y=h.length;e<y;e++)v=h[e],l(v);for(s=_.intersection(t(n),t(u)),c=function(t){return u[t]=_.union(n[t],u[t])},o=0,p=s.length;o<p;o++)a=s[o],c(a);return _.extend(n,u)};f=function(){var u,i,t,f;if(t=2<=arguments.length?e.call(arguments,0,f=arguments.length-1):(f=0,[]),i=arguments[f++],_.isNumber(i)||(t.push(i),i=20),t.length<=1)return t[0];if(i<=0)return _.extend.apply(this,t);for(u=t.shift();t.length>0;)u=r(u,n(t.shift()),i);return u};_.mixin({deepClone:n,isBasicObject:u,basicObjects:i,arrays:t,deepExtend:f})}.call(this),function(n){typeof define=="function"&&define.amd?define(["underscore","backbone"],n):n(_,Backbone)}(function(n,t){function u(t){var e={},c=r.keyPathSeparator,f,i,o,s,h;for(f in t)if(i=t[f],i&&i.constructor===Object&&!n.isEmpty(i)){o=u(i);for(s in o)h=o[s],e[f+c+s]=h}else e[f]=i;return e}function i(t,i,u){var h=r.keyPathSeparator,o=i.split(h),f=t,e,s;for(u||u===!1,e=0,s=o.length;e<s;e++){if(u&&!n.has(f,o[e]))return!1;if(f=f[o[e]],f==null&&e<s-1&&(f={}),typeof f=="undefined")return u?!0:f}return u?!0:f}function f(t,i,u,f){var s,h,o;f=f||{};var l=r.keyPathSeparator,c=i.split(l),e=t;for(s=0,h=c.length;s<h&&e!==undefined;s++)o=c[s],s===h-1?f.unset?delete e[o]:e[o]=u:(typeof e[o]!="undefined"&&n.isObject(e[o])||(e[o]={}),e=e[o])}function e(n,t){f(n,t,null,{unset:!0})}var r=t.Model.extend({constructor:function(t,i){var u,r=t||{};this.cid=n.uniqueId("c");this.attributes={};i&&i.collection&&(this.collection=i.collection);i&&i.parse&&(r=this.parse(r,i)||{});(u=n.result(this,"defaults"))&&(r=n.deepExtend({},u,r));this.set(r,i);this.changed={};this.initialize.apply(this,arguments)},toJSON:function(){return n.deepClone(this.attributes)},get:function(n){return i(this.attributes,n)},set:function(t,o,s){var h,c,g,a,w,b,nt,l,v,y,tt,t,k,p,d,it;if(t==null)return this;if(typeof t=="object"?(c=t,s=o||{}):(c={})[t]=o,s||(s={}),!this._validate(c,s))return!1;g=s.unset;w=s.silent;a=[];b=this._changing;this._changing=!0;b||(this._previousAttributes=n.deepClone(this.attributes),this.changed={});l=this.attributes;nt=this._previousAttributes;this.idAttribute in c&&(this.id=c[this.idAttribute]);c=u(c);for(h in c)o=c[h],n.isEqual(i(l,h),o)||a.push(h),n.isEqual(i(nt,h),o)?e(this.changed,h):f(this.changed,h,o),g?e(l,h):f(l,h,o);if(!w)for(a.length&&(this._pending=!0),v=r.keyPathSeparator,y=0,tt=a.length;y<tt;y++)for(t=a[y],this.trigger("change:"+t,this,i(l,t),s),k=t.split(v),p=k.length-1;p>0;p--)d=n.first(k,p).join(v),it=d+v+"*",this.trigger("change:"+it,this,i(l,d),s);if(b)return this;if(!w)while(this._pending)this._pending=!1,this.trigger("change",this,s);return this._pending=!1,this._changing=!1,this},clear:function(t){var i={},r=u(this.attributes);for(var f in r)i[f]=void 0;return this.set(i,n.extend({},t,{unset:!0}))},hasChanged:function(t){return t==null?!n.isEmpty(this.changed):i(this.changed,t)!==undefined},changedAttributes:function(t){var i,e,r,f;if(!t)return this.hasChanged()?u(this.changed):!1;i=this._changing?this._previousAttributes:this.attributes;t=u(t);i=u(i);r=!1;for(f in t)n.isEqual(i[f],e=t[f])||((r||(r={}))[f]=e);return r},previous:function(n){return n==null||!this._previousAttributes?null:i(this._previousAttributes,n)},previousAttributes:function(){return n.deepClone(this._previousAttributes)}});return r.keyPathSeparator=".",t.DeepModel=r,typeof module!="undefined"&&(module.exports=r),t});Backbone.Paginator=function(n,t,i){"use strict";var u=t.map(n.VERSION.split("."),function(n){return parseInt(n,10)}),r={},f;return r.version="1.0.0-dev",r.clientPager=n.Collection.extend({useDiacriticsPlugin:!0,useLevenshteinPlugin:!0,sortColumn:"",sortDirection:"desc",lastSortColumn:"",fieldFilterRules:[],lastFieldFilterRules:[],filterFields:"",filterExpression:"",lastFilterExpression:"",defaults_ui:{firstPage:0,currentPage:1,perPage:5,totalPages:10,pagesInRange:4},initialize:function(){this.on("add",this.addModel,this);this.on("remove",this.removeModel,this);this.setDefaults()},setDefaults:function(){var n=t.defaults(this.paginator_ui,this.defaults_ui);t.defaults(this,n)},addModel:function(n){this.origModels.push(n)},removeModel:function(n){var i=t.indexOf(this.origModels,n);this.origModels.splice(i,1)},sync:function(r,f,e){var s=this,h,o,l,a;this.setDefaults();h={};t.each(t.result(s,"server_api"),function(n,i){t.isFunction(n)&&(n=t.bind(n,s),n=n());h[i]=n});o=t.clone(s.paginator_core);t.each(o,function(n,i){t.isFunction(n)&&(n=t.bind(n,s),n=n());o[i]=n});o=t.defaults(o,{timeout:25e3,cache:!1,type:"GET",dataType:"jsonp"});o=t.extend(o,{data:decodeURIComponent(i.param(h)),processData:!1,url:t.result(o,"url")},e);var y=!(u[0]===0&&u[1]===9&&u[2]===10),v=u[0]===0,c=o.success;return o.success=function(n,t,i){c&&(y?c(n,t,i):c(f,n,o));v&&f&&f.trigger&&f.trigger("sync",f,n,o)},l=o.error,o.error=function(n){l&&l(n);v&&f&&f.trigger&&f.trigger("error",f,n,o)},a=o.xhr=n.ajax(o),f&&f.trigger&&f.trigger("request",f,a,o),a},nextPage:function(n){this.currentPage<this.information.totalPages&&(this.currentPage=++this.currentPage,this.pager(n))},previousPage:function(n){this.currentPage>1&&(this.currentPage=--this.currentPage,this.pager(n))},goTo:function(n,t){n!==undefined&&(this.currentPage=parseInt(n,10),this.pager(t))},howManyPer:function(n){if(n!==undefined){var t=this.perPage;this.perPage=parseInt(n,10);this.currentPage=Math.ceil((t*(this.currentPage-1)+1)/n);this.pager()}},setSort:function(n,t){n!==undefined&&t!==undefined&&(this.lastSortColumn=this.sortColumn,this.sortColumn=n,this.sortDirection=t,this.pager(),this.info())},setFieldFilter:function(n){t.isEmpty(n)?(this.lastFieldFilterRules=this.fieldFilterRules,this.fieldFilterRules="",this.pager(),this.info()):(this.lastFieldFilterRules=this.fieldFilterRules,this.fieldFilterRules=n,this.pager(),this.info())},doFakeFieldFilter:function(n){if(!t.isEmpty(n)){var i=this.origModels;return i===undefined&&(i=this.models),i=this._fieldFilter(i,n),this.filterExpression!==""&&(i=this._filter(i,this.filterFields,this.filterExpression)),i.length}},setFilter:function(n,t){n!==undefined&&t!==undefined&&(this.filterFields=n,this.lastFilterExpression=this.filterExpression,this.filterExpression=t,this.pager(),this.info())},doFakeFilter:function(n,i){if(n!==undefined&&i!==undefined){var r=this.origModels;return r===undefined&&(r=this.models),t.isEmpty(this.fieldFilterRules)||(r=this._fieldFilter(r,this.fieldFilterRules)),r=this._filter(r,n,i),r.length}},pager:function(n){var i=this,u=this.perPage,r=(i.currentPage-1)*u,f=r+u;i.origModels===undefined&&(i.origModels=i.models);i.models=i.origModels.slice();this.sortColumn!==""&&(i.models=i._sort(i.models,this.sortColumn,this.sortDirection));t.isEmpty(this.fieldFilterRules)||(i.models=i._fieldFilter(i.models,this.fieldFilterRules));this.filterExpression!==""&&(i.models=i._filter(i.models,this.filterFields,this.filterExpression));this.lastSortColumn===this.sortColumn&&this.lastFilterExpression===this.filterExpression&&t.isEqual(this.fieldFilterRules,this.lastFieldFilterRules)||(r=0,f=r+u,i.currentPage=1,this.lastSortColumn=this.sortColumn,this.lastFieldFilterRules=this.fieldFilterRules,this.lastFilterExpression=this.filterExpression);i.sortedAndFilteredModels=i.models.slice();i.info();i.reset(i.models.slice(r,f));t.result(n,"success")},_sort:function(n,i,r){return n.sort(function(n,u){var f=n.get(i),e=u.get(i),o,s;if(t.isUndefined(f)||t.isUndefined(e)||f===null||e===null)return 0;if(f=f.toString().toLowerCase(),e=e.toString().toLowerCase(),r==="desc")if(!f.match(/[^\-\d\.]/)&&f.match(/-?[\d\.]+/)&&!e.match(/[^\-\d\.]/)&&e.match(/-?[\d\.]+/)){if(+f<+e)return 1;if(+f>+e)return-1}else{if(f<e)return 1;if(f>e)return-1}else if(!f.match(/[^\-\d\.]/)&&f.match(/-?[\d\.]+/)&&!e.match(/[^\-\d\.]/)&&e.match(/-?[\d\.]+/)){if(+f<+e)return-1;if(+f>+e)return 1}else{if(f<e)return-1;if(f>e)return 1}if(n.cid&&u.cid){if(o=n.cid,s=u.cid,o<s)return-1;if(o>s)return 1}return 0})},_fieldFilter:function(n,i){if(t.isEmpty(i))return n;var r=[];return t.each(n,function(n){var u=!0;t.each(i,function(i){var r,f,e;if(!u)return!1;u=!1;i.type==="function"?(r=t.wrap(i.value,function(t){return t(n.get(i.field))}),r()&&(u=!0)):i.type==="required"?t.isEmpty(n.get(i.field).toString())||(u=!0):i.type==="min"?!t.isNaN(Number(n.get(i.field)))&&!t.isNaN(Number(i.value))&&Number(n.get(i.field))>=Number(i.value)&&(u=!0):i.type==="max"?!t.isNaN(Number(n.get(i.field)))&&!t.isNaN(Number(i.value))&&Number(n.get(i.field))<=Number(i.value)&&(u=!0):i.type==="range"?!t.isNaN(Number(n.get(i.field)))&&t.isObject(i.value)&&!t.isNaN(Number(i.value.min))&&!t.isNaN(Number(i.value.max))&&Number(n.get(i.field))>=Number(i.value.min)&&Number(n.get(i.field))<=Number(i.value.max)&&(u=!0):i.type==="minLength"?n.get(i.field).toString().length>=i.value&&(u=!0):i.type==="maxLength"?n.get(i.field).toString().length<=i.value&&(u=!0):i.type==="rangeLength"?t.isObject(i.value)&&!t.isNaN(Number(i.value.min))&&!t.isNaN(Number(i.value.max))&&n.get(i.field).toString().length>=i.value.min&&n.get(i.field).toString().length<=i.value.max&&(u=!0):i.type==="oneOf"?t.isArray(i.value)&&t.include(i.value,n.get(i.field))&&(u=!0):i.type==="equalTo"?i.value===n.get(i.field)&&(u=!0):i.type==="containsAllOf"?t.isArray(i.value)&&t.isArray(n.get(i.field))&&t.intersection(i.value,n.get(i.field)).length===i.value.length&&(u=!0):i.type==="pattern"?n.get(i.field).toString().match(i.value)&&(u=!0):i.type==="custom"?(f=n.toJSON(),e=t.wrap(i.value,function(n){return n(f)}),e()&&(u=!0)):u=!1});u&&r.push(n)}),r},_filter:function(i,r,u){var e=this,f={},s;if(t.isString(r)?f[r]={cmp_method:"regexp"}:t.isArray(r)?t.each(r,function(n){f[n]={cmp_method:"regexp"}}):t.each(r,function(n,i){f[i]=t.defaults(n,{cmp_method:"regexp"})}),r=f,t.has(n.Paginator,"removeDiacritics")&&e.useDiacriticsPlugin&&(u=n.Paginator.removeDiacritics(u)),u!==""&&t.isString(u))var o=t.map(u.match(/\w+/ig),function(n){return n.toLowerCase()}),h="("+t.uniq(o).join("|")+")",c=new RegExp(h,"igm");else return i;return s=[],t.each(i,function(i){var f=[];t.each(r,function(r,s){var h=i.get(s),l,a;h&&(l=[],h=t.has(n.Paginator,"removeDiacritics")&&e.useDiacriticsPlugin?n.Paginator.removeDiacritics(h.toString()):h.toString(),r.cmp_method==="levenshtein"&&t.has(n.Paginator,"levenshtein")&&e.useLevenshteinPlugin?(a=n.Paginator.levenshtein(h,u),t.defaults(r,{max_distance:0}),a<=r.max_distance&&(l=t.uniq(o))):l=h.match(c),l=t.map(l,function(n){return n.toString().toLowerCase()}),t.each(l,function(n){f.push(n)}))});f=t.uniq(t.without(f,""));t.isEmpty(t.difference(o,f))&&s.push(i)}),s},info:function(){var n=this,t={},i=n.sortedAndFilteredModels?n.sortedAndFilteredModels.length:n.length,r=Math.ceil(i/n.perPage);return t={totalUnfilteredRecords:n.origModels.length,totalRecords:i,currentPage:n.currentPage,perPage:this.perPage,totalPages:r,lastPage:r,previous:!1,next:!1,startRecord:i===0?0:(n.currentPage-1)*this.perPage+1,endRecord:Math.min(i,n.currentPage*this.perPage)},n.currentPage>1&&(t.previous=n.currentPage-1),n.currentPage<t.totalPages&&(t.next=n.currentPage+1),t.pageSet=n.setPagination(t),n.information=t,t},setPagination:function(n){var r=[],t=0,u=0,f=this.pagesInRange*2,i=Math.ceil(n.totalRecords/n.perPage);if(i>1)if(i<=1+f)for(t=1,u=i;t<=u;t++)r.push(t);else if(n.currentPage<=this.pagesInRange+1)for(t=1,u=2+f;t<u;t++)r.push(t);else if(i-this.pagesInRange>n.currentPage&&n.currentPage>this.pagesInRange)for(t=n.currentPage-this.pagesInRange;t<=n.currentPage+this.pagesInRange;t++)r.push(t);else for(t=i-f;t<=i;t++)r.push(t);return r},bootstrap:function(n){return t.extend(this,n),this.goTo(1),this.info(),this}}),r.clientPager.prototype.prevPage=r.clientPager.prototype.previousPage,f=function(){var n=new i.Deferred;return n.reject(),n.promise()},r.requestPager=n.Collection.extend({sync:function(r,f,e){var s=this,h,o,l,a;s.setDefaults();h={};t.each(t.result(s,"server_api"),function(n,i){t.isFunction(n)&&(n=t.bind(n,s),n=n());h[i]=n});o=t.clone(s.paginator_core);t.each(o,function(n,i){t.isFunction(n)&&(n=t.bind(n,s),n=n());o[i]=n});o=t.defaults(o,{timeout:25e3,cache:!1,type:"GET",dataType:"jsonp",url:s.url});e.data=e.data?decodeURIComponent(i.param(t.extend(h,e.data))):decodeURIComponent(i.param(h));o=t.extend(o,{data:decodeURIComponent(i.param(h)),processData:!1,url:t.result(o,"url")},e);var y=!(u[0]===0&&u[1]===9&&u[2]===10),v=u[0]===0,c=o.success;return o.success=function(n,t,i){c&&(y?c(n,t,i):c(f,n,o));v&&f&&f.trigger&&f.trigger("sync",f,n,o)},l=o.error,o.error=function(n){l&&l(n);v&&f&&f.trigger&&f.trigger("error",f,n,o)},a=o.xhr=n.ajax(o),f&&f.trigger&&f.trigger("request",f,a,o),a},setDefaults:function(){var n=this;t.defaults(n.paginator_ui,{firstPage:0,currentPage:1,perPage:5,totalPages:10,pagesInRange:4});t.each(n.paginator_ui,function(i,r){t.isUndefined(n[r])&&(n[r]=n.paginator_ui[r])})},requestNextPage:function(n){return this.currentPage!==undefined?(this.currentPage+=1,this.pager(n)):f()},requestPreviousPage:function(n){return this.currentPage!==undefined?(this.currentPage-=1,this.pager(n)):f()},updateOrder:function(n,t){return n!==undefined?(this.sortField=n,this.pager(t)):f()},goTo:function(n,t){return n!==undefined?(this.currentPage=parseInt(n,10),this.pager(t)):f()},howManyPer:function(n,t){return n!==undefined?(this.currentPage=this.firstPage,this.perPage=n,this.pager(t)):f()},info:function(){var n={totalRecords:this.totalRecords||0,currentPage:this.currentPage,firstPage:this.firstPage,totalPages:Math.ceil(this.totalRecords/this.perPage),lastPage:this.totalPages,perPage:this.perPage,previous:!1,next:!1};return this.currentPage>1&&(n.previous=this.currentPage-1),this.currentPage<n.totalPages&&(n.next=this.currentPage+1),n.hasNext=n.next,n.hasPrevious=n.next,n.pageSet=this.setPagination(n),this.information=n,n},setPagination:function(n){var r=[],t=0,u=0,f=this.pagesInRange*2,i=Math.ceil(n.totalRecords/n.perPage);if(i>1)if(i<=1+f)for(t=1,u=i;t<=u;t++)r.push(t);else if(n.currentPage<=this.pagesInRange+1)for(t=1,u=2+f;t<u;t++)r.push(t);else if(i-this.pagesInRange>n.currentPage&&n.currentPage>this.pagesInRange)for(t=n.currentPage-this.pagesInRange;t<=n.currentPage+this.pagesInRange;t++)r.push(t);else for(t=i-f;t<=i;t++)r.push(t);return r},pager:function(n){return t.isObject(n)||(n={}),this.fetch(n)},url:function(){return this.paginator_core!==undefined&&this.paginator_core.url!==undefined?this.paginator_core.url:null},bootstrap:function(n){return t.extend(this,n),this.setDefaults(),this.info(),this}}),r.requestPager.prototype.nextPage=r.requestPager.prototype.requestNextPage,r.requestPager.prototype.prevPage=r.requestPager.prototype.requestPreviousPage,r}(Backbone,_,jQuery)