(function(){var y=this,lt=y._,e={},r=Array.prototype,nt=Object.prototype,at=Function.prototype,p=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,w=at.bind,n=function(t){return t instanceof n?t:this instanceof n?(this._wrapped=t,void 0):new n(t)},i,b,k,h,c,d,l,a,u,ht,ct,v;"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=n),exports._=n):y._=n;n.VERSION="1.5.2";i=n.each=n.forEach=function(t,i,r){var u,f;if(null!=t)if(tt&&t.forEach===tt)t.forEach(i,r);else if(t.length===+t.length){for(u=0,f=t.length;f>u;u++)if(i.call(r,t[u],u,t)===e)return}else for(var o=n.keys(t),u=0,f=o.length;f>u;u++)if(i.call(r,t[o[u]],o[u],t)===e)return};n.map=n.collect=function(n,t,r){var u=[];return null==n?u:it&&n.map===it?n.map(t,r):(i(n,function(n,i,f){u.push(t.call(r,n,i,f))}),u)};b="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(null==t&&(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(b);return u};n.reduceRight=n.foldr=function(t,r,u,f){var o=arguments.length>2,e,s;if(null==t&&(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(b);return u};n.find=n.detect=function(n,t,i){var r;return k(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 null==n?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 null==t?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)};k=n.some=n.any=function(t,r,u){r||(r=n.identity);var f=!1;return null==t?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 null==n?!1:s&&n.indexOf===s?n.indexOf(t)!=-1:k(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-1/0;var f={computed:-1/0,value:-1/0};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 1/0;var f={computed:1/0,value:1/0};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};n.sample=function(t,i,r){return arguments.length<2||r?t[n.random(t.length-1)]:n.shuffle(t).slice(0,Math.max(0,i))};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(r>i||r===void 0)return-1}return n.index-t.index}),"value")};c=function(t){return function(r,u,f){var e={},o=null==u?n.identity:h(u);return i(r,function(n,i){var u=o.call(f,n,i,r);t(e,u,n)}),e}};n.groupBy=c(function(t,i,r){(n.has(t,i)?t[i]:t[i]=[]).push(r)});n.indexBy=c(function(n,t,i){n[t]=i});n.countBy=c(function(t,i){n.has(t,i)?t[i]++:t[i]=1});n.sortedIndex=function(t,i,r,u){var e;r=null==r?n.identity:h(r);for(var s=r.call(u,i),f=0,o=t.length;o>f;)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 null==t?0:t.length===+t.length?t.length:n.keys(t).length};n.first=n.head=n.take=function(n,i,r){if(null!=n)return null==i||r?n[0]:t.call(n,0,i)};n.initial=function(n,i,r){return t.call(n,0,n.length-(null==i||r?1:i))};n.last=function(n,i,r){if(null!=n)return null==i||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,null==i||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?p.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;i>t;t++)r[t]=n.pluck(arguments,""+t);return r};n.object=function(n,t){if(null==n)return{};for(var r={},i=0,u=n.length;u>i;i++)t?r[n[i]]=t[i]:r[n[i][0]]=n[i][1];return r};n.indexOf=function(t,i,r){if(null==t)return-1;var u=0,f=t.length;if(r){if("number"!=typeof r)return u=n.sortedIndex(t,i),t[u]===i?u:-1;u=0>r?Math.max(0,f+r):r}if(s&&t.indexOf===s)return t.indexOf(i,r);for(;f>u;u++)if(t[u]===i)return u;return-1};n.lastIndexOf=function(n,t,i){var u,r;if(null==n)return-1;if(u=null!=i,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);r>u;)f[u++]=n,n+=i;return f};l=function(){};n.bind=function(i,r){var u,f;if(w&&i.bind===w)return w.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)?(l.prototype=i.prototype,e=new l,l.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(0===u.length)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,0>=c?(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 r,u,f,o,e;return function(){f=this;u=arguments;o=new Date;var s=function(){var h=new Date-o;t>h?r=setTimeout(s,t-h):(r=null,i||(e=n.apply(f,u)))},h=i&&!r;return r||(r=setTimeout(s,t)),h&&(e=n.apply(f,u)),e}};n.once=function(n){var t,i=!1;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 p.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){for(var r=n.keys(t),u=r.length,f=new Array(u),i=0;u>i;i++)f[i]=t[r[i]];return f};n.pairs=function(t){for(var r=n.keys(t),u=r.length,f=new Array(u),i=0;u>i;i++)f[i]=[r[i],t[r[i]]];return f};n.invert=function(t){for(var u={},r=n.keys(t),i=0,f=r.length;f>i;i++)u[t[r[i]]]=r[i];return u};n.functions=n.methods=function(t){var r=[],i;for(i in t)n.isFunction(t[i])&&r.push(i);return r.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)),u;for(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};a=function(t,i,r,u){var l,v,h,c,e,o,s;if(t===i)return 0!==t||1/t==1/i;if(null==t||null==i)return t===i;if(t instanceof n&&(t=t._wrapped),i instanceof n&&(i=i._wrapped),l=f.call(t),l!=f.call(i))return!1;switch(l){case"[object String]":return t==String(i);case"[object Number]":return t!=+t?i!=+i:0==t?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("object"!=typeof t||"object"!=typeof i)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,"[object Array]"==l){if(e=t.length,o=e==i.length)for(;e--&&(o=a(t[e],i[e],r,u)););}else{for(s in t)if(n.has(t,s)&&(e++,!(o=n.has(i,s)&&a(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 a(n,t,[],[])};n.isEmpty=function(t){if(null==t)return!0;if(n.isArray(t)||n.isString(t))return 0===t.length;for(var i in t)if(n.has(t,i))return!1;return!0};n.isElement=function(n){return!(!n||1!==n.nodeType)};n.isArray=yt||function(n){return"[object Array]"==f.call(n)};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"))});"function"!=typeof/./&&(n.isFunction=function(n){return"function"==typeof n});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||"[object Boolean]"==f.call(n)};n.isNull=function(n){return null===n};n.isUndefined=function(n){return n===void 0};n.has=function(n,t){return vt.call(n,t)};n.noConflict=function(){return y._=lt,this};n.identity=function(n){return n};n.times=function(n,t,i){for(var u=Array(Math.max(0,n)),r=0;n>r;r++)u[r]=t.call(i,r);return u};n.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))};u={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};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 null==n?"":(""+n).replace(ht[t],function(n){return u[t][n]})}});n.result=function(t,i){if(null==t)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 p.apply(t,arguments),v.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){throw s.source=u,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()};v=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),"shift"!=t&&"splice"!=t||0!==n.length||delete n[0],v.call(this,n)}});i(["concat","join","slice"],function(t){var i=r[t];n.prototype[t]=function(){return v.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,c=[],pt=c.push,o=c.slice,wt=c.splice,t,n,f,y,p,w,k,d,tt,l,e;t=typeof exports!="undefined"?exports:r.Backbone={};t.VERSION="1.1.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(!s(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(!s(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 o,u,h,c,f,l,e,a;if(!this._events||!s(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]=o=[],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)&&o.push(u);o.length||delete this._events[t]}return this},trigger:function(n){var t,i,r;return this._events?(t=o.call(arguments,1),!s(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(t,i,r){var u=this._listeningTo,e,f;if(!u)return this;e=!i&&!r;r||typeof i!="object"||(r=this);t&&((u={})[t._listenId]=t);for(f in u)t=u[f],t.off(i,r,this),(e||n.isEmpty(t._events))&&delete this._listeningTo[f];return this}},a=/\s+/,s=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._listeningTo||(this._listeningTo={}),e=i._listenId||(i._listenId=n.uniqueId("l"));return f[e]=i,u||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 r=t||{};i||(i={});this.cid=n.uniqueId("c");this.attributes={};i.collection&&(this.collection=i.collection);i.parse&&(r=this.parse(r,i)||{});r=n.defaults({},r,n.result(this,"defaults"));this.set(r,i);this.changed={};this.initialize.apply(this,arguments)};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={},r;for(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;if(t==null||typeof t=="object"?(u=t,r=i):(u={})[t]=i,r=n.extend({validate:!0},r),u&&!r.wait){if(!this.set(u,r))return!1}else if(!this._validate(u,r))return!1;return 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}});y=["keys","values","pairs","invert","pick","omit"];n.each(y,function(t){f.prototype[t]=function(){var i=o.call(arguments);return i.unshift(this.attributes),n[t].apply(n,i)}});var h=t.Collection=function(t,i){i||(i={});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))},rt={add:!0,remove:!0,merge:!0},ut={add:!0,remove:!1};n.extend(h.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.extend({merge:!1},i,ut))},remove:function(t,i){var e=!n.isArray(t),u,o,f,r;for(t=e?[t]:n.clone(t),i||(i={}),u=0,o=t.length;u<o;u++)(r=t[u]=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 e?t[0]:t},set:function(t,i){var a,b;i=n.defaults({},i,rt);i.parse&&(t=this.parse(t,i));a=!n.isArray(t);t=a?t?[t]:[]:n.clone(t);for(var k,u,e,c,l,v=i.at,nt=this.model,y=this.comparator&&v==null&&i.sort!==!1,tt=n.isString(this.comparator)?this.comparator:null,s=[],p=[],d={},g=i.add,it=i.merge,w=i.remove,h=!y&&g&&w?[]:!1,r=0,o=t.length;r<o;r++){if(e=t[r],k=e instanceof f?u=e:e[nt.prototype.idAttribute],c=this.get(k))w&&(d[c.cid]=!0),it&&(e=e===u?u.attributes:e,i.parse&&(e=c.parse(e,i)),c.set(e,i),y&&!l&&c.hasChanged(tt)&&(l=!0)),t[r]=c;else if(g){if(u=t[r]=this._prepareModel(e,i),!u)continue;s.push(u);u.on("all",this._onModelEvent,this);this._byId[u.cid]=u;u.id!=null&&(this._byId[u.id]=u)}h&&h.push(c||u)}if(w){for(r=0,o=this.length;r<o;++r)d[(u=this.models[r]).cid]||p.push(u);p.length&&this.remove(p,i)}if(s.length||h&&h.length)if(y&&(l=!0),this.length+=s.length,v!=null)for(r=0,o=s.length;r<o;r++)this.models.splice(v+r,0,s[r]);else for(h&&(this.models.length=0),b=h||s,r=0,o=b.length;r<o;r++)this.models.push(b[r]);if(l&&this.sort({silent:!0}),!i.silent){for(r=0,o=s.length;r<o;r++)(u=s[r]).trigger("add",u,this,i);(l||h&&h.length)&&this.trigger("sort",this,i)}return a?t[0]:t},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(),t=this.add(t,n.extend({silent:!0},i)),i.silent||this.trigger("reset",this,i),t},push:function(t,i){return this.add(t,n.extend({at:this.length},i))},pop:function(n){var t=this.at(this.length-1);return this.remove(t,n),t},unshift:function(t,i){return this.add(t,n.extend({at:0},i))},shift:function(n){var t=this.at(0);return this.remove(t,n),t},slice:function(){return o.apply(this.models,arguments)},get:function(n){if(n!=null)return this._byId[n.id]||this._byId[n.cid]||this._byId[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},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,t,i){i.wait&&u.add(n,i);r&&r(n,t,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(t,i){if(t instanceof f)return t.collection||(t.collection=this),t;i=i?n.clone(i):{};i.collection=this;var r=new this.model(t,i);return r.validationError?(this.trigger("invalid",this,r.validationError,i),!1):r},_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))}});p=["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","difference","indexOf","shuffle","lastIndexOf","isEmpty","chain"];n.each(p,function(t){h.prototype[t]=function(){var i=o.call(arguments);return i.unshift(this.models),n[t].apply(n,i)}});w=["groupBy","countBy","sortBy"];n.each(w,function(t){h.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 b=t.View=function(t){this.cid=n.uniqueId("view");t||(t={});n.extend(this,n.pick(t,et));this._ensureElement();this.initialize.apply(this,arguments);this.delegateEvents()},ft=/^(\S+)\s*(.*)$/,et=["model","collection","el","id","attributes","className","tagName","events"];n.extend(b.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(ft),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},_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"&&k&&(f.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")}),s=u.xhr=t.ajax(n.extend(f,u)),r.trigger("request",r,s,u),s};k=typeof window!="undefined"&&!!window.ActiveXObject&&!(window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent);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)},ot=/\((.*?)\)/g,st=/(\(\?)?:\w+/g,ht=/\*\w+/g,ct=/[\-{}\[\]+?.,\\\^$|#\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(ct,"\\$&").replace(ot,"(?:$1)?").replace(st,function(n,t){return t?n:"([^/]+)"}).replace(ht,"(.*?)"),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,lt=/^\/+|\/+$/g,at=/msie [\w.]+/,vt=/\/$/,yt=/[?#].*$/;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(vt,"");n.indexOf(i)||(n=n.slice(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=at.exec(navigator.userAgent.toLowerCase())&&(!o||o<=7);if(this.root=("/"+this.root+"/").replace(lt,"/"),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));if(this.fragment=e,r=this.location,f=r.pathname.replace(/[^\/]$/,"$&/")===this.root,this._wantsHashChange&&this._wantsPushState)if(this._hasPushState||f)this._hasPushState&&f&&r.hash&&(this.fragment=this.getHash().replace(nt,""),this.history.replaceState({},document.title,this.root+this.fragment+r.search));else return this.fragment=this.getFragment(null,!0),this.location.replace(this.root+this.location.search+"#"+this.fragment),!0;if(!this.options.silent)return 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()},loadUrl:function(t){return t=this.fragment=this.getFragment(t),n.any(this.handlers,function(n){if(n.route.test(t))return n.callback(t),!0})},navigate:function(n,t){if(!u.started)return!1;t&&t!==!0||(t={trigger:!!t});var i=this.root+(n=this.getFragment(n||""));if(n=n.replace(yt,""),this.fragment!==n){if(this.fragment=n,n===""&&i!=="/"&&(i=i.slice(0,-1)),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);if(t.trigger)return 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=h.extend=g.extend=b.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)