Skip to content

Instantly share code, notes, and snippets.

@artemave
Last active August 29, 2015 14:20
Show Gist options
  • Save artemave/12120d41a12bb90e7c62 to your computer and use it in GitHub Desktop.
Save artemave/12120d41a12bb90e7c62 to your computer and use it in GitHub Desktop.
requirebin sketch
sinon = require('sinon');
sinon.spy(window, 'WebSocket')
// throws an error (see console)
new window.WebSocket("ws://example.com")
var a = {
b: function() {}
}
// works
sinon.spy(a, 'b')
new a.b()
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],2:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canMutationObserver=typeof window!=="undefined"&&window.MutationObserver;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}var queue=[];if(canMutationObserver){var hiddenDiv=document.createElement("div");var observer=new MutationObserver(function(){var queueList=queue.slice();queue.length=0;queueList.forEach(function(fn){fn()})});observer.observe(hiddenDiv,{attributes:true});return function nextTick(fn){if(!queue.length){hiddenDiv.setAttribute("yes","no")}queue.push(fn)}}if(canPost){window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],3:[function(require,module,exports){module.exports=function isBuffer(arg){return arg&&typeof arg==="object"&&typeof arg.copy==="function"&&typeof arg.fill==="function"&&typeof arg.readUInt8==="function"}},{}],4:[function(require,module,exports){(function(process,global){var formatRegExp=/%[sdj%]/g;exports.format=function(f){if(!isString(f)){var objects=[];for(var i=0;i<arguments.length;i++){objects.push(inspect(arguments[i]))}return objects.join(" ")}var i=1;var args=arguments;var len=args.length;var str=String(f).replace(formatRegExp,function(x){if(x==="%%")return"%";if(i>=len)return x;switch(x){case"%s":return String(args[i++]);case"%d":return Number(args[i++]);case"%j":try{return JSON.stringify(args[i++])}catch(_){return"[Circular]"}default:return x}});for(var x=args[i];i<len;x=args[++i]){if(isNull(x)||!isObject(x)){str+=" "+x}else{str+=" "+inspect(x)}}return str};exports.deprecate=function(fn,msg){if(isUndefined(global.process)){return function(){return exports.deprecate(fn,msg).apply(this,arguments)}}if(process.noDeprecation===true){return fn}var warned=false;function deprecated(){if(!warned){if(process.throwDeprecation){throw new Error(msg)}else if(process.traceDeprecation){console.trace(msg)}else{console.error(msg)}warned=true}return fn.apply(this,arguments)}return deprecated};var debugs={};var debugEnviron;exports.debuglog=function(set){if(isUndefined(debugEnviron))debugEnviron=process.env.NODE_DEBUG||"";set=set.toUpperCase();if(!debugs[set]){if(new RegExp("\\b"+set+"\\b","i").test(debugEnviron)){var pid=process.pid;debugs[set]=function(){var msg=exports.format.apply(exports,arguments);console.error("%s %d: %s",set,pid,msg)}}else{debugs[set]=function(){}}}return debugs[set]};function inspect(obj,opts){var ctx={seen:[],stylize:stylizeNoColor};if(arguments.length>=3)ctx.depth=arguments[2];if(arguments.length>=4)ctx.colors=arguments[3];if(isBoolean(opts)){ctx.showHidden=opts}else if(opts){exports._extend(ctx,opts)}if(isUndefined(ctx.showHidden))ctx.showHidden=false;if(isUndefined(ctx.depth))ctx.depth=2;if(isUndefined(ctx.colors))ctx.colors=false;if(isUndefined(ctx.customInspect))ctx.customInspect=true;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth)}exports.inspect=inspect;inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};inspect.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"};function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];if(style){return"["+inspect.colors[style][0]+"m"+str+"["+inspect.colors[style][1]+"m"}else{return str}}function stylizeNoColor(str,styleType){return str}function arrayToHash(array){var hash={};array.forEach(function(val,idx){hash[val]=true});return hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==exports.inspect&&!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret)){ret=formatValue(ctx,ret,recurseTimes)}return ret}var primitive=formatPrimitive(ctx,value);if(primitive){return primitive}var keys=Object.keys(value);var visibleKeys=arrayToHash(keys);if(ctx.showHidden){keys=Object.getOwnPropertyNames(value)}if(isError(value)&&(keys.indexOf("message")>=0||keys.indexOf("description")>=0)){return formatError(value)}if(keys.length===0){if(isFunction(value)){var name=value.name?": "+value.name:"";return ctx.stylize("[Function"+name+"]","special")}if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}if(isDate(value)){return ctx.stylize(Date.prototype.toString.call(value),"date")}if(isError(value)){return formatError(value)}}var base="",array=false,braces=["{","}"];if(isArray(value)){array=true;braces=["[","]"]}if(isFunction(value)){var n=value.name?": "+value.name:"";base=" [Function"+n+"]"}if(isRegExp(value)){base=" "+RegExp.prototype.toString.call(value)}if(isDate(value)){base=" "+Date.prototype.toUTCString.call(value)}if(isError(value)){base=" "+formatError(value)}if(keys.length===0&&(!array||value.length==0)){return braces[0]+base+braces[1]}if(recurseTimes<0){if(isRegExp(value)){return ctx.stylize(RegExp.prototype.toString.call(value),"regexp")}else{return ctx.stylize("[Object]","special")}}ctx.seen.push(value);var output;if(array){output=formatArray(ctx,value,recurseTimes,visibleKeys,keys)}else{output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)})}ctx.seen.pop();return reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize("undefined","undefined");if(isString(value)){var simple="'"+JSON.stringify(value).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return ctx.stylize(simple,"string")}if(isNumber(value))return ctx.stylize(""+value,"number");if(isBoolean(value))return ctx.stylize(""+value,"boolean");if(isNull(value))return ctx.stylize("null","null")}function formatError(value){return"["+Error.prototype.toString.call(value)+"]"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i<l;++i){if(hasOwnProperty(value,String(i))){output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,String(i),true))}else{output.push("")}}keys.forEach(function(key){if(!key.match(/^\d+$/)){output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,key,true))}});return output}function formatProperty(ctx,value,recurseTimes,visibleKeys,key,array){var name,str,desc;desc=Object.getOwnPropertyDescriptor(value,key)||{value:value[key]};if(desc.get){if(desc.set){str=ctx.stylize("[Getter/Setter]","special")}else{str=ctx.stylize("[Getter]","special")}}else{if(desc.set){str=ctx.stylize("[Setter]","special")}}if(!hasOwnProperty(visibleKeys,key)){name="["+key+"]"}if(!str){if(ctx.seen.indexOf(desc.value)<0){if(isNull(recurseTimes)){str=formatValue(ctx,desc.value,null)}else{str=formatValue(ctx,desc.value,recurseTimes-1)}if(str.indexOf("\n")>-1){if(array){str=str.split("\n").map(function(line){return" "+line}).join("\n").substr(2)}else{str="\n"+str.split("\n").map(function(line){return" "+line}).join("\n")}}}else{str=ctx.stylize("[Circular]","special")}}if(isUndefined(name)){if(array&&key.match(/^\d+$/)){return str}name=JSON.stringify(""+key);if(name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)){name=name.substr(1,name.length-2);name=ctx.stylize(name,"name")}else{name=name.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'");name=ctx.stylize(name,"string")}}return name+": "+str}function reduceToSingleString(output,base,braces){var numLinesEst=0;var length=output.reduce(function(prev,cur){numLinesEst++;if(cur.indexOf("\n")>=0)numLinesEst++;return prev+cur.replace(/\u001b\[\d\d?m/g,"").length+1},0);if(length>60){return braces[0]+(base===""?"":base+"\n ")+" "+output.join(",\n ")+" "+braces[1]}return braces[0]+base+" "+output.join(", ")+" "+braces[1]}function isArray(ar){return Array.isArray(ar)}exports.isArray=isArray;function isBoolean(arg){return typeof arg==="boolean"}exports.isBoolean=isBoolean;function isNull(arg){return arg===null}exports.isNull=isNull;function isNullOrUndefined(arg){return arg==null}exports.isNullOrUndefined=isNullOrUndefined;function isNumber(arg){return typeof arg==="number"}exports.isNumber=isNumber;function isString(arg){return typeof arg==="string"}exports.isString=isString;function isSymbol(arg){return typeof arg==="symbol"}exports.isSymbol=isSymbol;function isUndefined(arg){return arg===void 0}exports.isUndefined=isUndefined;function isRegExp(re){return isObject(re)&&objectToString(re)==="[object RegExp]"}exports.isRegExp=isRegExp;function isObject(arg){return typeof arg==="object"&&arg!==null}exports.isObject=isObject;function isDate(d){return isObject(d)&&objectToString(d)==="[object Date]"}exports.isDate=isDate;function isError(e){return isObject(e)&&(objectToString(e)==="[object Error]"||e instanceof Error)}exports.isError=isError;function isFunction(arg){return typeof arg==="function"}exports.isFunction=isFunction;function isPrimitive(arg){return arg===null||typeof arg==="boolean"||typeof arg==="number"||typeof arg==="string"||typeof arg==="symbol"||typeof arg==="undefined"}exports.isPrimitive=isPrimitive;exports.isBuffer=require("./support/isBuffer");function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return n<10?"0"+n.toString(10):n.toString(10)}var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function timestamp(){var d=new Date;var time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(":");return[d.getDate(),months[d.getMonth()],time].join(" ")}exports.log=function(){console.log("%s - %s",timestamp(),exports.format.apply(exports,arguments))};exports.inherits=require("inherits");exports._extend=function(origin,add){if(!add||!isObject(add))return origin;var keys=Object.keys(add);var i=keys.length;while(i--){origin[keys[i]]=add[keys[i]]}return origin};function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./support/isBuffer":3,_process:2,inherits:1}],5:[function(require,module,exports){(function(global){"use strict";(function(sinon,global){var slice=Array.prototype.slice;function makeApi(sinon){var assert;function verifyIsStub(){var method;for(var i=0,l=arguments.length;i<l;++i){method=arguments[i];if(!method){assert.fail("fake is not a spy")}if(method.proxy){verifyIsStub(method.proxy)}else{if(typeof method!="function"){assert.fail(method+" is not a function")}if(typeof method.getCall!="function"){assert.fail(method+" is not stubbed")}}}}function failAssertion(object,msg){object=object||global;var failMethod=object.fail||assert.fail;failMethod.call(object,msg)}function mirrorPropAsAssertion(name,method,message){if(arguments.length==2){message=method;method=name}assert[name]=function(fake){verifyIsStub(fake);var args=slice.call(arguments,1);var failed=false;if(typeof method=="function"){failed=!method(fake)}else{failed=typeof fake[method]=="function"?!fake[method].apply(fake,args):!fake[method]}if(failed){failAssertion(this,(fake.printf||fake.proxy.printf).apply(fake,[message].concat(args)))}else{assert.pass(name)}}}function exposedName(prefix,prop){return!prefix||/^fail/.test(prop)?prop:prefix+prop.slice(0,1).toUpperCase()+prop.slice(1)}assert={failException:"AssertError",fail:function fail(message){var error=new Error(message);error.name=this.failException||assert.failException;throw error},pass:function pass(assertion){},callOrder:function assertCallOrder(){verifyIsStub.apply(null,arguments);var expected="",actual="";if(!sinon.calledInOrder(arguments)){try{expected=[].join.call(arguments,", ");var calls=slice.call(arguments);var i=calls.length;while(i){if(!calls[--i].called){calls.splice(i,1)}}actual=sinon.orderByFirstCall(calls).join(", ")}catch(e){}failAssertion(this,"expected "+expected+" to be "+"called in order but were called as "+actual)}else{assert.pass("callOrder")}},callCount:function assertCallCount(method,count){verifyIsStub(method);if(method.callCount!=count){var msg="expected %n to be called "+sinon.timesInWords(count)+" but was called %c%C";failAssertion(this,method.printf(msg))}else{assert.pass("callCount")}},expose:function expose(target,options){if(!target){throw new TypeError("target is null or undefined")}var o=options||{};var prefix=typeof o.prefix=="undefined"&&"assert"||o.prefix;var includeFail=typeof o.includeFail=="undefined"||!!o.includeFail;for(var method in this){if(method!="expose"&&(includeFail||!/^(fail)/.test(method))){target[exposedName(prefix,method)]=this[method]}}return target},match:function match(actual,expectation){var matcher=sinon.match(expectation);if(matcher.test(actual)){assert.pass("match")}else{var formatted=["expected value to match"," expected = "+sinon.format(expectation)," actual = "+sinon.format(actual)];failAssertion(this,formatted.join("\n"))}}};mirrorPropAsAssertion("called","expected %n to have been called at least once but was never called");mirrorPropAsAssertion("notCalled",function(spy){return!spy.called},"expected %n to not have been called but was called %c%C");mirrorPropAsAssertion("calledOnce","expected %n to be called once but was called %c%C");mirrorPropAsAssertion("calledTwice","expected %n to be called twice but was called %c%C");mirrorPropAsAssertion("calledThrice","expected %n to be called thrice but was called %c%C");mirrorPropAsAssertion("calledOn","expected %n to be called with %1 as this but was called with %t");mirrorPropAsAssertion("alwaysCalledOn","expected %n to always be called with %1 as this but was called with %t");mirrorPropAsAssertion("calledWithNew","expected %n to be called with new");mirrorPropAsAssertion("alwaysCalledWithNew","expected %n to always be called with new");mirrorPropAsAssertion("calledWith","expected %n to be called with arguments %*%C");mirrorPropAsAssertion("calledWithMatch","expected %n to be called with match %*%C");mirrorPropAsAssertion("alwaysCalledWith","expected %n to always be called with arguments %*%C");mirrorPropAsAssertion("alwaysCalledWithMatch","expected %n to always be called with match %*%C");mirrorPropAsAssertion("calledWithExactly","expected %n to be called with exact arguments %*%C");mirrorPropAsAssertion("alwaysCalledWithExactly","expected %n to always be called with exact arguments %*%C");mirrorPropAsAssertion("neverCalledWith","expected %n to never be called with arguments %*%C");mirrorPropAsAssertion("neverCalledWithMatch","expected %n to never be called with match %*%C");mirrorPropAsAssertion("threw","%n did not throw exception%C");mirrorPropAsAssertion("alwaysThrew","%n did not always throw exception%C");sinon.assert=assert;return assert}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./match");require("./format");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null,typeof window!="undefined"?window:typeof self!="undefined"?self:global)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./format":10,"./match":12,"./util/core":21}],6:[function(require,module,exports){(function(process){"use strict";(function(sinon){var slice=Array.prototype.slice;var join=Array.prototype.join;var useLeftMostCallback=-1;var useRightMostCallback=-2;var nextTick=function(){if(typeof process==="object"&&typeof process.nextTick==="function"){return process.nextTick}else if(typeof setImmediate==="function"){return setImmediate}else{return function(callback){setTimeout(callback,0)}}}();function throwsException(error,message){if(typeof error=="string"){this.exception=new Error(message||"");this.exception.name=error}else if(!error){this.exception=new Error("Error")}else{this.exception=error}return this}function getCallback(behavior,args){var callArgAt=behavior.callArgAt;if(callArgAt>=0){return args[callArgAt]}var argumentList;if(callArgAt===useLeftMostCallback){argumentList=args}if(callArgAt===useRightMostCallback){argumentList=slice.call(args).reverse()}var callArgProp=behavior.callArgProp;for(var i=0,l=argumentList.length;i<l;++i){if(!callArgProp&&typeof argumentList[i]=="function"){return argumentList[i]}if(callArgProp&&argumentList[i]&&typeof argumentList[i][callArgProp]=="function"){return argumentList[i][callArgProp]}}return null}function makeApi(sinon){function getCallbackError(behavior,func,args){if(behavior.callArgAt<0){var msg;if(behavior.callArgProp){msg=sinon.functionName(behavior.stub)+" expected to yield to '"+behavior.callArgProp+"', but no object with such a property was passed."}else{msg=sinon.functionName(behavior.stub)+" expected to yield, but no callback was passed."}if(args.length>0){msg+=" Received ["+join.call(args,", ")+"]"}return msg}return"argument at index "+behavior.callArgAt+" is not a function: "+func}function callCallback(behavior,args){if(typeof behavior.callArgAt=="number"){var func=getCallback(behavior,args);if(typeof func!="function"){throw new TypeError(getCallbackError(behavior,func,args))}if(behavior.callbackAsync){nextTick(function(){func.apply(behavior.callbackContext,behavior.callbackArguments)})}else{func.apply(behavior.callbackContext,behavior.callbackArguments)}}}var proto={create:function create(stub){var behavior=sinon.extend({},sinon.behavior);delete behavior.create;behavior.stub=stub;return behavior},isPresent:function isPresent(){return typeof this.callArgAt=="number"||this.exception||typeof this.returnArgAt=="number"||this.returnThis||this.returnValueDefined},invoke:function invoke(context,args){callCallback(this,args);if(this.exception){throw this.exception}else if(typeof this.returnArgAt=="number"){return args[this.returnArgAt]}else if(this.returnThis){return context}return this.returnValue},onCall:function onCall(index){return this.stub.onCall(index)},onFirstCall:function onFirstCall(){return this.stub.onFirstCall()},onSecondCall:function onSecondCall(){return this.stub.onSecondCall()},onThirdCall:function onThirdCall(){return this.stub.onThirdCall()},withArgs:function withArgs(){throw new Error('Defining a stub by invoking "stub.onCall(...).withArgs(...)" is not supported. '+'Use "stub.withArgs(...).onCall(...)" to define sequential behavior for calls with certain arguments.')},callsArg:function callsArg(pos){if(typeof pos!="number"){throw new TypeError("argument index is not number")}this.callArgAt=pos;this.callbackArguments=[];this.callbackContext=undefined;this.callArgProp=undefined;this.callbackAsync=false;return this},callsArgOn:function callsArgOn(pos,context){if(typeof pos!="number"){throw new TypeError("argument index is not number")}if(typeof context!="object"){throw new TypeError("argument context is not an object")}this.callArgAt=pos;this.callbackArguments=[];this.callbackContext=context;this.callArgProp=undefined;this.callbackAsync=false;return this},callsArgWith:function callsArgWith(pos){if(typeof pos!="number"){throw new TypeError("argument index is not number")}this.callArgAt=pos;this.callbackArguments=slice.call(arguments,1);this.callbackContext=undefined;this.callArgProp=undefined;this.callbackAsync=false;return this},callsArgOnWith:function callsArgWith(pos,context){if(typeof pos!="number"){throw new TypeError("argument index is not number")}if(typeof context!="object"){throw new TypeError("argument context is not an object")}this.callArgAt=pos;this.callbackArguments=slice.call(arguments,2);this.callbackContext=context;this.callArgProp=undefined;this.callbackAsync=false;return this},yields:function(){this.callArgAt=useLeftMostCallback;this.callbackArguments=slice.call(arguments,0);this.callbackContext=undefined;this.callArgProp=undefined;this.callbackAsync=false;return this},yieldsRight:function(){this.callArgAt=useRightMostCallback;this.callbackArguments=slice.call(arguments,0);this.callbackContext=undefined;this.callArgProp=undefined;this.callbackAsync=false;return this},yieldsOn:function(context){if(typeof context!="object"){throw new TypeError("argument context is not an object")}this.callArgAt=useLeftMostCallback;this.callbackArguments=slice.call(arguments,1);this.callbackContext=context;this.callArgProp=undefined;this.callbackAsync=false;return this},yieldsTo:function(prop){this.callArgAt=useLeftMostCallback;this.callbackArguments=slice.call(arguments,1);this.callbackContext=undefined;this.callArgProp=prop;this.callbackAsync=false;return this},yieldsToOn:function(prop,context){if(typeof context!="object"){throw new TypeError("argument context is not an object")}this.callArgAt=useLeftMostCallback;this.callbackArguments=slice.call(arguments,2);this.callbackContext=context;this.callArgProp=prop;this.callbackAsync=false;return this},"throws":throwsException,throwsException:throwsException,returns:function returns(value){this.returnValue=value;this.returnValueDefined=true;return this},returnsArg:function returnsArg(pos){if(typeof pos!="number"){throw new TypeError("argument index is not number")}this.returnArgAt=pos;return this},returnsThis:function returnsThis(){this.returnThis=true;return this}};for(var method in proto){if(proto.hasOwnProperty(method)&&method.match(/^(callsArg|yields)/)&&!method.match(/Async/)){proto[method+"Async"]=function(syncFnName){return function(){var result=this[syncFnName].apply(this,arguments);this.callbackAsync=true;return result}}(method)}}sinon.behavior=proto;return proto}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./extend");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)}).call(this,require("_process"))},{"./extend":9,"./util/core":21,_process:2}],7:[function(require,module,exports){"use strict";(function(sinon){function makeApi(sinon){function throwYieldError(proxy,text,args){var msg=sinon.functionName(proxy)+text;if(args.length){msg+=" Received ["+slice.call(args).join(", ")+"]"}throw new Error(msg)}var slice=Array.prototype.slice;var callProto={calledOn:function calledOn(thisValue){if(sinon.match&&sinon.match.isMatcher(thisValue)){return thisValue.test(this.thisValue)}return this.thisValue===thisValue},calledWith:function calledWith(){var l=arguments.length;if(l>this.args.length){return false}for(var i=0;i<l;i+=1){if(!sinon.deepEqual(arguments[i],this.args[i])){return false}}return true},calledWithMatch:function calledWithMatch(){var l=arguments.length;if(l>this.args.length){return false}for(var i=0;i<l;i+=1){var actual=this.args[i];var expectation=arguments[i];if(!sinon.match||!sinon.match(expectation).test(actual)){return false}}return true},calledWithExactly:function calledWithExactly(){return arguments.length==this.args.length&&this.calledWith.apply(this,arguments)},notCalledWith:function notCalledWith(){return!this.calledWith.apply(this,arguments)},notCalledWithMatch:function notCalledWithMatch(){return!this.calledWithMatch.apply(this,arguments)},returned:function returned(value){return sinon.deepEqual(value,this.returnValue)},threw:function threw(error){if(typeof error==="undefined"||!this.exception){return!!this.exception}return this.exception===error||this.exception.name===error},calledWithNew:function calledWithNew(){return this.proxy.prototype&&this.thisValue instanceof this.proxy},calledBefore:function(other){return this.callId<other.callId},calledAfter:function(other){return this.callId>other.callId},callArg:function(pos){this.args[pos]()},callArgOn:function(pos,thisValue){this.args[pos].apply(thisValue)},callArgWith:function(pos){this.callArgOnWith.apply(this,[pos,null].concat(slice.call(arguments,1)))},callArgOnWith:function(pos,thisValue){var args=slice.call(arguments,2);this.args[pos].apply(thisValue,args)},"yield":function(){this.yieldOn.apply(this,[null].concat(slice.call(arguments,0)))},yieldOn:function(thisValue){var args=this.args;for(var i=0,l=args.length;i<l;++i){if(typeof args[i]==="function"){args[i].apply(thisValue,slice.call(arguments,1));return}}throwYieldError(this.proxy," cannot yield since no callback was passed.",args)},yieldTo:function(prop){this.yieldToOn.apply(this,[prop,null].concat(slice.call(arguments,1)))},yieldToOn:function(prop,thisValue){var args=this.args;for(var i=0,l=args.length;i<l;++i){if(args[i]&&typeof args[i][prop]==="function"){args[i][prop].apply(thisValue,slice.call(arguments,2));return}}throwYieldError(this.proxy," cannot yield to '"+prop+"' since no callback was passed.",args)},toString:function(){var callStr=this.proxy.toString()+"(";var args=[];for(var i=0,l=this.args.length;i<l;++i){args.push(sinon.format(this.args[i]))}callStr=callStr+args.join(", ")+")";if(typeof this.returnValue!="undefined"){callStr+=" => "+sinon.format(this.returnValue)}if(this.exception){callStr+=" !"+this.exception.name;if(this.exception.message){callStr+="("+this.exception.message+")"}}return callStr}};callProto.invokeCallback=callProto.yield;function createSpyCall(spy,thisValue,args,returnValue,exception,id){if(typeof id!=="number"){throw new TypeError("Call id is not a number")}var proxyCall=sinon.create(callProto);proxyCall.proxy=spy;proxyCall.thisValue=thisValue;proxyCall.args=args;proxyCall.returnValue=returnValue;proxyCall.exception=exception;proxyCall.callId=id;return proxyCall}createSpyCall.toString=callProto.toString;sinon.spyCall=createSpyCall;return createSpyCall}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./match");require("./format");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./format":10,"./match":12,"./util/core":21}],8:[function(require,module,exports){"use strict";(function(sinon){var push=[].push;var hasOwnProperty=Object.prototype.hasOwnProperty;function getFakes(fakeCollection){if(!fakeCollection.fakes){fakeCollection.fakes=[]}return fakeCollection.fakes}function each(fakeCollection,method){var fakes=getFakes(fakeCollection);for(var i=0,l=fakes.length;i<l;i+=1){if(typeof fakes[i][method]=="function"){fakes[i][method]()}}}function compact(fakeCollection){var fakes=getFakes(fakeCollection);var i=0;while(i<fakes.length){fakes.splice(i,1)}}function makeApi(sinon){var collection={verify:function resolve(){each(this,"verify")},restore:function restore(){each(this,"restore");compact(this)},reset:function restore(){each(this,"reset")},verifyAndRestore:function verifyAndRestore(){var exception;try{this.verify()}catch(e){exception=e}this.restore();if(exception){throw exception}},add:function add(fake){push.call(getFakes(this),fake);return fake},spy:function spy(){return this.add(sinon.spy.apply(sinon,arguments))},stub:function stub(object,property,value){if(property){var original=object[property];if(typeof original!="function"){if(!hasOwnProperty.call(object,property)){throw new TypeError("Cannot stub non-existent own property "+property)}object[property]=value;return this.add({restore:function(){object[property]=original}})}}if(!property&&!!object&&typeof object=="object"){var stubbedObj=sinon.stub.apply(sinon,arguments);for(var prop in stubbedObj){if(typeof stubbedObj[prop]==="function"){this.add(stubbedObj[prop])}}return stubbedObj}return this.add(sinon.stub.apply(sinon,arguments))},mock:function mock(){return this.add(sinon.mock.apply(sinon,arguments))},inject:function inject(obj){var col=this;obj.spy=function(){return col.spy.apply(col,arguments)};obj.stub=function(){return col.stub.apply(col,arguments)};obj.mock=function(){return col.mock.apply(col,arguments)};return obj}};sinon.collection=collection;return collection}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./mock");require("./spy");require("./stub");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./mock":13,"./spy":15,"./stub":16,"./util/core":21}],9:[function(require,module,exports){"use strict";(function(sinon){function makeApi(sinon){var hasDontEnumBug=function(){var obj={constructor:function(){return"0"},toString:function(){return"1"},valueOf:function(){return"2"},toLocaleString:function(){return"3"},prototype:function(){return"4"},isPrototypeOf:function(){return"5"},propertyIsEnumerable:function(){return"6"},hasOwnProperty:function(){return"7"},length:function(){return"8"},unique:function(){return"9"}};var result=[];for(var prop in obj){result.push(obj[prop]())}return result.join("")!=="0123456789"}();function extend(target){var sources=Array.prototype.slice.call(arguments,1),source,i,prop;for(i=0;i<sources.length;i++){source=sources[i];for(prop in source){if(source.hasOwnProperty(prop)){target[prop]=source[prop]}}if(hasDontEnumBug&&source.hasOwnProperty("toString")&&source.toString!==target.toString){target.toString=source.toString}}return target}sinon.extend=extend;return sinon.extend}function loadDependencies(require,exports,module){var sinon=require("./util/core");module.exports=makeApi(sinon)}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;if(isAMD){define(loadDependencies);
}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./util/core":21}],10:[function(require,module,exports){"use strict";(function(sinon,formatio){function makeApi(sinon){function valueFormatter(value){return""+value}function getFormatioFormatter(){var formatter=formatio.configure({quoteStrings:false,limitChildrenCount:250});function format(){return formatter.ascii.apply(formatter,arguments)}return format}function getNodeFormatter(value){function format(value){return typeof value=="object"&&value.toString===Object.prototype.toString?util.inspect(value):value}try{var util=require("util")}catch(e){}return util?format:valueFormatter}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function",formatter;if(isNode){try{formatio=require("formatio")}catch(e){}}if(formatio){formatter=getFormatioFormatter()}else if(isNode){formatter=getNodeFormatter()}else{formatter=valueFormatter}sinon.format=formatter;return sinon.format}function loadDependencies(require,exports,module){var sinon=require("./util/core");module.exports=makeApi(sinon)}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null,typeof formatio=="object"&&formatio)},{"./util/core":21,formatio:28,util:4}],11:[function(require,module,exports){"use strict";(function(sinon){var realSetTimeout=setTimeout;function makeApi(sinon){function log(){}function logError(label,err){var msg=label+" threw exception: ";sinon.log(msg+"["+err.name+"] "+err.message);if(err.stack){sinon.log(err.stack)}logError.setTimeout(function(){err.message=msg+err.message;throw err},0)}logError.setTimeout=function(func,timeout){realSetTimeout(func,timeout)};var exports={};exports.log=sinon.log=log;exports.logError=sinon.logError=logError;return exports}function loadDependencies(require,exports,module){var sinon=require("./util/core");module.exports=makeApi(sinon)}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./util/core":21}],12:[function(require,module,exports){"use strict";(function(sinon){function makeApi(sinon){function assertType(value,type,name){var actual=sinon.typeOf(value);if(actual!==type){throw new TypeError("Expected type of "+name+" to be "+type+", but was "+actual)}}var matcher={toString:function(){return this.message}};function isMatcher(object){return matcher.isPrototypeOf(object)}function matchObject(expectation,actual){if(actual===null||actual===undefined){return false}for(var key in expectation){if(expectation.hasOwnProperty(key)){var exp=expectation[key];var act=actual[key];if(match.isMatcher(exp)){if(!exp.test(act)){return false}}else if(sinon.typeOf(exp)==="object"){if(!matchObject(exp,act)){return false}}else if(!sinon.deepEqual(exp,act)){return false}}}return true}matcher.or=function(m2){if(!arguments.length){throw new TypeError("Matcher expected")}else if(!isMatcher(m2)){m2=match(m2)}var m1=this;var or=sinon.create(matcher);or.test=function(actual){return m1.test(actual)||m2.test(actual)};or.message=m1.message+".or("+m2.message+")";return or};matcher.and=function(m2){if(!arguments.length){throw new TypeError("Matcher expected")}else if(!isMatcher(m2)){m2=match(m2)}var m1=this;var and=sinon.create(matcher);and.test=function(actual){return m1.test(actual)&&m2.test(actual)};and.message=m1.message+".and("+m2.message+")";return and};var match=function(expectation,message){var m=sinon.create(matcher);var type=sinon.typeOf(expectation);switch(type){case"object":if(typeof expectation.test==="function"){m.test=function(actual){return expectation.test(actual)===true};m.message="match("+sinon.functionName(expectation.test)+")";return m}var str=[];for(var key in expectation){if(expectation.hasOwnProperty(key)){str.push(key+": "+expectation[key])}}m.test=function(actual){return matchObject(expectation,actual)};m.message="match("+str.join(", ")+")";break;case"number":m.test=function(actual){return expectation==actual};break;case"string":m.test=function(actual){if(typeof actual!=="string"){return false}return actual.indexOf(expectation)!==-1};m.message='match("'+expectation+'")';break;case"regexp":m.test=function(actual){if(typeof actual!=="string"){return false}return expectation.test(actual)};break;case"function":m.test=expectation;if(message){m.message=message}else{m.message="match("+sinon.functionName(expectation)+")"}break;default:m.test=function(actual){return sinon.deepEqual(expectation,actual)}}if(!m.message){m.message="match("+expectation+")"}return m};match.isMatcher=isMatcher;match.any=match(function(){return true},"any");match.defined=match(function(actual){return actual!==null&&actual!==undefined},"defined");match.truthy=match(function(actual){return!!actual},"truthy");match.falsy=match(function(actual){return!actual},"falsy");match.same=function(expectation){return match(function(actual){return expectation===actual},"same("+expectation+")")};match.typeOf=function(type){assertType(type,"string","type");return match(function(actual){return sinon.typeOf(actual)===type},'typeOf("'+type+'")')};match.instanceOf=function(type){assertType(type,"function","type");return match(function(actual){return actual instanceof type},"instanceOf("+sinon.functionName(type)+")")};function createPropertyMatcher(propertyTest,messagePrefix){return function(property,value){assertType(property,"string","property");var onlyProperty=arguments.length===1;var message=messagePrefix+'("'+property+'"';if(!onlyProperty){message+=", "+value}message+=")";return match(function(actual){if(actual===undefined||actual===null||!propertyTest(actual,property)){return false}return onlyProperty||sinon.deepEqual(value,actual[property])},message)}}match.has=createPropertyMatcher(function(actual,property){if(typeof actual==="object"){return property in actual}return actual[property]!==undefined},"has");match.hasOwn=createPropertyMatcher(function(actual,property){return actual.hasOwnProperty(property)},"hasOwn");match.bool=match.typeOf("boolean");match.number=match.typeOf("number");match.string=match.typeOf("string");match.object=match.typeOf("object");match.func=match.typeOf("function");match.array=match.typeOf("array");match.regexp=match.typeOf("regexp");match.date=match.typeOf("date");sinon.match=match;return match}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./typeOf");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./typeOf":20,"./util/core":21}],13:[function(require,module,exports){"use strict";(function(sinon){function makeApi(sinon){var push=[].push;var match=sinon.match;function mock(object){if(!object){return sinon.expectation.create("Anonymous mock")}return mock.create(object)}function each(collection,callback){if(!collection){return}for(var i=0,l=collection.length;i<l;i+=1){callback(collection[i])}}sinon.extend(mock,{create:function create(object){if(!object){throw new TypeError("object is null")}var mockObject=sinon.extend({},mock);mockObject.object=object;delete mockObject.create;return mockObject},expects:function expects(method){if(!method){throw new TypeError("method is falsy")}if(!this.expectations){this.expectations={};this.proxies=[]}if(!this.expectations[method]){this.expectations[method]=[];var mockObject=this;sinon.wrapMethod(this.object,method,function(){return mockObject.invokeMethod(method,this,arguments)});push.call(this.proxies,method)}var expectation=sinon.expectation.create(method);push.call(this.expectations[method],expectation);return expectation},restore:function restore(){var object=this.object;each(this.proxies,function(proxy){if(typeof object[proxy].restore=="function"){object[proxy].restore()}})},verify:function verify(){var expectations=this.expectations||{};var messages=[],met=[];each(this.proxies,function(proxy){each(expectations[proxy],function(expectation){if(!expectation.met()){push.call(messages,expectation.toString())}else{push.call(met,expectation.toString())}})});this.restore();if(messages.length>0){sinon.expectation.fail(messages.concat(met).join("\n"))}else if(met.length>0){sinon.expectation.pass(messages.concat(met).join("\n"))}return true},invokeMethod:function invokeMethod(method,thisValue,args){var expectations=this.expectations&&this.expectations[method];var length=expectations&&expectations.length||0,i;for(i=0;i<length;i+=1){if(!expectations[i].met()&&expectations[i].allowsCall(thisValue,args)){return expectations[i].apply(thisValue,args)}}var messages=[],available,exhausted=0;for(i=0;i<length;i+=1){if(expectations[i].allowsCall(thisValue,args)){available=available||expectations[i]}else{exhausted+=1}push.call(messages," "+expectations[i].toString())}if(exhausted===0){return available.apply(thisValue,args)}messages.unshift("Unexpected call: "+sinon.spyCall.toString.call({proxy:method,args:args}));sinon.expectation.fail(messages.join("\n"))}});var times=sinon.timesInWords;var slice=Array.prototype.slice;function callCountInWords(callCount){if(callCount==0){return"never called"}else{return"called "+times(callCount)}}function expectedCallCountInWords(expectation){var min=expectation.minCalls;var max=expectation.maxCalls;if(typeof min=="number"&&typeof max=="number"){var str=times(min);if(min!=max){str="at least "+str+" and at most "+times(max)}return str}if(typeof min=="number"){return"at least "+times(min)}return"at most "+times(max)}function receivedMinCalls(expectation){var hasMinLimit=typeof expectation.minCalls=="number";return!hasMinLimit||expectation.callCount>=expectation.minCalls}function receivedMaxCalls(expectation){if(typeof expectation.maxCalls!="number"){return false}return expectation.callCount==expectation.maxCalls}function verifyMatcher(possibleMatcher,arg){if(match&&match.isMatcher(possibleMatcher)){return possibleMatcher.test(arg)}else{return true}}sinon.expectation={minCalls:1,maxCalls:1,create:function create(methodName){var expectation=sinon.extend(sinon.stub.create(),sinon.expectation);delete expectation.create;expectation.method=methodName;return expectation},invoke:function invoke(func,thisValue,args){this.verifyCallAllowed(thisValue,args);return sinon.spy.invoke.apply(this,arguments)},atLeast:function atLeast(num){if(typeof num!="number"){throw new TypeError("'"+num+"' is not number")}if(!this.limitsSet){this.maxCalls=null;this.limitsSet=true}this.minCalls=num;return this},atMost:function atMost(num){if(typeof num!="number"){throw new TypeError("'"+num+"' is not number")}if(!this.limitsSet){this.minCalls=null;this.limitsSet=true}this.maxCalls=num;return this},never:function never(){return this.exactly(0)},once:function once(){return this.exactly(1)},twice:function twice(){return this.exactly(2)},thrice:function thrice(){return this.exactly(3)},exactly:function exactly(num){if(typeof num!="number"){throw new TypeError("'"+num+"' is not a number")}this.atLeast(num);return this.atMost(num)},met:function met(){return!this.failed&&receivedMinCalls(this)},verifyCallAllowed:function verifyCallAllowed(thisValue,args){if(receivedMaxCalls(this)){this.failed=true;sinon.expectation.fail(this.method+" already called "+times(this.maxCalls))}if("expectedThis"in this&&this.expectedThis!==thisValue){sinon.expectation.fail(this.method+" called with "+thisValue+" as thisValue, expected "+this.expectedThis)}if(!("expectedArguments"in this)){return}if(!args){sinon.expectation.fail(this.method+" received no arguments, expected "+sinon.format(this.expectedArguments))}if(args.length<this.expectedArguments.length){sinon.expectation.fail(this.method+" received too few arguments ("+sinon.format(args)+"), expected "+sinon.format(this.expectedArguments))}if(this.expectsExactArgCount&&args.length!=this.expectedArguments.length){sinon.expectation.fail(this.method+" received too many arguments ("+sinon.format(args)+"), expected "+sinon.format(this.expectedArguments))}for(var i=0,l=this.expectedArguments.length;i<l;i+=1){if(!verifyMatcher(this.expectedArguments[i],args[i])){sinon.expectation.fail(this.method+" received wrong arguments "+sinon.format(args)+", didn't match "+this.expectedArguments.toString())}if(!sinon.deepEqual(this.expectedArguments[i],args[i])){sinon.expectation.fail(this.method+" received wrong arguments "+sinon.format(args)+", expected "+sinon.format(this.expectedArguments))}}},allowsCall:function allowsCall(thisValue,args){if(this.met()&&receivedMaxCalls(this)){return false}if("expectedThis"in this&&this.expectedThis!==thisValue){return false}if(!("expectedArguments"in this)){return true}args=args||[];if(args.length<this.expectedArguments.length){return false}if(this.expectsExactArgCount&&args.length!=this.expectedArguments.length){return false}for(var i=0,l=this.expectedArguments.length;i<l;i+=1){if(!verifyMatcher(this.expectedArguments[i],args[i])){return false}if(!sinon.deepEqual(this.expectedArguments[i],args[i])){return false}}return true},withArgs:function withArgs(){this.expectedArguments=slice.call(arguments);return this},withExactArgs:function withExactArgs(){this.withArgs.apply(this,arguments);this.expectsExactArgCount=true;return this},on:function on(thisValue){this.expectedThis=thisValue;return this},toString:function(){var args=(this.expectedArguments||[]).slice();if(!this.expectsExactArgCount){push.call(args,"[...]")}var callStr=sinon.spyCall.toString.call({proxy:this.method||"anonymous mock expectation",args:args});var message=callStr.replace(", [...","[, ...")+" "+expectedCallCountInWords(this);if(this.met()){return"Expectation met: "+message}return"Expected "+message+" ("+callCountInWords(this.callCount)+")"},verify:function verify(){if(!this.met()){sinon.expectation.fail(this.toString())}else{sinon.expectation.pass(this.toString())}return true},pass:function pass(message){sinon.assert.pass(message)},fail:function fail(message){var exception=new Error(message);exception.name="ExpectationError";throw exception}};sinon.mock=mock;return mock}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./times_in_words");require("./call");require("./extend");require("./match");require("./spy");require("./stub");require("./format");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./call":7,"./extend":9,"./format":10,"./match":12,"./spy":15,"./stub":16,"./times_in_words":19,"./util/core":21}],14:[function(require,module,exports){"use strict";(function(){function makeApi(sinon){var push=[].push;function exposeValue(sandbox,config,key,value){if(!value){return}if(config.injectInto&&!(key in config.injectInto)){config.injectInto[key]=value;sandbox.injectedKeys.push(key)}else{push.call(sandbox.args,value)}}function prepareSandboxFromConfig(config){var sandbox=sinon.create(sinon.sandbox);if(config.useFakeServer){if(typeof config.useFakeServer=="object"){sandbox.serverPrototype=config.useFakeServer}sandbox.useFakeServer()}if(config.useFakeTimers){if(typeof config.useFakeTimers=="object"){sandbox.useFakeTimers.apply(sandbox,config.useFakeTimers)}else{sandbox.useFakeTimers()}}return sandbox}sinon.sandbox=sinon.extend(sinon.create(sinon.collection),{useFakeTimers:function useFakeTimers(){this.clock=sinon.useFakeTimers.apply(sinon,arguments);return this.add(this.clock)},serverPrototype:sinon.fakeServer,useFakeServer:function useFakeServer(){var proto=this.serverPrototype||sinon.fakeServer;if(!proto||!proto.create){return null}this.server=proto.create();return this.add(this.server)},inject:function(obj){sinon.collection.inject.call(this,obj);if(this.clock){obj.clock=this.clock}if(this.server){obj.server=this.server;obj.requests=this.server.requests}obj.match=sinon.match;return obj},restore:function(){sinon.collection.restore.apply(this,arguments);this.restoreContext()},restoreContext:function(){if(this.injectedKeys){for(var i=0,j=this.injectedKeys.length;i<j;i++){delete this.injectInto[this.injectedKeys[i]]}this.injectedKeys=[]}},create:function(config){if(!config){return sinon.create(sinon.sandbox)}var sandbox=prepareSandboxFromConfig(config);sandbox.args=sandbox.args||[];sandbox.injectedKeys=[];sandbox.injectInto=config.injectInto;var prop,value,exposed=sandbox.inject({});if(config.properties){for(var i=0,l=config.properties.length;i<l;i++){prop=config.properties[i];value=exposed[prop]||prop=="sandbox"&&sandbox;exposeValue(sandbox,config,prop,value)}}else{exposeValue(sandbox,config,"sandbox",value)}return sandbox},match:sinon.match});sinon.sandbox.useFakeXMLHttpRequest=sinon.sandbox.useFakeServer;return sinon.sandbox}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./extend");require("./util/fake_server_with_clock");require("./util/fake_timers");require("./collection");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})()},{"./collection":8,"./extend":9,"./util/core":21,"./util/fake_server_with_clock":24,"./util/fake_timers":25}],15:[function(require,module,exports){"use strict";(function(sinon){function makeApi(sinon){var push=Array.prototype.push;var slice=Array.prototype.slice;var callId=0;function spy(object,property,types){if(!property&&typeof object=="function"){return spy.create(object)}if(!object&&!property){return spy.create(function(){})}if(types){var methodDesc=sinon.getPropertyDescriptor(object,property);for(var i=0;i<types.length;i++){methodDesc[types[i]]=spy.create(methodDesc[types[i]])}return sinon.wrapMethod(object,property,methodDesc)}else{var method=object[property];return sinon.wrapMethod(object,property,spy.create(method))}}function matchingFake(fakes,args,strict){if(!fakes){return}for(var i=0,l=fakes.length;i<l;i++){if(fakes[i].matches(args,strict)){return fakes[i]}}}function incrementCallCount(){this.called=true;this.callCount+=1;this.notCalled=false;this.calledOnce=this.callCount==1;this.calledTwice=this.callCount==2;this.calledThrice=this.callCount==3}function createCallProperties(){this.firstCall=this.getCall(0);this.secondCall=this.getCall(1);this.thirdCall=this.getCall(2);this.lastCall=this.getCall(this.callCount-1)}var vars="a,b,c,d,e,f,g,h,i,j,k,l";function createProxy(func,proxyLength){var p;if(proxyLength){eval("p = (function proxy("+vars.substring(0,proxyLength*2-1)+") { return p.invoke(func, this, slice.call(arguments)); });")}else{p=function proxy(){return p.invoke(func,this,slice.call(arguments))}}return p}var uuid=0;var spyApi={reset:function(){if(this.invoking){var err=new Error("Cannot reset Sinon function while invoking it. "+"Move the call to .reset outside of the callback.");err.name="InvalidResetException";throw err}this.called=false;this.notCalled=true;this.calledOnce=false;this.calledTwice=false;this.calledThrice=false;this.callCount=0;this.firstCall=null;this.secondCall=null;this.thirdCall=null;this.lastCall=null;this.args=[];this.returnValues=[];this.thisValues=[];this.exceptions=[];this.callIds=[];if(this.fakes){for(var i=0;i<this.fakes.length;i++){this.fakes[i].reset()}}return this},create:function create(func,spyLength){var name;if(typeof func!="function"){func=function(){}}else{name=sinon.functionName(func)}if(!spyLength){spyLength=func.length}var proxy=createProxy(func,spyLength);sinon.extend(proxy,spy);delete proxy.create;sinon.extend(proxy,func);proxy.reset();proxy.prototype=func.prototype;proxy.displayName=name||"spy";proxy.toString=sinon.functionToString;proxy.instantiateFake=sinon.spy.create;proxy.id="spy#"+uuid++;return proxy},invoke:function invoke(func,thisValue,args){var matching=matchingFake(this.fakes,args);var exception,returnValue;incrementCallCount.call(this);push.call(this.thisValues,thisValue);push.call(this.args,args);push.call(this.callIds,callId++);createCallProperties.call(this);try{this.invoking=true;if(matching){returnValue=matching.invoke(func,thisValue,args)}else{returnValue=(this.func||func).apply(thisValue,args)}var thisCall=this.getCall(this.callCount-1);if(thisCall.calledWithNew()&&typeof returnValue!=="object"){returnValue=thisValue}}catch(e){exception=e}finally{delete this.invoking}push.call(this.exceptions,exception);push.call(this.returnValues,returnValue);createCallProperties.call(this);if(exception!==undefined){throw exception}return returnValue},named:function named(name){this.displayName=name;return this},getCall:function getCall(i){if(i<0||i>=this.callCount){return null}return sinon.spyCall(this,this.thisValues[i],this.args[i],this.returnValues[i],this.exceptions[i],this.callIds[i])},getCalls:function(){var calls=[];var i;for(i=0;i<this.callCount;i++){calls.push(this.getCall(i))}return calls},calledBefore:function calledBefore(spyFn){if(!this.called){return false}if(!spyFn.called){return true}return this.callIds[0]<spyFn.callIds[spyFn.callIds.length-1]},calledAfter:function calledAfter(spyFn){if(!this.called||!spyFn.called){return false}return this.callIds[this.callCount-1]>spyFn.callIds[spyFn.callCount-1]},withArgs:function(){var args=slice.call(arguments);if(this.fakes){var match=matchingFake(this.fakes,args,true);if(match){return match}}else{this.fakes=[]}var original=this;var fake=this.instantiateFake();fake.matchingAguments=args;fake.parent=this;push.call(this.fakes,fake);fake.withArgs=function(){return original.withArgs.apply(original,arguments)};for(var i=0;i<this.args.length;i++){if(fake.matches(this.args[i])){incrementCallCount.call(fake);push.call(fake.thisValues,this.thisValues[i]);push.call(fake.args,this.args[i]);push.call(fake.returnValues,this.returnValues[i]);push.call(fake.exceptions,this.exceptions[i]);push.call(fake.callIds,this.callIds[i])}}createCallProperties.call(fake);return fake},matches:function(args,strict){var margs=this.matchingAguments;if(margs.length<=args.length&&sinon.deepEqual(margs,args.slice(0,margs.length))){return!strict||margs.length==args.length}},printf:function(format){var spy=this;var args=slice.call(arguments,1);var formatter;return(format||"").replace(/%(.)/g,function(match,specifyer){formatter=spyApi.formatters[specifyer];if(typeof formatter=="function"){return formatter.call(null,spy,args)}else if(!isNaN(parseInt(specifyer,10))){return sinon.format(args[specifyer-1])}return"%"+specifyer})}};function delegateToCalls(method,matchAny,actual,notCalled){spyApi[method]=function(){if(!this.called){if(notCalled){return notCalled.apply(this,arguments)}return false}var currentCall;var matches=0;for(var i=0,l=this.callCount;i<l;i+=1){currentCall=this.getCall(i);if(currentCall[actual||method].apply(currentCall,arguments)){matches+=1;if(matchAny){return true}}}return matches===this.callCount}}delegateToCalls("calledOn",true);delegateToCalls("alwaysCalledOn",false,"calledOn");delegateToCalls("calledWith",true);delegateToCalls("calledWithMatch",true);delegateToCalls("alwaysCalledWith",false,"calledWith");delegateToCalls("alwaysCalledWithMatch",false,"calledWithMatch");delegateToCalls("calledWithExactly",true);delegateToCalls("alwaysCalledWithExactly",false,"calledWithExactly");delegateToCalls("neverCalledWith",false,"notCalledWith",function(){return true});delegateToCalls("neverCalledWithMatch",false,"notCalledWithMatch",function(){return true});delegateToCalls("threw",true);delegateToCalls("alwaysThrew",false,"threw");delegateToCalls("returned",true);delegateToCalls("alwaysReturned",false,"returned");delegateToCalls("calledWithNew",true);delegateToCalls("alwaysCalledWithNew",false,"calledWithNew");delegateToCalls("callArg",false,"callArgWith",function(){throw new Error(this.toString()+" cannot call arg since it was not yet invoked.")});spyApi.callArgWith=spyApi.callArg;delegateToCalls("callArgOn",false,"callArgOnWith",function(){throw new Error(this.toString()+" cannot call arg since it was not yet invoked.")});spyApi.callArgOnWith=spyApi.callArgOn;delegateToCalls("yield",false,"yield",function(){throw new Error(this.toString()+" cannot yield since it was not yet invoked.")});spyApi.invokeCallback=spyApi.yield;delegateToCalls("yieldOn",false,"yieldOn",function(){throw new Error(this.toString()+" cannot yield since it was not yet invoked.")});delegateToCalls("yieldTo",false,"yieldTo",function(property){throw new Error(this.toString()+" cannot yield to '"+property+"' since it was not yet invoked.")});delegateToCalls("yieldToOn",false,"yieldToOn",function(property){throw new Error(this.toString()+" cannot yield to '"+property+"' since it was not yet invoked.")});spyApi.formatters={c:function(spy){return sinon.timesInWords(spy.callCount)},n:function(spy){return spy.toString()},C:function(spy){var calls=[];for(var i=0,l=spy.callCount;i<l;++i){var stringifiedCall=" "+spy.getCall(i).toString();if(/\n/.test(calls[i-1])){stringifiedCall="\n"+stringifiedCall}push.call(calls,stringifiedCall)}return calls.length>0?"\n"+calls.join("\n"):""},t:function(spy){var objects=[];for(var i=0,l=spy.callCount;i<l;++i){push.call(objects,sinon.format(spy.thisValues[i]))}return objects.join(", ")},"*":function(spy,args){var formatted=[];for(var i=0,l=args.length;i<l;++i){push.call(formatted,sinon.format(args[i]))}return formatted.join(", ")}};sinon.extend(spy,spyApi);spy.spyCall=sinon.spyCall;sinon.spy=spy;return spy}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./call");require("./extend");require("./times_in_words");require("./format");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./call":7,"./extend":9,"./format":10,"./times_in_words":19,"./util/core":21}],16:[function(require,module,exports){"use strict";(function(sinon){function makeApi(sinon){function stub(object,property,func){if(!!func&&typeof func!="function"&&typeof func!="object"){throw new TypeError("Custom stub should be a function or a property descriptor")}var wrapper;if(func){if(typeof func=="function"){wrapper=sinon.spy&&sinon.spy.create?sinon.spy.create(func):func}else{wrapper=func;if(sinon.spy&&sinon.spy.create){var types=sinon.objectKeys(wrapper);for(var i=0;i<types.length;i++){wrapper[types[i]]=sinon.spy.create(wrapper[types[i]])}}}}else{var stubLength=0;if(typeof object=="object"&&typeof object[property]=="function"){stubLength=object[property].length}wrapper=stub.create(stubLength)}if(!object&&typeof property==="undefined"){return sinon.stub.create()}if(typeof property==="undefined"&&typeof object=="object"){for(var prop in object){if(typeof object[prop]==="function"){stub(object,prop)}}return object}return sinon.wrapMethod(object,property,wrapper)}function getDefaultBehavior(stub){return stub.defaultBehavior||getParentBehaviour(stub)||sinon.behavior.create(stub)}function getParentBehaviour(stub){return stub.parent&&getCurrentBehavior(stub.parent)}function getCurrentBehavior(stub){var behavior=stub.behaviors[stub.callCount-1];return behavior&&behavior.isPresent()?behavior:getDefaultBehavior(stub)}var uuid=0;var proto={create:function create(stubLength){var functionStub=function(){return getCurrentBehavior(functionStub).invoke(this,arguments)};functionStub.id="stub#"+uuid++;var orig=functionStub;functionStub=sinon.spy.create(functionStub,stubLength);functionStub.func=orig;sinon.extend(functionStub,stub);functionStub.instantiateFake=sinon.stub.create;functionStub.displayName="stub";functionStub.toString=sinon.functionToString;functionStub.defaultBehavior=null;functionStub.behaviors=[];return functionStub},resetBehavior:function(){var i;this.defaultBehavior=null;this.behaviors=[];delete this.returnValue;delete this.returnArgAt;this.returnThis=false;if(this.fakes){for(i=0;i<this.fakes.length;i++){this.fakes[i].resetBehavior()}}},onCall:function onCall(index){if(!this.behaviors[index]){this.behaviors[index]=sinon.behavior.create(this)}return this.behaviors[index]},onFirstCall:function onFirstCall(){return this.onCall(0)},onSecondCall:function onSecondCall(){return this.onCall(1)},onThirdCall:function onThirdCall(){return this.onCall(2)}};for(var method in sinon.behavior){if(sinon.behavior.hasOwnProperty(method)&&!proto.hasOwnProperty(method)&&method!="create"&&method!="withArgs"&&method!="invoke"){proto[method]=function(behaviorMethod){return function(){this.defaultBehavior=this.defaultBehavior||sinon.behavior.create(this);this.defaultBehavior[behaviorMethod].apply(this.defaultBehavior,arguments);return this}}(method)}}sinon.extend(stub,proto);sinon.stub=stub;return stub}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./behavior");require("./spy");require("./extend");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./behavior":6,"./extend":9,"./spy":15,"./util/core":21}],17:[function(require,module,exports){"use strict";(function(sinon){function makeApi(sinon){var slice=Array.prototype.slice;function test(callback){var type=typeof callback;if(type!="function"){throw new TypeError("sinon.test needs to wrap a test function, got "+type)}function sinonSandboxedTest(){var config=sinon.getConfig(sinon.config);config.injectInto=config.injectIntoThis&&this||config.injectInto;var sandbox=sinon.sandbox.create(config);var args=slice.call(arguments);var oldDone=args.length&&args[args.length-1];var exception,result;if(typeof oldDone=="function"){args[args.length-1]=function sinonDone(result){if(result){sandbox.restore();throw exception}else{sandbox.verifyAndRestore()}oldDone(result)}}try{result=callback.apply(this,args.concat(sandbox.args))}catch(e){exception=e}if(typeof oldDone!="function"){if(typeof exception!=="undefined"){sandbox.restore();throw exception}else{sandbox.verifyAndRestore()}}return result}if(callback.length){return function sinonAsyncSandboxedTest(callback){return sinonSandboxedTest.apply(this,arguments)}}return sinonSandboxedTest}test.config={injectIntoThis:true,injectInto:null,properties:["spy","stub","mock","clock","server","requests"],useFakeTimers:true,useFakeServer:true};sinon.test=test;return test}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./sandbox");module.exports=makeApi(sinon);
}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(sinon){makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./sandbox":14,"./util/core":21}],18:[function(require,module,exports){"use strict";(function(sinon){function createTest(property,setUp,tearDown){return function(){if(setUp){setUp.apply(this,arguments)}var exception,result;try{result=property.apply(this,arguments)}catch(e){exception=e}if(tearDown){tearDown.apply(this,arguments)}if(exception){throw exception}return result}}function makeApi(sinon){function testCase(tests,prefix){if(!tests||typeof tests!="object"){throw new TypeError("sinon.testCase needs an object with test functions")}prefix=prefix||"test";var rPrefix=new RegExp("^"+prefix);var methods={},testName,property,method;var setUp=tests.setUp;var tearDown=tests.tearDown;for(testName in tests){if(tests.hasOwnProperty(testName)){property=tests[testName];if(/^(setUp|tearDown)$/.test(testName)){continue}if(typeof property=="function"&&rPrefix.test(testName)){method=property;if(setUp||tearDown){method=createTest(property,setUp,tearDown)}methods[testName]=sinon.test(method)}else{methods[testName]=tests[testName]}}}return methods}sinon.testCase=testCase;return testCase}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./util/core");require("./test");module.exports=makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./test":17,"./util/core":21}],19:[function(require,module,exports){"use strict";(function(sinon){function makeApi(sinon){function timesInWords(count){switch(count){case 1:return"once";case 2:return"twice";case 3:return"thrice";default:return(count||0)+" times"}}sinon.timesInWords=timesInWords;return sinon.timesInWords}function loadDependencies(require,exports,module){var sinon=require("./util/core");module.exports=makeApi(sinon)}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{"./util/core":21}],20:[function(require,module,exports){"use strict";(function(sinon,formatio){function makeApi(sinon){function typeOf(value){if(value===null){return"null"}else if(value===undefined){return"undefined"}var string=Object.prototype.toString.call(value);return string.substring(8,string.length-1).toLowerCase()}sinon.typeOf=typeOf;return sinon.typeOf}function loadDependencies(require,exports,module){var sinon=require("./util/core");module.exports=makeApi(sinon)}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null,typeof formatio=="object"&&formatio)},{"./util/core":21}],21:[function(require,module,exports){"use strict";(function(sinon){var div=typeof document!="undefined"&&document.createElement("div");var hasOwn=Object.prototype.hasOwnProperty;function isDOMNode(obj){var success=false;try{obj.appendChild(div);success=div.parentNode==obj}catch(e){return false}finally{try{obj.removeChild(div)}catch(e){}}return success}function isElement(obj){return div&&obj&&obj.nodeType===1&&isDOMNode(obj)}function isFunction(obj){return typeof obj==="function"||!!(obj&&obj.constructor&&obj.call&&obj.apply)}function isReallyNaN(val){return typeof val==="number"&&isNaN(val)}function mirrorProperties(target,source){for(var prop in source){if(!hasOwn.call(target,prop)){target[prop]=source[prop]}}}function isRestorable(obj){return typeof obj==="function"&&typeof obj.restore==="function"&&obj.restore.sinon}var hasES5Support="keys"in Object;function makeApi(sinon){sinon.wrapMethod=function wrapMethod(object,property,method){if(!object){throw new TypeError("Should wrap property of object")}if(typeof method!="function"&&typeof method!="object"){throw new TypeError("Method wrapper should be a function or a property descriptor")}function checkWrappedMethod(wrappedMethod){if(!isFunction(wrappedMethod)){error=new TypeError("Attempted to wrap "+typeof wrappedMethod+" property "+property+" as function")}else if(wrappedMethod.restore&&wrappedMethod.restore.sinon){error=new TypeError("Attempted to wrap "+property+" which is already wrapped")}else if(wrappedMethod.calledBefore){var verb=!!wrappedMethod.returns?"stubbed":"spied on";error=new TypeError("Attempted to wrap "+property+" which is already "+verb)}if(error){if(wrappedMethod&&wrappedMethod.stackTrace){error.stack+="\n--------------\n"+wrappedMethod.stackTrace}throw error}}var error,wrappedMethod;var owned=object.hasOwnProperty?object.hasOwnProperty(property):hasOwn.call(object,property);if(hasES5Support){var methodDesc=typeof method=="function"?{value:method}:method,wrappedMethodDesc=sinon.getPropertyDescriptor(object,property),i;if(!wrappedMethodDesc){error=new TypeError("Attempted to wrap "+typeof wrappedMethod+" property "+property+" as function")}else if(wrappedMethodDesc.restore&&wrappedMethodDesc.restore.sinon){error=new TypeError("Attempted to wrap "+property+" which is already wrapped")}if(error){if(wrappedMethodDesc&&wrappedMethodDesc.stackTrace){error.stack+="\n--------------\n"+wrappedMethodDesc.stackTrace}throw error}var types=sinon.objectKeys(methodDesc);for(i=0;i<types.length;i++){wrappedMethod=wrappedMethodDesc[types[i]];checkWrappedMethod(wrappedMethod)}mirrorProperties(methodDesc,wrappedMethodDesc);for(i=0;i<types.length;i++){mirrorProperties(methodDesc[types[i]],wrappedMethodDesc[types[i]])}Object.defineProperty(object,property,methodDesc)}else{wrappedMethod=object[property];checkWrappedMethod(wrappedMethod);object[property]=method;method.displayName=property}method.displayName=property;method.stackTrace=new Error("Stack Trace for original").stack;method.restore=function(){if(!owned){try{delete object[property]}catch(e){}if(object[property]===method){object[property]=wrappedMethod}}else if(hasES5Support){Object.defineProperty(object,property,wrappedMethodDesc)}if(!hasES5Support&&object[property]===method){object[property]=wrappedMethod}};method.restore.sinon=true;if(!hasES5Support){mirrorProperties(method,wrappedMethod)}return method};sinon.create=function create(proto){var F=function(){};F.prototype=proto;return new F};sinon.deepEqual=function deepEqual(a,b){if(sinon.match&&sinon.match.isMatcher(a)){return a.test(b)}if(typeof a!="object"||typeof b!="object"){if(isReallyNaN(a)&&isReallyNaN(b)){return true}else{return a===b}}if(isElement(a)||isElement(b)){return a===b}if(a===b){return true}if(a===null&&b!==null||a!==null&&b===null){return false}if(a instanceof RegExp&&b instanceof RegExp){return a.source===b.source&&a.global===b.global&&a.ignoreCase===b.ignoreCase&&a.multiline===b.multiline}var aString=Object.prototype.toString.call(a);if(aString!=Object.prototype.toString.call(b)){return false}if(aString=="[object Date]"){return a.valueOf()===b.valueOf()}var prop,aLength=0,bLength=0;if(aString=="[object Array]"&&a.length!==b.length){return false}for(prop in a){aLength+=1;if(!(prop in b)){return false}if(!deepEqual(a[prop],b[prop])){return false}}for(prop in b){bLength+=1}return aLength==bLength};sinon.functionName=function functionName(func){var name=func.displayName||func.name;if(!name){var matches=func.toString().match(/function ([^\s\(]+)/);name=matches&&matches[1]}return name};sinon.functionToString=function toString(){if(this.getCall&&this.callCount){var thisValue,prop,i=this.callCount;while(i--){thisValue=this.getCall(i).thisValue;for(prop in thisValue){if(thisValue[prop]===this){return prop}}}}return this.displayName||"sinon fake"};sinon.objectKeys=function objectKeys(obj){if(obj!==Object(obj)){throw new TypeError("sinon.objectKeys called on a non-object")}var keys=[];var key;for(key in obj){if(hasOwn.call(obj,key)){keys.push(key)}}return keys};sinon.getPropertyDescriptor=function getPropertyDescriptor(object,property){var proto=object,descriptor;while(proto&&!(descriptor=Object.getOwnPropertyDescriptor(proto,property))){proto=Object.getPrototypeOf(proto)}return descriptor};sinon.getConfig=function(custom){var config={};custom=custom||{};var defaults=sinon.defaultConfig;for(var prop in defaults){if(defaults.hasOwnProperty(prop)){config[prop]=custom.hasOwnProperty(prop)?custom[prop]:defaults[prop]}}return config};sinon.defaultConfig={injectIntoThis:true,injectInto:null,properties:["spy","stub","mock","clock","server","requests"],useFakeTimers:true,useFakeServer:true};sinon.timesInWords=function timesInWords(count){return count==1&&"once"||count==2&&"twice"||count==3&&"thrice"||(count||0)+" times"};sinon.calledInOrder=function(spies){for(var i=1,l=spies.length;i<l;i++){if(!spies[i-1].calledBefore(spies[i])||!spies[i].called){return false}}return true};sinon.orderByFirstCall=function(spies){return spies.sort(function(a,b){var aCall=a.getCall(0);var bCall=b.getCall(0);var aId=aCall&&aCall.callId||-1;var bId=bCall&&bCall.callId||-1;return aId<bId?-1:1})};sinon.createStubInstance=function(constructor){if(typeof constructor!=="function"){throw new TypeError("The constructor should be a function.")}return sinon.stub(sinon.create(constructor.prototype))};sinon.restore=function(object){if(object!==null&&typeof object==="object"){for(var prop in object){if(isRestorable(object[prop])){object[prop].restore()}}}else if(isRestorable(object)){object.restore()}};return sinon}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports){makeApi(exports)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports)}else if(!sinon){return}else{makeApi(sinon)}})(typeof sinon=="object"&&sinon||null)},{}],22:[function(require,module,exports){"use strict";if(typeof sinon=="undefined"){this.sinon={}}(function(){var push=[].push;function makeApi(sinon){sinon.Event=function Event(type,bubbles,cancelable,target){this.initEvent(type,bubbles,cancelable,target)};sinon.Event.prototype={initEvent:function(type,bubbles,cancelable,target){this.type=type;this.bubbles=bubbles;this.cancelable=cancelable;this.target=target},stopPropagation:function(){},preventDefault:function(){this.defaultPrevented=true}};sinon.ProgressEvent=function ProgressEvent(type,progressEventRaw,target){this.initEvent(type,false,false,target);this.loaded=progressEventRaw.loaded||null;this.total=progressEventRaw.total||null;this.lengthComputable=!!progressEventRaw.total};sinon.ProgressEvent.prototype=new sinon.Event;sinon.ProgressEvent.prototype.constructor=sinon.ProgressEvent;sinon.CustomEvent=function CustomEvent(type,customData,target){this.initEvent(type,false,false,target);this.detail=customData.detail||null};sinon.CustomEvent.prototype=new sinon.Event;sinon.CustomEvent.prototype.constructor=sinon.CustomEvent;sinon.EventTarget={addEventListener:function addEventListener(event,listener){this.eventListeners=this.eventListeners||{};this.eventListeners[event]=this.eventListeners[event]||[];push.call(this.eventListeners[event],listener)},removeEventListener:function removeEventListener(event,listener){var listeners=this.eventListeners&&this.eventListeners[event]||[];for(var i=0,l=listeners.length;i<l;++i){if(listeners[i]==listener){return listeners.splice(i,1)}}},dispatchEvent:function dispatchEvent(event){var type=event.type;var listeners=this.eventListeners&&this.eventListeners[type]||[];for(var i=0;i<listeners.length;i++){if(typeof listeners[i]=="function"){listeners[i].call(this,event)}else{listeners[i].handleEvent(event)}}return!!event.defaultPrevented}}}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require){var sinon=require("./core");makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require)}else{makeApi(sinon)}})()},{"./core":21}],23:[function(require,module,exports){"use strict";if(typeof sinon=="undefined"){var sinon={}}(function(){var push=[].push;function F(){}function create(proto){F.prototype=proto;return new F}function responseArray(handler){var response=handler;if(Object.prototype.toString.call(handler)!="[object Array]"){response=[200,{},handler]}if(typeof response[2]!="string"){throw new TypeError("Fake server response body should be string, but was "+typeof response[2])}return response}var wloc=typeof window!=="undefined"?window.location:{};var rCurrLoc=new RegExp("^"+wloc.protocol+"//"+wloc.host);function matchOne(response,reqMethod,reqUrl){var rmeth=response.method;var matchMethod=!rmeth||rmeth.toLowerCase()==reqMethod.toLowerCase();var url=response.url;var matchUrl=!url||url==reqUrl||typeof url.test=="function"&&url.test(reqUrl);return matchMethod&&matchUrl}function match(response,request){var requestUrl=request.url;if(!/^https?:\/\//.test(requestUrl)||rCurrLoc.test(requestUrl)){requestUrl=requestUrl.replace(rCurrLoc,"")}if(matchOne(response,this.getHTTPMethod(request),requestUrl)){if(typeof response.response=="function"){var ru=response.url;var args=[request].concat(ru&&typeof ru.exec=="function"?ru.exec(requestUrl).slice(1):[]);return response.response.apply(response,args)}return true}return false}function makeApi(sinon){sinon.fakeServer={create:function(){var server=create(this);if(!sinon.xhr.supportsCORS){this.xhr=sinon.useFakeXDomainRequest()}else{this.xhr=sinon.useFakeXMLHttpRequest()}server.requests=[];this.xhr.onCreate=function(xhrObj){server.addRequest(xhrObj)};return server},addRequest:function addRequest(xhrObj){var server=this;push.call(this.requests,xhrObj);xhrObj.onSend=function(){server.handleRequest(this);if(server.respondImmediately){server.respond()}else if(server.autoRespond&&!server.responding){setTimeout(function(){server.responding=false;server.respond()},server.autoRespondAfter||10);server.responding=true}}},getHTTPMethod:function getHTTPMethod(request){if(this.fakeHTTPMethods&&/post/i.test(request.method)){var matches=(request.requestBody||"").match(/_method=([^\b;]+)/);return!!matches?matches[1]:request.method}return request.method},handleRequest:function handleRequest(xhr){if(xhr.async){if(!this.queue){this.queue=[]}push.call(this.queue,xhr)}else{this.processRequest(xhr)}},log:function log(response,request){var str;str="Request:\n"+sinon.format(request)+"\n\n";str+="Response:\n"+sinon.format(response)+"\n\n";sinon.log(str)},respondWith:function respondWith(method,url,body){if(arguments.length==1&&typeof method!="function"){this.response=responseArray(method);return}if(!this.responses){this.responses=[]}if(arguments.length==1){body=method;url=method=null}if(arguments.length==2){body=url;url=method;method=null}push.call(this.responses,{method:method,url:url,response:typeof body=="function"?body:responseArray(body)})},respond:function respond(){if(arguments.length>0){this.respondWith.apply(this,arguments)}var queue=this.queue||[];var requests=queue.splice(0,queue.length);var request;while(request=requests.shift()){this.processRequest(request)}},processRequest:function processRequest(request){try{if(request.aborted){return}var response=this.response||[404,{},""];if(this.responses){for(var l=this.responses.length,i=l-1;i>=0;i--){if(match.call(this,this.responses[i],request)){response=this.responses[i].response;break}}}if(request.readyState!=4){this.log(response,request);request.respond(response[0],response[1],response[2])}}catch(e){sinon.logError("Fake server request processing",e)}},restore:function restore(){return this.xhr.restore&&this.xhr.restore.apply(this.xhr,arguments)}}}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./core");require("./fake_xdomain_request");require("./fake_xml_http_request");require("../format");makeApi(sinon);module.exports=sinon}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else{makeApi(sinon)}})()},{"../format":10,"./core":21,"./fake_xdomain_request":26,"./fake_xml_http_request":27}],24:[function(require,module,exports){"use strict";(function(){function makeApi(sinon){function Server(){}Server.prototype=sinon.fakeServer;sinon.fakeServerWithClock=new Server;sinon.fakeServerWithClock.addRequest=function addRequest(xhr){if(xhr.async){if(typeof setTimeout.clock=="object"){this.clock=setTimeout.clock}else{this.clock=sinon.useFakeTimers();this.resetClock=true}if(!this.longestTimeout){var clockSetTimeout=this.clock.setTimeout;var clockSetInterval=this.clock.setInterval;var server=this;this.clock.setTimeout=function(fn,timeout){server.longestTimeout=Math.max(timeout,server.longestTimeout||0);return clockSetTimeout.apply(this,arguments)};this.clock.setInterval=function(fn,timeout){server.longestTimeout=Math.max(timeout,server.longestTimeout||0);return clockSetInterval.apply(this,arguments)}}}return sinon.fakeServer.addRequest.call(this,xhr)};sinon.fakeServerWithClock.respond=function respond(){var returnVal=sinon.fakeServer.respond.apply(this,arguments);if(this.clock){this.clock.tick(this.longestTimeout||0);this.longestTimeout=0;if(this.resetClock){this.clock.restore();this.resetClock=false}}return returnVal};sinon.fakeServerWithClock.restore=function restore(){if(this.clock){this.clock.restore()}return sinon.fakeServer.restore.apply(this,arguments)}}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require){var sinon=require("./core");require("./fake_server");require("./fake_timers");makeApi(sinon)}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require)}else{makeApi(sinon)}})()},{"./core":21,"./fake_server":23,"./fake_timers":25}],25:[function(require,module,exports){(function(global){"use strict";if(typeof sinon=="undefined"){var sinon={}}(function(global){function makeApi(sinon,lol){var llx=typeof lolex!=="undefined"?lolex:lol;sinon.useFakeTimers=function(){var now,methods=Array.prototype.slice.call(arguments);if(typeof methods[0]==="string"){now=0}else{now=methods.shift()}var clock=llx.install(now||0,methods);clock.restore=clock.uninstall;return clock};sinon.clock={create:function(now){return llx.createClock(now)}};sinon.timers={setTimeout:setTimeout,clearTimeout:clearTimeout,setImmediate:typeof setImmediate!=="undefined"?setImmediate:undefined,clearImmediate:typeof clearImmediate!=="undefined"?clearImmediate:undefined,setInterval:setInterval,clearInterval:clearInterval,Date:Date}}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,epxorts,module,lolex){var sinon=require("./core");makeApi(sinon,lolex);module.exports=sinon}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module,require("lolex"))}else{makeApi(sinon)}})(typeof global!="undefined"&&typeof global!=="function"?global:this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./core":21,lolex:30}],26:[function(require,module,exports){"use strict";if(typeof sinon=="undefined"){this.sinon={}}(function(global){var xdr={XDomainRequest:global.XDomainRequest};xdr.GlobalXDomainRequest=global.XDomainRequest;xdr.supportsXDR=typeof xdr.GlobalXDomainRequest!="undefined";xdr.workingXDR=xdr.supportsXDR?xdr.GlobalXDomainRequest:false;function makeApi(sinon){sinon.xdr=xdr;function FakeXDomainRequest(){this.readyState=FakeXDomainRequest.UNSENT;this.requestBody=null;this.requestHeaders={};this.status=0;this.timeout=null;if(typeof FakeXDomainRequest.onCreate=="function"){FakeXDomainRequest.onCreate(this)}}function verifyState(xdr){if(xdr.readyState!==FakeXDomainRequest.OPENED){throw new Error("INVALID_STATE_ERR")}if(xdr.sendFlag){throw new Error("INVALID_STATE_ERR")}}function verifyRequestSent(xdr){if(xdr.readyState==FakeXDomainRequest.UNSENT){throw new Error("Request not sent")}if(xdr.readyState==FakeXDomainRequest.DONE){throw new Error("Request done")}}function verifyResponseBodyType(body){if(typeof body!="string"){var error=new Error("Attempted to respond to fake XDomainRequest with "+body+", which is not a string.");error.name="InvalidBodyException";throw error}}sinon.extend(FakeXDomainRequest.prototype,sinon.EventTarget,{open:function open(method,url){this.method=method;this.url=url;this.responseText=null;this.sendFlag=false;this.readyStateChange(FakeXDomainRequest.OPENED)},readyStateChange:function readyStateChange(state){this.readyState=state;var eventName="";switch(this.readyState){case FakeXDomainRequest.UNSENT:break;case FakeXDomainRequest.OPENED:break;case FakeXDomainRequest.LOADING:if(this.sendFlag){eventName="onprogress"}break;case FakeXDomainRequest.DONE:if(this.isTimeout){eventName="ontimeout"}else if(this.errorFlag||(this.status<200||this.status>299)){eventName="onerror"}else{eventName="onload"}break}if(eventName){if(typeof this[eventName]=="function"){try{this[eventName]()}catch(e){sinon.logError("Fake XHR "+eventName+" handler",e)}}}},send:function send(data){verifyState(this);if(!/^(get|head)$/i.test(this.method)){this.requestBody=data}this.requestHeaders["Content-Type"]="text/plain;charset=utf-8";this.errorFlag=false;this.sendFlag=true;this.readyStateChange(FakeXDomainRequest.OPENED);if(typeof this.onSend=="function"){this.onSend(this)}},abort:function abort(){this.aborted=true;this.responseText=null;this.errorFlag=true;if(this.readyState>sinon.FakeXDomainRequest.UNSENT&&this.sendFlag){this.readyStateChange(sinon.FakeXDomainRequest.DONE);this.sendFlag=false}},setResponseBody:function setResponseBody(body){verifyRequestSent(this);verifyResponseBodyType(body);var chunkSize=this.chunkSize||10;var index=0;this.responseText="";do{this.readyStateChange(FakeXDomainRequest.LOADING);this.responseText+=body.substring(index,index+chunkSize);index+=chunkSize}while(index<body.length);this.readyStateChange(FakeXDomainRequest.DONE)},respond:function respond(status,contentType,body){this.status=typeof status=="number"?status:200;this.setResponseBody(body||"")},simulatetimeout:function simulatetimeout(){this.status=0;this.isTimeout=true;this.responseText=undefined;this.readyStateChange(FakeXDomainRequest.DONE)}});sinon.extend(FakeXDomainRequest,{UNSENT:0,OPENED:1,LOADING:3,DONE:4});sinon.useFakeXDomainRequest=function useFakeXDomainRequest(){sinon.FakeXDomainRequest.restore=function restore(keepOnCreate){if(xdr.supportsXDR){global.XDomainRequest=xdr.GlobalXDomainRequest}delete sinon.FakeXDomainRequest.restore;if(keepOnCreate!==true){delete sinon.FakeXDomainRequest.onCreate}};if(xdr.supportsXDR){global.XDomainRequest=sinon.FakeXDomainRequest}return sinon.FakeXDomainRequest};sinon.FakeXDomainRequest=FakeXDomainRequest}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./core");require("../extend");require("./event");require("../log_error");makeApi(sinon);module.exports=sinon}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else{makeApi(sinon)}})(this)},{"../extend":9,"../log_error":11,"./core":21,"./event":22}],27:[function(require,module,exports){(function(global){"use strict";(function(global){var supportsProgress=typeof ProgressEvent!=="undefined";var supportsCustomEvent=typeof CustomEvent!=="undefined";var sinonXhr={XMLHttpRequest:global.XMLHttpRequest};sinonXhr.GlobalXMLHttpRequest=global.XMLHttpRequest;sinonXhr.GlobalActiveXObject=global.ActiveXObject;sinonXhr.supportsActiveX=typeof sinonXhr.GlobalActiveXObject!="undefined";sinonXhr.supportsXHR=typeof sinonXhr.GlobalXMLHttpRequest!="undefined";sinonXhr.workingXHR=sinonXhr.supportsXHR?sinonXhr.GlobalXMLHttpRequest:sinonXhr.supportsActiveX?function(){return new sinonXhr.GlobalActiveXObject("MSXML2.XMLHTTP.3.0")}:false;sinonXhr.supportsCORS=sinonXhr.supportsXHR&&"withCredentials"in new sinonXhr.GlobalXMLHttpRequest;var unsafeHeaders={"Accept-Charset":true,"Accept-Encoding":true,Connection:true,"Content-Length":true,Cookie:true,Cookie2:true,"Content-Transfer-Encoding":true,Date:true,Expect:true,Host:true,"Keep-Alive":true,Referer:true,TE:true,Trailer:true,"Transfer-Encoding":true,Upgrade:true,"User-Agent":true,Via:true};function FakeXMLHttpRequest(){this.readyState=FakeXMLHttpRequest.UNSENT;this.requestHeaders={};this.requestBody=null;this.status=0;this.statusText="";this.upload=new UploadProgress;if(sinonXhr.supportsCORS){this.withCredentials=false}var xhr=this;var events=["loadstart","load","abort","loadend"];function addEventListener(eventName){xhr.addEventListener(eventName,function(event){var listener=xhr["on"+eventName];if(listener&&typeof listener=="function"){listener.call(this,event)}})}for(var i=events.length-1;i>=0;i--){addEventListener(events[i])}if(typeof FakeXMLHttpRequest.onCreate=="function"){FakeXMLHttpRequest.onCreate(this)}}function UploadProgress(){this.eventListeners={progress:[],load:[],abort:[],error:[]}}UploadProgress.prototype.addEventListener=function addEventListener(event,listener){this.eventListeners[event].push(listener)};UploadProgress.prototype.removeEventListener=function removeEventListener(event,listener){var listeners=this.eventListeners[event]||[];for(var i=0,l=listeners.length;i<l;++i){if(listeners[i]==listener){return listeners.splice(i,1)}}};UploadProgress.prototype.dispatchEvent=function dispatchEvent(event){var listeners=this.eventListeners[event.type]||[];for(var i=0,listener;(listener=listeners[i])!=null;i++){listener(event)}};function verifyState(xhr){if(xhr.readyState!==FakeXMLHttpRequest.OPENED){throw new Error("INVALID_STATE_ERR")}if(xhr.sendFlag){throw new Error("INVALID_STATE_ERR")}}function getHeader(headers,header){header=header.toLowerCase();for(var h in headers){if(h.toLowerCase()==header){return h}}return null}function each(collection,callback){if(!collection){return}for(var i=0,l=collection.length;i<l;i+=1){callback(collection[i])}}function some(collection,callback){for(var index=0;index<collection.length;index++){if(callback(collection[index])===true){return true}}return false}var apply=function(obj,method,args){switch(args.length){case 0:return obj[method]();case 1:return obj[method](args[0]);case 2:return obj[method](args[0],args[1]);case 3:return obj[method](args[0],args[1],args[2]);case 4:return obj[method](args[0],args[1],args[2],args[3]);case 5:return obj[method](args[0],args[1],args[2],args[3],args[4])}};FakeXMLHttpRequest.filters=[];FakeXMLHttpRequest.addFilter=function addFilter(fn){this.filters.push(fn)};var IE6Re=/MSIE 6/;FakeXMLHttpRequest.defake=function defake(fakeXhr,xhrArgs){var xhr=new sinonXhr.workingXHR;each(["open","setRequestHeader","send","abort","getResponseHeader","getAllResponseHeaders","addEventListener","overrideMimeType","removeEventListener"],function(method){fakeXhr[method]=function(){return apply(xhr,method,arguments)}});var copyAttrs=function(args){each(args,function(attr){try{fakeXhr[attr]=xhr[attr]}catch(e){if(!IE6Re.test(navigator.userAgent)){throw e}}})};var stateChange=function stateChange(){fakeXhr.readyState=xhr.readyState;if(xhr.readyState>=FakeXMLHttpRequest.HEADERS_RECEIVED){copyAttrs(["status","statusText"])}if(xhr.readyState>=FakeXMLHttpRequest.LOADING){copyAttrs(["responseText","response"])}if(xhr.readyState===FakeXMLHttpRequest.DONE){copyAttrs(["responseXML"])}if(fakeXhr.onreadystatechange){fakeXhr.onreadystatechange.call(fakeXhr,{target:fakeXhr})}};if(xhr.addEventListener){for(var event in fakeXhr.eventListeners){if(fakeXhr.eventListeners.hasOwnProperty(event)){each(fakeXhr.eventListeners[event],function(handler){xhr.addEventListener(event,handler)})}}xhr.addEventListener("readystatechange",stateChange)}else{xhr.onreadystatechange=stateChange}apply(xhr,"open",xhrArgs)};FakeXMLHttpRequest.useFilters=false;function verifyRequestOpened(xhr){if(xhr.readyState!=FakeXMLHttpRequest.OPENED){throw new Error("INVALID_STATE_ERR - "+xhr.readyState)}}function verifyRequestSent(xhr){if(xhr.readyState==FakeXMLHttpRequest.DONE){throw new Error("Request done")}}function verifyHeadersReceived(xhr){if(xhr.async&&xhr.readyState!=FakeXMLHttpRequest.HEADERS_RECEIVED){throw new Error("No headers received")}}function verifyResponseBodyType(body){if(typeof body!="string"){var error=new Error("Attempted to respond to fake XMLHttpRequest with "+body+", which is not a string.");error.name="InvalidBodyException";throw error}}FakeXMLHttpRequest.parseXML=function parseXML(text){var xmlDoc;if(typeof DOMParser!="undefined"){var parser=new DOMParser;xmlDoc=parser.parseFromString(text,"text/xml")}else{xmlDoc=new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async="false";xmlDoc.loadXML(text)}return xmlDoc};FakeXMLHttpRequest.statusCodes={100:"Continue",101:"Switching Protocols",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",300:"Multiple Choice",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported"};function makeApi(sinon){sinon.xhr=sinonXhr;sinon.extend(FakeXMLHttpRequest.prototype,sinon.EventTarget,{async:true,open:function open(method,url,async,username,password){this.method=method;this.url=url;this.async=typeof async=="boolean"?async:true;this.username=username;this.password=password;this.responseText=null;this.responseXML=null;this.requestHeaders={};this.sendFlag=false;if(FakeXMLHttpRequest.useFilters===true){var xhrArgs=arguments;var defake=some(FakeXMLHttpRequest.filters,function(filter){return filter.apply(this,xhrArgs)});if(defake){return FakeXMLHttpRequest.defake(this,arguments)}}this.readyStateChange(FakeXMLHttpRequest.OPENED)},readyStateChange:function readyStateChange(state){this.readyState=state;if(typeof this.onreadystatechange=="function"){try{this.onreadystatechange()}catch(e){sinon.logError("Fake XHR onreadystatechange handler",e)}}this.dispatchEvent(new sinon.Event("readystatechange"));switch(this.readyState){case FakeXMLHttpRequest.DONE:this.dispatchEvent(new sinon.Event("load",false,false,this));this.dispatchEvent(new sinon.Event("loadend",false,false,this));this.upload.dispatchEvent(new sinon.Event("load",false,false,this));if(supportsProgress){this.upload.dispatchEvent(new sinon.ProgressEvent("progress",{loaded:100,total:100}));this.dispatchEvent(new sinon.ProgressEvent("progress",{loaded:100,total:100}))}break}},setRequestHeader:function setRequestHeader(header,value){
verifyState(this);if(unsafeHeaders[header]||/^(Sec-|Proxy-)/.test(header)){throw new Error('Refused to set unsafe header "'+header+'"')}if(this.requestHeaders[header]){this.requestHeaders[header]+=","+value}else{this.requestHeaders[header]=value}},setResponseHeaders:function setResponseHeaders(headers){verifyRequestOpened(this);this.responseHeaders={};for(var header in headers){if(headers.hasOwnProperty(header)){this.responseHeaders[header]=headers[header]}}if(this.async){this.readyStateChange(FakeXMLHttpRequest.HEADERS_RECEIVED)}else{this.readyState=FakeXMLHttpRequest.HEADERS_RECEIVED}},send:function send(data){verifyState(this);if(!/^(get|head)$/i.test(this.method)){var contentType=getHeader(this.requestHeaders,"Content-Type");if(this.requestHeaders[contentType]){var value=this.requestHeaders[contentType].split(";");this.requestHeaders[contentType]=value[0]+";charset=utf-8"}else if(!(data instanceof FormData)){this.requestHeaders["Content-Type"]="text/plain;charset=utf-8"}this.requestBody=data}this.errorFlag=false;this.sendFlag=this.async;this.readyStateChange(FakeXMLHttpRequest.OPENED);if(typeof this.onSend=="function"){this.onSend(this)}this.dispatchEvent(new sinon.Event("loadstart",false,false,this))},abort:function abort(){this.aborted=true;this.responseText=null;this.errorFlag=true;this.requestHeaders={};if(this.readyState>FakeXMLHttpRequest.UNSENT&&this.sendFlag){this.readyStateChange(FakeXMLHttpRequest.DONE);this.sendFlag=false}this.readyState=FakeXMLHttpRequest.UNSENT;this.dispatchEvent(new sinon.Event("abort",false,false,this));this.upload.dispatchEvent(new sinon.Event("abort",false,false,this));if(typeof this.onerror==="function"){this.onerror()}},getResponseHeader:function getResponseHeader(header){if(this.readyState<FakeXMLHttpRequest.HEADERS_RECEIVED){return null}if(/^Set-Cookie2?$/i.test(header)){return null}header=getHeader(this.responseHeaders,header);return this.responseHeaders[header]||null},getAllResponseHeaders:function getAllResponseHeaders(){if(this.readyState<FakeXMLHttpRequest.HEADERS_RECEIVED){return""}var headers="";for(var header in this.responseHeaders){if(this.responseHeaders.hasOwnProperty(header)&&!/^Set-Cookie2?$/i.test(header)){headers+=header+": "+this.responseHeaders[header]+"\r\n"}}return headers},setResponseBody:function setResponseBody(body){verifyRequestSent(this);verifyHeadersReceived(this);verifyResponseBodyType(body);var chunkSize=this.chunkSize||10;var index=0;this.responseText="";do{if(this.async){this.readyStateChange(FakeXMLHttpRequest.LOADING)}this.responseText+=body.substring(index,index+chunkSize);index+=chunkSize}while(index<body.length);var type=this.getResponseHeader("Content-Type");if(this.responseText&&(!type||/(text\/xml)|(application\/xml)|(\+xml)/.test(type))){try{this.responseXML=FakeXMLHttpRequest.parseXML(this.responseText)}catch(e){}}this.readyStateChange(FakeXMLHttpRequest.DONE)},respond:function respond(status,headers,body){this.status=typeof status=="number"?status:200;this.statusText=FakeXMLHttpRequest.statusCodes[this.status];this.setResponseHeaders(headers||{});this.setResponseBody(body||"")},uploadProgress:function uploadProgress(progressEventRaw){if(supportsProgress){this.upload.dispatchEvent(new sinon.ProgressEvent("progress",progressEventRaw))}},downloadProgress:function downloadProgress(progressEventRaw){if(supportsProgress){this.dispatchEvent(new sinon.ProgressEvent("progress",progressEventRaw))}},uploadError:function uploadError(error){if(supportsCustomEvent){this.upload.dispatchEvent(new sinon.CustomEvent("error",{detail:error}))}}});sinon.extend(FakeXMLHttpRequest,{UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4});sinon.useFakeXMLHttpRequest=function(){FakeXMLHttpRequest.restore=function restore(keepOnCreate){if(sinonXhr.supportsXHR){global.XMLHttpRequest=sinonXhr.GlobalXMLHttpRequest}if(sinonXhr.supportsActiveX){global.ActiveXObject=sinonXhr.GlobalActiveXObject}delete FakeXMLHttpRequest.restore;if(keepOnCreate!==true){delete FakeXMLHttpRequest.onCreate}};if(sinonXhr.supportsXHR){global.XMLHttpRequest=FakeXMLHttpRequest}if(sinonXhr.supportsActiveX){global.ActiveXObject=function ActiveXObject(objId){if(objId=="Microsoft.XMLHTTP"||/^Msxml2\.XMLHTTP/i.test(objId)){return new FakeXMLHttpRequest}return new sinonXhr.GlobalActiveXObject(objId)}}return FakeXMLHttpRequest};sinon.FakeXMLHttpRequest=FakeXMLHttpRequest}var isNode=typeof module!=="undefined"&&module.exports&&typeof require=="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){var sinon=require("./core");require("../extend");require("./event");require("../log_error");makeApi(sinon);module.exports=sinon}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module)}else if(typeof sinon==="undefined"){return}else{makeApi(sinon)}})(typeof global!=="undefined"?global:this)}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"../extend":9,"../log_error":11,"./core":21,"./event":22}],28:[function(require,module,exports){(function(global){(typeof define==="function"&&define.amd&&function(m){define("formatio",["samsam"],m)}||typeof module==="object"&&function(m){module.exports=m(require("samsam"))}||function(m){this.formatio=m(this.samsam)})(function(samsam){"use strict";var formatio={excludeConstructors:["Object",/^.$/],quoteStrings:true,limitChildrenCount:0};var hasOwn=Object.prototype.hasOwnProperty;var specialObjects=[];if(typeof global!=="undefined"){specialObjects.push({object:global,value:"[object global]"})}if(typeof document!=="undefined"){specialObjects.push({object:document,value:"[object HTMLDocument]"})}if(typeof window!=="undefined"){specialObjects.push({object:window,value:"[object Window]"})}function functionName(func){if(!func){return""}if(func.displayName){return func.displayName}if(func.name){return func.name}var matches=func.toString().match(/function\s+([^\(]+)/m);return matches&&matches[1]||""}function constructorName(f,object){var name=functionName(object&&object.constructor);var excludes=f.excludeConstructors||formatio.excludeConstructors||[];var i,l;for(i=0,l=excludes.length;i<l;++i){if(typeof excludes[i]==="string"&&excludes[i]===name){return""}else if(excludes[i].test&&excludes[i].test(name)){return""}}return name}function isCircular(object,objects){if(typeof object!=="object"){return false}var i,l;for(i=0,l=objects.length;i<l;++i){if(objects[i]===object){return true}}return false}function ascii(f,object,processed,indent){if(typeof object==="string"){var qs=f.quoteStrings;var quote=typeof qs!=="boolean"||qs;return processed||quote?'"'+object+'"':object}if(typeof object==="function"&&!(object instanceof RegExp)){return ascii.func(object)}processed=processed||[];if(isCircular(object,processed)){return"[Circular]"}if(Object.prototype.toString.call(object)==="[object Array]"){return ascii.array.call(f,object,processed)}if(!object){return String(1/object===-Infinity?"-0":object)}if(samsam.isElement(object)){return ascii.element(object)}if(typeof object.toString==="function"&&object.toString!==Object.prototype.toString){return object.toString()}var i,l;for(i=0,l=specialObjects.length;i<l;i++){if(object===specialObjects[i].object){return specialObjects[i].value}}return ascii.object.call(f,object,processed,indent)}ascii.func=function(func){return"function "+functionName(func)+"() {}"};ascii.array=function(array,processed){processed=processed||[];processed.push(array);var pieces=[];var i,l;l=this.limitChildrenCount>0?Math.min(this.limitChildrenCount,array.length):array.length;for(i=0;i<l;++i){pieces.push(ascii(this,array[i],processed))}if(l<array.length)pieces.push("[... "+(array.length-l)+" more elements]");return"["+pieces.join(", ")+"]"};ascii.object=function(object,processed,indent){processed=processed||[];processed.push(object);indent=indent||0;var pieces=[],properties=samsam.keys(object).sort();var length=3;var prop,str,obj,i,k,l;l=this.limitChildrenCount>0?Math.min(this.limitChildrenCount,properties.length):properties.length;for(i=0;i<l;++i){prop=properties[i];obj=object[prop];if(isCircular(obj,processed)){str="[Circular]"}else{str=ascii(this,obj,processed,indent+2)}str=(/\s/.test(prop)?'"'+prop+'"':prop)+": "+str;length+=str.length;pieces.push(str)}var cons=constructorName(this,object);var prefix=cons?"["+cons+"] ":"";var is="";for(i=0,k=indent;i<k;++i){is+=" "}if(l<properties.length)pieces.push("[... "+(properties.length-l)+" more elements]");if(length+indent>80){return prefix+"{\n "+is+pieces.join(",\n "+is)+"\n"+is+"}"}return prefix+"{ "+pieces.join(", ")+" }"};ascii.element=function(element){var tagName=element.tagName.toLowerCase();var attrs=element.attributes,attr,pairs=[],attrName,i,l,val;for(i=0,l=attrs.length;i<l;++i){attr=attrs.item(i);attrName=attr.nodeName.toLowerCase().replace("html:","");val=attr.nodeValue;if(attrName!=="contenteditable"||val!=="inherit"){if(!!val){pairs.push(attrName+'="'+val+'"')}}}var formatted="<"+tagName+(pairs.length>0?" ":"");var content=element.innerHTML;if(content.length>20){content=content.substr(0,20)+"[...]"}var res=formatted+pairs.join(" ")+">"+content+"</"+tagName+">";return res.replace(/ contentEditable="inherit"/,"")};function Formatio(options){for(var opt in options){this[opt]=options[opt]}}Formatio.prototype={functionName:functionName,configure:function(options){return new Formatio(options)},constructorName:function(object){return constructorName(this,object)},ascii:function(object,processed,indent){return ascii(this,object,processed,indent)}};return Formatio.prototype})}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{samsam:29}],29:[function(require,module,exports){(typeof define==="function"&&define.amd&&function(m){define("samsam",m)}||typeof module==="object"&&function(m){module.exports=m()}||function(m){this.samsam=m()})(function(){var o=Object.prototype;var div=typeof document!=="undefined"&&document.createElement("div");function isNaN(value){var val=value;return typeof value==="number"&&value!==val}function getClass(value){return o.toString.call(value).split(/[ \]]/)[1]}function isArguments(object){if(getClass(object)==="Arguments"){return true}if(typeof object!=="object"||typeof object.length!=="number"||getClass(object)==="Array"){return false}if(typeof object.callee=="function"){return true}try{object[object.length]=6;delete object[object.length]}catch(e){return true}return false}function isElement(object){if(!object||object.nodeType!==1||!div){return false}try{object.appendChild(div);object.removeChild(div)}catch(e){return false}return true}function keys(object){var ks=[],prop;for(prop in object){if(o.hasOwnProperty.call(object,prop)){ks.push(prop)}}return ks}function isDate(value){return typeof value.getTime=="function"&&value.getTime()==value.valueOf()}function isNegZero(value){return value===0&&1/value===-Infinity}function identical(obj1,obj2){if(obj1===obj2||isNaN(obj1)&&isNaN(obj2)){return obj1!==0||isNegZero(obj1)===isNegZero(obj2)}}function deepEqualCyclic(obj1,obj2){var objects1=[],objects2=[],paths1=[],paths2=[],compared={};function isObject(value){if(typeof value==="object"&&value!==null&&!(value instanceof Boolean)&&!(value instanceof Date)&&!(value instanceof Number)&&!(value instanceof RegExp)&&!(value instanceof String)){return true}return false}function getIndex(objects,obj){var i;for(i=0;i<objects.length;i++){if(objects[i]===obj){return i}}return-1}return function deepEqual(obj1,obj2,path1,path2){var type1=typeof obj1;var type2=typeof obj2;if(obj1===obj2||isNaN(obj1)||isNaN(obj2)||obj1==null||obj2==null||type1!=="object"||type2!=="object"){return identical(obj1,obj2)}if(isElement(obj1)||isElement(obj2)){return false}var isDate1=isDate(obj1),isDate2=isDate(obj2);if(isDate1||isDate2){if(!isDate1||!isDate2||obj1.getTime()!==obj2.getTime()){return false}}if(obj1 instanceof RegExp&&obj2 instanceof RegExp){if(obj1.toString()!==obj2.toString()){return false}}var class1=getClass(obj1);var class2=getClass(obj2);var keys1=keys(obj1);var keys2=keys(obj2);if(isArguments(obj1)||isArguments(obj2)){if(obj1.length!==obj2.length){return false}}else{if(type1!==type2||class1!==class2||keys1.length!==keys2.length){return false}}var key,i,l,value1,value2,isObject1,isObject2,index1,index2,newPath1,newPath2;for(i=0,l=keys1.length;i<l;i++){key=keys1[i];if(!o.hasOwnProperty.call(obj2,key)){return false}value1=obj1[key];value2=obj2[key];isObject1=isObject(value1);isObject2=isObject(value2);index1=isObject1?getIndex(objects1,value1):-1;index2=isObject2?getIndex(objects2,value2):-1;newPath1=index1!==-1?paths1[index1]:path1+"["+JSON.stringify(key)+"]";newPath2=index2!==-1?paths2[index2]:path2+"["+JSON.stringify(key)+"]";if(compared[newPath1+newPath2]){return true}if(index1===-1&&isObject1){objects1.push(value1);paths1.push(newPath1)}if(index2===-1&&isObject2){objects2.push(value2);paths2.push(newPath2)}if(isObject1&&isObject2){compared[newPath1+newPath2]=true}if(!deepEqual(value1,value2,newPath1,newPath2)){return false}}return true}(obj1,obj2,"$1","$2")}var match;function arrayContains(array,subset){if(subset.length===0){return true}var i,l,j,k;for(i=0,l=array.length;i<l;++i){if(match(array[i],subset[0])){for(j=0,k=subset.length;j<k;++j){if(!match(array[i+j],subset[j])){return false}}return true}}return false}match=function match(object,matcher){if(matcher&&typeof matcher.test==="function"){return matcher.test(object)}if(typeof matcher==="function"){return matcher(object)===true}if(typeof matcher==="string"){matcher=matcher.toLowerCase();var notNull=typeof object==="string"||!!object;return notNull&&String(object).toLowerCase().indexOf(matcher)>=0}if(typeof matcher==="number"){return matcher===object}if(typeof matcher==="boolean"){return matcher===object}if(typeof matcher==="undefined"){return typeof object==="undefined"}if(matcher===null){return object===null}if(getClass(object)==="Array"&&getClass(matcher)==="Array"){return arrayContains(object,matcher)}if(matcher&&typeof matcher==="object"){if(matcher===object){return true}var prop;for(prop in matcher){var value=object[prop];if(typeof value==="undefined"&&typeof object.getAttribute==="function"){value=object.getAttribute(prop)}if(matcher[prop]===null||typeof matcher[prop]==="undefined"){if(value!==matcher[prop]){return false}}else if(typeof value==="undefined"||!match(value,matcher[prop])){return false}}return true}throw new Error("Matcher was not a string, a number, a "+"function, a boolean or an object")};return{isArguments:isArguments,isElement:isElement,isDate:isDate,isNegZero:isNegZero,identical:identical,deepEqual:deepEqualCyclic,match:match,keys:keys}})},{}],30:[function(require,module,exports){(function(global){"use strict";var timeoutResult=setTimeout(function(){},0);var addTimerReturnsObject=typeof timeoutResult==="object";clearTimeout(timeoutResult);var NativeDate=Date;var id=1;function parseTime(str){if(!str){return 0}var strings=str.split(":");var l=strings.length,i=l;var ms=0,parsed;if(l>3||!/^(\d\d:){0,2}\d\d?$/.test(str)){throw new Error("tick only understands numbers and 'h:m:s'")}while(i--){parsed=parseInt(strings[i],10);if(parsed>=60){throw new Error("Invalid time "+str)}ms+=parsed*Math.pow(60,l-i-1)}return ms*1e3}function getEpoch(epoch){if(!epoch){return 0}if(typeof epoch.getTime==="function"){return epoch.getTime()}if(typeof epoch==="number"){return epoch}throw new TypeError("now should be milliseconds since UNIX epoch")}function inRange(from,to,timer){return timer&&timer.callAt>=from&&timer.callAt<=to}function mirrorDateProperties(target,source){if(source.now){target.now=function now(){return target.clock.now}}else{delete target.now}if(source.toSource){target.toSource=function toSource(){return source.toSource()}}else{delete target.toSource}target.toString=function toString(){return source.toString()};target.prototype=source.prototype;target.parse=source.parse;target.UTC=source.UTC;target.prototype.toUTCString=source.prototype.toUTCString;for(var prop in source){if(source.hasOwnProperty(prop)){target[prop]=source[prop]}}return target}function createDate(){function ClockDate(year,month,date,hour,minute,second,ms){switch(arguments.length){case 0:return new NativeDate(ClockDate.clock.now);case 1:return new NativeDate(year);case 2:return new NativeDate(year,month);case 3:return new NativeDate(year,month,date);case 4:return new NativeDate(year,month,date,hour);case 5:return new NativeDate(year,month,date,hour,minute);case 6:return new NativeDate(year,month,date,hour,minute,second);default:return new NativeDate(year,month,date,hour,minute,second,ms)}}return mirrorDateProperties(ClockDate,NativeDate)}function addTimer(clock,timer){if(typeof timer.func==="undefined"){throw new Error("Callback must be provided to timer calls")}if(!clock.timers){clock.timers={}}timer.id=id++;timer.createdAt=clock.now;timer.callAt=clock.now+(timer.delay||0);clock.timers[timer.id]=timer;if(addTimerReturnsObject){return{id:timer.id,ref:function(){},unref:function(){}}}else{return timer.id}}function firstTimerInRange(clock,from,to){var timers=clock.timers,timer=null;for(var id in timers){if(!inRange(from,to,timers[id])){continue}if(!timer||~compareTimers(timer,timers[id])){timer=timers[id]}}return timer}function compareTimers(a,b){if(a.callAt<b.callAt){return-1}if(a.callAt>b.callAt){return 1}if(a.immediate&&!b.immediate){return-1}if(!a.immediate&&b.immediate){return 1}if(a.createdAt<b.createdAt){return-1}if(a.createdAt>b.createdAt){return 1}if(a.id<b.id){return-1}if(a.id>b.id){return 1}}function callTimer(clock,timer){if(typeof timer.interval=="number"){clock.timers[timer.id].callAt+=timer.interval}else{delete clock.timers[timer.id]}try{if(typeof timer.func=="function"){timer.func.apply(null,timer.args)}else{eval(timer.func)}}catch(e){var exception=e}if(!clock.timers[timer.id]){if(exception){throw exception}return}if(exception){throw exception}}function uninstall(clock,target){var method;for(var i=0,l=clock.methods.length;i<l;i++){method=clock.methods[i];if(target[method].hadOwnProperty){target[method]=clock["_"+method]}else{try{delete target[method]}catch(e){}}}clock.methods=[]}function hijackMethod(target,method,clock){clock[method].hadOwnProperty=Object.prototype.hasOwnProperty.call(target,method);clock["_"+method]=target[method];if(method=="Date"){var date=mirrorDateProperties(clock[method],target[method]);target[method]=date}else{target[method]=function(){return clock[method].apply(clock,arguments)};for(var prop in clock[method]){if(clock[method].hasOwnProperty(prop)){target[method][prop]=clock[method][prop]}}}target[method].clock=clock}var timers={setTimeout:setTimeout,clearTimeout:clearTimeout,setImmediate:typeof setImmediate!=="undefined"?setImmediate:undefined,clearImmediate:typeof clearImmediate!=="undefined"?clearImmediate:undefined,setInterval:setInterval,clearInterval:clearInterval,Date:Date};var keys=Object.keys||function(obj){var ks=[];for(var key in obj){ks.push(key)}return ks};exports.timers=timers;var createClock=exports.createClock=function(now){var clock={now:getEpoch(now),timeouts:{},Date:createDate()};clock.Date.clock=clock;clock.setTimeout=function setTimeout(func,timeout){return addTimer(clock,{func:func,args:Array.prototype.slice.call(arguments,2),delay:timeout})};clock.clearTimeout=function clearTimeout(timerId){if(!timerId){return}if(!clock.timers){clock.timers=[]}if(typeof timerId==="object"){timerId=timerId.id}if(timerId in clock.timers){delete clock.timers[timerId]}};clock.setInterval=function setInterval(func,timeout){return addTimer(clock,{func:func,args:Array.prototype.slice.call(arguments,2),delay:timeout,interval:timeout})};clock.clearInterval=function clearInterval(timerId){clock.clearTimeout(timerId)};clock.setImmediate=function setImmediate(func){return addTimer(clock,{func:func,args:Array.prototype.slice.call(arguments,1),immediate:true})};clock.clearImmediate=function clearImmediate(timerId){clock.clearTimeout(timerId)};clock.tick=function tick(ms){ms=typeof ms=="number"?ms:parseTime(ms);var tickFrom=clock.now,tickTo=clock.now+ms,previous=clock.now;var timer=firstTimerInRange(clock,tickFrom,tickTo);var firstException;while(timer&&tickFrom<=tickTo){if(clock.timers[timer.id]){tickFrom=clock.now=timer.callAt;try{callTimer(clock,timer)}catch(e){firstException=firstException||e}}timer=firstTimerInRange(clock,previous,tickTo);previous=tickFrom}clock.now=tickTo;if(firstException){throw firstException}return clock.now};clock.reset=function reset(){clock.timers={}};return clock};exports.install=function install(target,now,toFake){if(typeof target==="number"){toFake=now;now=target;target=null}if(!target){target=global}var clock=createClock(now);clock.uninstall=function(){uninstall(clock,target)};clock.methods=toFake||[];if(clock.methods.length===0){clock.methods=keys(timers)}for(var i=0,l=clock.methods.length;i<l;i++){hijackMethod(target,clock.methods[i],clock)}return clock}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],sinon:[function(require,module,exports){"use strict";var sinon=function(){var sinon;var isNode=typeof module!=="undefined"&&module.exports&&typeof require==="function";var isAMD=typeof define==="function"&&typeof define.amd==="object"&&define.amd;function loadDependencies(require,exports,module){sinon=module.exports=require("./sinon/util/core");require("./sinon/extend");require("./sinon/typeOf");require("./sinon/times_in_words");require("./sinon/spy");require("./sinon/call");require("./sinon/behavior");require("./sinon/stub");require("./sinon/mock");require("./sinon/collection");require("./sinon/assert");require("./sinon/sandbox");require("./sinon/test");require("./sinon/test_case");require("./sinon/match");require("./sinon/format");require("./sinon/log_error")}if(isAMD){define(loadDependencies)}else if(isNode){loadDependencies(require,module.exports,module);sinon=module.exports}else{sinon={}}return sinon}()},{"./sinon/assert":5,"./sinon/behavior":6,"./sinon/call":7,"./sinon/collection":8,"./sinon/extend":9,"./sinon/format":10,"./sinon/log_error":11,"./sinon/match":12,"./sinon/mock":13,"./sinon/sandbox":14,"./sinon/spy":15,"./sinon/stub":16,"./sinon/test":17,"./sinon/test_case":18,"./sinon/times_in_words":19,"./sinon/typeOf":20,"./sinon/util/core":21}]},{},[]);sinon=require("sinon");sinon.spy(window,"WebSocket");new window.WebSocket("ws://example.com");var a={b:function(){}};sinon.spy(a,"b");new a.b;
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"sinon": "1.14.1"
}
}
<!-- contents of this file will be placed inside the <body> -->
<!-- contents of this file will be placed inside the <head> -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment