made with requirebin
Created
June 4, 2014 13:27
-
-
Save ascott1/ae58098fdee3b516631b to your computer and use it in GitHub Desktop.
requirebin sketch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require('console-log').show(true); | |
var Financial = require('financial'); | |
var Money = require('accounting'); | |
var calcPayment = function(loanRate, loanYears, loanAmt) { | |
var monthlyPayment = Financial.PMT(loanRate / 100 / 12, loanYears * 12, loanAmt); | |
monthlyPayment = Math.abs(monthlyPayment); | |
return makeMoney(monthlyPayment); | |
}; | |
var calcInterest = function(loanRate, loanYears, loanAmt, startPeriod, endPeriod, type) { | |
var totalInterest = Financial.CUMIPMT(loanRate / 100 / 12, loanYears * 12, loanAmt, startPeriod, endPeriod * 12, type); | |
totalInterest = Math.abs(totalInterest); | |
return makeMoney(totalInterest); | |
}; | |
var makeMoney = function(num) { | |
return Money.accounting.formatMoney(num); | |
}; | |
console.log('You will pay ' + calcPayment(5, 30, 200000) + ' per month'); | |
console.log('You will have paid ' + calcInterest(5, 30, 200000, 1, 30, 0) + ' in total interest'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.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){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);console.trace()}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],Zgz7mW:[function(require,module,exports){var widget=require("./widget");var o=require("observable");var h=require("hyperscript");if("undefined"===typeof console){globals.console={};console.log=function(){};console.error=function(){}}var emitter=widget({style:{height:"400px",width:"200px","border-bottom":"1px dotted black"}});function wrap(name){var log=console[name];console[name]=function(){var args=[].slice.call(arguments);emitter.write(args);log.apply(console,args)}}wrap("log");wrap("error");window.addEventListener("error",function(err){emitter.write([err.stack])});document.body.appendChild(h("div",{style:{background:"white",border:"1px solid black",position:"fixed",right:"20px",bottom:"20px"}},emitter.element,h("div",o.boolean(emitter.show,">","<"),{onclick:function(){emitter.show(!emitter.show())}},{style:{margin:"10px","min-width":"20px","min-height":"20px","text-align":"center"}})));emitter.show(false);module.exports=emitter},{"./widget":13,hyperscript:4,observable:12}],"console-log":[function(require,module,exports){module.exports=require("Zgz7mW")},{}],4:[function(require,module,exports){var split=require("browser-split");var ClassList=require("class-list");var DataSet=require("data-set");module.exports=h;function h(){var args=[].slice.call(arguments),e=null;function item(l){var r;function parseClass(string){var m=split(string,/([\.#]?[a-zA-Z0-9_-]+)/);forEach(m,function(v){var s=v.substring(1,v.length);if(!v)return;if(!e)e=document.createElement(v);else if(v[0]===".")ClassList(e).add(s);else if(v[0]==="#")e.setAttribute("id",s)})}if(l==null);else if("string"===typeof l){if(!e)parseClass(l);else e.appendChild(r=document.createTextNode(l))}else if("number"===typeof l||"boolean"===typeof l||l instanceof Date||l instanceof RegExp){e.appendChild(r=document.createTextNode(l.toString()))}else if(isArray(l))forEach(l,item);else if(isNode(l))e.appendChild(r=l);else if(l instanceof Text)e.appendChild(r=l);else if("object"===typeof l){for(var k in l){if("function"===typeof l[k]){if(/^on\w+/.test(k)){e.addEventListener?e.addEventListener(k.substring(2),l[k]):e.attachEvent(k,l[k])}else{e[k]=l[k]();l[k](function(v){e[k]=v})}}else if(k==="style"){for(var s in l[k])(function(s,v){if("function"===typeof v){e.style.setProperty(s,v());v(function(val){e.style.setProperty(s,val)})}else e.style.setProperty(s,l[k][s])})(s,l[k][s])}else if(k.substr(0,5)==="data-"){DataSet(e)[k.substr(5)]=l[k]}else{e[k]=l[k]}}}else if("function"===typeof l){var v=l();e.appendChild(r=isNode(v)?v:document.createTextNode(v));l(function(v){if(isNode(v)&&r.parentElement)r.parentElement.replaceChild(v,r),r=v;else r.textContent=v})}return r}while(args.length)item(args.shift());return e}function isNode(el){return el&&el.nodeName&&el.nodeType}function isText(el){return el&&el.nodeName==="#text"&&el.nodeType==3}function forEach(arr,fn){if(arr.forEach)return arr.forEach(fn);for(var i=0;i<arr.length;i++)fn(arr[i],i)}function isArray(arr){return Object.prototype.toString.call(arr)=="[object Array]"}},{"browser-split":5,"class-list":6,"data-set":8}],5:[function(require,module,exports){module.exports=function split(undef){var nativeSplit=String.prototype.split,compliantExecNpcg=/()??/.exec("")[1]===undef,self;self=function(str,separator,limit){if(Object.prototype.toString.call(separator)!=="[object RegExp]"){return nativeSplit.call(str,separator,limit)}var output=[],flags=(separator.ignoreCase?"i":"")+(separator.multiline?"m":"")+(separator.extended?"x":"")+(separator.sticky?"y":""),lastLastIndex=0,separator=new RegExp(separator.source,flags+"g"),separator2,match,lastIndex,lastLength;str+="";if(!compliantExecNpcg){separator2=new RegExp("^"+separator.source+"$(?!\\s)",flags)}limit=limit===undef?-1>>>0:limit>>>0;while(match=separator.exec(str)){lastIndex=match.index+match[0].length;if(lastIndex>lastLastIndex){output.push(str.slice(lastLastIndex,match.index));if(!compliantExecNpcg&&match.length>1){match[0].replace(separator2,function(){for(var i=1;i<arguments.length-2;i++){if(arguments[i]===undef){match[i]=undef}}})}if(match.length>1&&match.index<str.length){Array.prototype.push.apply(output,match.slice(1))}lastLength=match[0].length;lastLastIndex=lastIndex;if(output.length>=limit){break}}if(separator.lastIndex===match.index){separator.lastIndex++}}if(lastLastIndex===str.length){if(lastLength||!separator.test("")){output.push("")}}else{output.push(str.slice(lastLastIndex))}return output.length>limit?output.slice(0,limit):output};return self}()},{}],6:[function(require,module,exports){var indexof=require("indexof");module.exports=ClassList;function ClassList(elem){var cl=elem.classList;if(cl){return cl}var classList={add:add,remove:remove,contains:contains,toggle:toggle,toString:$toString,length:0,item:item};return classList;function add(token){var list=getTokens();if(indexof(list,token)>-1){return}list.push(token);setTokens(list)}function remove(token){var list=getTokens(),index=indexof(list,token);if(index===-1){return}list.splice(index,1);setTokens(list)}function contains(token){return indexof(getTokens(),token)>-1}function toggle(token){if(contains(token)){remove(token);return false}else{add(token);return true}}function $toString(){return elem.className}function item(index){var tokens=getTokens();return tokens[index]||null}function getTokens(){var className=elem.className;return filter(className.split(" "),isTruthy)}function setTokens(list){var length=list.length;elem.className=list.join(" ");classList.length=length;for(var i=0;i<list.length;i++){classList[i]=list[i]}delete list[length]}}function filter(arr,fn){var ret=[];for(var i=0;i<arr.length;i++){if(fn(arr[i]))ret.push(arr[i])}return ret}function isTruthy(value){return!!value}},{indexof:7}],7:[function(require,module,exports){var indexOf=[].indexOf;module.exports=function(arr,obj){if(indexOf)return arr.indexOf(obj);for(var i=0;i<arr.length;++i){if(arr[i]===obj)return i}return-1}},{}],8:[function(require,module,exports){var Weakmap=require("weakmap");var Individual=require("individual");var datasetMap=Individual("__DATA_SET_WEAKMAP",Weakmap());module.exports=DataSet;function DataSet(elem){if(elem.dataset){return elem.dataset}var hash=datasetMap.get(elem);if(!hash){hash=createHash(elem);datasetMap.set(elem,hash)}return hash}function createHash(elem){var attributes=elem.attributes;var hash={};if(attributes===null||attributes===undefined){return hash}for(var i=0;i<attributes.length;i++){var attr=attributes[i];if(attr.name.substr(0,5)!=="data-"){continue}hash[attr.name.substr(5)]=attr.value}return hash}},{individual:9,weakmap:11}],9:[function(require,module,exports){var root=require("global");module.exports=Individual;function Individual(key,value){if(root[key]){return root[key]}Object.defineProperty(root,key,{value:value,configurable:true});return value}},{global:10}],10:[function(require,module,exports){(function(global){if(typeof global!=="undefined"){module.exports=global}else if(typeof window!=="undefined"){module.exports=window}}).call(this,typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],11:[function(require,module,exports){void function(global,undefined_,undefined){var getProps=Object.getOwnPropertyNames,defProp=Object.defineProperty,toSource=Function.prototype.toString,create=Object.create,hasOwn=Object.prototype.hasOwnProperty,funcName=/^\n?function\s?(\w*)?_?\(/;function define(object,key,value){if(typeof key==="function"){value=key;key=nameOf(value).replace(/_$/,"")}return defProp(object,key,{configurable:true,writable:true,value:value})}function nameOf(func){return typeof func!=="function"?"":"name"in func?func.name:toSource.call(func).match(funcName)[1]}var Data=function(){var dataDesc={value:{writable:true,value:undefined}},datalock="return function(k){if(k===s)return l}",uids=create(null),createUID=function(){var key=Math.random().toString(36).slice(2);return key in uids?createUID():uids[key]=key},globalID=createUID(),storage=function(obj){if(hasOwn.call(obj,globalID))return obj[globalID];if(!Object.isExtensible(obj))throw new TypeError("Object must be extensible");var store=create(null);defProp(obj,globalID,{value:store});return store};define(Object,function getOwnPropertyNames(obj){var props=getProps(obj);if(hasOwn.call(obj,globalID))props.splice(props.indexOf(globalID),1);return props});function Data(){var puid=createUID(),secret={};this.unlock=function(obj){var store=storage(obj);if(hasOwn.call(store,puid))return store[puid](secret);var data=create(null,dataDesc);defProp(store,puid,{value:new Function("s","l",datalock)(secret,data)});return data}}define(Data.prototype,function get(o){return this.unlock(o).value});define(Data.prototype,function set(o,v){this.unlock(o).value=v});return Data}();var WM=function(data){var validate=function(key){if(key==null||typeof key!=="object"&&typeof key!=="function")throw new TypeError("Invalid WeakMap key")};var wrap=function(collection,value){var store=data.unlock(collection);if(store.value)throw new TypeError("Object is already a WeakMap");store.value=value};var unwrap=function(collection){var storage=data.unlock(collection).value;if(!storage)throw new TypeError("WeakMap is not generic");return storage};var initialize=function(weakmap,iterable){if(iterable!==null&&typeof iterable==="object"&&typeof iterable.forEach==="function"){iterable.forEach(function(item,i){if(item instanceof Array&&item.length===2)set.call(weakmap,iterable[i][0],iterable[i][1])})}};function WeakMap(iterable){if(this===global||this==null||this===WeakMap.prototype)return new WeakMap(iterable);wrap(this,new Data);initialize(this,iterable)}function get(key){validate(key);var value=unwrap(this).get(key);return value===undefined_?undefined:value}function set(key,value){validate(key);unwrap(this).set(key,value===undefined?undefined_:value)}function has(key){validate(key);return unwrap(this).get(key)!==undefined}function delete_(key){validate(key);var data=unwrap(this),had=data.get(key)!==undefined;data.set(key,undefined);return had}function toString(){unwrap(this);return"[object WeakMap]"}try{var src=("return "+delete_).replace("e_","\\u0065"),del=new Function("unwrap","validate",src)(unwrap,validate)}catch(e){var del=delete_}var src=(""+Object).split("Object");var stringifier=function toString(){return src[0]+nameOf(this)+src[1]};define(stringifier,stringifier);var prep={__proto__:[]}instanceof Array?function(f){f.__proto__=stringifier}:function(f){define(f,stringifier)};prep(WeakMap);[toString,get,set,has,del].forEach(function(method){define(WeakMap.prototype,method);prep(method)});return WeakMap}(new Data);var defaultCreator=Object.create?function(){return Object.create(null)}:function(){return{}};function createStorage(creator){var weakmap=new WM;creator||(creator=defaultCreator);function storage(object,value){if(value||arguments.length===2){weakmap.set(object,value)}else{value=weakmap.get(object);if(value===undefined){value=creator(object);weakmap.set(object,value)}}return value}return storage}if(typeof module!=="undefined"){module.exports=WM}else if(typeof exports!=="undefined"){exports.WeakMap=WM}else if(!("WeakMap"in global)){global.WeakMap=WM}WM.createStorage=createStorage;if(global.WeakMap)global.WeakMap.createStorage=createStorage}((0,eval)("this"))},{}],12:[function(require,module,exports){(function(){function bind1(a,b){a(b());b(a)}function bind2(a,b){b(a());a(b);b(a)}function isGet(val){return undefined===val}function isSet(val){return"function"!==typeof val}function all(ary,val){for(var k in ary)ary[k](val)}function remove(ary,item){delete ary[ary.indexOf(item)]}function on(emitter,event,listener){(emitter.on||emitter.addEventListener).call(emitter,event,listener,false)}function off(emitter,event,listener){(emitter.removeListener||emitter.removeEventListener||emitter.off).call(emitter,event,listener,false)}function value(){var _val,listeners=[];return function(val){return isGet(val)?_val:isSet(val)?all(listeners,_val=val):(listeners.push(val),function(){remove(listeners,val)})}}function property(model,key){return function(val){return isGet(val)?model.get(key):isSet(val)?model.set(key,val):(on(model,"change:"+key,val),function(){off(model,"change:"+key,val)})}}function transform(observable,down,up){if("function"!==typeof observable)throw new Error("transform expects an observable");return function(val){return isGet(val)?down(observable()):isSet(val)?observable((up||down)(val)):observable(function(_val){val(down(_val))})}}function not(observable){return transform(observable,function(v){return!v})}function listen(element,event,attr,listener){function onEvent(){listener("function"===typeof attr?attr():element[attr])}on(element,event,onEvent);return function(){off(element,event,onEvent)}}function attribute(element,attr,event){attr=attr||"value";event=event||"input";return function(val){return isGet(val)?element[attr]:isSet(val)?element[attr]=val:listen(element,event,attr,val)}}function select(element){function _attr(){return element[element.selectedIndex].value}function _set(val){for(var i=0;i<element.options.length;i++){if(element.options[i].value==val)element.selectedIndex=i}}return function(val){return isGet(val)?element.options[element.selectedIndex].value:isSet(val)?_set(val):listen(element,"change",_attr,val)}}function toggle(el,up,down){var i=false;return function(val){function onUp(){i||val(i=true)}function onDown(){i&&val(i=false)}return isGet(val)?i:isSet(val)?undefined:(on(el,up,onUp),on(el,down||up,onDown),function(){off(el,up,onUp);off(el,down||up,onDown)})}}function error(message){throw new Error(message)}function compute(observables,compute){function getAll(){return compute.apply(null,observables.map(function(e){return e()}))}return function(val){return isGet(val)?getAll():isSet(val)?error("read-only"):observables.forEach(function(obs){obs(function(){val(getAll())})})}}function boolean(observable,truthy,falsey){return transform(observable,function(val){return val?truthy:falsey},function(val){return val==truthy?true:false})}var exports=value;exports.bind1=bind1;exports.bind2=bind2;exports.value=value;exports.not=not;exports.property=property;exports.input=exports.attribute=attribute;exports.select=select;exports.compute=compute;exports.transform=transform;exports.boolean=boolean;exports.toggle=toggle;exports.hover=function(e){return toggle(e,"mouseover","mouseout")};exports.focus=function(e){return toggle(e,"focus","blur")};if("object"===typeof module)module.exports=exports;else this.observable=exports})()},{}],13:[function(require,module,exports){var EventEmitter=require("events").EventEmitter;var h=require("hyperscript");var o=require("observable");var log=console.log;module.exports=function(opts){opts=opts||{};var emitter=new EventEmitter;var follow=true;opts.max=1e4;opts.margin=opts.margin||30;opts.style=opts.style||{height:"100%",width:"50%"};opts.template=opts.template||function(args){return h("pre",args.map(function(e,i){if(!i)return String(e);try{return JSON.stringify(e,false,2)}catch(e){return String(e)}}).join(" "))};emitter.show=o();var inner=h("div");var logger=h("div",{style:opts.style},{style:{overflow:"scroll",display:o.boolean(emitter.show,"block","none")}},inner);emitter.follow=function(){var el=inner.lastElementChild;el&&el.scrollIntoViewIfNeeded();follow=true};emitter.show(function(v){if(v&&follow)emitter.follow()});emitter.show(true);emitter.end=function(){};emitter.writable=true;emitter.log=emitter.write=function(data){var message=opts.template(data);var bottom=inner.getBoundingClientRect().bottom;var size=logger.getBoundingClientRect().bottom;follow=bottom<size+opts.margin;inner.appendChild(message);if(follow&&emitter.show()){while(inner.clientHeight>opts.max&&inner.children.length){inner.removeChild(inner.firstChild)}message.scrollIntoViewIfNeeded()}return true};emitter.element=logger;return emitter}},{events:1,hyperscript:4,observable:12}]},{},[]);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);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.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}({"s0+nZs":[function(require,module,exports){(function(root,undefined){var lib={};lib.version="0.3.2";lib.settings={currency:{symbol:"$",format:"%s%v",decimal:".",thousand:",",precision:2,grouping:3},number:{precision:0,grouping:3,thousand:",",decimal:"."}};var nativeMap=Array.prototype.map,nativeIsArray=Array.isArray,toString=Object.prototype.toString;function isString(obj){return!!(obj===""||obj&&obj.charCodeAt&&obj.substr)}function isArray(obj){return nativeIsArray?nativeIsArray(obj):toString.call(obj)==="[object Array]"}function isObject(obj){return toString.call(obj)==="[object Object]"}function defaults(object,defs){var key;object=object||{};defs=defs||{};for(key in defs){if(defs.hasOwnProperty(key)){if(object[key]==null)object[key]=defs[key]}}return object}function map(obj,iterator,context){var results=[],i,j;if(!obj)return results;if(nativeMap&&obj.map===nativeMap)return obj.map(iterator,context);for(i=0,j=obj.length;i<j;i++){results[i]=iterator.call(context,obj[i],i,obj)}return results}function checkPrecision(val,base){val=Math.round(Math.abs(val));return isNaN(val)?base:val}function checkCurrencyFormat(format){var defaults=lib.settings.currency.format;if(typeof format==="function")format=format();if(isString(format)&&format.match("%v")){return{pos:format,neg:format.replace("-","").replace("%v","-%v"),zero:format}}else if(!format||!format.pos||!format.pos.match("%v")){return!isString(defaults)?defaults:lib.settings.currency.format={pos:defaults,neg:defaults.replace("%v","-%v"),zero:defaults}}return format}var unformat=lib.unformat=lib.parse=function(value,decimal){if(isArray(value)){return map(value,function(val){return unformat(val,decimal)})}value=value||0;if(typeof value==="number")return value;decimal=decimal||".";var regex=new RegExp("[^0-9-"+decimal+"]",["g"]),unformatted=parseFloat((""+value).replace(/\((.*)\)/,"-$1").replace(regex,"").replace(decimal,"."));return!isNaN(unformatted)?unformatted:0};var toFixed=lib.toFixed=function(value,precision){precision=checkPrecision(precision,lib.settings.number.precision);var power=Math.pow(10,precision);return(Math.round(lib.unformat(value)*power)/power).toFixed(precision)};var formatNumber=lib.formatNumber=function(number,precision,thousand,decimal){if(isArray(number)){return map(number,function(val){return formatNumber(val,precision,thousand,decimal)})}number=unformat(number);var opts=defaults(isObject(precision)?precision:{precision:precision,thousand:thousand,decimal:decimal},lib.settings.number),usePrecision=checkPrecision(opts.precision),negative=number<0?"-":"",base=parseInt(toFixed(Math.abs(number||0),usePrecision),10)+"",mod=base.length>3?base.length%3:0;return negative+(mod?base.substr(0,mod)+opts.thousand:"")+base.substr(mod).replace(/(\d{3})(?=\d)/g,"$1"+opts.thousand)+(usePrecision?opts.decimal+toFixed(Math.abs(number),usePrecision).split(".")[1]:"")};var formatMoney=lib.formatMoney=function(number,symbol,precision,thousand,decimal,format){if(isArray(number)){return map(number,function(val){return formatMoney(val,symbol,precision,thousand,decimal,format)})}number=unformat(number);var opts=defaults(isObject(symbol)?symbol:{symbol:symbol,precision:precision,thousand:thousand,decimal:decimal,format:format},lib.settings.currency),formats=checkCurrencyFormat(opts.format),useFormat=number>0?formats.pos:number<0?formats.neg:formats.zero;return useFormat.replace("%s",opts.symbol).replace("%v",formatNumber(Math.abs(number),checkPrecision(opts.precision),opts.thousand,opts.decimal))};lib.formatColumn=function(list,symbol,precision,thousand,decimal,format){if(!list)return[];var opts=defaults(isObject(symbol)?symbol:{symbol:symbol,precision:precision,thousand:thousand,decimal:decimal,format:format},lib.settings.currency),formats=checkCurrencyFormat(opts.format),padAfterSymbol=formats.pos.indexOf("%s")<formats.pos.indexOf("%v")?true:false,maxLength=0,formatted=map(list,function(val,i){if(isArray(val)){return lib.formatColumn(val,opts)}else{val=unformat(val);var useFormat=val>0?formats.pos:val<0?formats.neg:formats.zero,fVal=useFormat.replace("%s",opts.symbol).replace("%v",formatNumber(Math.abs(val),checkPrecision(opts.precision),opts.thousand,opts.decimal));if(fVal.length>maxLength)maxLength=fVal.length;return fVal}});return map(formatted,function(val,i){if(isString(val)&&val.length<maxLength){return padAfterSymbol?val.replace(opts.symbol,opts.symbol+new Array(maxLength-val.length+1).join(" ")):new Array(maxLength-val.length+1).join(" ")+val}return val})};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports){exports=module.exports=lib}exports.accounting=lib}else if(typeof define==="function"&&define.amd){define([],function(){return lib})}else{lib.noConflict=function(oldAccounting){return function(){root.accounting=oldAccounting;lib.noConflict=undefined;return lib}}(root.accounting);root["accounting"]=lib}})(this)},{}],accounting:[function(require,module,exports){module.exports=require("s0+nZs")},{}]},{},[]);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);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.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}({"hi+lsI":[function(require,module,exports){(function(definition){if(typeof exports==="object"){var Common=require("./lib/common.js");var DayCountBasis=require("./lib/daycountbasis.js");var Bonds=require("./lib/bonds.js");var Depreciation=require("./lib/depreciation.js");var Irr=require("./lib/irr.js");var Loan=require("./lib/loan.js");var Misc=require("./lib/misc.js");var TBill=require("./lib/tbill.js");var Tvm=require("./lib/tvm.js");var OddBonds=require("./lib/oddbonds.js");module.exports=definition(Common,DayCountBasis,Bonds,Depreciation,Irr,Loan,Misc,TBill,Tvm,OddBonds)}else if(typeof define==="function"&&define.amd){requirejs.config({baseUrl:"lib"});define(["common","daycountbasis","bonds","depreciation","irr","loan","misc","tbill","tvm","oddbonds"],definition)}})(function(Common,DayCountBasis,Bonds,Depreciation,Irr,Loan,Misc,TBill,Tvm,OddBonds){var scope=this.Financial={};scope.COUPDAYS=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPDAYS(settlement,maturity,frequency,basis)};scope.COUPPCD=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPPCD(settlement,maturity,frequency,basis)};scope.COUPNCD=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPNCD(settlement,maturity,frequency,basis)};scope.COUPNUM=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPNUM(settlement,maturity,frequency,basis)};scope.COUPDAYSBS=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPDAYSBS(settlement,maturity,frequency,basis)};scope.COUPDAYSNC=function(settlement,maturity,frequency,basis){return DayCountBasis.COUPDAYSNC(settlement,maturity,frequency,basis)};scope.YEARFRAC=function(startDate,endDate,basis){return DayCountBasis.YEARFRAC(startDate,endDate,basis)};scope.ACCRINT=function(issue,first,settlement,rate,par,frequency,basis,method){return Bonds.ACCRINT(issue,first,settlement,rate,par,frequency,basis,method)};scope.ACCRINTM=function(issue,settlement,rate,par,basis){return Bonds.ACCRINTM(issue,settlement,rate,par,basis)};scope.PRICE=function(settlement,maturity,rate,yld,redemption,frequency,basis){return Bonds.PRICE(settlement,maturity,rate,yld,redemption,frequency,basis)};scope.PRICEMAT=function(settlement,maturity,issue,rate,yld,basis){return Bonds.PRICEMAT(settlement,maturity,issue,rate,yld,basis)};scope.YIELDMAT=function(settlement,maturity,issue,rate,pr,basis){return Bonds.YIELDMAT(settlement,maturity,issue,rate,pr,basis)};scope.INTRATE=function(settlement,maturity,investment,redemption,basis){return Bonds.INTRATE(settlement,maturity,investment,redemption,basis)};scope.RECEIVED=function(settlement,maturity,investment,discount,basis){return Bonds.RECEIVED(settlement,maturity,investment,discount,basis)};scope.DISC=function(settlement,maturity,pr,redemption,basis){return Bonds.DISC(settlement,maturity,pr,redemption,basis)};scope.PRICEDISC=function(settlement,maturity,discount,redemption,basis){return Bonds.PRICEDISC(settlement,maturity,discount,redemption,basis)};scope.YIELDDISC=function(settlement,maturity,pr,redemption,basis){return Bonds.YIELDDISC(settlement,maturity,pr,redemption,basis)};scope.DURATION=function(settlement,maturity,coupon,yld,frequency,basis){return Bonds.DURATION(settlement,maturity,coupon,yld,frequency,basis)};scope.MDURATION=function(settlement,maturity,coupon,yld,frequency,basis){return Bonds.MDURATION(settlement,maturity,coupon,yld,frequency,basis)};scope.DB=function(cost,salvage,life,period,month){return Depreciation.DB(cost,salvage,life,period,month)};scope.SLN=function(cost,salvage,life){return Depreciation.SLN(cost,salvage,life)};scope.SYD=function(cost,salvage,life,per){return Depreciation.SYD(cost,salvage,life,per)};scope.DDB=function(cost,salvage,life,period,factor){return Depreciation.DDB(cost,salvage,life,period,factor)};scope.VDB=function(cost,salvage,life,startPeriod,endPeriod,factor,bflag){return Depreciation.VDB(cost,salvage,life,startPeriod,endPeriod,factor,bflag)};scope.AMORLINC=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis){return Depreciation.AMORLINC(cost,datePurchased,firstPeriod,salvage,period,rate,basis)};scope.AMORDEGRC=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint){return Depreciation.AMORDEGRC(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint)};scope.IRR=function(cfs,guess){return Irr.IRR(cfs,guess)};scope.NPV=function(r,cfs){return Irr.NPV(r,cfs)};scope.MIRR=function(cfs,financeRate,reinvestRate){return Irr.MIRR(cfs,financeRate,reinvestRate)};scope.XNPV=function(r,cfs,dates){return Irr.XNPV(r,cfs,dates)};scope.XIRR=function(cfs,dates,guess){return Irr.XIRR(cfs,dates,guess)};scope.IPMT=function(r,per,nper,pv,fv,pd){return Loan.IPMT(r,per,nper,pv,fv,pd)};scope.PPMT=function(r,per,nper,pv,fv,pd){return Loan.PPMT(r,per,nper,pv,fv,pd)};scope.CUMIPMT=function(r,nper,pv,startPeriod,endPeriod,pd){return Loan.CUMIPMT(r,nper,pv,startPeriod,endPeriod,pd)};scope.CUMPRINC=function(r,nper,pv,startPeriod,endPeriod,pd){return Loan.CUMPRINC(r,nper,pv,startPeriod,endPeriod,pd)};scope.ISPMT=function(r,per,nper,pv){return Loan.ISPMT(r,per,nper,pv)};scope.DOLLARDE=function(fractionalDollar,fraction){return Misc.DOLLARDE(fractionalDollar,fraction) | |
};scope.DOLLARFR=function(fractionalDollar,fraction){return Misc.DOLLARFR(fractionalDollar,fraction)};scope.EFFECT=function(nominalRate,npery){return Misc.EFFECT(nominalRate,npery)};scope.NOMINAL=function(effectRate,npery){return Misc.NOMINAL(effectRate,npery)};scope.TBILLEQ=function(settlement,maturity,discount){return TBill.TBILLEQ(settlement,maturity,discount)};scope.TBILLYIELD=function(settlement,maturity,pr){return TBill.TBILLYIELD(settlement,maturity,pr)};scope.TBILLPRICE=function(settlement,maturity,discount){return TBill.TBILLPRICE(settlement,maturity,discount)};scope.PV=function(r,nper,pmt,fv,pd){return Tvm.PV(r,nper,pmt,fv,pd)};scope.FV=function(r,nper,pmt,pv,pd){return Tvm.FV(r,nper,pmt,pv,pd)};scope.PMT=function(r,nper,pv,fv,pd){return Tvm.PMT(r,nper,pv,fv,pd)};scope.NPER=function(r,pmt,pv,fv,pd){return Tvm.NPER(r,pmt,pv,fv,pd)};scope.RATE=function(nper,pmt,pv,fv,pd,guess){return Tvm.RATE(nper,pmt,pv,fv,pd,guess)};scope.FVSCHEDULE=function(pv,interests){return Tvm.FVSCHEDULE(pv,interests)};scope.ODDFPRICE=function(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis){return OddBonds.ODDFPRICE(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis)};scope.ODDFYIELD=function(settlement,maturity,issue,firstCoupon,rate,pr,redemption,frequency,basis){return OddBonds.ODDFYIELD(settlement,maturity,issue,firstCoupon,rate,pr,redemption,frequency,basis)};scope.ODDLPRICE=function(settlement,maturity,lastInterest,rate,yld,redemption,frequency,basis){return OddBonds.ODDLPRICE(settlement,maturity,lastInterest,rate,yld,redemption,frequency,basis)};scope.ODDLYIELD=function(settlement,maturity,lastInterest,rate,pr,redemption,frequency,basis){return OddBonds.ODDLYIELD(settlement,maturity,lastInterest,rate,pr,redemption,frequency,basis)};return scope})},{"./lib/bonds.js":3,"./lib/common.js":4,"./lib/daycountbasis.js":5,"./lib/depreciation.js":6,"./lib/irr.js":7,"./lib/loan.js":8,"./lib/misc.js":9,"./lib/oddbonds.js":10,"./lib/tbill.js":11,"./lib/tvm.js":12}],financial:[function(require,module,exports){module.exports=require("hi+lsI")},{}],3:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var DayCount=require("../lib/daycountbasis.js");module.exports=definition(moment,Common,DayCount)}else if(typeof define==="function"&&define.amd){define(["moment","common","daycountbasis"],definition)}})(function(moment,Common,DayCount){var scope=this.Bonds={};var getPriceYieldFactors=function(settlement,maturity,frequency,basis){var dc=DayCount.dayCount(basis);var n=dc.CoupNum(settlement,maturity,frequency);var pcd=dc.CoupPCD(settlement,maturity,frequency);var a=dc.DaysBetween(pcd,settlement,DayCount.NumDenumPosition.Numerator);var e=dc.CoupDays(settlement,maturity,frequency);var dsc=e-a;return[n,pcd,a,e,dsc]};var yieldFunc=function(settlement,maturity,rate,pr,redemption,frequency,basis){var priceYieldFactors=getPriceYieldFactors(settlement,maturity,frequency,basis);var n=priceYieldFactors[0];var pcd=priceYieldFactors[1];var a=priceYieldFactors[2];var e=priceYieldFactors[3];var dsr=priceYieldFactors[4];if(n<=1){var par=100;var firstNum=redemption/100+rate/frequency-(par/100+a/e*rate/frequency);var firstDen=par/100+a/e*rate/frequency;return firstNum/firstDen*frequency*e/dsr}else{var f=function(yld){return scope.PRICE(settlement,maturity,rate,yld,redemption,frequency,basis-pr)};return Common.findRoot(f,.05)}};var getMatFactors=function(settlement,maturity,issue,basis){var dc=DayCount.dayCount(basis);var b=dc.DaysInYear(issue,settlement);var dim=dc.DaysBetween(issue,maturity,DayCount.NumDenumPosition.Numerator);var a=dc.DaysBetween(issue,settlement,DayCount.NumDenumPosition.Numerator);var dsm=dim-a;return[b,dim,a,dsm]};var getCommonFactors=function(settlement,maturity,basis){var dc=DayCount.dayCount(basis);var dim=dc.DaysBetween(settlement,maturity,DayCount.NumDenumPosition.Numerator);var b=dc.DaysInYear(settlement,maturity);return[dim,b]};var duration=function(settlement,maturity,coupon,yld,frequency,basis,isMDuration){var dc=DayCount.dayCount(basis);var dbc=dc.CoupDaysBS(settlement,maturity,frequency);var e=dc.CoupDays(settlement,maturity,frequency);var n=dc.CoupNum(settlement,maturity,frequency);var dsc=e-dbc;var x1=dsc/e;var x2=x1+n-1;var x3=yld/frequency+1;var x4=Math.pow(x3,x2);if(x4===0){}var term1=x2*100/x4;var term3=100/x4;var aggrFunction=function(acc,index){var x5=index-1+x1;var x6=Math.pow(x3,x5);if(x6===6){}var x7=100*coupon/frequency/x6;var a=acc[0];var b=acc[1];return[a+x7*x5,b+x7]};var ag=Common.aggrBetween(1,n,aggrFunction,[0,0]);var term2=ag[0];var term4=ag[1];var term5=term1+term2;var term6=term3+term4;if(term6===0){}if(isMDuration===false){return term5/term6/frequency}else{return term5/term6/frequency/x3}};scope.ACCRINT=function(issue,first,settlement,rate,par,frequency,basis,method){if(basis===null||basis===undefined){basis=0}if(method===null||method===undefined){method=true}if(typeof rate!=="number"||typeof par!=="number"||typeof frequency!=="number"||typeof basis!="number"){return"#VALUE!"}if(!moment(issue).isValid()||!moment(first).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(rate<=0||par<=0){return"#NUM!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(issue).diff(moment(settlement))>=0){return"#NUM!"}par=typeof par==="undefined"?0:1e3;var issue=moment(issue);var first=moment(first);var firstInterest=first.clone();var settlement=moment(settlement);var dc=DayCount.dayCount(basis);var freq=frequency;var numMonths=DayCount.freq2months(freq);var numMonthsNeg=-numMonths;var endMonthBond=Common.isLastDayOfMonth(first);if(method===true){method=Common.AccrIntCalcMethod.FromIssueToSettlement}else{method=Common.AccrIntCalcMethod.FromFirstToSettlement}var pcd=null;if(settlement.isAfter(firstInterest)&&method===Common.AccrIntCalcMethod.FromIssueToSettlement){pcd=DayCount.findPcdNcd(firstInterest,settlement,numMonths,basis,endMonthBond)[0]}else{pcd=dc.ChangeMonth(firstInterest,numMonthsNeg,endMonthBond)}var firstDate=issue.isAfter(pcd)?issue:pcd;var days=dc.DaysBetween(firstDate,settlement,DayCount.NumDenumPosition.Numerator);var coupDays=dc.CoupDays(pcd,firstInterest,freq);var aggFunction=function(apcd,ancd){var afirstDate=issue.isAfter(apcd)?issue:apcd;var adays=null;if(basis===DayCount.DayCountBasis.UsPsa30_360){var psaMethod=issue.isAfter(apcd)?DayCount.Method360Us.ModifyStartDate:DayCount.Method360Us.ModifyBothDates;adays=DayCount.dateDiff360Us(afirstDate,ancd,psaMethod)}else{adays=dc.DaysBetween(afirstDate,ancd,DayCount.NumDenumPosition.Numerator)}var acoupDays=null;if(basis===DayCount.DayCountBasis.UsPsa30_360){acoupDays=DayCount.dateDiff360Us(apcd,ancd,DayCount.Method360Us.ModifyBothDates)}else{if(basis===DayCount.DayCountBasis.Actual365){acoupDays=365/freq}else{acoupDays=dc.DaysBetween(apcd,ancd,DayCount.NumDenumPosition.Denumerator)}}var result=null;if(apcd.isAfter(issue)||apcd.isSame(issue)){result=method}else{result=adays/acoupDays}return result};var result=DayCount.datesAggregate1(pcd,issue,numMonthsNeg,basis,aggFunction,days/coupDays,endMonthBond);var a=result[2];return par*rate/freq*a};scope.ACCRINTM=function(issue,settlement,rate,par,basis){if(basis===null||basis===undefined){basis=0}if(typeof rate!=="number"||typeof par!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(issue).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(rate<=0||par<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(issue).diff(moment(settlement))>=0){return"#NUM!"}issue=moment(issue);settlement=moment(settlement);var dc=DayCount.dayCount(basis);var days=dc.DaysBetween(issue,settlement,DayCount.NumDenumPosition.Numerator);var daysInYear=dc.DaysInYear(issue,settlement);return par*rate*(days/daysInYear)};scope.PRICE=function(settlement,maturity,rate,yld,redemption,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof rate!=="number"||typeof yld!=="number"||typeof redemption!=="number"||typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(rate<0||yld<0){return"#NUM!"}if(redemption<=0){return"#NUM!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var pyf=getPriceYieldFactors(settlement,maturity,frequency,basis);var n=pyf[0];var pcd=pyf[1];var a=pyf[2];var e=pyf[3];var dsc=pyf[4];var coupon=100*rate/frequency;var accrInt=100*rate/frequency*a/e;var pvFactor=function(k){var base=1+yld/frequency;var exp=k-1+dsc/e;return Math.pow(base,exp)};var pvOfRedemption=redemption/pvFactor(n);var pvOfCoupons=0;for(var k=1;k<=n;k++){pvOfCoupons=pvOfCoupons+coupon/pvFactor(k)}if(n===1){return(redemption+coupon)/(1+dsc/e*yld/frequency)-accrInt}else{return pvOfRedemption+pvOfCoupons-accrInt}};scope.PRICEMAT=function(settlement,maturity,issue,rate,yld,basis){if(basis===null||basis===undefined){basis=0}if(typeof rate!=="number"||typeof yld!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()||!moment(issue).isValid()){return"#VALUE!"}if(rate<0||yld<0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);issue=moment(issue);var matFactors=getMatFactors(settlement,maturity,issue,basis);var b=matFactors[0];var dim=matFactors[1];var a=matFactors[2];var dsm=matFactors[3];var num1=100+dim/b*rate*100;var den1=1+dsm/b*yld;var fact2=a/b*rate*100;return num1/den1-fact2};scope.YIELDMAT=function(settlement,maturity,issue,rate,pr,basis){if(basis===null||basis===undefined){basis=0}if(typeof rate!=="number"||typeof pr!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()||!moment(issue).isValid()){return"#VALUE!"}if(rate<0||pr<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);issue=moment(issue);var matFactors=getMatFactors(settlement,maturity,issue,basis);var b=matFactors[0];var dim=matFactors[1];var a=matFactors[2];var dsm=matFactors[3];var term1=dim/b*rate+1-pr/100-a/b*rate;var term2=pr/100+a/b*rate;var term3=b/dsm;return term1/term2*term3};scope.INTRATE=function(settlement,maturity,investment,redemption,basis){if(basis===null||basis===undefined){basis=0}if(typeof investment!=="number"||typeof redemption!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(investment<=0||redemption<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];return(redemption-investment)/investment*b/dim};scope.RECEIVED=function(settlement,maturity,investment,discount,basis){if(basis===null||basis===undefined){basis=0}if(typeof discount!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(investment<=0||discount<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];var discountFactor=discount*dim/b;return investment/(1-discountFactor)};scope.DISC=function(settlement,maturity,pr,redemption,basis){if(basis===null||basis===undefined){basis=0}if(typeof pr!=="number"||typeof redemption!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(pr<=0||redemption<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];return(-pr/redemption+1)*b/dim};scope.PRICEDISC=function(settlement,maturity,discount,redemption,basis){if(basis===null||basis===undefined){basis=0}if(typeof discount!=="number"||typeof redemption!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(discount<=0||redemption<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];return redemption-discount*redemption*dim/b};scope.YIELDDISC=function(settlement,maturity,pr,redemption,basis){if(basis===null||basis===undefined){basis=0}if(typeof pr!=="number"||typeof redemption!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(pr<=0||redemption<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);var commonFactors=getCommonFactors(settlement,maturity,basis);var dim=commonFactors[0];var b=commonFactors[1];return(redemption-pr)/pr*b/dim};scope.DURATION=function(settlement,maturity,coupon,yld,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof coupon!=="number"||typeof yld!=="number"||typeof basis!=="number"||typeof frequency!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(coupon<0||yld<0){return"#NUM!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);return duration(settlement,maturity,coupon,yld,frequency,basis,false)};scope.MDURATION=function(settlement,maturity,coupon,yld,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof coupon!=="number"||typeof yld!=="number"||typeof basis!=="number"||typeof frequency!=="number"){return"#VALUE!"}if(!moment(maturity).isValid()||!moment(settlement).isValid()){return"#VALUE!"}if(coupon<0||yld<0){return"#NUM!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(moment(settlement).diff(moment(maturity))>=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);return duration(settlement,maturity,coupon,yld,frequency,basis,true)};return scope})},{"../lib/common.js":4,"../lib/daycountbasis.js":5,moment:13}],4:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");module.exports=definition(moment)}else if(typeof define==="function"&&define.amd){define(["moment"],definition)}})(function(moment){var scope=this.Common={};scope.isLastDayOfMonth=function(date){var lastDay=scope.lastDayOfMonth(date);return lastDay===date.date()};scope.lastDayOfMonth=function(date){return date.daysInMonth()};scope.isLastDayOfFebruary=function(date){var m=date.month();return m===2&&scope.isLastDayOfMonth(date)};var AccrIntCalcMethod={};AccrIntCalcMethod.FromFirstToSettlement=0;AccrIntCalcMethod.FromIssueToSettlement=1;scope.AccrIntCalcMethod=AccrIntCalcMethod;var VdbSwitch={};VdbSwitch.DontSwitchToStraightLine=1;VdbSwitch.SwitchToStraightLine=0;scope.VdbSwitch=VdbSwitch;var PaymentDue={};PaymentDue.EndOfPeriod=0;PaymentDue.BeginningOfPeriod=1;scope.PaymentDue=PaymentDue;scope.rest=function(x){return x-Math.floor(x)};scope.round=function(excelComplaint,x){if(excelComplaint){var k=x.toFixed(13);var k1=parseFloat(k);return Math.round(k1)}else{return Math.round(x)}};var precision=1e-4;scope.areEqual=function(x,y){if(Math.abs(x-y)<precision){return true}else{return false}};scope.log10=function(val){return Math.log(val)/Math.LN10};var fold=function(f,state,source){var index=0;var length=source.length;var value=state;var isValueSet=true;for(;length>index;index++){value=f(value,source[index],index,source)}return value};scope.map=function(f,array){var result=[];var len=array.length;for(var index=0;index<len;index++){var val=f(array[index]);result.push(val)}return result};scope.mapi=function(f,array){var result=[];var len=array.length;for(var index=0;index<len;index++){var val=f(index,array[index]);result.push(val)}return result};scope.map2=function(f,array1,array2){var result=[];var len1=array1.length;var len2=array2.length;var len=len1>=len2?len2:len1;for(var index=0;index<len;index++){var val=f(array1[index],array2[index]);result.push(val)}return result};scope.allValidDates=function(array){for(var i=0;i<array.length;i++){if(!moment(array[i]).isValid()){return false}}return true};scope.allValidNumbers=function(array){for(var i=0;i<array.length;i++){if(typeof array[i]!=="number"&&array[i]!==null){return false}}return true};scope.raisable=function(b,p){return!(1+b<0&&p%1!==0)};scope.idem=function(x){return x};scope.sumBy=function(f,array){var sumList=scope.map(f,array);var sum=0;for(var index=0;index<sumList.length;index++){sum=sum+sumList[index]}return sum};scope.aggrBetween=function(startPeriod,endPeriod,f,initialValue){var s=[];if(startPeriod<=endPeriod){for(var i=startPeriod;i<=endPeriod;i++){s.push(i)}}else{for(var i=startPeriod;i>=endPeriod;i--){s.push(i)}}return fold(f,initialValue,s)};var findBounds=function(f,guess,minBound,maxBound,precision){if(guess<=minBound||guess>=maxBound){return null}var shift=.01;var factor=1.6;var maxTries=60;var adjValueToMin=function(value){return value<=minBound?minBound+precision:value};var adjValueToMax=function(value){return value>=maxBound?maxBound-precision:value};var rfindBounds=function(low,up,tries){tries=tries-1;if(tries===0){return null}var lower=adjValueToMin(low);var upper=adjValueToMax(up);var x=f(lower);var y=f(upper);if(x*y===0){return[lower,upper]}if(x*y<0){return[lower,upper]}if(x*y>0){return rfindBounds(lower+factor*(lower-upper),upper+factor*(upper-lower),tries)}};var low=adjValueToMin(guess-shift);var high=adjValueToMax(guess+shift);return rfindBounds(low,high,maxTries)};var bisection=function(f1,a1,b1,count1,precision1){var maxCount=200;var helper=function(f,a,b,count,precision){if(a===b){return null}var fa=f(a);if(Math.abs(fa)<precision){return a}else{var fb=f(b);if(Math.abs(fb)<precision){return b}else{var newCount=count+1;if(newCount>maxCount){return null}if(fa*fb>0){return null}var midvalue=a+.5*(b-a);var fmid=f(midvalue);if(Math.abs(fmid)<precision){return midvalue}else if(fa*fmid<0){return helper(f,a,midvalue,newCount,precision)}else if(fa*fmid>0){return helper(f,midvalue,b,newCount,precision)}else{return null}}}};return helper(f1,a1,b1,count1,precision1)};var newton=function(f1,x1,count1,precision1){var maxCount=20;var helper=function(f,x,count,precision){var d=function(f,x){return(f(x+precision)-f(x-precision))/(2*precision)};var fx=f(x);var Fx=d(f,x);var newX=x-fx/Fx;if(Math.abs(newX-x)<precision){return newX}else if(count>maxCount){return null}else{return helper(f,newX,count+1,precision)}};return helper(f1,x1,count1,precision1)};scope.findRoot=function(f,guess){var precision=1e-7;var newtValue=newton(f,guess,0,precision);var sameSign=function(n1,n2){return n1*n2>0};if(newtValue!=null&&sameSign(guess,newtValue)){return newtValue}else{var bounds=findBounds(f,guess,-1,Number.MAX_VALUE,precision);var lower=bounds[0];var upper=bounds[1];return bisection(f,lower,upper,0,precision)}};return scope})},{moment:13}],5:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");module.exports=definition(moment,Common)}else if(typeof define==="function"&&define.amd){define(["moment","common"],definition)}})(function(moment,Common){var scope=this.DayCount={};var UsPsa30_360=0;var ActualActual=1;var Actual360=2;var Actual365=3;var Europe30_360=4;var DayCountBasis={};DayCountBasis.UsPsa30_360=0;DayCountBasis.ActualActual=1;DayCountBasis.Actual360=2;DayCountBasis.Actual365=3;DayCountBasis.Europe30_360=4;scope.DayCountBasis=DayCountBasis;var Method360Us={};Method360Us.ModifyStartDate=0;Method360Us.ModifyBothDates=1;scope.Method360Us=Method360Us;var NumDenumPosition={};NumDenumPosition.Denumerator=0;NumDenumPosition.Numerator=1;scope.NumDenumPosition=NumDenumPosition;scope.dateDiff360=function(startDate,endDate){var startDate=moment(startDate);var endDate=moment(endDate);var sDay=startDate.date();var sMonth=startDate.month();var sYear=startDate.year();var eDay=endDate.date();var eMonth=endDate.month();var eYear=endDate.year();return(eYear-sYear)*360+(eMonth-sMonth)*30+(eDay-sDay)};scope.dateDiff365=function(startDate,endDate){var sDay=startDate.date();var sMonth=startDate.month();var sYear=startDate.year();var eDay=endDate.date();var eMonth=endDate.month();var eYear=endDate.year();var sd1=sDay,sm1=sMonth,sy1=sYear,ed1=eDay,em1=eMonth,ey1=eYear;var startDate1=startDate.clone(),endDate1=endDate.clone();if(sd1>28&&sm1===2){sd1=28}if(ed1>28&&em1===2){ed1=28}var startd=new moment(new Date(sy1,sm1,sd1));var endd=new moment(new Date(ey1,em1,ed1));return(ey1-sy1)*365+endd.diff(startd,"days")};scope.dateDiff360Us=function(startDate,endDate,method360){var sDay=startDate.date();var sMonth=startDate.month();var sYear=startDate.year();var eDay=endDate.date();var eMonth=endDate.month();var eYear=endDate.year();var sd1=sDay,sm1=sMonth,sy1=sYear,ed1=eDay,em1=eMonth,ey1=eYear;var startDate1=startDate.clone(),endDate1=endDate.clone();if(Common.isLastDayOfFebruary(endDate1)&&(Common.isLastDayOfFebruary(startDate1)||method360===Method360Us.ModifyStartDate)){ed1=30}if(ed1===31&&(sd1>=30||method360===Method360Us.ModifyBothDates)){ed1=30}if(sd1===31){sd1=30}if(Common.isLastDayOfFebruary(startDate1)){sd1=30}var d1=moment(new Date(sy1,sm1,sd1));var d2=moment(new Date(ey1,em1,ed1));return scope.dateDiff360(d1,d2)};scope.dateDiff360Eu=function(startDate,endDate){var sDay=startDate.date();var sMonth=startDate.month();var sYear=startDate.year();var eDay=endDate.date();var eMonth=endDate.month();var eYear=endDate.year();var sd1=sDay,sm1=sMonth,sy1=sYear,ed1=eDay,em1=eMonth,ey1=eYear;var startDate1=startDate.clone(),endDate1=endDate.clone();if(sd1===31){sd1=30}if(ed1===31){ed1=30}var sDate=new moment(new Date(sy1,sm1,sd1));var eDate=new moment(new Date(ey1,em1,ed1));return scope.dateDiff360(sDate,eDate)};var fUsPsa30_360=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return 360/freq};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.UsPsa30_360)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.UsPsa30_360)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.UsPsa30_360)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return scope.dateDiff360Us(cpcd,settl,Method360Us.ModifyStartDate)};obj.CoupDaysNC=function(settl,mat,freq){var pdc=scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.UsPsa30_360);var ndc=scope.findNextCouponDate(settl,mat,freq,DayCountBasis.UsPsa30_360);var totDaysInCoup=scope.dateDiff360Us(pdc,ndc,Method360Us.ModifyBothDates);var daysToSettl=scope.dateDiff360Us(pdc,settl,Method360Us.ModifyStartDate);return totDaysInCoup-daysToSettl};obj.DaysBetween=function(issue,settl,position){return scope.dateDiff360Us(issue,settl,Method360Us.ModifyStartDate)};obj.DaysInYear=function(issue,settl){return 360};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,UsPsa30_360,returnLastDay)};return obj}();var fEurope30_360=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return 360/freq};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.Europ30_360)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.Europ30_360)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.Europ30_360)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return scope.dateDiff360Eu(cpcd,settl)};obj.CoupDaysNC=function(settl,mat,freq){var cncd=obj.CoupNCD(settl,mat,freq);return scope.dateDiff360Eu(settl,cncd)};obj.DaysBetween=function(issue,settl,position){return scope.dateDiff360Eu(issue,settl)};obj.DaysInYear=function(issue,settl){return 360};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,Europe30_360,returnLastDay)};return obj}();var fActual360=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return 360/freq};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.Actual360)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.Actual360)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.Actual360)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return settl.diff(cpcd,"days")};obj.CoupDaysNC=function(settl,mat,freq){var cncd=obj.CoupNCD(settl,mat,freq);return cncd.diff(settl,"days")};obj.DaysBetween=function(issue,settl,position){if(position===NumDenumPosition.Numerator){return settl.diff(issue,"days")}else{return scope.dateDiff360Us(issue,settl,Method360Us.ModifyStartDate)}};obj.DaysInYear=function(issue,settl){return 360};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,Actual360,returnLastDay)};return obj}();var fActual365=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return 365/freq};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.Actual365)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.Actual365)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.Actual365)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return settl.diff(cpcd,"days")};obj.CoupDaysNC=function(settl,mat,freq){var cncd=obj.CoupNCD(settl,mat,freq);return cncd.diff(settl,"days")};obj.DaysBetween=function(issue,settl,position){if(position==NumDenumPosition.Numerator){return settl.diff(issue,"days")}else{return scope.dateDiff365(issue,settl)}};obj.DaysInYear=function(issue,settl){return 365};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,Actual365,returnLastDay)};return obj}();scope.actualCoupDays=function(settl,mat,freq){var pcd=scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.ActualActual);var ncd=scope.findNextCouponDate(settl,mat,freq,DayCountBasis.ActualActual);return ncd.diff(pcd,"days")};var fActualActual=function(){var obj={};obj.CoupDays=function(settl,mat,freq){return scope.actualCoupDays(settl,mat,freq)};obj.CoupPCD=function(settl,mat,freq){return scope.findPreviousCouponDate(settl,mat,freq,DayCountBasis.ActualActual)};obj.CoupNCD=function(settl,mat,freq){return scope.findNextCouponDate(settl,mat,freq,DayCountBasis.ActualActual)};obj.CoupNum=function(settl,mat,freq){return scope.numberOfCoupons(settl,mat,freq,DayCountBasis.ActualActual)};obj.CoupDaysBS=function(settl,mat,freq){var cpcd=obj.CoupPCD(settl,mat,freq);return settl.diff(cpcd,"days")};obj.CoupDaysNC=function(settl,mat,freq){var cncd=obj.CoupNCD(settl,mat,freq);return cncd.diff(settl,"days")};obj.DaysBetween=function(issue,settl,position){return settl.diff(issue,"days")};obj.DaysInYear=function(issue,settl){if(!scope.lessOrEqualToAYearApart(issue,settl)){var totalYears=settl.year()-issue.year()+1;var d1=moment(new Date(issue.year(),1,1));var d2=moment(new Date(settl.year()+1,1,1));var totalDays=d2.diff(d1,"days");return totalDays/totalYears}else{if(scope.considerAsBisestile(issue,settl)){return 366}else{return 365}}};obj.ChangeMonth=function(date,months,returnLastDay){return scope.changeMonth(date,months,DayCountBasis.ActualActual,returnLastDay)};return obj}();scope.DayCounts=[fUsPsa30_360,fActualActual,fActual360,fActual365,fEurope30_360];scope.dayCount=function(basis){if(basis>=0&&basis<=4){return scope.DayCounts[basis]}return null};scope.freq2months=function(freq){return 12/freq};scope.isLastDayOfMonthBasis=function(date,basis){var d=date.date();return Common.isLastDayOfMonth(date)||d===30&&basis===UsPsa30_360};scope.changeMonth=function(date,numMonths,basis,returnLastDay){var origDate=date.clone();var newDate=origDate.add("months",numMonths);var lastDay=Common.lastDayOfMonth(newDate);if(returnLastDay){return moment(new Date(newDate.year(),newDate.month(),lastDay))}else{return newDate}};scope.noActionDates=function(d1,d2){return 0};scope.datesAggregate1=function(startDate,endDate,numMonths,basis,f,acc,returnLastMonth){var frontDate=startDate.clone();var trailingDate=endDate.clone();var s1=frontDate.isAfter(endDate)||frontDate.isSame(endDate);var s2=endDate.isAfter(frontDate)||endDate.isSame(frontDate);var stop=numMonths>0?s1:s2;while(stop===false){trailingDate=frontDate;frontDate=scope.changeMonth(frontDate,numMonths,basis,returnLastMonth);var func=f(frontDate,trailingDate);acc=acc+func;s1=frontDate.isAfter(endDate)||frontDate.isSame(endDate);s2=endDate.isAfter(frontDate)||endDate.isSame(frontDate);stop=numMonths>0?s1:s2}return[frontDate,trailingDate,acc]};scope.findPcdNcd=function(startDate,endDate,numMonths,basis,returnLastMonth){var result=scope.datesAggregate1(startDate,endDate,numMonths,basis,scope.noActionDates,0,returnLastMonth);return[result[0],result[1]]};scope.findCouponDates=function(settl,mat,freq,basis){var endMonth=Common.isLastDayOfMonth(mat);var numMonths=-scope.freq2months(freq);return scope.findPcdNcd(mat,settl,numMonths,basis,endMonth)};scope.findPreviousCouponDate=function(settl,mat,freq,basis){return scope.findCouponDates(settl,mat,freq,basis)[0]};scope.findNextCouponDate=function(settl,mat,freq,basis){return scope.findCouponDates(settl,mat,freq,basis)[1]};scope.numberOfCoupons=function(settl,mat,freq,basis){var pcdate=scope.findPreviousCouponDate(settl,mat,freq,basis);var pcy=pcdate.year();var pcm=pcdate.month();var my=mat.year();var mm=mat.month();var months=(my-pcy)*12+(mm-pcm);return months*freq/12};scope.lessOrEqualToAYearApart=function(date1,date2){var y1=date1.year(),y2=date2.year();var m1=date1.month(),m2=date2.month();var d1=date1.date(),d2=date2.date();return y1===y2||y2===y1+1&&(m1>m2||m1===m2&&d1>=d2)};scope.isFeb29BetweenConsecutiveYears=function(date1,date2){var y1=date1.year(),y2=date2.year();var m1=date1.month(),m2=date2.month();var d1=date1.date(),d2=date2.date();if(y1===y2&&date1.isLeapYear()){return m1<=2&&m2>2}if(y1===y2){return false}if(y2===y1+1){if(date1.isLeapYear()){return m1<=2}else{if(date2.isLeapYear()){return m2>2}else{return false}}}else{return false}};scope.considerAsBisestile=function(date1,date2){var y1=date1.year(),y2=date2.year();var m1=date1.month(),m2=date2.month();var d1=date1.date(),d2=date2.date();return y1===y2&&date1.isLeapYear()||m2===2&&d2===29||scope.isFeb29BetweenConsecutiveYears(date1,date2)};scope.COUPDAYS=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!" | |
}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupDays(settlement,maturity,frequency)};scope.COUPPCD=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupPCD(settlement,maturity,frequency)};scope.COUPNCD=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupNCD(settlement,maturity,frequency)};scope.COUPNUM=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupNum(settlement,maturity,frequency)};scope.COUPDAYSBS=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupDaysBS(settlement,maturity,frequency)};scope.COUPDAYSNC=function(settlement,maturity,frequency,basis){if(basis===null||basis===undefined){basis=0}if(typeof frequency!=="number"||typeof basis!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if([1,2,4].indexOf(frequency)===-1){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}maturity=moment(maturity);settlement=moment(settlement);if(!maturity.isAfter(settlement)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.CoupDaysNC(settlement,maturity,frequency)};scope.YEARFRAC=function(startDate,endDate,basis){if(basis===null||basis===undefined){basis=0}if(typeof basis!=="number"){return"#VALUE!"}if(!moment(startDate).isValid()||!moment(endDate).isValid()){return"#VALUE!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}startDate=moment(startDate);endDate=moment(endDate);if(!endDate.isAfter(startDate)){return"#NUM!"}var dc=DayCount.dayCount(basis);return dc.DaysBetween(startDate,endDate,DayCount.NumDenumPosition.Numerator)/dc.DaysInYear(startDate,endDate)};return scope})},{"../lib/common.js":4,moment:13}],6:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var DayCount=require("../lib/daycountbasis.js");module.exports=definition(moment,Common,DayCount)}else if(typeof define==="function"&&define.amd){define(["moment","common","daycountbasis"],definition)}})(function(moment,Common,DayCount){var scope=this.Depreciation={};var deprRate=function(cost,salvage,life){var val=1-Math.pow(salvage/cost,1/life);return parseFloat(val.toFixed(3))};var deprForPeriod=function(cost,totDepr,rate){return(cost-totDepr)*rate};var deprForFirstPeriod=function(cost,rate,month){return cost*rate*month/12};var deprForLastPeriod=function(cost,totDepr,rate,month){return(cost-totDepr)*rate*(12-month)/12};var db=function(cost,salvage,life,period,month){var rate=deprRate(cost,salvage,life);var per=0;var totDepr=0;while(per<period){if(per===0){var depr=deprForFirstPeriod(cost,rate,month);if(Math.floor(period)<=1){return depr}else{totDepr=depr;per=per+1}}else{if(period<=life){if(per===Math.floor(period)-1){return deprForPeriod(cost,totDepr,rate)}else if(per===Math.floor(life)-1){return deprForLastPeriod(cost,totDepr,rate,month)}else{var depr=deprForPeriod(cost,totDepr,rate);totDepr=totDepr+depr}}else{if(per===Math.floor(period)-1){return deprForLastPeriod(cost,totDepr,rate,month)}else{var depr=deprForPeriod(cost,totDepr,rate);totDepr=totDepr+depr}}per=per+1}}};var sln=function(cost,salvage,life){return(cost-salvage)/life};var syd=function(cost,salvage,life,per){return(cost-salvage)*(life-per+1)*2/(life*(life+1))};var totalDepr=function(cost,salvage,life,period,factor,straightLine){var _ddb=function(totDepr,per){var frac=Common.rest(period);var ddbDeprFormula=function(totDepr){return Math.min((cost-totDepr)*(factor/life),cost-salvage-totDepr)};var slnDeprFormula=function(totDepr,aPeriod){return scope.SLN(cost-totDepr,salvage,life-aPeriod)};var ddbDepr=ddbDeprFormula(totDepr);var slnDepr=slnDeprFormula(totDepr,per);var isSln=straightLine&&ddbDepr<slnDepr;var depr=isSln===true?slnDepr:ddbDepr;var newTotalDepr=totDepr+depr;if(Math.floor(period)===0){return newTotalDepr*frac}else if(Math.floor(per)===Math.floor(period)-1){var ddbDeprNextPeriod=ddbDeprFormula(newTotalDepr);var slnDeprNextPeriod=slnDeprFormula(newTotalDepr,per+1);var isSlnNextPeriod=straightLine&&ddbDeprNextPeriod<slnDeprNextPeriod;var deprNextPeriod=null;if(isSlnNextPeriod){if(Math.floor(period)===Math.floor(life)){deprNextPeriod=0}else{deprNextPeriod=slnDeprNextPeriod}}else{deprNextPeriod=ddbDeprNextPeriod}return newTotalDepr+deprNextPeriod*frac}else{return _ddb(newTotalDepr,per+1)}};return _ddb(0,0)};var deprBetweenPeriods=function(cost,salvage,life,startPeriod,endPeriod,factor,straightLine){return totalDepr(cost,salvage,life,endPeriod,factor,straightLine)-totalDepr(cost,salvage,life,startPeriod,factor,straightLine)};var ddb=function(cost,salvage,life,period,factor){if(period>=2){return deprBetweenPeriods(cost,salvage,life,period-1,period,factor,false)}else{return totalDepr(cost,salvage,life,period,factor,false)}};var vdb=function(cost,salvage,life,startPeriod,endPeriod,factor,bflag){if(bflag===Common.VdbSwitch.DontSwitchToStraightLine){return deprBetweenPeriods(cost,salvage,life,startPeriod,endPeriod,factor,false)}else{return deprBetweenPeriods(cost,salvage,life,startPeriod,endPeriod,factor,true)}};var daysInYear=function(date,basis){if(basis===DayCount.DayCountBasis.ActualActual){if(date.isLeapYear()){return 366}else{return 365}}else{var dc=DayCount.dayCount(basis);return dc.DaysInYear(date,date)}};var firstDeprLinc=function(cost,datePurch,firstP,salvage,rate,assLife,basis){var fix29February=function(d1){var y=d1.year();var m=d1.month();var d=d1.date();if((basis===DayCount.DayCountBasis.ActualActual||basis===DayCount.DayCountBasis.Actual365)&&d1.isLeapYear()&&m===2&&d>=28){return moment(new Date(y,m,28))}else{return d1}};var dc=DayCount.dayCount(basis);var daysInYr=daysInYear(datePurch,basis);var datePurchased=fix29February(datePurch);var firstPeriod=fix29February(firstP);var firstLen=dc.DaysBetween(datePurchased,firstPeriod,DayCount.NumDenumPosition.Numerator);var firstDeprTemp=firstLen/daysInYr*rate*cost;var firstDepr=firstDeprTemp===0?cost*rate:firstDeprTemp;var assetLife=firstDeprTemp===0?assLife:assLife+1;var availDepr=cost-salvage;if(firstDepr>availDepr){return[availDepr,assetLife]}else{return[firstDepr,assetLife]}};var amorlinc=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis){var assetLifeTemp=Math.ceil(1/rate);var findDepr=function(countedPeriod,depr,availDepr){if(countedPeriod>period){return depr}else{var depr=depr>availDepr?availDepr:depr;var availDeprTemp=availDepr-depr;var availDepr=availDeprTemp<0?0:availDeprTemp;return findDepr(countedPeriod+1,depr,availDepr)}};if(cost===salvage||period>assetLifeTemp){return 0}else{var firstDepr=firstDeprLinc(cost,datePurchased,firstPeriod,salvage,rate,assetLifeTemp,basis)[0];if(period===0){return firstDepr}else{return findDepr(1,rate*cost,cost-salvage-firstDepr)}}};var deprCoeff=function(assetLife){var between=function(x1,x2){return assetLife>=x1&&assetLife<=x2};if(between(3,4)){return 1.5}else if(between(5,6)){return 2}else if(assetLife>6){return 2.5}else{return 1}};var amordegrc=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint){var assLife=Math.ceil(1/rate);if(cost===salvage||period>assLife){return 0}else{var dCoeff=deprCoeff(assLife);var deprR=rate*dCoeff;var fdl=firstDeprLinc(cost,datePurchased,firstPeriod,salvage,deprR,assLife,basis);var fDeprLinc=fdl[0];var assetLife=fdl[1];var firstDepr=Common.round(excelComplaint,fDeprLinc);var findDepr=function(countedPeriod,depr,deprRate,remainCost){if(countedPeriod>period){return Common.round(excelComplaint,depr)}else{var countedPeriod=countedPeriod+1;var calcT=assetLife-countedPeriod;var deprTemp=Common.areEqual(calcT,2)?remainCost*.5:deprRate*remainCost;var deprRate=Common.areEqual(calcT,2)?1:deprRate;var depr=null;if(remainCost<salvage){depr=remainCost-salvage<0?0:remainCost-salvage}else{return deprTemp}var remainCost=remainCost-depr;return findDepr(countedPeriod,depr,deprRate,remainCost)}};if(period===0){return firstDepr}else{return findDepr(1,0,deprR,cost-firstDepr)}}};scope.DB=function(cost,salvage,life,period,month){if(month===null||month===undefined){month=12}if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"||typeof period!=="number"||typeof month!=="number"){return"#VALUE!"}if(cost<0||salvage<0||life<=0||month<=0||period<=0){return"#NUM!"}if(month>12){return"#NUM!"}return db(cost,salvage,life,period,month)};scope.SLN=function(cost,salvage,life){if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"){return"#VALUE"}if(cost<0||salvage<0||life<=0){return"#NUM!"}return sln(cost,salvage,life)};scope.SYD=function(cost,salvage,life,per){if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"||typeof per!=="number"){return"#VALUE!"}if(cost<0||salvage<0||life<=0||per<=0){return"#NUM!"}return syd(cost,salvage,life,per)};scope.DDB=function(cost,salvage,life,period,factor){if(factor===null||factor===undefined){factor=2}if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"||typeof period!=="number"||typeof factor!=="number"){return"#VALUE!"}if(cost<0||salvage<0||life<=0||factor<=0||period<=0){return"#NUM!"}if(period===0){return Math.min(cost*(factor/life),cost-salvage)}else{return ddb(cost,salvage,life,period,factor)}};scope.VDB=function(cost,salvage,life,startPeriod,endPeriod,factor,bflag){if(factor===null||factor===undefined){factor=2}if(bflag===null||bflag===undefined){bflag=false}if(typeof cost!=="number"||typeof salvage!=="number"||typeof life!=="number"||typeof startPeriod!=="number"||typeof endPeriod!=="number"||typeof factor!=="number"||typeof bflag!=="boolean"){return"#VALUE!"}if(cost<0||salvage<0||life<=0||factor<=0||endPeriod<=0){return"#NUM!"}return vdb(cost,salvage,life,startPeriod,endPeriod,factor,bflag)};scope.AMORLINC=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis){if(basis===null||basis===undefined){basis=0}if(typeof cost!=="number"||typeof salvage!=="number"||typeof period!=="number"||typeof rate!=="number"||typeof basis!=="number"){return"#VALUE"}if(!moment(datePurchased).isValid()||!moment(firstPeriod).isValid()){return"#VALUE!"}if(cost<0||salvage<0||period<0||rate<0){return"#NUM"}if(basis===2){return"#NUM"}datePurchased=moment(datePurchased);firstPeriod=moment(firstPeriod);return amorlinc(cost,datePurchased,firstPeriod,salvage,period,rate,basis)};scope.AMORDEGRC=function(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint){if(basis===null||basis===undefined){basis=0}if(typeof cost!=="number"||typeof salvage!=="number"||typeof period!=="number"||typeof rate!=="number"||typeof basis!=="number"){return"#VALUE"}if(!moment(datePurchased).isValid()||!moment(firstPeriod).isValid()){return"#VALUE!"}if(cost<0||salvage<0||period<0||rate<0){return"#NUM"}if(basis===2){return"#NUM"}datePurchased=moment(datePurchased);firstPeriod=moment(firstPeriod);return amordegrc(cost,datePurchased,firstPeriod,salvage,period,rate,basis,excelComplaint)};return scope})},{"../lib/common.js":4,"../lib/daycountbasis.js":5,moment:13}],7:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var Tvm=require("../lib/tvm.js");module.exports=definition(moment,Common,Tvm)}else if(typeof define==="function"&&define.amd){define(["moment","common","tvm"],definition)}})(function(moment,Common,Tvm){var scope=this.Irr={};var pvFactor=Tvm.pvFactor;var npv=function(r,cfs){var f=function(i,cf){return cf*pvFactor(r,i+1)};return Common.sumBy(Common.idem,Common.mapi(f,cfs))};var irr=function(cfs,guess){var f=function(r){return npv(r,cfs)};return Common.findRoot(f,guess)};var mirr=function(cfs,financeRate,reinvestRate){var n=cfs.length;var fp=function(cf){return cf>0?cf:0};var fn=function(cf){return cf<0?cf:0};var positives=Common.map(fp,cfs);var negatives=Common.map(fn,cfs);var num=-npv(reinvestRate,positives)*Math.pow(1+reinvestRate,n);var denom=npv(financeRate,negatives)*(1+financeRate);return Math.pow(num/denom,1/(n-1))-1};var xnpv=function(r,cfs,dates){var d0=dates[0];var f=function(d,cf){var diff=d.diff(d0,"days");return cf/Math.pow(1+r,diff/365)};return Common.sumBy(Common.idem,Common.map2(f,dates,cfs))};var xirr=function(cfs,dates,guess){var f=function(r){return xnpv(r,cfs,dates)};return Common.findRoot(f,guess)};var validCfs=function(cfs){var _validCfs=function(cfs,pos,neg){if(pos===true&&neg===true){return true}else{if(cfs.length===0){return false}else{var h=cfs[0];var t=cfs.slice(1,cfs.length);if(h>0){return _validCfs(t,true,neg)}else{return _validCfs(t,pos,true)}}}};return _validCfs(cfs,false,false)};scope.IRR=function(cfs,guess){if(guess===null||guess===undefined){guess=.1}if(typeof guess!=="number"){return"#VALUE!"}if(!validCfs(cfs)){return"#NUM!"}return irr(cfs,guess)};scope.NPV=function(r,cfs){if(typeof r!=="number"){return"#VALUE!"}if(r===-1){return"#NUM!"}return npv(r,cfs)};scope.MIRR=function(cfs,financeRate,reinvestRate){if(typeof financeRate!=="number"||typeof reinvestRate!=="number"){return"#VALUE!"}if(financeRate===-1||reinvestRate===-1){return"#NUM!"}if(cfs.length<=1){return"#NUM!"}return mirr(cfs,financeRate,reinvestRate)};scope.XNPV=function(r,cfs,dates){if(typeof r!=="number"){return"#VALUE!"}if(cfs.length!==dates.length){return"#NUM!"}dates=Common.map(function(d){return moment(d)},dates);if(r===-1){return"#NUM!"}return xnpv(r,cfs,dates)};scope.XIRR=function(cfs,dates,guess){if(guess===null||guess===undefined){guess=.1}if(typeof guess!=="number"){return"#VALUE!"}if(!validCfs(cfs)){return"#NUM!"}if(cfs.length!==dates.length){return"#NUM!"}dates=Common.map(function(d){return moment(d)},dates);return xirr(cfs,dates,guess)};return scope})},{"../lib/common.js":4,"../lib/tvm.js":12,moment:13}],8:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var Tvm=require("../lib/tvm.js");module.exports=definition(moment,Common,Tvm)}else if(typeof define==="function"&&define.amd){define(["moment","common","tvm"],definition)}})(function(moment,Common,Tvm){var scope=this.Loan={};var pmt=Tvm.pmt;var fvFactor=Tvm.fvFactor;var annuityCertainPvFactor=Tvm.annuityCertainPvFactor;var ipmt=function(r,per,nper,pv,fv,pd){var result=-(pv*fvFactor(r,per-1)*r+pmt(r,nper,pv,fv,Common.PaymentDue.EndOfPeriod)*(fvFactor(r,per-1)-1));if(pd===Common.PaymentDue.EndOfPeriod){return result}else{return result/(1+r)}};var ppmt=function(r,per,nper,pv,fv,pd){return pmt(r,nper,pv,fv,pd)-ipmt(r,per,nper,pv,fv,pd)};var ispmt=function(r,per,nper,pv){var coupon=-pv*r;return coupon-coupon/nper*per};scope.IPMT=function(r,per,nper,pv,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(!Common.raisable(r,nper)){return"#NUM!"}if(!Common.raisable(r,per-1)){return"#NUM!"}if(fv===0&&pv===0){return"#NUM!"}if(r===-1&&nper<=0&&per<=0&&pd!==Common.PaymentDue.EndOfPeriod){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"#NUM!"}if(per<1||per>nper){return"#NUM!"}if(nper<=0){return"#NUM!"}if(per===1&&pd===Common.PaymentDue.BeginningOfPeriod){return 0}else if(r===-1){return-fv}else{return ipmt(r,per,nper,pv,fv,pd)}};scope.PPMT=function(r,per,nper,pv,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(!Common.raisable(r,nper)){return"#NUM!"}if(!Common.raisable(r,per-1)){return"#NUM!"}if(fv===0&&pv===0){return"#NUM!"}if(r===-1&&nper<=0&&per<=0&&pd!==Common.PaymentDue.EndOfPeriod){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"#NUM!"}if(per<1||per>nper){return"#NUM!"}if(nper<=0){return"#NUM!"}if(per===1&&pd===Common.PaymentDue.BeginningOfPeriod){return pmt(r,nper,pv,fv,pd)}else if(r===-1){return 0}else{return ppmt(r,per,nper,pv,fv,pd)}};scope.CUMIPMT=function(r,nper,pv,startPeriod,endPeriod,pd){if(!Common.raisable(r,nper)){return"#NUM!"}if(!Common.raisable(r,startPeriod-1)){return"#NUM!"}if(pv<=0||r<=0||nper<=0){return"#NUM!"}if(startPeriod<1||endPeriod<1||startPeriod>endPeriod){return"#NUM!"}if(pd!==0&&pd!==1){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"#NUM!"}if(endPeriod>nper){return"#NUM!"}var f=function(acc,per){return acc+scope.IPMT(r,per,nper,pv,0,pd)};return Common.aggrBetween(Math.ceil(startPeriod),endPeriod,f,0)};scope.CUMPRINC=function(r,nper,pv,startPeriod,endPeriod,pd){if(!Common.raisable(r,nper)){return"#NUM!"}if(!Common.raisable(r,startPeriod-1)){return"#NUM!"}if(pv<=0||r<=0||nper<=0){return"#NUM!"}if(startPeriod<1||endPeriod<1||startPeriod>endPeriod){return"#NUM!"}if(pd!==0&&pd!==1){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"#NUM!"}if(endPeriod>nper){return"#NUM!"}var f=function(acc,per){return acc+scope.PPMT(r,per,nper,pv,0,pd)};return Common.aggrBetween(Math.ceil(startPeriod),endPeriod,f,0)};scope.ISPMT=function(r,per,nper,pv){if(per<1||per>nper){return"#NUM!"}if(nper<=0){return"#NUM!"}return ispmt(r,per,nper,pv)};return scope})},{"../lib/common.js":4,"../lib/tvm.js":12,moment:13}],9:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");module.exports=definition(moment,Common)}else if(typeof define==="function"&&define.amd){define(["moment","common"],definition)}})(function(moment,Common){var scope=this.Misc={};var dollar=function(fractionalDollar,fraction,f){var aBase=Math.floor(fraction);var dollar=fractionalDollar>0?Math.floor(fractionalDollar):Math.ceil(fractionalDollar);var remainder=fractionalDollar-dollar;var digits=Math.pow(10,Math.ceil(Common.log10(aBase)));return f(aBase,dollar,remainder,digits)};var dollarDe=function(aBase,dollar,remainder,digits){return remainder*digits/aBase+dollar};var dollarFr=function(aBase,dollar,remainder,digits){var absDigits=Math.abs(digits);return remainder*aBase/absDigits+dollar};var effect=function(nominalRate,npery){var periods=Math.floor(npery);return Math.pow(nominalRate/periods+1,periods)-1};var nominal=function(effectRate,npery){var periods=Math.floor(npery);return(Math.pow(effectRate+1,1/periods)-1)*periods};scope.DOLLARDE=function(fractionalDollar,fraction){fraction=Math.floor(fraction);if(fraction<0){return"#NUM!"}if(fraction===0){return"#DIV/0!"}return dollar(fractionalDollar,fraction,dollarDe)};scope.DOLLARFR=function(fractionalDollar,fraction){fraction=Math.floor(fraction);if(fraction<0){return"#NUM!"}if(fraction===0){return"#DIV/0!"}return dollar(fractionalDollar,fraction,dollarFr)};scope.EFFECT=function(nominalRate,npery){if(typeof nominalRate!=="number"||typeof npery!=="number"){return"#VALUE!"}npery=Math.floor(npery);if(nominalRate<=0||npery<1){return"#NUM!"}return effect(nominalRate,npery)};scope.NOMINAL=function(effectRate,npery){if(typeof effectRate!=="number"||typeof npery!=="number"){return"#VALUE!"}npery=Math.floor(npery);if(effectRate<=0||npery<1){return"#NUM!"}return nominal(effectRate,npery)};return scope})},{"../lib/common.js":4,moment:13}],10:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var DayCountBasis=require("../lib/daycountbasis.js");module.exports=definition(moment,Common,DayCountBasis)}else if(typeof define==="function"&&define.amd){define(["moment","common","daycountbasis"],definition)}})(function(moment,Common,DayCountBasis){var scope=this.OddBonds={};var coupNumber=function(mat,settl,numMonths,basis,isWholeNumber){var my=mat.year(),mm=mat.month(),md=mat.date();var sy=settl.year(),sm=settl.month(),sd=settl.date();var couponsTemp=isWholeNumber==true?0:1;var endOfMonthTemp=Common.isLastDayOfMonth(mat);var endOfMonth=endOfMonthTemp===false&&mm!=2&&md>28&&md<mat.daysInMonth()?Common.isLastDayOfMonth(settl):endOfMonthTemp;var startDate=DayCountBasis.changeMonth(settl,0,basis,endOfMonth);var coupons=startDate.isAfter(settl)?couponsTemp+1:couponsTemp;var date=DayCountBasis.changeMonth(startDate,numMonths,basis,endOfMonth);var f=function(pcd,ncd){return 1};var result=DayCountBasis.datesAggregate1(date,mat,numMonths,basis,f,coupons,endOfMonth)[2];return result};var daysBetweenNotNeg=function(dc,startDate,endDate){var result=dc.DaysBetween(startDate,endDate,DayCountBasis.NumDenumPosition.Numerator);if(result>0){return result}else{return 0}};var daysBetweenNotNegPsaHack=function(startDate,endDate){var result=DayCountBasis.dateDiff360Us(startDate,endDate,DayCountBasis.Method360Us.ModifyBothDates);if(result>0){return result}else{return 0}};var daysBetweenNotNegWithHack=function(dc,startDate,endDate,basis){if(basis===DayCountBasis.UsPsa30_360){return daysBetweenNotNegPsaHack(startDate,endDate)}else{return daysBetweenNotNeg(dc,startDate,endDate)}};var oddFPrice=function(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis){var my=maturity.year(),mm=maturity.month(),md=maturity.date();var dc=DayCountBasis.dayCount(basis);var endMonth=Common.isLastDayOfMonth(maturity);var numMonths=DayCountBasis.freq2months(frequency);var numMonthsNeg=-numMonths;var e=dc.CoupDays(settlement,firstCoupon,frequency);var n=dc.CoupNum(settlement,maturity,frequency);var m=frequency;var dfc=daysBetweenNotNeg(dc,issue,firstCoupon);if(dfc<e){var dsc=daysBetweenNotNeg(dc,settlement,firstCoupon);var a=daysBetweenNotNeg(dc,issue,settlement);var x=yld/m+1;var y=dsc/e;var p1=x;var p3=Math.pow(p1,n-1+y);var term1=redemption/p3;var term2=100*rate/m*dfc/e/Math.pow(p1,y);var f=function(acc,index){return acc+100*rate/m/Math.pow(p1,index-1+y)};var term3=Common.aggrBetween(2,Math.floor(n),f,0);var p2=rate/m;var term4=a/e*p2*100;return term1+term2+term3-term4}else{var nc=dc.CoupNum(issue,firstCoupon,frequency);var lateCoupon=firstCoupon;var aggrFunction=function(acc,index){var earlyCoupon=DayCountBasis.changeMonth(lateCoupon,numMonthsNeg,basis,false);var nl=basis===DayCountBasis.ActualActual?daysBetweenNotNeg(dc,earlyCoupon,lateCoupon):e;var dci=index>1?nl:daysBetweenNotNeg(dc,issue,lateCoupon);var startDate=issue>earlyCoupon?issue:earlyCoupon;var endDate=settlement<lateCoupon?settlement:lateCoupon;var a=daysBetweenNotNeg(dc,startDate,endDate);lateCoupon=earlyCoupon;var dcnl=acc[0],anl=acc[1];return[dcnl+dci/nl,anl+a/nl]};var ag=Common.aggrBetween(Math.floor(nc),1,aggrFunction,[0,0]);var dcnl=ag[0],anl=ag[1];var dsc=0;if(basis===DayCountBasis.Actual360||basis===DayCountBasis.Actual365){var d=dc.CoupNCD(settlement,firstCoupon,frequency);dsc=daysBetweenNotNeg(dc,settlement,d)}else{var d=dc.CoupPCD(settlement,firstCoupon,frequency);var a=dc.DaysBetween(d,settlement,NumDenumPosition.Numerator);dsc=e-a}var nq=coupNumber(firstCoupon,settlement,numMonths,basis,true);var n=dc.CoupNum(firstCoupon,maturity,frequency);var x=yld/m+1;var y=dsc/e;var p1=x;var p3=Math.pow(p1,y+nq+n);var term1=redemption/p3;var term2=100*rate/m*dcnl/Math.pow(p1,nq+y);var f=function(acc,index){return acc+100*rate/m/Math.pow(p1,index+nq+y)};var term3=Common.aggrBetween(1,Math.floor(n),f,0);var term4=100*rate/m*anl;return term1+term2+term3-term4}};var oddFYield=function(settlement,maturity,issue,firstCoupon,rate,pr,redemption,frequency,basis){var dc=DayCountBasis.dayCount(basis);var years=dc.DaysBetween(settlement,maturity,DayCountBasis.NumDenumPosition.Numerator);var m=frequency;var px=pr-100;var num=rate*years*100-px;var denum=px/4+years*px/2+years*100;var guess=num/denum;var f=function(yld){return pr-oddFPrice(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis)};return Common.findRoot(f,guess)};var oddLFunc=function(settlement,maturity,lastInterest,rate,prOrYld,redemption,frequency,basis,isLPrice){var dc=DayCountBasis.dayCount(basis);var m=frequency;var numMonths=Math.floor(12/frequency);var lastCoupon=lastInterest;var nc=dc.CoupNum(lastCoupon,maturity,frequency);var earlyCoupon=lastCoupon;var aggrFunction=function(acc,index){var lateCoupon=DayCountBasis.changeMonth(earlyCoupon,numMonths,basis,false);var nl=daysBetweenNotNegWithHack(dc,earlyCoupon,lateCoupon,basis);var dci=index<nc?nl:daysBetweenNotNegWithHack(dc,earlyCoupon,maturity,basis);var a=0;if(lateCoupon<settlement){a=dci}else if(earlyCoupon<settlement){a=daysBetweenNotNeg(dc,earlyCoupon,settlement)}var startDate=settlement>earlyCoupon?settlement:earlyCoupon;var endDate=maturity<lateCoupon?maturity:lateCoupon;var dsc=daysBetweenNotNeg(dc,startDate,endDate);earlyCoupon=lateCoupon;var dcnl=acc[0];var anl=acc[1];var dscnl=acc[2];return[dcnl+dci/nl,anl+a/nl,dscnl+dsc/nl]};var agr=Common.aggrBetween(1,Math.floor(nc),aggrFunction,[0,0,0]);var dcnl=agr[0];var anl=agr[1];var dscnl=agr[2];var x=100*rate/m;var term1=dcnl*x+redemption;if(isLPrice){var term2=dscnl*prOrYld/m+1;var term3=anl*x;return term1/term2-term3}else{var term2=anl*x+prOrYld;var term3=m/dscnl;return(term1-term2)/term2*term3}};scope.ODDFPRICE=function(settlement,maturity,issue,firstCoupon,rate,yld,redemption,frequency,basis){if(!moment(settlement).isValid()||!moment(maturity).isValid()||!moment(issue).isValid()||!moment(firstCoupon).isValid()){return"#VALUE!"}settlement=moment(settlement);maturity=moment(maturity);issue=moment(issue);firstCoupon=moment(firstCoupon);var endMonth=Common.isLastDayOfMonth(maturity);var numMonths=Math.floor(12/Math.floor(frequency));var numMonthsNeg=-numMonths;var r=DayCountBasis.findPcdNcd(DayCountBasis.changeMonth(maturity,numMonthsNeg,basis,endMonth),firstCoupon,numMonthsNeg,basis,endMonth);var pcd=r[0];var ncd=r[1];if(!pcd.isSame(firstCoupon)){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(rate<0){return"#NUM!"}if(yld<0){return"#NUM!"}if(redemption<0){return"#NUM!"}if(!maturity.isAfter(firstCoupon)){return"#NUM!"}if(!firstCoupon.isAfter(settlement)){return"#NUM!"}if(!settlement.isAfter(issue)){return"#NUM!"}return oddFPrice(settlement,maturity,issue,firstCoupon,rate,yld,redemption,Math.floor(frequency),basis)};scope.ODDFYIELD=function(settlement,maturity,issue,firstCoupon,rate,pr,redemption,frequency,basis){if(!moment(settlement).isValid()||!moment(maturity).isValid()||!moment(issue).isValid()||!moment(firstCoupon).isValid()){return"#VALUE!"}settlement=moment(settlement);maturity=moment(maturity);issue=moment(issue);firstCoupon=moment(firstCoupon);if(rate<0||pr<=0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(redemption<0){return"#NUM!"}if(!maturity.isAfter(firstCoupon)){return"#NUM!"}if(!firstCoupon.isAfter(settlement)){return"#NUM!"}if(!settlement.isAfter(issue)){return"#NUM!"}return oddFYield(settlement,maturity,issue,firstCoupon,rate,pr,redemption,Math.floor(frequency),basis)};scope.ODDLPRICE=function(settlement,maturity,lastInterest,rate,yld,redemption,frequency,basis){if(!moment(settlement).isValid()||!moment(maturity).isValid()||!moment(lastInterest).isValid()){return"#VALUE!"}settlement=moment(settlement);maturity=moment(maturity);lastInterest=moment(lastInterest);if(rate<0||yld<0||redemption<0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(!maturity.isAfter(settlement)){return"#NUM!"}if(!settlement.isAfter(lastInterest)){return"#NUM!"}return oddLFunc(settlement,maturity,lastInterest,rate,yld,redemption,Math.floor(frequency),basis,true)};scope.ODDLYIELD=function(settlement,maturity,lastInterest,rate,pr,redemption,frequency,basis){if(!moment(settlement).isValid()||!moment(maturity).isValid()||!moment(lastInterest).isValid()){return"#VALUE!"}settlement=moment(settlement);maturity=moment(maturity);lastInterest=moment(lastInterest);if(rate<0||pr<=0||redemption<0){return"#NUM!"}if([0,1,2,3,4].indexOf(basis)===-1){return"#NUM!"}if(!maturity.isAfter(settlement)){return"#NUM!"}if(!settlement.isAfter(lastInterest)){return"#NUM!"}return oddLFunc(settlement,maturity,lastInterest,rate,pr,redemption,Math.floor(frequency),basis,false)};return scope})},{"../lib/common.js":4,"../lib/daycountbasis.js":5,moment:13}],11:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");var DayCountBasis=require("../lib/daycountbasis.js");module.exports=definition(moment,Common,DayCountBasis)}else if(typeof define==="function"&&define.amd){define(["moment","common","daycountbasis"],definition)}})(function(moment,Common,DayCountBasis){var scope=this.TBill={};var getDsm=function(settlement,maturity,basis){var dc=DayCount.dayCount(basis);return dc.DaysBetween(settlement,maturity,DayCount.NumDenumPosition.Numerator)};var TBillEq=function(settlement,maturity,discount){var dsm=getDsm(settlement,maturity,DayCount.DayCountBasis.Actual360);if(dsm>182){var price=(100-discount*100*dsm/360)/100;var days=dsm===366?366:365;var tempTerm2=Math.pow(dsm/days,2)-(2*dsm/days-1)*(1-1/price);var term2=Math.sqrt(tempTerm2);var term3=2*dsm/days-1;return 2*(term2-dsm/days)/term3}else{return 365*discount/(360-discount*dsm)}};var TBillYield=function(settlement,maturity,pr){var dsm=getDsm(settlement,maturity,DayCount.DayCountBasis.ActualActual);return(100-pr)/pr*360/dsm};var TBillPrice=function(settlement,maturity,discount){var dsm=getDsm(settlement,maturity,DayCount.DayCountBasis.ActualActual);return 100*(1-discount*dsm/360)};scope.TBILLEQ=function(settlement,maturity,discount){if(typeof discount!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if(discount<=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);if(settlement.isAfter(maturity)||maturity.isAfter(settlement)&&maturity.diff(settlement,"years",true)>1){return"#NUM!"}return TBillEq(settlement,maturity,discount)};scope.TBILLYIELD=function(settlement,maturity,pr){if(typeof pr!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if(pr<=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);if(settlement.isAfter(maturity)||maturity.isAfter(settlement)&&maturity.diff(settlement,"years",true)>1){return"#NUM!"}return TBillYield(settlement,maturity,pr)};scope.TBILLPRICE=function(settlement,maturity,discount){if(typeof discount!=="number"){return"#VALUE!"}if(!moment(settlement).isValid()||!moment(maturity).isValid()){return"#VALUE!"}if(discount<=0){return"#NUM!"}settlement=moment(settlement);maturity=moment(maturity);if(settlement.isAfter(maturity)||maturity.isAfter(settlement)&&maturity.diff(settlement,"years",true)>1){return"#NUM!" | |
}return TBillPrice(settlement,maturity,discount)};return scope})},{"../lib/common.js":4,"../lib/daycountbasis.js":5,moment:13}],12:[function(require,module,exports){(function(definition){if(typeof exports==="object"){var moment=require("moment");var Common=require("../lib/common.js");module.exports=definition(moment,Common)}else if(typeof define==="function"&&define.amd){define(["moment","common"],definition)}})(function(moment,Common){var scope=this.Tvm={};var fvFactor=function(r,nper){return Math.pow(1+r,nper)};scope.fvFactor=fvFactor;var pvFactor=function(r,nper){return 1/fvFactor(r,nper)};scope.pvFactor=pvFactor;var annuityCertainPvFactor=function(r,nper,pd){if(r===0){return nper}else{return(1+r*pd)*(1-pvFactor(r,nper))/r}};scope.annuityCertainPvFactor=annuityCertainPvFactor;var annuityCertainFvFactor=function(r,nper,pd){return annuityCertainPvFactor(r,nper,pd)*fvFactor(r,nper)};var nperFactor=function(r,pmt,v,pd){return v*r+pmt*(1+r*pd)};var pv=function(r,nper,pmt,fv,pd){return-(fv*pvFactor(r,nper)+pmt*annuityCertainPvFactor(r,nper,pd))};var fv=function(r,nper,pmt,pv,pd){return-(pv*fvFactor(r,nper)+pmt*annuityCertainFvFactor(r,nper,pd))};var pmt=function(r,nper,pv,fv,pd){return-(pv+fv*pvFactor(r,nper))/annuityCertainPvFactor(r,nper,pd)};scope.pmt=pmt;var nper=function(r,pmt,pv,fv,pd){return Math.log(nperFactor(r,pmt,-fv,pd)/nperFactor(r,pmt,pv,pd))/Math.log(r+1)};scope.PV=function(r,nper,pmt,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(Common.raisable(r,nper)===false){return"#NUM!"}if(pmt===0&&fv===0){return"#NUM!"}if(r===-1){return"#NUM!"}return pv(r,nper,pmt,fv,pd)};scope.FV=function(r,nper,pmt,pv,pd){if(pv===null||pv===undefined){pv=0}if(pd===null||pd===undefined){pd=0}if(Common.raisable(r,nper)===false){return"#NUM!"}if(r===-1&&nper<=0){return"#NUM!"}if(pmt===0&&pv===0){return"#NUM!"}if(r===-1&&pd===Common.PaymentDue.BeginningOfPeriod){return-(pv*fvFactor(r,nper))}else if(r===-1&&pd===Common.PaymentDue.EndOfPeriod){return-(pv*fvFactor(r,nper)+pmt)}else{return fv(r,nper,pmt,pv,pd)}};scope.PMT=function(r,nper,pv,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(Common.raisable(r,nper)===false){return"#NUM!"}if(fv===0&&pv===0){return"#NUM!"}if(r===-1&&nper<=0&&pd===Common.PaymentDue.EndOfPeriod){return"#NUM!"}if(annuityCertainPvFactor(r,nper,pd)===0){return"NUM!"}if(r===-1){return-fv}else{return pmt(r,nper,pv,fv,pd)}};scope.NPER=function(r,pmt,pv,fv,pd){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(r===0&&pmt!==0){return-(fv+pv)/pmt}else{return nper(r,pmt,pv,fv,pd)}};scope.RATE=function(nper,pmt,pv,fv,pd,guess){if(fv===null||fv===undefined){fv=0}if(pd===null||pd===undefined){pd=0}if(guess===null||guess===undefined){guess=.1}if(pmt===0&&pv===0){return"#NUM!"}if(nper<=0){return"#NUM!"}if(fv===0&&pv===0){return pmt<0?-1:1}else{var f=function(r){return scope.FV(r,nper,pmt,pv,pd)-fv};return Common.findRoot(f,guess)}};scope.FVSCHEDULE=function(pv,interests){if(typeof pv!=="number"){return"#VALUE!"}if(Common.allValidNumbers(interests)===false){return"#VALUE!"}var result=pv;for(var i=0;i<interests.length;i++){result=result*(1+interests[i])}return result};return scope})},{"../lib/common.js":4,moment:13}],13:[function(require,module,exports){(function(global){(function(undefined){var moment,VERSION="2.6.0",globalScope=typeof global!=="undefined"?global:this,oldGlobalMoment,round=Math.round,i,YEAR=0,MONTH=1,DATE=2,HOUR=3,MINUTE=4,SECOND=5,MILLISECOND=6,languages={},momentProperties={_isAMomentObject:null,_i:null,_f:null,_l:null,_strict:null,_isUTC:null,_offset:null,_pf:null,_lang:null},hasModule=typeof module!=="undefined"&&module.exports,aspNetJsonRegex=/^\/?Date\((\-?\d+)/i,aspNetTimeSpanJsonRegex=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,isoDurationRegex=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/,formattingTokens=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g,localFormattingTokens=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g,parseTokenOneOrTwoDigits=/\d\d?/,parseTokenOneToThreeDigits=/\d{1,3}/,parseTokenOneToFourDigits=/\d{1,4}/,parseTokenOneToSixDigits=/[+\-]?\d{1,6}/,parseTokenDigits=/\d+/,parseTokenWord=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,parseTokenTimezone=/Z|[\+\-]\d\d:?\d\d/gi,parseTokenT=/T/i,parseTokenTimestampMs=/[\+\-]?\d+(\.\d{1,3})?/,parseTokenOrdinal=/\d{1,2}/,parseTokenOneDigit=/\d/,parseTokenTwoDigits=/\d\d/,parseTokenThreeDigits=/\d{3}/,parseTokenFourDigits=/\d{4}/,parseTokenSixDigits=/[+-]?\d{6}/,parseTokenSignedNumber=/[+-]?\d+/,isoRegex=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,isoFormat="YYYY-MM-DDTHH:mm:ssZ",isoDates=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],isoTimes=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],parseTimezoneChunker=/([\+\-]|\d\d)/gi,proxyGettersAndSetters="Date|Hours|Minutes|Seconds|Milliseconds".split("|"),unitMillisecondFactors={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},unitAliases={ms:"millisecond",s:"second",m:"minute",h:"hour",d:"day",D:"date",w:"week",W:"isoWeek",M:"month",Q:"quarter",y:"year",DDD:"dayOfYear",e:"weekday",E:"isoWeekday",gg:"weekYear",GG:"isoWeekYear"},camelFunctions={dayofyear:"dayOfYear",isoweekday:"isoWeekday",isoweek:"isoWeek",weekyear:"weekYear",isoweekyear:"isoWeekYear"},formatFunctions={},ordinalizeTokens="DDD w W M D d".split(" "),paddedTokens="M D H h m s w W".split(" "),formatTokenFunctions={M:function(){return this.month()+1},MMM:function(format){return this.lang().monthsShort(this,format)},MMMM:function(format){return this.lang().months(this,format)},D:function(){return this.date()},DDD:function(){return this.dayOfYear()},d:function(){return this.day()},dd:function(format){return this.lang().weekdaysMin(this,format)},ddd:function(format){return this.lang().weekdaysShort(this,format)},dddd:function(format){return this.lang().weekdays(this,format)},w:function(){return this.week()},W:function(){return this.isoWeek()},YY:function(){return leftZeroFill(this.year()%100,2)},YYYY:function(){return leftZeroFill(this.year(),4)},YYYYY:function(){return leftZeroFill(this.year(),5)},YYYYYY:function(){var y=this.year(),sign=y>=0?"+":"-";return sign+leftZeroFill(Math.abs(y),6)},gg:function(){return leftZeroFill(this.weekYear()%100,2)},gggg:function(){return leftZeroFill(this.weekYear(),4)},ggggg:function(){return leftZeroFill(this.weekYear(),5)},GG:function(){return leftZeroFill(this.isoWeekYear()%100,2)},GGGG:function(){return leftZeroFill(this.isoWeekYear(),4)},GGGGG:function(){return leftZeroFill(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),true)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),false)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return toInt(this.milliseconds()/100)},SS:function(){return leftZeroFill(toInt(this.milliseconds()/10),2)},SSS:function(){return leftZeroFill(this.milliseconds(),3)},SSSS:function(){return leftZeroFill(this.milliseconds(),3)},Z:function(){var a=-this.zone(),b="+";if(a<0){a=-a;b="-"}return b+leftZeroFill(toInt(a/60),2)+":"+leftZeroFill(toInt(a)%60,2)},ZZ:function(){var a=-this.zone(),b="+";if(a<0){a=-a;b="-"}return b+leftZeroFill(toInt(a/60),2)+leftZeroFill(toInt(a)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},X:function(){return this.unix()},Q:function(){return this.quarter()}},lists=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"];function defaultParsingFlags(){return{empty:false,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:false,invalidMonth:null,invalidFormat:false,userInvalidated:false,iso:false}}function deprecate(msg,fn){var firstTime=true;function printMsg(){if(moment.suppressDeprecationWarnings===false&&typeof console!=="undefined"&&console.warn){console.warn("Deprecation warning: "+msg)}}return extend(function(){if(firstTime){printMsg();firstTime=false}return fn.apply(this,arguments)},fn)}function padToken(func,count){return function(a){return leftZeroFill(func.call(this,a),count)}}function ordinalizeToken(func,period){return function(a){return this.lang().ordinal(func.call(this,a),period)}}while(ordinalizeTokens.length){i=ordinalizeTokens.pop();formatTokenFunctions[i+"o"]=ordinalizeToken(formatTokenFunctions[i],i)}while(paddedTokens.length){i=paddedTokens.pop();formatTokenFunctions[i+i]=padToken(formatTokenFunctions[i],2)}formatTokenFunctions.DDDD=padToken(formatTokenFunctions.DDD,3);function Language(){}function Moment(config){checkOverflow(config);extend(this,config)}function Duration(duration){var normalizedInput=normalizeObjectUnits(duration),years=normalizedInput.year||0,quarters=normalizedInput.quarter||0,months=normalizedInput.month||0,weeks=normalizedInput.week||0,days=normalizedInput.day||0,hours=normalizedInput.hour||0,minutes=normalizedInput.minute||0,seconds=normalizedInput.second||0,milliseconds=normalizedInput.millisecond||0;this._milliseconds=+milliseconds+seconds*1e3+minutes*6e4+hours*36e5;this._days=+days+weeks*7;this._months=+months+quarters*3+years*12;this._data={};this._bubble()}function extend(a,b){for(var i in b){if(b.hasOwnProperty(i)){a[i]=b[i]}}if(b.hasOwnProperty("toString")){a.toString=b.toString}if(b.hasOwnProperty("valueOf")){a.valueOf=b.valueOf}return a}function cloneMoment(m){var result={},i;for(i in m){if(m.hasOwnProperty(i)&&momentProperties.hasOwnProperty(i)){result[i]=m[i]}}return result}function absRound(number){if(number<0){return Math.ceil(number)}else{return Math.floor(number)}}function leftZeroFill(number,targetLength,forceSign){var output=""+Math.abs(number),sign=number>=0;while(output.length<targetLength){output="0"+output}return(sign?forceSign?"+":"":"-")+output}function addOrSubtractDurationFromMoment(mom,duration,isAdding,updateOffset){var milliseconds=duration._milliseconds,days=duration._days,months=duration._months;updateOffset=updateOffset==null?true:updateOffset;if(milliseconds){mom._d.setTime(+mom._d+milliseconds*isAdding)}if(days){rawSetter(mom,"Date",rawGetter(mom,"Date")+days*isAdding)}if(months){rawMonthSetter(mom,rawGetter(mom,"Month")+months*isAdding)}if(updateOffset){moment.updateOffset(mom,days||months)}}function isArray(input){return Object.prototype.toString.call(input)==="[object Array]"}function isDate(input){return Object.prototype.toString.call(input)==="[object Date]"||input instanceof Date}function compareArrays(array1,array2,dontConvert){var len=Math.min(array1.length,array2.length),lengthDiff=Math.abs(array1.length-array2.length),diffs=0,i;for(i=0;i<len;i++){if(dontConvert&&array1[i]!==array2[i]||!dontConvert&&toInt(array1[i])!==toInt(array2[i])){diffs++}}return diffs+lengthDiff}function normalizeUnits(units){if(units){var lowered=units.toLowerCase().replace(/(.)s$/,"$1");units=unitAliases[units]||camelFunctions[lowered]||lowered}return units}function normalizeObjectUnits(inputObject){var normalizedInput={},normalizedProp,prop;for(prop in inputObject){if(inputObject.hasOwnProperty(prop)){normalizedProp=normalizeUnits(prop);if(normalizedProp){normalizedInput[normalizedProp]=inputObject[prop]}}}return normalizedInput}function makeList(field){var count,setter;if(field.indexOf("week")===0){count=7;setter="day"}else if(field.indexOf("month")===0){count=12;setter="month"}else{return}moment[field]=function(format,index){var i,getter,method=moment.fn._lang[field],results=[];if(typeof format==="number"){index=format;format=undefined}getter=function(i){var m=moment().utc().set(setter,i);return method.call(moment.fn._lang,m,format||"")};if(index!=null){return getter(index)}else{for(i=0;i<count;i++){results.push(getter(i))}return results}}}function toInt(argumentForCoercion){var coercedNumber=+argumentForCoercion,value=0;if(coercedNumber!==0&&isFinite(coercedNumber)){if(coercedNumber>=0){value=Math.floor(coercedNumber)}else{value=Math.ceil(coercedNumber)}}return value}function daysInMonth(year,month){return new Date(Date.UTC(year,month+1,0)).getUTCDate()}function weeksInYear(year,dow,doy){return weekOfYear(moment([year,11,31+dow-doy]),dow,doy).week}function daysInYear(year){return isLeapYear(year)?366:365}function isLeapYear(year){return year%4===0&&year%100!==0||year%400===0}function checkOverflow(m){var overflow;if(m._a&&m._pf.overflow===-2){overflow=m._a[MONTH]<0||m._a[MONTH]>11?MONTH:m._a[DATE]<1||m._a[DATE]>daysInMonth(m._a[YEAR],m._a[MONTH])?DATE:m._a[HOUR]<0||m._a[HOUR]>23?HOUR:m._a[MINUTE]<0||m._a[MINUTE]>59?MINUTE:m._a[SECOND]<0||m._a[SECOND]>59?SECOND:m._a[MILLISECOND]<0||m._a[MILLISECOND]>999?MILLISECOND:-1;if(m._pf._overflowDayOfYear&&(overflow<YEAR||overflow>DATE)){overflow=DATE}m._pf.overflow=overflow}}function isValid(m){if(m._isValid==null){m._isValid=!isNaN(m._d.getTime())&&m._pf.overflow<0&&!m._pf.empty&&!m._pf.invalidMonth&&!m._pf.nullInput&&!m._pf.invalidFormat&&!m._pf.userInvalidated;if(m._strict){m._isValid=m._isValid&&m._pf.charsLeftOver===0&&m._pf.unusedTokens.length===0}}return m._isValid}function normalizeLanguage(key){return key?key.toLowerCase().replace("_","-"):key}function makeAs(input,model){return model._isUTC?moment(input).zone(model._offset||0):moment(input).local()}extend(Language.prototype,{set:function(config){var prop,i;for(i in config){prop=config[i];if(typeof prop==="function"){this[i]=prop}else{this["_"+i]=prop}}},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(m){return this._months[m.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(m){return this._monthsShort[m.month()]},monthsParse:function(monthName){var i,mom,regex;if(!this._monthsParse){this._monthsParse=[]}for(i=0;i<12;i++){if(!this._monthsParse[i]){mom=moment.utc([2e3,i]);regex="^"+this.months(mom,"")+"|^"+this.monthsShort(mom,"");this._monthsParse[i]=new RegExp(regex.replace(".",""),"i")}if(this._monthsParse[i].test(monthName)){return i}}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(m){return this._weekdays[m.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(m){return this._weekdaysShort[m.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(m){return this._weekdaysMin[m.day()]},weekdaysParse:function(weekdayName){var i,mom,regex;if(!this._weekdaysParse){this._weekdaysParse=[]}for(i=0;i<7;i++){if(!this._weekdaysParse[i]){mom=moment([2e3,1]).day(i);regex="^"+this.weekdays(mom,"")+"|^"+this.weekdaysShort(mom,"")+"|^"+this.weekdaysMin(mom,"");this._weekdaysParse[i]=new RegExp(regex.replace(".",""),"i")}if(this._weekdaysParse[i].test(weekdayName)){return i}}},_longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},longDateFormat:function(key){var output=this._longDateFormat[key];if(!output&&this._longDateFormat[key.toUpperCase()]){output=this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(val){return val.slice(1)});this._longDateFormat[key]=output}return output},isPM:function(input){return(input+"").toLowerCase().charAt(0)==="p"},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(hours,minutes,isLower){if(hours>11){return isLower?"pm":"PM"}else{return isLower?"am":"AM"}},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(key,mom){var output=this._calendar[key];return typeof output==="function"?output.apply(mom):output},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(number,withoutSuffix,string,isFuture){var output=this._relativeTime[string];return typeof output==="function"?output(number,withoutSuffix,string,isFuture):output.replace(/%d/i,number)},pastFuture:function(diff,output){var format=this._relativeTime[diff>0?"future":"past"];return typeof format==="function"?format(output):format.replace(/%s/i,output)},ordinal:function(number){return this._ordinal.replace("%d",number)},_ordinal:"%d",preparse:function(string){return string},postformat:function(string){return string},week:function(mom){return weekOfYear(mom,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}});function loadLang(key,values){values.abbr=key;if(!languages[key]){languages[key]=new Language}languages[key].set(values);return languages[key]}function unloadLang(key){delete languages[key]}function getLangDefinition(key){var i=0,j,lang,next,split,get=function(k){if(!languages[k]&&hasModule){try{require("./lang/"+k)}catch(e){}}return languages[k]};if(!key){return moment.fn._lang}if(!isArray(key)){lang=get(key);if(lang){return lang}key=[key]}while(i<key.length){split=normalizeLanguage(key[i]).split("-");j=split.length;next=normalizeLanguage(key[i+1]);next=next?next.split("-"):null;while(j>0){lang=get(split.slice(0,j).join("-"));if(lang){return lang}if(next&&next.length>=j&&compareArrays(split,next,true)>=j-1){break}j--}i++}return moment.fn._lang}function removeFormattingTokens(input){if(input.match(/\[[\s\S]/)){return input.replace(/^\[|\]$/g,"")}return input.replace(/\\/g,"")}function makeFormatFunction(format){var array=format.match(formattingTokens),i,length;for(i=0,length=array.length;i<length;i++){if(formatTokenFunctions[array[i]]){array[i]=formatTokenFunctions[array[i]]}else{array[i]=removeFormattingTokens(array[i])}}return function(mom){var output="";for(i=0;i<length;i++){output+=array[i]instanceof Function?array[i].call(mom,format):array[i]}return output}}function formatMoment(m,format){if(!m.isValid()){return m.lang().invalidDate()}format=expandFormat(format,m.lang());if(!formatFunctions[format]){formatFunctions[format]=makeFormatFunction(format)}return formatFunctions[format](m)}function expandFormat(format,lang){var i=5;function replaceLongDateFormatTokens(input){return lang.longDateFormat(input)||input}localFormattingTokens.lastIndex=0;while(i>=0&&localFormattingTokens.test(format)){format=format.replace(localFormattingTokens,replaceLongDateFormatTokens);localFormattingTokens.lastIndex=0;i-=1}return format}function getParseRegexForToken(token,config){var a,strict=config._strict;switch(token){case"Q":return parseTokenOneDigit;case"DDDD":return parseTokenThreeDigits;case"YYYY":case"GGGG":case"gggg":return strict?parseTokenFourDigits:parseTokenOneToFourDigits;case"Y":case"G":case"g":return parseTokenSignedNumber;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return strict?parseTokenSixDigits:parseTokenOneToSixDigits;case"S":if(strict){return parseTokenOneDigit}case"SS":if(strict){return parseTokenTwoDigits}case"SSS":if(strict){return parseTokenThreeDigits}case"DDD":return parseTokenOneToThreeDigits;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return parseTokenWord;case"a":case"A":return getLangDefinition(config._l)._meridiemParse;case"X":return parseTokenTimestampMs;case"Z":case"ZZ":return parseTokenTimezone;case"T":return parseTokenT;case"SSSS":return parseTokenDigits;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return strict?parseTokenTwoDigits:parseTokenOneOrTwoDigits;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return parseTokenOneOrTwoDigits;case"Do":return parseTokenOrdinal;default:a=new RegExp(regexpEscape(unescapeFormat(token.replace("\\","")),"i"));return a}}function timezoneMinutesFromString(string){string=string||"";var possibleTzMatches=string.match(parseTokenTimezone)||[],tzChunk=possibleTzMatches[possibleTzMatches.length-1]||[],parts=(tzChunk+"").match(parseTimezoneChunker)||["-",0,0],minutes=+(parts[1]*60)+toInt(parts[2]);return parts[0]==="+"?-minutes:minutes}function addTimeToArrayFromToken(token,input,config){var a,datePartArray=config._a;switch(token){case"Q":if(input!=null){datePartArray[MONTH]=(toInt(input)-1)*3}break;case"M":case"MM":if(input!=null){datePartArray[MONTH]=toInt(input)-1}break;case"MMM":case"MMMM":a=getLangDefinition(config._l).monthsParse(input);if(a!=null){datePartArray[MONTH]=a}else{config._pf.invalidMonth=input}break;case"D":case"DD":if(input!=null){datePartArray[DATE]=toInt(input)}break;case"Do":if(input!=null){datePartArray[DATE]=toInt(parseInt(input,10))}break;case"DDD":case"DDDD":if(input!=null){config._dayOfYear=toInt(input)}break;case"YY":datePartArray[YEAR]=moment.parseTwoDigitYear(input);break;case"YYYY":case"YYYYY":case"YYYYYY":datePartArray[YEAR]=toInt(input);break;case"a":case"A":config._isPm=getLangDefinition(config._l).isPM(input);break;case"H":case"HH":case"h":case"hh":datePartArray[HOUR]=toInt(input);break;case"m":case"mm":datePartArray[MINUTE]=toInt(input);break;case"s":case"ss":datePartArray[SECOND]=toInt(input);break;case"S":case"SS":case"SSS":case"SSSS":datePartArray[MILLISECOND]=toInt(("0."+input)*1e3);break;case"X":config._d=new Date(parseFloat(input)*1e3);break;case"Z":case"ZZ":config._useUTC=true;config._tzm=timezoneMinutesFromString(input);break;case"w":case"ww":case"W":case"WW":case"d":case"dd":case"ddd":case"dddd":case"e":case"E":token=token.substr(0,1);case"gg":case"gggg":case"GG":case"GGGG":case"GGGGG":token=token.substr(0,2);if(input){config._w=config._w||{};config._w[token]=input}break}}function dateFromConfig(config){var i,date,input=[],currentDate,yearToUse,fixYear,w,temp,lang,weekday,week;if(config._d){return}currentDate=currentDateArray(config);if(config._w&&config._a[DATE]==null&&config._a[MONTH]==null){fixYear=function(val){var intVal=parseInt(val,10);return val?val.length<3?intVal>68?1900+intVal:2e3+intVal:intVal:config._a[YEAR]==null?moment().weekYear():config._a[YEAR]};w=config._w;if(w.GG!=null||w.W!=null||w.E!=null){temp=dayOfYearFromWeeks(fixYear(w.GG),w.W||1,w.E,4,1)}else{lang=getLangDefinition(config._l);weekday=w.d!=null?parseWeekday(w.d,lang):w.e!=null?parseInt(w.e,10)+lang._week.dow:0;week=parseInt(w.w,10)||1;if(w.d!=null&&weekday<lang._week.dow){week++}temp=dayOfYearFromWeeks(fixYear(w.gg),week,weekday,lang._week.doy,lang._week.dow)}config._a[YEAR]=temp.year;config._dayOfYear=temp.dayOfYear}if(config._dayOfYear){yearToUse=config._a[YEAR]==null?currentDate[YEAR]:config._a[YEAR];if(config._dayOfYear>daysInYear(yearToUse)){config._pf._overflowDayOfYear=true}date=makeUTCDate(yearToUse,0,config._dayOfYear);config._a[MONTH]=date.getUTCMonth();config._a[DATE]=date.getUTCDate()}for(i=0;i<3&&config._a[i]==null;++i){config._a[i]=input[i]=currentDate[i]}for(;i<7;i++){config._a[i]=input[i]=config._a[i]==null?i===2?1:0:config._a[i]}input[HOUR]+=toInt((config._tzm||0)/60);input[MINUTE]+=toInt((config._tzm||0)%60);config._d=(config._useUTC?makeUTCDate:makeDate).apply(null,input)}function dateFromObject(config){var normalizedInput;if(config._d){return}normalizedInput=normalizeObjectUnits(config._i);config._a=[normalizedInput.year,normalizedInput.month,normalizedInput.day,normalizedInput.hour,normalizedInput.minute,normalizedInput.second,normalizedInput.millisecond];dateFromConfig(config)}function currentDateArray(config){var now=new Date;if(config._useUTC){return[now.getUTCFullYear(),now.getUTCMonth(),now.getUTCDate()]}else{return[now.getFullYear(),now.getMonth(),now.getDate()]}}function makeDateFromStringAndFormat(config){config._a=[];config._pf.empty=true;var lang=getLangDefinition(config._l),string=""+config._i,i,parsedInput,tokens,token,skipped,stringLength=string.length,totalParsedInputLength=0;tokens=expandFormat(config._f,lang).match(formattingTokens)||[];for(i=0;i<tokens.length;i++){token=tokens[i];parsedInput=(string.match(getParseRegexForToken(token,config))||[])[0];if(parsedInput){skipped=string.substr(0,string.indexOf(parsedInput));if(skipped.length>0){config._pf.unusedInput.push(skipped)}string=string.slice(string.indexOf(parsedInput)+parsedInput.length);totalParsedInputLength+=parsedInput.length}if(formatTokenFunctions[token]){if(parsedInput){config._pf.empty=false}else{config._pf.unusedTokens.push(token)}addTimeToArrayFromToken(token,parsedInput,config)}else if(config._strict&&!parsedInput){config._pf.unusedTokens.push(token)}}config._pf.charsLeftOver=stringLength-totalParsedInputLength;if(string.length>0){config._pf.unusedInput.push(string)}if(config._isPm&&config._a[HOUR]<12){config._a[HOUR]+=12}if(config._isPm===false&&config._a[HOUR]===12){config._a[HOUR]=0}dateFromConfig(config);checkOverflow(config)}function unescapeFormat(s){return s.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(matched,p1,p2,p3,p4){return p1||p2||p3||p4})}function regexpEscape(s){return s.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function makeDateFromStringAndArray(config){var tempConfig,bestMoment,scoreToBeat,i,currentScore;if(config._f.length===0){config._pf.invalidFormat=true;config._d=new Date(NaN);return}for(i=0;i<config._f.length;i++){currentScore=0;tempConfig=extend({},config);tempConfig._pf=defaultParsingFlags();tempConfig._f=config._f[i];makeDateFromStringAndFormat(tempConfig);if(!isValid(tempConfig)){continue}currentScore+=tempConfig._pf.charsLeftOver;currentScore+=tempConfig._pf.unusedTokens.length*10;tempConfig._pf.score=currentScore;if(scoreToBeat==null||currentScore<scoreToBeat){scoreToBeat=currentScore;bestMoment=tempConfig}}extend(config,bestMoment||tempConfig)}function makeDateFromString(config){var i,l,string=config._i,match=isoRegex.exec(string);if(match){config._pf.iso=true;for(i=0,l=isoDates.length;i<l;i++){if(isoDates[i][1].exec(string)){config._f=isoDates[i][0]+(match[6]||" ");break}}for(i=0,l=isoTimes.length;i<l;i++){if(isoTimes[i][1].exec(string)){config._f+=isoTimes[i][0];break}}if(string.match(parseTokenTimezone)){config._f+="Z"}makeDateFromStringAndFormat(config)}else{moment.createFromInputFallback(config)}}function makeDateFromInput(config){var input=config._i,matched=aspNetJsonRegex.exec(input);if(input===undefined){config._d=new Date}else if(matched){config._d=new Date(+matched[1])}else if(typeof input==="string"){makeDateFromString(config)}else if(isArray(input)){config._a=input.slice(0);dateFromConfig(config)}else if(isDate(input)){config._d=new Date(+input)}else if(typeof input==="object"){dateFromObject(config)}else if(typeof input==="number"){config._d=new Date(input)}else{moment.createFromInputFallback(config)}}function makeDate(y,m,d,h,M,s,ms){var date=new Date(y,m,d,h,M,s,ms);if(y<1970){date.setFullYear(y)}return date}function makeUTCDate(y){var date=new Date(Date.UTC.apply(null,arguments));if(y<1970){date.setUTCFullYear(y)}return date}function parseWeekday(input,language){if(typeof input==="string"){if(!isNaN(input)){input=parseInt(input,10)}else{input=language.weekdaysParse(input);if(typeof input!=="number"){return null}}}return input}function substituteTimeAgo(string,number,withoutSuffix,isFuture,lang){return lang.relativeTime(number||1,!!withoutSuffix,string,isFuture)}function relativeTime(milliseconds,withoutSuffix,lang){var seconds=round(Math.abs(milliseconds)/1e3),minutes=round(seconds/60),hours=round(minutes/60),days=round(hours/24),years=round(days/365),args=seconds<45&&["s",seconds]||minutes===1&&["m"]||minutes<45&&["mm",minutes]||hours===1&&["h"]||hours<22&&["hh",hours]||days===1&&["d"]||days<=25&&["dd",days]||days<=45&&["M"]||days<345&&["MM",round(days/30)]||years===1&&["y"]||["yy",years];args[2]=withoutSuffix;args[3]=milliseconds>0;args[4]=lang;return substituteTimeAgo.apply({},args)}function weekOfYear(mom,firstDayOfWeek,firstDayOfWeekOfYear){var end=firstDayOfWeekOfYear-firstDayOfWeek,daysToDayOfWeek=firstDayOfWeekOfYear-mom.day(),adjustedMoment;if(daysToDayOfWeek>end){daysToDayOfWeek-=7}if(daysToDayOfWeek<end-7){daysToDayOfWeek+=7}adjustedMoment=moment(mom).add("d",daysToDayOfWeek);return{week:Math.ceil(adjustedMoment.dayOfYear()/7),year:adjustedMoment.year()}}function dayOfYearFromWeeks(year,week,weekday,firstDayOfWeekOfYear,firstDayOfWeek){var d=makeUTCDate(year,0,1).getUTCDay(),daysToAdd,dayOfYear;weekday=weekday!=null?weekday:firstDayOfWeek;daysToAdd=firstDayOfWeek-d+(d>firstDayOfWeekOfYear?7:0)-(d<firstDayOfWeek?7:0);dayOfYear=7*(week-1)+(weekday-firstDayOfWeek)+daysToAdd+1;return{year:dayOfYear>0?year:year-1,dayOfYear:dayOfYear>0?dayOfYear:daysInYear(year-1)+dayOfYear}}function makeMoment(config){var input=config._i,format=config._f;if(input===null||format===undefined&&input===""){return moment.invalid({nullInput:true})}if(typeof input==="string"){config._i=input=getLangDefinition().preparse(input)}if(moment.isMoment(input)){config=cloneMoment(input);config._d=new Date(+input._d)}else if(format){if(isArray(format)){makeDateFromStringAndArray(config)}else{makeDateFromStringAndFormat(config)}}else{makeDateFromInput(config)}return new Moment(config)}moment=function(input,format,lang,strict){var c;if(typeof lang==="boolean"){strict=lang;lang=undefined}c={};c._isAMomentObject=true;c._i=input;c._f=format;c._l=lang;c._strict=strict;c._isUTC=false;c._pf=defaultParsingFlags();return makeMoment(c)};moment.suppressDeprecationWarnings=false;moment.createFromInputFallback=deprecate("moment construction falls back to js Date. This is "+"discouraged and will be removed in upcoming major "+"release. Please refer to "+"https://github.com/moment/moment/issues/1407 for more info.",function(config){config._d=new Date(config._i)});moment.utc=function(input,format,lang,strict){var c;if(typeof lang==="boolean"){strict=lang;lang=undefined}c={};c._isAMomentObject=true;c._useUTC=true;c._isUTC=true;c._l=lang;c._i=input;c._f=format;c._strict=strict;c._pf=defaultParsingFlags();return makeMoment(c).utc()};moment.unix=function(input){return moment(input*1e3)};moment.duration=function(input,key){var duration=input,match=null,sign,ret,parseIso;if(moment.isDuration(input)){duration={ms:input._milliseconds,d:input._days,M:input._months}}else if(typeof input==="number"){duration={};if(key){duration[key]=input}else{duration.milliseconds=input}}else if(!!(match=aspNetTimeSpanJsonRegex.exec(input))){sign=match[1]==="-"?-1:1;duration={y:0,d:toInt(match[DATE])*sign,h:toInt(match[HOUR])*sign,m:toInt(match[MINUTE])*sign,s:toInt(match[SECOND])*sign,ms:toInt(match[MILLISECOND])*sign}}else if(!!(match=isoDurationRegex.exec(input))){sign=match[1]==="-"?-1:1;parseIso=function(inp){var res=inp&&parseFloat(inp.replace(",","."));return(isNaN(res)?0:res)*sign};duration={y:parseIso(match[2]),M:parseIso(match[3]),d:parseIso(match[4]),h:parseIso(match[5]),m:parseIso(match[6]),s:parseIso(match[7]),w:parseIso(match[8])}}ret=new Duration(duration);if(moment.isDuration(input)&&input.hasOwnProperty("_lang")){ret._lang=input._lang}return ret};moment.version=VERSION;moment.defaultFormat=isoFormat;moment.momentProperties=momentProperties;moment.updateOffset=function(){};moment.lang=function(key,values){var r;if(!key){return moment.fn._lang._abbr}if(values){loadLang(normalizeLanguage(key),values)}else if(values===null){unloadLang(key);key="en"}else if(!languages[key]){getLangDefinition(key)}r=moment.duration.fn._lang=moment.fn._lang=getLangDefinition(key);return r._abbr};moment.langData=function(key){if(key&&key._lang&&key._lang._abbr){key=key._lang._abbr}return getLangDefinition(key)};moment.isMoment=function(obj){return obj instanceof Moment||obj!=null&&obj.hasOwnProperty("_isAMomentObject") | |
};moment.isDuration=function(obj){return obj instanceof Duration};for(i=lists.length-1;i>=0;--i){makeList(lists[i])}moment.normalizeUnits=function(units){return normalizeUnits(units)};moment.invalid=function(flags){var m=moment.utc(NaN);if(flags!=null){extend(m._pf,flags)}else{m._pf.userInvalidated=true}return m};moment.parseZone=function(){return moment.apply(null,arguments).parseZone()};moment.parseTwoDigitYear=function(input){return toInt(input)+(toInt(input)>68?1900:2e3)};extend(moment.fn=Moment.prototype,{clone:function(){return moment(this)},valueOf:function(){return+this._d+(this._offset||0)*6e4},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().lang("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var m=moment(this).utc();if(0<m.year()&&m.year()<=9999){return formatMoment(m,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}else{return formatMoment(m,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}},toArray:function(){var m=this;return[m.year(),m.month(),m.date(),m.hours(),m.minutes(),m.seconds(),m.milliseconds()]},isValid:function(){return isValid(this)},isDSTShifted:function(){if(this._a){return this.isValid()&&compareArrays(this._a,(this._isUTC?moment.utc(this._a):moment(this._a)).toArray())>0}return false},parsingFlags:function(){return extend({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(){return this.zone(0)},local:function(){this.zone(0);this._isUTC=false;return this},format:function(inputString){var output=formatMoment(this,inputString||moment.defaultFormat);return this.lang().postformat(output)},add:function(input,val){var dur;if(typeof input==="string"){dur=moment.duration(+val,input)}else{dur=moment.duration(input,val)}addOrSubtractDurationFromMoment(this,dur,1);return this},subtract:function(input,val){var dur;if(typeof input==="string"){dur=moment.duration(+val,input)}else{dur=moment.duration(input,val)}addOrSubtractDurationFromMoment(this,dur,-1);return this},diff:function(input,units,asFloat){var that=makeAs(input,this),zoneDiff=(this.zone()-that.zone())*6e4,diff,output;units=normalizeUnits(units);if(units==="year"||units==="month"){diff=(this.daysInMonth()+that.daysInMonth())*432e5;output=(this.year()-that.year())*12+(this.month()-that.month());output+=(this-moment(this).startOf("month")-(that-moment(that).startOf("month")))/diff;output-=(this.zone()-moment(this).startOf("month").zone()-(that.zone()-moment(that).startOf("month").zone()))*6e4/diff;if(units==="year"){output=output/12}}else{diff=this-that;output=units==="second"?diff/1e3:units==="minute"?diff/6e4:units==="hour"?diff/36e5:units==="day"?(diff-zoneDiff)/864e5:units==="week"?(diff-zoneDiff)/6048e5:diff}return asFloat?output:absRound(output)},from:function(time,withoutSuffix){return moment.duration(this.diff(time)).lang(this.lang()._abbr).humanize(!withoutSuffix)},fromNow:function(withoutSuffix){return this.from(moment(),withoutSuffix)},calendar:function(){var sod=makeAs(moment(),this).startOf("day"),diff=this.diff(sod,"days",true),format=diff<-6?"sameElse":diff<-1?"lastWeek":diff<0?"lastDay":diff<1?"sameDay":diff<2?"nextDay":diff<7?"nextWeek":"sameElse";return this.format(this.lang().calendar(format,this))},isLeapYear:function(){return isLeapYear(this.year())},isDST:function(){return this.zone()<this.clone().month(0).zone()||this.zone()<this.clone().month(5).zone()},day:function(input){var day=this._isUTC?this._d.getUTCDay():this._d.getDay();if(input!=null){input=parseWeekday(input,this.lang());return this.add({d:input-day})}else{return day}},month:makeAccessor("Month",true),startOf:function(units){units=normalizeUnits(units);switch(units){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}if(units==="week"){this.weekday(0)}else if(units==="isoWeek"){this.isoWeekday(1)}if(units==="quarter"){this.month(Math.floor(this.month()/3)*3)}return this},endOf:function(units){units=normalizeUnits(units);return this.startOf(units).add(units==="isoWeek"?"week":units,1).subtract("ms",1)},isAfter:function(input,units){units=typeof units!=="undefined"?units:"millisecond";return+this.clone().startOf(units)>+moment(input).startOf(units)},isBefore:function(input,units){units=typeof units!=="undefined"?units:"millisecond";return+this.clone().startOf(units)<+moment(input).startOf(units)},isSame:function(input,units){units=units||"ms";return+this.clone().startOf(units)===+makeAs(input,this).startOf(units)},min:function(other){other=moment.apply(null,arguments);return other<this?this:other},max:function(other){other=moment.apply(null,arguments);return other>this?this:other},zone:function(input,keepTime){var offset=this._offset||0;if(input!=null){if(typeof input==="string"){input=timezoneMinutesFromString(input)}if(Math.abs(input)<16){input=input*60}this._offset=input;this._isUTC=true;if(offset!==input){if(!keepTime||this._changeInProgress){addOrSubtractDurationFromMoment(this,moment.duration(offset-input,"m"),1,false)}else if(!this._changeInProgress){this._changeInProgress=true;moment.updateOffset(this,true);this._changeInProgress=null}}}else{return this._isUTC?offset:this._d.getTimezoneOffset()}return this},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){if(this._tzm){this.zone(this._tzm)}else if(typeof this._i==="string"){this.zone(this._i)}return this},hasAlignedHourOffset:function(input){if(!input){input=0}else{input=moment(input).zone()}return(this.zone()-input)%60===0},daysInMonth:function(){return daysInMonth(this.year(),this.month())},dayOfYear:function(input){var dayOfYear=round((moment(this).startOf("day")-moment(this).startOf("year"))/864e5)+1;return input==null?dayOfYear:this.add("d",input-dayOfYear)},quarter:function(input){return input==null?Math.ceil((this.month()+1)/3):this.month((input-1)*3+this.month()%3)},weekYear:function(input){var year=weekOfYear(this,this.lang()._week.dow,this.lang()._week.doy).year;return input==null?year:this.add("y",input-year)},isoWeekYear:function(input){var year=weekOfYear(this,1,4).year;return input==null?year:this.add("y",input-year)},week:function(input){var week=this.lang().week(this);return input==null?week:this.add("d",(input-week)*7)},isoWeek:function(input){var week=weekOfYear(this,1,4).week;return input==null?week:this.add("d",(input-week)*7)},weekday:function(input){var weekday=(this.day()+7-this.lang()._week.dow)%7;return input==null?weekday:this.add("d",input-weekday)},isoWeekday:function(input){return input==null?this.day()||7:this.day(this.day()%7?input:input-7)},isoWeeksInYear:function(){return weeksInYear(this.year(),1,4)},weeksInYear:function(){var weekInfo=this._lang._week;return weeksInYear(this.year(),weekInfo.dow,weekInfo.doy)},get:function(units){units=normalizeUnits(units);return this[units]()},set:function(units,value){units=normalizeUnits(units);if(typeof this[units]==="function"){this[units](value)}return this},lang:function(key){if(key===undefined){return this._lang}else{this._lang=getLangDefinition(key);return this}}});function rawMonthSetter(mom,value){var dayOfMonth;if(typeof value==="string"){value=mom.lang().monthsParse(value);if(typeof value!=="number"){return mom}}dayOfMonth=Math.min(mom.date(),daysInMonth(mom.year(),value));mom._d["set"+(mom._isUTC?"UTC":"")+"Month"](value,dayOfMonth);return mom}function rawGetter(mom,unit){return mom._d["get"+(mom._isUTC?"UTC":"")+unit]()}function rawSetter(mom,unit,value){if(unit==="Month"){return rawMonthSetter(mom,value)}else{return mom._d["set"+(mom._isUTC?"UTC":"")+unit](value)}}function makeAccessor(unit,keepTime){return function(value){if(value!=null){rawSetter(this,unit,value);moment.updateOffset(this,keepTime);return this}else{return rawGetter(this,unit)}}}moment.fn.millisecond=moment.fn.milliseconds=makeAccessor("Milliseconds",false);moment.fn.second=moment.fn.seconds=makeAccessor("Seconds",false);moment.fn.minute=moment.fn.minutes=makeAccessor("Minutes",false);moment.fn.hour=moment.fn.hours=makeAccessor("Hours",true);moment.fn.date=makeAccessor("Date",true);moment.fn.dates=deprecate("dates accessor is deprecated. Use date instead.",makeAccessor("Date",true));moment.fn.year=makeAccessor("FullYear",true);moment.fn.years=deprecate("years accessor is deprecated. Use year instead.",makeAccessor("FullYear",true));moment.fn.days=moment.fn.day;moment.fn.months=moment.fn.month;moment.fn.weeks=moment.fn.week;moment.fn.isoWeeks=moment.fn.isoWeek;moment.fn.quarters=moment.fn.quarter;moment.fn.toJSON=moment.fn.toISOString;extend(moment.duration.fn=Duration.prototype,{_bubble:function(){var milliseconds=this._milliseconds,days=this._days,months=this._months,data=this._data,seconds,minutes,hours,years;data.milliseconds=milliseconds%1e3;seconds=absRound(milliseconds/1e3);data.seconds=seconds%60;minutes=absRound(seconds/60);data.minutes=minutes%60;hours=absRound(minutes/60);data.hours=hours%24;days+=absRound(hours/24);data.days=days%30;months+=absRound(days/30);data.months=months%12;years=absRound(months/12);data.years=years},weeks:function(){return absRound(this.days()/7)},valueOf:function(){return this._milliseconds+this._days*864e5+this._months%12*2592e6+toInt(this._months/12)*31536e6},humanize:function(withSuffix){var difference=+this,output=relativeTime(difference,!withSuffix,this.lang());if(withSuffix){output=this.lang().pastFuture(difference,output)}return this.lang().postformat(output)},add:function(input,val){var dur=moment.duration(input,val);this._milliseconds+=dur._milliseconds;this._days+=dur._days;this._months+=dur._months;this._bubble();return this},subtract:function(input,val){var dur=moment.duration(input,val);this._milliseconds-=dur._milliseconds;this._days-=dur._days;this._months-=dur._months;this._bubble();return this},get:function(units){units=normalizeUnits(units);return this[units.toLowerCase()+"s"]()},as:function(units){units=normalizeUnits(units);return this["as"+units.charAt(0).toUpperCase()+units.slice(1)+"s"]()},lang:moment.fn.lang,toIsoString:function(){var years=Math.abs(this.years()),months=Math.abs(this.months()),days=Math.abs(this.days()),hours=Math.abs(this.hours()),minutes=Math.abs(this.minutes()),seconds=Math.abs(this.seconds()+this.milliseconds()/1e3);if(!this.asSeconds()){return"P0D"}return(this.asSeconds()<0?"-":"")+"P"+(years?years+"Y":"")+(months?months+"M":"")+(days?days+"D":"")+(hours||minutes||seconds?"T":"")+(hours?hours+"H":"")+(minutes?minutes+"M":"")+(seconds?seconds+"S":"")}});function makeDurationGetter(name){moment.duration.fn[name]=function(){return this._data[name]}}function makeDurationAsGetter(name,factor){moment.duration.fn["as"+name]=function(){return+this/factor}}for(i in unitMillisecondFactors){if(unitMillisecondFactors.hasOwnProperty(i)){makeDurationAsGetter(i,unitMillisecondFactors[i]);makeDurationGetter(i.toLowerCase())}}makeDurationAsGetter("Weeks",6048e5);moment.duration.fn.asMonths=function(){return(+this-this.years()*31536e6)/2592e6+this.years()*12};moment.lang("en",{ordinal:function(number){var b=number%10,output=toInt(number%100/10)===1?"th":b===1?"st":b===2?"nd":b===3?"rd":"th";return number+output}});function makeGlobal(shouldDeprecate){if(typeof ender!=="undefined"){return}oldGlobalMoment=globalScope.moment;if(shouldDeprecate){globalScope.moment=deprecate("Accessing Moment through the global scope is "+"deprecated, and will be removed in an upcoming "+"release.",moment)}else{globalScope.moment=moment}}if(hasModule){module.exports=moment}else if(typeof define==="function"&&define.amd){define("moment",function(require,exports,module){if(module.config&&module.config()&&module.config().noGlobal===true){globalScope.moment=oldGlobalMoment}return moment});makeGlobal(true)}else{makeGlobal()}}).call(this)}).call(this,typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}]},{},[]);require("console-log").show(true);var Financial=require("financial");var Money=require("accounting");var calcPayment=function(loanRate,loanYears,loanAmt){var monthlyPayment=Financial.PMT(loanRate/100/12,loanYears*12,loanAmt);monthlyPayment=Math.abs(monthlyPayment);return makeMoney(monthlyPayment)};var calcInterest=function(loanRate,loanYears,loanAmt,startPeriod,endPeriod,type){var totalInterest=Financial.CUMIPMT(loanRate/100/12,loanYears*12,loanAmt,startPeriod,endPeriod*12,type);totalInterest=Math.abs(totalInterest);return makeMoney(totalInterest)};var makeMoney=function(num){return Money.accounting.formatMoney(num)};console.log("You will pay "+calcPayment(5,30,2e5)+" per month");console.log("You will have paid "+calcInterest(5,30,2e5,1,30,0)+" in total interest"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "requirebin-sketch", | |
"version": "1.0.0", | |
"dependencies": { | |
"console-log": "1.0.0", | |
"accounting": "0.3.2", | |
"financial": "0.0.4" | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; } | |
body, html { height: 100%; width: 100%; }</style> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment