/* * AdWords Script that monitors campaign spends against budget thresholds * View tutorial here: https://www.linkedin.com/pulse/leveraging-slack-manage-adwords-campaign-budgets-derek-martin?published=t */ var SLACK_URL = 'YOUR_WEBHOOK_URL'; var COST_THRESHOLD = 0.50; // aka 90% of budget var TIME_RANGE = 'TODAY'; // Defaults to same-day spend but can be changed to other AdWords constants (i.e. 'YESTERDAY', 'LAST_7_DAYS', etc.) /** * sendSlackMessage() * Processes text messages to Slack Webhook URLs * @param {String} text * @param {String} [opt_channel] */ function sendSlackMessage(text, opt_channel) { var slackMessage = { text: text, icon_url: 'http://www.gstatic.com/images/icons/material/product/1x/adwords_64dp.png', username: 'AdWords Alerts', as_user: true, channel: opt_channel || '#general' }; var options = { method: 'POST', contentType: 'application/json', payload: JSON.stringify(slackMessage), muteHttpExceptions: true, // prevent HTTP exceptions from throwing fatal errors }; UrlFetchApp.fetch(SLACK_URL, options); } /** * auditCampaigns(costThreshold) * Iterate enabled AdWords campaigns and check if their daily budget has spent > costThreshold * @param [Number] costThreshold * @return [campaigns] */ function auditCampaigns(costThreshold) { var threshold = costThreshold || COST_THRESHOLD; var campaigns = [] var campIter = AdWordsApp.campaigns().withCondition("Status = ENABLED").get(); while (campIter.hasNext()) { var campaign = campIter.next(); var metrics = { budget: parseFloat(campaign.getBudget().getAmount()), threshold: parseFloat(campaign.getBudget().getAmount() * threshold), cost: parseFloat(campaign.getStatsFor(TIME_RANGE).getCost()) }; metrics.cost >= metrics.threshold ? campaigns.push({ name: campaign.getName(), id: campaign.getId(), spend: parseFloat(metrics.cost), budget: parseFloat(metrics.budget) }) : undefined; } return _.sortBy(campaigns, function(item) { item.spend }); } /* * monitorCampaigns(account) * Obtain all active campaigns that have exceeded budget threshold. * Send Slack alerts to specified webhook of the campaigns in question. * @param {account} AdWords Account that will be processed */ function monitorCampaigns(account) { var campaigns = auditCampaigns(); if (campaigns.length > 0) { sendSlackMessage('Budget Alert (' + moment().format("MM/DD/YYYY h:mm:ss a") + ')'); sendSlackMessage('The following campaigns have exceeded cost thresholds:'); _.each(campaigns, function(campaign) { sendSlackMessage(campaign.name + ' - ' + 'Spend: $' + campaign.spend + ' - (Budget: $' + campaign.budget + ')'); }); sendSlackMessage(' '); } } function main() { var accountIter = MccApp.accounts() .withIds([YOUR_CIDS]) // You can list up to 50 CIDs to monitor .get(); while(accountIter.hasNext()) { var account = accountIter.next(); MccApp.select(account); monitorCampaigns(account); } } /* UNDERSCORE LIBRARIES */ // Underscore.js 1.6.0 // http://underscorejs.org // (c) 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors // Underscore may be freely distributed under the MIT license. (function(){var n=this,t=n._,r={},e=Array.prototype,u=Object.prototype,i=Function.prototype,a=e.push,o=e.slice,c=e.concat,l=u.toString,f=u.hasOwnProperty,s=e.forEach,p=e.map,h=e.reduce,v=e.reduceRight,g=e.filter,d=e.every,m=e.some,y=e.indexOf,b=e.lastIndexOf,x=Array.isArray,w=Object.keys,_=i.bind,j=function(n){return n instanceof j?n:this instanceof j?void(this._wrapped=n):new j(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=j),exports._=j):n._=j,j.VERSION="1.6.0";var A=j.each=j.forEach=function(n,t,e){if(null==n)return n;if(s&&n.forEach===s)n.forEach(t,e);else if(n.length===+n.length){for(var u=0,i=n.length;i>u;u++)if(t.call(e,n[u],u,n)===r)return}else for(var a=j.keys(n),u=0,i=a.length;i>u;u++)if(t.call(e,n[a[u]],a[u],n)===r)return;return n};j.map=j.collect=function(n,t,r){var e=[];return null==n?e:p&&n.map===p?n.map(t,r):(A(n,function(n,u,i){e.push(t.call(r,n,u,i))}),e)};var O="Reduce of empty array with no initial value";j.reduce=j.foldl=j.inject=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),h&&n.reduce===h)return e&&(t=j.bind(t,e)),u?n.reduce(t,r):n.reduce(t);if(A(n,function(n,i,a){u?r=t.call(e,r,n,i,a):(r=n,u=!0)}),!u)throw new TypeError(O);return r},j.reduceRight=j.foldr=function(n,t,r,e){var u=arguments.length>2;if(null==n&&(n=[]),v&&n.reduceRight===v)return e&&(t=j.bind(t,e)),u?n.reduceRight(t,r):n.reduceRight(t);var i=n.length;if(i!==+i){var a=j.keys(n);i=a.length}if(A(n,function(o,c,l){c=a?a[--i]:--i,u?r=t.call(e,r,n[c],c,l):(r=n[c],u=!0)}),!u)throw new TypeError(O);return r},j.find=j.detect=function(n,t,r){var e;return k(n,function(n,u,i){return t.call(r,n,u,i)?(e=n,!0):void 0}),e},j.filter=j.select=function(n,t,r){var e=[];return null==n?e:g&&n.filter===g?n.filter(t,r):(A(n,function(n,u,i){t.call(r,n,u,i)&&e.push(n)}),e)},j.reject=function(n,t,r){return j.filter(n,function(n,e,u){return!t.call(r,n,e,u)},r)},j.every=j.all=function(n,t,e){t||(t=j.identity);var u=!0;return null==n?u:d&&n.every===d?n.every(t,e):(A(n,function(n,i,a){return(u=u&&t.call(e,n,i,a))?void 0:r}),!!u)};var k=j.some=j.any=function(n,t,e){t||(t=j.identity);var u=!1;return null==n?u:m&&n.some===m?n.some(t,e):(A(n,function(n,i,a){return u||(u=t.call(e,n,i,a))?r:void 0}),!!u)};j.contains=j.include=function(n,t){return null==n?!1:y&&n.indexOf===y?n.indexOf(t)!=-1:k(n,function(n){return n===t})},j.invoke=function(n,t){var r=o.call(arguments,2),e=j.isFunction(t);return j.map(n,function(n){return(e?t:n[t]).apply(n,r)})},j.pluck=function(n,t){return j.map(n,j.property(t))},j.where=function(n,t){return j.filter(n,j.matches(t))},j.findWhere=function(n,t){return j.find(n,j.matches(t))},j.max=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.max.apply(Math,n);var e=-1/0,u=-1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;o>u&&(e=n,u=o)}),e},j.min=function(n,t,r){if(!t&&j.isArray(n)&&n[0]===+n[0]&&n.length<65535)return Math.min.apply(Math,n);var e=1/0,u=1/0;return A(n,function(n,i,a){var o=t?t.call(r,n,i,a):n;u>o&&(e=n,u=o)}),e},j.shuffle=function(n){var t,r=0,e=[];return A(n,function(n){t=j.random(r++),e[r-1]=e[t],e[t]=n}),e},j.sample=function(n,t,r){return null==t||r?(n.length!==+n.length&&(n=j.values(n)),n[j.random(n.length-1)]):j.shuffle(n).slice(0,Math.max(0,t))};var E=function(n){return null==n?j.identity:j.isFunction(n)?n:j.property(n)};j.sortBy=function(n,t,r){return t=E(t),j.pluck(j.map(n,function(n,e,u){return{value:n,index:e,criteria:t.call(r,n,e,u)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=E(r),A(t,function(i,a){var o=r.call(e,i,a,t);n(u,o,i)}),u}};j.groupBy=F(function(n,t,r){j.has(n,t)?n[t].push(r):n[t]=[r]}),j.indexBy=F(function(n,t,r){n[t]=r}),j.countBy=F(function(n,t){j.has(n,t)?n[t]++:n[t]=1}),j.sortedIndex=function(n,t,r,e){r=E(r);for(var u=r.call(e,t),i=0,a=n.length;a>i;){var o=i+a>>>1;r.call(e,n[o])t?[]:o.call(n,0,t)},j.initial=function(n,t,r){return o.call(n,0,n.length-(null==t||r?1:t))},j.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:o.call(n,Math.max(n.length-t,0))},j.rest=j.tail=j.drop=function(n,t,r){return o.call(n,null==t||r?1:t)},j.compact=function(n){return j.filter(n,j.identity)};var M=function(n,t,r){return t&&j.every(n,j.isArray)?c.apply(r,n):(A(n,function(n){j.isArray(n)||j.isArguments(n)?t?a.apply(r,n):M(n,t,r):r.push(n)}),r)};j.flatten=function(n,t){return M(n,t,[])},j.without=function(n){return j.difference(n,o.call(arguments,1))},j.partition=function(n,t){var r=[],e=[];return A(n,function(n){(t(n)?r:e).push(n)}),[r,e]},j.uniq=j.unique=function(n,t,r,e){j.isFunction(t)&&(e=r,r=t,t=!1);var u=r?j.map(n,r,e):n,i=[],a=[];return A(u,function(r,e){(t?e&&a[a.length-1]===r:j.contains(a,r))||(a.push(r),i.push(n[e]))}),i},j.union=function(){return j.uniq(j.flatten(arguments,!0))},j.intersection=function(n){var t=o.call(arguments,1);return j.filter(j.uniq(n),function(n){return j.every(t,function(t){return j.contains(t,n)})})},j.difference=function(n){var t=c.apply(e,o.call(arguments,1));return j.filter(n,function(n){return!j.contains(t,n)})},j.zip=function(){for(var n=j.max(j.pluck(arguments,"length").concat(0)),t=new Array(n),r=0;n>r;r++)t[r]=j.pluck(arguments,""+r);return t},j.object=function(n,t){if(null==n)return{};for(var r={},e=0,u=n.length;u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},j.indexOf=function(n,t,r){if(null==n)return-1;var e=0,u=n.length;if(r){if("number"!=typeof r)return e=j.sortedIndex(n,t),n[e]===t?e:-1;e=0>r?Math.max(0,u+r):r}if(y&&n.indexOf===y)return n.indexOf(t,r);for(;u>e;e++)if(n[e]===t)return e;return-1},j.lastIndexOf=function(n,t,r){if(null==n)return-1;var e=null!=r;if(b&&n.lastIndexOf===b)return e?n.lastIndexOf(t,r):n.lastIndexOf(t);for(var u=e?r:n.length;u--;)if(n[u]===t)return u;return-1},j.range=function(n,t,r){arguments.length<=1&&(t=n||0,n=0),r=arguments[2]||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=0,i=new Array(e);e>u;)i[u++]=n,n+=r;return i};var R=function(){};j.bind=function(n,t){var r,e;if(_&&n.bind===_)return _.apply(n,o.call(arguments,1));if(!j.isFunction(n))throw new TypeError;return r=o.call(arguments,2),e=function(){if(!(this instanceof e))return n.apply(t,r.concat(o.call(arguments)));R.prototype=n.prototype;var u=new R;R.prototype=null;var i=n.apply(u,r.concat(o.call(arguments)));return Object(i)===i?i:u}},j.partial=function(n){var t=o.call(arguments,1);return function(){for(var r=0,e=t.slice(),u=0,i=e.length;i>u;u++)e[u]===j&&(e[u]=arguments[r++]);for(;r=f?(clearTimeout(a),a=null,o=l,i=n.apply(e,u),e=u=null):a||r.trailing===!1||(a=setTimeout(c,f)),i}},j.debounce=function(n,t,r){var e,u,i,a,o,c=function(){var l=j.now()-a;t>l?e=setTimeout(c,t-l):(e=null,r||(o=n.apply(i,u),i=u=null))};return function(){i=this,u=arguments,a=j.now();var l=r&&!e;return e||(e=setTimeout(c,t)),l&&(o=n.apply(i,u),i=u=null),o}},j.once=function(n){var t,r=!1;return function(){return r?t:(r=!0,t=n.apply(this,arguments),n=null,t)}},j.wrap=function(n,t){return j.partial(t,n)},j.compose=function(){var n=arguments;return function(){for(var t=arguments,r=n.length-1;r>=0;r--)t=[n[r].apply(this,t)];return t[0]}},j.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},j.keys=function(n){if(!j.isObject(n))return[];if(w)return w(n);var t=[];for(var r in n)j.has(n,r)&&t.push(r);return t},j.values=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},j.pairs=function(n){for(var t=j.keys(n),r=t.length,e=new Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},j.invert=function(n){for(var t={},r=j.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},j.functions=j.methods=function(n){var t=[];for(var r in n)j.isFunction(n[r])&&t.push(r);return t.sort()},j.extend=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]=t[r]}),n},j.pick=function(n){var t={},r=c.apply(e,o.call(arguments,1));return A(r,function(r){r in n&&(t[r]=n[r])}),t},j.omit=function(n){var t={},r=c.apply(e,o.call(arguments,1));for(var u in n)j.contains(r,u)||(t[u]=n[u]);return t},j.defaults=function(n){return A(o.call(arguments,1),function(t){if(t)for(var r in t)n[r]===void 0&&(n[r]=t[r])}),n},j.clone=function(n){return j.isObject(n)?j.isArray(n)?n.slice():j.extend({},n):n},j.tap=function(n,t){return t(n),n};var S=function(n,t,r,e){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof j&&(n=n._wrapped),t instanceof j&&(t=t._wrapped);var u=l.call(n);if(u!=l.call(t))return!1;switch(u){case"[object String]":return n==String(t);case"[object Number]":return n!=+n?t!=+t:0==n?1/n==1/t:n==+t;case"[object Date]":case"[object Boolean]":return+n==+t;case"[object RegExp]":return n.source==t.source&&n.global==t.global&&n.multiline==t.multiline&&n.ignoreCase==t.ignoreCase}if("object"!=typeof n||"object"!=typeof t)return!1;for(var i=r.length;i--;)if(r[i]==n)return e[i]==t;var a=n.constructor,o=t.constructor;if(a!==o&&!(j.isFunction(a)&&a instanceof a&&j.isFunction(o)&&o instanceof o)&&"constructor"in n&&"constructor"in t)return!1;r.push(n),e.push(t);var c=0,f=!0;if("[object Array]"==u){if(c=n.length,f=c==t.length)for(;c--&&(f=S(n[c],t[c],r,e)););}else{for(var s in n)if(j.has(n,s)&&(c++,!(f=j.has(t,s)&&S(n[s],t[s],r,e))))break;if(f){for(s in t)if(j.has(t,s)&&!c--)break;f=!c}}return r.pop(),e.pop(),f};j.isEqual=function(n,t){return S(n,t,[],[])},j.isEmpty=function(n){if(null==n)return!0;if(j.isArray(n)||j.isString(n))return 0===n.length;for(var t in n)if(j.has(n,t))return!1;return!0},j.isElement=function(n){return!(!n||1!==n.nodeType)},j.isArray=x||function(n){return"[object Array]"==l.call(n)},j.isObject=function(n){return n===Object(n)},A(["Arguments","Function","String","Number","Date","RegExp"],function(n){j["is"+n]=function(t){return l.call(t)=="[object "+n+"]"}}),j.isArguments(arguments)||(j.isArguments=function(n){return!(!n||!j.has(n,"callee"))}),"function"!=typeof/./&&(j.isFunction=function(n){return"function"==typeof n}),j.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},j.isNaN=function(n){return j.isNumber(n)&&n!=+n},j.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"==l.call(n)},j.isNull=function(n){return null===n},j.isUndefined=function(n){return n===void 0},j.has=function(n,t){return f.call(n,t)},j.noConflict=function(){return n._=t,this},j.identity=function(n){return n},j.constant=function(n){return function(){return n}},j.property=function(n){return function(t){return t[n]}},j.matches=function(n){return function(t){if(t===n)return!0;for(var r in n)if(n[r]!==t[r])return!1;return!0}},j.times=function(n,t,r){for(var e=Array(Math.max(0,n)),u=0;n>u;u++)e[u]=t.call(r,u);return e},j.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},j.now=Date.now||function(){return(new Date).getTime()};var T={escape:{"&":"&","<":"<",">":">",'"':""","'":"'"}};T.unescape=j.invert(T.escape);var I={escape:new RegExp("["+j.keys(T.escape).join("")+"]","g"),unescape:new RegExp("("+j.keys(T.unescape).join("|")+")","g")};j.each(["escape","unescape"],function(n){j[n]=function(t){return null==t?"":(""+t).replace(I[n],function(t){return T[n][t]})}}),j.result=function(n,t){if(null==n)return void 0;var r=n[t];return j.isFunction(r)?r.call(n):r},j.mixin=function(n){A(j.functions(n),function(t){var r=j[t]=n[t];j.prototype[t]=function(){var n=[this._wrapped];return a.apply(n,arguments),z.call(this,r.apply(j,n))}})};var N=0;j.uniqueId=function(n){var t=++N+"";return n?n+t:t},j.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var q=/(.)^/,B={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\t|\u2028|\u2029/g;j.template=function(n,t,r){var e;r=j.defaults({},r,j.templateSettings);var u=new RegExp([(r.escape||q).source,(r.interpolate||q).source,(r.evaluate||q).source].join("|")+"|$","g"),i=0,a="__p+='";n.replace(u,function(t,r,e,u,o){return a+=n.slice(i,o).replace(D,function(n){return"\\"+B[n]}),r&&(a+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'"),e&&(a+="'+\n((__t=("+e+"))==null?'':__t)+\n'"),u&&(a+="';\n"+u+"\n__p+='"),i=o+t.length,t}),a+="';\n",r.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{e=new Function(r.variable||"obj","_",a)}catch(o){throw o.source=a,o}if(t)return e(t,j);var c=function(n){return e.call(this,n,j)};return c.source="function("+(r.variable||"obj")+"){\n"+a+"}",c},j.chain=function(n){return j(n).chain()};var z=function(n){return this._chain?j(n).chain():n};j.mixin(j),A(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=e[n];j.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!=n&&"splice"!=n||0!==r.length||delete r[0],z.call(this,r)}}),A(["concat","join","slice"],function(n){var t=e[n];j.prototype[n]=function(){return z.call(this,t.apply(this._wrapped,arguments))}}),j.extend(j.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}}),"function"==typeof define&&define.amd&&define("underscore",[],function(){return j})}).call(this); //# sourceMappingURL=underscore-min.map !function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function b(){return a.apply(null,arguments)}function c(b){a=b}function d(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function e(a){return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function f(a){var b;for(b in a)return!1;return!0}function g(a){return"number"==typeof a||"[object Number]"===Object.prototype.toString.call(a)}function h(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function i(a,b){var d,c=[];for(d=0;d0)for(c in t)d=t[c],e=b[d],s(e)||(a[d]=e);return a}function w(a){u(this,a),this._d=new Date(null!=a._d?a._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),v===!1&&(v=!0,b.updateOffset(this),v=!1)}function x(a){return a instanceof w||null!=a&&null!=a._isAMomentObject}function y(a){return a<0?Math.ceil(a)||0:Math.floor(a)}function z(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=y(b)),c}function A(a,b,c){var g,d=Math.min(a.length,b.length),e=Math.abs(a.length-b.length),f=0;for(g=0;g0?"future":"past"];return F(c)?c(b):c.replace(/%s/i,b)}function Y(a,b){var c=a.toLowerCase();X[c]=X[c+"s"]=X[b]=a}function Z(a){return"string"==typeof a?X[a]||X[a.toLowerCase()]:void 0}function $(a){var c,d,b={};for(d in a)j(a,d)&&(c=Z(d),c&&(b[c]=a[d]));return b}function aa(a,b){_[a]=b}function ba(a){var b=[];for(var c in a)b.push({unit:c,priority:_[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function ca(a,c){return function(d){return null!=d?(ea(this,a,d),b.updateOffset(this,c),this):da(this,a)}}function da(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function ea(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)}function fa(a){return a=Z(a),F(this[a])?this[a]():this}function ga(a,b){if("object"==typeof a){a=$(a);for(var c=ba(a),d=0;d=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function ma(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(la[a]=e),b&&(la[b[0]]=function(){return ha(e.apply(this,arguments),b[1],b[2])}),c&&(la[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function na(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function oa(a){var c,d,b=a.match(ia);for(c=0,d=b.length;c=0&&ja.test(a);)a=a.replace(ja,d),ja.lastIndex=0,c-=1;return a}function Ja(a,b,c){Ia[a]=F(b)?b:function(a,d){return a&&c?c:b}}function Ka(a,b){return j(Ia,a)?Ia[a](b._strict,b._locale):new RegExp(La(a))}function La(a){return Ma(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function Ma(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function Oa(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),g(b)&&(d=function(a,c){c[b]=z(a)}),c=0;c=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function vb(a){var b=new Date(Date.UTC.apply(null,arguments));return a<100&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function wb(a,b,c){var d=7+b-c,e=(7+vb(a,0,d).getUTCDay()-b)%7;return-e+d-1}function xb(a,b,c,d,e){var i,j,f=(7+c-d)%7,g=wb(a,d,e),h=1+7*(b-1)+f+g;return h<=0?(i=a-1,j=qb(i)+h):h>qb(a)?(i=a+1,j=h-qb(a)):(i=a,j=h),{year:i,dayOfYear:j}}function yb(a,b,c){var f,g,d=wb(a.year(),b,c),e=Math.floor((a.dayOfYear()-d-1)/7)+1;return e<1?(g=a.year()-1,f=e+zb(g,b,c)):e>zb(a.year(),b,c)?(f=e-zb(a.year(),b,c),g=a.year()+1):(g=a.year(),f=e),{week:f,year:g}}function zb(a,b,c){var d=wb(a,b,c),e=wb(a+1,b,c);return(qb(a)-d+e)/7}function Ab(a){return yb(a,this._week.dow,this._week.doy).week}function Cb(){return this._week.dow}function Db(){return this._week.doy}function Eb(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Fb(a){var b=yb(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")}function Gb(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Hb(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Jb(a,b){return a?d(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:this._weekdays}function Lb(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Nb(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ob(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;d<7;++d)f=l([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=_a.call(this._weekdaysParse,g),e!==-1?e:null):"ddd"===b?(e=_a.call(this._shortWeekdaysParse,g),e!==-1?e:null):(e=_a.call(this._minWeekdaysParse,g),e!==-1?e:null):"dddd"===b?(e=_a.call(this._weekdaysParse,g),e!==-1?e:(e=_a.call(this._shortWeekdaysParse,g),e!==-1?e:(e=_a.call(this._minWeekdaysParse,g),e!==-1?e:null))):"ddd"===b?(e=_a.call(this._shortWeekdaysParse,g),e!==-1?e:(e=_a.call(this._weekdaysParse,g),e!==-1?e:(e=_a.call(this._minWeekdaysParse,g),e!==-1?e:null))):(e=_a.call(this._minWeekdaysParse,g),e!==-1?e:(e=_a.call(this._weekdaysParse,g),e!==-1?e:(e=_a.call(this._shortWeekdaysParse,g),e!==-1?e:null)))}function Pb(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ob.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;d<7;d++){if(e=l([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function Qb(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Gb(a,this.localeData()),this.add(a-b,"d")):b}function Rb(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function Sb(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Hb(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Ub(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Zb.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(j(this,"_weekdaysRegex")||(this._weekdaysRegex=Tb),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Wb(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Zb.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(j(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Vb),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Yb(a){return this._weekdaysParseExact?(j(this,"_weekdaysRegex")||Zb.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(j(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Xb),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Zb(){function a(a,b){return b.length-a.length}var f,g,h,i,j,b=[],c=[],d=[],e=[];for(f=0;f<7;f++)g=l([2e3,1]).day(f),h=this.weekdaysMin(g,""),i=this.weekdaysShort(g,""),j=this.weekdays(g,""),b.push(h),c.push(i),d.push(j),e.push(h),e.push(i),e.push(j);for(b.sort(a),c.sort(a),d.sort(a),e.sort(a),f=0;f<7;f++)c[f]=Ma(c[f]),d[f]=Ma(d[f]),e[f]=Ma(e[f]);this._weekdaysRegex=new RegExp("^("+e.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+c.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+b.join("|")+")","i")}function $b(){return this.hours()%12||12}function _b(){return this.hours()||24}function ac(a,b){ma(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function bc(a,b){return b._meridiemParse}function cc(a){return"p"===(a+"").toLowerCase().charAt(0)}function ec(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function kc(a){return a?a.toLowerCase().replace("_","-"):a}function lc(a){for(var c,d,e,f,b=0;b0;){if(e=mc(f.slice(0,c).join("-")))return e;if(d&&d.length>=c&&A(f,d,!0)>=c-1)break;c--}b++}return null}function mc(a){var b=null;if(!hc[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=jc._abbr,require("./locale/"+a),nc(b)}catch(a){}return hc[a]}function nc(a,b){var c;return a&&(c=s(b)?qc(a):oc(a,b),c&&(jc=c)),jc._abbr}function oc(a,b){if(null!==b){var c=gc;if(b.abbr=a,null!=hc[a])E("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=hc[a]._config;else if(null!=b.parentLocale){if(null==hc[b.parentLocale])return ic[b.parentLocale]||(ic[b.parentLocale]=[]),ic[b.parentLocale].push({name:a,config:b}),null;c=hc[b.parentLocale]._config}return hc[a]=new I(H(c,b)),ic[a]&&ic[a].forEach(function(a){oc(a.name,a.config)}),nc(a),hc[a]}return delete hc[a],null}function pc(a,b){if(null!=b){var c,d=gc;null!=hc[a]&&(d=hc[a]._config),b=H(d,b),c=new I(b),c.parentLocale=hc[a],hc[a]=c,nc(a)}else null!=hc[a]&&(null!=hc[a].parentLocale?hc[a]=hc[a].parentLocale:null!=hc[a]&&delete hc[a]);return hc[a]}function qc(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return jc;if(!d(a)){if(b=mc(a))return b;a=[a]}return lc(a)}function rc(){return K(hc)}function sc(a){var b,c=a._a;return c&&n(a).overflow===-2&&(b=c[Sa]<0||c[Sa]>11?Sa:c[Ta]<1||c[Ta]>ab(c[Ra],c[Sa])?Ta:c[Ua]<0||c[Ua]>24||24===c[Ua]&&(0!==c[Va]||0!==c[Wa]||0!==c[Xa])?Ua:c[Va]<0||c[Va]>59?Va:c[Wa]<0||c[Wa]>59?Wa:c[Xa]<0||c[Xa]>999?Xa:-1,n(a)._overflowDayOfYear&&(bTa)&&(b=Ta),n(a)._overflowWeeks&&b===-1&&(b=Ya),n(a)._overflowWeekday&&b===-1&&(b=Za),n(a).overflow=b),a}function zc(a){var b,c,f,g,h,i,d=a._i,e=tc.exec(d)||uc.exec(d);if(e){for(n(a).iso=!0,b=0,c=wc.length;bqb(f)&&(n(a)._overflowDayOfYear=!0),c=vb(f,0,a._dayOfYear),a._a[Sa]=c.getUTCMonth(),a._a[Ta]=c.getUTCDate()),b=0;b<3&&null==a._a[b];++b)a._a[b]=d[b]=e[b];for(;b<7;b++)a._a[b]=d[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[Ua]&&0===a._a[Va]&&0===a._a[Wa]&&0===a._a[Xa]&&(a._nextDay=!0,a._a[Ua]=0),a._d=(a._useUTC?vb:ub).apply(null,d),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[Ua]=24)}}function Ec(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=Bc(b.GG,a._a[Ra],yb(Nc(),1,4).year),d=Bc(b.W,1),e=Bc(b.E,1),(e<1||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=yb(Nc(),f,g);c=Bc(b.gg,a._a[Ra],j.year),d=Bc(b.w,j.week),null!=b.d?(e=b.d,(e<0||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}d<1||d>zb(c,f,g)?n(a)._overflowWeeks=!0:null!=i?n(a)._overflowWeekday=!0:(h=xb(c,d,e,f,g),a._a[Ra]=h.year,a._dayOfYear=h.dayOfYear)}function Fc(a){if(a._f===b.ISO_8601)return void zc(a);a._a=[],n(a).empty=!0;var d,e,f,g,h,c=""+a._i,i=c.length,j=0;for(f=qa(a._f,a._locale).match(ia)||[],d=0;d0&&n(a).unusedInput.push(h),c=c.slice(c.indexOf(e)+e.length),j+=e.length),la[g]?(e?n(a).empty=!1:n(a).unusedTokens.push(g),Qa(g,e,a)):a._strict&&!e&&n(a).unusedTokens.push(g);n(a).charsLeftOver=i-j,c.length>0&&n(a).unusedInput.push(c),a._a[Ua]<=12&&n(a).bigHour===!0&&a._a[Ua]>0&&(n(a).bigHour=void 0),n(a).parsedDateParts=a._a.slice(0),n(a).meridiem=a._meridiem,a._a[Ua]=Gc(a._locale,a._a[Ua],a._meridiem),Dc(a),sc(a)}function Gc(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&b<12&&(b+=12),d||12!==b||(b=0),b):b}function Hc(a){var b,c,d,e,f;if(0===a._f.length)return n(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;ethis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function hd(){if(!s(this._isDSTShifted))return this._isDSTShifted;var a={};if(u(a,this),a=Kc(a),a._a){var b=a._isUTC?l(a._a):Nc(a._a);this._isDSTShifted=this.isValid()&&A(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function id(){return!!this.isValid()&&!this._isUTC}function jd(){return!!this.isValid()&&this._isUTC}function kd(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function nd(a,b){var e,f,h,c=a,d=null;return Vc(a)?c={ms:a._milliseconds,d:a._days,M:a._months}:g(a)?(c={},b?c[b]=a:c.milliseconds=a):(d=ld.exec(a))?(e="-"===d[1]?-1:1,c={y:0,d:z(d[Ta])*e,h:z(d[Ua])*e,m:z(d[Va])*e,s:z(d[Wa])*e,ms:z(Wc(1e3*d[Xa]))*e}):(d=md.exec(a))?(e="-"===d[1]?-1:1,c={y:od(d[2],e),M:od(d[3],e),w:od(d[4],e),d:od(d[5],e),h:od(d[6],e),m:od(d[7],e),s:od(d[8],e)}):null==c?c={}:"object"==typeof c&&("from"in c||"to"in c)&&(h=qd(Nc(c.from),Nc(c.to)),c={},c.ms=h.milliseconds,c.M=h.months),f=new Uc(c),Vc(a)&&j(a,"_locale")&&(f._locale=a._locale),f}function od(a,b){var c=a&&parseFloat(a.replace(",","."));return(isNaN(c)?0:c)*b}function pd(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function qd(a,b){var c;return a.isValid()&&b.isValid()?(b=$c(b,a),a.isBefore(b)?c=pd(a,b):(c=pd(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function rd(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(E(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=nd(c,d),sd(this,e,a),this}}function sd(a,c,d,e){var f=c._milliseconds,g=Wc(c._days),h=Wc(c._months);a.isValid()&&(e=null==e||e,f&&a._d.setTime(a._d.valueOf()+f*d),g&&ea(a,"Date",da(a,"Date")+g*d),h&&ib(a,da(a,"Month")+h*d),e&&b.updateOffset(a,g||h))}function vd(a,b){var c=a.diff(b,"days",!0);return c<-6?"sameElse":c<-1?"lastWeek":c<0?"lastDay":c<1?"sameDay":c<2?"nextDay":c<7?"nextWeek":"sameElse"}function wd(a,c){var d=a||Nc(),e=$c(d,this).startOf("day"),f=b.calendarFormat(this,e)||"sameElse",g=c&&(F(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,Nc(d)))}function xd(){return new w(this)}function yd(a,b){var c=x(a)?a:Nc(a);return!(!this.isValid()||!c.isValid())&&(b=Z(s(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()f&&(b=f),he.call(this,a,b,c,d,e))}function he(a,b,c,d,e){var f=xb(a,b,c,d,e),g=vb(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function ie(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function ke(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function oe(a,b){b[Xa]=z(1e3*("0."+a))}function qe(){return this._isUTC?"UTC":""}function re(){return this._isUTC?"Coordinated Universal Time":""}function te(a){return Nc(1e3*a)}function ue(){return Nc.apply(null,arguments).parseZone()}function ve(a){return a}function xe(a,b,c,d){var e=qc(),f=l().set(d,b);return e[c](f,a)}function ye(a,b,c){if(g(a)&&(b=a,a=void 0),a=a||"",null!=b)return xe(a,b,c,"month");var d,e=[];for(d=0;d<12;d++)e[d]=xe(a,d,c,"month"); return e}function ze(a,b,c,d){"boolean"==typeof a?(g(b)&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,g(b)&&(c=b,b=void 0),b=b||"");var e=qc(),f=a?e._week.dow:0;if(null!=c)return xe(b,(c+f)%7,d,"day");var h,i=[];for(h=0;h<7;h++)i[h]=xe(b,(h+f)%7,d,"day");return i}function Ae(a,b){return ye(a,b,"months")}function Be(a,b){return ye(a,b,"monthsShort")}function Ce(a,b,c){return ze(a,b,c,"weekdays")}function De(a,b,c){return ze(a,b,c,"weekdaysShort")}function Ee(a,b,c){return ze(a,b,c,"weekdaysMin")}function Ge(){var a=this._data;return this._milliseconds=Fe(this._milliseconds),this._days=Fe(this._days),this._months=Fe(this._months),a.milliseconds=Fe(a.milliseconds),a.seconds=Fe(a.seconds),a.minutes=Fe(a.minutes),a.hours=Fe(a.hours),a.months=Fe(a.months),a.years=Fe(a.years),this}function He(a,b,c,d){var e=nd(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function Ie(a,b){return He(this,a,b,1)}function Je(a,b){return He(this,a,b,-1)}function Ke(a){return a<0?Math.floor(a):Math.ceil(a)}function Le(){var e,f,g,h,i,a=this._milliseconds,b=this._days,c=this._months,d=this._data;return a>=0&&b>=0&&c>=0||a<=0&&b<=0&&c<=0||(a+=864e5*Ke(Ne(c)+b),b=0,c=0),d.milliseconds=a%1e3,e=y(a/1e3),d.seconds=e%60,f=y(e/60),d.minutes=f%60,g=y(f/60),d.hours=g%24,b+=y(g/24),i=y(Me(b)),c+=i,b-=Ke(Ne(i)),h=y(c/12),c%=12,d.days=b,d.months=c,d.years=h,this}function Me(a){return 4800*a/146097}function Ne(a){return 146097*a/4800}function Oe(a){var b,c,d=this._milliseconds;if(a=Z(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+Me(b),"month"===a?c:c/12;switch(b=this._days+Math.round(Ne(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3;case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}}function Pe(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*z(this._months/12)}function Qe(a){return function(){return this.as(a)}}function Ze(a){return a=Z(a),this[a+"s"]()}function $e(a){return function(){return this._data[a]}}function gf(){return y(this.days()/7)}function kf(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function lf(a,b,c){var d=nd(a).abs(),e=hf(d.as("s")),f=hf(d.as("m")),g=hf(d.as("h")),h=hf(d.as("d")),i=hf(d.as("M")),j=hf(d.as("y")),k=e0,k[4]=c,kf.apply(null,k)}function mf(a){return void 0===a?hf:"function"==typeof a&&(hf=a,!0)}function nf(a,b){return void 0!==jf[a]&&(void 0===b?jf[a]:(jf[a]=b,!0))}function of(a){var b=this.localeData(),c=lf(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function qf(){var d,e,f,a=pf(this._milliseconds)/1e3,b=pf(this._days),c=pf(this._months);d=y(a/60),e=y(d/60),a%=60,d%=60,f=y(c/12),c%=12;var g=f,h=c,i=b,j=e,k=d,l=a,m=this.asSeconds();return m?(m<0?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var a,o;o=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;d68?1900:2e3)};var sb=ca("FullYear",!0);ma("w",["ww",2],"wo","week"),ma("W",["WW",2],"Wo","isoWeek"),Y("week","w"),Y("isoWeek","W"),aa("week",5),aa("isoWeek",5),Ja("w",wa),Ja("ww",wa,sa),Ja("W",wa),Ja("WW",wa,sa),Pa(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=z(a)});var Bb={dow:0,doy:6};ma("d",0,"do","day"),ma("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),ma("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),ma("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),ma("e",0,0,"weekday"),ma("E",0,0,"isoWeekday"),Y("day","d"),Y("weekday","e"),Y("isoWeekday","E"),aa("day",11),aa("weekday",11),aa("isoWeekday",11),Ja("d",wa),Ja("e",wa),Ja("E",wa),Ja("dd",function(a,b){return b.weekdaysMinRegex(a)}),Ja("ddd",function(a,b){return b.weekdaysShortRegex(a)}),Ja("dddd",function(a,b){return b.weekdaysRegex(a)}),Pa(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:n(c).invalidWeekday=a}),Pa(["d","e","E"],function(a,b,c,d){b[d]=z(a)});var Ib="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Kb="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Mb="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Tb=Ha,Vb=Ha,Xb=Ha;ma("H",["HH",2],0,"hour"),ma("h",["hh",2],0,$b),ma("k",["kk",2],0,_b),ma("hmm",0,0,function(){return""+$b.apply(this)+ha(this.minutes(),2)}),ma("hmmss",0,0,function(){return""+$b.apply(this)+ha(this.minutes(),2)+ha(this.seconds(),2)}),ma("Hmm",0,0,function(){return""+this.hours()+ha(this.minutes(),2)}),ma("Hmmss",0,0,function(){return""+this.hours()+ha(this.minutes(),2)+ha(this.seconds(),2)}),ac("a",!0),ac("A",!1),Y("hour","h"),aa("hour",13),Ja("a",bc),Ja("A",bc),Ja("H",wa),Ja("h",wa),Ja("HH",wa,sa),Ja("hh",wa,sa),Ja("hmm",xa),Ja("hmmss",ya),Ja("Hmm",xa),Ja("Hmmss",ya),Oa(["H","HH"],Ua),Oa(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),Oa(["h","hh"],function(a,b,c){b[Ua]=z(a),n(c).bigHour=!0}),Oa("hmm",function(a,b,c){var d=a.length-2;b[Ua]=z(a.substr(0,d)),b[Va]=z(a.substr(d)),n(c).bigHour=!0}),Oa("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Ua]=z(a.substr(0,d)),b[Va]=z(a.substr(d,2)),b[Wa]=z(a.substr(e)),n(c).bigHour=!0}),Oa("Hmm",function(a,b,c){var d=a.length-2;b[Ua]=z(a.substr(0,d)),b[Va]=z(a.substr(d))}),Oa("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[Ua]=z(a.substr(0,d)),b[Va]=z(a.substr(d,2)),b[Wa]=z(a.substr(e))});var jc,dc=/[ap]\.?m?\.?/i,fc=ca("Hours",!0),gc={calendar:L,longDateFormat:N,invalidDate:P,ordinal:R,ordinalParse:S,relativeTime:U,months:cb,monthsShort:eb,week:Bb,weekdays:Ib,weekdaysMin:Mb,weekdaysShort:Kb,meridiemParse:dc},hc={},ic={},tc=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,uc=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,vc=/Z|[+-]\d\d(?::?\d\d)?/,wc=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],xc=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],yc=/^\/?Date\((\-?\d+)/i;b.createFromInputFallback=C("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}),b.ISO_8601=function(){};var Oc=C("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=Nc.apply(null,arguments);return this.isValid()&&a.isValid()?athis?this:a:r()}),Tc=function(){return Date.now?Date.now():+new Date};Xc("Z",":"),Xc("ZZ",""),Ja("Z",Fa),Ja("ZZ",Fa),Oa(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=Zc(Fa,a)});var Yc=/([\+\-]|\d\d)/gi;b.updateOffset=function(){};var ld=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,md=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;nd.fn=Uc.prototype;var td=rd(1,"add"),ud=rd(-1,"subtract");b.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",b.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Pd=C("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)});ma(0,["gg",2],0,function(){return this.weekYear()%100}),ma(0,["GG",2],0,function(){return this.isoWeekYear()%100}),be("gggg","weekYear"),be("ggggg","weekYear"),be("GGGG","isoWeekYear"),be("GGGGG","isoWeekYear"),Y("weekYear","gg"),Y("isoWeekYear","GG"),aa("weekYear",1),aa("isoWeekYear",1),Ja("G",Da),Ja("g",Da),Ja("GG",wa,sa),Ja("gg",wa,sa),Ja("GGGG",Aa,ua),Ja("gggg",Aa,ua),Ja("GGGGG",Ba,va),Ja("ggggg",Ba,va),Pa(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=z(a)}),Pa(["gg","GG"],function(a,c,d,e){c[e]=b.parseTwoDigitYear(a)}),ma("Q",0,"Qo","quarter"),Y("quarter","Q"),aa("quarter",7),Ja("Q",ra),Oa("Q",function(a,b){b[Sa]=3*(z(a)-1)}),ma("D",["DD",2],"Do","date"),Y("date","D"),aa("date",9),Ja("D",wa),Ja("DD",wa,sa),Ja("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),Oa(["D","DD"],Ta),Oa("Do",function(a,b){b[Ta]=z(a.match(wa)[0],10)});var je=ca("Date",!0);ma("DDD",["DDDD",3],"DDDo","dayOfYear"),Y("dayOfYear","DDD"),aa("dayOfYear",4),Ja("DDD",za),Ja("DDDD",ta),Oa(["DDD","DDDD"],function(a,b,c){c._dayOfYear=z(a)}),ma("m",["mm",2],0,"minute"),Y("minute","m"),aa("minute",14),Ja("m",wa),Ja("mm",wa,sa),Oa(["m","mm"],Va);var le=ca("Minutes",!1);ma("s",["ss",2],0,"second"),Y("second","s"),aa("second",15),Ja("s",wa),Ja("ss",wa,sa),Oa(["s","ss"],Wa);var me=ca("Seconds",!1);ma("S",0,0,function(){return~~(this.millisecond()/100)}),ma(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),ma(0,["SSS",3],0,"millisecond"),ma(0,["SSSS",4],0,function(){return 10*this.millisecond()}),ma(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),ma(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),ma(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),ma(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),ma(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),Y("millisecond","ms"),aa("millisecond",16),Ja("S",za,ra),Ja("SS",za,sa),Ja("SSS",za,ta);var ne;for(ne="SSSS";ne.length<=9;ne+="S")Ja(ne,Ca);for(ne="S";ne.length<=9;ne+="S")Oa(ne,oe);var pe=ca("Milliseconds",!1);ma("z",0,0,"zoneAbbr"),ma("zz",0,0,"zoneName");var se=w.prototype;se.add=td,se.calendar=wd,se.clone=xd,se.diff=Ed,se.endOf=Sd,se.format=Jd,se.from=Kd,se.fromNow=Ld,se.to=Md,se.toNow=Nd,se.get=fa,se.invalidAt=_d,se.isAfter=yd,se.isBefore=zd,se.isBetween=Ad,se.isSame=Bd,se.isSameOrAfter=Cd,se.isSameOrBefore=Dd,se.isValid=Zd,se.lang=Pd,se.locale=Od,se.localeData=Qd,se.max=Pc,se.min=Oc,se.parsingFlags=$d,se.set=ga,se.startOf=Rd,se.subtract=ud,se.toArray=Wd,se.toObject=Xd,se.toDate=Vd,se.toISOString=Hd,se.inspect=Id,se.toJSON=Yd,se.toString=Gd,se.unix=Ud,se.valueOf=Td,se.creationData=ae,se.year=sb,se.isLeapYear=tb,se.weekYear=ce,se.isoWeekYear=de,se.quarter=se.quarters=ie,se.month=jb,se.daysInMonth=kb,se.week=se.weeks=Eb,se.isoWeek=se.isoWeeks=Fb,se.weeksInYear=fe,se.isoWeeksInYear=ee,se.date=je,se.day=se.days=Qb,se.weekday=Rb,se.isoWeekday=Sb,se.dayOfYear=ke,se.hour=se.hours=fc,se.minute=se.minutes=le,se.second=se.seconds=me,se.millisecond=se.milliseconds=pe,se.utcOffset=ad,se.utc=cd,se.local=dd,se.parseZone=ed,se.hasAlignedHourOffset=fd,se.isDST=gd,se.isLocal=id,se.isUtcOffset=jd,se.isUtc=kd,se.isUTC=kd,se.zoneAbbr=qe,se.zoneName=re,se.dates=C("dates accessor is deprecated. Use date instead.",je),se.months=C("months accessor is deprecated. Use month instead",jb),se.years=C("years accessor is deprecated. Use year instead",sb),se.zone=C("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",bd),se.isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",hd);var we=I.prototype;we.calendar=M,we.longDateFormat=O,we.invalidDate=Q,we.ordinal=T,we.preparse=ve,we.postformat=ve,we.relativeTime=V,we.pastFuture=W,we.set=G,we.months=db,we.monthsShort=fb,we.monthsParse=hb,we.monthsRegex=ob,we.monthsShortRegex=mb,we.week=Ab,we.firstDayOfYear=Db,we.firstDayOfWeek=Cb,we.weekdays=Jb,we.weekdaysMin=Nb,we.weekdaysShort=Lb,we.weekdaysParse=Pb,we.weekdaysRegex=Ub,we.weekdaysShortRegex=Wb,we.weekdaysMinRegex=Yb,we.isPM=cc,we.meridiem=ec,nc("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===z(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}),b.lang=C("moment.lang is deprecated. Use moment.locale instead.",nc),b.langData=C("moment.langData is deprecated. Use moment.localeData instead.",qc);var Fe=Math.abs,Re=Qe("ms"),Se=Qe("s"),Te=Qe("m"),Ue=Qe("h"),Ve=Qe("d"),We=Qe("w"),Xe=Qe("M"),Ye=Qe("y"),_e=$e("milliseconds"),af=$e("seconds"),bf=$e("minutes"),cf=$e("hours"),df=$e("days"),ef=$e("months"),ff=$e("years"),hf=Math.round,jf={s:45,m:45,h:22,d:26,M:11},pf=Math.abs,rf=Uc.prototype;return rf.abs=Ge,rf.add=Ie,rf.subtract=Je,rf.as=Oe,rf.asMilliseconds=Re,rf.asSeconds=Se,rf.asMinutes=Te,rf.asHours=Ue,rf.asDays=Ve,rf.asWeeks=We,rf.asMonths=Xe,rf.asYears=Ye,rf.valueOf=Pe,rf._bubble=Le,rf.get=Ze,rf.milliseconds=_e,rf.seconds=af,rf.minutes=bf,rf.hours=cf,rf.days=df,rf.weeks=gf,rf.months=ef,rf.years=ff,rf.humanize=of,rf.toISOString=qf,rf.toString=qf,rf.toJSON=qf,rf.locale=Od,rf.localeData=Qd,rf.toIsoString=C("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",qf),rf.lang=Pd,ma("X",0,0,"unix"),ma("x",0,0,"valueOf"),Ja("x",Da),Ja("X",Ga),Oa("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),Oa("x",function(a,b,c){c._d=new Date(z(a))}),b.version="2.17.1",c(Nc),b.fn=se,b.min=Rc,b.max=Sc,b.now=Tc,b.utc=l,b.unix=te,b.months=Ae,b.isDate=h,b.locale=nc,b.invalid=r,b.duration=nd,b.isMoment=x,b.weekdays=Ce,b.parseZone=ue,b.localeData=qc,b.isDuration=Vc,b.monthsShort=Be,b.weekdaysMin=Ee,b.defineLocale=oc,b.updateLocale=pc,b.locales=rc,b.weekdaysShort=De,b.normalizeUnits=Z,b.relativeTimeRounding=mf,b.relativeTimeThreshold=nf,b.calendarFormat=vd,b.prototype=se,b});