!function(n){var s="object"==typeof self&&self.self==self&&self||"object"==typeof global&&global.global==global&&global;if("function"==typeof define&&define.amd)define(["underscore","jquery","exports"],function(t,e,i){s.Backbone=n(s,i,t,e)});else if("undefined"!=typeof exports){var t,e=require("underscore");try{t=require("jquery")}catch(t){}n(s,exports,e,t)}else s.Backbone=n(s,{},s._,s.jQuery||s.Zepto||s.ender||s.$)}(function(t,h,y,e){function i(i,t,n){y.each(t,function(t,e){y[e]&&(i.prototype[e]=function(t,n,s){switch(t){case 1:return function(){return y[n](this[s])};case 2:return function(t){return y[n](this[s],t)};case 3:return function(t,e){return y[n](this[s],o(t,this),e)};case 4:return function(t,e,i){return y[n](this[s],o(t,this),e,i)};default:return function(){var t=r.call(arguments);return t.unshift(this[s]),y[n].apply(y,t)}}}(t,e,n))})}function b(t,e,i){for(var n=Array(t.length-i),s=e.length,r=0;r<n.length;r++)n[r]=t[r+i];for(r=0;r<s;r++)t[r+i]=e[r];for(r=0;r<n.length;r++)t[r+s+i]=n[r]}var n=t.Backbone,r=Array.prototype.slice,o=(h.VERSION="1.2.2",h.$=e,h.noConflict=function(){return t.Backbone=n,this},h.emulateHTTP=!1,h.emulateJSON=!1,function(e,t){var i;return y.isFunction(e)?e:y.isObject(e)&&!t._isModel(e)?(i=y.matches(e),function(t){return i(t.attributes)}):y.isString(e)?function(t){return t.get(e)}:e}),e=h.Events={},a=/\s+/,c=function(t,e,i,n,s){var r,o=0;if(i&&"object"==typeof i){void 0!==n&&"context"in s&&void 0===s.context&&(s.context=n);for(r=y.keys(i);o<r.length;o++)e=c(t,e,r[o],i[r[o]],s)}else if(i&&a.test(i))for(r=i.split(a);o<r.length;o++)e=t(e,r[o],n,s);else e=t(e,i,n,s);return e},u=(e.on=function(t,e,i){return u(this,t,e,i)},function(t,e,i,n,s){return t._events=c(l,t._events||{},e,i,{context:n,ctx:t,listening:s}),s&&((t._listeners||(t._listeners={}))[s.id]=s),t}),l=(e.listenTo=function(t,e,i){var n,s,r,o;return t&&(n=t._listenId||(t._listenId=y.uniqueId("l")),(o=(s=this._listeningTo||(this._listeningTo={}))[n])||(r=this._listenId||(this._listenId=y.uniqueId("l")),o=s[n]={obj:t,objId:n,id:r,listeningTo:s,count:0}),u(t,e,i,this,o)),this},function(t,e,i,n){var s,r;return i&&(e=t[e]||(t[e]=[]),s=n.context,r=n.ctx,(n=n.listening)&&n.count++,e.push({callback:i,context:s,ctx:s||r,listening:n})),t}),s=(e.off=function(t,e,i){return this._events&&(this._events=c(s,this._events,t,e,{context:i,listeners:this._listeners})),this},e.stopListening=function(t,e,i){var n=this._listeningTo;if(n){for(var s=t?[t._listenId]:y.keys(n),r=0;r<s.length;r++){var o=n[s[r]];if(!o)break;o.obj.off(e,i,this)}y.isEmpty(n)&&(this._listeningTo=void 0)}return this},function(t,e,i,n){if(t){var s,r=0,o=n.context,h=n.listeners;if(e||i||o){for(var a=e?[e]:y.keys(t);r<a.length;r++){var c=t[e=a[r]];if(!c)break;for(var u=[],l=0;l<c.length;l++){var d=c[l];i&&i!==d.callback&&i!==d.callback._callback||o&&o!==d.context?u.push(d):(s=d.listening)&&0==--s.count&&(delete h[s.id],delete s.listeningTo[s.objId])}u.length?t[e]=u:delete t[e]}return y.size(t)?t:void 0}for(var f=y.keys(h);r<f.length;r++)delete h[(s=h[f[r]]).id],delete s.listeningTo[s.objId]}}),d=(e.once=function(t,e,i){t=c(d,{},t,e,y.bind(this.off,this));return this.on(t,void 0,i)},e.listenToOnce=function(t,e,i){e=c(d,{},e,i,y.bind(this.stopListening,this,t));return this.listenTo(t,e)},function(t,e,i,n){var s;return i&&((s=t[e]=y.once(function(){n(e,s),i.apply(this,arguments)}))._callback=i),t}),f=(e.trigger=function(t){if(this._events){for(var e=Math.max(0,arguments.length-1),i=Array(e),n=0;n<e;n++)i[n]=arguments[n+1];c(f,this._events,t,void 0,i)}return this},function(t,e,i,n){var s,r;return t&&(s=t[e],r=t.all,s&&(r=r&&r.slice()),s&&g(s,n),r)&&g(r,[e].concat(n)),t}),g=function(t,e){var i,n=-1,s=t.length,r=e[0],o=e[1],h=e[2];switch(e.length){case 0:for(;++n<s;)(i=t[n]).callback.call(i.ctx);return;case 1:for(;++n<s;)(i=t[n]).callback.call(i.ctx,r);return;case 2:for(;++n<s;)(i=t[n]).callback.call(i.ctx,r,o);return;case 3:for(;++n<s;)(i=t[n]).callback.call(i.ctx,r,o,h);return;default:for(;++n<s;)(i=t[n]).callback.apply(i.ctx,e);return}},p=(e.bind=e.on,e.unbind=e.off,y.extend(h,e),h.Model=function(t,e){var i=t||{};e=e||{},this.cid=y.uniqueId(this.cidPrefix),this.attributes={},e.collection&&(this.collection=e.collection),e.parse&&(i=this.parse(i,e)||{}),i=y.defaults({},i,y.result(this,"defaults")),this.set(i,e),this.changed={},this.initialize.apply(this,arguments)}),m=(y.extend(p.prototype,e,{changed:null,validationError:null,idAttribute:"id",cidPrefix:"c",initialize:function(){},toJSON:function(t){return y.clone(this.attributes)},sync:function(){return h.sync.apply(this,arguments)},get:function(t){return this.attributes[t]},escape:function(t){return y.escape(this.get(t))},has:function(t){return null!=this.get(t)},matches:function(t){return!!y.iteratee(t,this)(this.attributes)},set:function(t,e,i){if(null!=t){var n;if("object"==typeof t?(n=t,i=e):(n={})[t]=e,!this._validate(n,i=i||{}))return!1;var s,r=i.unset,t=i.silent,o=[],h=this._changing,a=(this._changing=!0,h||(this._previousAttributes=y.clone(this.attributes),this.changed={}),this.attributes),c=this.changed,u=this._previousAttributes;for(s in n)e=n[s],y.isEqual(a[s],e)||o.push(s),y.isEqual(u[s],e)?delete c[s]:c[s]=e,r?delete a[s]:a[s]=e;if(this.id=this.get(this.idAttribute),!t){o.length&&(this._pending=i);for(var l=0;l<o.length;l++)this.trigger("change:"+o[l],this,a[o[l]],i)}if(!h){if(!t)for(;this._pending;)i=this._pending,this._pending=!1,this.trigger("change",this,i);this._pending=!1,this._changing=!1}}return this},unset:function(t,e){return this.set(t,void 0,y.extend({},e,{unset:!0}))},clear:function(t){var e,i={};for(e in this.attributes)i[e]=void 0;return this.set(i,y.extend({},t,{unset:!0}))},hasChanged:function(t){return null==t?!y.isEmpty(this.changed):y.has(this.changed,t)},changedAttributes:function(t){if(!t)return!!this.hasChanged()&&y.clone(this.changed);var e,i=this._changing?this._previousAttributes:this.attributes,n={};for(e in t){var s=t[e];y.isEqual(i[e],s)||(n[e]=s)}return!!y.size(n)&&n},previous:function(t){return null!=t&&this._previousAttributes?this._previousAttributes[t]:null},previousAttributes:function(){return y.clone(this._previousAttributes)},fetch:function(i){i=y.extend({parse:!0},i);var n=this,s=i.success;return i.success=function(t){var e=i.parse?n.parse(t,i):t;if(!n.set(e,i))return!1;s&&s.call(i.context,n,t,i),n.trigger("sync",n,t,i)},N(this,i),this.sync("read",this,i)},save:function(t,e,i){null==t||"object"==typeof t?(n=t,i=e):(n={})[t]=e;var n,s=(i=y.extend({validate:!0,parse:!0},i)).wait;if(n&&!s){if(!this.set(n,i))return!1}else if(!this._validate(n,i))return!1;var r=this,o=i.success,h=this.attributes,t=(i.success=function(t){r.attributes=h;var e=i.parse?r.parse(t,i):t;if((e=s?y.extend({},n,e):e)&&!r.set(e,i))return!1;o&&o.call(i.context,r,t,i),r.trigger("sync",r,t,i)},N(this,i),n&&s&&(this.attributes=y.extend({},h,n)),this.isNew()?"create":i.patch?"patch":"update"),e=("patch"!=t||i.attrs||(i.attrs=n),this.sync(t,this,i));return this.attributes=h,e},destroy:function(e){e=e?y.clone(e):{};function i(){n.stopListening(),n.trigger("destroy",n,n.collection,e)}var n=this,s=e.success,r=e.wait,t=!(e.success=function(t){r&&i(),s&&s.call(e.context,n,t,e),n.isNew()||n.trigger("sync",n,t,e)});return this.isNew()?y.defer(e.success):(N(this,e),t=this.sync("delete",this,e)),r||i(),t},url:function(){var t,e=y.result(this,"urlRoot")||y.result(this.collection,"url")||j();return this.isNew()?e:(t=this.get(this.idAttribute),e.replace(/[^\/]$/,"$&/")+encodeURIComponent(t))},parse:function(t,e){return t},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(t){return this._validate({},y.defaults({validate:!0},t))},_validate:function(t,e){if(!e.validate||!this.validate)return!0;t=y.extend({},this.attributes,t);t=this.validationError=this.validate(t,e)||null;return!t||(this.trigger("invalid",this,t,y.extend(e,{validationError:t})),!1)}}),i(p,{keys:1,values:1,pairs:1,invert:1,pick:0,omit:0,chain:1,isEmpty:1},"attributes"),h.Collection=function(t,e){(e=e||{}).model&&(this.model=e.model),void 0!==e.comparator&&(this.comparator=e.comparator),this._reset(),this.initialize.apply(this,arguments),t&&this.reset(t,y.extend({silent:!0},e))}),x={add:!0,remove:!0,merge:!0},v={add:!0,remove:!1},_=(y.extend(m.prototype,e,{model:p,initialize:function(){},toJSON:function(e){return this.map(function(t){return t.toJSON(e)})},sync:function(){return h.sync.apply(this,arguments)},add:function(t,e){return this.set(t,y.extend({merge:!1},e,v))},remove:function(t,e){e=y.extend({},e);var i=!y.isArray(t),t=(t=i?[t]:y.clone(t),this._removeModels(t,e));return!e.silent&&t&&this.trigger("update",this,e),i?t[0]:t},set:function(t,e){if(null!=t){(e=y.defaults({},e,x)).parse&&!this._isModel(t)&&(t=this.parse(t,e));for(var i=!y.isArray(t),n=(t=i?[t]:t.slice(),e.at),s=((n=null!=n?+n:n)<0&&(n+=this.length+1),[]),r=[],o=[],h={},a=e.add,c=e.merge,u=e.remove,l=!1,d=this.comparator&&null==n&&!1!==e.sort,f=y.isString(this.comparator)?this.comparator:null,g=0;g<t.length;g++){var p,m=t[g],v=this.get(m);v?(c&&m!==v&&(p=this._isModel(m)?m.attributes:m,e.parse&&(p=v.parse(p,e)),v.set(p,e),d)&&!l&&(l=v.hasChanged(f)),h[v.cid]||(h[v.cid]=!0,s.push(v)),t[g]=v):a&&(m=t[g]=this._prepareModel(m,e))&&(r.push(m),this._addReference(m,e),h[m.cid]=!0,s.push(m))}if(u){for(g=0;g<this.length;g++)h[(m=this.models[g]).cid]||o.push(m);o.length&&this._removeModels(o,e)}var _=!1;if(s.length&&(!d&&a&&u)?(_=this.length!=s.length||y.some(this.models,function(t,e){return t!==s[e]}),this.models.length=0,b(this.models,s,0),this.length=this.models.length):r.length&&(d&&(l=!0),b(this.models,r,null==n?this.length:n),this.length=this.models.length),l&&this.sort({silent:!0}),!e.silent){for(g=0;g<r.length;g++)null!=n&&(e.index=n+g),(m=r[g]).trigger("add",m,this,e);(l||_)&&this.trigger("sort",this,e),(r.length||o.length)&&this.trigger("update",this,e)}return i?t[0]:t}},reset:function(t,e){e=e?y.clone(e):{};for(var i=0;i<this.models.length;i++)this._removeReference(this.models[i],e);return e.previousModels=this.models,this._reset(),t=this.add(t,y.extend({silent:!0},e)),e.silent||this.trigger("reset",this,e),t},push:function(t,e){return this.add(t,y.extend({at:this.length},e))},pop:function(t){var e=this.at(this.length-1);return this.remove(e,t)},unshift:function(t,e){return this.add(t,y.extend({at:0},e))},shift:function(t){var e=this.at(0);return this.remove(e,t)},slice:function(){return r.apply(this.models,arguments)},get:function(t){var e;if(null!=t)return e=this.modelId(this._isModel(t)?t.attributes:t),this._byId[t]||this._byId[e]||this._byId[t.cid]},at:function(t){return t<0&&(t+=this.length),this.models[t]},where:function(t,e){return this[e?"find":"filter"](t)},findWhere:function(t){return this.where(t,!0)},sort:function(t){var e=this.comparator;if(!e)throw new Error("Cannot sort a set without a comparator");t=t||{};var i=e.length;return y.isFunction(e)&&(e=y.bind(e,this)),1===i||y.isString(e)?this.models=this.sortBy(e):this.models.sort(e),t.silent||this.trigger("sort",this,t),this},pluck:function(t){return y.invoke(this.models,"get",t)},fetch:function(i){var n=(i=y.extend({parse:!0},i)).success,s=this;return i.success=function(t){var e=i.reset?"reset":"set";s[e](t,i),n&&n.call(i.context,s,t,i),s.trigger("sync",s,t,i)},N(this,i),this.sync("read",this,i)},create:function(t,e){var n=(e=e?y.clone(e):{}).wait;if(!(t=this._prepareModel(t,e)))return!1;n||this.add(t,e);var s=this,r=e.success;return e.success=function(t,e,i){n&&s.add(t,i),r&&r.call(i.context,t,e,i)},t.save(null,e),t},parse:function(t,e){return t},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(t){return t[this.model.prototype.idAttribute||"id"]},_reset:function(){this.length=0,this.models=[],this._byId={}},_prepareModel:function(t,e){return this._isModel(t)?(t.collection||(t.collection=this),t):(t=new((e=e?y.clone(e):{}).collection=this).model(t,e)).validationError?(this.trigger("invalid",this,t.validationError,e),!1):t},_removeModels:function(t,e){for(var i=[],n=0;n<t.length;n++){var s,r=this.get(t[n]);r&&(s=this.indexOf(r),this.models.splice(s,1),this.length--,e.silent||(e.index=s,r.trigger("remove",r,this,e)),i.push(r),this._removeReference(r,e))}return!!i.length&&i},_isModel:function(t){return t instanceof p},_addReference:function(t,e){this._byId[t.cid]=t;var i=this.modelId(t.attributes);null!=i&&(this._byId[i]=t),t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){delete this._byId[t.cid];var i=this.modelId(t.attributes);null!=i&&delete this._byId[i],this===t.collection&&delete t.collection,t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,i,n){var s,r;("add"!==t&&"remove"!==t||i===this)&&("destroy"===t&&this.remove(e,n),"change"===t&&(s=this.modelId(e.previousAttributes()))!==(r=this.modelId(e.attributes))&&(null!=s&&delete this._byId[s],null!=r)&&(this._byId[r]=e),this.trigger.apply(this,arguments))}}),i(m,{forEach:3,each:3,map:3,collect:3,reduce:4,foldl:4,inject:4,reduceRight:4,foldr:4,find:3,detect:3,filter:3,select:3,reject:3,every:3,all:3,some:3,any:3,include:3,includes:3,contains:3,invoke:0,max:3,min:3,toArray:1,size:1,first:3,head:3,take:3,initial:3,rest:3,tail:3,drop:3,last:3,without:0,difference:0,indexOf:3,shuffle:1,lastIndexOf:3,isEmpty:1,chain:1,sample:3,partition:3,groupBy:3,countBy:3,sortBy:3,indexBy:3},"models"),h.View=function(t){this.cid=y.uniqueId("view"),y.extend(this,y.pick(t,E)),this._ensureElement(),this.initialize.apply(this,arguments)}),w=/^(\S+)\s*(.*)$/,E=["model","collection","el","id","attributes","className","tagName","events"],k=(y.extend(_.prototype,e,{tagName:"div",$:function(t){return this.$el.find(t)},initialize:function(){},render:function(){return this},remove:function(){return this._removeElement(),this.stopListening(),this},_removeElement:function(){this.$el.remove()},setElement:function(t){return this.undelegateEvents(),this._setElement(t),this.delegateEvents(),this},_setElement:function(t){this.$el=t instanceof h.$?t:h.$(t),this.el=this.$el[0]},delegateEvents:function(t){if(t=t||y.result(this,"events"))for(var e in this.undelegateEvents(),t){var i=t[e];(i=y.isFunction(i)?i:this[i])&&(e=e.match(w),this.delegate(e[1],e[2],y.bind(i,this)))}return this},delegate:function(t,e,i){return this.$el.on(t+".delegateEvents"+this.cid,e,i),this},undelegateEvents:function(){return this.$el&&this.$el.off(".delegateEvents"+this.cid),this},undelegate:function(t,e,i){return this.$el.off(t+".delegateEvents"+this.cid,e,i),this},_createElement:function(t){return document.createElement(t)},_ensureElement:function(){var t;this.el?this.setElement(y.result(this,"el")):(t=y.extend({},y.result(this,"attributes")),this.id&&(t.id=y.result(this,"id")),this.className&&(t.class=y.result(this,"className")),this.setElement(this._createElement(y.result(this,"tagName"))),this._setAttributes(t))},_setAttributes:function(t){this.$el.attr(t)}}),h.sync=function(t,e,n){var i,s=k[t],r=(y.defaults(n=n||{},{emulateHTTP:h.emulateHTTP,emulateJSON:h.emulateJSON}),{type:s,dataType:"json"}),o=(n.url||(r.url=y.result(e,"url")||j()),null!=n.data||!e||"create"!==t&&"update"!==t&&"patch"!==t||(r.contentType="application/json",r.data=JSON.stringify(n.attrs||e.toJSON(n))),n.emulateJSON&&(r.contentType="application/x-www-form-urlencoded",r.data=r.data?{model:r.data}:{}),!n.emulateHTTP||"PUT"!==s&&"DELETE"!==s&&"PATCH"!==s||(r.type="POST",n.emulateJSON&&(r.data._method=s),i=n.beforeSend,n.beforeSend=function(t){if(t.setRequestHeader("X-HTTP-Method-Override",s),i)return i.apply(this,arguments)}),"GET"===r.type||n.emulateJSON||(r.processData=!1),n.error),t=(n.error=function(t,e,i){n.textStatus=e,n.errorThrown=i,o&&o.call(n.context,t,e,i)},n.xhr=h.ajax(y.extend(r,n)));return e.trigger("request",e,t,n),t},{create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"}),S=(h.ajax=function(){return h.$.ajax.apply(h.$,arguments)},h.Router=function(t){(t=t||{}).routes&&(this.routes=t.routes),this._bindRoutes(),this.initialize.apply(this,arguments)}),I=/\((.*?)\)/g,T=/(\(\?)?:\w+/g,P=/\*\w+/g,H=/[\-{}\[\]+?.,\\\^$|#\s]/g,$=(y.extend(S.prototype,e,{initialize:function(){},route:function(e,i,n){y.isRegExp(e)||(e=this._routeToRegExp(e)),y.isFunction(i)&&(n=i,i=""),n=n||this[i];var s=this;return h.history.route(e,function(t){t=s._extractParameters(e,t);!1!==s.execute(n,t,i)&&(s.trigger.apply(s,["route:"+i].concat(t)),s.trigger("route",i,t),h.history.trigger("route",s,i,t))}),this},execute:function(t,e,i){t&&t.apply(this,e)},navigate:function(t,e){return h.history.navigate(t,e),this},_bindRoutes:function(){if(this.routes){this.routes=y.result(this,"routes");for(var t,e=y.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(H,"\\$&").replace(I,"(?:$1)?").replace(T,function(t,e){return e?t:"([^/?]+)"}).replace(P,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var i=t.exec(e).slice(1);return y.map(i,function(t,e){return e===i.length-1?t||null:t?decodeURIComponent(t):null})}}),h.History=function(){this.handlers=[],this.checkUrl=y.bind(this.checkUrl,this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)}),A=/^[#\/]|\s+$/g,C=/^\/+|\/+$/g,R=/#.*$/,j=($.started=!1,y.extend($.prototype,e,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(t){return decodeURI(t.replace(/%25/g,"%2525"))},getSearch:function(){var t=this.location.href.replace(/#.*/,"").match(/\?.+/);return t?t[0]:""},getHash:function(t){t=(t||this).location.href.match(/#(.*)$/);return t?t[1]:""},getPath:function(){var t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===t.charAt(0)?t.slice(1):t},getFragment:function(t){return(t=null==t?this._usePushState||!this._wantsHashChange?this.getPath():this.getHash():t).replace(A,"")},start:function(t){if($.started)throw new Error("Backbone.history has already been started");if($.started=!0,this.options=y.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||7<document.documentMode),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(C,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot())return t=this.root.slice(0,-1)||"/",this.location.replace(t+"#"+this.getPath()),!0;this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}this._hasHashChange||!this._wantsHashChange||this._usePushState||(this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1,(t=(t=document.body).insertBefore(this.iframe,t.firstChild).contentWindow).document.open(),t.document.close(),t.location.hash="#"+this.fragment);t=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?t("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&t("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),$.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if((e=e===this.fragment&&this.iframe?this.getHash(this.iframe.contentWindow):e)===this.fragment)return!1;this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(e){return!!this.matchRoot()&&(e=this.fragment=this.getFragment(e),y.some(this.handlers,function(t){if(t.route.test(e))return t.callback(e),!0}))},navigate:function(t,e){if(!$.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||"");var i=this.root,i=(i=""!==t&&"?"!==t.charAt(0)?i:i.slice(0,-1)||"/")+t;if(t=this.decodeFragment(t.replace(R,"")),this.fragment!==t){if(this.fragment=t,this._usePushState)this.history[e.replace?"replaceState":"pushState"]({},document.title,i);else{if(!this._wantsHashChange)return this.location.assign(i);this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)&&(i=this.iframe.contentWindow,e.replace||(i.document.open(),i.document.close()),this._updateHash(i.location,t,e.replace))}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,i){i?(i=t.href.replace(/(javascript:|#).*$/,""),t.replace(i+"#"+e)):t.hash="#"+e}}),h.history=new $,p.extend=m.extend=S.extend=_.extend=$.extend=function(t,e){function i(){this.constructor=s}var n=this,s=t&&y.has(t,"constructor")?t.constructor:function(){return n.apply(this,arguments)};y.extend(s,n,e);return i.prototype=n.prototype,s.prototype=new i,t&&y.extend(s.prototype,t),s.__super__=n.prototype,s},function(){throw new Error('A "url" property or function must be specified')}),N=function(e,i){var n=i.error;i.error=function(t){n&&n.call(i.context,e,t,i),e.trigger("error",e,t,i)}};return h});