(function(n,t){"object"==typeofmodule&&module.exports?module.exports=function(n){returnn=n||require("underscore"),t(n)}:"function"==typeofdefine&&define.amd?define(["underscore"],function(i){returnt(i,n)}):n.postal=t(n._,n)})(this,function(n){vart="/",i="postal",s=function(){vart;returnfunction(i){vars=!1;returnn.isString(i)?(s=i===t,t=i):(s=n.isEqual(i,t),t=n.clone(i)),!s}},e=function(){vart=[];returnfunction(i){vars=!n.any(t,function(t){returnn.isObject(i)||n.isArray(i)?n.isEqual(i,t):i===t});returns&&t.push(i),s}},c=function(n){this.channel=n||t};c.prototype.subscribe=function(){returnp.subscribe(1===arguments.length?newr(this.channel,arguments[0].topic,arguments[0].callback):newr(this.channel,arguments[0],arguments[1]))},c.prototype.publish=function(){varn=1===arguments.length?"[object String]"===Object.prototype.toString.call(arguments[0])?{topic:arguments[0]}:arguments[0]:{topic:arguments[0],data:arguments[1]};returnn.channel=this.channel,p.publish(n)};varr=function(n,t,i){this.channel=n,this.topic=t,this.callback=i,this.constraints=[],this.context=null};n.extend(r.prototype,{unsubscribe:function(){this.inactive||(this.inactive=!0,p.unsubscribe(this))},defer:function(){varn=this.callback;returnthis.callback=function(t){setTimeout(function(){n(t)},0)},this},disposeAfter:function(t){if(n.isNaN(t)||0>=t)throw"The value provided to disposeAfter (maxCalls) must be a number greater than zero.";vari=this.callback,s=n.after(t,n.bind(function(){this.unsubscribe()},this));returnthis.callback=function(){i.apply(this.context,arguments),s()},this},distinctUntilChanged:function(){returnthis.withConstraint(news),this},distinct:function(){returnthis.withConstraint(newe),this},once:function(){returnthis.disposeAfter(1),this},withConstraint:function(t){if(!n.isFunction(t))throw"Predicate constraint must be a function";returnthis.constraints.push(t),this},withConstraints:function(t){vari=this;returnn.isArray(t)&&n.each(t,function(n){i.withConstraint(n)}),i},withContext:function(n){returnthis.context=n,this},withDebounce:function(t){if(n.isNaN(t))throw"Milliseconds must be a number";vari=this.callback;returnthis.callback=n.debounce(i,t),this},withDelay:function(t){if(n.isNaN(t))throw"Milliseconds must be a number";vari=this.callback;returnthis.callback=function(n){setTimeout(function(){i(n)},t)},this},withThrottle:function(t){if(n.isNaN(t))throw"Milliseconds must be a number";vari=this.callback;returnthis.callback=n.throttle(i,t),this},subscribe:function(n){returnthis.callback=n,this}});varu={cache:{},regex:{},compare:function(t,i){vars,e,c,r=this.cache[i]&&this.cache[i][t];returnr!==undefined?r:((e=this.regex[t])||(s="^"+n.map(t.split("."),function(n){vart="";returnc&&(t="#"!==c?"\\.\\b":"\\b"),t+="#"===n?"[\\s\\S]*":"*"===n?"[^.]+":n,c=n,t}).join("")+"$",e=this.regex[t]=RegExp(s)),this.cache[i]=this.cache[i]||{},this.cache[i][t]=r=e.test(i),r)},reset:function(){this.cache={},this.regex={}}},o=function(t,i){!t.inactive&&p.configuration.resolver.compare(t.topic,i.topic)&&n.all(t.constraints,function(n){returnn.call(t.context,i.data,i)})&&"function"==typeoft.callback&&t.callback.call(t.context,i.data,i)},a=0,h=[],l=function(){for(;h.length;)h.shift().unsubscribe()},b={addWireTap:function(n){vart=this;returnt.wireTaps.push(n),function(){vari=t.wireTaps.indexOf(n);-1!==i&&t.wireTaps.splice(i,1)}},publish:function(t){return++a,t.timeStamp=newDate,n.each(this.wireTaps,function(n){n(t.data,t)}),this.subscriptions[t.channel]&&n.each(this.subscriptions[t.channel],function(n){for(vari,s=0,e=n.length;e>s;)(i=n[s++])&&o(i,t)}),0===--a&&l(),t},reset:function(){this.subscriptions&&(n.each(this.subscriptions,function(t){n.each(t,function(n){for(;n.length;)n.pop().unsubscribe()})}),this.subscriptions={})},subscribe:function(n){vart,i=this.subscriptions[n.channel];returni||(i=this.subscriptions[n.channel]={}),t=this.subscriptions[n.channel][n.topic],t||(t=this.subscriptions[n.channel][n.topic]=[]),t.push(n),n},subscriptions:{},wireTaps:[],unsubscribe:function(n){if(a)returnh.push(n),undefined;if